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 1uMzcL-0099gC-Jp for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jun 2025 01:42:05 +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 1uMzcH-002E1e-LN for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jun 2025 01:42:02 +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 1uMzcH-002E1V-61 for pgsql-hackers@lists.postgresql.org; Thu, 05 Jun 2025 01:42:01 +0000 Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uMzcG-000GnX-09 for pgsql-hackers@lists.postgresql.org; Thu, 05 Jun 2025 01:42:00 +0000 Received: by mail-ed1-x530.google.com with SMTP id 4fb4d7f45d1cf-6069d764980so3167821a12.0 for ; Wed, 04 Jun 2025 18:41:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749087718; x=1749692518; 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=BcyKxnVBmEqbzlgK1tFXAf4FaASKv8J3I5S9L/OfzIE=; b=Nq+uMOWLkt6h3zbIJvZP6NqAdnGo/AzPkgVlWhbviD+pdCeQaecSH1ROOW0Gag+0+R iNPF5nbZfra+oI1qRjD1EIuxqB1uMLOcwFWVaJ+vKyCr0xrw1r3D+tn/IosjVJIIWzny GmRpPUZsrhJZ9QlzdQjRKMPEz9Y1GON99DuyV+qfdYVccs3aOncWnJIOdvy4GN9tAqF4 aNvncu9qb4jmv62MnFhIKaMU4IhXYhfMdKddtCOCRIAiRQOuRItvaTNIC0BwbH1wCUW6 9ycXu5mYqePq04Ir3kwOJBZs0KKcMxVhnepXSMBGfmT1ie+f35SI39Q8eaSUENLOBuOZ +5Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749087718; x=1749692518; 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=BcyKxnVBmEqbzlgK1tFXAf4FaASKv8J3I5S9L/OfzIE=; b=LhUd05Q2h3Vhx7XR29Zr5GIYBnJ7twonC6r2qkwXUG+KlGlZPxGejB5Eq+NxzPmMRW BaLjhH20aXsk94f0WVV2RXe+fZ5DEbA4xEMKP2thLcans/MMcjyOjiF3p8hdAUL2RUWu VX0moGZaY9yG4Q7yOW73hU+6H6gMRGjPQTXYOcHFsr8oeU7LASqr59dg0vzbOvi2ZJ+R fHhNx997H0kK1ZcgynkMo+exibC7nhVcr01hKqyHKdePhKSMmpAid9gKAheJcZmtd4FM /tqX+WiaOKhWoZIZA0Ndm51sESbLrwnGRiwSRT9YX8Lbv/4sLaBvqEswFDzO6umW9gln wQ6Q== X-Forwarded-Encrypted: i=1; AJvYcCXx0qwycKu2bZf4Erih8TtvvY+OciileL9obGt8YQXmqRAdW3WCkd8SJHH7zgdWg9T8lTTyURvGD1pU4D5e@lists.postgresql.org X-Gm-Message-State: AOJu0YyYnnxTYT2nyuCe7vCYXeDNDCK9GIMRNJ+KLY65r/onRaOIALlM KmqFfZZSA1ZjGfQOIAaqOlG7n54bkZS2gns6fb/7d4/vWtzQ1O1YuPBiI6AOIv/GNdASX9nGyxi buvBRdx4HrzL8EGUk9hXAma6dPWiYRWI= X-Gm-Gg: ASbGncsRzQ9m5opH1Te8cuH3h3nhIdbJACTsAJ4NyfT/acmN7bbPeRJfhMPwscxJEsJ EnucDgRfofWJ0I/bVgcztsom1d806I4YUgdGKt0+4LRPtVs9URa4dS+tLdb93Fzf6PwJvx921yM 4b9tjIju7c9YyPOyk8FTtfeDL9FaSTK+1I X-Google-Smtp-Source: AGHT+IE/gLA/Bna25kMXubdia5HlVU8BXlb5XrAy/Aa1QzhetmYbzQa15J2D4yxV41AWtHGUVdb2Zu/A0s9r7NKnvc8= X-Received: by 2002:a17:907:1c18:b0:ad5:6cfc:e519 with SMTP id a640c23a62f3a-ade076092d0mr154550266b.11.1749087718157; Wed, 04 Jun 2025 18:41:58 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <859476bf-3cb0-455e-b093-b8ab5ef17f0e@postgrespro.ru> <4e2764f7-f6be-478f-8d7f-f921dbd10f5f@postgrespro.ru> <7fdaf3e8-4c05-4739-bee6-98acc068d1c7@postgrespro.ru> <4433b492-9e97-4334-96d9-ddaaa5083099@postgrespro.ru> <67ecf5fb-e63d-4284-be75-d0479eef81aa@postgrespro.ru> In-Reply-To: <67ecf5fb-e63d-4284-be75-d0479eef81aa@postgrespro.ru> From: Alexander Korotkov Date: Thu, 5 Jun 2025 04:41:47 +0300 X-Gm-Features: AX0GCFtx8fMd7Py3IwyLMescCpJrt1oWkBp0F8cetlpGaJuW9TV70PVWI8XE-hU Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: jian he , pgsql-hackers@lists.postgresql.org Content-Type: multipart/alternative; boundary="0000000000001f33c00636c9383a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001f33c00636c9383a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Dmitry! On Wed, Jun 4, 2025 at 10:44=E2=80=AFPM Dmitry Koval wrote: > Thank you very much for review. Thank you for your work on this patch. I have some additional notes on this patch. Why don't you use *existing_relation_id argument of RangeVarGetAndCheckCreationNamespace(), when it is called from createPartitionTable() and ATExecSplitPartition()? This argument provide an elegant way to find a duplicate table with the same name. It also seems that 0002 patch has the following error message, which aren't experienced in the regression tests. + datum =3D list_nth(spec->upperdatums, abs(cmpval) - 1); + ereport(ERROR, + errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("upper bound of partition \"%s\" is not equal to upper bound of split partition", + relname), + parser_errposition(pstate, datum->location)); + ereport(ERROR, + errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("new partition \"%s\" cannot have this value because split partition does not have", + relname), + parser_errposition(pstate, overlap_location)); + ereport(ERROR, + errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("new partitions do not have value %s but split partition does", + searchNull ? "NULL" : get_list_partvalue_string(notFoundVal))); + ereport(ERROR, + errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("DEFAULT partition should be one"), + parser_errposition(pstate, sps->name->location)); + ereport(ERROR, + errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("one partition in the list should be DEFAULT because split partition is DEFAULT"), + parser_errposition(pstate, ((SinglePartitionSpec *) linitial(partlist))->name->location)); + ereport(ERROR, + errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("new partition cannot be DEFAULT because DEFAULT partition already exists"), + parser_errposition(pstate, spsDef->name->location)); + ereport(ERROR, + errcode(ERRCODE_CHECK_VIOLATION), + errmsg("can not find partition for split partition row"), + errtable(splitRel)); ------ Regards, Alexander Korotkov Supabase --0000000000001f33c00636c9383a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+SGkgRG1pdHJ5ITxicj48YnI+T24gV2VkLCBKdW4gNCwgMjAyNSBhdCAx MDo0NOKAr1BNIERtaXRyeSBLb3ZhbCAmbHQ7PGEgaHJlZj0ibWFpbHRvOmQua292YWxAcG9zdGdy ZXNwcm8ucnUiPmQua292YWxAcG9zdGdyZXNwcm8ucnU8L2E+Jmd0OyB3cm90ZTo8YnI+Jmd0OyBU aGFuayB5b3UgdmVyeSBtdWNoIGZvciByZXZpZXcuPGJyPjxicj5UaGFuayB5b3UgZm9yIHlvdXIg d29yayBvbiB0aGlzIHBhdGNoLsKgIEkgaGF2ZSBzb21lIGFkZGl0aW9uYWwgbm90ZXMgb24gdGhp cyBwYXRjaC48YnI+PGJyPldoeSBkb24mIzM5O3QgeW91IHVzZSAqZXhpc3RpbmdfcmVsYXRpb25f aWQgYXJndW1lbnQgb2YgUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKCksIHdo ZW4gaXQgaXMgY2FsbGVkIGZyb20gY3JlYXRlUGFydGl0aW9uVGFibGUoKSBhbmQgQVRFeGVjU3Bs aXRQYXJ0aXRpb24oKT/CoCBUaGlzIGFyZ3VtZW50IHByb3ZpZGUgYW4gZWxlZ2FudCB3YXkgdG8g ZmluZCBhIGR1cGxpY2F0ZSB0YWJsZSB3aXRoIHRoZSBzYW1lIG5hbWUuPGJyPjxicj5JdCBhbHNv IHNlZW1zIHRoYXQgMDAwMiBwYXRjaCBoYXMgdGhlIGZvbGxvd2luZyBlcnJvciBtZXNzYWdlLCB3 aGljaCBhcmVuJiMzOTt0IGV4cGVyaWVuY2VkIGluIHRoZSByZWdyZXNzaW9uIHRlc3RzLjxicj48 YnI+PGZvbnQgZmFjZT0ibW9ub3NwYWNlIj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRh dHVtID0gbGlzdF9udGgoc3BlYy0mZ3Q7dXBwZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7PGJy PisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXJlcG9ydChFUlJPUiw8YnI+KyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksPGJyPisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZXJybXNnKCZxdW90O3VwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcJnF1b3Q7JXNcJnF1 b3Q7IGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24mcXVvdDss PGJyPisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBy ZWxuYW1lKSw8YnI+KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1bS0mZ3Q7bG9jYXRpb24pKTs8YnI+PGJyPjxicj4r IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVyZXBvcnQoRVJST1IsPGJyPisgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLDxicj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVycm1zZygmcXVvdDtu ZXcgcGFydGl0aW9uIFwmcXVvdDslc1wmcXVvdDsgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNh dXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlJnF1b3Q7LDxicj4rIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmVsbmFtZSksPGJyPisgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3Zlcmxh cF9sb2NhdGlvbikpOzxicj48YnI+PGJyPisgwqAgwqAgwqAgZXJlcG9ydChFUlJPUiw8YnI+KyDC oCDCoCDCoCDCoCDCoCDCoCDCoCBlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5J VElPTiksPGJyPisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXJybXNnKCZxdW90O25ldyBwYXJ0aXRp b25zIGRvIG5vdCBoYXZlIHZhbHVlICVzIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcyZxdW90Oyw8 YnI+KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNlYXJjaE51bGwgPyAmcXVvdDtO VUxMJnF1b3Q7IDogZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhub3RGb3VuZFZhbCkpKTs8YnI+ PGJyPjxicj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVyZXBvcnQo RVJST1IsPGJyPisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLDxicj4rIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVycm1zZygm cXVvdDtERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lJnF1b3Q7KSw8YnI+KyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBzcHMtJmd0O25hbWUtJmd0O2xvY2F0aW9uKSk7PGJyPjxicj4rIMKgIMKg IMKgIGVyZXBvcnQoRVJST1IsPGJyPisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLDxicj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGVycm1zZygmcXVvdDtvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxU IGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQmcXVvdDspLDxicj4rIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsICgoU2luZ2xlUGFydGl0aW9u U3BlYyAqKSBsaW5pdGlhbChwYXJ0bGlzdCkpLSZndDtuYW1lLSZndDtsb2NhdGlvbikpOzxicj48 YnI+PGJyPisgwqAgwqAgwqAgZXJlcG9ydChFUlJPUiw8YnI+KyDCoCDCoCDCoCDCoCDCoCDCoCDC oCBlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksPGJyPisgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZXJybXNnKCZxdW90O25ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERFRkFV TFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4aXN0cyZxdW90OyksPGJyPisg wqAgwqAgwqAgwqAgwqAgwqAgwqAgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3BzRGVmLSZn dDtuYW1lLSZndDtsb2NhdGlvbikpOzxicj48YnI+KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlcmVw b3J0KEVSUk9SLDxicj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVycmNvZGUo RVJSQ09ERV9DSEVDS19WSU9MQVRJT04pLDxicj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGVycm1zZygmcXVvdDtjYW4gbm90IGZpbmQgcGFydGl0aW9uIGZvciBzcGxpdCBwYXJ0 aXRpb24gcm93JnF1b3Q7KSw8YnI+KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBl cnJ0YWJsZShzcGxpdFJlbCkpOzxicj48L2ZvbnQ+PGJyPi0tLS0tLTxicj5SZWdhcmRzLDxicj5B bGV4YW5kZXIgS29yb3Rrb3Y8YnI+U3VwYWJhc2U8L2Rpdj4NCg== --0000000000001f33c00636c9383a--