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 1vAxkm-008LCU-IT for pgsql-general@arkaria.postgresql.org; Mon, 20 Oct 2025 21:49:19 +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 1vAxkk-004kt6-AH for pgsql-general@arkaria.postgresql.org; Mon, 20 Oct 2025 21:49:17 +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 1vAxkj-004ksw-UC for pgsql-general@lists.postgresql.org; Mon, 20 Oct 2025 21:49:16 +0000 Received: from mail-ukwestazon11021123.outbound.protection.outlook.com ([52.101.100.123] helo=CWXP265CU009.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vAxkg-003Iu8-1t for pgsql-general@lists.postgresql.org; Mon, 20 Oct 2025 21:49:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zICj5jZz707POctWrbMTsVGOMGXTE5qvEki4Osr3PAT2Y+rX+B2l10Mxxs4qAtC6XD8801FZ9qW2qD9USoMw8G4TyPz1PSFpPFHPr/hgSY02q07Y7qv+xMuH4+Ur0BkfMlpd56oBdW/T+MBMJ//7RqEoAQsVJpI0DowhpolzY0oOmXy5pXq0yOCEkEGQ8c93Zc5dvLYLQqEkKgSwErouMYqxnfATjOPoAVHLYBLGQN6gwGkrorZMIcmkAozeUOfuvvE3NVDT80XWxBii/WI1xX/weG+UmZS3pnJeFkaLT2fde0EKZlILuIJNtqeLyHcY8xxD/UviXoqsXG9nbjMZpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=X96xM1t5NNGXlN/hh9PEW2e/Y415vTLD1PQHCnL8Vao=; b=N5jLk24RUCCKmZ6wwjL3z6PbLPbzPD6nHKnOvfY+WPuiFWRI928aFttGzWuGlSgstZ2WhK1wk0UPydI2OpiLb12Y0mOmbjZk7PmjSHKom5G8TWlAKebxAUyJTxilyXqs2hS81XpspcrHBFTz2dB5t50AAo2afhQwWZ0ASI0HKs0TVdY4Bem1x4aif/p+fIhhAYzn3qnPQpY5F5JH0n0AM7M4asoKox4E4Wd/ttAh2COZCvI6b5JWR7YC7MnB/f6CIgIRtRkbYLhjKU6l7X1Dmi1d7wataxqoKcF5dNNTmIEgzej3/Cq0lNp9NrO3tpLnyiKRAnkkYTbVpBdfjeCaww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=automutatio.com; dmarc=pass action=none header.from=automutatio.com; dkim=pass header.d=automutatio.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=automutatio.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X96xM1t5NNGXlN/hh9PEW2e/Y415vTLD1PQHCnL8Vao=; b=oP65rXK8vgcezWVL/zVXqMcAwuallIx+6q4s4F/eC0cPCeqnwFgHDwk6cO7ZxiipzvIydcMwcjsIe/EFNV5txM5rQn+VikqDEnvB7ATAbCg5sBcEGtefDiVgTOSrM3PysLG4sl8sBMTEzJi8mYAvFLj2d/zM00MVDIloaJOkHikxhwzIuv2zsAdag4bCSI4s0KdeVeLu7LSh4od4Kxx65jTPL0MOq94JpsQcUuOa444rs9pUCgvi0mjeHmyNIr0UWdCAK5ReJLP8PxSX5joI2IRQxI02ZbwYNj+xO/Jrl7ZgL5U3Q7yKN+wPCgDwE7GSD9+88zXJze8CfPtJ0ryLEg== Received: from CWXP265MB5009.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:19a::5) by CWXP265MB5537.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:15b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.17; Mon, 20 Oct 2025 21:49:12 +0000 Received: from CWXP265MB5009.GBRP265.PROD.OUTLOOK.COM ([fe80::3e50:ef31:dd73:3bd2]) by CWXP265MB5009.GBRP265.PROD.OUTLOOK.COM ([fe80::3e50:ef31:dd73:3bd2%5]) with mapi id 15.20.9228.009; Mon, 20 Oct 2025 21:49:12 +0000 From: Paul Austin To: Paul Austin , "pgsql-general@lists.postgresql.org" Subject: RE: Extend CREATE POLICY to add IF EXISTS Thread-Topic: Extend CREATE POLICY to add IF EXISTS Thread-Index: AdxCCtAMeEmhtA34RQC1mGZJuVgiUAAAICkg Date: Mon, 20 Oct 2025 21:49:12 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-CA, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=automutatio.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CWXP265MB5009:EE_|CWXP265MB5537:EE_ x-ms-office365-filtering-correlation-id: c726e53b-ac16-4576-b6c8-08de102281ca x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|1800799024|7053199007|38070700021|8096899003; x-microsoft-antispam-message-info: =?us-ascii?Q?0/k3oLiYOSpoP+1s7cP7Fk3RmBViHfbbRGZyvORzylOXpZnyMHZSYLIdCe32?= =?us-ascii?Q?q5iiQCfIApIFnWNr1fxy7czJfrduejmde991jHBHn7Y4iwgeDvEsbRgsuCGo?= =?us-ascii?Q?6Kw36LXFmuOQ33vkJ+tseWOWHfkLq6OWdKxKOoAuUTlOSnjIHKWGRkvYmm5U?= =?us-ascii?Q?2ZUlE4W2Ct+4UK32BgJ2OJBHrZZOu4dYG76AC/5b+j53gfJI16JeXNH2rHf/?= =?us-ascii?Q?x2ou4CTEIajA9C9n5eFmwF2VpyrRqjtr6PM/Z8N61o/OseysSBF+6JtC/Lu7?= =?us-ascii?Q?cblmwK6F0oE2M4794DWlYR5A4vfZ04LmtqXSriT9agFsldOwGLgwMLzIsczP?= =?us-ascii?Q?sAzlX0Jm1LRrNBe45Qt2W6+sXs6l6w7/6mb4enAgkgI2JPLnOwGg2kEKZFx/?= =?us-ascii?Q?ECOWRUfZA7ILjlLX6YriyZjtwp3/OwzTw3j7VhWa93AsrXBPZo4PE7F/CdGm?= =?us-ascii?Q?SmevenmWGyzcMMvQpzllD6neunS8dIa5yAFYd3TmLTDXoxg7zD9lDjPyXbof?= =?us-ascii?Q?VGuIk1WvCCH/KN3u9fKwCTaqs8yaASQjS96MhDKE0OxYXnncP11I90Zqeucd?= =?us-ascii?Q?Ng5m16m4g4RvgEZQLuIjDBspB5NdKJcCrBgVLtmlBv5SI9cpzkbcsEqtjMJz?= =?us-ascii?Q?rbi/SRTPz+oRf8ymVBRYo9+P8fXQnCnHOARUJMiYE+z7jbRBZONClUL7jvBD?= =?us-ascii?Q?LjzWBuTcJmzu8yRmTiYwSGmYBbi/PQDwTlDdej/Vjf+Wv0xdCD7XzcW8f98u?= =?us-ascii?Q?IBdEUvRgg9ZxywNvYCk/5pRAVXD3dmi+g66Zi1bIyGsu0dSczOV6FKoe85Sj?= =?us-ascii?Q?4/rPPrrL1DofTDjo3FbeRZAWWRi8LV2+5gv7SF9o58jHW5St2k1nxCr7q29J?= =?us-ascii?Q?w+6RSQ/+KXazIfeqhGzv87EMGa3myplOTca+F3z97iRkgMEnxXDXZM/37W6k?= =?us-ascii?Q?wmB3xexsy4YlckSnv93pn4vjCG5PoraN8g1TBymb1SvvTf0J9PWp9LihkaM5?= =?us-ascii?Q?N2ggoTS2DKu4v1QHVKS715ohaefLsA4vUwzSBS7XT20oj8bXpgiUne7r86nB?= =?us-ascii?Q?pDktDWXZVqudisK4moKEvgFbhiG9ezxP75kYb6ZZyh/W4CVkTdU+Vc/7b5OA?= =?us-ascii?Q?FB1xqNwMc3trFfs2DXNutZMDUNfusxNU3mZKHAACelFzW5RObmGyY8JT/biF?= =?us-ascii?Q?iS+z4PzAZ2Jr0WgqEewhIoWPXDZcukPF3wL3kNfdWIRBUF3QOxT3hVt0qkEF?= =?us-ascii?Q?yjeOoeHrHMpqDLoBbkGzdaoK2Cw+thUtElS/k3MHFI622QFGdREhUCigVA/K?= =?us-ascii?Q?evUPiQfZ/dN2nVotAVxc40em/b6KDyBx2HoOz298DNdNXptUDI4myTLUYjm8?= =?us-ascii?Q?TkpzPNqme0kSQDe3f6Ippir4RxhLmWBhoCu69FLjqe1KRp36lcZqXNBfN4hs?= =?us-ascii?Q?3uBWK3HJQ/nFMAPmw76AJ0CZ/UxMFklQmX0SnBRqOpmzNX6KCJFPHPK2pWKk?= =?us-ascii?Q?RoEzVoJFaC/gl/BCZFu/dVCPKiVi7vDhnmxw?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWXP265MB5009.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(7053199007)(38070700021)(8096899003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?zQvO51QLNyXsSjjUfocddB5MqBAz18CIpmCD7SyacbO9CBMEchbBQazVOkPH?= =?us-ascii?Q?uq/sH9wlPaFnNdG4KMd+0FohZk7xeiDpOPLIGX1BUC3O4/j281TM7/WJDQs2?= =?us-ascii?Q?KipT1inBTq8zox1IOznv+0z1FO15Ic40g3Wpcc2eWSiD/IUM025o4vg3G+FS?= =?us-ascii?Q?MKzLUHb/Q680vVSeC/oNFiqxfggFN1K4/uYJgWUWGbikLsT9th0/e9DvLNck?= =?us-ascii?Q?KefUc40YX5l4kfnIhxHUB7cV4iNkY/Z5SrO56d6p6i+tfO8PbpvpSPqWxlIr?= =?us-ascii?Q?xRHy2GV49GkxMNSKj22U8y1LJ3cOJlOuXoeh9kW94RGMEOHULOzUaVFafnWz?= =?us-ascii?Q?ZrHe9XdGeU8O1ArhQPUqkHEH+g4StmVvmVdQXG7VBIReLObQRLnfhyjJFa/7?= =?us-ascii?Q?bH6nqCTT+Crqns2s/hIWb+rHmtXACw2UB5AbBxP8n77dASH4ySL8tZkJ+qfR?= =?us-ascii?Q?87ZkmdNRKquDs97CKQkd3+4hu9/u1LkrRHAxSjm365SJ0qIoXbCoDxRU8RHh?= =?us-ascii?Q?ja74p5IBxOF58XEo/FUlRfSERKB5kQwaBxMn6wPRpUz6LFFSxfqjLPlm1VeO?= =?us-ascii?Q?Zkz9jboBeVkXL5kpUCJPtMB2KXPMbq4ZhKQk+UboURZKI2QXHe/Q9+VbHSin?= =?us-ascii?Q?UTd7dnqJg46X6dxrBSjQIUMnsrOPISgG/mgNtWqVZSCbBIwwCaEBsPJ1c0qN?= =?us-ascii?Q?91eEPnUdmozU/U1M0zm8GXjQXGmHl/d2QOCVdPT4oBeYsDqw2pw37UwJrY/9?= =?us-ascii?Q?IpFTdvDWadaezqOpoaeXASLcglcckgLapVh1PBW6nBQZ0oMX/NAPQKIGonkA?= =?us-ascii?Q?cJElYc2pIVIWcceuDEFCEMfEh7oU6iTUtTkl9aQX4LEXzpKBHkKwSnroLEHH?= =?us-ascii?Q?KxhUkv/fOvr+uZFjmLETNgKGVtUUNObeBsWYmlm5N/Td6ohJEnd8s2JUfNN4?= =?us-ascii?Q?ZiIF0OhPxRCsYJmUN8zD+u8iiQDJEFIja/Tpt6br07Z/ym0wUyCe5ntBUW7h?= =?us-ascii?Q?1I45Qz4JNMyIfpkSRyUkxoNlLwAhhjsjFXTe2zrc2Zk0A6KrCe5zNlWSsngm?= =?us-ascii?Q?99vNYFyyPXer4/kjI7cUoXbTE01p72XysXf3KhbN3ClX3ODl5XMmEdj3yFPF?= =?us-ascii?Q?g7z+7bIzR96t+YRozG/wvZ+uIxi/+QNey2CPV+l0quU7KdsjFpI/ykSV6o6O?= =?us-ascii?Q?iVe0+6kpy8PrLwRAmRpalwk+kpngEGFbv60YQusq6ypqWZ1P3ua9mIiXUDoX?= =?us-ascii?Q?hqKLt8EYiO9kZQxLNgXLL1FJsmUUCWgo76E5bMp/zv5m3hKfCDAUKznIduYC?= =?us-ascii?Q?pQJg4AhMcvnDBlo4/NfeDtpn6tS+ub9bHit1cq9gxFlRSdyUpugRp1QbE843?= =?us-ascii?Q?Qz9fo//JU5hrkN42/gBWoeM5QYmGCRMq6svFVALrxEnzU8drfR4eflR/xuyy?= =?us-ascii?Q?mETBJ2bOpu6/d1oNUgmSW+gSGgGDW0gdqI+FdCKD5FU7y0QzsuO0YN91dak/?= =?us-ascii?Q?8bLrMPKLAVyWuuB49z7tnqeRRJiQmIztERsp26fV121TiDpacsG6ODX740WD?= =?us-ascii?Q?BEqaNY2CvwuE4qvSaqDx2xbwzrbzDrpaGMJ2zq5k5MKXlnrJvVWe7XmHku9/?= =?us-ascii?Q?aA=3D=3D?= Content-Type: multipart/alternative; boundary="_000_CWXP265MB500928C799DB70B9A6EDB4D4F7F5ACWXP265MB5009GBRP_" MIME-Version: 1.0 X-OriginatorOrg: automutatio.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CWXP265MB5009.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: c726e53b-ac16-4576-b6c8-08de102281ca X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Oct 2025 21:49:12.5408 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 2f6d3b93-672f-4220-814a-a5deedb8a240 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: /9QtBktxPunP37JULBnHONyqKVAVgHdG0dMZ21C2t5NDrINwnRmgS/Bb2qdQbrOyqUJcA9bryBsGY+xdsnmVTQU5umX4uJFnIYyFXTT3B+w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWXP265MB5537 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_000_CWXP265MB500928C799DB70B9A6EDB4D4F7F5ACWXP265MB5009GBRP_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I forgot DROP POLICY already has IF EXISTS From: Paul Austin Sent: October 20, 2025 2:46 PM To: pgsql-general@lists.postgresql.org Subject: Extend CREATE POLICY to add IF EXISTS Many (but not all) DDL statements use the pattern IF EXISTS or IF NOT EXIST= S. This is really useful if you want to create a re-start-able data model u= pdate script without needing to have PL/pgSQL blocks that has checks to see= if it exists. An example of a statement that doesn't implement this pattern in the CREATE= POLICY statement. Is there a plan to add this pattern to the rest of the DDL statements? Or c= ould it be added to the CREATE/DROP POLICY statements? Thanks, Paul --_000_CWXP265MB500928C799DB70B9A6EDB4D4F7F5ACWXP265MB5009GBRP_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

I forgot DROP POLICY already has IF EXISTS

 

From= : Paul Austin <paul.austin@automutatio.com>
Sent: October 20, 2025 2:46 PM
To: pgsql-general@lists.postgresql.org
Subject: Extend CREATE POLICY to add IF EXISTS

 

Many (but not all) DDL statements use the pattern IF= EXISTS or IF NOT EXISTS. This is really useful if you want to create a re-= start-able data model update script without needing to have PL/pgSQL blocks= that has checks to see if it exists.

 

An example of a statement that doesn’t impleme= nt this pattern in the CREATE POLICY statement.

 

Is there a plan to add this pattern to the rest of t= he DDL statements? Or could it be added to the CREATE/DROP POLICY statement= s?

 

Thanks,

Paul

--_000_CWXP265MB500928C799DB70B9A6EDB4D4F7F5ACWXP265MB5009GBRP_--