Skip site navigation (1) Skip section navigation (2)

BUG #5798: Some weird error with pl/pgsql procedure

From: "Maxim Boguk" <Maxim(dot)Boguk(at)gmail(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #5798: Some weird error with pl/pgsql procedure
Date: 2010-12-21 02:48:09
Message-ID: 201012210248.oBL2m9sp090535@wwwmaster.postgresql.org (view raw or flat)
Thread:
Lists: pgsql-bugs
The following bug has been logged online:

Bug reference:      5798
Logged by:          Maxim Boguk
Email address:      Maxim(dot)Boguk(at)gmail(dot)com
PostgreSQL version: 8.4.4
Operating system:   FreeBSD 7.2
Description:        Some weird error with pl/pgsql procedure
Details: 

While I testing my table compactor utility 
(http://code.google.com/p/compacttable/), I sometime getting exeptionally
weird errors from pl/pgsql procedure.

2010-12-21 05:17:19 MSK 17263 postgres(at)hh from 192.168.1.129
[vxid:22/1898656 txid:20671567] [SELECT] ERROR:  cannot extract system
attribute from virtual tuple
2010-12-21 05:17:19 MSK 17263 postgres(at)hh from 192.168.1.129
[vxid:22/1898656 txid:20671567] [SELECT] CONTEXT:  PL/pgSQL function
"__clear_table_tail" line 50 at FOR over EXECUTE statement
2010-12-21 05:17:19 MSK 17263 postgres(at)hh from 192.168.1.129
[vxid:22/1898656 txid:20671567] [SELECT] STATEMENT:
        SELECT * from __clear_table_tail('vacancy_view', 'public', 'count_',
25053, 25)

Now 50th line of the procedure is:
        --trying update all tuples in current page range
        FOR _new_tid IN EXECUTE 'UPDATE ONLY ' ||
quote_ident(arg_relnamespace) || '.' || quote_ident(arg_relname) || ' SET '
|| arg_field || ' = ' || arg_field || ' WHERE ctid=ANY($1) RETURNING ctid'
USING _current_tid_list LOOP

This error usually happen with another error from Slony side (this error
easy to understand and not an problem at all):
2010-12-21 05:15:08 MSK 24679 slony(at)hh from [local] [vxid:37/4336609
txid:20671079] [UPDATE] ERROR:  could not serialize access due to concurrent
update
2010-12-21 05:15:08 MSK 24679 slony(at)hh from [local] [vxid:37/4336609
txid:20671079] [UPDATE] STATEMENT:  update only "public"."vacancy_view" set
"count_"='1428' where "vacancy_id"='3568635';
...

I think there some strange concurrency issues with pl/pgsql and slony, and I
don't understand reason of that error.

This error not easy to reproduce but happens for me 3 times during tests on
130GB slave database run with my utility.

Anyone can enlighten me what happens here?

Responses

pgsql-bugs by date

Next:From: Sandro SantilliDate: 2010-12-21 10:08:40
Subject: BUG #5799: failed to find conversion function from unknown to text
Previous:From: Peter EisentrautDate: 2010-12-20 22:55:21
Subject: Re: BUG #5795: 9.0.2 PDF needs editing

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group