Hello
I am desperately trying to use a type I have created. PostgreSQL runs
under SunOS 4.1.x. I followed the documentation's example on this platform
% cc -I$PGROOT/include -I$PGROOT/src/include -PIC -c phone.c
gives too many errors in header files...........
Then, I used gcc (following documentation's example for Solaris !!)
% gcc -I$PGROOT/include -I$PGROOT/src/include -fPIC -c phone.c
% ld -Bdynamic -o phone.so phone.o
Then from Linux client
% psql test
test=> CREATE FUNCTION phone_in(opaque)
RETURNS phone
AS '/home/postgres/linux/src/phone/phone.so'
LANGUAGE 'c';
CREATE FUNCTION phone_out(opaque)
RETURNS opaque
AS '/home/postgres/linux/src/phone/phone.so'
LANGUAGE 'c';
CREATE TYPE phone (
internallength =8,
input = phone_in,
output = phone_out);
CREATE TABLE test_phone (
mynumber phone,
hernumber phone);
INSERT INTO test_phone VALUES ('01483-827294','0161-2242394');
At this point gives
ERROR: Load of file /home/postgres/linux/src/phone/phone.so failed:
ld.so: object could not be mapped
I then issue 'load' from prompt:
test=> load '/home/postgres/linux/src/phone/phone.so';
ERROR: LOAD: could not open file /home/postgres/linux/src/phone/phone.so
Therefore I desperately ask:
a) Do I compile for the platform where Postgres runs? (may sound ignorant
but in fact it is my first real exposure to C compilers)
b) Do I use cc or gcc?
c) Could the options used in the compilation/linking process differ among
two cases even though Postgres runs on same plarform?
d) Do I need to use 'load' or is the function automatically loaded when
first called?
Thanks
Kostas