Re: writing custom data type
От | Tom Lane |
---|---|
Тема | Re: writing custom data type |
Дата | |
Msg-id | 22382.1359752309@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | writing custom data type (Arthur Chan <achan@comprehend.com>) |
Ответы |
Re: writing custom data type
Re: writing custom data type |
Список | pgsql-novice |
Arthur Chan <achan@comprehend.com> writes: > I've been having trouble writing my own custom datatype for PG. when I do > my `CREATE FUNCTION` call, it fails with: > resultsets=# CREATE FUNCTION fuzzytime_in(cstring) > RETURNS fuzzytime > AS 'fuzzytimetype' > LANGUAGE C IMMUTABLE STRICT; > NOTICE: return type fuzzytime is only a shell > ERROR: could not find function "fuzzytime_in" in file > "/usr/lib/postgresql/9.1/lib/fuzzytimetype.so" > now I checked my shared lib, and surely enough, it's there > $ objdump -t /usr/lib/postgresql/9.1/lib/fuzzytimetype.so > ... > 00000000000018b0 g F .text 0000000000000070 fuzzytime_in > ... > So what gives? The code has PG_MODULE_MAGIC, and I'm > calling PG_FUNCTION_INFO_V1(fuzzytime_in); Huh, looks like it should work. I can think of a couple of gotchas: (1) If the library is already loaded, CREATE FUNCTION doesn't reload it. Maybe you have an old image of the .so in memory, which doesn't contain the function? Try starting a fresh psql session. (2) Maybe you compiled the function as C++, so it has a mangled name? This theory requires that objdump automatically de-mangles names, which I don't know for sure one way or the other. regards, tom lane
В списке pgsql-novice по дате отправления: