duckdb / community-extensions

https://community-extensions.duckdb.org
111 stars 19 forks source link

Adding DuckPGQ extension #48

Closed Dtenwolde closed 2 months ago

Dtenwolde commented 2 months ago

Hi everyone,

This PR introduces the DuckPGQ extension, which supports the SQL/PGQ syntax for more succinct pattern-matching and path-finding syntax in graph queries. I have included some initial examples in the documentation and plan to expand on these in the future.

The extension is unique in its build process. It doesn't build against duckdb/duckdb but rather against a fork, cwida/duckdb-pgq. Apart from the parser (lib_pg_parser) and transformer, this fork is binary-compatible with DuckDB. This compatibility allows the extension to be loaded into any DuckDB instance like any other extension. Here’s how you can do it (after launching with the unsigned flag):

set custom_extension_repository = 'http://duckpgq.s3.eu-north-1.amazonaws.com';
force install 'duckpgq';
load 'duckpgq';

This method has been functional from version 0.10.1 up to and including 1.0.0.

@carlopi has noted that Go/Rust might face issues due to building with link-time optimizations, which I will investigate further. However, I don't believe this is a blocker for this PR.

I understand that this approach is somewhat unconventional for the extension framework. However, after discussing with @carlopi, we decided to submit this PR to have a discussion and gather feedback.

Looking forward to your thoughts and feedback!