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.94.2) (envelope-from ) id 1tmyfN-000lcF-2q for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Feb 2025 17:24:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tmyfM-005f3P-0I for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Feb 2025 17:24:20 +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.94.2) (envelope-from ) id 1tmyfL-005f1G-MA for pgsql-hackers@lists.postgresql.org; Tue, 25 Feb 2025 17:24:19 +0000 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tmyfJ-00034L-06 for pgsql-hackers@lists.postgresql.org; Tue, 25 Feb 2025 17:24:19 +0000 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-38f29a1a93bso4718074f8f.1 for ; Tue, 25 Feb 2025 09:24:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740504256; x=1741109056; darn=lists.postgresql.org; h=to:content-language:subject:from:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=JipSOp0kzZRR2T210FifrD6mAq54QWs1PzO/mo6krXE=; b=ODu9dSD6MliMN6KfYmFvc7QRYc/uvkvozWvt7fL3VjZDvwSz/4l3bQaMqdDI6Q2i6x pQW2jPC4nZSgE6YyGeDuQ/VUs7TTBVQRhFPMW8Rms4g2Bh4mvqJtizhhRb2VLAShneCA 1POkaxkk5YYTQk0/aCp1Hcgcy3FFtl0Mja6+4vS3s9hyFOvV+h6t7TsjRvQcfR33tdrz nmGWJyP1ELYgasWs9gwsL0EA6GUiUHongPebIV8rx9SF1JFCl3VsDmy5Uus3JuIGF+KV ArbRouAeuJQVcqiPdjrt3w90uJvXU+8MH9WT08TOQznZOdmMzBMuj//NNjE97m94AQAK FE5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740504256; x=1741109056; h=to:content-language:subject:from:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=JipSOp0kzZRR2T210FifrD6mAq54QWs1PzO/mo6krXE=; b=mBZUWiBr1SR9w1dLS2d/2RXmaxe85mJ67U/aed4nrFWItfCGalb7pP8UF8fOY5K3N8 u48UJcYnGrElN64+NNLvKGRMcSWbvi37fswIBWPWjvnk+DHhb8C/SHX7P2hFjWLMEKF0 IxsmiHX74rvFfr+tU5e9nSVrxTlB3RxnWRry/JMk66+SmQ5APKRp9w1D8BBhkMAEVRPQ 6vpq6d24WGSDGQG7HRRq2nsowZd1igm/mjvQ16UWzSYy0oJ48Jh7IYb379GLt2iSD0KL 8A2Sxk4SkxhoJyohf4AbrLNbnZMP6oRkMmw8FRCH5PqqHtk9UrMQgDGVX+E0Glz7LStZ WXUA== X-Gm-Message-State: AOJu0YxYgLCmET0s0SJ+VaHxBNuzwOth/aISuvoTw0UtExr99KWFRzSf TEhB+7LO+lZkGm1i5Zdr3zYAz4zO6ryCoJuyLKtZc3AyWKXhkhf+qWq8IzXn X-Gm-Gg: ASbGncvKgQPc37SLtTuy1/klUU5qoSQMLBBOmbc1fBzRGld8nP3WCwE8n1l/JQE/Zfu yT4esmvBaHb1HAPDJpaGKFWF02+kVEfhhrSU1AskY8U5HOkrw0MsF6LH2ovukcwD7swNt2RNoah B419ew3bokKojgkJZA+pmRtd77h6nfdwYIMuwfMI9bNIohgggumEfo+4BzEFujvFJjQt2DezcDy xEun87v8uxiREIf48rV7VE/wGBz7leQvHVKQ5nZeXOXdyTuR5BMG770cyX8vdCgIF7nTJqzSRKN O6SbyNoYmaLLcjBAeil2o+bzvbKqi/gx2/L+I/pDjZWnzt1/i9KEJIlc0CuZT9le8qgFxmnLyhk IuGd/32I5r5O3MMA= X-Google-Smtp-Source: AGHT+IF86zWlbYtYONc0/QY0feYDpeE7hbDirsRwOLzXe81oY8DiE9on7rzJqfhueiaNDm7FrJBJMQ== X-Received: by 2002:adf:f249:0:b0:38f:2b54:58dd with SMTP id ffacd0b85a97d-390d4f3cf5cmr88747f8f.21.1740504256133; Tue, 25 Feb 2025 09:24:16 -0800 (PST) Received: from ?IPV6:2a0d:6fc2:4bf3:1500:5db2:1024:2f61:78a9? ([2a0d:6fc2:4bf3:1500:5db2:1024:2f61:78a9]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ab1532dd8sm33761785e9.2.2025.02.25.09.24.15 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 25 Feb 2025 09:24:15 -0800 (PST) Content-Type: multipart/mixed; boundary="------------cMsqWnpmPMzPTHxslrPn6GNz" Message-ID: <71eef655-c192-453f-ac45-2772fec2cb04@gmail.com> Date: Tue, 25 Feb 2025 19:24:14 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Alex Friedman Subject: A small correction to doc and comment of FSM for indexes Content-Language: en-US To: pgsql-hackers@lists.postgresql.org List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------cMsqWnpmPMzPTHxslrPn6GNz Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, This patch fixes a couple of small inaccuracies in the doc and the comment for FSM about index handling. 1. In the doc for pg_freespacemap, it currently says: > For indexes, what is tracked is entirely-unused pages, rather than free space within pages. Therefore, the values are not meaningful, just whether a page is full or empty. However, as what is tracked is entirely-unused pages, the values mean whether a page is "in-use or empty", rather than "full or empty". 2. In indexfsm.c the header comment says: > * This is similar to the FSM used for heap, in freespace.c, but instead > * of tracking the amount of free space on pages, we only track whether > * pages are completely free or in-use. We use the same FSM implementation > * as for heaps, using BLCKSZ - 1 to denote used pages, and 0 for unused. However, in the code we see that used pages are marked with 0: > /* > * RecordUsedIndexPage - mark a page as used in the FSM > */ > void > RecordUsedIndexPage(Relation rel, BlockNumber usedBlock) > { > RecordPageWithFreeSpace(rel, usedBlock, 0); > } And free pages are marked with BLCKSZ - 1: > /* > * RecordFreeIndexPage - mark a page as free in the FSM > */ > void > RecordFreeIndexPage(Relation rel, BlockNumber freeBlock) > { > RecordPageWithFreeSpace(rel, freeBlock, BLCKSZ - 1); > } And so, this patch also fixes the comment's "using BLCKSZ - 1 to denote used pages, and 0 for unused" to be "using 0 to denote used pages, and BLCKSZ - 1 for unused". While these changes are minor, I've seen how this can cause a bit of confusion, and it would be good to clarify it. Best regards, Alex Friedman --------------cMsqWnpmPMzPTHxslrPn6GNz Content-Type: text/plain; charset=UTF-8; name="v1-0001-A-small-correction-to-doc-and-comment-of-FSM-for-.patch" Content-Disposition: attachment; filename*0="v1-0001-A-small-correction-to-doc-and-comment-of-FSM-for-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhMWI3ODQzODM0M2ZjYTA1M2FhMDAxNDY4N2VhYmEzNGQ1ZTE2MGUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4IEZyaWVkbWFuIDxhbGV4ZjAxQGdtYWlsLmNv bT4KRGF0ZTogVHVlLCAyNSBGZWIgMjAyNSAxOToxMjo1MyArMDIwMApTdWJqZWN0OiBbUEFU Q0ggdjFdIEEgc21hbGwgY29ycmVjdGlvbiB0byBkb2MgYW5kIGNvbW1lbnQgb2YgRlNNIGZv ciBpbmRleGVzLgoKLS0tCiBkb2Mvc3JjL3NnbWwvcGdmcmVlc3BhY2VtYXAuc2dtbCAgICAg ICAgIHwgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9mcmVlc3BhY2UvaW5kZXhmc20uYyB8 IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wZ2ZyZWVzcGFjZW1hcC5zZ21sIGIvZG9j L3NyYy9zZ21sL3BnZnJlZXNwYWNlbWFwLnNnbWwKaW5kZXggODI5YWQ2MGYzMmYuLjM3NzRh OWY4YzZiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcGdmcmVlc3BhY2VtYXAuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcGdmcmVlc3BhY2VtYXAuc2dtbApAQCAtNjcsNyArNjcsNyBA QAogICA8cGFyYT4KICAgIEZvciBpbmRleGVzLCB3aGF0IGlzIHRyYWNrZWQgaXMgZW50aXJl bHktdW51c2VkIHBhZ2VzLCByYXRoZXIgdGhhbiBmcmVlCiAgICBzcGFjZSB3aXRoaW4gcGFn ZXMuICBUaGVyZWZvcmUsIHRoZSB2YWx1ZXMgYXJlIG5vdCBtZWFuaW5nZnVsLCBqdXN0Ci0g ICB3aGV0aGVyIGEgcGFnZSBpcyBmdWxsIG9yIGVtcHR5LgorICAgd2hldGhlciBhIHBhZ2Ug aXMgaW4tdXNlIG9yIGVtcHR5LgogICA8L3BhcmE+CiAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9mcmVlc3BhY2UvaW5kZXhmc20uYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvZnJlZXNwYWNlL2luZGV4ZnNtLmMKaW5kZXggMWZjMjYzODkyYTcuLjNj ZDI0Mzc1OTlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZyZWVzcGFjZS9p bmRleGZzbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZnJlZXNwYWNlL2luZGV4ZnNt LmMKQEAgLTE2LDcgKzE2LDcgQEAKICAqCVRoaXMgaXMgc2ltaWxhciB0byB0aGUgRlNNIHVz ZWQgZm9yIGhlYXAsIGluIGZyZWVzcGFjZS5jLCBidXQgaW5zdGVhZAogICoJb2YgdHJhY2tp bmcgdGhlIGFtb3VudCBvZiBmcmVlIHNwYWNlIG9uIHBhZ2VzLCB3ZSBvbmx5IHRyYWNrIHdo ZXRoZXIKICAqCXBhZ2VzIGFyZSBjb21wbGV0ZWx5IGZyZWUgb3IgaW4tdXNlLiBXZSB1c2Ug dGhlIHNhbWUgRlNNIGltcGxlbWVudGF0aW9uCi0gKglhcyBmb3IgaGVhcHMsIHVzaW5nIEJM Q0tTWiAtIDEgdG8gZGVub3RlIHVzZWQgcGFnZXMsIGFuZCAwIGZvciB1bnVzZWQuCisgKglh cyBmb3IgaGVhcHMsIHVzaW5nIDAgdG8gZGVub3RlIHVzZWQgcGFnZXMsIGFuZCBCTENLU1og LSAxIGZvciB1bnVzZWQuCiAgKgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KLS0gCjIu NDEuMAoK --------------cMsqWnpmPMzPTHxslrPn6GNz--