diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2020-11-04 16:09:55 -0500 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2020-11-04 16:09:55 -0500 |
| commit | 9e38c2bb5093ceb0c04d6315ccd8975bd17add66 (patch) | |
| tree | 78afafa32e3f4a615281401b37890ac4775dfffc /src/include | |
| parent | 5c292e6b90433c760a3e15027646c7b94afd0cdd (diff) | |
Declare assorted array functions using anycompatible not anyelement.
Convert array_append, array_prepend, array_cat, array_position,
array_positions, array_remove, array_replace, and width_bucket
to use anycompatiblearray. This is a simple extension of commit
5c292e6b9 to hit some other places where there's a pretty obvious
gain in usability from doing so.
Ideally we'd also modify other functions taking multiple old-style
polymorphic arguments. But most of the remainder are tied into one
or more operator classes, making any such change a much larger can of
worms than I desire to open right now.
Discussion: https://postgr.es/m/77675130-89da-dab1-51dd-492c93dcf5d1@postgresfriends.org
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/catalog/catversion.h | 2 | ||||
| -rw-r--r-- | src/include/catalog/pg_operator.dat | 13 | ||||
| -rw-r--r-- | src/include/catalog/pg_proc.dat | 40 |
3 files changed, 34 insertions, 21 deletions
diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index 77102bab8db..aa85dc30153 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -53,6 +53,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 202011043 +#define CATALOG_VERSION_NO 202011044 #endif diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat index feb8edece55..ede7bb96ab3 100644 --- a/src/include/catalog/pg_operator.dat +++ b/src/include/catalog/pg_operator.dat @@ -168,14 +168,15 @@ oprcode => 'textnename', oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, { oid => '349', descr => 'append element onto end of array', - oprname => '||', oprleft => 'anyarray', oprright => 'anyelement', - oprresult => 'anyarray', oprcode => 'array_append' }, + oprname => '||', oprleft => 'anycompatiblearray', oprright => 'anycompatible', + oprresult => 'anycompatiblearray', oprcode => 'array_append' }, { oid => '374', descr => 'prepend element onto front of array', - oprname => '||', oprleft => 'anyelement', oprright => 'anyarray', - oprresult => 'anyarray', oprcode => 'array_prepend' }, + oprname => '||', oprleft => 'anycompatible', oprright => 'anycompatiblearray', + oprresult => 'anycompatiblearray', oprcode => 'array_prepend' }, { oid => '375', descr => 'concatenate', - oprname => '||', oprleft => 'anyarray', oprright => 'anyarray', - oprresult => 'anyarray', oprcode => 'array_cat' }, + oprname => '||', oprleft => 'anycompatiblearray', + oprright => 'anycompatiblearray', oprresult => 'anycompatiblearray', + oprcode => 'array_cat' }, { oid => '352', descr => 'equal', oprname => '=', oprcanhash => 't', oprleft => 'xid', oprright => 'xid', diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index 9acdb28d939..c01da4bf01e 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -1548,14 +1548,19 @@ proname => 'cardinality', prorettype => 'int4', proargtypes => 'anyarray', prosrc => 'array_cardinality' }, { oid => '378', descr => 'append element onto end of array', - proname => 'array_append', proisstrict => 'f', prorettype => 'anyarray', - proargtypes => 'anyarray anyelement', prosrc => 'array_append' }, + proname => 'array_append', proisstrict => 'f', + prorettype => 'anycompatiblearray', + proargtypes => 'anycompatiblearray anycompatible', prosrc => 'array_append' }, { oid => '379', descr => 'prepend element onto front of array', - proname => 'array_prepend', proisstrict => 'f', prorettype => 'anyarray', - proargtypes => 'anyelement anyarray', prosrc => 'array_prepend' }, + proname => 'array_prepend', proisstrict => 'f', + prorettype => 'anycompatiblearray', + proargtypes => 'anycompatible anycompatiblearray', + prosrc => 'array_prepend' }, { oid => '383', - proname => 'array_cat', proisstrict => 'f', prorettype => 'anyarray', - proargtypes => 'anyarray anyarray', prosrc => 'array_cat' }, + proname => 'array_cat', proisstrict => 'f', + prorettype => 'anycompatiblearray', + proargtypes => 'anycompatiblearray anycompatiblearray', + prosrc => 'array_cat' }, { oid => '394', descr => 'split delimited text', proname => 'string_to_array', proisstrict => 'f', prorettype => '_text', proargtypes => 'text text', prosrc => 'text_to_array' }, @@ -1587,15 +1592,18 @@ proargtypes => 'anyarray anyarray', prosrc => 'array_smaller' }, { oid => '3277', descr => 'returns an offset of value in array', proname => 'array_position', proisstrict => 'f', prorettype => 'int4', - proargtypes => 'anyarray anyelement', prosrc => 'array_position' }, + proargtypes => 'anycompatiblearray anycompatible', + prosrc => 'array_position' }, { oid => '3278', descr => 'returns an offset of value in array with start index', proname => 'array_position', proisstrict => 'f', prorettype => 'int4', - proargtypes => 'anyarray anyelement int4', prosrc => 'array_position_start' }, + proargtypes => 'anycompatiblearray anycompatible int4', + prosrc => 'array_position_start' }, { oid => '3279', descr => 'returns an array of offsets of some value in array', proname => 'array_positions', proisstrict => 'f', prorettype => '_int4', - proargtypes => 'anyarray anyelement', prosrc => 'array_positions' }, + proargtypes => 'anycompatiblearray anycompatible', + prosrc => 'array_positions' }, { oid => '1191', descr => 'array subscripts generator', proname => 'generate_subscripts', prorows => '1000', proretset => 't', prorettype => 'int4', proargtypes => 'anyarray int4 bool', @@ -1620,11 +1628,14 @@ proargtypes => 'internal', prosrc => 'array_unnest_support' }, { oid => '3167', descr => 'remove any occurrences of an element from an array', - proname => 'array_remove', proisstrict => 'f', prorettype => 'anyarray', - proargtypes => 'anyarray anyelement', prosrc => 'array_remove' }, + proname => 'array_remove', proisstrict => 'f', + prorettype => 'anycompatiblearray', + proargtypes => 'anycompatiblearray anycompatible', prosrc => 'array_remove' }, { oid => '3168', descr => 'replace any occurrences of an element in an array', - proname => 'array_replace', proisstrict => 'f', prorettype => 'anyarray', - proargtypes => 'anyarray anyelement anyelement', prosrc => 'array_replace' }, + proname => 'array_replace', proisstrict => 'f', + prorettype => 'anycompatiblearray', + proargtypes => 'anycompatiblearray anycompatible anycompatible', + prosrc => 'array_replace' }, { oid => '2333', descr => 'aggregate transition function', proname => 'array_agg_transfn', proisstrict => 'f', prorettype => 'internal', proargtypes => 'internal anynonarray', prosrc => 'array_agg_transfn' }, @@ -1650,7 +1661,8 @@ { oid => '3218', descr => 'bucket number of operand given a sorted array of bucket lower bounds', proname => 'width_bucket', prorettype => 'int4', - proargtypes => 'anyelement anyarray', prosrc => 'width_bucket_array' }, + proargtypes => 'anycompatible anycompatiblearray', + prosrc => 'width_bucket_array' }, { oid => '3816', descr => 'array typanalyze', proname => 'array_typanalyze', provolatile => 's', prorettype => 'bool', proargtypes => 'internal', prosrc => 'array_typanalyze' }, |
