Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
возврат длинного целого из С - функций в ХП постгреса
|
|||
|---|---|---|---|
|
#18+
Вопрос наверное несложный, но что-то я на нём застрял. Есть функция на С, компилируем-подключаем к постгресу как ХП. Если возвращаемый тип int в С и int4 в Постгресе - всё ОК. Если возвращаемый тип long в С и int8 в Постгресе - получаем memory fault. Вопрос - как бы из С вернуть в постгрес длинное целое (например результат поиска ID в таблице, тип которого - serial)? Заранее спасибо всем кто помогает. PS: может кто ещё поможет с использованием SPI_exec? она как аргумент принимает const char - строку SQL. Вот как в эту строчку подставить параметры? то есть ясно, что д.б. что-то типа sprintf(SQLcmd,"Select .... where ID=%i",param1); ...SPI_exec(SQLcmd)...проблема в том, что SQLcmd - это char *, тогда не работает sprintf, или char[256] (например), тогда не работает SPI_exec. Понятно, что надо типы приводить - но вот как и к чему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 14:47 |
|
||
|
возврат длинного целого из С - функций в ХП постгреса
|
|||
|---|---|---|---|
|
#18+
ежели не ошибаюсь есть в сях такой тип как word и производные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 15:19 |
|
||
|
возврат длинного целого из С - функций в ХП постгреса
|
|||
|---|---|---|---|
|
#18+
Кидай тело функции с int8. Это работает однозначно. char buf[256]; sprintf(buf,"...=%d",param1); ...SPI_exec(buf); Успехов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 17:21 |
|
||
|
возврат длинного целого из С - функций в ХП постгреса
|
|||
|---|---|---|---|
|
#18+
mefВопрос наверное несложный, но что-то я на нём застрял. Есть функция на С, компилируем-подключаем к постгресу как ХП. Если возвращаемый тип int в С и int4 в Постгресе - всё ОК. Если возвращаемый тип long в С и int8 в Постгресе - получаем memory fault. Вопрос - как бы из С вернуть в постгрес длинное целое (например результат поиска ID в таблице, тип которого - serial)? Заранее спасибо всем кто помогает. PS: может кто ещё поможет с использованием SPI_exec? она как аргумент принимает const char - строку SQL. Вот как в эту строчку подставить параметры? то есть ясно, что д.б. что-то типа sprintf(SQLcmd,"Select .... where ID=%i",param1); ...SPI_exec(SQLcmd)...проблема в том, что SQLcmd - это char *, тогда не работает sprintf, или char[256] (например), тогда не работает SPI_exec. Понятно, что надо типы приводить - но вот как и к чему? Ежели у тебя 32-разр. платформа (а судя по всему так), то long - это никак не int8, а int4. Юзай long long, и будет тебе счастье. Проверено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 22:29 |
|
||
|
возврат длинного целого из С - функций в ХП постгреса
|
|||
|---|---|---|---|
|
#18+
сапасибо всем написавшим. Действительно, у меня linux 32-x разрядная. и вчитавшись в доки понял что и вправду long это int4. Так что сам виноват - читаем доки, они рулез. может я чего не так делаю, но конструкция char buf[256]; sprintf(buf,"...=%d",param1); ...SPI_exec(buf); у меня железно вылетает в segmentation fault. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:24 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33034025&tid=2007287]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
79ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 393ms |

| 0 / 0 |
