Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pFyoH-0004LA-7l for pgsql-docs@arkaria.postgresql.org; Thu, 12 Jan 2023 14:44:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pFyoF-0006mZ-Hn for pgsql-docs@arkaria.postgresql.org; Thu, 12 Jan 2023 14:44:03 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pFyoF-0006mQ-5v for pgsql-docs@lists.postgresql.org; Thu, 12 Jan 2023 14:44:03 +0000 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pFyoC-0004wk-GX for pgsql-docs@lists.postgresql.org; Thu, 12 Jan 2023 14:44:02 +0000 Received: by mail-ej1-x62a.google.com with SMTP id u19so45237316ejm.8 for ; Thu, 12 Jan 2023 06:44:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20210112.gappssmtp.com; s=20210112; h=mime-version:user-agent:references:in-reply-to:date:to:from:subject :message-id:from:to:cc:subject:date:message-id:reply-to; bh=6GCzpeDckDe/zMQV1E/76FkCFp8z/yNsVlRVK99vLP4=; b=5OM/cGdRdazfPy4yB6bPOn+rUk9uib084wgY3cNglvc4VaB16+A21tlfL/dzlIQ7zX HoQX/zRdgU45HT41360pYugBDe1a5YLT5TwgNIKND0zdeFVaf+P+TrzSJffKt0jdI0TP fGfJ/nCNQ/bS1lUnfBs8DK3wIVjWNZtjwEfRDELHdqEP/s7GBJMXvHIa61y/IAuVZatB FRCLxxNaclBJcFZnP4WyM3SVIKcJrD4H4UIYTOHph0DKKQC66EGhdgJs865GYZuSlCIs geNNhyIYm21TZDlIl4lFfVrdDL64kmhkvxNtQQAFDC3SxaZMhhlLN1Wm3DMgtHoBJxU/ nUGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:references:in-reply-to:date:to:from:subject :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=6GCzpeDckDe/zMQV1E/76FkCFp8z/yNsVlRVK99vLP4=; b=a/XvcAp/8BeCIvPhIzWBsMRC707jNVzmifvdMEFqK6ZVBxIyYmsYeChLGCbj93+hln uJkynKg/In4x3Y2/4wzNKopmQF+k+AwAUgSml+ErNh9jhyVb0zYfNTGRqWtPXzIOKjEw 9L2mrZl8Fk4k3FGmtFZSibmF4x/mv7SR9J7lWxy+X/qTfpPSB+ShQRZr52j8HId9Uazr hp55ZjPIyHKk+Jo2l1vS54MOdTag8rWLJajW56irvoLVso4tv3rxcHq1H3l1VqhKFk/j LUiURuT78DunEnmY3PitzZpKXEOWmypuylSIvrzVVh2TOEXBeX4+uhjC0MM1zFU9ePB9 PDnw== X-Gm-Message-State: AFqh2kqP9mmE0hW50cincja2p8kpRro5iSVUbRU7hTa8sy5I4r1IGsKY gKIRLs2arUZsvAqAOlGMY9Q9ig== X-Google-Smtp-Source: AMrXdXvjlrsBRDjOwrajgUxSY+XwwO2c9bJGEDhYNlEsWiZpt6wsxBIFkNRhlzL2Sx2qWs73aUc+yg== X-Received: by 2002:a17:906:4cd2:b0:7c0:e5c6:2a74 with SMTP id q18-20020a1709064cd200b007c0e5c62a74mr61240745ejt.34.1673534639161; Thu, 12 Jan 2023 06:43:59 -0800 (PST) Received: from dynamic-pd01.res.v6.highway.a1.net ([2001:871:5e:539:1b2c:c52a:475d:310c]) by smtp.gmail.com with ESMTPSA id v1-20020a170906292100b0073dd8e5a39fsm7513002ejd.156.2023.01.12.06.43.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Jan 2023 06:43:58 -0800 (PST) Message-ID: Subject: Re: The documentation for storage type 'plain' actually allows single byte header From: Laurenz Albe To: suchithjn22@gmail.com, pgsql-docs@lists.postgresql.org Date: Thu, 12 Jan 2023 15:43:57 +0100 In-Reply-To: <167336599095.2667301.15497893107226841625@wrigleys.postgresql.org> References: <167336599095.2667301.15497893107226841625@wrigleys.postgresql.org> Content-Type: multipart/mixed; boundary="=-1Sbh6iU0IKorMAapjCxh" User-Agent: Evolution 3.46.3 (3.46.3-1.fc37) MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-1Sbh6iU0IKorMAapjCxh Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2023-01-10 at 15:53 +0000, PG Doc comments form wrote: > https://www.postgresql.org/docs/devel/storage-toast.html=C2=A0- This is t= he > development version. >=20 > > PLAIN prevents either compression or out-of-line storage; furthermore i= t > > disables use of single-byte headers for varlena types. This is the only > > possible strategy for columns of non-TOAST-able data types. >=20 > However, it does allow "single byte" headers. How to verify this? >=20 > CREATE EXTENSION pageinspect; > CREATE TABLE test(a VARCHAR(10000) STORAGE PLAIN); > INSERT INTO test VALUES (repeat('A',10)); >=20 > Now peek into the page with pageinspect functions >=20 > SELECT left(encode(t_data, 'hex'), 40) FROM > heap_page_items(get_raw_page('test', 0)); >=20 > This returned value of "1741414141414141414141". > Here the first byte 0x17 =3D 0001 0111 in binary. > Length + 1 is stored in the length bits (1-7). So Len =3D 0001011-1 =3D (= 11-1) > [base-10] =3D 10 [base-10] > which exactly matches the expected length. Further the data "41" repeated= 10 > times also indicates character A (65 or 0x41 in ASCII) repeated 10 times. >=20 > So....This does **not** disable 1-B header. That sentence should be remov= ed > from the documentation unless this is a bug. I think that the documentation is wrong. The attached patch removes the offending half-sentence. Yours, Laurenz Albe --=-1Sbh6iU0IKorMAapjCxh Content-Disposition: attachment; filename="0001-Fix-documentation-for-STORAGE-PLAIN.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-Fix-documentation-for-STORAGE-PLAIN.patch"; charset="UTF-8" RnJvbSA1YmYwYjQzZmU3MzM4NGEyMWY1OWQ5YWQxZjdhOGQ3Y2JjODFmOGM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXVyZW56IEFsYmUgPGxhdXJlbnouYWxiZUBjeWJlcnRlYy5h dD4KRGF0ZTogVGh1LCAxMiBKYW4gMjAyMyAxNTo0MTo1NiArMDEwMApTdWJqZWN0OiBbUEFUQ0hd IEZpeCBkb2N1bWVudGF0aW9uIGZvciBTVE9SQUdFIFBMQUlOCgpDb21taXQgM2UyM2I2OGRhYzAs IHdoaWNoIGludHJvZHVjZWQgc2luZ2xlLWJ5dGUgdmFybGVuYSBoZWFkZXJzLAphZGRlZCBkb2N1 bWVudGF0aW9uIHRoYXQgU1RPUkFHRSBQTEFJTiB3b3VsZCBwcmV2ZW50IHN1Y2ggc2luZ2xlLWJ5 dGUKaGVhZGVycy4gIFRoaXMgaGFzIG5ldmVyIGJlZW4gdHJ1ZS4KLS0tCiBkb2Mvc3JjL3NnbWwv c3RvcmFnZS5zZ21sIHwgNCArLS0tCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwKaW5kZXggZTViOWYzZjFmZi4uNDc5NWE0ODVkMCAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3Rv cmFnZS5zZ21sCkBAIC00NTYsOSArNDU2LDcgQEAgZm9yIHN0b3JpbmcgPGFjcm9ueW0+VE9BU1Q8 L2Fjcm9ueW0+LWFibGUgY29sdW1ucyBvbiBkaXNrOgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBh cmE+CiAgICAgICA8bGl0ZXJhbD5QTEFJTjwvbGl0ZXJhbD4gcHJldmVudHMgZWl0aGVyIGNvbXBy ZXNzaW9uIG9yCi0gICAgICBvdXQtb2YtbGluZSBzdG9yYWdlOyBmdXJ0aGVybW9yZSBpdCBkaXNh YmxlcyB1c2Ugb2Ygc2luZ2xlLWJ5dGUgaGVhZGVycwotICAgICAgZm9yIHZhcmxlbmEgdHlwZXMu Ci0gICAgICBUaGlzIGlzIHRoZSBvbmx5IHBvc3NpYmxlIHN0cmF0ZWd5IGZvcgorICAgICAgb3V0 LW9mLWxpbmUgc3RvcmFnZS4gIFRoaXMgaXMgdGhlIG9ubHkgcG9zc2libGUgc3RyYXRlZ3kgZm9y CiAgICAgICBjb2x1bW5zIG9mIG5vbi08YWNyb255bT5UT0FTVDwvYWNyb255bT4tYWJsZSBkYXRh IHR5cGVzLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KLS0gCjIuMzkuMAoK --=-1Sbh6iU0IKorMAapjCxh--