X-Original-To: pgsql-interfaces-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id 5D1C5D1B18C for ; Thu, 8 Jul 2004 15:59:04 -0300 (ADT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 29218-09 for ; Thu, 8 Jul 2004 18:58:57 +0000 (GMT) Received: from amanda.contactbda.com (ipn36372-e65122.net-resource.net [216.204.66.226]) by svr1.postgresql.org (Postfix) with ESMTP id 69EF5D1B1B6 for ; Thu, 8 Jul 2004 15:58:54 -0300 (ADT) Received: from amanda.contactbda.com (localhost [127.0.0.1]) by amanda.contactbda.com (8.12.11/8.12.11/Debian-3) with ESMTP id i68Iwsqq021962; Thu, 8 Jul 2004 14:58:54 -0400 From: "Jim Buttafuoco" To: Paul Tilles , interfaces Reply-To: jim@contactbda.com Subject: Re: [Fwd: typlen field in the pg_type table] Date: Thu, 8 Jul 2004 14:58:54 -0400 Message-Id: <20040708185334.M89352@contactbda.com> In-Reply-To: <40ED94F5.71337531@noaa.gov> References: <40ED94F5.71337531@noaa.gov> X-Mailer: Open WebMail 2.32 20040525 X-OriginatingIP: 192.168.1.1 (jim) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.0 tagged_above=0.0 required=5.0 tests= X-Spam-Level: X-Archive-Number: 200407/22 X-Sequence-Number: 5028 you want the atttypmod column which will be 4 bytes bigger that you specified in your create statement. SELECT a.attnum,a.attname, t.typname || case when t.typname in ('bpchar','varchar') then '(' || atttypmod - 4 || ')' else '' end FROM pg_class c, pg_attribute a, pg_type t WHERE c.relname = 'YOUR_TABLE_NAME_HERE' AND a.attnum > 0 AND a.attrelid = c.oid AND a.atttypid = t.oid ORDER BY a.attnum ---------- Original Message ----------- From: Paul Tilles To: interfaces Sent: Thu, 08 Jul 2004 14:39:49 -0400 Subject: [INTERFACES] [Fwd: typlen field in the pg_type table] > Forgot to mention that I am working with Version 7.4.3. > > Paul Tilles wrote: > > > For each table in my database, I am trying to extract the column name, > > column type and column length from the system catalog tables. I am able > > to get the column name from the pg_attribute table and the column type > > from the pg_type table. However, I am having a problem extracting the > > length of character columns from the typlen field of the pg_type table. > > > > For example, I have a column defined as a char(20). The column type is > > set to "bpchar" but the typlen value for this column is -1. The > > documentation says that a value of -1 indicates "... has a length > > word". Can I extract the length of the field (in this case 20) from any > > field in the system catalog tables? > > > > In the documentation (Section 43.29) for the typlen field, it says "... > > for a variable-length type, typlen is negative". In Section 10.4, Item > > 3 says "... fixed-length type(e.g., char ...". All of the char columns > > in my database have typlen = -1. IS A CHAR FIELD CONSIDERED A > > FIXED-LENGTH OR VARIABLE-LENGTH TYPE BY POSTGRESQL? > > > > Paul Tilles > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) ------- End of Original Message -------