I am using the following info to migrate a table from 6.2.1 to 6.3

\connect template1 
drop database magecal;
create database magecal;
\connect magecal 
\connect - julie
CREATE TABLE dates (id int4, date char(10), news char(1024)) archive = none;
COPY dates FROM stdin;
1	1998Jan16	<H3>Calendar Created</H3>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          !
                                             
\.
CREATE  INDEX dates_indx on dates using btree ( id int4_ops, date bpchar_ops );


now if I connect to the database and do

select attlen from pg_attribute where attname='news';

I get
-1

This doesn't seem quite right.

Julie

-- 
[  Julia Anne Case  ] [        Ships are safe inside the harbor,       ]
[Programmer at large] [      but is that what ships are really for.    ]  
[   Admining Linux  ] [           To thine own self be true.           ]
[ Windows/WindowsNT ] [ Fair is where you take your cows to be judged. ]

Tue, 10 Mar 1998 10:00:56 +0000
"Julia A.Case" <julie@hub.org>
attlen weirdness?
Quoting The Hermit Hacker (scrappy@hub.org):
> 
> Bruce?  Guys?  Any word on this one?  I *thought* I remembered reading
> soething about the 'attlen' becoming -1, but just checked the mailing list
> archives and couldn't find anything :(
>

	It appears as if atttypmod now has the field length + 4 ???

        Julie

-- 
[  Julia Anne Case  ] [        Ships are safe inside the harbor,       ]
[Programmer at large] [      but is that what ships are really for.    ]  
[   Admining Linux  ] [           To thine own self be true.           ]
[ Windows/WindowsNT ] [ Fair is where you take your cows to be judged. ]

Wed, 11 Mar 1998 08:21:24 +0000
"Julia A.Case" <julie@hub.org>
Re: [HACKERS] attlen weirdness?
Quoting Bruce Momjian (maillist@candle.pha.pa.us):
> I assume you are asking of attlen for char() and varchar() have the max
> length.  The answer is now NO.  They are varlena structures like text,
> and so have a attlen of -1.  Atttypmod for that pg_attribute row now has
> the defined length.
> 

	Even for a char(4) field?  ok, if attlen doesn't give the
length of a field, how do I find it?

Julie

-- 
[  Julia Anne Case  ] [        Ships are safe inside the harbor,       ]
[Programmer at large] [      but is that what ships are really for.    ]  
[   Admining Linux  ] [           To thine own self be true.           ]
[ Windows/WindowsNT ] [ Fair is where you take your cows to be judged. ]

Wed, 11 Mar 1998 10:16:05 +0000
"Julia A.Case" <julie@hub.org>
Re: [HACKERS] attlen weirdness?
Quoting Bruce Momjian (maillist@candle.pha.pa.us):
> 
> pg_attribute.atttypmod.
> 
	this field appears to be field size + 4
        in a char(1024) field it returns 1028
        in a char(10) it returns 14

        is it padded?

        Julie

-- 
[  Julia Anne Case  ] [        Ships are safe inside the harbor,       ]
[Programmer at large] [      but is that what ships are really for.    ]  
[   Admining Linux  ] [           To thine own self be true.           ]
[ Windows/WindowsNT ] [ Fair is where you take your cows to be judged. ]

Wed, 11 Mar 1998 10:21:29 +0000
"Julia A.Case" <julie@hub.org>
Re: [HACKERS] attlen weirdness?

Bruce?  Guys?  Any word on this one?  I *thought* I remembered reading
soething about the 'attlen' becoming -1, but just checked the mailing list
archives and couldn't find anything :(

Thanks...

On Tue, 10 Mar 1998, Julia A.Case wrote:

> I am using the following info to migrate a table from 6.2.1 to 6.3
> 
> \connect template1 
> drop database magecal;
> create database magecal;
> \connect magecal 
> \connect - julie
> CREATE TABLE dates (id int4, date char(10), news char(1024)) archive = none;
> COPY dates FROM stdin;
> 1	1998Jan16	<H3>Calendar Created</H3>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          !
> !
> !
>                                              
> \.
> CREATE  INDEX dates_indx on dates using btree ( id int4_ops, date bpchar_ops );
> 
> 
> now if I connect to the database and do
> 
> select attlen from pg_attribute where attname='news';
> 
> I get
> -1
> 
> This doesn't seem quite right.
> 
> Julie
> 
> -- 
> [  Julia Anne Case  ] [        Ships are safe inside the harbor,       ]
> [Programmer at large] [      but is that what ships are really for.    ]  
> [   Admining Linux  ] [           To thine own self be true.           ]
> [ Windows/WindowsNT ] [ Fair is where you take your cows to be judged. ]
> 


Wed, 11 Mar 1998 08:11:48 -0500 (EST)
The Hermit Hacker <scrappy@hub.org>
Re: [HACKERS] attlen weirdness?
> 
> Quoting The Hermit Hacker (scrappy@hub.org):
> > 
> > Bruce?  Guys?  Any word on this one?  I *thought* I remembered reading
> > soething about the 'attlen' becoming -1, but just checked the mailing list
> > archives and couldn't find anything :(
> >
> 
> 	It appears as if atttypmod now has the field length + 4 ???

I am the atttypmod guy, but there is not enough context to answer this
question.


-- 
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Wed, 11 Mar 1998 09:41:07 -0500 (EST)
Bruce Momjian <maillist@candle.pha.pa.us>
Re: [HACKERS] attlen weirdness?
> 
> Quoting The Hermit Hacker (scrappy@hub.org):
> > 
> > Bruce?  Guys?  Any word on this one?  I *thought* I remembered reading
> > soething about the 'attlen' becoming -1, but just checked the mailing list
> > archives and couldn't find anything :(
> >
> 
> 	It appears as if atttypmod now has the field length + 4 ???

I assume you are asking of attlen for char() and varchar() have the max
length.  The answer is now NO.  They are varlena structures like text,
and so have a attlen of -1.  Atttypmod for that pg_attribute row now has
the defined length.

In the old days, pre 6.3, pg_type.typlen != pg_attribute.attlen for
char() and varchar(), causing all sorts of type-conditional wierness in
the backend for these types.  With the new code, pg_type.typlen =
pg_attribute.attlen all the time.

-- 
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Wed, 11 Mar 1998 09:44:43 -0500 (EST)
Bruce Momjian <maillist@candle.pha.pa.us>
Re: [HACKERS] attlen weirdness?
> 
> Quoting Bruce Momjian (maillist@candle.pha.pa.us):
> > I assume you are asking of attlen for char() and varchar() have the max
> > length.  The answer is now NO.  They are varlena structures like text,
> > and so have a attlen of -1.  Atttypmod for that pg_attribute row now has
> > the defined length.
> > 
> 
> 	Even for a char(4) field?  ok, if attlen doesn't give the
> length of a field, how do I find it?

pg_attribute.atttypmod.

-- 
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Wed, 11 Mar 1998 10:20:35 -0500 (EST)
Bruce Momjian <maillist@candle.pha.pa.us>
Re: [HACKERS] attlen weirdness?
> 
> Quoting Bruce Momjian (maillist@candle.pha.pa.us):
> > 
> > pg_attribute.atttypmod.
> > 
> 	this field appears to be field size + 4
>         in a char(1024) field it returns 1028
>         in a char(10) it returns 14
> 
>         is it padded?
> 

Yes.  All varlena sizes store the VARHDRSZ, variable header size of 4,
in the length field.

-- 
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Wed, 11 Mar 1998 10:53:10 -0500 (EST)
Bruce Momjian <maillist@candle.pha.pa.us>
Re: [HACKERS] attlen weirdness?