Hello

I found bug in tsearch2 module (8.3, 8.4).

\i /usr/local/pgsql83/share/contrib/tsearch2.sql
 create table t(d varchar, fi public.tsvector);
CREATE TRIGGER fux BEFORE INSERT OR UPDATE ON fulltexttest FOR EACH
ROW EXECUTE PROCEDURE tsearch2('fi', 'description');

postgres=# INSERT INTO fulltexttest VALUES('Příliš žluťoučký kůň se
napil žluté vody',DEFAULT);
INSERT 0 1
postgres=# INSERT INTO fulltexttest VALUES('Příliš žluťoučký kůň se
napil žluté vody',DEFAULT);
INSERT 0 1
postgres=# INSERT INTO fulltexttest VALUES('Příliš žluťoučký kůň se
napil žluté vody',DEFAULT);
INSERT 0 1
postgres=# INSERT INTO fulltexttest VALUES('Příliš žluťoučký kůň se
napil žluté vody',DEFAULT);
INSERT 0 1
postgres=# SELECT * FROM fulltexttest ;
               description                |
      fi
------------------------------------------+----------------------------------------------------------------------
 Příliš žluťoučký kůň se napil žluté vody | 'kůň':3 'napil':5
'příliš':1 'se':4 'vody':7 'žluté':6 'žluťoučký':2
 Příliš žluťoučký kůň se napil žluté vody | 'kůň':3 'napil':5
'příliš':1 'se':4 'vody':7 'žluté':6 'žluťoučký':2
 Příliš žluťoučký kůň se napil žluté vody | 'kůň':3 'napil':5
'příliš':1 'se':4 'vody':7 'žluté':6 'žluťoučký':2
 Příliš žluťoučký kůň se napil žluté vody | 'kůň':3 'napil':5
'příliš':1 'se':4 'vody':7 'žluté':6 'žluťoučký':2
(4 rows)

postgres=# update fulltexttest set description = description;
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.
!>

it's look like update trigger has different parameters then insert trigger


backtrace
(gdb) bt
#0  0x006a75cd in strncmp () from /lib/libc.so.6
#1  0x082aafc8 in namestrcmp (name=0xb5f09c40, str=0x7f7f7f7f <Address
0x7f7f7f7f out of bounds>) at name.c:252
#2  0x081c39bc in SPI_fnumber (tupdesc=0xb5f09c18, fname=0x7f7f7f7f
<Address 0x7f7f7f7f out of bounds>) at spi.c:699
#3  0x083023c2 in tsvector_update_trigger (fcinfo=0xbfa85c2c,
config_column=0 '\0') at tsvector_op.c:1270
#4  0x001203cd in tsa_tsearch2 (fcinfo=0xbfa85c2c) at tsearch2.c:394
#5  0x08180f3c in ExecCallTriggerFunc (trigdata=<value optimized out>,
tgindx=0, finfo=<value optimized out>, instr=0x0,
    per_tuple_context=0x887a6e4) at trigger.c:1591
#6  0x0818409a in ExecBRUpdateTriggers (estate=0x8880d2c,
relinfo=0x8880db8, tupleid=0xbfa85f4a, newtuple=0x8881be0) at
trigger.c:2016
#7  0x081a2b1d in ExecUpdate (slot=0x8881048) at execMain.c:1909
#8  ExecutePlan () at execMain.c:1578
#9  standard_ExecutorRun (queryDesc=0x8880924,
direction=ForwardScanDirection, count=0) at execMain.c:308
#10 0x08264646 in ProcessQuery (plan=0x883b114, sourceText=0x883945c
"update t set d = d;", params=<value optimized out>, dest=0x883b190,
    completionTag=0xbfa8611a "") at pquery.c:196
#11 0x08264877 in PortalRunMulti (portal=0x887e91c, isTopLevel=<value
optimized out>, dest=0x883b190, altdest=0x883b190,
    completionTag=0xbfa8611a "") at pquery.c:1268
#12 0x08265054 in PortalRun (portal=0x887e91c, count=2147483647,
isTopLevel=100 'd', dest=0x883b190, altdest=0x883b190,
    completionTag=0xbfa8611a "") at pquery.c:823
#13 0x0825fbf0 in exec_simple_query (query_string=0x883945c "update t
set d = d;") at postgres.c:991
#14 0x082614ac in PostgresMain (argc=4, argv=0x87ca528,
username=0x87ca4f8 "pavel") at postgres.c:3606
#15 0x0822c40f in BackendRun () at postmaster.c:3258
#16 BackendStartup () at postmaster.c:2872
#17 ServerLoop () at postmaster.c:1283
#18 0x0822d390 in PostmasterMain (argc=3, argv=0x87c7448) at postmaster.c:1031
#19 0x081cf5c6 in main (argc=3, argv=0x87c7448) at main.c:188
(gdb)

-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to