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 1p1UD1-0003Jv-KH for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Dec 2022 15:13:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p1UCz-00054r-Qr for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Dec 2022 15:13:41 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p1UCz-0004xF-8T for pgsql-hackers@lists.postgresql.org; Sat, 03 Dec 2022 15:13:41 +0000 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p1UCw-0003vG-GA for pgsql-hackers@lists.postgresql.org; Sat, 03 Dec 2022 15:13:39 +0000 Received: by mail-ej1-x632.google.com with SMTP id n21so17919543ejb.9 for ; Sat, 03 Dec 2022 07:13:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=MQKq2vnrsTUh1on+ih3N0RiDxjxE4hR9AMY7dRUikOk=; b=js/C1bYtZOsawvptXmO5yTGh8gXoLx4IFszHPBNeJ+ub1cUUhgI6B/7djoyiCL0R7T 2yj1lwxP5qYZ6X5gUrFS6/utXm5sZcucxYLBSjC2Zfi0LKD64uomOXkLUUKOCPKL096j eH0f0Jnh+ZFSyM1E7IIIkO2ql7pB+K7bQO9W7uItCog+sO2DS51m6l6dSLoyk41dNAHO B0+av0wo2/h9jau7iHkseR63+d2lQSjqrX4JS2peLvSYeRJ4nzBPO+zHZ9PEVM416xHX fqTW3lr6Z8/9I3zEj0CkDtvjkbsiFIaftcLjSiReqgjAqIE6SLCjM4h5pB5wGsHoR/J0 Iopw== 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:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=MQKq2vnrsTUh1on+ih3N0RiDxjxE4hR9AMY7dRUikOk=; b=vCuYmUPdVmdiRLX28WVl31hzBXLNop/M+Em3manvzUVpKzd0p3gZJbD9wkEXJnh964 2dyz+V+cUHOyI1WevwgQNbRuw+U2N2TqbYNq3Rr/ZbrGlk1azultvC4N5b9PYdIPcBo6 69qJVbiF3u8/AdNs8D1hhD+fDa3nb54tT1SWEmVXtVZqXpNBinMakYarJD7+4N/BGLLW /8J4BekrkLcK0Be9oSS14NFWgThRMzpVwnEuOj6+BBMrizJrx0o7Amkom2ldlxiPtwS1 6trfOgIR+7MjghYKWjHELF8xb+7KE3T+v7cDdw70i8wLvyMMJUy70PkwCCDJi4+jdxAQ owdw== X-Gm-Message-State: ANoB5pm1v4PgnAAbRgeCd3EXjoJh1/j8e4fhG6w4yjy5zKa9UyxhZUiA 84L3J57p8PCuw+lzsa45uvo= X-Google-Smtp-Source: AA0mqf52Vr36k736RefAN53kPGaFFiwF9sUm1UsHCbI6wlvFFuk1taWh6DPuHMpazwzXg5p6TOXFjw== X-Received: by 2002:a17:906:5612:b0:7bb:8db0:53e7 with SMTP id f18-20020a170906561200b007bb8db053e7mr37760223ejq.471.1670080415925; Sat, 03 Dec 2022 07:13:35 -0800 (PST) Received: from qoops-lap.home ([46.71.243.69]) by smtp.gmail.com with ESMTPSA id q26-20020a170906389a00b007bdc2de90e6sm4277341ejd.42.2022.12.03.07.13.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 Dec 2022 07:13:35 -0800 (PST) Message-ID: <5bafee07d0e1b3ce5359d1656c90b4836d7cb6a1.camel@gmail.com> Subject: Re: CREATE INDEX CONCURRENTLY on partitioned index From: Ilya Gladyshev To: Justin Pryzby , Alexander Pyhalov Cc: pgsql-hackers@lists.postgresql.org, Masahiko Sawada , Michael Paquier , =?UTF-8?Q?=E6=9D=8E=E6=9D=B0=28=E6=85=8E=E8=BF=BD=29?= , =?UTF-8?Q?=E6=9B=BE=E6=96=87=E6=97=8C=28=E4=B9=89=E4=BB=8E=29?= , Alvaro Herrera Date: Sat, 03 Dec 2022 19:13:30 +0400 In-Reply-To: <20221121030011.GU11463@telsasoft.com> References: <20201031063117.GF3080@telsasoft.com> <20201129202221.GA9477@telsasoft.com> <20210128143013.GC7450@telsasoft.com> <20210226182019.GU20769@telsasoft.com> <04657227cc37b6353cf0c72bedac70cc@postgrespro.ru> <20220628183309.GD28130@telsasoft.com> <20221121030011.GU11463@telsasoft.com> Content-Type: multipart/mixed; boundary="=-jPDZ0owIUYK2uuLznVbI" User-Agent: Evolution 3.38.3-1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-jPDZ0owIUYK2uuLznVbI Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Hi, Thank you Justin and Alexander for working on this, I have reviewed and tested the latest patch, it works well, the problems mentioned previously are all fixed. I like the idea of sharing code of reindex and index, but I have noticed some peculiarities as a user.  The reporting is somewhat confusing as it switches to reporting for reindex concurrently while building child indexes, this should be fixed with the simple patch I have attached. Another thing that I have noticed is that REINDEX, which is used under the hood, creates new indexes with suffix _ccnew, and if the index building fails, the indexes that could not be build will have the name with _ccnew suffix. This can actually be seen in your test: ERROR: could not create unique index "idxpart2_a_idx2_ccnew" I find it quite confusing and I don't think that this the expected behavior (if it is, I think it should be documented, like it is for REINDEX). As an example of problems that it might entail, DROP INDEX will not drop all the invalid indexes in the inheritance tree, because it will leave _ccnew indexes in place, which is ok for reindex concurrently, but that's not how C-I-C works now. I think that fixing this problem requires some heavy code rewrite and I'm not quite sure how to go about it, if you have any ideas, I will be happy to try them out. Thanks, Ilya --=-jPDZ0owIUYK2uuLznVbI Content-Disposition: attachment; filename="0001-turn-off-reindex-reporting-for-create.patch" Content-Type: text/x-patch; name="0001-turn-off-reindex-reporting-for-create.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4ZWI5ZmQ3Y2U3ZDM0YzVjMzIzYzQ3YjYwYTdmODgzZjM2MGVmMDkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbHlhIEdsYWR5c2hldiA8aWx5YS52LmdsYWR5c2hldkBnbWFp bC5jb20+CkRhdGU6IFNhdCwgMyBEZWMgMjAyMiAxODoyMDowMyArMDQwMApTdWJqZWN0OiBbUEFU Q0hdIHR1cm4gb2ZmIHJlaW5kZXggcmVwb3J0aW5nIGZvciBjcmVhdGUKCi0tLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgfCAzNiArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggYTI3NzU5MzFlMi4uYjNjNzEzMDM3ZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTM4MDQsMTQgKzM4MDQsMTYgQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1z KQogCiAJCS8qIERvbid0IG92ZXJ3cml0ZSBDUkVBVEUgSU5ERVggY29tbWFuZCAqLwogCQlpZiAo IShwYXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1JFUE9SVF9DUkVBVEVfUEFSVCkpCisJCXsK IAkJCXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JFQVRF X0lOREVYLAogCQkJCQkJCQkJICBpZHgtPnRhYmxlSWQpOwogCi0JCXByb2dyZXNzX3ZhbHNbMF0g PSBQUk9HUkVTU19DUkVBVEVJRFhfQ09NTUFORF9SRUlOREVYX0NPTkNVUlJFTlRMWTsKLQkJcHJv Z3Jlc3NfdmFsc1sxXSA9IDA7CS8qIGluaXRpYWxpemluZyAqLwotCQlwcm9ncmVzc192YWxzWzJd ID0gaWR4LT5pbmRleElkOwotCQlwcm9ncmVzc192YWxzWzNdID0gaWR4LT5hbUlkOwotCQlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVz c192YWxzKTsKKwkJCXByb2dyZXNzX3ZhbHNbMF0gPSBQUk9HUkVTU19DUkVBVEVJRFhfQ09NTUFO RF9SRUlOREVYX0NPTkNVUlJFTlRMWTsKKwkJCXByb2dyZXNzX3ZhbHNbMV0gPSAwOwkvKiBpbml0 aWFsaXppbmcgKi8KKwkJCXByb2dyZXNzX3ZhbHNbMl0gPSBpZHgtPmluZGV4SWQ7CisJCQlwcm9n cmVzc192YWxzWzNdID0gaWR4LT5hbUlkOworCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0 aV9wYXJhbSg0LCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CisJCX0KIAogCQkvKiBD aG9vc2UgYSB0ZW1wb3JhcnkgcmVsYXRpb24gbmFtZSBmb3IgdGhlIG5ldyBpbmRleCAqLwogCQlj b25jdXJyZW50TmFtZSA9IENob29zZVJlbGF0aW9uTmFtZShnZXRfcmVsX25hbWUoaWR4LT5pbmRl eElkKSwKQEAgLTM5NjcsMTMgKzM5NjksMTUgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KE9pZCByZWxhdGlvbk9pZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCQkgKiB0YWJsZSBpbnZv bHZlZC4gIERvbid0IG92ZXJ3cml0ZSBDUkVBVEUgSU5ERVggY29tbWFuZC4KIAkJICovCiAJCWlm ICghKHBhcmFtcy0+b3B0aW9ucyAmIFJFSU5ERVhPUFRfUkVQT1JUX0NSRUFURV9QQVJUKSkKKwkJ ewogCQkJcGdzdGF0X3Byb2dyZXNzX3N0YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DUkVB VEVfSU5ERVgsIG5ld2lkeC0+dGFibGVJZCk7CiAKLQkJcHJvZ3Jlc3NfdmFsc1swXSA9IFBST0dS RVNTX0NSRUFURUlEWF9DT01NQU5EX1JFSU5ERVhfQ09OQ1VSUkVOVExZOwotCQlwcm9ncmVzc192 YWxzWzFdID0gUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX0JVSUxEOwotCQlwcm9ncmVzc192YWxz WzJdID0gbmV3aWR4LT5pbmRleElkOwotCQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5hbUlk OwotCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2luZGV4 LCBwcm9ncmVzc192YWxzKTsKKwkJCXByb2dyZXNzX3ZhbHNbMF0gPSBQUk9HUkVTU19DUkVBVEVJ RFhfQ09NTUFORF9SRUlOREVYX0NPTkNVUlJFTlRMWTsKKwkJCXByb2dyZXNzX3ZhbHNbMV0gPSBQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfQlVJTEQ7CisJCQlwcm9ncmVzc192YWxzWzJdID0gbmV3 aWR4LT5pbmRleElkOworCQkJcHJvZ3Jlc3NfdmFsc1szXSA9IG5ld2lkeC0+YW1JZDsKKwkJCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5kZXgsIHByb2dy ZXNzX3ZhbHMpOworCQl9CiAKIAkJLyogUGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9mIG5ldyBp bmRleCAqLwogCQlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQobmV3aWR4LT50YWJsZUlkLCBuZXdp ZHgtPmluZGV4SWQpOwpAQCAtNDAzMywxNCArNDAzNywxNiBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBSZWluZGV4UGFyYW1zICpwYXJhbXMpCiAJCSAqIHRh YmxlIGludm9sdmVkLiBEb24ndCBvdmVyd3JpdGUgQ1JFQVRFIElOREVYIGNvbW1hbmQuCiAJCSAq LwogCQlpZiAoIShwYXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1JFUE9SVF9DUkVBVEVfUEFS VCkpCisJCXsKIAkJCXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21tYW5kKFBST0dSRVNTX0NPTU1B TkRfQ1JFQVRFX0lOREVYLAogCQkJCQkJCQkJICBuZXdpZHgtPnRhYmxlSWQpOwogCi0JCXByb2dy ZXNzX3ZhbHNbMF0gPSBQUk9HUkVTU19DUkVBVEVJRFhfQ09NTUFORF9SRUlOREVYX0NPTkNVUlJF TlRMWTsKLQkJcHJvZ3Jlc3NfdmFsc1sxXSA9IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJ REFURV9JRFhTQ0FOOwotCQlwcm9ncmVzc192YWxzWzJdID0gbmV3aWR4LT5pbmRleElkOwotCQlw cm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5hbUlkOwotCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRl X211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsKKwkJCXByb2dy ZXNzX3ZhbHNbMF0gPSBQUk9HUkVTU19DUkVBVEVJRFhfQ09NTUFORF9SRUlOREVYX0NPTkNVUlJF TlRMWTsKKwkJCXByb2dyZXNzX3ZhbHNbMV0gPSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFM SURBVEVfSURYU0NBTjsKKwkJCXByb2dyZXNzX3ZhbHNbMl0gPSBuZXdpZHgtPmluZGV4SWQ7CisJ CQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5hbUlkOworCQkJcGdzdGF0X3Byb2dyZXNzX3Vw ZGF0ZV9tdWx0aV9wYXJhbSg0LCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CisJCX0K IAogCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCwgc25h cHNob3QpOwogCi0tIAoyLjMwLjIKCg== --=-jPDZ0owIUYK2uuLznVbI--