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 1p3v4D-0003IP-02 for pgsql-hackers@arkaria.postgresql.org; Sat, 10 Dec 2022 08:18:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p3v4B-0004TJ-NN for pgsql-hackers@arkaria.postgresql.org; Sat, 10 Dec 2022 08:18:39 +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 1p3v4B-0004T9-Ap for pgsql-hackers@lists.postgresql.org; Sat, 10 Dec 2022 08:18:39 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p3v48-0007sE-Ru for pgsql-hackers@lists.postgresql.org; Sat, 10 Dec 2022 08:18:38 +0000 Received: by mail-ej1-x635.google.com with SMTP id t17so16666191eju.1 for ; Sat, 10 Dec 2022 00:18:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:date:to:from:subject:message-id:from:to:cc :subject:date:message-id:reply-to; bh=zZv9Zr4oQPAeO+A4HpqfctdNW3T6F2fL84UESdfgctI=; b=acfFoMRcq3wkNSsd8y15jfqM8gYPFFlacJg+O/nDbbNnTN0ZdNTn/Biik8gf2hQaFt cUT6dldUzEtQJeLSdXB8cD2nuptl+nxnxbQUOmToPCkjcIW9JGVr2esRqDMdECHsCgXs cvQc0PPdRV/TCvR4ZRxClJ9o3BIfXOC4mcN91w+TfY9yBwyyFuw8x/b3gN5D5pj94adm zy3BBbaVjNEgwCE/c3+DT4Df2cXq81I5cxzznI68d6/4gpJywKs2bHi/JrNN6IcFG5WN JPlqUfyr1dBm9HggZiSV0ihd63BYkhBQulis6DuPayTpjEDKMg7OLxPnHCkZX2ntJtWP fc+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:date:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zZv9Zr4oQPAeO+A4HpqfctdNW3T6F2fL84UESdfgctI=; b=DFC0yhzzsYE/L71M3QJbfqlcOjeruSspIhW1CWwMZhOckq/UCicNznQGqW6GCLLSmO 2EqMns6MT6C8B56AAP28WoKl/fe4Lr8bek+yT1uBScL/6e+1vTU/mhg9DUiWqFyjJtCr PnQqt3li+9jBCXW/PUi6AnFHMI/vn+y3+DsYYCWvRBKg5OBYWJQuhbVWoIvsVjD/K3ff MjU9A6u6GeV/S5zDHSIYcYcl7yjoSq6V9cInUscH2tRBc8SRjPFhn69N6u1WkSB9nBwh BB/ieiMyMYqlM4EnSiO5ik5MGhSa+G/i37wOvkVKG4Rg4ZrqwKsyhrjSrEkLdgkCVLYO olTg== X-Gm-Message-State: ANoB5pmyq2sDjChpqGAFNeIUbJjfyoY3V/wx2SdobnSm35H1kVap9MqK F8hrfOODv3Dt80OeIgHxm5H9Otx2zqVUlQ== X-Google-Smtp-Source: AA0mqf7SQ2MmScbraYE0JtcsYEXaZocejsm2/OT5B6O1NDBADTYdIZpJSeEeKcUl+7MmvDaEFNXJNg== X-Received: by 2002:a17:906:c018:b0:78d:f454:ba19 with SMTP id e24-20020a170906c01800b0078df454ba19mr8432907ejz.24.1670660314815; Sat, 10 Dec 2022 00:18:34 -0800 (PST) Received: from qoops-lap.home ([46.70.15.17]) by smtp.gmail.com with ESMTPSA id x22-20020a170906711600b007be3aa82543sm779093ejj.35.2022.12.10.00.18.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Dec 2022 00:18:34 -0800 (PST) Message-ID: Subject: Progress report of CREATE INDEX for nested partitioned tables From: Ilya Gladyshev To: pgsql-hackers@lists.postgresql.org Date: Sat, 10 Dec 2022 12:18:32 +0400 Content-Type: multipart/mixed; boundary="=-JOwAY565k3uxsdaS0EJl" 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 --=-JOwAY565k3uxsdaS0EJl Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Hi, I have noticed that progress reporting for CREATE INDEX of partitioned tables seems to be working poorly for nested partitioned tables. In particular, it overwrites total and done partitions count when it recurses down to child partitioned tables and it only reports top-level partitions. So it's not hard to see something like this during CREATE INDEX now: postgres=# select partitions_total, partitions_done from pg_stat_progress_create_index ; partitions_total | partitions_done ------------------+----------------- 1 | 2 (1 row) I changed current behaviour to report the total number of partitions in the inheritance tree and fixed recursion in the attached patch. I used a static variable to keep the counter to avoid ABI breakage of DefineIndex, so that we could backpatch this to previous versions. Thanks, Ilya Gladyshev --=-JOwAY565k3uxsdaS0EJl Content-Disposition: attachment; filename="0001-report-top-parent-progress-for-CREATE-INDEX.patch" Content-Type: text/x-patch; name="0001-report-top-parent-progress-for-CREATE-INDEX.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAzNDJjYWEzZDRjZTI3M2IxNGE2OTk4YzIwYzMyYjg2MmQyZDRjODkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbHlhIEdsYWR5c2hldiA8aWx5YS52LmdsYWR5c2hldkBnbWFp bC5jb20+CkRhdGU6IEZyaSwgOSBEZWMgMjAyMiAyMzoxNzoyOSArMDQwMApTdWJqZWN0OiBbUEFU Q0hdIHJlcG9ydCB0b3AgcGFyZW50IHByb2dyZXNzIGZvciBDUkVBVEUgSU5ERVgKCi0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgfCAzNiArKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBiNWI4NjBjM2FiLi44MDU1N2RhZDhk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTI5LDYgKzEyOSwxMiBAQCB0eXBlZGVm IHN0cnVjdCBSZWluZGV4RXJyb3JJbmZvCiAJY2hhcgkJcmVsa2luZDsKIH0gUmVpbmRleEVycm9y SW5mbzsKIAorLyoKKyAqIFVzZWQgdG8gcmVwb3J0IHRoZSBudW1iZXIgb2YgcGFydGl0aW9ucywK KyAqIHRoYXQgd2VyZSBwcm9jZXNzZWQgZHVyaW5nIGluZGV4IGNyZWF0aW9uLgorICovCitzdGF0 aWMgaW50IGNyZWF0ZV9pbmRleF9wYXJ0c19kb25lOworCiAvKgogICogQ2hlY2tJbmRleENvbXBh dGlibGUKICAqCQlEZXRlcm1pbmUgd2hldGhlciBhbiBleGlzdGluZyBpbmRleCBkZWZpbml0aW9u IGlzIGNvbXBhdGlibGUgd2l0aCBhCkBAIC0xMjE4LDggKzEyMjQsMTggQEAgRGVmaW5lSW5kZXgo T2lkIHJlbGF0aW9uSWQsCiAJCQlSZWxhdGlvbglwYXJlbnRJbmRleDsKIAkJCVR1cGxlRGVzYwlw YXJlbnREZXNjOwogCi0JCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NS RUFURUlEWF9QQVJUSVRJT05TX1RPVEFMLAotCQkJCQkJCQkJCSBucGFydHMpOworCQkJaWYgKCFP aWRJc1ZhbGlkKHBhcmVudEluZGV4SWQpKQorCQkJeworCQkJCUxpc3QgKmluaHM7CisKKwkJCQkv KiBSZXNldCBjb3VudGVyIG9mIGRvbmUgcGFydGl0aW9ucyB3aGVuIHByb2Nlc3Npbmcgcm9vdCBp bmRleCAqLworCQkJCWNyZWF0ZV9pbmRleF9wYXJ0c19kb25lID0gMDsKKwkJCQlpbmhzID0gZmlu ZF9hbGxfaW5oZXJpdG9ycyhyZWxhdGlvbklkLCBOb0xvY2ssIE5VTEwpOworCQkJCS8qIGluaGVy aXRhbmNlIHRyZWUgc2l6ZSB3aXRob3V0IHJvb3QgaXRzZWxmICovCisJCQkJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEFSVElUSU9OU19UT1RBTCwKKwkJ CQkJCQkJCQkJIGxpc3RfbGVuZ3RoKGluaHMpIC0gMSk7CisJCQkJbGlzdF9mcmVlKGluaHMpOwor CQkJfQogCiAJCQkvKiBNYWtlIGEgbG9jYWwgY29weSBvZiBwYXJ0ZGVzYy0+b2lkc1tdLCBqdXN0 IGZvciBzYWZldHkgKi8KIAkJCW1lbWNweShwYXJ0X29pZHMsIHBhcnRkZXNjLT5vaWRzLCBzaXpl b2YoT2lkKSAqIG5wYXJ0cyk7CkBAIC0xNDMxLDggKzE0NDcsNiBAQCBEZWZpbmVJbmRleChPaWQg cmVsYXRpb25JZCwKIAkJCQkJCQkJCQkgICBjaGlsZF9zYXZlX3NlY19jb250ZXh0KTsKIAkJCQl9 CiAKLQkJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9Q QVJUSVRJT05TX0RPTkUsCi0JCQkJCQkJCQkJCSBpICsgMSk7CiAJCQkJZnJlZV9hdHRybWFwKGF0 dG1hcCk7CiAJCQl9CiAKQEAgLTE0NjUsMTMgKzE0NzksMTcgQEAgRGVmaW5lSW5kZXgoT2lkIHJl bGF0aW9uSWQsCiAKIAkJLyoKIAkJICogSW5kZXhlcyBvbiBwYXJ0aXRpb25lZCB0YWJsZXMgYXJl IG5vdCB0aGVtc2VsdmVzIGJ1aWx0LCBzbyB3ZSdyZQotCQkgKiBkb25lIGhlcmUuCisJCSAqIGRv bmUgaGVyZS4gSWYgaXQgaXMgYSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJsZSwgaW5jcmVtZW50IGRv bmUgcGFydHMgY291bnRlci4KIAkJICovCiAJCUF0RU9YYWN0X0dVQyhmYWxzZSwgcm9vdF9zYXZl X25lc3RsZXZlbCk7CiAJCVNldFVzZXJJZEFuZFNlY0NvbnRleHQocm9vdF9zYXZlX3VzZXJpZCwg cm9vdF9zYXZlX3NlY19jb250ZXh0KTsKIAkJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCQlp ZiAoIU9pZElzVmFsaWQocGFyZW50SW5kZXhJZCkpCiAJCQlwZ3N0YXRfcHJvZ3Jlc3NfZW5kX2Nv bW1hbmQoKTsKKwkJZWxzZQorCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVT U19DUkVBVEVJRFhfUEFSVElUSU9OU19ET05FLAorCQkJCQkJCQkJCSArK2NyZWF0ZV9pbmRleF9w YXJ0c19kb25lKTsKKwogCQlyZXR1cm4gYWRkcmVzczsKIAl9CiAKQEAgLTE0ODMsOSArMTUwMSwx NSBAQCBEZWZpbmVJbmRleChPaWQgcmVsYXRpb25JZCwKIAkJLyogQ2xvc2UgdGhlIGhlYXAgYW5k IHdlJ3JlIGRvbmUsIGluIHRoZSBub24tY29uY3VycmVudCBjYXNlICovCiAJCXRhYmxlX2Nsb3Nl KHJlbCwgTm9Mb2NrKTsKIAotCQkvKiBJZiB0aGlzIGlzIHRoZSB0b3AtbGV2ZWwgaW5kZXgsIHdl J3JlIGRvbmUuICovCisJCS8qCisJCSAqIElmIHRoaXMgaXMgdGhlIHRvcC1sZXZlbCBpbmRleCwg d2UncmUgZG9uZSwgb3RoZXJ3aXNlLCBpbmNyZW1lbnQKKwkJICogZG9uZSBwYXJ0aXRpb24gY291 bnRlci4KKwkJICovCiAJCWlmICghT2lkSXNWYWxpZChwYXJlbnRJbmRleElkKSkKIAkJCXBnc3Rh dF9wcm9ncmVzc19lbmRfY29tbWFuZCgpOworCQllbHNlCisJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBk YXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJT05TX0RPTkUsCisJCQkJCQkJCQkJ ICsrY3JlYXRlX2luZGV4X3BhcnRzX2RvbmUpOwogCiAJCXJldHVybiBhZGRyZXNzOwogCX0KLS0g CjIuMzAuMgoK --=-JOwAY565k3uxsdaS0EJl--