Thread: 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