Skip to content

Go Extension Support: duckarrow (Flight SQL client) #1099

@JC1738

Description

@JC1738

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_STRUCT in metadata footer
  • CGO for C interop (//export directives)
  • 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

  1. Is there a path to adding Go extensions to community extensions?
  2. Are there any additional requirements beyond what's needed for Rust extensions?
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions