cwida / duckpgq-extension

DuckDB extension that adds support for SQL/PGQ
https://duckpgq.notion.site/b8ac652667964f958bfada1c3e53f1bb?v=3b47a8d44bdf4e0c8b503bf23f1b76f2
MIT License
86 stars 7 forks source link

Make DuckPGQ loadable in DuckDB WASM #170

Open Dtenwolde opened 6 days ago

Dtenwolde commented 6 days ago

What happens?

Currently the DuckPGQ extension is not easily loadable in DuckDB WASM. For instance, go to https://duckdb.org/docs/api/wasm/overview.html and type:

install duckpgq from community; 
load duckpgq; 

And you'll receive the following error:

IO Error: Extension "https://community-extensions.duckdb.org/v1.1.3/wasm_eh/duckpgq.duckdb_extension.wasm" could not be loaded: Could not load dynamic lib: duckpgq
Error: bad export type for '_ZTIN6duckdb23CreatePropertyGraphInfoE': undefined

To Reproduce

Go to https://duckdb.org/docs/api/wasm/overview.html and type:

install duckpgq from community; 
load duckpgq; 

And you'll receive the following error:

IO Error: Extension "https://community-extensions.duckdb.org/v1.1.3/wasm_eh/duckpgq.duckdb_extension.wasm" could not be loaded: Could not load dynamic lib: duckpgq
Error: bad export type for '_ZTIN6duckdb23CreatePropertyGraphInfoE': undefined

OS:

macOs 13 - Apple M1 Pro

DuckDB Version:

v1.1.3

DuckDB Client:

WASM

Full Name:

Daniel ten Wolde

Affiliation:

CWI

How did you load the extension?

Community extension version

Did you include all relevant data sets for reproducing the issue?

Yes

Did you include all code required to reproduce the issue?

Did you include all relevant configuration (e.g., CPU architecture, Python version, Linux distribution) to reproduce the issue?

Dtenwolde commented 6 days ago

Mentioned here: https://github.com/cwida/duckpgq-extension/discussions/166

carlopi commented 5 days ago

Thanks, this is at the moment expected, problem is that DuckPGQ is somehow different than other extensions in the sense that it bundles DuckDB (and it's parser).

I think this might require wrapping duckdb code in a duckdb_impl namespace, so that it do not collides with duckdb functions (that might or might not be equivalent) that are provided on static linking by duckdb-wasm.

Anther possible way out is enabling DuckDB to be statically linked in, and do the remapping at the Wasm layer, but I am not sure that's viable.

DuckPGQ can work free-standing in the browser, but I would consider more proper to work in having this supported on top of regular duckdb-wasm.

Thanks for opening the tracking issue. Unsure what's the path forward, but can work, and would be super cool to have it working.