Пропадают данные в C функции для постгреса

Я решила написать расширение для постгреса и мне надо хранить где-то получаемые данные для дальнейшего их использования. У меня есть структура struct item_s{coord_t coord, char label[16]} и typedef struct coord_s{float x, y, z}. Что я делаю - получаю данные с помощью SPI (выполняю команду select * from table). Значения парсятся нормально (я проверяла с помощью elog и gdb), я их добавляю в массив символов (с помощью strcat(table_arr, value)). Так же я инициализировала 'item_t *items = NULL;' дальше я вызываю метод

process_input(&items, table_arr, proc, j);
int process_input(item_t **items, char table_arr[], proc, j)
{ 
      read_items_from_array(items, arr, proc, j);
      return 0;
}`
           
`int read_items_from_array(item_t **items, char arr[], int count, int j) {
        *items = alloc_mem(count, item_t);
        read_items(*items, arr, j, arrsize);
        return 0;
}`

int read_items(item_t *items, char arr[], int call, int arrsize) {
       item_t *t = &(items[call]);
       switch (arrsize):
и кейсы, где в зависимости от размера массива я  использую `sscanf(arr, "%s%f", t->label, &(t->coord.x), &(t->coord.y)

#define alloc_mem(N, T) (T*) calloc(N, sizeof(T))

И потом к моему массиву символов делаю memset(table_arr, 0, sizeof(table_arr)) После того, как SPI выполнил свою функцию и прошел все строки таблицы, я вызываю другую функцию (не суть важно) с параметром - items (в которые я переносила данные). Но читается только лейбл последнего итема. Почему? Я знаю, что между вызовами функций у постгреса память стирается (вроде как), но это же не в этом дело?


Ответы (0 шт):