Thanks Tom,
By the way, did you change the whole archetecture of SPI invocation?
I put
---
SPI_connect();
SPI_exec("create temp table tbl_tmp (n int);",0);
SPI_exec("insert into tbl_tmp values (1);",0);
SPI_finish();
---
after InitPostgres and before setsigjmp().
This works perfectly in my 7.03 and earlier version. That means, after authentication, we
will have a temp table per each db connection. User can use the client program to "select"
or "insert" upon this temp table.
However, the same code does not work in 7.1. Actually, I got some messages contradicting to
each other:
---
db1=> select * from tbl_tmp;
ERROR: Relation 'tbl_tmp' does not exist
db1=> create temp table tbl_tmp (n int);
ERROR: Relation 'tbl_tmp' already exists
db1=>
---
Can you please give us some hints on what's going on here?
Thanks
Tom Lane wrote:
> Limin Liu <limin@pumpkinnet.com> writes:
> > I am learning and using SPI. In PostgreSQL documentation chapter "Server
> > Programming Interface," there is a small example name "execq(text,
> > int)".
> > This example works as the document says on 7.0.3 and earlier version,
> > but this example DOES NOT work on my 7.1 beta4.
>
> Hm. textout() can't be called that way anymore --- as indeed your compiler
> should have told you, if it's any good at all. I get
>
> execq.c: In function `execq':
> execq.c:13: warning: passing arg 1 of `textout' from incompatible pointer type
> execq.c:13: warning: passing arg 1 of `SPI_exec' makes pointer from integer without a cast
>
> Looks like the example is in need of update. Thanks for the report.
>
> regards, tom lane
--
LM Liu