Problem with Avg function and Money type in PostgreSQL 15

Started by Erki Eessaarover 3 years ago3 messagesbugs
Jump to latest
#1Erki Eessaar
erki.eessaar@taltech.ee

CREATE TABLE Product(product_id SERIAL PRIMARY KEY,
price MONEY NOT NULL);

INSERT INTO Product(price) VALUES (30);
INSERT INTO Product(price) VALUES (40);

SELECT Avg(price) AS av FROM Product;

PostgreSQL 14.5

ERROR: function avg(money) does not exist
LINE 1: SELECT Avg(price) AS av FROM Product;
HINT: No function matches the given name and argument types. You might need to add explicit type casts.

PostgreSQL 15

ERROR: stack depth limit exceeded
HINT: Increase the configuration parameter "max_stack_depth" (currently 2048kB), after ensuring the platform's stack depth limit is adequate.
CONTEXT: SQL function "avg" during inlining
SQL function "avg" during startup
SQL function "avg" statement 1 --this line is repeated more than 3000 times

It seems to me that PostgreSQL 14.5 response is much better than in case of PostgreSQL 15.

Best regards
Erki Eessaar

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Erki Eessaar (#1)
Re: Problem with Avg function and Money type in PostgreSQL 15

Erki Eessaar <erki.eessaar@taltech.ee> writes:

CREATE TABLE Product(product_id SERIAL PRIMARY KEY,
price MONEY NOT NULL);

INSERT INTO Product(price) VALUES (30);
INSERT INTO Product(price) VALUES (40);

SELECT Avg(price) AS av FROM Product;

PostgreSQL 15

ERROR: stack depth limit exceeded
HINT: Increase the configuration parameter "max_stack_depth" (currently 2048kB), after ensuring the platform's stack depth limit is adequate.
CONTEXT: SQL function "avg" during inlining

I get "function avg(money) does not exist" in all branches.
Judging from the mention of a SQL function, you must have
created a not-very-well-thought-out SQL function named "avg",
and that function is recursing till stack overflow.

regards, tom lane

#3Erki Eessaar
erki.eessaar@taltech.ee
In reply to: Tom Lane (#2)
Re: Problem with Avg function and Money type in PostgreSQL 15

Yes, this the case. I am sorry for the false report. I retract it and apologise for the inconvinience.

Best regards
Erki Eessaar
________________________________
From: Tom Lane <tgl@sss.pgh.pa.us>
Sent: Sunday, October 30, 2022 7:57 PM
To: Erki Eessaar <erki.eessaar@taltech.ee>
Cc: pgsql-bugs@lists.postgresql.org <pgsql-bugs@lists.postgresql.org>
Subject: Re: Problem with Avg function and Money type in PostgreSQL 15

Erki Eessaar <erki.eessaar@taltech.ee> writes:

CREATE TABLE Product(product_id SERIAL PRIMARY KEY,
price MONEY NOT NULL);

INSERT INTO Product(price) VALUES (30);
INSERT INTO Product(price) VALUES (40);

SELECT Avg(price) AS av FROM Product;

PostgreSQL 15

ERROR: stack depth limit exceeded
HINT: Increase the configuration parameter "max_stack_depth" (currently 2048kB), after ensuring the platform's stack depth limit is adequate.
CONTEXT: SQL function "avg" during inlining

I get "function avg(money) does not exist" in all branches.
Judging from the mention of a SQL function, you must have
created a not-very-well-thought-out SQL function named "avg",
and that function is recursing till stack overflow.

regards, tom lane