2011/2/8 RW Shore <rws228@xxxxxxxxx>
I'm using the following type definition:
create type typedef.BASIC_PEDIGREE as (
ÂÂÂÂÂÂÂ DATE_ADDED TIMESTAMP,
ÂÂÂÂÂÂÂ DESCRIPTION VARCHAR(128) [10]
)\c
I understand that PostgreSQL doesn't enforce the array length [10]. However, I'd like to write an application that can retrieve this length AND the size of the varchar that makes up the array. I can't find these values anyplace in the various system catalogs or views. Does PostgreSQL keep this information someplace and if so where? If there's no way to retrieve (say) the max size of the varchar, does this mean that PostgreSQL does not enforce the max size of this field as well as not enforcing the array bounds?
I am not sure that Postgres keeps array size limits since, according to
http://www.postgresql.org/docs/9.0/static/arrays.html#ARRAYS-DECLARATION
"... current implementation ignores any supplied array size limits ..."
But it is possible to get maximum length of varchar:
SELECT atttypmod - 4 FROM pg_attribute
 WHERE attrelid = 'typedef.BASIC_PEDIGREE'::regclass
 AND attname = 'DESCRIPTION';
Please note that 4 is an integer which represents length.
http://www.postgresql.org/docs/9.0/static/arrays.html#ARRAYS-DECLARATION
"... current implementation ignores any supplied array size limits ..."
But it is possible to get maximum length of varchar:
SELECT atttypmod - 4 FROM pg_attribute
 WHERE attrelid = 'typedef.BASIC_PEDIGREE'::regclass
 AND attname = 'DESCRIPTION';
Please note that 4 is an integer which represents length.
--
// Dmitriy.