From b7e1cb04794c0bb625483537bef657031de7fe29 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Thu, 13 Apr 2023 14:21:51 +0200 Subject: [PATCH 01/53] Create starlight.yml --- .github/workflows/starlight.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/workflows/starlight.yml diff --git a/.github/workflows/starlight.yml b/.github/workflows/starlight.yml new file mode 100644 index 0000000..fc1abad --- /dev/null +++ b/.github/workflows/starlight.yml @@ -0,0 +1,16 @@ +name: Starring Partner +on: + issues: + types: [opened, reopened] +jobs: + # This workflow checks if a user has starred a repository and takes actions + starcheck: + runs-on: ubuntu-latest + steps: + - name: Please Star First + uses: qxip/please-star-light@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + message: "Thanks for opening an Issue! Please star this repository to motivate developers! :star:" + label: "stargazed" + autoclose: false From f8ff67f137f11f6d3827d42fb6a14b108a87c59b Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Thu, 13 Apr 2023 18:25:52 +0200 Subject: [PATCH 02/53] Update README.md --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3fd0bb9..99bb319 100644 --- a/README.md +++ b/README.md @@ -73,8 +73,14 @@ hello,v0.7.1 ``` ### :fist_right: Extensions -Several extensions are pre-installed by default in Docker images, including _parquet, json, httpfs_
-When using HTTP API, _httpfs, parquet, json_ extensions are automatically pre-loaded. +Several extensions are pre-installed by default in [Docker images](https://github.com/metrico/quackpipe/blob/main/Dockerfile#L9), including _parquet, json, httpfs_
+When using HTTP API, _httpfs, parquet, json_ extensions are automatically pre-loaded by the wrapper. _(requires a r/w filesystem)_ + +Users can pre-install extensions and execute quackpipe using a custom parameters: +``` +echo "INSTALL httpfs; INSTALL json; INSTALL parquet; INSTALL fts;" | ./quackpipe --stdin --params "?extension_directory=/tmp/" +./quackpipe --port 8123 --host 0.0.0.0 --params "?extension_directory=/tmp/" +```
From b5b152f10f1d93bdd7cdc96b771a7e0e513ed00e Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Thu, 13 Apr 2023 18:26:29 +0200 Subject: [PATCH 03/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 99bb319..6688f07 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ When using HTTP API, _httpfs, parquet, json_ extensions are automatically pre-lo Users can pre-install extensions and execute quackpipe using a custom parameters: ``` -echo "INSTALL httpfs; INSTALL json; INSTALL parquet; INSTALL fts;" | ./quackpipe --stdin --params "?extension_directory=/tmp/" +echo "INSTALL httpfs;" | ./quackpipe --stdin --params "?extension_directory=/tmp/" ./quackpipe --port 8123 --host 0.0.0.0 --params "?extension_directory=/tmp/" ``` From bbf2ee8095d62b2bda136e0cc41acbe30e6d0639 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Thu, 13 Apr 2023 18:27:06 +0200 Subject: [PATCH 04/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6688f07..b027bec 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ hello,v0.7.1 ### :fist_right: Extensions Several extensions are pre-installed by default in [Docker images](https://github.com/metrico/quackpipe/blob/main/Dockerfile#L9), including _parquet, json, httpfs_
-When using HTTP API, _httpfs, parquet, json_ extensions are automatically pre-loaded by the wrapper. _(requires a r/w filesystem)_ +When using HTTP API, _httpfs, parquet, json_ extensions are automatically pre-loaded by the wrapper. Users can pre-install extensions and execute quackpipe using a custom parameters: ``` From d30ce593ca8611d2062721e702751120438b0397 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Thu, 13 Apr 2023 23:59:00 +0200 Subject: [PATCH 05/53] query presets --- play.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/play.html b/play.html index 6a9e670..6f982dc 100644 --- a/play.html +++ b/play.html @@ -458,6 +458,10 @@  (Ctrl/Cmd+Enter) + 🌑🌞 @@ -480,6 +484,14 @@ /// This is to avoid race conditions. let request_num = 0; + // query presets + var querybox = document.getElementById('query'); + var querypresets = document.getElementById('dropdown'); + querypresets.onchange = function() { + var newquery = querypresets.options[querypresets.selectedIndex].value; + querybox.value = newquery; + } + /// Save query in history only if it is different. let previous_query = ''; From 73e88ac40412a488a6957f7065b8a0024cb71733 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 14 Apr 2023 17:58:23 +0200 Subject: [PATCH 06/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b027bec..919c21f 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,7 @@ echo "INSTALL httpfs;" | ./quackpipe --stdin --params "?extension_directory=/tmp ###### :black_joker: Disclaimers -[^1]: DuckDB ® is a trademark of MotherDuck. No direct affiliation or endorsement. +[^1]: DuckDB ® is a trademark of DuckDB Foundation. No direct affiliation or endorsement. [^2]: ClickHouse ® is a trademark of ClickHouse Inc. No direct affiliation or endorsement. [^3]: Released under the MIT license. See LICENSE for details. All rights reserved by their respective owners. [^4]: Elements of this experiments (including potential bugs) were co-authored by ChatGPT. From df4e1339e2fb064327df4f29e01366c2476961bc Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 14 Apr 2023 20:05:50 +0200 Subject: [PATCH 07/53] Add examples --- play.html | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/play.html b/play.html index 6f982dc..e1bfd64 100644 --- a/play.html +++ b/play.html @@ -459,9 +459,12 @@ + + + 🌑🌞 From aeb9113126a906d6d1c2edbaf258d667a7c9abe7 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 14 Apr 2023 21:34:57 +0200 Subject: [PATCH 08/53] Update play.html --- play.html | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/play.html b/play.html index e1bfd64..0c060c0 100644 --- a/play.html +++ b/play.html @@ -459,11 +459,14 @@ 🌑🌞 From 229d56339cc87f0fa32ad5f71e8c73e4522dcc23 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 14 Apr 2023 21:44:59 +0200 Subject: [PATCH 09/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 919c21f..7a2d7d5 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Run with `-h` for a full list of parameters #### :point_right: Playground Execute queries using the embedded playground -![image](https://user-images.githubusercontent.com/1423657/230783859-1c69910b-6bf2-42df-8b1d-876b94fc3419.png) + #### :point_right: API Execute queries using the POST API From ae864437af88103137a708df6fdcf49d028897b5 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 14 Apr 2023 21:47:10 +0200 Subject: [PATCH 10/53] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7a2d7d5..f00710b 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ echo "INSTALL httpfs;" | ./quackpipe --stdin --params "?extension_directory=/tmp - [x] [cgo](https://github.com/marcboeker/go-duckdb) binding - [x] Extension preloading - [ ] Aliases Extension -- [x] REST API [^3] [^4] +- [x] REST API [^3] - [x] CH FORMAT Emulation - [x] CSV, CSVWithNames - [x] TSV, TSVWithNames @@ -117,7 +117,6 @@ echo "INSTALL httpfs;" | ./quackpipe --stdin --params "?extension_directory=/tmp ###### :black_joker: Disclaimers -[^1]: DuckDB ® is a trademark of DuckDB Foundation. No direct affiliation or endorsement. +[^1]: DuckDB ® is a trademark of DuckDB Foundation. All rights reserved by their respective owners. [^2]: ClickHouse ® is a trademark of ClickHouse Inc. No direct affiliation or endorsement. [^3]: Released under the MIT license. See LICENSE for details. All rights reserved by their respective owners. -[^4]: Elements of this experiments (including potential bugs) were co-authored by ChatGPT. From 3eb29800f0202237f8d03d59c440d920310a064f Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 14 Apr 2023 22:57:01 +0200 Subject: [PATCH 11/53] Fix GET parameter handling --- quackpipe.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/quackpipe.go b/quackpipe.go index 18f0a62..913a16b 100644 --- a/quackpipe.go +++ b/quackpipe.go @@ -296,7 +296,8 @@ func main() { // handle query parameter if r.URL.Query().Get("query") != "" { - query = r.Form.Get("query") + // query = r.FormValue("query") + query = r.URL.Query().Get("query") } else if r.Body != nil { bodyBytes, err = ioutil.ReadAll(r.Body) if err != nil { @@ -345,7 +346,7 @@ func main() { } }) - fmt.Printf("API Running: %s:%s\n", *appFlags.Host, *appFlags.Port) + fmt.Printf("QuackPipe API Running: %s:%s\n", *appFlags.Host, *appFlags.Port) if err := http.ListenAndServe(*appFlags.Host+":"+*appFlags.Port, nil); err != nil { panic(err) } From 49636bd0876027892463787910a70f25a306e62f Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Tue, 18 Apr 2023 02:01:13 +0200 Subject: [PATCH 12/53] CH Aliases --- aliases.sql | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 aliases.sql diff --git a/aliases.sql b/aliases.sql new file mode 100644 index 0000000..86e3b75 --- /dev/null +++ b/aliases.sql @@ -0,0 +1,45 @@ +# CLICKHOUSE-DUCKDB ALIAS EXAMPLES + +CREATE OR REPLACE MACRO toString(expr) AS CAST(expr AS VARCHAR); + +CREATE OR REPLACE MACRO toInt8(expr) AS CAST(expr AS INT8); +CREATE OR REPLACE MACRO toInt16(expr) AS CAST(expr AS INT16); +CREATE OR REPLACE MACRO toInt32(expr) AS CAST(expr AS INT32); +CREATE OR REPLACE MACRO toInt64(expr) AS CAST(expr AS INT64); +CREATE OR REPLACE MACRO toInt128(expr) AS CAST(expr AS INT128); +CREATE OR REPLACE MACRO toInt256(expr) AS CAST(expr AS HUGEINT); + +CREATE OR REPLACE MACRO toInt8OrZero(expr) AS CASE WHEN TRY_CAST(expr AS INT8) THEN CAST(expr as INT8) ELSE 0 END; +CREATE OR REPLACE MACRO toInt16OrZero(expr) AS CASE WHEN TRY_CAST(expr AS INT16) THEN CAST(expr as INT16) ELSE 0 END; +CREATE OR REPLACE MACRO toInt32OrZero(expr) AS CASE WHEN TRY_CAST(expr AS INT32) THEN CAST(expr as INT32) ELSE 0 END; +CREATE OR REPLACE MACRO toInt64OrZero(expr) AS CASE WHEN TRY_CAST(expr AS INT64) THEN CAST(expr as INT64) ELSE 0 END; +CREATE OR REPLACE MACRO toInt128OrZero(expr) AS CASE WHEN TRY_CAST(expr AS INT128) THEN CAST(expr as INT128) ELSE 0 END; +CREATE OR REPLACE MACRO toInt256OrZero(expr) AS CASE WHEN TRY_CAST(expr AS HUGEINT) THEN CAST(expr as HUGEINT) ELSE 0 END; + +CREATE OR REPLACE MACRO toInt8OrNull(expr) AS TRY_CAST(expr AS INT8); +CREATE OR REPLACE MACRO toInt16OrNull(expr) AS TRY_CAST(expr AS INT16); +CREATE OR REPLACE MACRO toInt32OrNull(expr) AS TRY_CAST(expr AS INT32); +CREATE OR REPLACE MACRO toInt64OrNull(expr) AS TRY_CAST(expr AS INT64); +CREATE OR REPLACE MACRO toInt128OrNull(expr) AS TRY_CAST(expr AS INT128); +CREATE OR REPLACE MACRO toInt256OrNull(expr) AS TRY_CAST(expr AS HUGEINT); + +CREATE OR REPLACE MACRO toUInt8(expr) AS CAST(expr AS UTINYINT); +CREATE OR REPLACE MACRO toUInt16(expr) AS CAST(expr AS USMALLINT); +CREATE OR REPLACE MACRO toUInt32(expr) AS CAST(expr AS UINTEGER); +CREATE OR REPLACE MACRO toUInt64(expr) AS CAST(expr AS UBIGINT); + +CREATE OR REPLACE MACRO toUInt8rZero(expr) AS CASE WHEN TRY_CAST(expr AS UTINYINT) THEN CAST(expr as UTINYINT) ELSE 0 END; +CREATE OR REPLACE MACRO toUInt16rZero(expr) AS CASE WHEN TRY_CAST(expr AS USMALLINT) THEN CAST(expr as USMALLINT) ELSE 0 END; +CREATE OR REPLACE MACRO toUInt32rZero(expr) AS CASE WHEN TRY_CAST(expr AS UINTEGER) THEN CAST(expr as UINTEGER) ELSE 0 END; +CREATE OR REPLACE MACRO toUInt64rZero(expr) AS CASE WHEN TRY_CAST(expr AS UBIGINT) THEN CAST(expr as UBIGINT) ELSE 0 END; + +CREATE OR REPLACE MACRO toUInt8rNull(expr) AS TRY_CAST(expr AS UTINYINT); +CREATE OR REPLACE MACRO toUInt16rNull(expr) AS TRY_CAST(expr AS USMALLINT); +CREATE OR REPLACE MACRO toUInt32rNull(expr) AS TRY_CAST(expr AS UINTEGER); +CREATE OR REPLACE MACRO toUInt64rNull(expr) AS TRY_CAST(expr AS UBIGINT); + +CREATE OR REPLACE MACRO toFloat(expr) AS CAST(expr AS DOUBLE); +CREATE OR REPLACE MACRO toFloatOrNull(expr) AS TRY_CAST(expr AS DOUBLE); +CREATE OR REPLACE MACRO toFloatOrZero(expr) AS CASE WHEN TRY_CAST(expr AS DOUBLE) THEN CAST(expr as DOUBLE) ELSE 0 END; + +# TO BE CONTINUED From 4075f91a9921fcca207b8f550abe2f55fe0f9c60 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Tue, 18 Apr 2023 17:35:34 +0200 Subject: [PATCH 13/53] Update aliases.sql --- aliases.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/aliases.sql b/aliases.sql index 86e3b75..005edf3 100644 --- a/aliases.sql +++ b/aliases.sql @@ -42,4 +42,7 @@ CREATE OR REPLACE MACRO toFloat(expr) AS CAST(expr AS DOUBLE); CREATE OR REPLACE MACRO toFloatOrNull(expr) AS TRY_CAST(expr AS DOUBLE); CREATE OR REPLACE MACRO toFloatOrZero(expr) AS CASE WHEN TRY_CAST(expr AS DOUBLE) THEN CAST(expr as DOUBLE) ELSE 0 END; +CREATE OR REPLACE MACRO intDiv(a, b) AS (a / b); +CREATE OR REPLACE MACRO match(string,token) AS string LIKE token; + # TO BE CONTINUED From e9b9a935b60c63abac1a31e0233369fd67aa8b8c Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 5 May 2023 16:13:42 +0200 Subject: [PATCH 14/53] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index f00710b..dd259c4 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,11 @@ Play with DuckDB SQL and Cloud storage though a familiar API, without giving up ### Demos :hatched_chick: try a [sample s3/parquet query](https://quackpipe.metrico.in/?user=default#U0VMRUNUCiAgICB0b3duLAogICAgZGlzdHJpY3QsCiAgICBjb3VudCgpIEFTIGMsCkZST00gcmVhZF9wYXJxdWV0KCdodHRwczovL2RhdGFzZXRzLWRvY3VtZW50YXRpb24uczMuZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20vaG91c2VfcGFycXVldC9ob3VzZV8wLnBhcnF1ZXQnKQpXSEVSRSByZWFkX3BhcnF1ZXQudG93biA9PSAnTE9ORE9OJwpHUk9VUCBCWQogICAgdG93biwKICAgIGRpc3RyaWN0Ck9SREVSIEJZIGMgREVTQwpMSU1JVCAxMA==) _(deta.space free tier, AWS Lambdas)_
:hatched_chick: try our [miniature playground](https://quackpipe.fly.dev) _(fly.io free tier, 1x-shared-vcpu, 256Mb)_ +:hatched_chick: launch your own free instance on fly.io + + +
From 0f25f3dccfbc892cfacc5e063a1a58c2494c4743 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 5 May 2023 16:14:09 +0200 Subject: [PATCH 15/53] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dd259c4..6746456 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ Play with DuckDB SQL and Cloud storage though a familiar API, without giving up ### Demos :hatched_chick: try a [sample s3/parquet query](https://quackpipe.metrico.in/?user=default#U0VMRUNUCiAgICB0b3duLAogICAgZGlzdHJpY3QsCiAgICBjb3VudCgpIEFTIGMsCkZST00gcmVhZF9wYXJxdWV0KCdodHRwczovL2RhdGFzZXRzLWRvY3VtZW50YXRpb24uczMuZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20vaG91c2VfcGFycXVldC9ob3VzZV8wLnBhcnF1ZXQnKQpXSEVSRSByZWFkX3BhcnF1ZXQudG93biA9PSAnTE9ORE9OJwpHUk9VUCBCWQogICAgdG93biwKICAgIGRpc3RyaWN0Ck9SREVSIEJZIGMgREVTQwpMSU1JVCAxMA==) _(deta.space free tier, AWS Lambdas)_
-:hatched_chick: try our [miniature playground](https://quackpipe.fly.dev) _(fly.io free tier, 1x-shared-vcpu, 256Mb)_ -:hatched_chick: launch your own free instance on fly.io +:hatched_chick: try our [miniature playground](https://quackpipe.fly.dev) _(fly.io free tier, 1x-shared-vcpu, 256Mb)_
+:hatched_chick: launch your own _free instance_ From e528e50ca04d154abf493d32f027d62634999f93 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 2 Jun 2023 20:46:17 +0200 Subject: [PATCH 16/53] Update release.yml --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2a963bb..5bdb87f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: goos: [linux] - goarch: [amd64] + goarch: [amd64, arm64] steps: - uses: actions/checkout@v3 @@ -50,5 +50,5 @@ jobs: with: context: . push: true - tags: ${{ steps.meta.outputs.tags }} + tags: ${{ steps.meta.outputs.tags }}-${{ matrix.goarch }} labels: ${{ steps.meta.outputs.labels }} From e293ff314ce4ed7909b4237f92059ad45623f446 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 2 Jun 2023 20:53:23 +0200 Subject: [PATCH 17/53] Update release.yml --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5bdb87f..2a963bb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: goos: [linux] - goarch: [amd64, arm64] + goarch: [amd64] steps: - uses: actions/checkout@v3 @@ -50,5 +50,5 @@ jobs: with: context: . push: true - tags: ${{ steps.meta.outputs.tags }}-${{ matrix.goarch }} + tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} From 679617cc904c3af653bcef4ff638d19ff4b78641 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 30 Jun 2023 17:45:31 +0200 Subject: [PATCH 18/53] Update Dockerfile --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e275439..6eb5019 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,9 @@ FROM golang:1.20 as builder WORKDIR / COPY . . -RUN CGO_ENABLED=1 go build -o quackpipe quackpipe.go +RUN go get github.com/marcboeker/go-duckdb +RUN go mod tidy +RUN CGO_ENABLED=1 go build -tags=duckdb_from_source -o quackpipe quackpipe.go RUN strip quackpipe FROM ubuntu:20.04 From fdd027184305d77b502cfe6837580f6051d69a7a Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 30 Jun 2023 17:55:41 +0200 Subject: [PATCH 19/53] Update Dockerfile --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6eb5019..66d9993 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,6 @@ FROM golang:1.20 as builder WORKDIR / COPY . . -RUN go get github.com/marcboeker/go-duckdb -RUN go mod tidy RUN CGO_ENABLED=1 go build -tags=duckdb_from_source -o quackpipe quackpipe.go RUN strip quackpipe From ed438c94c3664ac24ce6807d9240105eb1dfb863 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sun, 2 Jul 2023 11:45:53 +0200 Subject: [PATCH 20/53] ClickHouse UDF --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.md b/README.md index 6746456..52a9fc9 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,23 @@ echo "INSTALL httpfs;" | ./quackpipe --stdin --params "?extension_directory=/tmp ./quackpipe --port 8123 --host 0.0.0.0 --params "?extension_directory=/tmp/" ``` + +### ⏩ ClickHouse UDF + +Quackpipe can be used as [executable UDF](https://clickhouse.com/docs/en/engines/table-functions/executable) to get DuckDB data IN/OUT of ClickHouse queries: + +```sql +SELECT * +FROM executable('quackpipe -stdin -format TSV', TSV, 'id UInt32, num UInt32', ( + SELECT 'SELECT 1, 2' +)) +Query id: dd878948-bec8-4abe-9e06-2f5813653c3a +┌─id─┬─num─┐ +│ 1 │ 2 │ +└────┴─────┘ +1 rows in set. Elapsed: 0.268 sec. +``` +
------- From 3e20e0dfd3b60d9c8a80a240219e00b2c9f0d4b3 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sun, 2 Jul 2023 11:47:57 +0200 Subject: [PATCH 21/53] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 52a9fc9..9ef9dc3 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ Query id: dd878948-bec8-4abe-9e06-2f5813653c3a ┌─id─┬─num─┐ │ 1 │ 2 │ └────┴─────┘ -1 rows in set. Elapsed: 0.268 sec. +1 rows in set. Elapsed: 0.155 sec. ```
@@ -120,6 +120,7 @@ Query id: dd878948-bec8-4abe-9e06-2f5813653c3a - [ ] Native - [x] Web Playground _(from ClickkHouse, Apache2 Licensed)_ [^2] - [x] STDIN Fast Query Execution +- [x] ClickHouse Executable UDF - [x] `:memory:` mode Cloud Storage _(s3/r2/minio, httpfs, etc)_ - [x] `:file:` mode using optional _parameters_ From f2c7e17f1b391ed67b3d0d0ef20be6d5892b983d Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sun, 2 Jul 2023 12:35:42 +0200 Subject: [PATCH 22/53] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 9ef9dc3..14dfb57 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,9 @@ Query id: dd878948-bec8-4abe-9e06-2f5813653c3a 1 rows in set. Elapsed: 0.155 sec. ``` +🃏 You can even make DuckDB SQL feel more like home by using [ClickHuose Command Aliases](https://github.com/metrico/quackpipe/blob/main/aliases.sql) + +
------- From a316f2c652e27be996fd15796fc388f713786dbb Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sun, 2 Jul 2023 12:36:38 +0200 Subject: [PATCH 23/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 14dfb57..fce3150 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ Query id: dd878948-bec8-4abe-9e06-2f5813653c3a 1 rows in set. Elapsed: 0.155 sec. ``` -🃏 You can even make DuckDB SQL feel more like home by using [ClickHuose Command Aliases](https://github.com/metrico/quackpipe/blob/main/aliases.sql) +🃏 Format Confusion? Make DuckDB SQL feel more like ClickHouse by using [ClickHuose Macro Aliases](https://github.com/metrico/quackpipe/blob/main/aliases.sql)
From 22cf3d09a4ea27231ea53fecb5560934cdf24d01 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sun, 2 Jul 2023 12:47:00 +0200 Subject: [PATCH 24/53] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fce3150..ad81f24 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,8 @@ Query id: dd878948-bec8-4abe-9e06-2f5813653c3a 1 rows in set. Elapsed: 0.155 sec. ``` -🃏 Format Confusion? Make DuckDB SQL feel more like ClickHouse by using [ClickHuose Macro Aliases](https://github.com/metrico/quackpipe/blob/main/aliases.sql) +🃏 What is this? Think of it as a SELECT within a SELECT with a different syntax. +🃏 Function and Format confusion? Make DuckDB SQL feel like ClickHouse with the included [ClickHuose Macro Aliases](https://github.com/metrico/quackpipe/blob/main/aliases.sql)
From 82f430945c81a6e8adf1f9ebcca1bb6c270c6e55 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sun, 2 Jul 2023 12:47:15 +0200 Subject: [PATCH 25/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ad81f24..5c97283 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ Query id: dd878948-bec8-4abe-9e06-2f5813653c3a 1 rows in set. Elapsed: 0.155 sec. ``` -🃏 What is this? Think of it as a SELECT within a SELECT with a different syntax. +🃏 What is this? Think of it as a SELECT within a SELECT with a different syntax.
🃏 Function and Format confusion? Make DuckDB SQL feel like ClickHouse with the included [ClickHuose Macro Aliases](https://github.com/metrico/quackpipe/blob/main/aliases.sql) From 6876b81e0cb5ada8ff402965ea5866e40a4db392 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sun, 2 Jul 2023 13:23:12 +0200 Subject: [PATCH 26/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5c97283..fb775f7 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,7 @@ Query id: dd878948-bec8-4abe-9e06-2f5813653c3a ``` 🃏 What is this? Think of it as a SELECT within a SELECT with a different syntax.
-🃏 Function and Format confusion? Make DuckDB SQL feel like ClickHouse with the included [ClickHuose Macro Aliases](https://github.com/metrico/quackpipe/blob/main/aliases.sql) +🃏 Format confusion? Make DuckDB SQL feel like ClickHouse with the included [ClickHuose Macro Aliases](https://github.com/metrico/quackpipe/blob/main/aliases.sql)
From 229ec9719b9c25376618fc99810db376bc5156bd Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sun, 2 Jul 2023 14:19:37 +0200 Subject: [PATCH 27/53] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index fb775f7..4860617 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,8 @@ echo "INSTALL httpfs;" | ./quackpipe --stdin --params "?extension_directory=/tmp ### ⏩ ClickHouse UDF + + Quackpipe can be used as [executable UDF](https://clickhouse.com/docs/en/engines/table-functions/executable) to get DuckDB data IN/OUT of ClickHouse queries: ```sql From e74c5256fc88834696a8ec909718f66d732a7877 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sat, 8 Jul 2023 18:31:06 +0200 Subject: [PATCH 28/53] Update release.yml --- .github/workflows/release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2a963bb..d073c23 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,7 +30,8 @@ jobs: executable_compression: upx compress_assets: OFF build_flags: -buildvcs=false -# ldflags: "-linkmode external -extldflags -static" + #ldflags: "-linkmode external -extldflags -static" + ldflags: "-extldflags=-static" - name: Log in to the Container registry uses: docker/login-action@v2.1.0 From ef2bccb4b21cf62a28909f348dab622a31a7c26e Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sat, 8 Jul 2023 18:45:39 +0200 Subject: [PATCH 29/53] Update release.yml --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d073c23..a222b02 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,7 +31,6 @@ jobs: compress_assets: OFF build_flags: -buildvcs=false #ldflags: "-linkmode external -extldflags -static" - ldflags: "-extldflags=-static" - name: Log in to the Container registry uses: docker/login-action@v2.1.0 From a411393a9b1853668f1ee6b9543a9e875da80f09 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sat, 5 Aug 2023 13:09:26 +0200 Subject: [PATCH 30/53] update to latest duckdb --- Dockerfile | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 66d9993..8f27ad7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,10 @@ FROM golang:1.20 as builder WORKDIR / COPY . . -RUN CGO_ENABLED=1 go build -tags=duckdb_from_source -o quackpipe quackpipe.go +RUN CGO_ENABLED=1 go build -o quackpipe quackpipe.go RUN strip quackpipe -FROM ubuntu:20.04 +FROM debian:12 COPY --from=builder /quackpipe /quackpipe RUN echo "INSTALL httpfs; INSTALL json; INSTALL parquet; INSTALL fts;" | /quackpipe --stdin CMD ["/quackpipe"] diff --git a/go.mod b/go.mod index 9f51c51..28472ef 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,6 @@ module quackpipe go 1.18 -require github.com/marcboeker/go-duckdb v1.2.2 +require github.com/marcboeker/go-duckdb v1.4.3 require github.com/mitchellh/mapstructure v1.5.0 // indirect diff --git a/go.sum b/go.sum index e57157d..97ae602 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/marcboeker/go-duckdb v1.2.2 h1:Qy5yW83qAcZgsEmGo+pkEZeZvxA2dzuQNPLh7wcorb0= -github.com/marcboeker/go-duckdb v1.2.2/go.mod h1:wm91jO2GNKa6iO9NTcjXIRsW+/ykPoJbQcHSXhdAl28= +github.com/marcboeker/go-duckdb v1.4.3 h1:49+UZdREC1NaWi2avMCtdnyovRswX2J6ORFmYKXwQq0= +github.com/marcboeker/go-duckdb v1.4.3/go.mod h1:wm91jO2GNKa6iO9NTcjXIRsW+/ykPoJbQcHSXhdAl28= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= From f115405f767ca9d54b8a5719e340ce5ad46e49a4 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Tue, 26 Sep 2023 17:27:52 +0200 Subject: [PATCH 31/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4860617..04487b8 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ _QuackPipe is an OLAP API built on top of DuckDB with a few extra compatibility Play with DuckDB SQL and Cloud storage though a familiar API, without giving up old habits and integrations. ### Demos -:hatched_chick: try a [sample s3/parquet query](https://quackpipe.metrico.in/?user=default#U0VMRUNUCiAgICB0b3duLAogICAgZGlzdHJpY3QsCiAgICBjb3VudCgpIEFTIGMsCkZST00gcmVhZF9wYXJxdWV0KCdodHRwczovL2RhdGFzZXRzLWRvY3VtZW50YXRpb24uczMuZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20vaG91c2VfcGFycXVldC9ob3VzZV8wLnBhcnF1ZXQnKQpXSEVSRSByZWFkX3BhcnF1ZXQudG93biA9PSAnTE9ORE9OJwpHUk9VUCBCWQogICAgdG93biwKICAgIGRpc3RyaWN0Ck9SREVSIEJZIGMgREVTQwpMSU1JVCAxMA==) _(deta.space free tier, AWS Lambdas)_
+:hatched_chick: try a [sample s3/parquet query](https://quackpipe.fly.dev/?user=default#U0VMRUNUCiAgICB0b3duLAogICAgZGlzdHJpY3QsCiAgICBjb3VudCgpIEFTIGMsCkZST00gcmVhZF9wYXJxdWV0KCdodHRwczovL2RhdGFzZXRzLWRvY3VtZW50YXRpb24uczMuZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20vaG91c2VfcGFycXVldC9ob3VzZV8wLnBhcnF1ZXQnKQpXSEVSRSByZWFkX3BhcnF1ZXQudG93biA9PSAnTE9ORE9OJwpHUk9VUCBCWQogICAgdG93biwKICAgIGRpc3RyaWN0Ck9SREVSIEJZIGMgREVTQwpMSU1JVCAxMA==) _(deta.space free tier, AWS Lambdas)_
:hatched_chick: try our [miniature playground](https://quackpipe.fly.dev) _(fly.io free tier, 1x-shared-vcpu, 256Mb)_
:hatched_chick: launch your own _free instance_ From 873680551fa84c37632f4e3d67f1bf8603d29073 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Tue, 17 Oct 2023 23:29:36 +0200 Subject: [PATCH 32/53] DuckDB 0.9.1 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 28472ef..ef842ff 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,6 @@ module quackpipe go 1.18 -require github.com/marcboeker/go-duckdb v1.4.3 +require github.com/marcboeker/go-duckdb v1.5.1 require github.com/mitchellh/mapstructure v1.5.0 // indirect diff --git a/go.sum b/go.sum index 97ae602..4b91e17 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/marcboeker/go-duckdb v1.4.3 h1:49+UZdREC1NaWi2avMCtdnyovRswX2J6ORFmYKXwQq0= -github.com/marcboeker/go-duckdb v1.4.3/go.mod h1:wm91jO2GNKa6iO9NTcjXIRsW+/ykPoJbQcHSXhdAl28= +github.com/marcboeker/go-duckdb v1.5.1 h1:Mh6h0ke9EyM2XA9dWiNOawM+oUFXYOY5o2csJ32uxBw= +github.com/marcboeker/go-duckdb v1.5.1/go.mod h1:wm91jO2GNKa6iO9NTcjXIRsW+/ykPoJbQcHSXhdAl28= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= From e82dd68149b33cbc02efdaa3d003924cfe139541 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Tue, 17 Oct 2023 23:33:29 +0200 Subject: [PATCH 33/53] Update go.mod --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index ef842ff..fadf31a 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module quackpipe -go 1.18 +go 1.20 require github.com/marcboeker/go-duckdb v1.5.1 From cfd4c49f145ba7b46e9c2c56f7bcb7626429d03f Mon Sep 17 00:00:00 2001 From: Theodore M Date: Wed, 18 Oct 2023 10:59:18 +0100 Subject: [PATCH 34/53] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Just fixing a typo 😊 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 04487b8..f38748f 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ Query id: dd878948-bec8-4abe-9e06-2f5813653c3a ``` 🃏 What is this? Think of it as a SELECT within a SELECT with a different syntax.
-🃏 Format confusion? Make DuckDB SQL feel like ClickHouse with the included [ClickHuose Macro Aliases](https://github.com/metrico/quackpipe/blob/main/aliases.sql) +🃏 Format confusion? Make DuckDB SQL feel like ClickHouse with the included [ClickHouse Macro Aliases](https://github.com/metrico/quackpipe/blob/main/aliases.sql)
From 3fc5b95eddbda17339924f916c14a67fd3cea5a0 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Wed, 18 Oct 2023 16:04:58 +0200 Subject: [PATCH 35/53] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f38748f..750abf7 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,8 @@ _QuackPipe is an OLAP API built on top of DuckDB with a few extra compatibility Play with DuckDB SQL and Cloud storage though a familiar API, without giving up old habits and integrations. ### Demos -:hatched_chick: try a [sample s3/parquet query](https://quackpipe.fly.dev/?user=default#U0VMRUNUCiAgICB0b3duLAogICAgZGlzdHJpY3QsCiAgICBjb3VudCgpIEFTIGMsCkZST00gcmVhZF9wYXJxdWV0KCdodHRwczovL2RhdGFzZXRzLWRvY3VtZW50YXRpb24uczMuZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20vaG91c2VfcGFycXVldC9ob3VzZV8wLnBhcnF1ZXQnKQpXSEVSRSByZWFkX3BhcnF1ZXQudG93biA9PSAnTE9ORE9OJwpHUk9VUCBCWQogICAgdG93biwKICAgIGRpc3RyaWN0Ck9SREVSIEJZIGMgREVTQwpMSU1JVCAxMA==) _(deta.space free tier, AWS Lambdas)_
-:hatched_chick: try our [miniature playground](https://quackpipe.fly.dev) _(fly.io free tier, 1x-shared-vcpu, 256Mb)_
-:hatched_chick: launch your own _free instance_ +:hatched_chick: try a [sample s3/parquet query](https://quackpipe.fly.dev/?user=default#U0VMRUNUCiAgICB0b3duLAogICAgZGlzdHJpY3QsCiAgICBjb3VudCgpIEFTIGMsCkZST00gcmVhZF9wYXJxdWV0KCdodHRwczovL2RhdGFzZXRzLWRvY3VtZW50YXRpb24uczMuZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20vaG91c2VfcGFycXVldC9ob3VzZV8wLnBhcnF1ZXQnKQpXSEVSRSByZWFkX3BhcnF1ZXQudG93biA9PSAnTE9ORE9OJwpHUk9VUCBCWQogICAgdG93biwKICAgIGRpc3RyaWN0Ck9SREVSIEJZIGMgREVTQwpMSU1JVCAxMA==) in our [miniature playground](https://quackpipe.fly.dev) _(fly.io free tier, 1x-shared-vcpu, 256Mb)_
+:hatched_chick: launch your own _free instance_ on fly.io
From 73c626bb3ede1d5eaf73cee14ebd456a31712034 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Thu, 19 Oct 2023 21:38:34 +0200 Subject: [PATCH 36/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 750abf7..885ce66 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ Run with `-h` for a full list of parameters #### :point_right: Playground Execute queries using the embedded playground - + #### :point_right: API Execute queries using the POST API From 6d5d0a2b720edb015245853b8e5325f461805ee6 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Thu, 19 Oct 2023 22:31:50 +0200 Subject: [PATCH 37/53] Preload ClickHouse Aliases --- quackpipe.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/quackpipe.go b/quackpipe.go index 913a16b..b4f6b10 100644 --- a/quackpipe.go +++ b/quackpipe.go @@ -21,6 +21,9 @@ import ( //go:embed play.html var staticPlay string +//go:embed aliases.sql +var staticAliases string + // params for Flags type CommandLineFlags struct { Host *string `json:"host"` @@ -53,7 +56,11 @@ func quack(query string, stdin bool, format string, params string) (string, erro if !stdin { check(db.Exec("LOAD httpfs; LOAD json; LOAD parquet;")) } - + + if staticAliases != "" { + check(db.Exec(staticAliases)) + } + startTime := time.Now() rows, err := db.Query(query) if err != nil { From bcc76d45adbc37b71d2a5115da761debde3f1206 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Thu, 19 Oct 2023 22:41:02 +0200 Subject: [PATCH 38/53] compact aliases.sql --- aliases.sql | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/aliases.sql b/aliases.sql index 005edf3..eb46571 100644 --- a/aliases.sql +++ b/aliases.sql @@ -1,48 +1,36 @@ -# CLICKHOUSE-DUCKDB ALIAS EXAMPLES - CREATE OR REPLACE MACRO toString(expr) AS CAST(expr AS VARCHAR); - CREATE OR REPLACE MACRO toInt8(expr) AS CAST(expr AS INT8); CREATE OR REPLACE MACRO toInt16(expr) AS CAST(expr AS INT16); CREATE OR REPLACE MACRO toInt32(expr) AS CAST(expr AS INT32); CREATE OR REPLACE MACRO toInt64(expr) AS CAST(expr AS INT64); CREATE OR REPLACE MACRO toInt128(expr) AS CAST(expr AS INT128); CREATE OR REPLACE MACRO toInt256(expr) AS CAST(expr AS HUGEINT); - CREATE OR REPLACE MACRO toInt8OrZero(expr) AS CASE WHEN TRY_CAST(expr AS INT8) THEN CAST(expr as INT8) ELSE 0 END; CREATE OR REPLACE MACRO toInt16OrZero(expr) AS CASE WHEN TRY_CAST(expr AS INT16) THEN CAST(expr as INT16) ELSE 0 END; CREATE OR REPLACE MACRO toInt32OrZero(expr) AS CASE WHEN TRY_CAST(expr AS INT32) THEN CAST(expr as INT32) ELSE 0 END; CREATE OR REPLACE MACRO toInt64OrZero(expr) AS CASE WHEN TRY_CAST(expr AS INT64) THEN CAST(expr as INT64) ELSE 0 END; CREATE OR REPLACE MACRO toInt128OrZero(expr) AS CASE WHEN TRY_CAST(expr AS INT128) THEN CAST(expr as INT128) ELSE 0 END; CREATE OR REPLACE MACRO toInt256OrZero(expr) AS CASE WHEN TRY_CAST(expr AS HUGEINT) THEN CAST(expr as HUGEINT) ELSE 0 END; - CREATE OR REPLACE MACRO toInt8OrNull(expr) AS TRY_CAST(expr AS INT8); CREATE OR REPLACE MACRO toInt16OrNull(expr) AS TRY_CAST(expr AS INT16); CREATE OR REPLACE MACRO toInt32OrNull(expr) AS TRY_CAST(expr AS INT32); CREATE OR REPLACE MACRO toInt64OrNull(expr) AS TRY_CAST(expr AS INT64); CREATE OR REPLACE MACRO toInt128OrNull(expr) AS TRY_CAST(expr AS INT128); CREATE OR REPLACE MACRO toInt256OrNull(expr) AS TRY_CAST(expr AS HUGEINT); - CREATE OR REPLACE MACRO toUInt8(expr) AS CAST(expr AS UTINYINT); CREATE OR REPLACE MACRO toUInt16(expr) AS CAST(expr AS USMALLINT); CREATE OR REPLACE MACRO toUInt32(expr) AS CAST(expr AS UINTEGER); CREATE OR REPLACE MACRO toUInt64(expr) AS CAST(expr AS UBIGINT); - CREATE OR REPLACE MACRO toUInt8rZero(expr) AS CASE WHEN TRY_CAST(expr AS UTINYINT) THEN CAST(expr as UTINYINT) ELSE 0 END; CREATE OR REPLACE MACRO toUInt16rZero(expr) AS CASE WHEN TRY_CAST(expr AS USMALLINT) THEN CAST(expr as USMALLINT) ELSE 0 END; CREATE OR REPLACE MACRO toUInt32rZero(expr) AS CASE WHEN TRY_CAST(expr AS UINTEGER) THEN CAST(expr as UINTEGER) ELSE 0 END; CREATE OR REPLACE MACRO toUInt64rZero(expr) AS CASE WHEN TRY_CAST(expr AS UBIGINT) THEN CAST(expr as UBIGINT) ELSE 0 END; - CREATE OR REPLACE MACRO toUInt8rNull(expr) AS TRY_CAST(expr AS UTINYINT); CREATE OR REPLACE MACRO toUInt16rNull(expr) AS TRY_CAST(expr AS USMALLINT); CREATE OR REPLACE MACRO toUInt32rNull(expr) AS TRY_CAST(expr AS UINTEGER); CREATE OR REPLACE MACRO toUInt64rNull(expr) AS TRY_CAST(expr AS UBIGINT); - CREATE OR REPLACE MACRO toFloat(expr) AS CAST(expr AS DOUBLE); CREATE OR REPLACE MACRO toFloatOrNull(expr) AS TRY_CAST(expr AS DOUBLE); CREATE OR REPLACE MACRO toFloatOrZero(expr) AS CASE WHEN TRY_CAST(expr AS DOUBLE) THEN CAST(expr as DOUBLE) ELSE 0 END; - CREATE OR REPLACE MACRO intDiv(a, b) AS (a / b); CREATE OR REPLACE MACRO match(string,token) AS string LIKE token; - -# TO BE CONTINUED From 93814eb01cb6edee6c31a93e5561a95c0c015b3a Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Sat, 21 Oct 2023 16:14:23 +0200 Subject: [PATCH 39/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 885ce66..423f32b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -> _quack, motherducker!_ +> _a pipe for quackheads_ # :baby_chick: quackpipe From f1ccf7a602263d2c8fe8b2cac6b8e480c9bad937 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Fri, 8 Dec 2023 13:35:42 +0100 Subject: [PATCH 40/53] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 423f32b..4d74db6 100644 --- a/README.md +++ b/README.md @@ -86,9 +86,7 @@ echo "INSTALL httpfs;" | ./quackpipe --stdin --params "?extension_directory=/tmp ``` -### ⏩ ClickHouse UDF - - +### ClickHouse UDF Quackpipe can be used as [executable UDF](https://clickhouse.com/docs/en/engines/table-functions/executable) to get DuckDB data IN/OUT of ClickHouse queries: From 84721dfc6262b54b4bbc94f5e36d5becb369d3a2 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Wed, 27 Mar 2024 10:42:34 +0100 Subject: [PATCH 41/53] Update release.yml --- .github/workflows/release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a222b02..4c81579 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: goos: [linux] - goarch: [amd64] + goarch: [amd64, arm64] steps: - uses: actions/checkout@v3 @@ -31,6 +31,7 @@ jobs: compress_assets: OFF build_flags: -buildvcs=false #ldflags: "-linkmode external -extldflags -static" + extra_files: LICENSE README.md - name: Log in to the Container registry uses: docker/login-action@v2.1.0 From 55b19e20d18bd46cf66c4015d16b3c42362c1ef9 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Wed, 27 Mar 2024 10:45:58 +0100 Subject: [PATCH 42/53] Update release.yml --- .github/workflows/release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4c81579..5cc4275 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: goarch: [amd64, arm64] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4.1.1 - uses: lmangani/go-release-action@v1.37-ubuntu with: github_token: ${{ secrets.GITHUB_TOKEN }} @@ -34,7 +34,7 @@ jobs: extra_files: LICENSE README.md - name: Log in to the Container registry - uses: docker/login-action@v2.1.0 + uses: docker/login-action@v3.1.0 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -42,12 +42,12 @@ jobs: - name: Extract metadata (tags, labels) for Docker id: meta - uses: docker/metadata-action@v4.3.0 + uses: docker/metadata-action@v5.5.1 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - name: Build and push Docker image - uses: docker/build-push-action@v4.0.0 + uses: docker/build-push-action@v5.3.0 with: context: . push: true From 9c462b34b20f175bd583e8469847b05c0f891ee8 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Wed, 27 Mar 2024 10:55:03 +0100 Subject: [PATCH 43/53] Update release.yml --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5cc4275..8c5163d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: goos: ${{ matrix.goos }} goarch: ${{ matrix.goarch }} goversion: "https://dl.google.com/go/go1.20.2.linux-amd64.tar.gz" - pre_command: export CGO_ENABLED=1 + pre_command: export CGO_ENABLED=1; make deps.linux.${{ matrix.goarch }} project_path: "." binary_name: "quackpipe" asset_name: quackpipe-${{ matrix.goarch }} From dcc5ac5914df20cdafd6ff1ddf7347721abc68c1 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Wed, 27 Mar 2024 11:00:10 +0100 Subject: [PATCH 44/53] Update release.yml --- .github/workflows/release.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8c5163d..8668fba 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,13 +17,17 @@ jobs: steps: - uses: actions/checkout@v4.1.1 + - shell: bash + run: make deps.header + - shell: bash + run: make deps.linux.${{ matrix.goarch }} - uses: lmangani/go-release-action@v1.37-ubuntu with: github_token: ${{ secrets.GITHUB_TOKEN }} goos: ${{ matrix.goos }} goarch: ${{ matrix.goarch }} goversion: "https://dl.google.com/go/go1.20.2.linux-amd64.tar.gz" - pre_command: export CGO_ENABLED=1; make deps.linux.${{ matrix.goarch }} + pre_command: export CGO_ENABLED=1 project_path: "." binary_name: "quackpipe" asset_name: quackpipe-${{ matrix.goarch }} From af27bda53ec67d0145160d22671f0d76207e48c5 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Wed, 27 Mar 2024 11:06:11 +0100 Subject: [PATCH 45/53] Update release.yml --- .github/workflows/release.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8668fba..f766796 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,14 +13,10 @@ jobs: strategy: matrix: goos: [linux] - goarch: [amd64, arm64] + goarch: [amd64] steps: - uses: actions/checkout@v4.1.1 - - shell: bash - run: make deps.header - - shell: bash - run: make deps.linux.${{ matrix.goarch }} - uses: lmangani/go-release-action@v1.37-ubuntu with: github_token: ${{ secrets.GITHUB_TOKEN }} From 66afabd7a1558cb4f025265cfe89d00db6dcd38a Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Wed, 27 Mar 2024 11:59:36 +0100 Subject: [PATCH 46/53] go-duckdb v1.6.2 --- go.mod | 17 +++++++++++++++-- go.sum | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index fadf31a..d47e0bf 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,19 @@ module quackpipe go 1.20 -require github.com/marcboeker/go-duckdb v1.5.1 +require github.com/marcboeker/go-duckdb v1.6.2 -require github.com/mitchellh/mapstructure v1.5.0 // indirect +require ( + github.com/apache/arrow/go/v14 v14.0.2 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/google/flatbuffers v23.5.26+incompatible // indirect + github.com/klauspost/compress v1.16.7 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/pierrec/lz4/v4 v4.1.18 // indirect + github.com/zeebo/xxh3 v1.0.2 // indirect + golang.org/x/mod v0.13.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/tools v0.14.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect +) diff --git a/go.sum b/go.sum index 4b91e17..3dd4c48 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,36 @@ +github.com/apache/arrow/go/v14 v14.0.2 h1:N8OkaJEOfI3mEZt07BIkvo4sC6XDbL+48MBPWO5IONw= +github.com/apache/arrow/go/v14 v14.0.2/go.mod h1:u3fgh3EdgN/YQ8cVQRguVW3R+seMybFg8QBQ5LU+eBY= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/marcboeker/go-duckdb v1.5.1 h1:Mh6h0ke9EyM2XA9dWiNOawM+oUFXYOY5o2csJ32uxBw= -github.com/marcboeker/go-duckdb v1.5.1/go.mod h1:wm91jO2GNKa6iO9NTcjXIRsW+/ykPoJbQcHSXhdAl28= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= +github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/marcboeker/go-duckdb v1.6.2 h1:BlsvrL5dFmTSOCmLG3iLTCaGgH/typTOwgfrE/IrCdI= +github.com/marcboeker/go-duckdb v1.6.2/go.mod h1:WtWeqqhZoTke/Nbd7V9lnBx7I2/A/q0SAq/urGzPCMs= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= +github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gonum.org/v1/gonum v0.12.0 h1:xKuo6hzt+gMav00meVPUlXwSdoEJP46BR+wdxQEFK2o= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= From 39c244fa0db2ad71da7d9f6e202f8ff25b94abb9 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Thu, 28 Mar 2024 01:27:31 +0100 Subject: [PATCH 47/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4d74db6..079eb3b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # :baby_chick: quackpipe -_QuackPipe is an OLAP API built on top of DuckDB with a few extra compatibility bits. If you know, you know._ +_QuackPipe is a serverless OLAP API built on top of DuckDB emulating and aliasing the ClickHouse HTTP API_ Play with DuckDB SQL and Cloud storage though a familiar API, without giving up old habits and integrations. From 7ff9f5f658d42437507d84ba01ad12ca8b0ba848 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Thu, 11 Apr 2024 17:29:09 +0200 Subject: [PATCH 48/53] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 079eb3b..960b156 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ Play with DuckDB SQL and Cloud storage though a familiar API, without giving up
+
+ ### :seedling: Get Started Download a [binary release](https://github.com/metrico/quackpipe/releases/), use [docker](https://github.com/metrico/quackpipe/pkgs/container/quackpipe) or build from source From 936b055536bd56c88fbb9396f45939b78faaf689 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Thu, 11 Apr 2024 17:29:42 +0200 Subject: [PATCH 49/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 960b156..2459ee4 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ _QuackPipe is a serverless OLAP API built on top of DuckDB emulating and aliasin Play with DuckDB SQL and Cloud storage though a familiar API, without giving up old habits and integrations. -### Demos +### :hatched_chick: Demos :hatched_chick: try a [sample s3/parquet query](https://quackpipe.fly.dev/?user=default#U0VMRUNUCiAgICB0b3duLAogICAgZGlzdHJpY3QsCiAgICBjb3VudCgpIEFTIGMsCkZST00gcmVhZF9wYXJxdWV0KCdodHRwczovL2RhdGFzZXRzLWRvY3VtZW50YXRpb24uczMuZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20vaG91c2VfcGFycXVldC9ob3VzZV8wLnBhcnF1ZXQnKQpXSEVSRSByZWFkX3BhcnF1ZXQudG93biA9PSAnTE9ORE9OJwpHUk9VUCBCWQogICAgdG93biwKICAgIGRpc3RyaWN0Ck9SREVSIEJZIGMgREVTQwpMSU1JVCAxMA==) in our [miniature playground](https://quackpipe.fly.dev) _(fly.io free tier, 1x-shared-vcpu, 256Mb)_
:hatched_chick: launch your own _free instance_ on fly.io From 7920b51a55009f87f56a1843db950efe41b9dc4d Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Tue, 23 Apr 2024 21:58:31 +0200 Subject: [PATCH 50/53] Create dependabot.yml --- .github/dependabot.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..cd88554 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "gomod" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" From 3df1ed6ad72cb62d9f9dde125038f7c5384343cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 20:00:15 +0000 Subject: [PATCH 51/53] Bump github.com/marcboeker/go-duckdb from 1.6.2 to 1.6.3 Bumps [github.com/marcboeker/go-duckdb](https://github.com/marcboeker/go-duckdb) from 1.6.2 to 1.6.3. - [Commits](https://github.com/marcboeker/go-duckdb/compare/v1.6.2...v1.6.3) --- updated-dependencies: - dependency-name: github.com/marcboeker/go-duckdb dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d47e0bf..35f873c 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module quackpipe go 1.20 -require github.com/marcboeker/go-duckdb v1.6.2 +require github.com/marcboeker/go-duckdb v1.6.3 require ( github.com/apache/arrow/go/v14 v14.0.2 // indirect diff --git a/go.sum b/go.sum index 3dd4c48..61e03c9 100644 --- a/go.sum +++ b/go.sum @@ -10,8 +10,8 @@ github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGC github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/marcboeker/go-duckdb v1.6.2 h1:BlsvrL5dFmTSOCmLG3iLTCaGgH/typTOwgfrE/IrCdI= -github.com/marcboeker/go-duckdb v1.6.2/go.mod h1:WtWeqqhZoTke/Nbd7V9lnBx7I2/A/q0SAq/urGzPCMs= +github.com/marcboeker/go-duckdb v1.6.3 h1:5qRxB3BosFXRjfQWNP0OOqEQFXllo6o7fHGrNA7NSuM= +github.com/marcboeker/go-duckdb v1.6.3/go.mod h1:WtWeqqhZoTke/Nbd7V9lnBx7I2/A/q0SAq/urGzPCMs= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= From c54525c95cb2f937c883c9275c3884e9f1804817 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Mon, 20 May 2024 15:22:20 +0200 Subject: [PATCH 52/53] Update go.mod --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 35f873c..c378e7a 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module quackpipe go 1.20 -require github.com/marcboeker/go-duckdb v1.6.3 +require github.com/marcboeker/go-duckdb v1.6.4 require ( github.com/apache/arrow/go/v14 v14.0.2 // indirect From 465da1f33eea9154550cdaa62adcc3ad3fb3125e Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Mon, 20 May 2024 15:24:58 +0200 Subject: [PATCH 53/53] resync --- go.sum | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go.sum b/go.sum index 61e03c9..41cfe77 100644 --- a/go.sum +++ b/go.sum @@ -10,8 +10,8 @@ github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGC github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/marcboeker/go-duckdb v1.6.3 h1:5qRxB3BosFXRjfQWNP0OOqEQFXllo6o7fHGrNA7NSuM= -github.com/marcboeker/go-duckdb v1.6.3/go.mod h1:WtWeqqhZoTke/Nbd7V9lnBx7I2/A/q0SAq/urGzPCMs= +github.com/marcboeker/go-duckdb v1.6.4 h1:p7iFopIcIWoHZStQhvQ+ffhKL3ExM/oXdXAUI62gBWE= +github.com/marcboeker/go-duckdb v1.6.4/go.mod h1:WtWeqqhZoTke/Nbd7V9lnBx7I2/A/q0SAq/urGzPCMs= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ=