BUG #19342: ERROR: function gcd(smallint, smallint) is not unique

Started by PG Bug reporting form4 months ago2 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 19342
Logged by: Jason Smith
Email address: dqetool@126.com
PostgreSQL version: 18.0
Operating system: Ubuntu 22.04
Description:

Run the following statements, where the error may be not expected.
```sql
CREATE TABLE t1 (c1 SMALLINT);
SELECT (gcd(c1, c1)) FROM t1; -- ERROR: function gcd(smallint, smallint) is
not unique
```

#2Daniel Gustafsson
daniel@yesql.se
In reply to: PG Bug reporting form (#1)
Re: BUG #19342: ERROR: function gcd(smallint, smallint) is not unique

On 2 Dec 2025, at 14:02, PG Bug reporting form <noreply@postgresql.org> wrote:

The following bug has been logged on the website:

Bug reference: 19342
Logged by: Jason Smith
Email address: dqetool@126.com
PostgreSQL version: 18.0
Operating system: Ubuntu 22.04
Description:

Run the following statements, where the error may be not expected.
```sql
CREATE TABLE t1 (c1 SMALLINT);
SELECT (gcd(c1, c1)) FROM t1; -- ERROR: function gcd(smallint, smallint) is
not unique
```

gcd() is - as is documented - only available for integer, bigint and numeric.
What happens here is that postgres attempts to automatically cast the input
into a supported datatype, but since smallint can be cast into more than one of
the possible input types the error you see is thrown.

If you yourself cast it to integer it works as you expected.

postgres=# SELECT gcd(c1::integer, c1::integer) FROM t1;
gcd
-----
(0 rows)

--
Daniel Gustafsson