On Mon, Jun 27, 2005 at 02:27:41PM -0300, jimmy.olsen wrote: > > SELECT attname, atttypid, attlen > FROM pg_attribute > where atttypid IN(1042, 1043) > > The attlen column always returns -1 for bpchar and varchar columns. the > postgre version is 8.0.1. When I look the tables in pgAdmin the column > lengths are correct. Where can I find the correct column lengths??
See the atttypmod column or the format_type() function: CREATE TABLE foo ( col_char_1 char(1), col_char_5 char(5), col_varchar_10 varchar(10), col_text text ); SELECT attname, attlen, atttypmod, format_type(atttypid, atttypmod) FROM pg_attribute WHERE attrelid = 'foo'::regclass AND attnum > 0; attname | attlen | atttypmod | format_type ----------------+--------+-----------+----------------------- col_char_1 | -1 | 5 | character(1) col_char_5 | -1 | 9 | character(5) col_varchar_10 | -1 | 14 | character varying(10) col_text | -1 | -1 | text (4 rows) Notice that atttypmod is 4 greater than the declared length; presumably the difference is due to the varlena header (the 32-bit integer that stores the data length). However, that's getting a little close to internals, so you might want to stick with calling format_type(). BTW, it's "PostgreSQL" or "Postgres," not "Postgre." -- Michael Fuhr http://www.fuhr.org/~mfuhr/ ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org