Thread: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

From
"Thomas T. Thai"
Date:
System: NetBSD / Alpha 1.6 (64 bit)
Postgresql 7.3.2

Bug: after vacuum analyze, I'm unable to do a simple select. Instead I'm
getting this error:
 ERROR:  datumGetSize: Invalid typLen 0

Many thanks to Teodor Sigaev for helping verify this bug. The following
test suite came from Teodor:

Reproduce bug:
initdb and start postmaster
%createdb foo
%psql foo < bug.sql
CREATE TABLE
INSERT 16996 1
INSERT 16997 1
CREATE TABLE
INSERT 17003 1 ts_name | ts_name
---------+--------- default | default default | default
(2 rows)

VACUUM
ERROR:  datumGetSize: Invalid typLen 0


bug.sql is very simple:
------------------------------------------------
CREATE TABLE pg_ts_cfgmap (    ts_name text
);

insert into pg_ts_cfgmap values ('default');
insert into pg_ts_cfgmap values ('default');


CREATE TABLE pg_ts_cfg (    ts_name text
);

insert into pg_ts_cfg values ('default');

select       *
from        pg_ts_cfgmap,        pg_ts_cfg
where        pg_ts_cfgmap.ts_name = pg_ts_cfg.ts_name;


vacuum analyze pg_ts_cfgmap;

select        *
from        pg_ts_cfgmap,        pg_ts_cfg
where        pg_ts_cfgmap.ts_name = pg_ts_cfg.ts_name;

---------------------------------------------------

Thomas



Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

From
"Thomas T. Thai"
Date:
I just tested this on 7.4-snapshot-2003-03-24 and the same error occurred.
The one regression test (opr_sanity) in 7.4-snapshot that failed also had
this error.
 ERROR:  datumGetSize: Invalid typLen 0

> System: NetBSD / Alpha 1.6 (64 bit)
> Postgresql 7.3.2
>
> Bug: after vacuum analyze, I'm unable to do a simple select. Instead I'm
> getting this error:
>
>   ERROR:  datumGetSize: Invalid typLen 0
>
> Many thanks to Teodor Sigaev for helping verify this bug. The following
> test suite came from Teodor:
>
> Reproduce bug:
> initdb and start postmaster
> %createdb foo
> %psql foo < bug.sql
> CREATE TABLE
> INSERT 16996 1
> INSERT 16997 1
> CREATE TABLE
> INSERT 17003 1
>   ts_name | ts_name
> ---------+---------
>   default | default
>   default | default
> (2 rows)
>
> VACUUM
> ERROR:  datumGetSize: Invalid typLen 0
>
>
> bug.sql is very simple:
> ------------------------------------------------
> CREATE TABLE pg_ts_cfgmap (
>      ts_name text
> );
>
> insert into pg_ts_cfgmap values ('default');
> insert into pg_ts_cfgmap values ('default');
>
>
> CREATE TABLE pg_ts_cfg (
>      ts_name text
> );
>
> insert into pg_ts_cfg values ('default');
>
> select
>         *
> from
>          pg_ts_cfgmap,
>          pg_ts_cfg
> where
>          pg_ts_cfgmap.ts_name = pg_ts_cfg.ts_name;
>
>
> vacuum analyze pg_ts_cfgmap;
>
> select
>          *
> from
>          pg_ts_cfgmap,
>          pg_ts_cfg
> where
>          pg_ts_cfgmap.ts_name = pg_ts_cfg.ts_name;
>
> ---------------------------------------------------
>
> Thomas
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org



Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

From
"Thomas T. Thai"
Date:
Please also note that if you change the data type from text to int, then
the test succeeds:

CREATE TABLE wow_cfgmap (    ts_id int
);

insert into wow_cfgmap values (1);
insert into wow_cfgmap values (2);


CREATE TABLE wow_cfg (    ts_id int
);

insert into wow_cfg values (1);

