Subject: Postgresql - ERROR: datumGetSize: Invalid typLen 0
To: None <port-alpha@netbsd.org>
From: Caffeinate The World <mochaexpress@yahoo.com>
List: port-alpha
Date: 03/27/2003 02:17:50
For Postgresql-7.3.2 and 7.4-snapshot, I get one regression failure on
the Alpha running NetBSD-1.6. This bug only appears on the Alpha and
not i386.

Included inline is the regression test failure and another test case
where this bug shows up.

=======================================================
*** ./expected/opr_sanity.out   Tue Jan 28 16:13:41 2003
--- ./results/opr_sanity.out    Thu Mar 27 03:56:43 2003
***************
*** 46,55 ****
      p1.proname = p2.proname AND
      p1.pronargs = p2.pronargs AND
      p1.proargtypes = p2.proargtypes;
!  oid | proname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
  -- Considering only built-in procs (prolang = 12), look for multiple
uses
  -- of the same internal function (ie, matching prosrc fields).  It's
OK to
  -- have several entries with different pronames for the same internal
function,
--- 46,52 ----
      p1.proname = p2.proname AND
      p1.pronargs = p2.pronargs AND
      p1.proargtypes = p2.proargtypes;
! ERROR:  datumGetSize: Invalid typLen 0
  -- Considering only built-in procs (prolang = 12), look for multiple
uses
  -- of the same internal function (ie, matching prosrc fields).  It's
OK to
  -- have several entries with different pronames for the same internal
function,
***************
*** 276,285 ****
      p1.oprkind = p2.oprkind AND
      p1.oprleft = p2.oprleft AND
      p1.oprright = p2.oprright;
!  oid | oprcode | oid | oprcode
! -----+---------+-----+---------
! (0 rows)
!
  -- Look for commutative operators that don't commute.
  -- DEFINITIONAL NOTE: If A.oprcom = B, then x A y has the same result
as y B x.
  -- We expect that B will always say that B.oprcom = A as well; that's
not
--- 273,279 ----
      p1.oprkind = p2.oprkind AND
      p1.oprleft = p2.oprleft AND
      p1.oprright = p2.oprright;
! ERROR:  datumGetSize: Invalid typLen 0
  -- Look for commutative operators that don't commute.
  -- DEFINITIONAL NOTE: If A.oprcom = B, then x A y has the same result
as y B x.
  -- We expect that B will always say that B.oprcom = A as well; that's
not

================================================================

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


__________________________________________________
Do you Yahoo!?
Yahoo! Platinum - Watch CBS' NCAA March Madness, live on your desktop!
http://platinum.yahoo.com