Re: Best practice: call an internal postgresql function (e.g. raw_parser) from another C/Rust binary

From: Pól Ua Laoínecháin <linehanp(at)tcd(dot)ie>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Francois-Guillaume Ribreau <postgresql(at)fgribreau(dot)com>, pgsql-novice(at)lists(dot)postgresql(dot)org
Subject: Re: Best practice: call an internal postgresql function (e.g. raw_parser) from another C/Rust binary
Date: 2021-01-06 13:40:56
Message-ID: CAF4RT5QjZjr7OhmY6=rySNMZ+13YK1m5qErKSRCEbHjNNuJMxg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

Hi all,

> You're not the first to have thought of that. I'm failing to locate
> any relevant threads in our archives, but I distinctly recall having
> heard of somebody who'd made a standalone version of our lexer+grammar.
> You might try searching on github.

Funnily enough, I was only reading about this yesterday - sometimes
wandering through the interweb has its benefits! :-)

The project is DuckDB https://duckdb.org/.

Specifically, this page: https://duckdb.org/docs/why_duckdb.html#duckdbissimple

"SQL Parser: We use the PostgreSQL parser that was repackaged as a
stand-alone library. The translation to our own parse tree is inspired
by Peloton."

The stand-alone library they use is from here (linked in text above):
https://github.com/lfittl/libpg_query

> (I make no warranties about how up-to-date any such project may be.)

Seems interesting and active - DuckDB's last GitHub update 18 days
ago! Last update for the libpg_query is 3 years, however DuckDB appear
to be maintaining their own fork, available here:

https://github.com/cwida/duckdb/tree/master/third_party/libpg_query -
last update 26 days ago!

HTH,

Pól...

> regards, tom lane

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message David G. Johnston 2021-01-06 15:09:45 Re: coalesce(json_agg [..] filter where [..], '[]' in left join returning null
Previous Message Stefan Houtzager 2021-01-06 10:11:24 coalesce(json_agg [..] filter where [..], '[]' in left join returning null