Re: PL/pgSQL bug?
От | Tatsuo Ishii |
---|---|
Тема | Re: PL/pgSQL bug? |
Дата | |
Msg-id | 20010811091726V.t-ishii@sra.co.jp обсуждение исходный текст |
Ответ на | Re: PL/pgSQL bug? (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
> Tatsuo Ishii <t-ishii@sra.co.jp> writes: > > NOTICE: ctid (0,5) xmin 645188 xmax 645190 cmin 2 cmax 2 > > This is odd too, since xmax > 0 or cmax > 0 should never happen with > > visible tuples, in my understanding. > > That's what the docs presently say, but they're in error --- nonzero > xmax could represent a not-yet-committed deleting xact (or one that > did commit, but not in your snapshot); or it could be from a deleting > xact that rolled back. > > I get > > regression=# SELECT myftest(1); > NOTICE: Error occurred while executing PL/pgSQL function myftest > NOTICE: line 6 at SQL statement > ERROR: parser: parse error at or near "ctid" > regression=# > > so there's something wrong with the function as posted. > > regards, tom lane > Sorry, please try new one attatched below. DROP TABLE t1; CREATE TABLE t1 (i INT PRIMARY KEY); INSERT INTO t1 VALUES(1); DROP FUNCTION myftest(INT); CREATE FUNCTION myftest(INT) RETURNS INT AS 'DECLARE myid INT;DECLARE rec RECORD;key ALIAS FOR $1;BEGIN UPDATE t1 SET i = 1 WHERE i = 1; SELECT INTO myid i FROMt1 WHERE i = (SELECT i FROM t1 WHERE i = 1); FOR rec IN SELECT ctid,xmin,xmax,cmin,cmax from t1 LOOP RAISE NOTICE''ctid % xmin % xmax % cmin % cmax %'', rec.ctid,rec.xmin,rec.xmax,rec.cmin,rec.cmax; END LOOP; RETURN 0; END;'LANGUAGE'plpgsql';
В списке pgsql-hackers по дате отправления: