Re: Converting contrib SQL functions to new style
Alvaro Herrera <alvherre@alvh.no-ip.org>
On 2021-Apr-15, Vik Fearing wrote:
> CREATE DOMAIN earth AS "$extension".cube.cube
> CONSTRAINT not_point check("$extension".cube.cube_is_point(value))
> CONSTRAINT not_3d check("$extension".cube.cube_dim(value <= 3)
> ...;
I find this syntax pretty weird -- here, the ".cube." part of the
identifier is acting as an argument of sorts for the preceding
$extension thingy. This looks very surprising.
Something similar to OPERATOR() syntax may be more palatable:
CREATE DOMAIN earth AS PG_EXTENSION_SCHEMA(cube).cube
CONSTRAINT not_point check(PG_EXTENSION_SCHEMA(cube).cube_is_point(value))
CONSTRAINT not_3d check(PG_EXTENSION_SCHEMA(cube).cube_dim(value <= 3)
...;
Here, the PG_EXTENSION_SCHEMA() construct expands into the schema of the
given extension. This looks more natural to me, since the extension
that acts as argument to PG_EXTENSION_SCHEMA() does look like an
argument.
I don't know if the parser would like this, though.
--
Álvaro Herrera Valdivia, Chile
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