баг при выполнении запроса из С ф-ции

Alexander Naschansky
Дата: 17.01.2004 14:18:10
Нарвался на такую чепуху:
создается тип, допустим t_sample. В качестве ф-ций INPUT и OUTPUT для t_sample указываються ф-ции из либы (LANGUAGE C), допустим:


CREATE FUNCTION t_sample_in(cstring) RETURNS t_sample
AS 't_sample.so' , 't_sample_in'
LANGUAGE C IMMUTABLE STRICT;

CREATE FUNCTION enum_out(t_sample) RETURNS cstring
AS 't_sample.so' , 't_sample_out'
LANGUAGE C IMMUTABLE STRICT;

CREATE TYPE t_sample (INTERNALLENGTH = 4,
INPUT = t_sample_in, OUTPUT = t_sample_out);


Функеции, при вызове, лезут за данными в некоторую таблицу при помощи SPI (SPI_connect, SPI_exec, SPI_finish) - запосы у них простые, типа:

select name_fld from dict_table where id = %d; -- < здесь name_fld - это варчар

Так вот - при их неявном вызове, например вставка значения t_sample в таблицу, вылетает сообщение об ошибке о том, что не было входа в контекст вызова или чегото еще (дело было некоторое время назад и я уж подзабыл детали).
Например на коде:
insert into some(name_fld) values ('name_val'); -- < здесь name_fld - поле типа t_sample, для 'name_val' неявно вызываеться ф-ция INPUT

когда, я их вызывал явно вроде все работало, например такое:
insert into some(name_fld) values (t_sample_in('name_val')); -- отрабатывает нормально

Падало, со 100% уверенностью, не не моем С-коде - размеры буферов, порядок вызова - все соблюдалось.

Это наблюдалось для версий 7.2, 7.3, 7.4b - на самой последней не пробовал.
Я это как то лечил - перерыл исходники, нашел приблизительно где падало и передвинул вызов некоторой ф-ции и оно кое-как заработало, но вылезли еще другие баги и я забил на это дело.

Вопросы: кто подобное наблюдал? как лечил? есть ли уже патч для этого дела? ежели нет - а не написать ли это в баг лист?