BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

Started by Thomas T. Thaialmost 23 years ago9 messages
#1Thomas T. Thai
tom@minnesota.com

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

#2Thomas T. Thai
tom@minnesota.com
In reply to: Thomas T. Thai (#1)
Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

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

Show quoted text

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

#3Thomas T. Thai
tom@minnesota.com
In reply to: Thomas T. Thai (#1)
Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

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;

Show quoted text

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

#4Neil Conway
neilc@samurai.com
In reply to: Thomas T. Thai (#1)
Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

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 1
ts_name | ts_name
---------+---------
default | default
default | default
(2 rows)

VACUUM
ts_name | ts_name
---------+---------
default | default
default | 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

#5Tom
tom@minnesota.com
In reply to: Neil Conway (#4)
Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

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

#6Thomas T. Thai
tom@minnesota.com
In reply to: Tom (#5)
Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

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

#7Tom Lane
tgl@sss.pgh.pa.us
In reply to: Neil Conway (#4)
Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

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

#8Teodor Sigaev
teodor@sigaev.ru
In reply to: Tom Lane (#7)
Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen

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

#9Tom
tom@minnesota.com
In reply to: Tom Lane (#7)
Re: BUG: Vacuum Analyze - datumGetSize: Invalid typLen 0

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