summaryrefslogtreecommitdiff
path: root/src/test/regress/sql/polymorphism.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/regress/sql/polymorphism.sql')
-rw-r--r--src/test/regress/sql/polymorphism.sql20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/test/regress/sql/polymorphism.sql b/src/test/regress/sql/polymorphism.sql
index fa57db6559c..7337fd2d8f1 100644
--- a/src/test/regress/sql/polymorphism.sql
+++ b/src/test/regress/sql/polymorphism.sql
@@ -873,6 +873,26 @@ select * from dfunc(1,c := 2,d := 3); -- fail, no value for b
drop function dfunc(int, int, int, int);
+create function xleast(x numeric, variadic arr numeric[])
+ returns numeric as $$
+ select least(x, min(arr[i])) from generate_subscripts(arr, 1) g(i);
+$$ language sql;
+
+select xleast(x => 1, variadic arr => array[2,3]);
+select xleast(1, variadic arr => array[2,3]);
+
+set search_path = pg_catalog;
+select xleast(1, variadic arr => array[2,3]); -- wrong schema
+reset search_path;
+select xleast(foo => 1, variadic arr => array[2,3]); -- wrong argument name
+select xleast(x => 1, variadic array[2,3]); -- misuse of mixed notation
+select xleast(1, variadic x => array[2,3]); -- misuse of mixed notation
+select xleast(arr => array[1], variadic x => 3); -- wrong arg is VARIADIC
+select xleast(arr => array[1], x => 3); -- failed to use VARIADIC
+select xleast(arr => 1, variadic x => array[2,3]); -- mixed-up args
+
+drop function xleast(x numeric, variadic arr numeric[]);
+
-- test with different parameter types
create function dfunc(a varchar, b numeric, c date = current_date)
returns table (a varchar, b numeric, c date) as $$