powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Функции C в постгресе
6 сообщений из 6, страница 1 из 1
Функции C в постгресе
    #33793670
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак не могу понять. Что бы писать функции я должен использовать постгрячные типы данных типа text, varchar. Типы описаны в c.h. С этим я разобрался. Память нужно выделять с помощью постгрячной функции palloc.
Я просто подключаю postgres.h и начинаю использоват нужные функции. Но реализация этих функций находится же не в заголовочных файлах, а в *.c файлах. Т.е. я должен эти файлы подключать к себе в проект или подключать соответствующие статические библиотеки..(?). Что-то я не пойму... какие именно и где их взять?

Платформа Win32, Visual Studio 2003.
...
Рейтинг: 0 / 0
Функции C в постгресе
    #33795879
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем их подключать? Ты же создаешь динамическую библиотеку, а не самостоятельное приложение.

Использовать постгрессовские типы ты обязан только если получаешь-возвращаешь значения. У себя внутри ты можешь делать все, что угодно.
...
Рейтинг: 0 / 0
Функции C в постгресе
    #33795965
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта библиотека как раз экспортирует функции, которые я хочу использовать из обычного SQL. Функции в основном возвращают тип text. Если глянуть на библиотеки из папки contrib (с помощью depends например), то можно увидить, что они все неявно подключают postgres.exe. Как они это делают? Есть ли у кого-нибудь исходники или хотя бы Makefile какого-нить контриба, который под Win32 компилится с помощью nmake? Или библиотека импорта для postgres.exe? Я что-то запутался... Кто-нибудь вообще писал подобные библы под win32?
...
Рейтинг: 0 / 0
Функции C в постгресе
    #33796254
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в исходниках есть маке файл с которым все собирается

а в доках что написано по этому поводу?
...
Рейтинг: 0 / 0
Функции C в постгресе
    #33796435
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wbearв исходниках есть маке файл с которым все собирается

а в доках что написано по этому поводу?

В доках я ничего конкретного не нашел.... там есть один Make файл для студии... win32.mak. но он собирает только psql.exe, libpq и pg_config.exe... Но postgres.exe, в котором находится реализация этих функций он не трогает...

Вот что написано в этом Makefile
# Makefile for Microsoft Visual C++ 5.0 (or compat)
# Top-file makefile for Win32 parts of postgresql.
# Note that most parts are not ported to Win32!

Может контрибы были собраны с помощью MinGW?
...
Рейтинг: 0 / 0
Функции C в постгресе
    #33796535
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Opilki_Inside... Если глянуть на библиотеки из папки contrib (с помощью depends например), то можно увидить, что они все неявно подключают postgres.exe. Как они это делают? Есть ли у кого-нибудь исходники или хотя бы Makefile какого-нить контриба, который под Win32 компилится с помощью nmake? Или библиотека импорта для postgres.exe? Я что-то запутался... Кто-нибудь вообще писал подобные библы под win32?

1) постгря работает следующим макаром... при логировании клиента запускаеться отдельный ПРОЦЕСС (вынь 32) в котором крутиться ышо один экземпляр постгресса.
2) при компиляции Вам достаточно описательных ашников - которые указывают, что это кухня вся внешняя и требуеться при загрузки модуля в адрессное пространство процесса...
3)
в деф. файле пишите типа...

Код: plaintext
1.
2.
3.
EXPORTS
   xru
	pg_finfo_xru

в си модуле пишете...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include "postgres.h"
#include "fmgr.h"
#include "funcapi.h"
#include "executor/spi.h"


Datum xru(PG_FUNCTION_ARGS)
{
   FORCE_UNMANAGED
    elog (INFO, "xru RUN !");

    PG_RETURN_INT32( 0 );
}


4) для линкера делаете инклуд типа
postgres.lib

5) компилите...выкладываете по путю который указываете в описании ссылки на данный модуль из постгресса..указываете имя вызова функции xru

6) запускаете админ, делаете селект с указанием xru и видите а) замедление выполнения (первый раз -загрузка модуля) б) мессагу в инфо...


удачи Вам
(круглый)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Функции C в постгресе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]