Re: Idempotent DDL Updates

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Miles Elam <miles(dot)elam(at)productops(dot)com>, pgsql-general <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Idempotent DDL Updates
Date: 2021-08-27 20:32:31
Message-ID: 4ccc99be-8e98-9733-05e6-22fa161fd02a@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 8/27/21 11:19 AM, Miles Elam wrote:
> What is the general consensus within the community on idempotent DDL
> scripts, ie. consistent usage of IF EXISTS/IF NOT EXISTS/OR REPLACE for
> SQL init files that get checked into source control?
>
> My experience has been that it's much easier to manage than an
> ever-growing set of migration files, but I'm just a data point of one.
> Obviously for other engines that don't support transactional DDL, it's a
> non-starter, which leads me toward the notion that its lack of obvious
> popularity is due to its limited cross-engine viability. But PG does
> have transaction DDL, preventing incomplete DDL updates. However this
> may just be my personal bias talking. Yet I cannot seem to discount the
> advantages over ever-increasing volumes of Flyway-style migration files
> & directories:
>  * being able to do diffs of changes in source control
>  * limiting the size of the total SQL over time relative to what's
> actually in the DB structure
>  * much more easily determining the most current version of a
> function/procedure (this bit me hard in the past with dozens of
> migration files)
>  * the ability to prune old changes that no longer apply to any
> deployed version of the database
>  * treating database structure as code
>
> The drawbacks I've run across are those areas where the EXISTS/REPLACE
> constructs aren't implemented like roles management, domains,
> constraints, etc. However those cases seem to be handled with only minor
> increases in complexity with judicious use of inline plpgsql.
>
> In others' opinions, has DDL idempotency been viable for maintenance of
> PG databases fo you in production?

For me at least you will need to show examples of what you trying to
achieve. I'm not seeing how a migration(change) can happen without a
change of some sort. More to the point how *EXISTS/OR REPLACE helps?

>
> - Miles Elam
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2021-08-27 21:23:23 Re: Can we get rid of repeated queries from pg_dump?
Previous Message Mladen Gogala 2021-08-27 19:45:17 Re: