PostgreSQL appears to truncate column alias names after 31 characters.

Started by Manish Singhover 1 year ago2 messagesbugs
Jump to latest
#1Manish Singh
manish.singh@india.corelynx.com

Hello,
I am using pgsql with laravel. I have noticed that PostgreSQL appears to truncate column alias names
after 31 characters.

For example (this is from the psql command-line tool):

SELECT rss_headline_id as abcdefghijklmno pqrstuvwxyz1234 56, title, url
FROM news_rss_headli nes headlines WHERE rss_headline_id = 22833;
NOTICE: identifier "abcdefghijklmn opqrstuvwxyz123 456" will be
truncated to "abcdefghijklmn opqrstuvwxyz123 45"

Granted, having alias names this long may seem a little goofy, but I
am working on an object Persistence Layer that has the capability of
sometimes generating long aliases behind the scenes.

Does anyone know if this is a known limitation to PostgreSQL ? (I
couldn't find any documentation which specifically addresses this
issue) Is there a way to make PostreSQL support longer alias names?
Are there any plans to address this in future version of PostgreSQL?
Or... should I just "suck it up" and fix my code? ;-).

Please suggest me how can i solve this problem.I can not switch my RDBMS from PGSQL to others

Any insights or comments would be appreciated.

Thanks,
Manish Kumar Singh

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Manish Singh (#1)
Re: PostgreSQL appears to truncate column alias names after 31 characters.

On Tue, 2024-10-01 at 07:06 +0000, Manish Singh wrote:

I am using pgsql with laravel.I have noticed that PostgreSQL appears to truncate column alias names
after 31 characters.

For example (this is from the psql command-line tool):

SELECT rss_headline_id as abcdefghijklmno pqrstuvwxyz1234 56, title, url
FROM news_rss_headli nes headlines WHERE rss_headline_id = 22833;
NOTICE: identifier "abcdefghijklmn opqrstuvwxyz123 456" will be
truncated to "abcdefghijklmn opqrstuvwxyz123 45"

I cannot reproduce that.
Unless you modify the source, identifiers will be cut off after 63 bytes
(NAMEDATALEN - 1; one byte is for the terminating zero byte).

Did you modify the source?
Also, the spaces in your identifier should cause a syntax error.
Can you explain why you don't get such an error?

Yours,
Laurenz Albe