Hallo,

I am new here and hoping I am at the right place. If not would you please
redirect me?

I am having troubles with user defined types.
I create very simple type "complex" from the postgres tutorial, even make
it much more simple, so I can be pretty sure there is not any memory
leak:
        (see attachment - try_this.c)

Then I compile it:
        g++ -c try_this.cc
        g++ -shared -o try_this.so try_this.o -lgcc

Then I define in postgres types and functions.

        (see attachment - create)
following 

        create table pok3 (co complex, jmeno varchar);
        insert into pok3 (co,jmeno) values ('pok','pok');
        select * from pok3;

At this point it stops responding and I have to kill the session.
Can anyone tell me what I am doing wrong?
Any help will be highly appreciated.

Petr

(I have postgresql-6.4.2, so the problem is not in a version.)
CREATE FUNCTION complex_in(opaque)
RETURNS complex
AS '/.../try_this.so'
LANGUAGE 'c';

CREATE FUNCTION complex_out(opaque)
RETURNS opaque
AS '/.../try_this.so'
LANGUAGE 'c';

CREATE TYPE complex (
internallength = 16,
input = complex_in,
output = complex_out
);

create table pok3 (co complex, jmeno varchar);
insert into pok3 (co,jmeno) values ('pok','pok');
select * from pok3;
#include <string.h>
#include <stdio.h>
 
extern "C" {

typedef struct Complex {
        double      x;
        double      y;
} Complex;

Complex *
complex_in(char *str) {
        Complex *result =  new (Complex);

        result->x = 1; result->y = 2;
        return (result);
}

char *
complex_out(Complex *complex) {
        char *result = strdup ("(2,3)");
        return(result);
}
}

Reply via email to