Bug in RI

From: Jeroen van Vianen <jeroen(dot)van(dot)vianen(at)satama(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Bug in RI
Date: 2000-09-21 15:41:10
Message-ID: 4.3.2.7.2.20000921173840.00b36ee0@imap.satama.nl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

I encountered the following problem:

./configure --enable-debug --prefix=/opt/postgres
Edit config.h: BLCKSZ 32768

postgres=# select version();
version
---------------------------------------------------------------
PostgreSQL 7.0.2 on i686-pc-linux-gnu, compiled by gcc 2.95.2
(1 row)

I have the following table:

CREATE TABLE "folders" (
"nr" int4 NOT NULL,
"parent" int4,
"name" character varying(100) NOT NULL,
"lang" character varying(2) NOT NULL,
"sort_order" int2 DEFAULT 0 NOT NULL,
"stylesheet" character varying(100),
"introduction" character varying(1000),
"template" character varying(100) NOT NULL,
"img_normal" character varying(50),
"img_over" character varying(50),
"img_active" character varying(50),
PRIMARY KEY ("nr")
);

CREATE CONSTRAINT TRIGGER "fk_folders__parent" AFTER INSERT OR UPDATE ON
"folders" NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE
PROCEDURE "RI_FKey_check_ins" ('fk_folders__parent', 'folders', 'folders',
'UNSPECIFIED', 'parent', 'nr');

CREATE CONSTRAINT TRIGGER "fk_folders__parent" AFTER DELETE ON
"folders" NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE
PROCEDURE "RI_FKey_noaction_del" ('fk_folders__parent', 'folders',
'folders', 'UNSPECIFIED', 'parent', 'nr');

CREATE CONSTRAINT TRIGGER "fk_folders__parent" AFTER UPDATE ON
"folders" NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE
PROCEDURE "RI_FKey_noaction_upd" ('fk_folders__parent', 'folders',
'folders', 'UNSPECIFIED', 'parent', 'nr');

If I do the following query:

update folders set title='Sitemap' where nr=43;

I get the following error in the log:

Server process (pid 31566) exited with status 139 at Thu Sep 21 17:24:39 2000
Terminating any active server processes...
Server processes were terminated at Thu Sep 21 17:24:39 2000
Reinitializing shared memory and semaphores
The Data Base System is starting up
DEBUG: Data Base System is starting up at Thu Sep 21 17:24:39 2000
DEBUG: Data Base System was interrupted being in production at Thu Sep 21
17:24:25 2000
DEBUG: Data Base System is in production state at Thu Sep 21 17:24:39 2000

and the following error in psql:

pqReadData() -- backend closed the channel unexpectedly.
This probably means the backend terminated abnormally
before or while processing the request.

A backtrace says:

#0 ri_BuildQueryKeyFull (key=0xbfffe4c8, constr_id=21463, constr_queryno=0,
fk_rel=0x0, pk_rel=0x8217c20, argc=6, argv=0x821a9e0) at
ri_triggers.c:2951
2951 key->fk_relid = fk_rel->rd_id;

(gdb) bt
#0 ri_BuildQueryKeyFull (key=0xbfffe4c8, constr_id=21463, constr_queryno=0,
fk_rel=0x0, pk_rel=0x8216780, argc=6, argv=0x8219540) at
ri_triggers.c:2951
#1 0x813292e in RI_FKey_keyequal_upd () at ri_triggers.c:2853
#2 0x809cfe2 in DeferredTriggerSaveEvent (rel=0x8216780, event=2,
oldtup=0x8227bb0, newtup=0x8227ac8) at trigger.c:1904
#3 0x809c0ed in ExecARUpdateTriggers (estate=0x8225dc8, tupleid=0xbfffe668,
newtuple=0x8227ac8) at trigger.c:915
#4 0x80a36a6 in ExecReplace (slot=0x82261e8, tupleid=0xbfffe668,
estate=0x8225dc8) at execMain.c:1591
#5 0x80a3261 in ExecutePlan (estate=0x8225dc8, plan=0x8225cb8,
operation=CMD_UPDATE, offsetTuples=0, numberTuples=0,
direction=ForwardScanDirection, destfunc=0x8227a60) at execMain.c:1213
#6 0x80a27be in ExecutorRun (queryDesc=0x8226048, estate=0x8225dc8,
feature=3, limoffset=0x0, limcount=0x0) at execMain.c:327
#7 0x8101f84 in ProcessQueryDesc (queryDesc=0x8226048, limoffset=0x0,
limcount=0x0) at pquery.c:310
#8 0x8102017 in ProcessQuery (parsetree=0x820a840, plan=0x8225cb8,
dest=Remote) at pquery.c:353
#9 0x8100839 in pg_exec_query_dest (
query_string=0x81bae28 "update folders set name='Sitemap' where nr=43;",
dest=Remote, aclOverride=0) at postgres.c:663
#10 0x81006fa in pg_exec_query (
query_string=0x81bae28 "update folders set name='Sitemap' where nr=43;")
at postgres.c:562
#11 0x81018c3 in PostgresMain (argc=4, argv=0xbfffed80, real_argc=5,
real_argv=0xbffff734) at postgres.c:1590
#12 0x80e9727 in DoBackend (port=0x81c00d8) at postmaster.c:2009
#13 0x80e92da in BackendStartup (port=0x81c00d8) at postmaster.c:1776
#14 0x80e8499 in ServerLoop () at postmaster.c:1037
#15 0x80e7e5e in PostmasterMain (argc=5, argv=0xbffff734) at postmaster.c:725
#16 0x80b485b in main (argc=5, argv=0xbffff734) at main.c:93

Any ideas? If you need any additional info, please let me know.

Jeroen

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Meskes 2000-09-21 17:12:02 Re: loss of portability in ecpg
Previous Message Thomas Lockhart 2000-09-21 15:20:59 Re: Timezone discrepancies