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.94.2) (envelope-from ) id 1sQxxC-00CZmZ-NF for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jul 2024 23:39:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sQxxB-00Aflk-Cn for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jul 2024 23:39:29 +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.94.2) (envelope-from ) id 1sQxxA-00Aflc-Ua for pgsql-hackers@lists.postgresql.org; Mon, 08 Jul 2024 23:39:29 +0000 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sQxx8-0017r7-4e for pgsql-hackers@postgresql.org; Mon, 08 Jul 2024 23:39:28 +0000 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-1faad2f1967so37748305ad.0 for ; Mon, 08 Jul 2024 16:39:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1720481964; x=1721086764; darn=postgresql.org; 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=zSf+JqCx/WXgaJM/8wcpLuOFIbtXiacFHP6jygLAaCA=; b=zlgHMtHfuYcFYRlpOfqAO9z31CDh7cPUdR9g9lEqjDv/6Voo4Yr6XfmH8OXPGWOcLO y8PB+Z4DZWcOowsstvYyo7BHwkqXAxgK5Hu86RaTwoVZwc2zonZxhzZQmPaxUH0s9EIk iEQcwnQFNNIZmN4t2gG0Bgz9GPBoqkLD0S4oKix+Hvcs6LRlL9VogxOPc29Vr3CGLInJ WnlZbzafDz++TRzH5uU4FauAxmuy/6QLCwuNjUfM7mkowe3NaCb2w4Sq5QxTRBB0xkm6 OwGEYgkQz+Z2ra2sWcG8hz40EdU4ihMKuoXxMbqeVnwkKx0MTncKtF0eG5bgzZYLB1A/ EFLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720481964; x=1721086764; 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=zSf+JqCx/WXgaJM/8wcpLuOFIbtXiacFHP6jygLAaCA=; b=le/hvNtHSJv1RRds+trLMUKIyLaPQBzwQe83Xf7XALNCIIfLYZnBMPOmmaA+B/aXAV Cu7Bns+VbDGq7MhjLMxxvvF/iT1/Hn187kcnX0i2aDABbIeDPDyG+OZEd+Ss+bP/7d++ UBZWRYW2ZllMttDvfxHwVtKAQxRdOqk1InNHGKo5t9bqxK02K3STCUcXA/jVff1XX0Zf LR9p0sPfIPXCOr7fq+7K4Q3rEQgsq7ntEEsvK1gStWffH1/uy9W2nx1oUjBcYlpMwYQH cwLxW0XZZ4VfCeFO6iXAixTfOOAxLVCPe5BaBUSXN7+VQFsZPSCJbIvXbZXFQM1+UQC4 qCJg== X-Forwarded-Encrypted: i=1; AJvYcCU5xFl9GMWaHfsvGyi+Bu2L0OxATREIvQy3FjLJ44b0NZmqh3gEnemrIPdiAC/AcQ0AXC7xcFraDM1dWMm6L7MhHMOuwzntvcsu7y4a X-Gm-Message-State: AOJu0Yw6kMmRbThIkdiMfsv6LUcHd1Va2dTRlUG692EoR8Yr/CKL5PcL SQvCxxckIoRCJEgkN3oGWr5sZeugzCeD/PDyM2EqZEHgSEB55gi0TAbq8qFfzw== X-Google-Smtp-Source: AGHT+IEJFmNBkxDC9ds/j7sJfSyL1AC3q2XkGnH8d6juzPI84ULynFMNDaiJJ1/61q4HltCHEQRVTQ== X-Received: by 2002:a17:902:ea06:b0:1fa:fb88:3a0a with SMTP id d9443c01a7336-1fbb807264fmr9230545ad.30.1720481963821; Mon, 08 Jul 2024 16:39:23 -0700 (PDT) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fbb6ac0ea0sm4037435ad.188.2024.07.08.16.39.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jul 2024 16:39:23 -0700 (PDT) Message-ID: Subject: Re: Faster "SET search_path" From: Jeff Davis To: Noah Misch Cc: Nathan Bossart , Isaac Morland , pgsql-hackers@postgresql.org Date: Mon, 08 Jul 2024 16:39:21 -0700 In-Reply-To: <20240630223047.1f.nmisch@google.com> References: <20230802050720.GB866741@nathanxps13> <20230807223908.GB1284531@nathanxps13> <3b2d57ead15798adcbf6a53a15e35cdbadb2c147.camel@j-davis.com> <5bb4d9c21cc918e5d05021bf0d5e0e7d34a0377c.camel@j-davis.com> <695668acc40b937258985669f3d55b94cce82c3c.camel@j-davis.com> <20240630223047.1f.nmisch@google.com> Content-Type: multipart/mixed; boundary="=-EJMSLD8d+kZg4iPI9Bt2" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-EJMSLD8d+kZg4iPI9Bt2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, 2024-06-30 at 15:30 -0700, Noah Misch wrote: > You're caching the result of object_aclcheck(NamespaceRelationId, > ...), so > pg_auth_members changes Thank you for the report. Question: to check for changes to pg_auth_members, it seems like either AUTHMEMROLEMEM or AUTHMEMMEMROLE work, and to use both would be redundant. Am I missing something, or should I just pick one arbitrarily (or by some convention)? > and pg_database changes also need to invalidate this > cache.=C2=A0 (pg_database affects the ACL_CREATE_TEMP case in > pg_namespace_aclmask_ext() I am having trouble finding an actual problem with ACL_CREATE_TEMP. search_path ACL checks are normally bypassed for the temp namespace, so it can only happen when the actual temp namespace name (e.g. pg_temp_NNN) is explicitly included. In that case, the mask is ACL_USAGE, so the two branches in pg_namespace_aclmask_ext() are equivalent, right? This question is not terribly important for the fix, because invalidating for each pg_database change is still necessary as you point out in here: > and affects ROLE_PG_DATABASE_OWNER membership.) Another good catch, thank you. Patch attached. Contains a bit of cleanup and is intended for 17+18. Regards, Jeff Davis --=-EJMSLD8d+kZg4iPI9Bt2 Content-Disposition: attachment; filename="v1-0001-Fix-missing-invalidations-for-search_path-cache.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="v1-0001-Fix-missing-invalidations-for-search_path-cache.patch"; charset="UTF-8" RnJvbSAxYjI0ZDA4MzAyZTI2ODM3MGViYjE0ZTczMmY0ZDVmMWYxNDA3NzI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDggSnVsIDIwMjQgMTU6NTI6NTAgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxXSBGaXggbWlz c2luZyBpbnZhbGlkYXRpb25zIGZvciBzZWFyY2hfcGF0aCBjYWNoZS4KClJlcG9ydGVkLWJ5OiBO b2FoIE1pc2NoCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMjAyNDA2MzAyMjMwNDcu MWYubm1pc2NoQGdvb2dsZS5jb20KQmFja3BhdGNoLXRocm91Z2g6IDE3Ci0tLQogc3JjL2JhY2tl bmQvY2F0YWxvZy9uYW1lc3BhY2UuYyB8IDI4ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL25hbWVzcGFjZS5jCmluZGV4IGEyNTEwY2Y4MGM2Li40M2I3MDc2OTlkNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL25hbWVzcGFjZS5jCkBAIC0yMzAsNyArMjMwLDcgQEAgc3RhdGljIHZvaWQgQWNjZXNzVGVt cFRhYmxlTmFtZXNwYWNlKGJvb2wgZm9yY2UpOwogc3RhdGljIHZvaWQgSW5pdFRlbXBUYWJsZU5h bWVzcGFjZSh2b2lkKTsKIHN0YXRpYyB2b2lkIFJlbW92ZVRlbXBSZWxhdGlvbnMoT2lkIHRlbXBO YW1lc3BhY2VJZCk7CiBzdGF0aWMgdm9pZCBSZW1vdmVUZW1wUmVsYXRpb25zQ2FsbGJhY2soaW50 IGNvZGUsIERhdHVtIGFyZyk7Ci1zdGF0aWMgdm9pZCBOYW1lc3BhY2VDYWxsYmFjayhEYXR1bSBh cmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKTsKK3N0YXRpYyB2b2lkIEludmFsaWRh dGlvbkNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOwog c3RhdGljIGJvb2wgTWF0Y2hOYW1lZENhbGwoSGVhcFR1cGxlIHByb2N0dXAsIGludCBuYXJncywg TGlzdCAqYXJnbmFtZXMsCiAJCQkJCQkgICBib29sIGluY2x1ZGVfb3V0X2FyZ3VtZW50cywgaW50 IHByb25hcmdzLAogCQkJCQkJICAgaW50ICoqYXJnbnVtYmVycyk7CkBAIC00NzQ5LDE1ICs0NzQ5 LDI5IEBAIEluaXRpYWxpemVTZWFyY2hQYXRoKHZvaWQpCiAKIAkJLyoKIAkJICogSW4gbm9ybWFs IG1vZGUsIGFycmFuZ2UgZm9yIGEgY2FsbGJhY2sgb24gYW55IHN5c2NhY2hlIGludmFsaWRhdGlv bgotCQkgKiBvZiBwZ19uYW1lc3BhY2Ugb3IgcGdfYXV0aGlkIHJvd3MuIChDaGFuZ2luZyBhIHJv bGUgbmFtZSBtYXkgYWZmZWN0Ci0JCSAqIHRoZSBtZWFuaW5nIG9mIHRoZSBzcGVjaWFsIHN0cmlu ZyAkdXNlci4pCisJCSAqIHRoYXQgd2lsbCBhZmZlY3QgdGhlIHNlYXJjaF9wYXRoIGNhY2hlLgog CQkgKi8KKworCQkvKiBuYW1lc3BhY2UgbmFtZSBvciBBQ0xzIG1heSBoYXZlIGNoYW5nZWQgKi8K IAkJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soTkFNRVNQQUNFT0lELAotCQkJCQkJCQkJ ICBOYW1lc3BhY2VDYWxsYmFjaywKKwkJCQkJCQkJCSAgSW52YWxpZGF0aW9uQ2FsbGJhY2ssCiAJ CQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwkJLyogcm9sZSBuYW1lIG1heSBhZmZlY3QgdGhlIG1l YW5pbmcgb2YgIiR1c2VyIiAqLwogCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhBVVRI T0lELAotCQkJCQkJCQkJICBOYW1lc3BhY2VDYWxsYmFjaywKKwkJCQkJCQkJCSAgSW52YWxpZGF0 aW9uQ2FsbGJhY2ssCisJCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwkJLyogcm9sZSBtZW1iZXJz aGlwIG1heSBhZmZlY3QgQUNMcyAqLworCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhB VVRITUVNUk9MRU1FTSwKKwkJCQkJCQkJCSAgSW52YWxpZGF0aW9uQ2FsbGJhY2ssCiAJCQkJCQkJ CQkgIChEYXR1bSkgMCk7CisKKwkJLyogZGF0YWJhc2Ugb3duZXIgbWF5IGFmZmVjdCBBQ0xzICov CisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKERBVEFCQVNFT0lELAorCQkJCQkJCQkJ ICBJbnZhbGlkYXRpb25DYWxsYmFjaywKKwkJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwogCQkvKiBG b3JjZSBzZWFyY2ggcGF0aCB0byBiZSByZWNvbXB1dGVkIG9uIG5leHQgdXNlICovCiAJCWJhc2VT ZWFyY2hQYXRoVmFsaWQgPSBmYWxzZTsKIAkJc2VhcmNoUGF0aENhY2hlVmFsaWQgPSBmYWxzZTsK QEAgLTQ3NjUsMTEgKzQ3NzksMTEgQEAgSW5pdGlhbGl6ZVNlYXJjaFBhdGgodm9pZCkKIH0KIAog LyoKLSAqIE5hbWVzcGFjZUNhbGxiYWNrCisgKiBJbnZhbGlkYXRpb25DYWxsYmFjawogICoJCVN5 c2NhY2hlIGludmFsIGNhbGxiYWNrIGZ1bmN0aW9uCiAgKi8KIHN0YXRpYyB2b2lkCi1OYW1lc3Bh Y2VDYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQorSW52 YWxpZGF0aW9uQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1 ZSkKIHsKIAkvKgogCSAqIEZvcmNlIHNlYXJjaCBwYXRoIHRvIGJlIHJlY29tcHV0ZWQgb24gbmV4 dCB1c2UsIGFsc28gaW52YWxpZGF0aW5nIHRoZQotLSAKMi4zNC4xCgo= --=-EJMSLD8d+kZg4iPI9Bt2--