From: | Sam Patterson <katoriasdev(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Varlena with recursive data structures? |
Date: | 2019-01-16 22:08:35 |
Message-ID: | CACA+8xiTtHyMrV-Y32dgXacLCJf3eRn+g-uhd4m_F4J5Rqt5AA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2019-01-16 22:22:33 | Re: Varlena with recursive data structures? |
Previous Message | Guillaume Lelarge | 2019-01-16 17:05:39 | Re: Weird behaviour of ROLLUP/GROUPING |