Обсуждение: BUG: Vacuum Analyze - 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
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
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
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
> 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
>> 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
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
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
> 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