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.96) (envelope-from ) id 1vvHtD-00C7Ak-0K for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Feb 2026 16:37:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vvHtA-007LUz-31 for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Feb 2026 16:37:28 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vvHtA-007LUq-1b for pgsql-hackers@lists.postgresql.org; Wed, 25 Feb 2026 16:37:28 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vvHt7-00000001FP8-2DIH for pgsql-hackers@lists.postgresql.org; Wed, 25 Feb 2026 16:37:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1772037445; bh=2wLpHlRRfMs6t4s+OA3QAZ4us8Jy58H8fmQW4BmMKbg=; h=Message-ID:Date:User-Agent:To:From:Subject:From; b=bN0HvJOMixkJ4D+odEvzDX9EaDNTBDfOmqyhhJm3Br/qPYQkR8nd201NxiZfJ1nLH 3X+zSgu8A1rQVNdm6cFRq+U0hq/MnWdc9huEd1E3NJ8FTNF6AtRhabFTdAuxB3FkC8 StvXbISvWp5unhbvYmEb9zYkt8GVDEmV+5Rn2zRMLQc3xuqC30Wu+HPY9++8jlfSWw suxlVDbExoUrYDG9S4Ty2/aThUMDMeHXZQxNG1idWLQOpfUkA78UzSkwuvpOQk5PSg vgWVWK9lk7c2vRqWyZwM8wMAOycbC/OahxKJceCS0UeOMl/ccCeUjgMj3MgwaS5LpL d9L5QBUeH+CzA== Received: from [172.30.50.186] (debian11-template.l.postgrespro.ru [192.168.2.254]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: m.melnikov@postgrespro.ru) by mail.postgrespro.ru (Postfix/465) with ESMTPSA id 07B4660DD1 for ; Wed, 25 Feb 2026 19:37:25 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------uuOmomELV4kOfSItEIxwGKky" Message-ID: Date: Wed, 25 Feb 2026 19:37:24 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: pgsql-hackers@lists.postgresql.org From: "Maksim.Melnikov" Subject: Dump statistic issue with index on expressions X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2026/02/25 15:20:00 #28223693 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------uuOmomELV4kOfSItEIxwGKky Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi hackers. There is an issue on new feature dump statistics related to index processing. In case when table has more then one index and if one of them is index on expressions we can get error like this: pg_dump --verbose --statistics-only > /dev/null ... pg_dump: reading subscriptions pg_dump: reading subscription membership of tables pg_dump: reading dependency data pg_dump: saving encoding = UTF8 pg_dump: saving "standard_conforming_strings = on" pg_dump: saving "search_path = " pg_dump: error: could not find index attname "source_system" For clarity, schema ddl attached CREATE TABLE test_table_stats (     id uuid NOT NULL,     body jsonb,     source_system character varying,     source_id character varying,     model_name character varying NOT NULL ); CREATE INDEX test_table_stats_source_system_text ON test_table_stats USING btree (upper((source_system)::text)); CREATE UNIQUE INDEX test_table_stats_json_system_un ON test_table_stats USING btree (source_system, source_id, model_name); When pg_dump sequentially process indexes in case when index is processed after index on expression, it can use index attrs names of previously processed index. I've attached simple patch to fix it. Best regards Melnikov Maksim --------------uuOmomELV4kOfSItEIxwGKky Content-Type: text/x-patch; charset=UTF-8; name="0001-Dump-statistic-issue-with-index-on-expressions.patch" Content-Disposition: attachment; filename*0="0001-Dump-statistic-issue-with-index-on-expressions.patch" Content-Transfer-Encoding: base64 RnJvbSA3YWYyYjU0ZDExNGVlMmNiNmJmNTU5MDBlM2Y5M2I2NzBiZDI5NDIyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYWtzaW0gTWVsbmlrb3YgPG0ubWVsbmlrb3ZAcG9z dGdyZXNwcm8ucnU+CkRhdGU6IFdlZCwgMjUgRmViIDIwMjYgMTU6NDM6MTcgKzAzMDAKU3Vi amVjdDogW1BBVENIXSBEdW1wIHN0YXRpc3RpYyBpc3N1ZSB3aXRoIGluZGV4IG9uIGV4cHJl c3Npb25zLgoKVGhlcmUgaXMgYW4gaXNzdWUgb24gbmV3IGZlYXR1cmUgZHVtcCBzdGF0aXN0 aWNzIHJlbGF0ZWQgdG8gaW5kZXgKcHJvY2Vzc2luZy4gSW4gY2FzZSB3aGVuIHRhYmxlIGhh cyBtb3JlIHRoZW4gb25lIGluZGV4IGFuZCBpZiBvbmUKb2YgdGhlbSBpcyBpbmRleCBvbiBl eHByZXNzaW9ucyB3ZSBjYW4gZ2V0IGR1bXAgZXJyb3I6IGNvdWxkIG5vdApmaW5kIGluZGV4 IGF0dG5hbWUgImF0dF9uYW1lIi4KCldoZW4gcGdfZHVtcCBzZXF1ZW50aWFsbHkgcHJvY2Vz cyBpbmRleGVzIGluIGNhc2Ugd2hlbiBpbmRleCBpcwpwcm9jZXNzZWQgYWZ0ZXIgaW5kZXgg b24gZXhwcmVzc2lvbiwgaXQgY2FuIHVzZSBpbmRleCBhdHRycyBuYW1lcwpvZiBwcmV2aW91 c2x5IHByb2Nlc3NlZCBpbmRleC4KLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIHwg NCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCmluZGV4IDQ1MGNlYzI4NWIzLi43YmRjMmEwMjdkOSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCkBAIC04MDcwLDggKzgwNzAsNiBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZv dXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJewogCQlPaWQJCQlp bmRyZWxpZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaiwgaV9pbmRyZWxpZCkpOwogCQlU YWJsZUluZm8gICp0YmluZm8gPSBOVUxMOwotCQljaGFyCSAgKippbmRBdHROYW1lcyA9IE5V TEw7Ci0JCWludAkJCW5pbmRBdHROYW1lcyA9IDA7CiAJCWludAkJCW51bWluZHM7CiAKIAkJ LyogQ291bnQgcm93cyBmb3IgdGhpcyB0YWJsZSAqLwpAQCAtODEwNSw2ICs4MTAzLDggQEAg Z2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVt VGFibGVzKQogCQl7CiAJCQljaGFyCQljb250eXBlOwogCQkJY2hhcgkJaW5kZXhraW5kOwor CQkJY2hhcgkgICoqaW5kQXR0TmFtZXMgPSBOVUxMOworCQkJaW50CQkJbmluZEF0dE5hbWVz ID0gMDsKIAkJCVJlbFN0YXRzSW5mbyAqcmVsc3RhdHM7CiAJCQlpbnQzMgkJcmVscGFnZXMg PSBhdG9pKFBRZ2V0dmFsdWUocmVzLCBqLCBpX3JlbHBhZ2VzKSk7CiAJCQlpbnQzMgkJcmVs YWxsdmlzaWJsZSA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIGosIGlfcmVsYWxsdmlzaWJsZSkp OwotLSAKMi40My4wCgo= --------------uuOmomELV4kOfSItEIxwGKky--