Re: Prepared SQL name collision. The name implicitly is truncated by NAMEDATALEN - Mailing list pgsql-bugs

From Alexey Kachalin
Subject Re: Prepared SQL name collision. The name implicitly is truncated by NAMEDATALEN
Date
Msg-id CAF9fLqu+PuxKDvj5U1QAPegZso_fZ8vPy4wzBKyQAMTrKAURuA@mail.gmail.com
Whole thread Raw
In response to Re: Prepared SQL name collision. The name implicitly is truncated by NAMEDATALEN  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Prepared SQL name collision. The name implicitly is truncated by NAMEDATALEN  (Pavel Borisov <pashkin.elfe@gmail.com>)
Re: Prepared SQL name collision. The name implicitly is truncated by NAMEDATALEN  (Julien Rouhaud <rjuju123@gmail.com>)
Re: Prepared SQL name collision. The name implicitly is truncated by NAMEDATALEN  ("David G. Johnston" <david.g.johnston@gmail.com>)
List pgsql-bugs
Hello, Tom and other devs.

I would like to point out that this bug report is not about trucating identifiers as mentioned in documentation. The bug is collision, neither trucating.

This is about getting different SQL errors on valid SQL statements.
The valid SQL produces an error, it is a bug, isn't it?
If a programmer did something wrong the error appears, I believe in that.

Please consider an example:
Run
'SELECT 222 as result_1'
and get the result of '111' because of a collision.
How should programmers understand the prepared SQL name exceeding length? No error, no warning, nothing, just valid sql returns the wrong result.

If I exceed the limit I would like to get the error related to an issue, not just my valid SQL returns something unpredictable.
Can I get a proper error for identifying issues and fixing?
Is it expected behaviour that SQL returns corrupt value or error, when a prepared SQL statements name has gone beyond limit?

On Tue, May 23, 2023 at 3:07 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Alexey Kachalin <kachalin.alexey@gmail.com> writes:
> Prepared SQL name collision.  The name implicitly is truncated by
> NAMEDATALEN

This is not a bug.  You exceeded a well-documented implementation
limit, and the response is as documented.

> Is it possible to know which value was used at compilation time from
> application code?

You can do

=# show max_identifier_length;
 max_identifier_length
-----------------------
 63
(1 row)

or various equivalent ways of inspecting that parameter.

                        regards, tom lane

pgsql-bugs by date:

Previous
From: "Wei Wang (Fujitsu)"
Date:
Subject: RE: Logical Replica ReorderBuffer Size Accounting Issues
Next
From: Pavel Borisov
Date:
Subject: Re: Prepared SQL name collision. The name implicitly is truncated by NAMEDATALEN