We may have uncovered an incompatibility with DBD::Pg (version 1.20 is
the latest we have) and the newly-released PostgreSQL 7.3.
It appears that the DESTROY method for database and/or statement handles
is referencing a system table ("pg_relcheck") that no longer exists.
Attached is the trace that illustrates the problem.
-> ping for DBD::Pg::db (DBI::db=HASH(0x8aca764)~0x8aca7d0)
dbd_db_ping
<- ping= 1 at Table.pm line 1475
-> prepare for DBD::Pg::db (DBI::db=HASH(0x8aca764)~0x8aca7d0 'SELECT * FROM
job_methods LIMIT 1')
dbd_st_prepare: statement = >SELECT * FROM job_methods LIMIT 1<
dbd_st_preparse: statement = >SELECT * FROM job_methods LIMIT 1<
<- prepare= DBI::st=HASH(0x8bf3694) at DBConnection.pm line 635
-> execute for DBD::Pg::st (DBI::st=HASH(0x8bf3694)~0x8bf3868)
dbd_st_execute
dbd_st_execute: statement = >SELECT * FROM job_methods LIMIT 1<
<- execute= 1 at Table.pm line 1321
-> errstr for DBD::Pg::st (DBI::st=HASH(0x8bf3694)~0x8bf3868)
<- errstr= undef at Table.pm line 1322
-> FETCH for DBD::Pg::st (DBI::st=HASH(0x8bf3868)~INNER 'NAME_lc')
dbd_st_FETCH
1 -> FETCH for DBD::Pg::st (DBI::st=HASH(0x8bf3868)~INNER 'NAME')
dbd_st_FETCH
1 <- FETCH= [ 'method_id' 'method_name' ] at Table.pm line 1337
<- FETCH= [ 'method_id' 'method_name' ] at Table.pm line 1337
-> DESTROY for DBD::Pg::st (DBI::st=HASH(0x8bf3868)~INNER)
dbd_st_finish
dbd_st_destroy
<- DESTROY= undef at Table.pm line 1341
-> table_attributes for DBD::Pg::db (DBI::db=HASH(0x8aca764)~0x8aca7d0
'job_methods')
1 -> selectall_arrayref in DBD::_::db for DBD::Pg::db (DBI::db=HASH(0x8aca7d0)~INNER
'select a.attname, t.typname, a.attlen, a.atttypmod, a.attnotnull, a.atthasdef,
a.attnum
from pg_attribute a,
pg_class c,
pg_type t
where c.relname = ?
and a.attrelid = c.oid
and a.attnum >= 0
and t.oid = a.atttypid
order by 1
' undef 'job_methods')
2 -> prepare for DBD::Pg::db (DBI::db=HASH(0x8aca7d0)~INNER 'select a.attname,
t.typname, a.attlen, a.atttypmod, a.attnotnull, a.atthasdef, a.attnum
from pg_attribute a,
pg_class c,
pg_type t
where c.relname = ?
and a.attrelid = c.oid
and a.attnum >= 0
and t.oid = a.atttypid
order by 1
' undef)
dbd_st_prepare: statement = >select a.attname, t.typname, a.attlen, a.atttypmod,
a.attnotnull, a.atthasdef, a.attnum
from pg_attribute a,
pg_class c,
pg_type t
where c.relname = ?
and a.attrelid = c.oid
and a.attnum >= 0
and t.oid = a.atttypid
order by 1
<
dbd_st_preparse: statement = >select a.attname, t.typname, a.attlen, a.atttypmod,
a.attnotnull, a.atthasdef, a.attnum
from pg_attribute a,
pg_class c,
pg_type t
where c.relname = ?
and a.attrelid = c.oid
and a.attnum >= 0
and t.oid = a.atttypid
order by 1
<
dbd_preparse scanned 1 distinct placeholders
2 <- prepare= DBI::st=HASH(0x8bf5520) at DBI.pm line 1251
-> execute for DBD::Pg::st (DBI::st=HASH(0x8bf5520)~0x8adbb64 'job_methods')
dbd_bind_ph
bind :p1 <== 'job_methods' (type 0)
dbd_st_rebind
bind :p1 <== 'job_methods' (size 11/12/0, ptype 4, otype 1043)
dbd_st_execute
dbd_st_execute: statement = >select a.attname, t.typname, a.attlen, a.atttypmod,
a.attnotnull, a.atthasdef, a.attnum
from pg_attribute a,
pg_class c,
pg_type t
where c.relname = 'job_methods'
and a.attrelid = c.oid
and a.attnum >= 0
and t.oid = a.atttypid
order by 1
<
<- execute= 2 at DBI.pm line 1253
-> fetchall_arrayref for DBD::Pg::st (DBI::st=HASH(0x8bf5520)~0x8adbb64 undef
undef)
1 -> fetch for DBD::Pg::st (DBI::st=HASH(0x8adbb64)~INNER)
dbd_st_fetch
1 <- fetch= [ 'method_id' 'int4' '4' '-1' '1' '0' '1' ] row1 at DBI.pm line 1577
1 -> fetch for DBD::Pg::st (DBI::st=HASH(0x8adbb64)~INNER)
dbd_st_fetch
1 <- fetch= [ 'method_name' 'text' '-1' '-1' '1' '0' '2' ] row2 at DBI.pm line 1577
1 -> fetch for DBD::Pg::st (DBI::st=HASH(0x8adbb64)~INNER)
dbd_st_fetch
1 <- fetch= undef row2 at DBI.pm line 1577
<- fetchall_arrayref= [ ARRAY(0x8adbb7c) ARRAY(0x8bf5418) ] row2 at DBI.pm line
1261
-> DESTROY for DBD::Pg::st (DBI::st=HASH(0x8adbb64)~INNER)
dbd_st_destroy
<- DESTROY= undef at perl5db.pl line 1487
1 <- selectall_arrayref= [ ARRAY(0x8adbb7c) ARRAY(0x8bf5418) ] at Pg.pm line 552
1 -> selectrow_array in DBD::_::db for DBD::Pg::db (DBI::db=HASH(0x8aca7d0)~INNER
'SELECT pg_index.indkey
FROM pg_class, pg_index
WHERE
pg_class.oid = pg_index.indrelid
AND pg_class.relname = 'job_methods'
AND pg_index.indisprimary = 't'
')
2 -> prepare for DBD::Pg::db (DBI::db=HASH(0x8aca7d0)~INNER 'SELECT pg_index.indkey
FROM pg_class, pg_index
WHERE
pg_class.oid = pg_index.indrelid
AND pg_class.relname = 'job_methods'
AND pg_index.indisprimary = 't'
' undef)
dbd_st_prepare: statement = >SELECT pg_index.indkey
FROM pg_class, pg_index
WHERE
pg_class.oid = pg_index.indrelid
AND pg_class.relname = 'job_methods'
AND pg_index.indisprimary = 't'
<
dbd_st_preparse: statement = >SELECT pg_index.indkey
FROM pg_class, pg_index
WHERE
pg_class.oid = pg_index.indrelid
AND pg_class.relname = 'job_methods'
AND pg_index.indisprimary = 't'
<
2 <- prepare= DBI::st=HASH(0x8adbbc4) at DBI.pm line 1228
-> execute for DBD::Pg::st (DBI::st=HASH(0x8adbbc4)~0x8bf9d9c)
dbd_st_execute
dbd_st_execute: statement = >SELECT pg_index.indkey
FROM pg_class, pg_index
WHERE
pg_class.oid = pg_index.indrelid
AND pg_class.relname = 'job_methods'
AND pg_index.indisprimary = 't'
<
<- execute= 1 at DBI.pm line 1230
-> fetchrow_arrayref for DBD::Pg::st (DBI::st=HASH(0x8adbbc4)~0x8bf9d9c)
dbd_st_fetch
<- fetchrow_arrayref= [ '1' ] row1 at DBI.pm line 1232
-> finish for DBD::Pg::st (DBI::st=HASH(0x8adbbc4)~0x8bf9d9c)
dbd_st_finish
<- finish= 1 at DBI.pm line 1232
-> DESTROY for DBD::Pg::st (DBI::st=HASH(0x8bf9d9c)~INNER)
dbd_st_destroy
<- DESTROY= undef at perl5db.pl line 1487
1 <- selectrow_array= '1' at Pg.pm line 576
1 -> selectcol_arrayref in DBD::_::db for DBD::Pg::db (DBI::db=HASH(0x8aca7d0)~INNER
'SELECT pg_attribute.attname
FROM pg_class, pg_attribute, pg_index
WHERE pg_class.oid =
pg_attribute.attrelid
AND pg_class.oid =
pg_index.indrelid
AND pg_attribute.attnum in (1)
...' undef 'job_methods')
2 -> prepare for DBD::Pg::db (DBI::db=HASH(0x8aca7d0)~INNER 'SELECT
pg_attribute.attname
FROM pg_class, pg_attribute, pg_index
WHERE pg_class.oid =
pg_attribute.attrelid
AND pg_class.oid =
pg_index.indrelid
AND pg_attribute.attnum in (1)
...' undef)
dbd_st_prepare: statement = >SELECT pg_attribute.attname
FROM pg_class, pg_attribute, pg_index
WHERE pg_class.oid =
pg_attribute.attrelid
AND pg_class.oid =
pg_index.indrelid
AND pg_attribute.attnum in (1)
AND pg_index.indisprimary = 't'
AND pg_class.relname = ?
order by pg_attribute.attnum
<
dbd_st_preparse: statement = >SELECT pg_attribute.attname
FROM pg_class, pg_attribute, pg_index
WHERE pg_class.oid =
pg_attribute.attrelid
AND pg_class.oid =
pg_index.indrelid
AND pg_attribute.attnum in (1)
AND pg_index.indisprimary = 't'
AND pg_class.relname = ?
order by pg_attribute.attnum
<
dbd_preparse scanned 1 distinct placeholders
2 <- prepare= DBI::st=HASH(0x8bf9e14) at DBI.pm line 1274
-> execute for DBD::Pg::st (DBI::st=HASH(0x8bf9e14)~0x8adbb94 'job_methods')
dbd_bind_ph
bind :p1 <== 'job_methods' (type 0)
dbd_st_rebind
bind :p1 <== 'job_methods' (size 11/12/0, ptype 4, otype 1043)
dbd_st_execute
dbd_st_execute: statement = >SELECT pg_attribute.attname
FROM pg_class, pg_attribute, pg_index
WHERE pg_class.oid =
pg_attribute.attrelid
AND pg_class.oid =
pg_index.indrelid
AND pg_attribute.attnum in (1)
AND pg_index.indisprimary = 't'
AND pg_class.relname =
'job_methods'
order by pg_attribute.attnum
<
<- execute= 1 at DBI.pm line 1276
-> bind_col in DBD::_::st for DBD::Pg::st (DBI::st=HASH(0x8bf9e14)~0x8adbb94 1
SCALAR(0x8adbbb8))
<- bind_col= 1 at DBI.pm line 1281
-> fetch for DBD::Pg::st (DBI::st=HASH(0x8bf9e14)~0x8adbb94)
dbd_st_fetch
<- fetch= [ 'method_id' ] row1 at DBI.pm line 1284
-> fetch for DBD::Pg::st (DBI::st=HASH(0x8bf9e14)~0x8adbb94)
dbd_st_fetch
<- fetch= undef row1 at DBI.pm line 1284
-> DESTROY for DBD::Pg::st (DBI::st=HASH(0x8adbb94)~INNER)
dbd_st_destroy
<- DESTROY= undef at perl5db.pl line 1487
1 <- selectcol_arrayref= [ 'method_id' ] at Pg.pm line 586
1 -> selectrow_array for DBD::Pg::db (DBI::db=HASH(0x8aca7d0)~INNER 'select rcsrc
from pg_relcheck where rcname = 'job_methods_method_name'')
2 -> prepare for DBD::Pg::db (DBI::db=HASH(0x8aca7d0)~INNER 'select rcsrc from
pg_relcheck where rcname = 'job_methods_method_name'' undef)
dbd_st_prepare: statement = >select rcsrc from pg_relcheck where rcname =
'job_methods_method_name'<
dbd_st_preparse: statement = >select rcsrc from pg_relcheck where rcname =
'job_methods_method_name'<
2 <- prepare= DBI::st=HASH(0x8bf9dcc) at DBI.pm line 1228
-> execute for DBD::Pg::st (DBI::st=HASH(0x8bf9dcc)~0x8adbb34)
dbd_st_execute
dbd_st_execute: statement = >select rcsrc from pg_relcheck where rcname =
'job_methods_method_name'<
ERROR: Relation "pg_relcheck" does not exist error 7 recorded: ERROR: Relation
"pg_relcheck" does not exist
!! ERROR: 7 'ERROR: Relation "pg_relcheck" does not exist'
<- execute= undef at DBI.pm line 1230
-> DESTROY for DBD::Pg::st (DBI::st=HASH(0x8adbb34)~INNER)
dbd_st_destroy
<- DESTROY= undef at perl5db.pl line 1487
!! ERROR: 7 'ERROR: Relation "pg_relcheck" does not exist'
1 <- selectrow_array= ( ) [0 items] at Pg.pm line 619
1 -> selectrow_array for DBD::Pg::db (DBI::db=HASH(0x8aca7d0)~INNER 'select rcsrc
from pg_relcheck where rcname = 'job_methods_method_id'')
2 -> prepare for DBD::Pg::db (DBI::db=HASH(0x8aca7d0)~INNER 'select rcsrc from
pg_relcheck where rcname = 'job_methods_method_id'' undef)
dbd_st_prepare: statement = >select rcsrc from pg_relcheck where rcname =
'job_methods_method_id'<
dbd_st_preparse: statement = >select rcsrc from pg_relcheck where rcname =
'job_methods_method_id'<
2 <- prepare= DBI::st=HASH(0x8adbb64) at DBI.pm line 1228
-> execute for DBD::Pg::st (DBI::st=HASH(0x8adbb64)~0x8adbbb8)
dbd_st_execute
dbd_st_execute: statement = >select rcsrc from pg_relcheck where rcname =
'job_methods_method_id'<
ERROR: current transaction is aborted, queries ignored until end of transaction block
error 7 recorded: ERROR: current transaction is aborted, queries ignored until end of
transaction block
!! ERROR: 7 'ERROR: current transaction is aborted, queries ignored until end of
transaction block'
<- execute= undef at DBI.pm line 1230
-> DESTROY for DBD::Pg::st (DBI::st=HASH(0x8adbbb8)~INNER)
dbd_st_destroy
<- DESTROY= undef at perl5db.pl line 1487
!! ERROR: 7 'ERROR: current transaction is aborted, queries ignored until end of
transaction block'
1 <- selectrow_array= ( ) [0 items] at Pg.pm line 619
<- table_attributes= [ HASH(0x8adba74) HASH(0x8bf9dcc) ] at DBConnection.pm line
635
-> ping for DBD::Pg::db (DBI::db=HASH(0x8aca764)~0x8aca7d0)
dbd_db_ping
<- ping= 1 at Table.pm line 1475
-> ping for DBD::Pg::db (DBI::db=HASH(0x8aca764)~0x8aca7d0)
dbd_db_ping
<- ping= 1 at Table.pm line 1475
-> ping for DBD::Pg::db (DBI::db=HASH(0x8aca764)~0x8aca7d0)
dbd_db_ping
<- ping= 1 at Table.pm line 1475
-> ping for DBD::Pg::db (DBI::db=HASH(0x8aca764)~0x8aca7d0)
dbd_db_ping
<- ping= 1 at Table.pm line 1475
-> ping for DBD::Pg::db (DBI::db=HASH(0x8aca764)~0x8aca7d0)
dbd_db_ping
<- ping= 1 at Table.pm line 1475
-> ping for DBD::Pg::db (DBI::db=HASH(0x8aca764)~0x8aca7d0)
dbd_db_ping
<- ping= 1 at Table.pm line 1475
-> DESTROY for DBD::Pg::st (DBI::st=HASH(0x8bf36a0)~INNER)
dbd_st_destroy
<- DESTROY= undef at perl5db.pl line 1468
--
Jeff Boes vox 616.226.9550 ext 24
Database Engineer fax 616.349.9076
Nexcerpt, Inc. http://www.nexcerpt.com
...Nexcerpt... Extend your Expertise