fix non-variadic repeated param in variadic function

This commit is contained in:
Wolfgang Walther
2020-10-30 10:06:53 -05:00
committed by Steve Chavez
parent 8618ffa5fc
commit 4b4a622a17
3 changed files with 14 additions and 3 deletions
+1 -1
View File
@@ -94,7 +94,7 @@ jsonRpcParams proc prms =
where
mergeParams :: RpcParamValue -> RpcParamValue -> RpcParamValue
mergeParams (Variadic a) (Variadic b) = Variadic $ b ++ a
mergeParams _ v = v -- repeated params for non-variadic arguments are not merged
mergeParams v _ = v -- repeated params for non-variadic arguments are not merged
{-|
Describes what the user wants to do. This data type is a
+6
View File
@@ -528,6 +528,12 @@ spec actualPgVersion =
`shouldRespondWith`
[json|"Hello, world"|]
when (actualPgVersion >= pgVersion100) $
it "returns last value for repeated non-variadic params in function with other VARIADIC arguments" $
get "/rpc/sayhello_variadic?name=ignored&name=world&v=unused"
`shouldRespondWith`
[json|"Hello, world"|]
it "can handle procs with args that have a DEFAULT value" $ do
get "/rpc/many_inout_params?num=1&str=two" `shouldRespondWith`
[json| [{"num":1,"str":"two","b":true}]|] { matchHeaders = [matchContentTypeJson] }
+7 -2
View File
@@ -1084,9 +1084,14 @@ create function test.many_inout_params(INOUT num int, INOUT str text, INOUT b bo
$$ language sql;
CREATE FUNCTION test.variadic_param(VARIADIC v TEXT[] DEFAULT '{}') RETURNS text[]
LANGUAGE SQL AS $_$
LANGUAGE SQL AS $$
SELECT v
$_$;
$$;
CREATE FUNCTION test.sayhello_variadic(name TEXT, VARIADIC v TEXT[]) RETURNS text
LANGUAGE SQL AS $$
SELECT 'Hello, ' || name
$$;
create or replace function test.raise_pt402() returns void as $$
begin