select       *
from        wow_cfgmap,        wow_cfg
where        wow_cfgmap.ts_id = wow_cfg.ts_id;


vacuum analyze wow_cfgmap;

select        *
from        wow_cfgmap,        wow_cfg
where        wow_cfgmap.ts_id = wow_cfg.ts_id;


> System: NetBSD / Alpha 1.6 (64 bit)
> Postgresql 7.3.2
>
> Bug: after vacuum analyze, I'm unable to do a simple select. Instead I'm
> getting this error:
>
>   ERROR:  datumGetSize: Invalid typLen 0
>
> Many thanks to Teodor Sigaev for helping verify this bug. The following
> test suite came from Teodor:
>
> Reproduce bug:
> initdb and start postmaster
> %createdb foo
> %psql foo < bug.sql
> CREATE TABLE
> INSERT 16996 1
> INSERT 16997 1
> CREATE TABLE
> INSERT 17003 1
>   ts_name | ts_name
> ---------+---------
>   default | default
>   default | default
> (2 rows)
>
> VACUUM
> ERROR:  datumGetSize: Invalid typLen 0
>
>
> bug.sql is very simple:
> ------------------------------------------------
> CREATE TABLE pg_ts_cfgmap (
>      ts_name text
> );
>
> insert into pg_ts_cfgmap values ('default');
> insert into pg_ts_cfgmap values ('default');
>
>
> CREATE TABLE pg_ts_cfg (
>      ts_name text
> );
>
> insert into pg_ts_cfg values ('default');
>
> select
>         *
> from
>          pg_ts_cfgmap,
>          pg_ts_cfg
> where
>          pg_ts_cfgmap.ts_name = pg_ts_cfg.ts_name;
>
>
> vacuum analyze pg_ts_cfgmap;
>
> select
>          *
> from
>          pg_ts_cfgmap,
>          pg_ts_cfg
> where
>          pg_ts_cfgmap.ts_name = pg_ts_cfg.ts_name;
>
> ---------------------------------------------------
>
> Thomas
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org



Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

From
Neil Conway
Date:
On Wed, 2003-03-26 at 20:42, Thomas T. Thai wrote:
> initdb and start postmaster
> %createdb foo
> %psql foo < bug.sql
> CREATE TABLE
> INSERT 16996 1
> INSERT 16997 1
> CREATE TABLE
> INSERT 17003 1
>   ts_name | ts_name
> ---------+---------
>   default | default
>   default | default
> (2 rows)
> 
> VACUUM
> ERROR:  datumGetSize: Invalid typLen 0

Works for me:

[nconway:/home/nconway]% psql -f bug.sql 
CREATE TABLE
INSERT 287424 1
INSERT 287425 1
CREATE TABLE
INSERT 287431 1ts_name | ts_name 
---------+---------default | defaultdefault | default
(2 rows)

VACUUMts_name | ts_name 
---------+---------default | defaultdefault | default
(2 rows)

That's on CVS from a couple days ago, loading bug.sql into an
already-existing database. The machine is running Linux on x86 and
PostgreSQL is compiled with gcc 3.2.3.

Not to suggest that the bug doesn't exist -- merely that it appears to
be platform or hardware-dependant.

Cheers,

Neil



Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

From
"Tom"
Date:
> On Wed, 2003-03-26 at 20:42, Thomas T. Thai wrote:
[...]
>> ERROR:  datumGetSize: Invalid typLen 0
>
> Works for me:
>
> [nconway:/home/nconway]% psql -f bug.sql
> CREATE TABLE
> INSERT 287424 1
> INSERT 287425 1
> CREATE TABLE
> INSERT 287431 1
>  ts_name | ts_name
> ---------+---------
>  default | default
>  default | default
> (2 rows)
>
> VACUUM
>  ts_name | ts_name
> ---------+---------
>  default | default
>  default | default
> (2 rows)
[...]
> Not to suggest that the bug doesn't exist -- merely that it appears to
> be platform or hardware-dependant.

