Postgresql PQgetvalue: возвращение массива - PullRequest
5 голосов
/ 03 мая 2011

У меня есть таблица, созданная как:

CREATE TABLE tbl_test
(
  id        bigserial    PRIMARY KEY,
  interest  int          ARRAY[2]
);

Я получил PGresult* res, используя PQexec(conn, "SELECT * FROM tbl_test");

Теперь, как мне получить int[] из PQgetvalue(res, 0, 1).
Я не хочу зависеть от структур, определенных в array.h, поскольку они могут измениться.

Я не смог найти API в Postgresql, который мог бы что-то делать.
Пожалуйста, сообщите.

С уважением,
Mayank

1 Ответ

6 голосов
/ 15 мая 2011

PQgetvalue () возвращает строковое представление значения поля, если вы не указали двоичный курсор.В любом случае (строковый или двоичный курсор) вам нужно будет предоставить код для манипулирования результатом в нужной форме.

Некоторые идеи вы можете найти в исходном коде PostgreSQL .

  • src / backend / utils / adt / arrayfuncs.c
  • src / include / utils / array.h.

И некоторый код вcontrib / intarray.

В http://doxygen.postgresql.org/, нажмите «Файлы», затем найдите «массив».

На строковом уровне, который возвращает PQgetvalue (), вероятно,легко найти в Google некоторый код, который извлекает целые числа из строки, разделенной запятой.

...