-
Notifications
You must be signed in to change notification settings - Fork 103
Open
Description
Summary
I've built a DuckDB extension in Go called duckarrow that enables querying Apache Arrow Flight SQL servers directly from DuckDB. I'm interested in submitting it to community extensions and wanted to discuss Go extension support first, similar to the Rust extension discussion (#54).
Extension Overview
duckarrow allows querying remote Flight SQL servers:
LOAD 'duckarrow.duckdb_extension';
SELECT duckarrow_configure('grpc+tls://server:port', 'user', 'pass');
SELECT * FROM duckarrow."RemoteTable" LIMIT 10;Features:
- Table function and replacement scan syntax
- Column projection pushdown
- Connection pooling
- Full type support (20+ Arrow types including DECIMAL, LIST, STRUCT, MAP)
- TLS support with configurable certificate verification
Technical Approach
The extension uses the C Extension API (stable since v1.2.0):
abi_type = C_STRUCTin metadata footer- CGO for C interop (
//exportdirectives) - Targets DuckDB v1.2.0 C API
This is the same approach that enables Rust extensions.
Build Infrastructure
We have full CI/CD with multi-platform support:
| Platform | Runner | Status |
|---|---|---|
| linux_amd64 | ubuntu-latest | ✅ |
| linux_arm64 | ubuntu-24.04-arm | ✅ |
| osx_amd64 | macos-15 | ✅ |
| osx_arm64 | macos-14 | ✅ |
| windows_amd64 | windows-latest | ✅ |
- GitHub Actions workflows for CI and releases
- Pre-built binaries available: v0.0.1 release
- CMake wrapper for compatibility
Questions
- Is there a path to adding Go extensions to community extensions?
- Are there any additional requirements beyond what's needed for Rust extensions?
- Would you like us to wait for official Go template support, or can we proceed as a pioneer?
Happy to provide any additional information or make adjustments to meet community extension requirements.
dentiny
Metadata
Metadata
Assignees
Labels
No labels