diff --git a/backend/windmill-duckdb-ffi-internal/Cargo.lock b/backend/windmill-duckdb-ffi-internal/Cargo.lock index 92bc697c87..5877d42c81 100644 --- a/backend/windmill-duckdb-ffi-internal/Cargo.lock +++ b/backend/windmill-duckdb-ffi-internal/Cargo.lock @@ -416,8 +416,7 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "duckdb" version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e46d5568337ee1f7ea8779e1d9aa2eafcdf156458713ce65afb246c5d2cf5850" +source = "git+https://github.com/windmill-labs/duckdb-rs.git?rev=689b2755ab1d454577ee23f18f46f8b3503030c3#689b2755ab1d454577ee23f18f46f8b3503030c3" dependencies = [ "arrow", "cast", @@ -704,8 +703,7 @@ checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libduckdb-sys" version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6650a7ea86fce24fe1fbf5b037671a8b77c59d135703fc6085b8a1827e66e977" +source = "git+https://github.com/windmill-labs/duckdb-rs.git?rev=689b2755ab1d454577ee23f18f46f8b3503030c3#689b2755ab1d454577ee23f18f46f8b3503030c3" dependencies = [ "cc", "flate2", diff --git a/backend/windmill-duckdb-ffi-internal/Cargo.toml b/backend/windmill-duckdb-ffi-internal/Cargo.toml index 610dfb8fcc..19255ae7c3 100644 --- a/backend/windmill-duckdb-ffi-internal/Cargo.toml +++ b/backend/windmill-duckdb-ffi-internal/Cargo.toml @@ -5,7 +5,7 @@ edition = "2024" [dependencies] chrono = "0.4.41" -duckdb = { version = "1.4.2", features = ["bundled"] } +duckdb = { rev = "689b2755ab1d454577ee23f18f46f8b3503030c3", git = "https://github.com/windmill-labs/duckdb-rs.git", features = ["bundled"] } rust_decimal = "1.37.2" serde = { version = "1.0", features = ["derive"] } serde_json = { version = "^1", features = ["preserve_order", "raw_value"] } diff --git a/backend/windmill-duckdb-ffi-internal/build_dev.sh b/backend/windmill-duckdb-ffi-internal/build_dev.sh index 0b42352732..2530dcdceb 100755 --- a/backend/windmill-duckdb-ffi-internal/build_dev.sh +++ b/backend/windmill-duckdb-ffi-internal/build_dev.sh @@ -1,2 +1,2 @@ -cargo build --release -p windmill_duckdb_ffi_internal +CARGO_NET_GIT_FETCH_WITH_CLI=1 cargo build --release -p windmill_duckdb_ffi_internal cp target/release/libwindmill_duckdb_ffi_internal.* ../target/debug/ \ No newline at end of file diff --git a/backend/windmill-duckdb-ffi-internal/src/lib.rs b/backend/windmill-duckdb-ffi-internal/src/lib.rs index 25f8e5aba8..ee5396d45a 100644 --- a/backend/windmill-duckdb-ffi-internal/src/lib.rs +++ b/backend/windmill-duckdb-ffi-internal/src/lib.rs @@ -245,7 +245,7 @@ fn do_duckdb_inner( } // Statement needs to be stepped at least once or stmt.column_names() will panic let mut column_names = None; - // let mut type_aliases = None; + let mut type_aliases = None; loop { let row = rows.next(); match row { @@ -260,18 +260,26 @@ fn do_duckdb_inner( column_names.as_ref().unwrap() } }; - // let type_aliases = match type_aliases.as_ref() { - // Some(type_aliases) => type_aliases, - // None => { - // type_aliases = Some( - // (0..stmt.column_count()) - // .map(|i| stmt.column_logical_type(i).get_alias()) - // .collect::>(), - // ); - // type_aliases.as_ref().unwrap() - // } - // }; - let type_aliases = (0..stmt.column_count()).map(|_| None).collect::>(); + let type_aliases = match type_aliases.as_ref() { + Some(type_aliases) => type_aliases, + None => { + type_aliases = Some( + (0..stmt.column_count()) + .map(|i| { + let logical_type = stmt.column_logical_type(i); + if logical_type.is_invalid() { + None + } else { + logical_type.get_alias() + } + }) + .collect::>(), + ); + type_aliases.as_ref().unwrap() + } + }; + + // let type_aliases = (0..stmt.column_count()).map(|_| None).collect::>(); let row = row_to_value(row, &column_names.as_slice(), &type_aliases.as_slice()) .map_err(|e| e.to_string())?;