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 1vAxhd-008KNl-BM for pgsql-general@arkaria.postgresql.org; Mon, 20 Oct 2025 21:46:04 +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 1vAxhc-004hwY-0Q for pgsql-general@arkaria.postgresql.org; Mon, 20 Oct 2025 21:46:03 +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 1vAxhb-004hwO-Hp for pgsql-general@lists.postgresql.org; Mon, 20 Oct 2025 21:46:02 +0000 Received: from mail-ukwestazon11021113.outbound.protection.outlook.com ([52.101.100.113] 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 1vAxhY-003Isy-09 for pgsql-general@lists.postgresql.org; Mon, 20 Oct 2025 21:46:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ef1EObh9O00wOrrvO3nvvtBm5Hs3UCNtF2CqhxOI80cYHwC3gbfzJI40j3SnRNEWGTTnQ8TlvdiwTzmoPAI1aY+/3d+epvcSg5E8o9lMyHD+UtsnSR9MQ2JXKzRooyZLxLflScUSE959/AyGn+42C3zIo9AoHhdDLHhqruFjzyzcKvyNDzw3Y1cKeneHvH7z7bbcrxYrRIov8iiOKaT2AUM49IpIP9tmyAR9gy0FnCFXUYp+7v4MlNbw6b1dPtUurKaxftwyQXAt4FqsO9UI/Elpbw1hxQaAZ59vL1qGvBsTWBetOpLyyxu4fMDXSh2Lvt/WU9KenyXtGhWMcPCmRg== 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=bacF+91VBdckgfn5SARfl60sJQidvenT453ShldC+hU=; b=oKbEXzpMlh4Dc+G9Y3Q2IMPtG2mikz8yBc9rRn+5cv3RFrwT+khnoiy70KZgobWTyxy5IuUg9jRrjkW157YfiT9VWxeejNcpYRjPhzzlo39Q1FZrNguFsrQFGRWZ1Tj5X7TH2WT/sDWxmMCJIpj+towFkkqqaEhkCUuh7f00fyYTTKDrSISa0PjLTgVBlAueLnkV+NwitsGCFUwi33sVh3h+yIjGfaKaTlEKEE1wJciy/r5G35B1gFU1RG14E3rn6ymoiPMGpW55bqdLt7zSuT5hTugRynOfqjcCZLWY3up/LKNp9baXpM62PbumlxeMScu2v45GruYM1DnedUgVpg== 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=bacF+91VBdckgfn5SARfl60sJQidvenT453ShldC+hU=; b=NLD4H5GQzXaBotpSwznKDmDlr5Y/c+ybDyxdEKRyarZbRRXq+Jo2iEWRg6MP5jFJRLEFh2yCcKetmybMVkjjkXecupmr2KzSOYBd9KBcwNvYDmMx41VzMesTzG3Oj3IwZL7mUc5KqfeX02KN1XnvGuSxVAYWNPHJdZkFOmVNibAlpT1oD8mTB4ayrJXgYPpNjxoDhwWTI6IE4b8Ea6ifLfR5YzeSWTyG2jQMohN6gTWfZ1lxRwT2aZTulZg0h//M05nkBIm1ZtkPA2Hrumbvy561SiCHgrWBl5IkVVxyanRHJesJKbjCCC6Q+D97DQDhAHv91OspLpnCNBVqqCLVnA== 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:45:56 +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:45:56 +0000 From: Paul Austin To: "pgsql-general@lists.postgresql.org" Subject: Extend CREATE POLICY to add IF EXISTS Thread-Topic: Extend CREATE POLICY to add IF EXISTS Thread-Index: AdxCCtAMeEmhtA34RQC1mGZJuVgiUA== Date: Mon, 20 Oct 2025 21:45:56 +0000 Message-ID: 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: 7aed93d1-a5bf-482b-7313-08de10220cc6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|1800799024|38070700021|8096899003; x-microsoft-antispam-message-info: =?us-ascii?Q?EzsJb9eAQyBSc2agXDGs8eHJvMUJ8mAq8dNv8ZXM1h7NCO94/PSGe1AMn9R+?= =?us-ascii?Q?VoCFgBTnfYdNl0iXDC3jQsunvahmUU3ZMPTYKwFQBCmHs56b0zRROzhXsHVK?= =?us-ascii?Q?o4M79vZ3nahVlQw/r0/Yl4Tpy5kwxvuy+e90wW9Fx4MHqLaCy73lBH97J/Id?= =?us-ascii?Q?FeHgQAsOrNEyHvUQvF8l65iev0iyYHmqpV62QA7KQcMqDMyUx8tC2D57qZ0x?= =?us-ascii?Q?czGor+ziefib8pkU1JmARn3XPs4OEQOzudcayTQBreEJxudiCgHnOnJPXbFQ?= =?us-ascii?Q?1dLY9Jx2byKHWqAcpQhZ3AAALvU+4drr3+4nOQ84xLMO28UPemOLWCGdsceY?= =?us-ascii?Q?tm6AOwotJkf4ff1miV50y72mSu9q9uWqXhkcIsPN/hd3i2o1fmlyboKoTC91?= =?us-ascii?Q?/drpvdnpkHXnMfBwaiHIYPiyfy/kOhhTGyXXQGqsCXmTbUE4T57J76lbVyf6?= =?us-ascii?Q?bQbTsB097wR4wbj9y5hy5GY/SQ8HKyQqgc9Pgugl7oCwRoDbAg9kZSMlO+LN?= =?us-ascii?Q?Zfo3nkpacUG1Mtz77DL9LBuBUcBqtlml8PvTjTKMOtwa7Uvjamr4s9GVqOKW?= =?us-ascii?Q?baT3XY03hZ5zTVaUXjz/lsDqnV3I2NC2FwgoB9UzhC5/F8nfeDoCmg8RASyb?= =?us-ascii?Q?uQcy8ggbfNAWrOu77hcYvjCEK3R7XVuL/35uvuBbFJTmDCP5dbBGYqrtjlNB?= =?us-ascii?Q?mmdLBnFc/AjUljhPzm2NKYyauEbhQncJr/NXvffrEmmwUuxTlLnsALhXTsxv?= =?us-ascii?Q?Mt2daJpXg3PtBdYqqtGhr+14ObZmtaNbhKigO++j07jx0PWq4vMMlkvKPSVE?= =?us-ascii?Q?vHj8wh+BSMW0SBCj2NVtLNHYK+INNGl1ANXCX/Pn5hGUM+XmapWy62X6fILN?= =?us-ascii?Q?t6N9d1vwjSPtZtjCCXPB+mZGkqoJy1VHF1QReOCYXe5JZ+AlN+E1msf/haO4?= =?us-ascii?Q?2EtJ3wrpXD094hJD8PNY4veAo25Bg8XlrWaZMPWZfYWE99OVzrb995UR6yG9?= =?us-ascii?Q?mN1kj4rB8zFiXEIBUDYpTXs4P4CayS1ydpcOtsq0ViS+AEtR6S9tsP6UyJKe?= =?us-ascii?Q?dLzxAxzJZ48rnwHlozPwXquf/UCiQmJ6Y3XbJeoyDLstng5N7IuIwPrqpcVc?= =?us-ascii?Q?H/Mbmhpe4aPA1mRTbA5pi6p/idC1IDigOBv1SUzB0iY+CERx/PEkwPvaspso?= =?us-ascii?Q?YOhheYipRl352PwZ5vjwJHmVxyMaa9GmzwT15RxgTj67H++4kvZ2FI0iinAc?= =?us-ascii?Q?l6lmWGsEBIAymlI11QxlwdWK3RjcfSJASqu96F4rLdyRqj4hvSSf7cILLza6?= =?us-ascii?Q?KLs5vnrVqjqnWbTjjkeveHflezmsWfa2NYo0/gXTUI+sJlizTPK9KMbHArKE?= =?us-ascii?Q?LPoTcNe3rC29eUzyJtOKvNV3bsSfX4BX2lEkE1H9wLnjp7IFdCk4p6FXtUTO?= =?us-ascii?Q?NNXTM4vC/gbE2YSUPh0JsGAJk1oSDybQ1XWn75XisBucb+TtGkbC8dOQFeFn?= =?us-ascii?Q?1ybNSjFoKF41Zcu0opB+dQYBGKoz2nKV2Ppl?= 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)(38070700021)(8096899003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?RWh4PPwV62dUBXNk/Taenk/gVWQX6CmEUapQMY7Pjbh34yXHXNBXy/LmYOZT?= =?us-ascii?Q?Vx/5pdwoG/uhaF//WfSxMTIRKTCVQ8TcEt9KAZ0RMbkKQwiJltQV93zYkvUA?= =?us-ascii?Q?o3WT3qImfirjsY/t5X4sdTJKxfrNXXBoucFO/BMXfKzFbC+dnU+OAw2+CI2J?= =?us-ascii?Q?zbmyrrL1ja7z1n3bUGftkrU9PW8/IWg9gLSz9r0X4AY6ogVY6SrOpB650r3I?= =?us-ascii?Q?ZNI8EQryFEk9jCNe1nhuECBv8W6uD/iY8JYjdoLqfBh4ADXlHSTXz2ae94Si?= =?us-ascii?Q?QfRziyYBENDnOYxLBzVkUMQjJoNoGZAYro71VI665zuNKZo77x6YMSo/xEo2?= =?us-ascii?Q?aZbaYK243fGYs0gdUJIujbjOAkiKAS7P+Cwms6qsQqileBz50HRSP5bNW2MI?= =?us-ascii?Q?uTSaXlETAIH5BVuRZEAJOcxdpibBhwL6P2pj21WKIAGNEpaveimLE46oforC?= =?us-ascii?Q?5eCDF/Q5BSUmSE5qWRsBw3qIn4/fFgI+AwmORQ3vI9t7Kwbca15+VacSgddc?= =?us-ascii?Q?2tkcqbgpvmMHJou2qcyKR417Y5SayE0qRPh6SaDrV0kU0AnXwyvI/M7q+We5?= =?us-ascii?Q?nmmvMJhpTRpQjEiNYi8gCRCY40v7SuxCiPbd3DCqC8vuW8bstAkhgnCvg3sX?= =?us-ascii?Q?VQKQGER0ucmquIrjQC52cUEGVwsbCxbRVZ4DOduJ40Vw2s44IXwp/tZecKJB?= =?us-ascii?Q?U3zRq8DjODM8yLT2LVmWCSCiilFvjGD9sLbLn5z+D+h4HbAOHhQrWpCEJVqG?= =?us-ascii?Q?k3vA2Xvm9p5pxbtYgRqqspx+Alm4lcDToQ5ZMSipskgm6sHhxu2t9l7G0/vd?= =?us-ascii?Q?MAPkRdnEkIFt9ilss1aDBNYZBxXLqcemLldX+n5FFfYLh+JWo0kIRGre148Z?= =?us-ascii?Q?PlaQiP2QhbATFNMUGlcmwKNvnI4lYFcdaadkMjcM91/RoE6uxZSlyWp+6otN?= =?us-ascii?Q?VyCFASI1FP/CFYl6X/VcZfVo1GN0dRXD0sJnNk4uQPzilEVo9UGhZSD4y9L7?= =?us-ascii?Q?ng9SoTpodaHRFVzxw/AHXvCqEphbjlLeQixhIZtI4WTwyTg2raUfB88/EX9L?= =?us-ascii?Q?Aq7ptwiT4yKp1v18UZcKlNOn9QRm6hqtogYMcZjsAkaNjgNxyzr8GBEkmM6f?= =?us-ascii?Q?HqGrVAlThFdMQ/ShIS46xvpWsKZiwE237G/FZI2VxvrCzxPYl5DY6GqXY44a?= =?us-ascii?Q?id6ylbff/HnKwI050c23kGq/XFmkpY2KGVXTAsBSmhW7Uty+z4D36kvvIxZa?= =?us-ascii?Q?T6N6JxuEucIiDRyoIaGOkyPE4YXap+6LSyo3/kgL+kC9XNa6YmXxexWA0ggm?= =?us-ascii?Q?v6htw0aYeTxtGrbePVMde2MizkDLTsYI5vV0w3AmB3lHY8TfaN2FBukS/dFf?= =?us-ascii?Q?nalpXXKrYfJlYM66Dko/5y3j8eFyei/0rh5vZupmO86yCzzAi1JpuykAEvFg?= =?us-ascii?Q?Va9LuYSzhsH/5KbDN85LSuawTSDszfhVaQNH9khxWNpbLgZ1Yk33vRpqL3N8?= =?us-ascii?Q?U3mqX98OYNv21HvopRTRtu5Nj6C97cHF1qXosjnOTD3PO4W5r76vD4k/fnxW?= =?us-ascii?Q?KOQWzrSOrgLaSevbs5oUKgsjD7r9eIfYzEJ67VAaBoxp7DuVbwav2lNlMOA6?= =?us-ascii?Q?mg=3D=3D?= Content-Type: multipart/alternative; boundary="_000_CWXP265MB500957DD1918490CD4AB439EF7F5ACWXP265MB5009GBRP_" 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: 7aed93d1-a5bf-482b-7313-08de10220cc6 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Oct 2025 21:45:56.2111 (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: II481Kf59j1s53LxT5rGqt546u9iILwqPUH8Smn5IhlH2Lg7nAS4JU4pAgE7JdE6KJYjPAXpmcTu0oo3Qs7CPavhPh+7Xlw5MxHc1coauTk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWXP265MB5537 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_000_CWXP265MB500957DD1918490CD4AB439EF7F5ACWXP265MB5009GBRP_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable 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_CWXP265MB500957DD1918490CD4AB439EF7F5ACWXP265MB5009GBRP_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

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_CWXP265MB500957DD1918490CD4AB439EF7F5ACWXP265MB5009GBRP_--