Skip to content

Commit 2ef9c15

Browse files
authored
Merge pull request #773 from NicoFrLy/homer11-duck-v1.5.3
Update DuckDB from v1.5.2 to v1.5.3
2 parents 253cffb + 7a1856b commit 2ef9c15

9 files changed

Lines changed: 32 additions & 51 deletions

File tree

.github/workflows/dev-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ jobs:
177177
set -euo pipefail
178178
export VERSION="${VERSION#v}"
179179
if [ "${{ matrix.goarch }}" = "amd64" ]; then export EXT_PLATFORM=linux_amd64; else export EXT_PLATFORM=linux_arm64; fi
180-
export DUCKDB_VERSION=v1.5.2
180+
export DUCKDB_VERSION=v1.5.3
181181
./scripts/download_duckdb_extensions.sh "$EXT_PLATFORM"
182182
# Only change nfpm arch line (global amd64→* breaks if the word appears elsewhere)
183183
sed -i 's/^arch: ".*"/arch: "${{ matrix.goarch }}"/' homer-core_workflow.yaml

.github/workflows/devel-homer11-packages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ jobs:
186186
set -euo pipefail
187187
export VERSION="${VERSION#v}"
188188
if [ "${{ matrix.goarch }}" = "amd64" ]; then export EXT_PLATFORM=linux_amd64; else export EXT_PLATFORM=linux_arm64; fi
189-
export DUCKDB_VERSION=v1.5.2
189+
export DUCKDB_VERSION=v1.5.3
190190
./scripts/download_duckdb_extensions.sh "$EXT_PLATFORM"
191191
sed -i 's/^name: "homer-core"/name: "homer-core-devel"/' homer-core_workflow.yaml
192192
sed -i 's/^arch: ".*"/arch: "${{ matrix.goarch }}"/' homer-core_workflow.yaml

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ jobs:
183183
set -euo pipefail
184184
export VERSION="${VERSION#v}"
185185
if [ "${{ matrix.goarch }}" = "amd64" ]; then export EXT_PLATFORM=linux_amd64; else export EXT_PLATFORM=linux_arm64; fi
186-
export DUCKDB_VERSION=v1.5.2
186+
export DUCKDB_VERSION=v1.5.3
187187
./scripts/download_duckdb_extensions.sh "$EXT_PLATFORM"
188188
sed -i 's/^arch: ".*"/arch: "${{ matrix.goarch }}"/' homer-core_workflow.yaml
189189
DUCKDB_VERSION="$DUCKDB_VERSION" EXT_PLATFORM="$EXT_PLATFORM" VERSION="$VERSION" \

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
1414
LDFLAGS := -s -w -X main.VERSION_APPLICATION=$(VERSION) -X main.BuildDate=$(BUILD_DATE) -X main.BuildTime=$(BUILD_TIME) -X main.GitCommit=$(GIT_COMMIT)
1515

1616
# DuckDB extension bundle for deb/rpm — must match embedded DuckDB in src/go.mod
17-
# (github.com/duckdb/duckdb-go-bindings v0.10502.x → v1.5.2).
18-
DUCKDB_VERSION ?= v1.5.2
17+
# (github.com/duckdb/duckdb-go-bindings v0.10503.x → v1.5.3).
18+
DUCKDB_VERSION ?= v1.5.3
1919

2020
# Used only by target glibc-polyfill (plain make release/all does not patch).
2121
# Example: make glibc-polyfill GLIBC_TARGET=2.28

docs/INGEST_PERFORMANCE.md

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -99,22 +99,10 @@ Artifacts after the script: `cpu.pb.gz`, `pprof-top.txt`, `homer.log` under `OUT
9999

100100
## `duckdb-go-bindings`: upstream vs fork
101101

102-
Homer pulls DuckDB’s CGO stack through **`github.com/duckdb/duckdb-go/v2`**, which depends on the prebuilt static libs in **[`github.com/duckdb/duckdb-go-bindings`](https://github.com/duckdb/duckdb-go-bindings)** (see that repo for versioning, e.g. DuckDB `v1.5.2` → module tag **`v0.10502.0`**).
102+
Homer pulls DuckDB’s CGO stack through **`github.com/duckdb/duckdb-go/v2`**, which depends on the prebuilt static libs in **[`github.com/duckdb/duckdb-go-bindings`](https://github.com/duckdb/duckdb-go-bindings)** (see that repo for versioning, e.g. DuckDB `v1.5.3` → module tag **`v0.10503.0`**).
103103

104104
By default **`src/go.mod` contains a `replace` directive** pointing to a fork that eliminates per-string CGO malloc/free in the Appender hot path (visible as `VectorAssignStringElementLen` + `duckdb_free` per-column in profiles). This fork has been benchmarked against upstream and showed a measurable reduction in CGO overhead at high PPS.
105105

106-
The current `replace` in `src/go.mod`:
107-
108-
```go
109-
replace github.com/duckdb/duckdb-go-bindings => github.com/adubovikov/duckdb-go-bindings v0.10502.0-homer.gcopt.3
110-
```
111-
112-
To revert to upstream bindings, remove this `replace` line and run `go mod tidy`. For experiments (e.g. additional optimisations), you can update the fork reference:
113-
114-
```go
115-
replace github.com/duckdb/duckdb-go-bindings => github.com/adubovikov/duckdb-go-bindings v0.10502.0-homer.gcopt.3
116-
```
117-
118106
Then `go mod tidy`, rebuild, and compare with **`./scripts/profile_ingest_load.sh`** using the same `PROFILE_SEC`, `PPS`, and `OUT_DIR` naming. Use a **warm-up** (send traffic for several seconds before `profile?seconds=`) and **≥20–30 s** profiles so `runtime.cgocall` / Appender rows dominate over one-off init noise.
119107

120108
Example A/B on one machine (same `PPS`/`PROFILE_SEC`): upstream vs fork showed **~1%** difference in total CPU sample time over 10 s (within run-to-run variance); treat small deltas as inconclusive until you repeat on your hardware and workload mix.

scripts/build_package.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,15 @@ sed -i "s|arch: \".*\"|arch: \"${ARCH}\"|g" "${NFPM_CONFIG}"
127127

128128
echo "==> Downloading DuckDB extensions for ${ARCH} ..."
129129
if [ "$ARCH" = "amd64" ]; then EXT_PLATFORM=linux_amd64; else EXT_PLATFORM=linux_arm64; fi
130-
DUCKDB_VERSION=v1.5.2 "${BUILD_DIR}/scripts/download_duckdb_extensions.sh" "$EXT_PLATFORM"
130+
DUCKDB_VERSION=v1.5.3 "${BUILD_DIR}/scripts/download_duckdb_extensions.sh" "$EXT_PLATFORM"
131131

132132
echo "==> Packaging ${PACKAGE}_${VERSION}_${ARCH}.deb ..."
133-
DUCKDB_VERSION=v1.5.2 EXT_PLATFORM="${EXT_PLATFORM}" VERSION="${VERSION}" "${BUILD_DIR}/nfpm" pkg \
133+
DUCKDB_VERSION=v1.5.3 EXT_PLATFORM="${EXT_PLATFORM}" VERSION="${VERSION}" "${BUILD_DIR}/nfpm" pkg \
134134
--config "${NFPM_CONFIG}" \
135135
--target "${BUILD_DIR}/${PACKAGE}_${VERSION}_${ARCH}.deb"
136136

137137
echo "==> Packaging ${PACKAGE}_${VERSION}_${ARCH}.rpm ..."
138-
DUCKDB_VERSION=v1.5.2 EXT_PLATFORM="${EXT_PLATFORM}" VERSION="${VERSION}" "${BUILD_DIR}/nfpm" pkg \
138+
DUCKDB_VERSION=v1.5.3 EXT_PLATFORM="${EXT_PLATFORM}" VERSION="${VERSION}" "${BUILD_DIR}/nfpm" pkg \
139139
--config "${NFPM_CONFIG}" \
140140
--target "${BUILD_DIR}/${PACKAGE}_${VERSION}_${ARCH}.rpm"
141141

scripts/download_duckdb_extensions.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
# -> ~/.duckdb/extensions/<version>/<platform>/...
55
#
66
# DUCKDB_VERSION must stay in sync with embedded DuckDB from
7-
# github.com/duckdb/duckdb-go-bindings in src/go.mod (e.g. v0.10502.x -> v1.5.2).
7+
# github.com/duckdb/duckdb-go-bindings in src/go.mod (e.g. v0.10503.x -> v1.5.3).
88
#
99
# Usage:
1010
# ./scripts/download_duckdb_extensions.sh [EXT_PLATFORM]
1111
# If EXT_PLATFORM is omitted, it is derived from uname (linux_amd64, …).
1212

1313
set -euo pipefail
1414

15-
DUCKDB_VERSION="${DUCKDB_VERSION:-v1.5.2}"
15+
DUCKDB_VERSION="${DUCKDB_VERSION:-v1.5.3}"
1616

1717
if [ -n "${1:-}" ]; then
1818
EXT_PLATFORM="$1"

src/go.mod

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require (
1212
github.com/charmbracelet/bubbletea v1.3.10
1313
github.com/charmbracelet/lipgloss v1.1.0
1414
github.com/chzyer/readline v1.5.1
15-
github.com/duckdb/duckdb-go/v2 v2.10502.0
15+
github.com/duckdb/duckdb-go/v2 v2.10503.0
1616
github.com/fasthttp/websocket v1.5.12
1717
github.com/gaissmai/cidrtree v0.5.0
1818
github.com/gnet-io/tls v0.0.0-20240508094059-f3c43f05f76d
@@ -61,12 +61,12 @@ require (
6161
github.com/clipperhouse/displaywidth v0.9.0 // indirect
6262
github.com/clipperhouse/stringish v0.1.1 // indirect
6363
github.com/clipperhouse/uax29/v2 v2.5.0 // indirect
64-
github.com/duckdb/duckdb-go-bindings v0.10502.0 // indirect
65-
github.com/duckdb/duckdb-go-bindings/lib/darwin-amd64 v0.10502.0 // indirect
66-
github.com/duckdb/duckdb-go-bindings/lib/darwin-arm64 v0.10502.0 // indirect
67-
github.com/duckdb/duckdb-go-bindings/lib/linux-amd64 v0.10502.0 // indirect
68-
github.com/duckdb/duckdb-go-bindings/lib/linux-arm64 v0.10502.0 // indirect
69-
github.com/duckdb/duckdb-go-bindings/lib/windows-amd64 v0.10502.0 // indirect
64+
github.com/duckdb/duckdb-go-bindings v0.10503.0 // indirect
65+
github.com/duckdb/duckdb-go-bindings/lib/darwin-amd64 v0.10503.0 // indirect
66+
github.com/duckdb/duckdb-go-bindings/lib/darwin-arm64 v0.10503.0 // indirect
67+
github.com/duckdb/duckdb-go-bindings/lib/linux-amd64 v0.10503.0 // indirect
68+
github.com/duckdb/duckdb-go-bindings/lib/linux-arm64 v0.10503.0 // indirect
69+
github.com/duckdb/duckdb-go-bindings/lib/windows-amd64 v0.10503.0 // indirect
7070
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
7171
github.com/fsnotify/fsnotify v1.9.0 // indirect
7272
github.com/gaissmai/extnetip v0.4.0 // indirect
@@ -139,10 +139,3 @@ require (
139139
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
140140
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
141141
)
142-
143-
// adubovikov fork: eliminates per-string CGO malloc/free in Appender hot path
144-
// (VectorAssignStringElementLen + duckdb_free per-column visible in perf)
145-
replace (
146-
github.com/duckdb/duckdb-go-bindings => github.com/adubovikov/duckdb-go-bindings v0.10502.0-homer.gcopt.4
147-
github.com/duckdb/duckdb-go/v2 => github.com/adubovikov/duckdb-go/v2 v2.10502.0-homer.1
148-
)

src/go.sum

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@ github.com/Jeffail/gabs/v2 v2.7.0 h1:Y2edYaTcE8ZpRsR2AtmPu5xQdFDIthFG0jYhu5PY8kg
44
github.com/Jeffail/gabs/v2 v2.7.0/go.mod h1:dp5ocw1FvBBQYssgHsG7I1WYsiLRtkUaB1FEtSwvNUw=
55
github.com/VictoriaMetrics/fastcache v1.13.2 h1:2XTB49aLSuCex7e9P5rqrfQcMkzGjh5Vq3GMFa8YpCA=
66
github.com/VictoriaMetrics/fastcache v1.13.2/go.mod h1:hHXhl4DA2fTL2HTZDJFXWgW0LNjo6B+4aj2Wmng3TjU=
7-
github.com/adubovikov/duckdb-go-bindings v0.10502.0-homer.gcopt.4 h1:POEhov9f6zTTe8ycVCAhw2oVb7vQRhnrh0ademlxfnc=
8-
github.com/adubovikov/duckdb-go-bindings v0.10502.0-homer.gcopt.4/go.mod h1:8KF3oEKrmYdSbZnQ1BPTdxAZDHRaM1LEv+oBvL2nSLk=
9-
github.com/adubovikov/duckdb-go/v2 v2.10502.0-homer.1 h1:r1h5DeqIKCUDVuL+2+dl9b69bP7hhpISJ6aD7hNQ7/g=
10-
github.com/adubovikov/duckdb-go/v2 v2.10502.0-homer.1/go.mod h1:hyw+B4IYFx9L5Aqc2qfHQdG4K01vivbguYcrZwQ5gF8=
117
github.com/ajstarks/svgo v0.0.0-20200320125537-f189e35d30ca/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
128
github.com/alexbrainman/sspi v0.0.0-20231016080023-1a75b4708caa h1:LHTHcTQiSGT7VVbI0o4wBRNQIgn917usHWOd6VAffYI=
139
github.com/alexbrainman/sspi v0.0.0-20231016080023-1a75b4708caa/go.mod h1:cEWa1LVoE5KvSD9ONXsZrj0z6KqySlCCNKHlLzbqAt4=
@@ -61,16 +57,20 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
6157
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6258
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
6359
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
64-
github.com/duckdb/duckdb-go-bindings/lib/darwin-amd64 v0.10502.0 h1:1GxSHSI1ef3sCdDVrJ9l8s6aTd7P1K788os9lHrs43g=
65-
github.com/duckdb/duckdb-go-bindings/lib/darwin-amd64 v0.10502.0/go.mod h1:EnAvZh1kNJHp5yF+M1ZHNEvapnmt6anq1xXHVrAGqMo=
66-
github.com/duckdb/duckdb-go-bindings/lib/darwin-arm64 v0.10502.0 h1:76gB6UiqKae6JptNiFLjwecD0oR87bXS5u6Lni9hSGI=
67-
github.com/duckdb/duckdb-go-bindings/lib/darwin-arm64 v0.10502.0/go.mod h1:IGLSeEcFhNeZF16aVjQCULD7TsFZKG5G7SyKJAXKp5c=
68-
github.com/duckdb/duckdb-go-bindings/lib/linux-amd64 v0.10502.0 h1:fcBKRy9keR5FLxppDD7ZjQ1EwqTRcA2kPLi2jWilPDw=
69-
github.com/duckdb/duckdb-go-bindings/lib/linux-amd64 v0.10502.0/go.mod h1:KAIynZ0GHCS7X5fRyuFnQMg/SZBPK/bS9OCOVojClxw=
70-
github.com/duckdb/duckdb-go-bindings/lib/linux-arm64 v0.10502.0 h1:pUwDWLQZIkm/v5aoGIu2cTAsgGqratxklRwP9zzsmiU=
71-
github.com/duckdb/duckdb-go-bindings/lib/linux-arm64 v0.10502.0/go.mod h1:81SGOYoEUs8qaAfSk1wRfM5oobrIJ5KI7AzYhK6/bvQ=
72-
github.com/duckdb/duckdb-go-bindings/lib/windows-amd64 v0.10502.0 h1:CDPf2ow6pP/9zYXfBdyT8a1GZ69eBWdMt5AhAsVgvyU=
73-
github.com/duckdb/duckdb-go-bindings/lib/windows-amd64 v0.10502.0/go.mod h1:K25pJL26ARblGDeuAkrdblFvUen92+CwksLtPEHRqqQ=
60+
github.com/duckdb/duckdb-go-bindings v0.10503.0 h1:nBms3habub5GB3N7zV7l1BwFP2mdRGrUepa+s5feZ1E=
61+
github.com/duckdb/duckdb-go-bindings v0.10503.0/go.mod h1:USV+K6f/1gJBElmujc08nbJLSqPde1tqGrYuw/xR518=
62+
github.com/duckdb/duckdb-go-bindings/lib/darwin-amd64 v0.10503.0 h1:O/yDkGeEZhWcRQwXGCy4SOioPqg8UNJEU/r4p6tMsgg=
63+
github.com/duckdb/duckdb-go-bindings/lib/darwin-amd64 v0.10503.0/go.mod h1:EnAvZh1kNJHp5yF+M1ZHNEvapnmt6anq1xXHVrAGqMo=
64+
github.com/duckdb/duckdb-go-bindings/lib/darwin-arm64 v0.10503.0 h1:gTYLRJZd9DcNtT3UkT+5NmMU1BgDZ22eP1vBGMjV2Z0=
65+
github.com/duckdb/duckdb-go-bindings/lib/darwin-arm64 v0.10503.0/go.mod h1:IGLSeEcFhNeZF16aVjQCULD7TsFZKG5G7SyKJAXKp5c=
66+
github.com/duckdb/duckdb-go-bindings/lib/linux-amd64 v0.10503.0 h1:XzD2yzX9trLosZJYrCAgf/WDek6ANJHCQOFaoH7hfzg=
67+
github.com/duckdb/duckdb-go-bindings/lib/linux-amd64 v0.10503.0/go.mod h1:KAIynZ0GHCS7X5fRyuFnQMg/SZBPK/bS9OCOVojClxw=
68+
github.com/duckdb/duckdb-go-bindings/lib/linux-arm64 v0.10503.0 h1:zYkiCNaQAmneI98Hfjj31TLR9QnPA+8IuablmWPthog=
69+
github.com/duckdb/duckdb-go-bindings/lib/linux-arm64 v0.10503.0/go.mod h1:81SGOYoEUs8qaAfSk1wRfM5oobrIJ5KI7AzYhK6/bvQ=
70+
github.com/duckdb/duckdb-go-bindings/lib/windows-amd64 v0.10503.0 h1:InTPj+kxhdsFmG8iip6FAqJoH8Oerx0tW4dzfxqkAEk=
71+
github.com/duckdb/duckdb-go-bindings/lib/windows-amd64 v0.10503.0/go.mod h1:K25pJL26ARblGDeuAkrdblFvUen92+CwksLtPEHRqqQ=
72+
github.com/duckdb/duckdb-go/v2 v2.10503.0 h1:cl8hbxl8Wn2rBuBWVyyDyJe/ZfCji7wrMPZ/EdFzN1Y=
73+
github.com/duckdb/duckdb-go/v2 v2.10503.0/go.mod h1:3trgI3LZo7TTgJYAP9+xCDJYdAF+E+TKE41JWKeWE5I=
7474
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
7575
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
7676
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=

0 commit comments

Comments
 (0)