BUG #14521: pg_attribute.attndims = 0 for array column
The following bug has been logged on the website:
Bug reference: 14521
Logged by: Krzysztof Heim
Email address: krzysztof.heim@gmail.com
PostgreSQL version: 9.6.1
Operating system: Ubuntu 16.04
Description:
Hello,
I have base table A with column type integer array.
I also have table B derived from table A.
When I query pg_attribute for table A, attndims shows 1 (correct), when I do
same query for table B - attndims shows 0 for same column.
Is it a bug, or it's desired behavior (since it's a derived column).
I checked documentation, and it does not say anything about behavior in case
of derived - just says if attndims is > 0 you can assume it's array.
Thanks
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
krzysztof.heim@gmail.com writes:
I have base table A with column type integer array.
I also have table B derived from table A.
When I query pg_attribute for table A, attndims shows 1 (correct), when I do
same query for table B - attndims shows 0 for same column.
Is it a bug, or it's desired behavior (since it's a derived column).
We don't really care. attndims is a historical leftover and should never
be relied on for any semantically significant purpose.
TBH, my inclination would be to remove the column altogether rather than
"fix" this.
regards, tom lane
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
Krzysztof Heim <krzysztof.heim@gmail.com> writes:
If I may ask, what is then the best way of checking if column is array.
The standard way for C code is to use this macro from lsyscache.h:
#define type_is_array(typid) (get_element_type(typid) != InvalidOid)
or depending on what you're doing, you might want these semantics:
/* type_is_array_domain accepts both plain arrays and domains over arrays */
#define type_is_array_domain(typid) (get_base_element_type(typid) != InvalidOid)
or then again, you might just want to check if the type has nonzero
typelem --- that would be the appropriate thing if you want to see
whether the type is subscriptable.
regards, tom lane
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
Import Notes
Reply to msg id not found: CAKn5YFH=UH7np9-OJjRDq+QppNWoS8WuZVCeA0XoueUK_SA-mw@mail.gmail.com