Seems that plpgsql in 8.2B1 thinks that selects of the form ' .... and foo not in (select ... )' should be function calls, not subselects. These worked fine in 8.1. Here's a smallish script which reproduces the problem on 8.2RC1 / OSX: If you comment out the 'and NEW.id not in (select t1_id from skip_t1_ids) ' clause in the trigger, then the script completes. social=# \i 8.2.bug.sql BEGIN psql:8.2.bug.sql:15: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1" CREATE TABLE CREATE TABLE CREATE SEQUENCE CREATE TABLE CREATE FUNCTION CREATE TRIGGER INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 INSERT 0 1 psql:8.2.bug.sql:52: ERROR: cache lookup failed for function 0 CONTEXT: SQL statement "SELECT $1 <> $2 and $3 not in (select t1_id from skip_t1_ids)" PL/pgSQL function "track_t1_changes" line 2 at if ROLLBACK ---- James Robinson Socialserve.com
James Robinson <jlrobins@socialserve.com> writes:
> Seems that plpgsql in 8.2B1 thinks that selects of the form ' ....
> and foo not in (select ... )' should be function calls, not
> subselects. These worked fine in 8.1.
Fixed, thanks. It's not actually plpgsql's fault ...
regards, tom lane
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера