Skip to content

Commit 9d782cb

Browse files
committed
example build
1 parent b2769a0 commit 9d782cb

File tree

7 files changed

+236
-0
lines changed

7 files changed

+236
-0
lines changed

.github/workflows/build_custom.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: 'Build Custom'
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
build:
10+
name: 'Build'
11+
runs-on: ubuntu-22.04-arm
12+
steps:
13+
- name: 'Checkout'
14+
uses: actions/checkout@v4
15+
- name: 'Build'
16+
uses: explore-flights/libduckdb/.github/actions/build_go_custom@main
17+
with:
18+
duckdb_git_ref: 'v1.2.2'
19+
extension_config_path: 'extension_config.cmake'
20+
go_arch: 'arm64'
21+
go_build_output_file: 'example'
22+
go_version: '1.24.2'
23+
image_arch: 'aarch64'
24+
platform: 'linux/arm64'
25+
vcpkg_target_triplet: 'arm64-linux'
26+
- name: 'Run App'
27+
run: ./example >> extensions.txt
28+
- name: 'Upload Artifact'
29+
uses: actions/upload-artifact@v4
30+
with:
31+
name: 'extensions.txt'
32+
path: 'extensions.txt'
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: 'Build Provided'
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
build:
10+
name: 'Build'
11+
runs-on: ubuntu-22.04-arm
12+
steps:
13+
- name: 'Checkout'
14+
uses: actions/checkout@v4
15+
- name: 'Build'
16+
uses: explore-flights/libduckdb/.github/actions/build_go_provided@main
17+
with:
18+
go_arch: 'arm64'
19+
go_build_output_file: 'example'
20+
go_version: '1.24.2'
21+
image_arch: 'aarch64'
22+
platform: 'linux/arm64'
23+
file: 'libduckdb_bundle-arm64-linux.a'
24+
- name: 'Run App'
25+
run: ./example >> extensions.txt
26+
- name: 'Upload Artifact'
27+
uses: actions/upload-artifact@v4
28+
with:
29+
name: 'extensions.txt'
30+
path: 'extensions.txt'

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.idea
2+
*.iml

extension_config.cmake

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
duckdb_extension_load(core_functions)
2+
duckdb_extension_load(parquet)
3+
duckdb_extension_load(json)
4+
duckdb_extension_load(icu)
5+
duckdb_extension_load(httpfs
6+
GIT_URL https://github.com/duckdb/duckdb-httpfs
7+
GIT_TAG c22532453e9fab8404f91729708d9f35e23d323d
8+
INCLUDE_DIR extension/httpfs/include
9+
)
10+
duckdb_extension_load(aws
11+
GIT_URL https://github.com/duckdb/duckdb-aws
12+
GIT_TAG e92e45b30ba17594b1101db22699a2244adfaeb1
13+
)

go.mod

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
module github.com/explore-flights/libduckdb-example
2+
3+
go 1.24
4+
5+
require github.com/marcboeker/go-duckdb/v2 v2.2.0
6+
7+
require (
8+
github.com/apache/arrow-go/v18 v18.1.0 // indirect
9+
github.com/duckdb/duckdb-go-bindings v0.1.14 // indirect
10+
github.com/duckdb/duckdb-go-bindings/darwin-amd64 v0.1.9 // indirect
11+
github.com/duckdb/duckdb-go-bindings/darwin-arm64 v0.1.9 // indirect
12+
github.com/duckdb/duckdb-go-bindings/linux-amd64 v0.1.9 // indirect
13+
github.com/duckdb/duckdb-go-bindings/linux-arm64 v0.1.9 // indirect
14+
github.com/duckdb/duckdb-go-bindings/windows-amd64 v0.1.9 // indirect
15+
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
16+
github.com/goccy/go-json v0.10.5 // indirect
17+
github.com/google/flatbuffers v25.1.24+incompatible // indirect
18+
github.com/google/uuid v1.6.0 // indirect
19+
github.com/klauspost/compress v1.17.11 // indirect
20+
github.com/klauspost/cpuid/v2 v2.2.9 // indirect
21+
github.com/marcboeker/go-duckdb/arrowmapping v0.0.7 // indirect
22+
github.com/marcboeker/go-duckdb/mapping v0.0.7 // indirect
23+
github.com/pierrec/lz4/v4 v4.1.22 // indirect
24+
github.com/zeebo/xxh3 v1.0.2 // indirect
25+
golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c // indirect
26+
golang.org/x/mod v0.22.0 // indirect
27+
golang.org/x/sync v0.10.0 // indirect
28+
golang.org/x/sys v0.29.0 // indirect
29+
golang.org/x/tools v0.29.0 // indirect
30+
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect
31+
)

go.sum

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA=
2+
github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=
3+
github.com/apache/arrow-go/v18 v18.1.0 h1:agLwJUiVuwXZdwPYVrlITfx7bndULJ/dggbnLFgDp/Y=
4+
github.com/apache/arrow-go/v18 v18.1.0/go.mod h1:tigU/sIgKNXaesf5d7Y95jBBKS5KsxTqYBKXFsvKzo0=
5+
github.com/apache/thrift v0.21.0 h1:tdPmh/ptjE1IJnhbhrcl2++TauVjy242rkV/UzJChnE=
6+
github.com/apache/thrift v0.21.0/go.mod h1:W1H8aR/QRtYNvrPeFXBtobyRkd0/YVhTc6i07XIAgDw=
7+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
8+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
9+
github.com/duckdb/duckdb-go-bindings v0.1.14 h1:57DCZuuKQ65gRQxFG+XGnqVQtMADKY/noozmCjYs+zE=
10+
github.com/duckdb/duckdb-go-bindings v0.1.14/go.mod h1:pBnfviMzANT/9hi4bg+zW4ykRZZPCXlVuvBWEcZofkc=
11+
github.com/duckdb/duckdb-go-bindings/darwin-amd64 v0.1.9 h1:K95YlR28Fb3+n3D6RcBzdznNVGcCnrGaAZqs52JUFOs=
12+
github.com/duckdb/duckdb-go-bindings/darwin-amd64 v0.1.9/go.mod h1:Ezo7IbAfB8NP7CqPIN8XEHKUg5xdRRQhcPPlCXImXYA=
13+
github.com/duckdb/duckdb-go-bindings/darwin-arm64 v0.1.9 h1:wY3kXm1/GSK4ES8pfBIeRHxscZomEVFWTS4GOifrZCs=
14+
github.com/duckdb/duckdb-go-bindings/darwin-arm64 v0.1.9/go.mod h1:eS7m/mLnPQgVF4za1+xTyorKRBuK0/BA44Oy6DgrGXI=
15+
github.com/duckdb/duckdb-go-bindings/linux-amd64 v0.1.9 h1:ypZyeNMA9oRAIBE/pVGfrsXzYqEM+ZRkbV/lxw7Cf5E=
16+
github.com/duckdb/duckdb-go-bindings/linux-amd64 v0.1.9/go.mod h1:1GOuk1PixiESxLaCGFhag+oFi7aP+9W8byymRAvunBk=
17+
github.com/duckdb/duckdb-go-bindings/linux-arm64 v0.1.9 h1:TVBDwDSanIttQCH76UpDJ9rQAq4cYNM4R7h5Xu0y/rA=
18+
github.com/duckdb/duckdb-go-bindings/linux-arm64 v0.1.9/go.mod h1:o7crKMpT2eOIi5/FY6HPqaXcvieeLSqdXXaXbruGX7w=
19+
github.com/duckdb/duckdb-go-bindings/windows-amd64 v0.1.9 h1:okFoG+evMiXnyUK+cI67V0MpvKbstO6MaXlXXotst3k=
20+
github.com/duckdb/duckdb-go-bindings/windows-amd64 v0.1.9/go.mod h1:IlOhJdVKUJCAPj3QsDszUo8DVdvp1nBFp4TUJVdw99s=
21+
github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
22+
github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
23+
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
24+
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
25+
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
26+
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
27+
github.com/google/flatbuffers v25.1.24+incompatible h1:4wPqL3K7GzBd1CwyhSd3usxLKOaJN/AC6puCca6Jm7o=
28+
github.com/google/flatbuffers v25.1.24+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
29+
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
30+
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
31+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
32+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
33+
github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4=
34+
github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE=
35+
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
36+
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
37+
github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
38+
github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
39+
github.com/marcboeker/go-duckdb/arrowmapping v0.0.7 h1:6mq16sPGJPo8Tkkl6UIsXuaNv467LjHLBscRyJl2Qhc=
40+
github.com/marcboeker/go-duckdb/arrowmapping v0.0.7/go.mod h1:FdvmqJOwVdfFZLpV+anBFlTUOzfU/NdIRET37mIEczY=
41+
github.com/marcboeker/go-duckdb/mapping v0.0.7 h1:t0BaNmLXj76RKs/x80A/ZTe+KzZDimO2Ji8ct4YnPu4=
42+
github.com/marcboeker/go-duckdb/mapping v0.0.7/go.mod h1:EH3RSabeePOUePoYDtF0LqfruXPtVB3M+g03QydZsck=
43+
github.com/marcboeker/go-duckdb/v2 v2.2.0 h1:xxruuYD7vWvybY52xWzV0vvHKa1IjpDDOq6T846ax/s=
44+
github.com/marcboeker/go-duckdb/v2 v2.2.0/go.mod h1:B7swJ38GcOEm9PI0IdfkZYqn5CtIjRUiQG4ZBr3hnyc=
45+
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs=
46+
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY=
47+
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI=
48+
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
49+
github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
50+
github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
51+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
52+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
53+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
54+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
55+
github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
56+
github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
57+
github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0=
58+
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
59+
golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c h1:KL/ZBHXgKGVmuZBZ01Lt57yE5ws8ZPSkkihmEyq7FXc=
60+
golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU=
61+
golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
62+
golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
63+
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
64+
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
65+
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
66+
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
67+
golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE=
68+
golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588=
69+
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=
70+
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
71+
gonum.org/v1/gonum v0.15.1 h1:FNy7N6OUZVUaWG9pTiD+jlhdQ3lMP+/LcTpJ6+a8sQ0=
72+
gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o=
73+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
74+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

main.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"database/sql"
6+
"fmt"
7+
"github.com/marcboeker/go-duckdb/v2"
8+
"log"
9+
"os/signal"
10+
"syscall"
11+
)
12+
13+
func main() {
14+
ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
15+
defer cancel()
16+
17+
if err := run(ctx); err != nil {
18+
log.Fatal(err)
19+
}
20+
}
21+
22+
func run(ctx context.Context) error {
23+
connector, err := duckdb.NewConnector("", nil)
24+
if err != nil {
25+
return fmt.Errorf("failed to connect to duckdb: %w", err)
26+
}
27+
defer connector.Close()
28+
29+
database := sql.OpenDB(connector)
30+
defer database.Close()
31+
32+
conn, err := database.Conn(ctx)
33+
if err != nil {
34+
return fmt.Errorf("failed to connect to database: %w", err)
35+
}
36+
defer conn.Close()
37+
38+
rows, err := conn.QueryContext(ctx, "SELECT extension_name FROM duckdb_extensions() WHERE install_path = '(BUILT-IN)'")
39+
if err != nil {
40+
return fmt.Errorf("failed to query duckdb_extensions: %w", err)
41+
}
42+
defer rows.Close()
43+
44+
var extensionName string
45+
for rows.Next() {
46+
if err = rows.Scan(&extensionName); err != nil {
47+
return fmt.Errorf("failed to scan: %w", err)
48+
}
49+
50+
fmt.Println(extensionName)
51+
}
52+
53+
return nil
54+
}

0 commit comments

Comments
 (0)