Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fYH6M-000667-6M for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Jun 2018 20:31:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fYH6J-00032f-Gw for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Jun 2018 20:31:39 +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_SHA384:256) (Exim 4.89) (envelope-from ) id 1fYH6J-00032Y-A3 for pgsql-hackers@lists.postgresql.org; Wed, 27 Jun 2018 20:31:39 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fYH6F-0004yP-J0 for pgsql-hackers@postgresql.org; Wed, 27 Jun 2018 20:31:38 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 00D6020F01 for ; Wed, 27 Jun 2018 16:31:33 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Wed, 27 Jun 2018 16:31:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; bh=jeE2+tD50lT7gAtHyJAq5880VC5zkF8dWdu1WnDvmkE=; b=jTJGoT4w BHvy8NCRTeF74KeH4Fyn3W6PkdlJsQ4d5SQRt/poG4GQnBrJGNDX+K6Lwi6ljAD1 /pF5ePHr2YaaVdbVBawuhy3JrL3yEgPOIdgNp9ZF455Eu8o7bIj6/p6jFrprgt7u QaWqIHRVnKX8KJDjJmG5W8sYKwjRHwhaTT/TsFTOW8ZFKo0H6aJSZ/wtBcU9e+Cp bhXoGWxefV3nQA79g5X96okowQ94xH1+R1xYyZkFqQb0NfRqvySx9FLUTX2Uf+L8 nSMueoOcTxg5M81NaelVDOjGu1HvfZuk99e/FW36PscxQUbv27WeCsFebhXF60a/ DrcFEnX7qqoFrg== X-ME-Proxy: X-ME-Sender: Received: from april.fritz.box (p57b2335b.dip0.t-ipconnect.de [87.178.51.91]) by mail.messagingengine.com (Postfix) with ESMTPA id 68C3010262 for ; Wed, 27 Jun 2018 16:31:32 -0400 (EDT) From: Peter Eisentraut Subject: ALTER TABLE on system catalogs Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= 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 3jI= To: pgsql-hackers Organization: 2ndQuadrant Message-ID: Date: Wed, 27 Jun 2018 22:31:30 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------876B968DBC4A301144FB6C0C" 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. --------------876B968DBC4A301144FB6C0C Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit ALTER TABLE on system catalogs is occasionally useful, for example ALTER TABLE pg_attribute SET (autovacuum_vacuum_scale_factor=0); However, this doesn't actually work. The above command produces ERROR: AccessExclusiveLock required to add toast table. If it's a shared catalog, it will produce ERROR: shared tables cannot be toasted after initdb In other cases it will work but then silently add a TOAST table to a catalog, which I think we don't want. The problem is that for (almost) any ALTER TABLE command, it afterwards checks if the just-altered table now needs a TOAST table and tries to add it if so, which will either fail or add a TOAST table that we don't want. I propose that we instead silently ignore attempts to add TOAST tables to shared and system catalogs after bootstrapping. This fixes the above issues. I have attached a patch for this, and also a test that enshrines which system catalogs are supposed to have TOAST tables. As an alternative, I tried to modify the ALTER TABLE code to avoid the try-to-add-TOAST-table path depending on what ALTER TABLE actions were done, but that seemed incredibly more complicated and harder to maintain in the long run. (You still need allow_system_table_mods=on for all of this. Perhaps that's also worth revisiting, but it's a separate issue.) -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------876B968DBC4A301144FB6C0C Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Add-test-for-system-catalog-TOAST-tables.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Add-test-for-system-catalog-TOAST-tables.patch" RnJvbSBmYTc1ZjY1NzNhMzdmNDA2NWYwYmExNmIxZWY4YTU1ZThiOTMzYWY2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlcl9lQGdteC5u ZXQ+CkRhdGU6IEZyaSwgMTggTWF5IDIwMTggMTk6MDc6NTMgLTA0MDAKU3ViamVjdDogW1BB VENIIDEvNV0gQWRkIHRlc3QgZm9yIHN5c3RlbSBjYXRhbG9nIFRPQVNUIHRhYmxlcwoKVGhp cyByZWNvcmRzIHdoaWNoIHN5c3RlbSBjYXRhbG9ncyBhcmUgc3VwcG9zZWQgdG8gaGF2ZSBh IFRPQVNUIHRhYmxlLgotLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19zYW5p dHkub3V0IHwgMjIgKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvbWlzY19zYW5pdHkuc3FsICAgICAgfCAxMCArKysrKysrKysrCiAyIGZpbGVzIGNoYW5n ZWQsIDMyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL21pc2Nfc2FuaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlz Y19zYW5pdHkub3V0CmluZGV4IDVhYWFlNmMzOWYuLmExZWE0ODVhMTUgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19zYW5pdHkub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19zYW5pdHkub3V0CkBAIC03NiwzICs3NiwyNSBA QCBOT1RJQ0U6ICBwZ19kYXRhYmFzZSBjb250YWlucyB1bnBpbm5lZCBpbml0ZGItY3JlYXRl ZCBvYmplY3QocykKIE5PVElDRTogIHBnX2V4dGVuc2lvbiBjb250YWlucyB1bnBpbm5lZCBp bml0ZGItY3JlYXRlZCBvYmplY3QocykKIE5PVElDRTogIHBnX3Jld3JpdGUgY29udGFpbnMg dW5waW5uZWQgaW5pdGRiLWNyZWF0ZWQgb2JqZWN0KHMpCiBOT1RJQ0U6ICBwZ190YWJsZXNw YWNlIGNvbnRhaW5zIHVucGlubmVkIGluaXRkYi1jcmVhdGVkIG9iamVjdChzKQorLS0gKioq KioqKioqKioqKioqKiBnZW5lcmFsICoqKioqKioqKioqKioqKioKKy0tIGNoZWNrIHdoaWNo IHN5c3RlbSBjYXRhbG9ncyBoYXZlIHRvYXN0IHRhYmxlcworU0VMRUNUIHJlbG5hbWUKK0ZS T00gcGdfY2xhc3MKK1dIRVJFIHJlbG5hbWVzcGFjZSA9ICdwZ19jYXRhbG9nJzo6cmVnbmFt ZXNwYWNlIEFORCByZWx0b2FzdHJlbGlkIDw+IDAKK09SREVSIEJZIDE7CisgICAgICByZWxu YW1lICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwZ19hdHRyZGVmCisgcGdfY29u c3RyYWludAorIHBnX2RiX3JvbGVfc2V0dGluZworIHBnX2Rlc2NyaXB0aW9uCisgcGdfcHJv YworIHBnX3Jld3JpdGUKKyBwZ19zZWNsYWJlbAorIHBnX3NoZGVzY3JpcHRpb24KKyBwZ19z aHNlY2xhYmVsCisgcGdfc3RhdGlzdGljCisgcGdfc3RhdGlzdGljX2V4dAorIHBnX3RyaWdn ZXIKKygxMiByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNj X3Nhbml0eS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX3Nhbml0eS5zcWwKaW5k ZXggYjkyMTExN2ZhNS4uYjlhZGNiZTRlMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvbWlzY19zYW5pdHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2Nf c2FuaXR5LnNxbApAQCAtNzIsMyArNzIsMTMgQEAKICAgZW5kIGlmOwogZW5kIGxvb3A7CiBl bmQkJDsKKworCistLSAqKioqKioqKioqKioqKioqIGdlbmVyYWwgKioqKioqKioqKioqKioq KgorCistLSBjaGVjayB3aGljaCBzeXN0ZW0gY2F0YWxvZ3MgaGF2ZSB0b2FzdCB0YWJsZXMK KworU0VMRUNUIHJlbG5hbWUKK0ZST00gcGdfY2xhc3MKK1dIRVJFIHJlbG5hbWVzcGFjZSA9 ICdwZ19jYXRhbG9nJzo6cmVnbmFtZXNwYWNlIEFORCByZWx0b2FzdHJlbGlkIDw+IDAKK09S REVSIEJZIDE7CgpiYXNlLWNvbW1pdDogMmU2MWM1MDc4NWEwZGNhNmVkMzBhMWE1NTIyNDU3 YjE4YmJiNTQ5OAotLSAKMi4xOC4wCgo= --------------876B968DBC4A301144FB6C0C Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0002-Ignore-attempts-to-add-TOAST-table-to-shared-or-cata.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0002-Ignore-attempts-to-add-TOAST-table-to-shared-or-cata.pa"; filename*1="tch" RnJvbSAwMjlmYTdlOTdjODIxOWYxM2IxMmViZDUwMjZiZWI1ZmZkNWJhNjg0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlcl9lQGdteC5u ZXQ+CkRhdGU6IEZyaSwgMTggTWF5IDIwMTggMTc6MDU6MjcgLTA0MDAKU3ViamVjdDogW1BB VENIIDIvNV0gSWdub3JlIGF0dGVtcHRzIHRvIGFkZCBUT0FTVCB0YWJsZSB0byBzaGFyZWQg b3IgY2F0YWxvZwogdGFibGVzCgpSdW5uaW5nIEFMVEVSIFRBQkxFIG9uIGFueSB0YWJsZSB3 aWxsIGNoZWNrIGlmIGEgVE9BU1QgdGFibGUgbmVlZHMgdG8gYmUKYWRkZWQuICBPbiBzaGFy ZWQgdGFibGVzLCB0aGlzIHdvdWxkIHByZXZpb3VzbHkgZmFpbCwgdGh1cyBlZmZlY3RpdmVs eQpkaXNhYmxpbmcgQUxURVIgVEFCTEUgZm9yIHRob3NlIHRhYmxlcy4gIE9uIChub24tc2hh cmVkKSBzeXN0ZW0KY2F0YWxvZ3MsIG9uIHRoZSBvdGhlciBoYW5kLCBpdCB3b3VsZCBhZGQg YSBUT0FTVCB0YWJsZSwgZXZlbiB0aG91Z2ggd2UKZG9uJ3QgcmVhbGx5IHdhbnQgVE9BU1Qg dGFibGVzIG9uIHNvbWUgc3lzdGVtIGNhdGFsb2dzLiAgSW4gc29tZSBjYXNlcywKaXQgd291 bGQgYWxzbyBmYWlsIHdpdGggYW4gZXJyb3IgIkFjY2Vzc0V4Y2x1c2l2ZUxvY2sgcmVxdWly ZWQgdG8gYWRkCnRvYXN0IHRhYmxlLiIsIGRlcGVuZGluZyBvbiB3aGF0IGxvY2tzIHRoZSBB TFRFUiBUQUJMRSBhY3Rpb25zIGhhZAphbHJlYWR5IHRha2VuLgoKU28gaW5zdGVhZCwganVz dCBpZ25vcmUgYXR0ZW1wdHMgdG8gYWRkIFRPQVNUIHRhYmxlcyB0byBzdWNoIHRhYmxlcywK b3V0c2lkZSBvZiBib290c3RyYXAgbW9kZSwgcHJldGVuZGluZyB0aGV5IGRvbid0IG5lZWQg b25lLgoKVGhpcyBhbGxvd3MgcnVubmluZyBBTFRFUiBUQUJMRSBvbiBzdWNoIHRhYmxlcyB3 aXRob3V0IG1lc3NpbmcgdXAgdGhlClRPQVNUIHNpdHVhdGlvbi4gIChBbGwgdGhpcyBzdGls bCByZXF1aXJlcyBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcywKd2hpY2ggaXMgaW5kZXBlbmRl bnQgb2YgdGhpcy4pCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIHwgOCAr KysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggM2JhYWEwODIzOC4uOTdhMjE1ZDJj MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1 ZGUgImFjY2Vzcy90dXB0b2FzdGVyLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNp bmNsdWRlICJjYXRhbG9nL2JpbmFyeV91cGdyYWRlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9j YXRhbG9nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9kZXBlbmRlbmN5LmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9oZWFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgpAQCAtMTUzLDkg KzE1NCwxMCBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRpb24gcmVsLCBPaWQgdG9hc3RP aWQsIE9pZCB0b2FzdEluZGV4T2lkLAogCSAqLwogCXNoYXJlZF9yZWxhdGlvbiA9IHJlbC0+ cmRfcmVsLT5yZWxpc3NoYXJlZDsKIAlpZiAoc2hhcmVkX3JlbGF0aW9uICYmICFJc0Jvb3Rz dHJhcFByb2Nlc3NpbmdNb2RlKCkpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCi0JCQkJIGVycm1z Zygic2hhcmVkIHRhYmxlcyBjYW5ub3QgYmUgdG9hc3RlZCBhZnRlciBpbml0ZGIiKSkpOwor CQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoSXNDYXRhbG9nUmVsYXRpb24ocmVsKSAmJiAhSXNC b290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKQorCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBJdCdz IG1hcHBlZCBpZiBhbmQgb25seSBpZiBpdHMgcGFyZW50IGlzLCB0b28gKi8KIAltYXBwZWRf cmVsYXRpb24gPSBSZWxhdGlvbklzTWFwcGVkKHJlbCk7Ci0tIAoyLjE4LjAKCg== --------------876B968DBC4A301144FB6C0C--