Структура массива PostgreSQL - PullRequest
       4

Структура массива PostgreSQL

1 голос
/ 13 декабря 2011

Какая структура массива postgres хранится в памяти? Как я могу получить реальные данные? Например, для array[0.1, 0.2, 0.3]::float8[] реальные данные (0.1, 0.2, 0.3) хранятся как стандартный массив c? Могу ли я использовать memcpy для копирования существующего массива? Указатель, который мы используем ARR_DATA_PTR, ссылается на реальные данные?

1 Ответ

5 голосов
/ 13 декабря 2011

PostgreSQL использует изменяемую структуру C - поэтому первые n байтов содержат данные фиксированной длины, а следующие байты используются для данных.Первые четыре байта содержат длину, число следов затемнения, смещение данных и идентификацию типа данных элемента - следующие данные должны быть растровым изображением, содержащим значения NULL, и после этого данные растрового изображения сериализуются.

Массив PostgreSQL не совместим с массивами C - соответственнов некоторых случаях массив C является частью массива PostgreSQL.ARR_DATA_PTR может или не должен ссылаться на реальные данные.Зависит от текущего состояния - данные должны быть поджаренными, очищенными, ...

Люди обычно используют макросы и вспомогательные функции при работе с массивами pg.Есть способы распаковки в массивы C или итерации по массиву pg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...