Re: Converting contrib SQL functions to new style
Peter Eisentraut <peter@eisentraut.org>
On 13.11.24 09:15, Ronan Dunklau wrote: > Le mardi 12 novembre 2024, 09:30:30 heure normale d’Europe centrale Michael > Paquier a écrit : >> On Thu, Nov 07, 2024 at 10:06:37AM +0900, Michael Paquier wrote: >>> Good point. Checking all these contrib updates one-by-one is an ant's >>> work, but I'll see if I can get at least some of them done on HEAD. >> >> I've begun looking at that a bit, and there are a couple of things >> that we could do better with xml2 in 0005 at least in the context of >> this patch: xpath_nodeset() and xpath_list() don't have any test >> coverage. That's not an issue directly related to this patch, but >> perhaps we should add something for the functions that we are >> manipulating after this upgrade path at least? That's one way to >> automatically make sure that these changes work the same way as the >> original. >> >> The same argument comes up with lo_oid() in 0006. > > Ok, please find attached a new complete patch series including tests for the > uncovered functions. Tests pass both before and after the move to SQL-body > functions. By the way, if we're going to touch all these extension script files to make them more modern SQL-like, we could also use named parameters more. For example, +CREATE OR REPLACE FUNCTION regexp_match(string citext, pattern citext) RETURNS TEXT[] +LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE +RETURN pg_catalog.regexp_match( $1::pg_catalog.text, $2::pg_catalog.text, 'i' ); could be +CREATE OR REPLACE FUNCTION regexp_match(string citext, pattern citext) RETURNS TEXT[] +LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE +RETURN pg_catalog.regexp_match( string::pg_catalog.text, pattern::pg_catalog.text, 'i' ); etc.
Commits
-
Use @extschema:name@ notation in contrib transform modules.
- bebe9040388b 18.0 landed
-
pg_freespacemap: Fix declaration of pg_freespace(regclass)
- e0c3d5122e6a 18.0 landed
-
contrib/pageinspect: Use SQL-standard function bodies.
- 68ff25eef125 18.0 landed
-
contrib/xml2: Use SQL-standard function bodies.
- 667368fd26de 18.0 landed
-
contrib/citext: Use SQL-standard function bodies.
- 97a5a16849eb 18.0 landed
-
contrib/earthdistance: Use SQL-standard function bodies.
- 969bbd0fafc0 18.0 landed
- 3652de36e432 17.3 landed
- 31daa10facec 16.7 landed
-
contrib/lo: Use SQL-standard function bodies
- 13e3796c906b 18.0 landed
-
xml2: Add tests for functions xpath_nodeset() and xpath_list()
- 93f9b4a93fef 18.0 landed
-
contrib/lo: Add test for function lo_oid()
- 3ef038fc4f76 18.0 landed
-
pg_freespacemap: Use SQL-standard function bodies
- 3f323eba89fb 18.0 landed
-
Add @extschema:name@ and no_relocate options to extensions.
- 72a5b1fc8804 16.0 cited
-
Make contrib modules' installation scripts more secure.
- 7eeb1d9861b0 14.0 cited