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 1scoGP-00Acva-3h for pgsql-hackers@arkaria.postgresql.org; Sat, 10 Aug 2024 15:44:17 +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 1scoGN-009Vtp-NP for pgsql-hackers@arkaria.postgresql.org; Sat, 10 Aug 2024 15:44:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1scoGN-009Vth-97 for pgsql-hackers@lists.postgresql.org; Sat, 10 Aug 2024 15:44:15 +0000 Received: from mail-yb1-xb33.google.com ([2607:f8b0:4864:20::b33]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1scoGK-0043dT-NF for pgsql-hackers@lists.postgresql.org; Sat, 10 Aug 2024 15:44:14 +0000 Received: by mail-yb1-xb33.google.com with SMTP id 3f1490d57ef6-e087c7ef68bso2622072276.3 for ; Sat, 10 Aug 2024 08:44:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723304651; x=1723909451; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Z7X+eTgFBzU4pCBm78YAHM6gbZeITz50Nld0j/IfpEs=; b=D0kEP5GqK+l7TQ1iggY4rMY0owFpcQbnfGjbNE94nSk0b1RYmbizD1FeDllC7FVPXc OAheR9UhoPGQN8ep4lPARUukfYxyPYo52x0ffzrvTW1RdOLGDhM5/duLre3eg7UWsLhi lHlQzr+vj+gOibNjWy4b3gjsSI8Ln5Jwk7kQhfAm7YtM+ZIIlOllLklimfZJWQYfklj8 8iM1EDK3FQ83YR26LyC/NyaVuqz5LPa1ivIHOC6Rkqs+dHuwG2ruBuV+fnEUdeGxHjew C2B039gtskrsl2IefbT0L/Crmq1v1zlGMxU+Xlu4ikTb0YqSEL+qW8h24G5tHmLd3GNc qPDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723304651; x=1723909451; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Z7X+eTgFBzU4pCBm78YAHM6gbZeITz50Nld0j/IfpEs=; b=YVR4N3lwjXkV7MYMTp3PhUaJz+66d6UySx7qso5YrrA8ufQswrKgHDf7cWhXMJbeOU cTjfNZUyqCXOS52iBKXaHbYUYbV3O2CVCmGLFGZoOewiMrMaH8ziDHSzaxVRby1Gk1al HNXX09XrLaRXEhmVWLJAEL1lMTadGbJ5S/2YdgjDxfoNlTFkWiles/1Ta7i/6YJxjcLv ShysViUJNHFGggHyKw1qdQsMfStSclwTUR2wp7J9OvEOx8gGAlBy61neSJTcONQ3esJr m02m3nr58OS9r952YCLtZEr4GthJpEoPZL2LBN6KaZe3kT4dzCCn8QBXQ11PpBjbHEKB ihNA== X-Forwarded-Encrypted: i=1; AJvYcCXX5dIKr8Q/wr5FWxddsFml4CxjqoH8YqHjMXOw/kj2/tFIj9OrkFf0ZK5te6l5BIAVqtefkeJqQsdfh5mJjXnXoX87yxKKKhx85LAizj1vo+ff X-Gm-Message-State: AOJu0Yycmnk4x6nr5AYlgTpeVrUKDFER554rBn8EgubIVKcA4xo8y/w5 SRKhAVXUagDztNzlzYMWmZtbUwgoDuk/HWBgv9bPoA7tfx9Wjp4MfmTUGKul7FTC7eCLqls1f4F zmpu7D/V3Kgi2lFS0BFe5YNvk5sBNN7dLiQNMtw== X-Google-Smtp-Source: AGHT+IGBs/895SDd94Zpby8HbGutqx8+Kkb58n5hooYIJ6ARG3u2Xhm2e/CI00c338gHlL7XlPP60aSK0eI7wuFcMgY= X-Received: by 2002:a05:6902:2003:b0:e0b:e279:9940 with SMTP id 3f1490d57ef6-e0eb9946333mr4776109276.15.1723304651342; Sat, 10 Aug 2024 08:44:11 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <171085858750.2046434.12246066729700037354.pgcf@coridan.postgresql.org> <909e16b4-9eda-435c-b033-8294ae4adc05@postgrespro.ru> <3a4b9c1c-3edf-4e29-9629-b4113aefb0f3@postgrespro.ru> <20240808171351.a9.nmisch@google.com> <19c1e04c-2012-4475-8460-821dd633a6ce@postgrespro.ru> In-Reply-To: <19c1e04c-2012-4475-8460-821dd633a6ce@postgrespro.ru> From: Alexander Korotkov Date: Sat, 10 Aug 2024 18:43:59 +0300 Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: Noah Misch , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000009561a8061f56214e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009561a8061f56214e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Aug 9, 2024 at 10:18=E2=80=AFAM Dmitry Koval wrote: > > This breaks from the CVE-2014-0062 (commit 5f17304) principle of not re= peating > > name lookups. The attached demo uses this defect to make one partition= have > > two parents. > > Thank you very much for information (especially for the demo)! > > I'm not sure that we can get the identifier of the newly created > partition from the ProcessUtility() function... > Maybe it would be enough to check that the new partition is located in > the namespace in which we created it (see attachment)? The new partition doesn't necessarily get created in the same namespace as parent partition. I think it would be better to somehow open partition by its oid. It would be quite unfortunate to replicate significant part of ProcessUtilitySlow(). So, the question is how to get the oid of newly created relation from ProcessUtility(). I don't like to change the signature of ProcessUtility() especially as a part of backpatch. So, I tried to fit this into existing parameters. Probably QueryCompletion struct fits this purpose best from the existing parameters. Attached draft patch implements returning oid of newly created relation as part of QueryCompletion. Thoughts? ------ Regards, Alexander Korotkov Supabase --0000000000009561a8061f56214e Content-Type: application/x-patch; name="v1-0001-Fix-createPartitionTable-security-issue.patch" Content-Disposition: attachment; filename="v1-0001-Fix-createPartitionTable-security-issue.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzo5z18j0 RnJvbSA4M2I2ZDhlMzhkNjgwZGFhOTUyNTQyZjZhZTRhNDFhZTQ4NDkxYTYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU2F0LCAxMCBBdWcgMjAyNCAxNjoxOToyOCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjFdIEZpeCBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIHNlY3VyaXR5IGlzc3VlCgotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIHwgNiArKysrLS0KIHNyYy9iYWNrZW5k L3Rjb3AvdXRpbGl0eS5jICAgICAgIHwgMiArKwogc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWcuaCAg ICAgICAgfCAzICsrKwogMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAxZjk0ZjRmZGJiYy4uYzY0YjQ5 NTNkYTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMDMyOSw2ICsyMDMyOSw3IEBA IGNyZWF0ZVBhcnRpdGlvblRhYmxlKFJhbmdlVmFyICpuZXdQYXJ0TmFtZSwgUmVsYXRpb24gbW9k ZWxSZWwsCiAJVGFibGVMaWtlQ2xhdXNlICp0bGM7CiAJUGxhbm5lZFN0bXQgKndyYXBwZXI7CiAJ UmVsYXRpb24JbmV3UmVsOworCVF1ZXJ5Q29tcGxldGlvbiBxYzsKIAogCS8qIElmIGV4aXN0aW5n IHJlbCBpcyB0ZW1wLCBpdCBtdXN0IGJlbG9uZyB0byB0aGlzIHNlc3Npb24gKi8KIAlpZiAobW9k ZWxSZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCAmJgpA QCAtMjAzNzMsNiArMjAzNzQsNyBAQCBjcmVhdGVQYXJ0aXRpb25UYWJsZShSYW5nZVZhciAqbmV3 UGFydE5hbWUsIFJlbGF0aW9uIG1vZGVsUmVsLAogCXdyYXBwZXItPnN0bXRfbG9jYXRpb24gPSBj b250ZXh0LT5wc3RtdC0+c3RtdF9sb2NhdGlvbjsKIAl3cmFwcGVyLT5zdG10X2xlbiA9IGNvbnRl eHQtPnBzdG10LT5zdG10X2xlbjsKIAorCXFjLmNvbW1hbmRUYWcgPSBDTURUQUdfVU5LTk9XTjsK IAlQcm9jZXNzVXRpbGl0eSh3cmFwcGVyLAogCQkJCSAgIGNvbnRleHQtPnF1ZXJ5U3RyaW5nLAog CQkJCSAgIGZhbHNlLApAQCAtMjAzODAsMTMgKzIwMzgyLDEzIEBAIGNyZWF0ZVBhcnRpdGlvblRh YmxlKFJhbmdlVmFyICpuZXdQYXJ0TmFtZSwgUmVsYXRpb24gbW9kZWxSZWwsCiAJCQkJICAgTlVM TCwKIAkJCQkgICBOVUxMLAogCQkJCSAgIE5vbmVfUmVjZWl2ZXIsCi0JCQkJICAgTlVMTCk7CisJ CQkJICAgJnFjKTsKIAogCS8qCiAJICogT3BlbiB0aGUgbmV3IHBhcnRpdGlvbiB3aXRoIG5vIGxv Y2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBoYXZlCiAJICogQWNjZXNzRXhjbHVzaXZlTG9jayBwbGFj ZWQgdGhlcmUgYWZ0ZXIgY3JlYXRpb24uCiAJICovCi0JbmV3UmVsID0gdGFibGVfb3BlbnJ2KG5l d1BhcnROYW1lLCBOb0xvY2spOworCW5ld1JlbCA9IHRhYmxlX29wZW4ocWMudGFibGVBZGRyZXNz Lm9iamVjdElkLCBOb0xvY2spOwogCiAJLyoKIAkgKiBXZSBpbnRlbmRlZCB0byBjcmVhdGUgdGhl IHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIHBlcnNpc3RlbmNlIGFzIHRoZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpp bmRleCBiMmVhODEyNWM5Mi4uZThhODNlMGM1NjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rj b3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC0xMTY1LDYg KzExNjUsOCBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJ CQkJCQkJCSBSRUxLSU5EX1JFTEFUSU9OLAogCQkJCQkJCQkJCQkJCSBJbnZhbGlkT2lkLCBOVUxM LAogCQkJCQkJCQkJCQkJCSBxdWVyeVN0cmluZyk7CisJCQkJCQkJaWYgKHFjKQorCQkJCQkJCQlx Yy0+dGFibGVBZGRyZXNzID0gYWRkcmVzczsKIAkJCQkJCQlFdmVudFRyaWdnZXJDb2xsZWN0U2lt cGxlQ29tbWFuZChhZGRyZXNzLAogCQkJCQkJCQkJCQkJCQkJIHNlY29uZGFyeU9iamVjdCwKIAkJ CQkJCQkJCQkJCQkJCSBzdG10KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFn LmggYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZy5oCmluZGV4IDIzYzk5ZDdlY2E2Li5hOTY0YThj MGNiNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWcuaAorKysgYi9zcmMvaW5j bHVkZS90Y29wL2NtZHRhZy5oCkBAIC0xMyw2ICsxMyw4IEBACiAjaWZuZGVmIENNRFRBR19ICiAj ZGVmaW5lIENNRFRBR19ICiAKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKwog LyogYnVmZmVyIHNpemUgcmVxdWlyZWQgZm9yIGNvbW1hbmQgY29tcGxldGlvbiB0YWdzICovCiAj ZGVmaW5lIENPTVBMRVRJT05fVEFHX0JVRlNJWkUJNjQKIApAQCAtMjksNiArMzEsNyBAQCB0eXBl ZGVmIGVudW0gQ29tbWFuZFRhZwogdHlwZWRlZiBzdHJ1Y3QgUXVlcnlDb21wbGV0aW9uCiB7CiAJ Q29tbWFuZFRhZwljb21tYW5kVGFnOworCU9iamVjdEFkZHJlc3MgdGFibGVBZGRyZXNzOwogCXVp bnQ2NAkJbnByb2Nlc3NlZDsKIH0gUXVlcnlDb21wbGV0aW9uOwogCi0tIAoyLjM5LjMgKEFwcGxl IEdpdC0xNDYpCgo= --0000000000009561a8061f56214e--