Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1plbua-0005xK-Dn for pgsql-hackers@arkaria.postgresql.org; Sun, 09 Apr 2023 20:45:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1plbuZ-0007VY-BN for pgsql-hackers@arkaria.postgresql.org; Sun, 09 Apr 2023 20:45:19 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1plbuZ-0007VP-25 for pgsql-hackers@lists.postgresql.org; Sun, 09 Apr 2023 20:45:19 +0000 Received: from relay11.mail.gandi.net ([217.70.178.231]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1plbuT-001tLn-QJ for pgsql-hackers@lists.postgresql.org; Sun, 09 Apr 2023 20:45:18 +0000 Received: (Authenticated sender: strk@kbt.io) by mail.gandi.net (Postfix) with ESMTPSA id 3AE15100005; Sun, 9 Apr 2023 20:45:09 +0000 (UTC) Date: Sun, 9 Apr 2023 22:46:29 +0200 From: Sandro Santilli Sender: strk@kbt.io To: Yurii Rashkovskii Cc: Tom Lane , Regina Obe , pgsql-hackers@lists.postgresql.org Subject: Re: [PATCH] Support % wildcard in extension upgrade filenames Message-ID: <20230409204629.sf4fptx672iehcau@c19> References: <20221117095734.igldlk6kngr6ogim@c19> <166914379479.1121.7549798686571352890.pgcf@coridan.postgresql.org> <55512.1673304709@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Mon, Apr 03, 2023 at 09:26:25AM +0700, Yurii Rashkovskii wrote: > I want to chime in on the issue of lower-number releases that are released > after higher-number releases. The way I see this particular problem is that > we always put upgrade SQL files in release "packages," and they obviously > become static resources. > > While I [intentionally] overlook some details here, what if (as a > convention, for projects where it matters) we shipped extensions with > non-upgrade SQL files only, and upgrades were available as separate > downloads? This way, we're not tying releases themselves to upgrade paths. > This also requires no changes to Postgres. This is actually something that's on the plate, and we recently added a --disable-extension-upgrades-install configure switch and a `install-extension-upgrades-from-known-versions` make target in PostGIS to help going in that direction. I guess the ball would now be in the hands of packagers. > I know this may be a big delivery layout departure for well-established > projects; I also understand that this won't solve the problem of having to > have these files in the first place (though in many cases, they can be > automatically generated once, I suppose, if they are trivial). We will now also be providing a `postgis` script for administration that among other things will support a `install-extension-upgrades` command to install upgrade paths from specific old versions, but will not hard-code any list of "known" old versions as such a list will easily become outdated. Note that all upgrade scripts installed by the Makefile target or by the `postgis` scripts will only be empty upgrade paths from the source version to the fake "ANY" version, as the ANY-- upgrade path will still be the "catch-all" upgrade script. --strk; > On Tue, Jan 10, 2023 at 5:52 AM Tom Lane wrote: > > > I continue to think that this is a fundamentally bad idea. It creates > > all sorts of uncertainties about what is a valid update path and what > > is not. Restrictions like > > > > + Such wildcard update > > + scripts will only be used when no explicit path is found from > > + old to target version. > > > > are just band-aids to try to cover up the worst problems. > > > > Have you considered the idea of instead inventing a "\include" facility > > for extension scripts? Then, if you want to use one-monster-script > > to handle different upgrade cases, you still need one script file for > > each supported upgrade step, but those can be one-liners including the > > common script file. Plus, such a facility could be of use to people > > who want intermediate factorization solutions (that is, some sharing > > of code without buying all the way into one-monster-script). > > > > regards, tom lane > > > > > > > > -- > Y.