I think it's NetBSD / Alpha specific as it works on Linux / Alpha.

--
Thomas



Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

From
"Thomas T. Thai"
Date:
>> On Wed, 2003-03-26 at 20:42, Thomas T. Thai wrote:
> [...]
>>> ERROR:  datumGetSize: Invalid typLen 0
>>
>> Works for me:
>>
>> [nconway:/home/nconway]% psql -f bug.sql
>> CREATE TABLE
>> INSERT 287424 1
>> INSERT 287425 1
>> CREATE TABLE
>> INSERT 287431 1
>>  ts_name | ts_name
>> ---------+---------
>>  default | default
>>  default | default
>> (2 rows)
>>
>> VACUUM
>>  ts_name | ts_name
>> ---------+---------
>>  default | default
>>  default | default
>> (2 rows)
> [...]
>> Not to suggest that the bug doesn't exist -- merely that it appears to
>> be platform or hardware-dependant.
>
> I think it's NetBSD / Alpha specific as it works on Linux / Alpha.

There was a report of this problem on Linux Alpha back in 7.3.1:

http://archives.postgresql.org/pgsql-bugs/2002-12/msg00215.php

--
Thomas



Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

From
Tom Lane
Date:
Neil Conway <neilc@samurai.com> writes:
> On Wed, 2003-03-26 at 20:42, Thomas T. Thai wrote:
>> ERROR:  datumGetSize: Invalid typLen 0

> Works for me:

Me too.  Could be a 64-bit issue?  Or a bug in the compiler Thomas is
using?

Please get a stack trace from the point of the error and post that.
        regards, tom lane



Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen

From
Teodor Sigaev
Date:

Tom Lane wrote:
> Neil Conway <neilc@samurai.com> writes:
> 
>>On Wed, 2003-03-26 at 20:42, Thomas T. Thai wrote:
>>
>>>ERROR:  datumGetSize: Invalid typLen 0
> 
> 
>>Works for me:
> 
> 
> Me too.  Could be a 64-bit issue? 

On box with
%uname -a
OSF1 xxx.xxx.msu.su V4.0 564.32 alpha
%gcc -v
Reading specs from 
/usr/local/egcs/lib/gcc-lib/alphaev56-dec-osf4.0c/egcs-2.90.23/specs
gcc version egcs-2.90.23 980102 (egcs-1.0.1 release)

it works fine.


> Or a bug in the compiler Thomas is
> using?
gcc 2.95.3 was used at Thomas's  box.

> Please get a stack trace from the point of the error and post that.

-- 
Teodor Sigaev                                  E-mail: teodor@sigaev.ru



Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

From
"Tom"
Date:
> Neil Conway <neilc@samurai.com> writes:
>> On Wed, 2003-03-26 at 20:42, Thomas T. Thai wrote:
>>> ERROR:  datumGetSize: Invalid typLen 0
>
>> Works for me:
>
> Me too.  Could be a 64-bit issue?  Or a bug in the compiler Thomas is
> using?
>
> Please get a stack trace from the point of the error and post that.

Tom, since I am unable to send direct email to you because the larger
63.226.* ip class is blocked by five-ten-sg.com. I only have a small
63.226.186.152/29 block under that, but I get affected too.

---
<tgl@sss.pgh.pa.us>:
Connected to 192.204.191.242 but sender was rejected.
Remote host said: 550 5.7.1 Probable spam from 63.226.186.153 refused - see
http://www.five-ten-sg.com/blackhole.php?63.226.186.153
---

If you would like, I can create an account and you can test it out? Do you
have a diff email address we could communicate through?

The error:
 ERROR:  datumGetSize: Invalid typLen 0

doesn't cause a crash on 7.4-snapshot. Is there a way to trace the problem
to see what it's doing? Here is my GCC version:

# gcc -v
Using builtin specs.
gcc version 2.95.3 20010315 (release) (NetBSD nb3)

--
Thomas