public inbox for [email protected]
help / color / mirror / Atom feedFrom: Adam Mackler <[email protected]>
To: [email protected] <[email protected]>
Subject: Possible bug (or at least unexpected behavior)
Date: Sun, 07 Aug 2022 20:06:21 +0000
Message-ID: <WScDU5qfoZ7PB2gXwNqwGGgDPmWzz08VdydcPFLhOwUKZcdWbblbo-0Lku-qhuEiZoXJ82jpiQU4hOjOcrevYEDeoAvz6nR0IU4IHhXnaCA=@mackler.email> (raw)
Hi, forgive me if I should be posting this somewhere else. I asked the following question on stackoverflow, and the first response suggests a possible bug:
https://stackoverflow.com/questions/73261240/recursive-sql-function-returning-array-has-extra-elemen...
Briefly, given the following function:
CREATE FUNCTION runs(input int[], output int[] DEFAULT '{}')
RETURNS int[] AS $$
SELECT
CASE WHEN cardinality(input) = 0 THEN output
ELSE runs(input[2:],
array_append(output, CASE
WHEN input[1] = 0 THEN 0
ELSE output[cardinality(output)] + input[1]
END)
)
END
$$ LANGUAGE SQL;
I expect the following invocation to return an array with the same number of elements as the passed-in argument array:
# select runs('{0,1,1,1,1,0,-1,-1,-1,0}');
runs
----------------------------------------
{0,1,2,3,4,5,6,0,0,0,-1,-2,-3,-4,-5,0}
(1 row)
which it does not with PostgreSQL version 14.4. If it not a bug, then I would be extremely interested in why it's returning an array with more elements than the input array has.
Thanks in advance,
--
Adam Mackler
view thread (3+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected]
Subject: Re: Possible bug (or at least unexpected behavior)
In-Reply-To: <WScDU5qfoZ7PB2gXwNqwGGgDPmWzz08VdydcPFLhOwUKZcdWbblbo-0Lku-qhuEiZoXJ82jpiQU4hOjOcrevYEDeoAvz6nR0IU4IHhXnaCA=@mackler.email>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox