From: | PG Bug reporting form <noreply(at)postgresql(dot)org> |
---|---|
To: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
Cc: | arthur(dot)mcgibbon(at)gmail(dot)com |
Subject: | BUG #17052: Incorrect params inferred on PREPARE (part 2) |
Date: | 2021-06-08 11:27:51 |
Message-ID: | 17052-0bb053c08bb80fb6@postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 17052
Logged by: Arthur McGibbon
Email address: arthur(dot)mcgibbon(at)gmail(dot)com
PostgreSQL version: 13.3
Operating system: Windows + wsl2 + docker
Description:
Using the table...
CREATE TABLE testSchema.testTable (timestampCol timestamp);
...and preparing the query...
PREPARE testQuery (unknown) AS
UPDATE testSchema.testTable
SET timestampCol = $1 + interval '1 minute';
...results in an error...
ERROR: column "timestampcol" is of type timestamp without time zone but
expression is of type interval
LINE 4: set timestampCol = $1 + interval '1 minute';
^
HINT: You will need to rewrite or cast the expression.
SQL state: 42804
Character: 82
Specifying the parameter as timestamp works without error...
PREPARE testQuery (timestamp) AS
UPDATE testSchema.testTable
SET timestampCol = $1 + interval '1 minute';
as does casting...
PREPARE testQuery (unknown) AS
UPDATE testSchema.testTable
SET timestampCol = cast($1 as timestamp) + interval '1 minute';
I'd hope that PostgreSQL would infer a "timestamp" type here instead of an
interval type
It seems in this case (and possibly in bug report 17051) Postgres uses only
a section of the expression to evaluate the parameter type i.e. "$1 +
interval '1 minute'" and assumes that only an interval type can be added to
an interval type but there are a number of types that can be added to an
interval type and ideally it would take into account the result of the
expression which has to be a timestamp (because of the definition of the
timestampCol column) and so work out that the only (or best) way to achieve
that is to have $1 be of type timestamp.
From | Date | Subject | |
---|---|---|---|
Next Message | David G. Johnston | 2021-06-08 13:00:41 | Re: BUG #17052: Incorrect params inferred on PREPARE (part 2) |
Previous Message | PG Bug reporting form | 2021-06-08 09:56:58 | BUG #17051: Incorrect params inferred on PREPARE |