Postgresql9.6 type cache invalidation issue - different behave ofpsql and pg regress - Mailing list pgsql-hackers

From Pavel Stehule
Subject Postgresql9.6 type cache invalidation issue - different behave ofpsql and pg regress
Date
Msg-id CAFj8pRDTsukmqJBda_cB1R1N1TUdxJPD4kohsHKK4hXAY=-2XQ@mail.gmail.com
Whole thread Raw
Responses Re: Postgresql9.6 type cache invalidation issue - different behave of psql and pg regress
List pgsql-hackers
Hi

I searching a reason why result of plpgsql_check's regress tests are different when its executed from regress tests or interactive.

This is simple test

drop table testtable;

create table testtable(a int, b int);

create or replace function test()
returns int as $$
declare r testtable;
begin
  select * into r from testtable;
  return r.a;
end;
$$ language plpgsql;

alter table testtable drop column b;
select * from plpgsql_check_function('test()');

this test should to return 0 rows, and it is working when I run it as test. But when I execute it in psql I got

┌───────────────────────────────────────────────────────────────────────┐
│                        plpgsql_check_function                         │
╞═══════════════════════════════════════════════════════════════════════╡
│ warning:00000:4:SQL statement:too few attributes for target variables │
│ Detail: There are more target variables than output columns in query. │
│ Hint: Check target variables in SELECT INTO statement.                │
└───────────────────────────────────────────────────────────────────────┘
(3 rows)

In interactive mode, the build_row_from_class has unrefreshed metadata. But why this behave I see only in psql and not in my regress tests?

Regards

Pavel




pgsql-hackers by date:

Previous
From: Amit Langote
Date:
Subject: Re: Should we add GUCs to allow partition pruning to be disabled?
Next
From: Tatsuo Ishii
Date:
Subject: Re: Built-in connection pooling