У меня есть расширение C (код ниже), в котором я пытаюсь получить доступ к базе данных, но получаю следующую ошибку:
FATAL: cannot read pg_class without having selected a database at character 15
Как обойти эту проблему? Я не смог выяснить, как указать базу данных в SPI API.
Аналогичный код, если он запускается через триггер (вызывая функцию, которая обращается к той же базе данных), работает просто отлично - очевидно, база данных в этом случае неявна.
Код следует:
static void my_function(XactEvent event, void *arg) {
char sql[512];
switch(event) {
case XACT_EVENT_COMMIT:
if(SPI_connect() == SPI_OK_CONNECT)
{
snprintf(sql, sizeof(sql), "SELECT * FROM myschema.mytable;");
if (SPI_OK_SELECT == SPI_execute(sql, true, 0))
{
// Rest of code...
}
}
Спасибо
D.