PostgreSQL SPI 예 학습

5956 단어 PostgreSQL
[저자: 기술자 고 건 @ 블 로그 파 크 mail:  [email protected]  ]
http://www.postgresql.org/docs/9.1/static/spi-examples.html
 
SPI 의 예 에 서 는 어떻게 컴 파일 하고 배 치 했 는 지 말 하지 않 았 습 니 다. 제 가 보충 하 겠 습 니 다.
컴 파일 및 배치:
[root@localhost soft]# export LD_LIBRARY_PATH=/usr/local/pgsql/lib

[root@localhost soft]# echo $LD_LIBRARY_PATH

/usr/local/pgsql/lib





[root@localhost test]# cc -fpic -I/usr/local/pgsql/include/server/ -shared -o execq.so execq.c

[root@localhost test]# ls

execq.c  execq.so

[root@localhost test]# 







[root@localhost test]# cp execq.so /usr/local/pgsql/lib

[root@localhost test]# 

실행:
postgres=# create function execq(text,integer) returns integer as '/usr/local/pgsql/lib/execq.so','execq' language c strict;

CREATE FUNCTION

postgres=# 





postgres=# select execq('create table abc(id integer)',0);

 execq 

-------

0

(1 row)



postgres=# 





postgres=# insert into abc values( execq('insert into abc values(0)',0));

INSERT 0 1

postgres=# 







postgres=# insert into abc values( execq('insert into abc values(0)',0));

INSERT 0 1

postgres=# select * from abc;

 id 

----

0

1

(2 rows)



postgres=# 







postgres=# select execq('select * from abc',0);

INFO:  EXECQ:  0 

INFO:  EXECQ:  1 

 execq 

-------

2

(1 row)



postgres=# 







postgres=# select execq('insert into abc select id+2 from abc',1);

 execq 

-------

2

(1 row)



postgres=# select * from abc;

 id 

----

0

1

2

3

(4 rows)



postgres=# 







postgres=# select execq('select * from abc', 10);

INFO:  EXECQ:  0 

INFO:  EXECQ:  1 

INFO:  EXECQ:  2 

INFO:  EXECQ:  3 

 execq 

-------

4

(1 row)



postgres=# 

[저자: 기술자 고 건 @ 블 로그 파 크 mail:  [email protected]  ]

좋은 웹페이지 즐겨찾기