Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wCZgM-0027fZ-0j for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Apr 2026 09:03:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wCZfL-00AtJx-12 for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Apr 2026 09:02:40 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wCZfL-00AtJo-06 for pgsql-hackers@lists.postgresql.org; Tue, 14 Apr 2026 09:02:39 +0000 Received: from meesny.iki.fi ([2001:67c:2b0:1c1::201]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wCZfJ-00000000zjr-2V73 for pgsql-hackers@postgresql.org; Tue, 14 Apr 2026 09:02:39 +0000 Received: from [10.0.2.15] (unknown [130.41.208.1]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by meesny.iki.fi (Postfix) with ESMTPSA id 4fvyw538gCzyPs; Tue, 14 Apr 2026 12:02:29 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1776157350; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sgsNVkrHZrXpLwiRDNW8YJBMx+adCGm0xUtZGq8K1oQ=; b=HPk1CVH8SKxDE1b8sAfzTK9x4QG84kVYxQFUBX9Zg4LFd3FlQK4/85Z0yhiuLi/w5gSF57 k839dc0lx2qJkahhzuWabkLJRB+lM2v9J2QlSP7+MKOSEKTgCRRG7BBgYdabyQ1QOfL54N spP1hq/UCVsI85SonCsi6KUGdNG/CFw= ARC-Seal: i=1; a=rsa-sha256; d=iki.fi; s=meesny; cv=none; t=1776157350; b=ge9G+rrxir9iARZtgIIlhGkR0vUxTS7jc7lC3PBaWzUqmWa84sOZ2onzvVEXnSCmQCTssV 6zsShpQuyVHZKpvoK6Kkb8SMLfget2KV/FmSLpMRd//l2RalbgBGrRFd8HwVYDM1Ac1Py/ e04tPNth7UzKn5Lurv/e9VLrkS77Igw= ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1776157350; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sgsNVkrHZrXpLwiRDNW8YJBMx+adCGm0xUtZGq8K1oQ=; b=gKA6wVFIoUYz6hcAZV0b60ChFxVPZ5u4TVvvPkuveeo3AL2UmA4sS3O9hYb6+se3uindjn NY/kdLNMhUHpVt5njd6714TWiATnrWjNxN/krplG5gAAbgHSYdvbNzFwLBphBi/Acc5NO9 bSEW4KkA2r7pajdbGi9MWmqg2fxVPN8= Message-ID: <9d79f4b9-1a1c-4177-bdfa-3df9a5171db9@iki.fi> Date: Tue, 14 Apr 2026 12:02:28 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Compress prune/freeze records with Delta Frame of Reference algorithm To: Evgeny Voropaev , Andres Freund , PostgreSQL Hackers , Andrey Borodin References: Content-Language: en-US From: Heikki Linnakangas In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 24/03/2026 16:28, Evgeny Voropaev wrote: > Also I hope, independently of its usage in prune/freeze records, the > DFoR itself might be used for compression sequences in other places of PG. Yeah, that would make this huge amount of new code much more palatable. I had a similar thought when I added src/backend/lib/integerset.c, I planned to also use it for holding the dead TID list in vacuum for starters, and possibly for more things in the future. That plan was foiled because we got parallel VACUUM instead, which moved the TID list to shared memory, and I didn't account for that in integerset.c. So now integerset.c is only used for GiST vacuum, which is a pretty narrow use case. Can this DFoR code replace integerset.c easily? Can we use it for the vacuum dead TID list? For GIN posting lists? Where else? - Heikki