Varlena with recursive data structures?

Поиск
Список
Период
Сортировка
От Sam Patterson
Тема Varlena with recursive data structures?
Дата
Msg-id CACA+8xiTtHyMrV-Y32dgXacLCJf3eRn+g-uhd4m_F4J5Rqt5AA@mail.gmail.com
обсуждение исходный текст
Ответы Re: Varlena with recursive data structures?  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Varlena with recursive data structures?  (Michel Pelletier <pelletier.michel@gmail.com>)
Список pgsql-general
Hi all,

I've recently started developing an extension for Postgres for which I'll need to create a new variable-length base type. The type will require a tree-like structure in order to parse sufficiently, which of course probably means having some sort of recursive data structure, like a struct that has members which are pointers to itself for child nodes. After doing some research, specifically looking at how other variable-length data types store their data, it seems almost all of them store the data in a binary representation, using bit masks and offsets etc in order to store/access the data whilst having an in-memory representation that's used to manipulate the data.

I presume the purpose for using this approach is because all the data in a varlena type has to be contiguous, and the moment you start using pointers this is no longer possible. So my question is, given a structure that looks something like this,

typedef struct Node 
{
    char *data;
    Node *left;
    Node *right;
} Node;

am I right in saying that I wouldn't be able to store that representation on-disk, but instead I'd have to transform it into some binary representation and back again when writing/reading respectively, are there any alternatives?

Regards,

Karl

В списке pgsql-general по дате отправления:

Предыдущее
От: Guillaume Lelarge
Дата:
Сообщение: Re: Weird behaviour of ROLLUP/GROUPING
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Varlena with recursive data structures?