Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hCQ7V-0006yk-JV for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Apr 2019 14:47:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hCQ7T-0003du-GJ for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Apr 2019 14:47:03 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hCQ7T-0003cP-5Y for pgsql-hackers@lists.postgresql.org; Fri, 05 Apr 2019 14:47:03 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hCQ7P-0005tI-NI for pgsql-hackers@lists.postgresql.org; Fri, 05 Apr 2019 14:47:02 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id ED8A126A7B; Fri, 5 Apr 2019 10:46:57 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Fri, 05 Apr 2019 10:46:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=gMUNZ3 VPNnRjc6bDJTfl2DgqGzR54QrCXV39EA5O6MQ=; b=1yP39SRmHzyxBNkJyS5Iop 9ZSf+Ynhyv1KQhwt5dkqnm0jMGaXLFJOJ7ThEgOfI0r+TH873bsK5RoUGew5pbKw 6dHH0iX48PdawaevoBR8gkidQJudrAccggQWmbNbLeHZs30xYOFLMBQzoo1G6ncY 1UPYWinRWbRTJM6Ny96jVrM3m3oyCSuzlagFH8SgimhqGsMJrJq0lqpcFGBEkLwY pib7hyoMRPXbg8boWVzwTauVXpLpnw0yfgVG+nZESes8pMyOWq2sGC1v7PdAp4I9 8YE+34uytPAExbE00bNzlzKGJliQCpgY3B5yzK9V6eObNREfdsXkXtpWvv+TrLWQ == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduuddrtdejgdejieculddtuddrgedutddrtddtmd cutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg hnthhsucdlqddutddtmdenucfjughrpefuvfhfhfhokffffgggjggtsehmtderredtfeej necuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvg hnthhrrghuthesvdhnughquhgrughrrghnthdrtghomheqnecuffhomhgrihhnpedvnhgu qhhurggurhgrnhhtrdgtohhmnecukfhppeelfedrvdegfedrudekkedruddvvdenucfrrg hrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhhtsedvnhguqhhu rggurhgrnhhtrdgtohhmnecuvehluhhsthgvrhfuihiivgeptd X-ME-Proxy: Received: from april.pezone.net (p5df3bc7a.dip0.t-ipconnect.de [93.243.188.122]) by mail.messagingengine.com (Postfix) with ESMTPA id C6EE5100E5; Fri, 5 Apr 2019 10:46:54 -0400 (EDT) Subject: Re: monitoring CREATE INDEX [CONCURRENTLY] To: Alvaro Herrera , Rahila Syed References: <20190402183132.GA15653@alvherre.pgsql> Cc: Andres Freund , Robert Haas , Simon Riggs , Pg Hackers , David Fetter , Pavan Deolasee , Amit Langote From: Peter Eisentraut Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= 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 3jI= Organization: 2ndQuadrant Message-ID: Date: Fri, 5 Apr 2019 16:46:53 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20190402183132.GA15653@alvherre.pgsql> Content-Type: multipart/mixed; boundary="------------F8F4DA5FFB1D98A52E390656" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------F8F4DA5FFB1D98A52E390656 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit It seems we can easily extend this to also monitor REINDEX [CONCURRENTLY]. Attached is a quick patch. For the concurrently part, we currently don't have any phases defined for the index swap and drop, but maybe we can just skip that initially. What happens if we don't have those? It might be nice to have a column in the view not only for the table OID but also the index OID. That is obviously not so useful for CREATE INDEX but more useful for REINDEX. I haven't looked into how adding that would work. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------F8F4DA5FFB1D98A52E390656 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Report-progress-of-REINDEX-operations.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Report-progress-of-REINDEX-operations.patch" RnJvbSBjYWU0N2VmZTQ4NWMzYzYxMTVjMTk3MGI5YzkyMmRlZDEzNTNkMjcwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCA1IEFwciAyMDE5IDE2OjQxOjI3ICswMjAwClN1YmplY3Q6 IFtQQVRDSF0gUmVwb3J0IHByb2dyZXNzIG9mIFJFSU5ERVggb3BlcmF0aW9ucwoKVGhpcyB1 c2VzIHRoZSBzYW1lIGluZnJhc3RydWN0dXJlIHRoYXQgdGhlIENSRUFURSBJTkRFWCBwcm9n cmVzcwpyZXBvcnRpbmcgdXNlcy4KLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMg ICAgICB8ICA4ICsrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyB8 IDE5ICsrKysrKysrKysrKysrKysrLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggMmVkN2ZkYjAy MS4uNjg2YjNjODI2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzI4NiwxMiArMzI4Niwx OCBAQCByZWluZGV4X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29uc3RyYWludF9j aGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCiAJaGVhcElkID0gSW5kZXhHZXRSZWxhdGlvbihp bmRleElkLCBmYWxzZSk7CiAJaGVhcFJlbGF0aW9uID0gdGFibGVfb3BlbihoZWFwSWQsIFNo YXJlTG9jayk7CiAKKwlwZ3N0YXRfcHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQUk9HUkVTU19D T01NQU5EX0NSRUFURV9JTkRFWCwKKwkJCQkJCQkJICBoZWFwSWQpOworCiAJLyoKIAkgKiBP cGVuIHRoZSB0YXJnZXQgaW5kZXggcmVsYXRpb24gYW5kIGdldCBhbiBleGNsdXNpdmUgbG9j ayBvbiBpdCwgdG8KIAkgKiBlbnN1cmUgdGhhdCBubyBvbmUgZWxzZSBpcyB0b3VjaGluZyB0 aGlzIHBhcnRpY3VsYXIgaW5kZXguCiAJICovCiAJaVJlbCA9IGluZGV4X29wZW4oaW5kZXhJ ZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NSRUFURUlEWF9BQ0NFU1NfTUVUSE9EX09JRCwKKwkJCQkJCQkJIGlS ZWwtPnJkX3JlbC0+cmVsYW0pOworCiAJLyoKIAkgKiBUaGUgY2FzZSBvZiByZWluZGV4aW5n IHBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgaW5kZXhlcyBpcyBoYW5kbGVkCiAJICogZGlmZmVy ZW50bHkgYnkgdXBwZXIgbGF5ZXJzLCBzbyB0aGlzIGNhc2Ugc2hvdWxkbid0IGFyaXNlLgpA QCAtMzQ0Miw2ICszNDQ4LDggQEAgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBz a2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNlLAogCQkJCSBlcnJkZXRh aWxfaW50ZXJuYWwoIiVzIiwKIAkJCQkJCQkJCXBnX3J1c2FnZV9zaG93KCZydTApKSkpOwog CisJcGdzdGF0X3Byb2dyZXNzX2VuZF9jb21tYW5kKCk7CisKIAkvKiBDbG9zZSByZWxzLCBi dXQga2VlcCBsb2NrcyAqLwogCWluZGV4X2Nsb3NlKGlSZWwsIE5vTG9jayk7CiAJdGFibGVf Y2xvc2UoaGVhcFJlbGF0aW9uLCBOb0xvY2spOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwppbmRleCAzNDhkNTQzMjk3Li43ZWZiNGM5ZTE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYwpAQCAtMjg3Myw2ICsyODczLDExIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShPaWQgcmVsYXRpb25PaWQsIGludCBvcHRpb25zKQogCQloZWFwUmVsID0gdGFibGVf b3BlbihpbmRleFJlbC0+cmRfaW5kZXgtPmluZHJlbGlkLAogCQkJCQkJCSBTaGFyZVVwZGF0 ZUV4Y2x1c2l2ZUxvY2spOwogCisJCXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21tYW5kKFBS T0dSRVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLAorCQkJCQkJCQkJICBSZWxhdGlvbkdldFJl bGlkKGhlYXBSZWwpKTsKKwkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVT U19DUkVBVEVJRFhfQUNDRVNTX01FVEhPRF9PSUQsCisJCQkJCQkJCQkgaW5kZXhSZWwtPnJk X3JlbC0+cmVsYW0pOworCiAJCS8qIENob29zZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBuYW1l IGZvciB0aGUgbmV3IGluZGV4ICovCiAJCWNvbmN1cnJlbnROYW1lID0gQ2hvb3NlUmVsYXRp b25OYW1lKGdldF9yZWxfbmFtZShpbmRleElkKSwKIAkJCQkJCQkJCQkJTlVMTCwKQEAgLTI5 NjcsNyArMjk3Miw5IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShPaWQgcmVsYXRp b25PaWQsIGludCBvcHRpb25zKQogCSAqIERlZmluZUluZGV4KCkgZm9yIG1vcmUgZGV0YWls cy4KIAkgKi8KIAotCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9j aywgZmFsc2UpOworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRf MSk7CisJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVl KTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAogCWZvcmJvdGgobGMsIGluZGV4 SWRzLCBsYzIsIG5ld0luZGV4SWRzKQpAQCAtMzAwOSw3ICszMDE2LDkgQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgaW50IG9wdGlvbnMpCiAJICog Zm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAotCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9j a1RhZ3MsIFNoYXJlTG9jaywgZmFsc2UpOworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFy YW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1dBSVRfMik7CisJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywg U2hhcmVMb2NrLCB0cnVlKTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAogCWZv cmVhY2gobGMsIG5ld0luZGV4SWRzKQpAQCAtMzA1Nyw2ICszMDY2LDggQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgaW50IG9wdGlvbnMpCiAJCSAq IGJlZm9yZSB0aGUgcmVmZXJlbmNlIHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQg b3V0IGFueQogCQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBz aG90cy4KIAkJICovCisJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9X QUlUXzMpOwogCQlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCBmYWxzZSk7CiAK IAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC0zMTI4LDYgKzMxMzksNyBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBpbnQgb3B0aW9u cykKIAkgKiBpbmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAorCS8vIEZJ WE1FOiBwcm9ncmVzcyB1cGRhdGUgaGVyZQogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9j a1RhZ3MsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIGZhbHNlKTsKIAogCWZvcmVhY2gobGMsIGlu ZGV4SWRzKQpAQCAtMzE1MCw2ICszMTYyLDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KE9pZCByZWxhdGlvbk9pZCwgaW50IG9wdGlvbnMpCiAJICogRHJvcCB0aGUgb2xkIGlu ZGV4ZXMuCiAJICovCiAKKwkvLyBGSVhNRTogcHJvZ3Jlc3MgdXBkYXRlIGhlcmUKIAlXYWl0 Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCBmYWxz ZSk7CiAKIAlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK QEAgLTMyMjUsNiArMzIzOCw4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShPaWQg cmVsYXRpb25PaWQsIGludCBvcHRpb25zKQogCiAJTWVtb3J5Q29udGV4dERlbGV0ZShwcml2 YXRlX2NvbnRleHQpOwogCisJcGdzdGF0X3Byb2dyZXNzX2VuZF9jb21tYW5kKCk7CisKIAly ZXR1cm4gdHJ1ZTsKIH0KIAotLSAKMi4yMS4wCgo= --------------F8F4DA5FFB1D98A52E390656--