|
баг при выполнении запроса из С ф-ции
|
|||
---|---|---|---|
#18+
Нарвался на такую чепуху: создается тип, допустим 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 - на самой последней не пробовал. Я это как то лечил - перерыл исходники, нашел приблизительно где падало и передвинул вызов некоторой ф-ции и оно кое-как заработало, но вылезли еще другие баги и я забил на это дело. Вопросы: кто подобное наблюдал? как лечил? есть ли уже патч для этого дела? ежели нет - а не написать ли это в баг лист? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2004, 14:18 |
|
|
start [/forum/topic.php?fid=53&fpage=360&tid=2007986]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
2ms |
others: | 317ms |
total: | 436ms |
0 / 0 |