From 2b7e9dbe20dfc547847ece7d9e6181b15c53cc52 Mon Sep 17 00:00:00 2001 From: Matthew Turner Date: Sun, 13 Oct 2024 09:01:54 -0400 Subject: [PATCH 1/8] Start adding hudi --- Cargo.lock | 1278 +++++++++++++++++++++++++++++++++------- Cargo.toml | 2 + src/extensions/hudi.rs | 42 ++ src/extensions/mod.rs | 4 + 4 files changed, 1102 insertions(+), 224 deletions(-) create mode 100644 src/extensions/hudi.rs diff --git a/Cargo.lock b/Cargo.lock index 4d694d3..2a509a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -155,19 +155,41 @@ version = "52.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05048a8932648b63f21c37d88b552ccc8a65afb6dfe9fc9f30ce79174c2e7a85" dependencies = [ - "arrow-arith", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-csv", - "arrow-data", - "arrow-ipc", - "arrow-json", - "arrow-ord", - "arrow-row", - "arrow-schema", - "arrow-select", - "arrow-string", + "arrow-arith 52.2.0", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-cast 52.2.0", + "arrow-csv 52.2.0", + "arrow-data 52.2.0", + "arrow-ipc 52.2.0", + "arrow-json 52.2.0", + "arrow-ord 52.2.0", + "arrow-row 52.2.0", + "arrow-schema 52.2.0", + "arrow-select 52.2.0", + "arrow-string 52.2.0", +] + +[[package]] +name = "arrow" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45aef0d9cf9a039bf6cd1acc451b137aca819977b0928dece52bd92811b640ba" +dependencies = [ + "arrow-arith 53.0.0", + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-cast 53.0.0", + "arrow-csv 53.0.0", + "arrow-data 53.0.0", + "arrow-ipc 53.0.0", + "arrow-json 53.0.0", + "arrow-ord 53.0.0", + "arrow-row 53.0.0", + "arrow-schema 53.0.0", + "arrow-select 53.0.0", + "arrow-string 53.0.0", + "pyo3", ] [[package]] @@ -176,10 +198,25 @@ version = "52.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d8a57966e43bfe9a3277984a14c24ec617ad874e4c0e1d2a1b083a39cfbf22c" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-data 52.2.0", + "arrow-schema 52.2.0", + "chrono", + "half", + "num", +] + +[[package]] +name = "arrow-arith" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03675e42d1560790f3524800e41403b40d0da1c793fe9528929fde06d8c7649a" +dependencies = [ + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-data 53.0.0", + "arrow-schema 53.0.0", "chrono", "half", "num", @@ -192,9 +229,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16f4a9468c882dc66862cef4e1fd8423d47e67972377d85d80e022786427768c" dependencies = [ "ahash", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-buffer 52.2.0", + "arrow-data 52.2.0", + "arrow-schema 52.2.0", + "chrono", + "chrono-tz", + "half", + "hashbrown 0.14.5", + "num", +] + +[[package]] +name = "arrow-array" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd2bf348cf9f02a5975c5962c7fa6dee107a2009a7b41ac5fb1a027e12dc033f" +dependencies = [ + "ahash", + "arrow-buffer 53.0.0", + "arrow-data 53.0.0", + "arrow-schema 53.0.0", "chrono", "chrono-tz", "half", @@ -213,17 +267,49 @@ dependencies = [ "num", ] +[[package]] +name = "arrow-buffer" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3092e37715f168976012ce52273c3989b5793b0db5f06cbaa246be25e5f0924d" +dependencies = [ + "bytes", + "half", + "num", +] + [[package]] name = "arrow-cast" version = "52.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da26719e76b81d8bc3faad1d4dbdc1bcc10d14704e63dc17fc9f3e7e1e567c8e" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-data 52.2.0", + "arrow-schema 52.2.0", + "arrow-select 52.2.0", + "atoi", + "base64 0.22.1", + "chrono", + "comfy-table", + "half", + "lexical-core", + "num", + "ryu", +] + +[[package]] +name = "arrow-cast" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce1018bb710d502f9db06af026ed3561552e493e989a79d0d0f5d9cf267a785" +dependencies = [ + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-data 53.0.0", + "arrow-schema 53.0.0", + "arrow-select 53.0.0", "atoi", "base64 0.22.1", "chrono", @@ -240,11 +326,30 @@ version = "52.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c13c36dc5ddf8c128df19bab27898eea64bf9da2b555ec1cd17a8ff57fba9ec2" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-schema", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-cast 52.2.0", + "arrow-data 52.2.0", + "arrow-schema 52.2.0", + "chrono", + "csv", + "csv-core", + "lazy_static", + "lexical-core", + "regex", +] + +[[package]] +name = "arrow-csv" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd178575f45624d045e4ebee714e246a05d9652e41363ee3f57ec18cca97f740" +dependencies = [ + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-cast 53.0.0", + "arrow-data 53.0.0", + "arrow-schema 53.0.0", "chrono", "csv", "csv-core", @@ -259,8 +364,20 @@ version = "52.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd9d6f18c65ef7a2573ab498c374d8ae364b4a4edf67105357491c031f716ca5" dependencies = [ - "arrow-buffer", - "arrow-schema", + "arrow-buffer 52.2.0", + "arrow-schema 52.2.0", + "half", + "num", +] + +[[package]] +name = "arrow-data" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4ac0c4ee79150afe067dc4857154b3ee9c1cd52b5f40d59a77306d0ed18d65" +dependencies = [ + "arrow-buffer 53.0.0", + "arrow-schema 53.0.0", "half", "num", ] @@ -271,17 +388,17 @@ version = "52.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e7ffbc96072e466ae5188974725bb46757587eafe427f77a25b828c375ae882" dependencies = [ - "arrow-arith", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-ipc", - "arrow-ord", - "arrow-row", - "arrow-schema", - "arrow-select", - "arrow-string", + "arrow-arith 52.2.0", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-cast 52.2.0", + "arrow-data 52.2.0", + "arrow-ipc 52.2.0", + "arrow-ord 52.2.0", + "arrow-row 52.2.0", + "arrow-schema 52.2.0", + "arrow-select 52.2.0", + "arrow-string 52.2.0", "base64 0.22.1", "bytes", "futures", @@ -299,11 +416,26 @@ version = "52.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e786e1cdd952205d9a8afc69397b317cfbb6e0095e445c69cda7e8da5c1eeb0f" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-schema", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-cast 52.2.0", + "arrow-data 52.2.0", + "arrow-schema 52.2.0", + "flatbuffers", + "lz4_flex", +] + +[[package]] +name = "arrow-ipc" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb307482348a1267f91b0912e962cd53440e5de0f7fb24c5f7b10da70b38c94a" +dependencies = [ + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-cast 53.0.0", + "arrow-data 53.0.0", + "arrow-schema 53.0.0", "flatbuffers", "lz4_flex", ] @@ -314,11 +446,31 @@ version = "52.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb22284c5a2a01d73cebfd88a33511a3234ab45d66086b2ca2d1228c3498e445" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-schema", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-cast 52.2.0", + "arrow-data 52.2.0", + "arrow-schema 52.2.0", + "chrono", + "half", + "indexmap 2.5.0", + "lexical-core", + "num", + "serde", + "serde_json", +] + +[[package]] +name = "arrow-json" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24805ba326758effdd6f2cbdd482fcfab749544f21b134701add25b33f474e6" +dependencies = [ + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-cast 53.0.0", + "arrow-data 53.0.0", + "arrow-schema 53.0.0", "chrono", "half", "indexmap 2.5.0", @@ -334,11 +486,26 @@ version = "52.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42745f86b1ab99ef96d1c0bcf49180848a64fe2c7a7a0d945bc64fa2b21ba9bc" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-data 52.2.0", + "arrow-schema 52.2.0", + "arrow-select 52.2.0", + "half", + "num", +] + +[[package]] +name = "arrow-ord" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "644046c479d80ae8ed02a7f1e1399072ea344ca6a7b0e293ab2d5d9ed924aa3b" +dependencies = [ + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-data 53.0.0", + "arrow-schema 53.0.0", + "arrow-select 53.0.0", "half", "num", ] @@ -350,10 +517,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd09a518c602a55bd406bcc291a967b284cfa7a63edfbf8b897ea4748aad23c" dependencies = [ "ahash", - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-data 52.2.0", + "arrow-schema 52.2.0", + "half", +] + +[[package]] +name = "arrow-row" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a29791f8eb13b340ce35525b723f5f0df17ecb955599e11f65c2a94ab34e2efb" +dependencies = [ + "ahash", + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-data 53.0.0", + "arrow-schema 53.0.0", "half", ] @@ -366,6 +547,16 @@ dependencies = [ "serde", ] +[[package]] +name = "arrow-schema" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c85320a3a2facf2b2822b57aa9d6d9d55edb8aee0b6b5d3b8df158e503d10858" +dependencies = [ + "bitflags 2.6.0", + "serde", +] + [[package]] name = "arrow-select" version = "52.2.0" @@ -373,10 +564,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "600bae05d43483d216fb3494f8c32fdbefd8aa4e1de237e790dbb3d9f44690a3" dependencies = [ "ahash", - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-data 52.2.0", + "arrow-schema 52.2.0", + "num", +] + +[[package]] +name = "arrow-select" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cc7e6b582e23855fd1625ce46e51647aa440c20ea2e71b1d748e0839dd73cba" +dependencies = [ + "ahash", + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-data 53.0.0", + "arrow-schema 53.0.0", "num", ] @@ -386,11 +591,28 @@ version = "52.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0dc1985b67cb45f6606a248ac2b4a288849f196bab8c657ea5589f47cdd55e6" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-data 52.2.0", + "arrow-schema 52.2.0", + "arrow-select 52.2.0", + "memchr", + "num", + "regex", + "regex-syntax", +] + +[[package]] +name = "arrow-string" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0775b6567c66e56ded19b87a954b6b1beffbdd784ef95a3a2b03f59570c1d230" +dependencies = [ + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-data 53.0.0", + "arrow-schema 53.0.0", + "arrow-select 53.0.0", "memchr", "num", "regex", @@ -431,6 +653,17 @@ dependencies = [ "zstd-safe", ] +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "async-stream" version = "0.3.5" @@ -1018,30 +1251,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4fd4a99fc70d40ef7e52b243b4a399c3f8d353a40d5ecb200deee05e49c61bb" dependencies = [ "ahash", - "arrow", - "arrow-array", - "arrow-ipc", - "arrow-schema", + "arrow 52.2.0", + "arrow-array 52.2.0", + "arrow-ipc 52.2.0", + "arrow-schema 52.2.0", "async-compression", "async-trait", "bytes", "bzip2", "chrono", "dashmap", - "datafusion-catalog", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-execution", - "datafusion-expr", - "datafusion-functions", - "datafusion-functions-aggregate", - "datafusion-functions-nested", - "datafusion-optimizer", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-optimizer", - "datafusion-physical-plan", - "datafusion-sql", + "datafusion-catalog 41.0.0", + "datafusion-common 41.0.0", + "datafusion-common-runtime 41.0.0", + "datafusion-execution 41.0.0", + "datafusion-expr 41.0.0", + "datafusion-functions 41.0.0", + "datafusion-functions-aggregate 41.0.0", + "datafusion-functions-nested 41.0.0", + "datafusion-optimizer 41.0.0", + "datafusion-physical-expr 41.0.0", + "datafusion-physical-expr-common 41.0.0", + "datafusion-physical-optimizer 41.0.0", + "datafusion-physical-plan 41.0.0", + "datafusion-sql 41.0.0", "flate2", "futures", "glob", @@ -1051,9 +1284,9 @@ dependencies = [ "itertools 0.12.1", "log", "num_cpus", - "object_store", + "object_store 0.10.2", "parking_lot", - "parquet", + "parquet 52.2.0", "paste", "pin-project-lite", "rand", @@ -1067,18 +1300,90 @@ dependencies = [ "zstd", ] +[[package]] +name = "datafusion" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee907b081e45e1d14e1f327e89ef134f91fcebad0bfc2dc229fa9f6044379682" +dependencies = [ + "ahash", + "arrow 53.0.0", + "arrow-array 53.0.0", + "arrow-ipc 53.0.0", + "arrow-schema 53.0.0", + "async-compression", + "async-trait", + "bytes", + "bzip2", + "chrono", + "dashmap", + "datafusion-catalog 42.0.0", + "datafusion-common 42.0.0", + "datafusion-common-runtime 42.0.0", + "datafusion-execution 42.0.0", + "datafusion-expr 42.0.0", + "datafusion-functions 42.0.0", + "datafusion-functions-aggregate 42.0.0", + "datafusion-functions-nested 42.0.0", + "datafusion-functions-window", + "datafusion-optimizer 42.0.0", + "datafusion-physical-expr 42.0.0", + "datafusion-physical-expr-common 42.0.0", + "datafusion-physical-optimizer 42.0.0", + "datafusion-physical-plan 42.0.0", + "datafusion-sql 42.0.0", + "flate2", + "futures", + "glob", + "half", + "hashbrown 0.14.5", + "indexmap 2.5.0", + "itertools 0.13.0", + "log", + "num_cpus", + "object_store 0.11.0", + "parking_lot", + "parquet 53.0.0", + "paste", + "pin-project-lite", + "rand", + "sqlparser 0.50.0", + "tempfile", + "tokio", + "tokio-util", + "url", + "uuid", + "xz2", + "zstd", +] + [[package]] name = "datafusion-catalog" version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e13b3cfbd84c6003594ae1972314e3df303a27ce8ce755fcea3240c90f4c0529" dependencies = [ - "arrow-schema", + "arrow-schema 52.2.0", "async-trait", - "datafusion-common", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-plan", + "datafusion-common 41.0.0", + "datafusion-execution 41.0.0", + "datafusion-expr 41.0.0", + "datafusion-physical-plan 41.0.0", +] + +[[package]] +name = "datafusion-catalog" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c2b914f6e33c429af7d8696c72a47ed9225d7e2b82c747ebdfa2408ed53579f" +dependencies = [ + "arrow-schema 53.0.0", + "async-trait", + "datafusion-common 42.0.0", + "datafusion-execution 42.0.0", + "datafusion-expr 42.0.0", + "datafusion-physical-plan 42.0.0", + "parking_lot", ] [[package]] @@ -1088,21 +1393,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44fdbc877e3e40dcf88cc8f283d9f5c8851f0a3aa07fee657b1b75ac1ad49b9c" dependencies = [ "ahash", - "arrow", - "arrow-array", - "arrow-buffer", - "arrow-schema", + "arrow 52.2.0", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-schema 52.2.0", "chrono", "half", "hashbrown 0.14.5", "instant", "libc", "num_cpus", - "object_store", - "parquet", + "object_store 0.10.2", + "parquet 52.2.0", "sqlparser 0.49.0", ] +[[package]] +name = "datafusion-common" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a84f8e76330c582a6b8ada0b2c599ca46cfe46b7585e458fc3f4092bc722a18" +dependencies = [ + "ahash", + "arrow 53.0.0", + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-schema 53.0.0", + "chrono", + "half", + "hashbrown 0.14.5", + "instant", + "libc", + "num_cpus", + "object_store 0.11.0", + "parquet 53.0.0", + "paste", + "sqlparser 0.50.0", + "tokio", +] + [[package]] name = "datafusion-common-runtime" version = "41.0.0" @@ -1112,21 +1441,52 @@ dependencies = [ "tokio", ] +[[package]] +name = "datafusion-common-runtime" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf08cc30d92720d557df13bd5a5696213bd5ea0f38a866d8d85055d866fba774" +dependencies = [ + "log", + "tokio", +] + [[package]] name = "datafusion-execution" version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "799e70968c815b611116951e3dd876aef04bf217da31b72eec01ee6a959336a1" dependencies = [ - "arrow", + "arrow 52.2.0", "chrono", "dashmap", - "datafusion-common", - "datafusion-expr", + "datafusion-common 41.0.0", + "datafusion-expr 41.0.0", "futures", "hashbrown 0.14.5", "log", - "object_store", + "object_store 0.10.2", + "parking_lot", + "rand", + "tempfile", + "url", +] + +[[package]] +name = "datafusion-execution" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86bc4183d5c45b9f068a6f351678a0d1eb1225181424542bb75db18ec280b822" +dependencies = [ + "arrow 53.0.0", + "chrono", + "dashmap", + "datafusion-common 42.0.0", + "datafusion-expr 42.0.0", + "futures", + "hashbrown 0.14.5", + "log", + "object_store 0.11.0", "parking_lot", "rand", "tempfile", @@ -1140,11 +1500,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c1841c409d9518c17971d15c9bae62e629eb937e6fb6c68cd32e9186f8b30d2" dependencies = [ "ahash", - "arrow", - "arrow-array", - "arrow-buffer", + "arrow 52.2.0", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", "chrono", - "datafusion-common", + "datafusion-common 41.0.0", "paste", "serde_json", "sqlparser 0.49.0", @@ -1152,21 +1512,54 @@ dependencies = [ "strum_macros", ] +[[package]] +name = "datafusion-expr" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202119ce58e4d103e37ae64aab40d4e574c97bdd2bea994bf307b175fcbfa74d" +dependencies = [ + "ahash", + "arrow 53.0.0", + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "chrono", + "datafusion-common 42.0.0", + "datafusion-expr-common", + "datafusion-functions-aggregate-common", + "datafusion-physical-expr-common 42.0.0", + "paste", + "serde_json", + "sqlparser 0.50.0", + "strum", + "strum_macros", +] + +[[package]] +name = "datafusion-expr-common" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8b181ce8569216abb01ef3294aa16c0a40d7d39350c2ff01ede00f167a535f2" +dependencies = [ + "arrow 53.0.0", + "datafusion-common 42.0.0", + "paste", +] + [[package]] name = "datafusion-functions" version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8e481cf34d2a444bd8fa09b65945f0ce83dc92df8665b761505b3d9f351bebb" dependencies = [ - "arrow", - "arrow-buffer", + "arrow 52.2.0", + "arrow-buffer 52.2.0", "base64 0.22.1", "blake2", "blake3", "chrono", - "datafusion-common", - "datafusion-execution", - "datafusion-expr", + "datafusion-common 41.0.0", + "datafusion-execution 41.0.0", + "datafusion-expr 41.0.0", "hashbrown 0.14.5", "hex", "itertools 0.12.1", @@ -1179,6 +1572,33 @@ dependencies = [ "uuid", ] +[[package]] +name = "datafusion-functions" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4124b8066444e05a24472f852e94cf56546c0f4d92d00f018f207216902712" +dependencies = [ + "arrow 53.0.0", + "arrow-buffer 53.0.0", + "base64 0.22.1", + "blake2", + "blake3", + "chrono", + "datafusion-common 42.0.0", + "datafusion-execution 42.0.0", + "datafusion-expr 42.0.0", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "log", + "md-5", + "rand", + "regex", + "sha2", + "unicode-segmentation", + "uuid", +] + [[package]] name = "datafusion-functions-aggregate" version = "41.0.0" @@ -1186,28 +1606,63 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b4ece19f73c02727e5e8654d79cd5652de371352c1df3c4ac3e419ecd6943fb" dependencies = [ "ahash", - "arrow", - "arrow-schema", - "datafusion-common", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr-common", + "arrow 52.2.0", + "arrow-schema 52.2.0", + "datafusion-common 41.0.0", + "datafusion-execution 41.0.0", + "datafusion-expr 41.0.0", + "datafusion-physical-expr-common 41.0.0", "log", "paste", "sqlparser 0.49.0", ] +[[package]] +name = "datafusion-functions-aggregate" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94acdac235ea21810150a89751617ef2db7e32eba27f54be48a81bde2bfe119" +dependencies = [ + "ahash", + "arrow 53.0.0", + "arrow-schema 53.0.0", + "datafusion-common 42.0.0", + "datafusion-execution 42.0.0", + "datafusion-expr 42.0.0", + "datafusion-functions-aggregate-common", + "datafusion-physical-expr 42.0.0", + "datafusion-physical-expr-common 42.0.0", + "half", + "log", + "paste", + "sqlparser 0.50.0", +] + +[[package]] +name = "datafusion-functions-aggregate-common" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9ea085bbf900bf16e2ca0f56fc56236b2e4f2e1a2cccb67bcd83c5ab4ad0ef" +dependencies = [ + "ahash", + "arrow 53.0.0", + "datafusion-common 42.0.0", + "datafusion-expr-common", + "datafusion-physical-expr-common 42.0.0", + "rand", +] + [[package]] name = "datafusion-functions-json" version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00900606bdd73248f0a0bea254379ef06832f4958510581e752fedd17b33b8b4" dependencies = [ - "arrow", - "arrow-schema", - "datafusion-common", - "datafusion-execution", - "datafusion-expr", + "arrow 52.2.0", + "arrow-schema 52.2.0", + "datafusion-common 41.0.0", + "datafusion-execution 41.0.0", + "datafusion-expr 41.0.0", "jiter", "log", "paste", @@ -1219,34 +1674,69 @@ version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1474552cc824e8c9c88177d454db5781d4b66757d4aca75719306b8343a5e8d" dependencies = [ - "arrow", - "arrow-array", - "arrow-buffer", - "arrow-ord", - "arrow-schema", - "datafusion-common", - "datafusion-execution", - "datafusion-expr", - "datafusion-functions", - "datafusion-functions-aggregate", + "arrow 52.2.0", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-ord 52.2.0", + "arrow-schema 52.2.0", + "datafusion-common 41.0.0", + "datafusion-execution 41.0.0", + "datafusion-expr 41.0.0", + "datafusion-functions 41.0.0", + "datafusion-functions-aggregate 41.0.0", "itertools 0.12.1", "log", "paste", "rand", ] +[[package]] +name = "datafusion-functions-nested" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c882e61665ed60c5ce9b061c1e587aeb8ae5ae4bcb5e5f2465139ab25328e0f" +dependencies = [ + "arrow 53.0.0", + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-ord 53.0.0", + "arrow-schema 53.0.0", + "datafusion-common 42.0.0", + "datafusion-execution 42.0.0", + "datafusion-expr 42.0.0", + "datafusion-functions 42.0.0", + "datafusion-functions-aggregate 42.0.0", + "datafusion-physical-expr-common 42.0.0", + "itertools 0.13.0", + "log", + "paste", + "rand", +] + +[[package]] +name = "datafusion-functions-window" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98a354ce96df3ca6d025093adac9fd55ca09931c9b6f2630140721a95873fde4" +dependencies = [ + "datafusion-common 42.0.0", + "datafusion-expr 42.0.0", + "datafusion-physical-expr-common 42.0.0", + "log", +] + [[package]] name = "datafusion-optimizer" version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "791ff56f55608bc542d1ea7a68a64bdc86a9413f5a381d06a39fd49c2a3ab906" dependencies = [ - "arrow", + "arrow 52.2.0", "async-trait", "chrono", - "datafusion-common", - "datafusion-expr", - "datafusion-physical-expr", + "datafusion-common 41.0.0", + "datafusion-expr 41.0.0", + "datafusion-physical-expr 41.0.0", "hashbrown 0.14.5", "indexmap 2.5.0", "itertools 0.12.1", @@ -1255,6 +1745,26 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "datafusion-optimizer" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf677c74fb7b5a1899ef52709e4a70fff3ed80bdfb4bbe495909810e83d5f39" +dependencies = [ + "arrow 53.0.0", + "async-trait", + "chrono", + "datafusion-common 42.0.0", + "datafusion-expr 42.0.0", + "datafusion-physical-expr 42.0.0", + "hashbrown 0.14.5", + "indexmap 2.5.0", + "itertools 0.13.0", + "log", + "paste", + "regex-syntax", +] + [[package]] name = "datafusion-physical-expr" version = "41.0.0" @@ -1262,18 +1772,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a223962b3041304a3e20ed07a21d5de3d88d7e4e71ca192135db6d24e3365a4" dependencies = [ "ahash", - "arrow", - "arrow-array", - "arrow-buffer", - "arrow-ord", - "arrow-schema", - "arrow-string", + "arrow 52.2.0", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-ord 52.2.0", + "arrow-schema 52.2.0", + "arrow-string 52.2.0", "base64 0.22.1", "chrono", - "datafusion-common", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr-common", + "datafusion-common 41.0.0", + "datafusion-execution 41.0.0", + "datafusion-expr 41.0.0", + "datafusion-physical-expr-common 41.0.0", "half", "hashbrown 0.14.5", "hex", @@ -1285,6 +1795,38 @@ dependencies = [ "regex", ] +[[package]] +name = "datafusion-physical-expr" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b077999f6eb6c43d6b25bc66332a3be2f693c382840f008dd763b8540f9530" +dependencies = [ + "ahash", + "arrow 53.0.0", + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-ord 53.0.0", + "arrow-schema 53.0.0", + "arrow-string 53.0.0", + "base64 0.22.1", + "chrono", + "datafusion-common 42.0.0", + "datafusion-execution 42.0.0", + "datafusion-expr 42.0.0", + "datafusion-expr-common", + "datafusion-functions-aggregate-common", + "datafusion-physical-expr-common 42.0.0", + "half", + "hashbrown 0.14.5", + "hex", + "indexmap 2.5.0", + "itertools 0.13.0", + "log", + "paste", + "petgraph", + "regex", +] + [[package]] name = "datafusion-physical-expr-common" version = "41.0.0" @@ -1292,9 +1834,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db5e7d8532a1601cd916881db87a70b0a599900d23f3db2897d389032da53bc6" dependencies = [ "ahash", - "arrow", - "datafusion-common", - "datafusion-expr", + "arrow 52.2.0", + "datafusion-common 41.0.0", + "datafusion-expr 41.0.0", + "hashbrown 0.14.5", + "rand", +] + +[[package]] +name = "datafusion-physical-expr-common" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce847f885c2b13bbe29f5c8b7948797131aa470af6e16d2a94f4428b4f4f1bd" +dependencies = [ + "ahash", + "arrow 53.0.0", + "datafusion-common 42.0.0", + "datafusion-expr-common", "hashbrown 0.14.5", "rand", ] @@ -1305,10 +1861,24 @@ version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb9c78f308e050f5004671039786a925c3fee83b90004e9fcfd328d7febdcc0" dependencies = [ - "datafusion-common", - "datafusion-execution", - "datafusion-physical-expr", - "datafusion-physical-plan", + "datafusion-common 41.0.0", + "datafusion-execution 41.0.0", + "datafusion-physical-expr 41.0.0", + "datafusion-physical-plan 41.0.0", +] + +[[package]] +name = "datafusion-physical-optimizer" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d13238e3b9fdd62a4c18760bfef714bb990d1e1d3430e9f416aae4b3cfaa71af" +dependencies = [ + "arrow-schema 53.0.0", + "datafusion-common 42.0.0", + "datafusion-execution 42.0.0", + "datafusion-physical-expr 42.0.0", + "datafusion-physical-plan 42.0.0", + "itertools 0.13.0", ] [[package]] @@ -1318,20 +1888,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d1116949432eb2d30f6362707e2846d942e491052a206f2ddcb42d08aea1ffe" dependencies = [ "ahash", - "arrow", - "arrow-array", - "arrow-buffer", - "arrow-ord", - "arrow-schema", + "arrow 52.2.0", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-ord 52.2.0", + "arrow-schema 52.2.0", "async-trait", "chrono", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-execution", - "datafusion-expr", - "datafusion-functions-aggregate", - "datafusion-physical-expr", - "datafusion-physical-expr-common", + "datafusion-common 41.0.0", + "datafusion-common-runtime 41.0.0", + "datafusion-execution 41.0.0", + "datafusion-expr 41.0.0", + "datafusion-functions-aggregate 41.0.0", + "datafusion-physical-expr 41.0.0", + "datafusion-physical-expr-common 41.0.0", "futures", "half", "hashbrown 0.14.5", @@ -1345,19 +1915,54 @@ dependencies = [ "tokio", ] +[[package]] +name = "datafusion-physical-plan" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faba6f55a7eaf0241d07d12c2640de52742646b10f754485d5192bdfe2c9ceae" +dependencies = [ + "ahash", + "arrow 53.0.0", + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-ord 53.0.0", + "arrow-schema 53.0.0", + "async-trait", + "chrono", + "datafusion-common 42.0.0", + "datafusion-common-runtime 42.0.0", + "datafusion-execution 42.0.0", + "datafusion-expr 42.0.0", + "datafusion-functions-aggregate 42.0.0", + "datafusion-functions-aggregate-common", + "datafusion-physical-expr 42.0.0", + "datafusion-physical-expr-common 42.0.0", + "futures", + "half", + "hashbrown 0.14.5", + "indexmap 2.5.0", + "itertools 0.13.0", + "log", + "once_cell", + "parking_lot", + "pin-project-lite", + "rand", + "tokio", +] + [[package]] name = "datafusion-proto" version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf1d25864c18178d0e51438648f5e0fa08417dbbc39b642c1752cbbb1013abf0" dependencies = [ - "arrow", + "arrow 52.2.0", "chrono", - "datafusion", - "datafusion-common", - "datafusion-expr", + "datafusion 41.0.0", + "datafusion-common 41.0.0", + "datafusion-expr 41.0.0", "datafusion-proto-common", - "object_store", + "object_store 0.10.2", "prost", ] @@ -1367,10 +1972,10 @@ version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96a683253732334526b1cc5314a73a0f786803831f7e189ed3fe387ac50d7222" dependencies = [ - "arrow", + "arrow 52.2.0", "chrono", - "datafusion-common", - "object_store", + "datafusion-common 41.0.0", + "object_store 0.10.2", "prost", ] @@ -1380,30 +1985,47 @@ version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b45d0180711165fe94015d7c4123eb3e1cf5fb60b1506453200b8d1ce666bef0" dependencies = [ - "arrow", - "arrow-array", - "arrow-schema", - "datafusion-common", - "datafusion-expr", + "arrow 52.2.0", + "arrow-array 52.2.0", + "arrow-schema 52.2.0", + "datafusion-common 41.0.0", + "datafusion-expr 41.0.0", "log", "regex", "sqlparser 0.49.0", "strum", ] +[[package]] +name = "datafusion-sql" +version = "42.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dad8d96a9b52e1aa24f9373696a815be828193efce7cb0bbd2140b6bb67d1819" +dependencies = [ + "arrow 53.0.0", + "arrow-array 53.0.0", + "arrow-schema 53.0.0", + "datafusion-common 42.0.0", + "datafusion-expr 42.0.0", + "log", + "regex", + "sqlparser 0.50.0", + "strum", +] + [[package]] name = "delta_kernel" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa08a82239f51e6d3d249c38f0f5bf7c8a78b28587e1b466893c9eac84d252d8" dependencies = [ - "arrow-arith", - "arrow-array", - "arrow-cast", - "arrow-json", - "arrow-ord", - "arrow-schema", - "arrow-select", + "arrow-arith 52.2.0", + "arrow-array 52.2.0", + "arrow-cast 52.2.0", + "arrow-json 52.2.0", + "arrow-ord 52.2.0", + "arrow-schema 52.2.0", + "arrow-select 52.2.0", "bytes", "chrono", "delta_kernel_derive", @@ -1412,7 +2034,7 @@ dependencies = [ "indexmap 2.5.0", "itertools 0.13.0", "lazy_static", - "parquet", + "parquet 52.2.0", "roaring", "rustc_version", "serde", @@ -1452,31 +2074,31 @@ version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "120658be361276db2135b8838b1968c9196a1d88c93584c6a294e13c1a234f89" dependencies = [ - "arrow", - "arrow-arith", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-ipc", - "arrow-json", - "arrow-ord", - "arrow-row", - "arrow-schema", - "arrow-select", + "arrow 52.2.0", + "arrow-arith 52.2.0", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-cast 52.2.0", + "arrow-ipc 52.2.0", + "arrow-json 52.2.0", + "arrow-ord 52.2.0", + "arrow-row 52.2.0", + "arrow-schema 52.2.0", + "arrow-select 52.2.0", "async-trait", "bytes", "cfg-if", "chrono", "dashmap", - "datafusion", - "datafusion-common", - "datafusion-expr", - "datafusion-functions", - "datafusion-functions-aggregate", - "datafusion-physical-expr", - "datafusion-physical-plan", + "datafusion 41.0.0", + "datafusion-common 41.0.0", + "datafusion-expr 41.0.0", + "datafusion-functions 41.0.0", + "datafusion-functions-aggregate 41.0.0", + "datafusion-physical-expr 41.0.0", + "datafusion-physical-plan 41.0.0", "datafusion-proto", - "datafusion-sql", + "datafusion-sql 41.0.0", "delta_kernel", "either", "errno", @@ -1491,10 +2113,10 @@ dependencies = [ "num-bigint", "num-traits", "num_cpus", - "object_store", + "object_store 0.10.2", "once_cell", "parking_lot", - "parquet", + "parquet 52.2.0", "percent-encoding", "pin-project-lite", "rand", @@ -1522,8 +2144,8 @@ dependencies = [ "clap", "color-eyre", "crossterm", - "datafusion", - "datafusion-common", + "datafusion 41.0.0", + "datafusion-common 41.0.0", "datafusion-functions-json", "deltalake", "directories", @@ -1531,11 +2153,12 @@ dependencies = [ "futures", "http 0.2.12", "http-body 0.4.6", + "hudi", "insta", "itertools 0.13.0", "lazy_static", "log", - "object_store", + "object_store 0.10.2", "pin-project-lite", "predicates", "prost", @@ -2030,6 +2653,68 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "hudi" +version = "0.2.0" +source = "git+https://github.com/apache/hudi-rs?rev=2e1913234edbea4af2eeb47a0d2d94b3193bfc34#2e1913234edbea4af2eeb47a0d2d94b3193bfc34" +dependencies = [ + "hudi-core", + "hudi-datafusion", +] + +[[package]] +name = "hudi-core" +version = "0.2.0" +source = "git+https://github.com/apache/hudi-rs?rev=2e1913234edbea4af2eeb47a0d2d94b3193bfc34#2e1913234edbea4af2eeb47a0d2d94b3193bfc34" +dependencies = [ + "anyhow", + "arrow 53.0.0", + "arrow-arith 53.0.0", + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-cast 53.0.0", + "arrow-ipc 53.0.0", + "arrow-json 53.0.0", + "arrow-ord 53.0.0", + "arrow-row 53.0.0", + "arrow-schema 53.0.0", + "arrow-select 53.0.0", + "async-recursion", + "bytes", + "dashmap", + "datafusion 42.0.0", + "datafusion-common 42.0.0", + "datafusion-expr 42.0.0", + "datafusion-physical-expr 42.0.0", + "futures", + "object_store 0.11.0", + "once_cell", + "parquet 53.0.0", + "percent-encoding", + "serde", + "serde_json", + "strum", + "strum_macros", + "tokio", + "url", +] + +[[package]] +name = "hudi-datafusion" +version = "0.2.0" +source = "git+https://github.com/apache/hudi-rs?rev=2e1913234edbea4af2eeb47a0d2d94b3193bfc34#2e1913234edbea4af2eeb47a0d2d94b3193bfc34" +dependencies = [ + "arrow-schema 53.0.0", + "async-trait", + "datafusion 42.0.0", + "datafusion-common 42.0.0", + "datafusion-expr 42.0.0", + "datafusion-physical-expr 42.0.0", + "hudi-core", + "tokio", + "url", +] + [[package]] name = "humantime" version = "2.1.0" @@ -2475,6 +3160,15 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + [[package]] name = "mime" version = "0.3.17" @@ -2644,7 +3338,38 @@ dependencies = [ "ring", "serde", "serde_json", - "snafu", + "snafu 0.7.5", + "tokio", + "tracing", + "url", + "walkdir", +] + +[[package]] +name = "object_store" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a0c4b3a0e31f8b66f71ad8064521efa773910196e2cde791436f13409f3b45" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bytes", + "chrono", + "futures", + "humantime", + "hyper 1.4.1", + "itertools 0.13.0", + "md-5", + "parking_lot", + "percent-encoding", + "quick-xml", + "rand", + "reqwest", + "ring", + "rustls-pemfile", + "serde", + "serde_json", + "snafu 0.8.5", "tokio", "tracing", "url", @@ -2720,13 +3445,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e977b9066b4d3b03555c22bdc442f3fadebd96a39111249113087d0edb2691cd" dependencies = [ "ahash", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-data", - "arrow-ipc", - "arrow-schema", - "arrow-select", + "arrow-array 52.2.0", + "arrow-buffer 52.2.0", + "arrow-cast 52.2.0", + "arrow-data 52.2.0", + "arrow-ipc 52.2.0", + "arrow-schema 52.2.0", + "arrow-select 52.2.0", "base64 0.22.1", "brotli", "bytes", @@ -2738,7 +3463,43 @@ dependencies = [ "lz4_flex", "num", "num-bigint", - "object_store", + "object_store 0.10.2", + "paste", + "seq-macro", + "snap", + "thrift", + "tokio", + "twox-hash", + "zstd", + "zstd-sys", +] + +[[package]] +name = "parquet" +version = "53.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0fbf928021131daaa57d334ca8e3904fe9ae22f73c56244fc7db9b04eedc3d8" +dependencies = [ + "ahash", + "arrow-array 53.0.0", + "arrow-buffer 53.0.0", + "arrow-cast 53.0.0", + "arrow-data 53.0.0", + "arrow-ipc 53.0.0", + "arrow-schema 53.0.0", + "arrow-select 53.0.0", + "base64 0.22.1", + "brotli", + "bytes", + "chrono", + "flate2", + "futures", + "half", + "hashbrown 0.14.5", + "lz4_flex", + "num", + "num-bigint", + "object_store 0.11.0", "paste", "seq-macro", "snap", @@ -2856,6 +3617,12 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -2936,6 +3703,41 @@ dependencies = [ "prost", ] +[[package]] +name = "pyo3" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00e89ce2565d6044ca31a3eb79a334c3a79a841120a98f64eea9f579564cb691" +dependencies = [ + "cfg-if", + "libc", + "memoffset", + "once_cell", + "portable-atomic", + "pyo3-build-config", + "pyo3-ffi", +] + +[[package]] +name = "pyo3-build-config" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8afbaf3abd7325e08f35ffb8deb5892046fcb2608b703db6a583a5ba4cea01e" +dependencies = [ + "once_cell", + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec15a5ba277339d04763f4c23d85987a5b08cbb494860be141e6a10a8eb88022" +dependencies = [ + "libc", + "pyo3-build-config", +] + [[package]] name = "quick-xml" version = "0.36.1" @@ -3494,7 +4296,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6" dependencies = [ "doc-comment", - "snafu-derive", + "snafu-derive 0.7.5", +] + +[[package]] +name = "snafu" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019" +dependencies = [ + "snafu-derive 0.8.5", ] [[package]] @@ -3509,6 +4320,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "snafu-derive" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "snap" version = "1.1.1" @@ -3548,6 +4371,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2e5b515a2bd5168426033e9efbfd05500114833916f1d5c268f938b4ee130ac" dependencies = [ "log", + "sqlparser_derive", ] [[package]] @@ -3644,6 +4468,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + [[package]] name = "tempfile" version = "3.12.0" diff --git a/Cargo.toml b/Cargo.toml index 25ebeb5..d0c9604 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,7 @@ env_logger = "0.11.5" futures = "0.3.30" http = "0.2.9" http-body = {version = "0.4.5" } +hudi = { features = ["datafusion"], optional = true, git = "https://github.com/apache/hudi-rs", rev = "2e1913234edbea4af2eeb47a0d2d94b3193bfc34" } itertools = "0.13.0" lazy_static = "1.4.0" log = "0.4.22" @@ -57,6 +58,7 @@ tempfile = "3.2.0" # When addding a new feature, also add it to the features tested list in CI (`.github/workflows/rust.yml`) [features] deltalake = ["dep:deltalake"] +hudi = ["dep:hudi"] flightsql = ["dep:arrow-flight", "dep:tonic"] experimental-flightsql-server = ["dep:arrow-flight", "dep:tonic"] s3 = ["object_store/aws", "url"] diff --git a/src/extensions/hudi.rs b/src/extensions/hudi.rs new file mode 100644 index 0000000..2009ecc --- /dev/null +++ b/src/extensions/hudi.rs @@ -0,0 +1,42 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +//! DeltaLake integration: [DeltaLakeExtension] + +use crate::config::ExecutionConfig; +use crate::extensions::{DftSessionStateBuilder, Extension}; +use hudi::HudiTableFactory; +use std::sync::Arc; + +#[derive(Debug, Default)] +pub struct HudiExtension {} + +impl HudiExtension { + pub fn new() -> Self { + Self {} + } +} + +impl Extension for HudiExtension { + fn register( + &self, + _config: &ExecutionConfig, + builder: DftSessionStateBuilder, + ) -> datafusion_common::Result { + Ok(builder.with_table_factory("HUDITABLE", Arc::new(HudiTableFactory {}))) + } +} diff --git a/src/extensions/mod.rs b/src/extensions/mod.rs index 9e36b8d..ad8c712 100644 --- a/src/extensions/mod.rs +++ b/src/extensions/mod.rs @@ -27,6 +27,8 @@ mod builder; mod deltalake; #[cfg(feature = "functions-json")] mod functions_json; +#[cfg(feature = "hudi")] +mod hudi; #[cfg(feature = "s3")] mod s3; @@ -55,6 +57,8 @@ pub fn enabled_extensions() -> Vec> { Box::new(s3::AwsS3Extension::new()), #[cfg(feature = "deltalake")] Box::new(deltalake::DeltaLakeExtension::new()), + #[cfg(feature = "hudi")] + Box::new(hudi::HudiExtension::new()), #[cfg(feature = "functions-json")] Box::new(functions_json::JsonFunctionsExtension::new()), ] From d9568948300140df3d2e1f1fde5deb0cfe8b65db Mon Sep 17 00:00:00 2001 From: Matthew Turner Date: Mon, 14 Oct 2024 18:08:13 -0400 Subject: [PATCH 2/8] Update df version --- Cargo.lock | 644 +++++++++++++++++++++++++++-------------- Cargo.toml | 8 +- src/extensions/hudi.rs | 2 +- 3 files changed, 434 insertions(+), 220 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2a509a4..2bd8aaf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -172,23 +172,23 @@ dependencies = [ [[package]] name = "arrow" -version = "53.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45aef0d9cf9a039bf6cd1acc451b137aca819977b0928dece52bd92811b640ba" -dependencies = [ - "arrow-arith 53.0.0", - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-cast 53.0.0", - "arrow-csv 53.0.0", - "arrow-data 53.0.0", - "arrow-ipc 53.0.0", - "arrow-json 53.0.0", - "arrow-ord 53.0.0", - "arrow-row 53.0.0", - "arrow-schema 53.0.0", - "arrow-select 53.0.0", - "arrow-string 53.0.0", +version = "53.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9ba0d7248932f4e2a12fb37f0a2e3ec82b3bdedbac2a1dce186e036843b8f8c" +dependencies = [ + "arrow-arith 53.1.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-cast 53.1.0", + "arrow-csv 53.1.0", + "arrow-data 53.1.0", + "arrow-ipc 53.1.0", + "arrow-json 53.1.0", + "arrow-ord 53.1.0", + "arrow-row 53.1.0", + "arrow-schema 53.1.0", + "arrow-select 53.1.0", + "arrow-string 53.1.0", "pyo3", ] @@ -209,14 +209,14 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03675e42d1560790f3524800e41403b40d0da1c793fe9528929fde06d8c7649a" +checksum = "d60afcdc004841a5c8d8da4f4fa22d64eb19c0c01ef4bcedd77f175a7cf6e38f" dependencies = [ - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-data 53.0.0", - "arrow-schema 53.0.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-data 53.1.0", + "arrow-schema 53.1.0", "chrono", "half", "num", @@ -233,7 +233,7 @@ dependencies = [ "arrow-data 52.2.0", "arrow-schema 52.2.0", "chrono", - "chrono-tz", + "chrono-tz 0.9.0", "half", "hashbrown 0.14.5", "num", @@ -241,16 +241,16 @@ dependencies = [ [[package]] name = "arrow-array" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd2bf348cf9f02a5975c5962c7fa6dee107a2009a7b41ac5fb1a027e12dc033f" +checksum = "7f16835e8599dbbb1659fd869d865254c4cf32c6c2bb60b6942ac9fc36bfa5da" dependencies = [ "ahash", - "arrow-buffer 53.0.0", - "arrow-data 53.0.0", - "arrow-schema 53.0.0", + "arrow-buffer 53.1.0", + "arrow-data 53.1.0", + "arrow-schema 53.1.0", "chrono", - "chrono-tz", + "chrono-tz 0.10.0", "half", "hashbrown 0.14.5", "num", @@ -269,9 +269,9 @@ dependencies = [ [[package]] name = "arrow-buffer" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3092e37715f168976012ce52273c3989b5793b0db5f06cbaa246be25e5f0924d" +checksum = "1a1f34f0faae77da6b142db61deba2cb6d60167592b178be317b341440acba80" dependencies = [ "bytes", "half", @@ -294,28 +294,28 @@ dependencies = [ "chrono", "comfy-table", "half", - "lexical-core", + "lexical-core 0.8.5", "num", "ryu", ] [[package]] name = "arrow-cast" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ce1018bb710d502f9db06af026ed3561552e493e989a79d0d0f5d9cf267a785" +checksum = "450e4abb5775bca0740bec0bcf1b1a5ae07eff43bd625661c4436d8e8e4540c4" dependencies = [ - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-data 53.0.0", - "arrow-schema 53.0.0", - "arrow-select 53.0.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-data 53.1.0", + "arrow-schema 53.1.0", + "arrow-select 53.1.0", "atoi", "base64 0.22.1", "chrono", "comfy-table", "half", - "lexical-core", + "lexical-core 1.0.2", "num", "ryu", ] @@ -335,26 +335,26 @@ dependencies = [ "csv", "csv-core", "lazy_static", - "lexical-core", + "lexical-core 0.8.5", "regex", ] [[package]] name = "arrow-csv" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd178575f45624d045e4ebee714e246a05d9652e41363ee3f57ec18cca97f740" +checksum = "d3a4e4d63830a341713e35d9a42452fbc6241d5f42fa5cf6a4681b8ad91370c4" dependencies = [ - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-cast 53.0.0", - "arrow-data 53.0.0", - "arrow-schema 53.0.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-cast 53.1.0", + "arrow-data 53.1.0", + "arrow-schema 53.1.0", "chrono", "csv", "csv-core", "lazy_static", - "lexical-core", + "lexical-core 1.0.2", "regex", ] @@ -372,42 +372,42 @@ dependencies = [ [[package]] name = "arrow-data" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4ac0c4ee79150afe067dc4857154b3ee9c1cd52b5f40d59a77306d0ed18d65" +checksum = "2b1e618bbf714c7a9e8d97203c806734f012ff71ae3adc8ad1b075689f540634" dependencies = [ - "arrow-buffer 53.0.0", - "arrow-schema 53.0.0", + "arrow-buffer 53.1.0", + "arrow-schema 53.1.0", "half", "num", ] [[package]] name = "arrow-flight" -version = "52.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e7ffbc96072e466ae5188974725bb46757587eafe427f77a25b828c375ae882" -dependencies = [ - "arrow-arith 52.2.0", - "arrow-array 52.2.0", - "arrow-buffer 52.2.0", - "arrow-cast 52.2.0", - "arrow-data 52.2.0", - "arrow-ipc 52.2.0", - "arrow-ord 52.2.0", - "arrow-row 52.2.0", - "arrow-schema 52.2.0", - "arrow-select 52.2.0", - "arrow-string 52.2.0", +version = "53.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985074e2047f741abd4fd4a50d031c28ca8262a801a042bd41e1c5ab1ccdd243" +dependencies = [ + "arrow-arith 53.1.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-cast 53.1.0", + "arrow-data 53.1.0", + "arrow-ipc 53.1.0", + "arrow-ord 53.1.0", + "arrow-row 53.1.0", + "arrow-schema 53.1.0", + "arrow-select 53.1.0", + "arrow-string 53.1.0", "base64 0.22.1", "bytes", "futures", "once_cell", "paste", - "prost", + "prost 0.13.3", "prost-types", "tokio", - "tonic", + "tonic 0.12.3", ] [[package]] @@ -427,15 +427,15 @@ dependencies = [ [[package]] name = "arrow-ipc" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb307482348a1267f91b0912e962cd53440e5de0f7fb24c5f7b10da70b38c94a" +checksum = "f98e983549259a2b97049af7edfb8f28b8911682040e99a94e4ceb1196bd65c2" dependencies = [ - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-cast 53.0.0", - "arrow-data 53.0.0", - "arrow-schema 53.0.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-cast 53.1.0", + "arrow-data 53.1.0", + "arrow-schema 53.1.0", "flatbuffers", "lz4_flex", ] @@ -454,7 +454,7 @@ dependencies = [ "chrono", "half", "indexmap 2.5.0", - "lexical-core", + "lexical-core 0.8.5", "num", "serde", "serde_json", @@ -462,19 +462,19 @@ dependencies = [ [[package]] name = "arrow-json" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24805ba326758effdd6f2cbdd482fcfab749544f21b134701add25b33f474e6" +checksum = "b198b9c6fcf086501730efbbcb483317b39330a116125af7bb06467d04b352a3" dependencies = [ - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-cast 53.0.0", - "arrow-data 53.0.0", - "arrow-schema 53.0.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-cast 53.1.0", + "arrow-data 53.1.0", + "arrow-schema 53.1.0", "chrono", "half", "indexmap 2.5.0", - "lexical-core", + "lexical-core 1.0.2", "num", "serde", "serde_json", @@ -497,15 +497,15 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644046c479d80ae8ed02a7f1e1399072ea344ca6a7b0e293ab2d5d9ed924aa3b" +checksum = "2427f37b4459a4b9e533045abe87a5183a5e0995a3fc2c2fd45027ae2cc4ef3f" dependencies = [ - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-data 53.0.0", - "arrow-schema 53.0.0", - "arrow-select 53.0.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-data 53.1.0", + "arrow-schema 53.1.0", + "arrow-select 53.1.0", "half", "num", ] @@ -526,15 +526,15 @@ dependencies = [ [[package]] name = "arrow-row" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a29791f8eb13b340ce35525b723f5f0df17ecb955599e11f65c2a94ab34e2efb" +checksum = "15959657d92e2261a7a323517640af87f5afd9fd8a6492e424ebee2203c567f6" dependencies = [ "ahash", - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-data 53.0.0", - "arrow-schema 53.0.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-data 53.1.0", + "arrow-schema 53.1.0", "half", ] @@ -549,9 +549,9 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85320a3a2facf2b2822b57aa9d6d9d55edb8aee0b6b5d3b8df158e503d10858" +checksum = "fbf0388a18fd7f7f3fe3de01852d30f54ed5182f9004db700fbe3ba843ed2794" dependencies = [ "bitflags 2.6.0", "serde", @@ -573,15 +573,15 @@ dependencies = [ [[package]] name = "arrow-select" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cc7e6b582e23855fd1625ce46e51647aa440c20ea2e71b1d748e0839dd73cba" +checksum = "b83e5723d307a38bf00ecd2972cd078d1339c7fd3eb044f609958a9a24463f3a" dependencies = [ "ahash", - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-data 53.0.0", - "arrow-schema 53.0.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-data 53.1.0", + "arrow-schema 53.1.0", "num", ] @@ -604,15 +604,15 @@ dependencies = [ [[package]] name = "arrow-string" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0775b6567c66e56ded19b87a954b6b1beffbdd784ef95a3a2b03f59570c1d230" +checksum = "7ab3db7c09dd826e74079661d84ed01ed06547cf75d52c2818ef776d0d852305" dependencies = [ - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-data 53.0.0", - "arrow-schema 53.0.0", - "arrow-select 53.0.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-data 53.1.0", + "arrow-schema 53.1.0", + "arrow-select 53.1.0", "memchr", "num", "regex", @@ -725,7 +725,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", - "axum-core", + "axum-core 0.3.4", "bitflags 1.3.2", "bytes", "futures-util", @@ -741,7 +741,34 @@ dependencies = [ "rustversion", "serde", "sync_wrapper 0.1.2", - "tower", + "tower 0.4.13", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" +dependencies = [ + "async-trait", + "axum-core 0.4.5", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 1.0.1", + "tower 0.5.1", "tower-layer", "tower-service", ] @@ -763,6 +790,26 @@ dependencies = [ "tower-service", ] +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.1", + "tower-layer", + "tower-service", +] + [[package]] name = "backtrace" version = "0.3.71" @@ -976,7 +1023,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93698b29de5e97ad0ae26447b344c482a7284c737d9ddc5f9e52b74a336671bb" dependencies = [ "chrono", - "chrono-tz-build", + "chrono-tz-build 0.3.0", + "phf", +] + +[[package]] +name = "chrono-tz" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd6dd8046d00723a59a2f8c5f295c515b9bb9a331ee4f8f3d4dd49e428acd3b6" +dependencies = [ + "chrono", + "chrono-tz-build 0.4.0", "phf", ] @@ -991,6 +1049,16 @@ dependencies = [ "phf_codegen", ] +[[package]] +name = "chrono-tz-build" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94fea34d77a245229e7746bd2beb786cd2a896f306ff491fb8cecb3074b10a7" +dependencies = [ + "parse-zoneinfo", + "phf_codegen", +] + [[package]] name = "clap" version = "4.5.17" @@ -1307,10 +1375,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee907b081e45e1d14e1f327e89ef134f91fcebad0bfc2dc229fa9f6044379682" dependencies = [ "ahash", - "arrow 53.0.0", - "arrow-array 53.0.0", - "arrow-ipc 53.0.0", - "arrow-schema 53.0.0", + "arrow 53.1.0", + "arrow-array 53.1.0", + "arrow-ipc 53.1.0", + "arrow-schema 53.1.0", "async-compression", "async-trait", "bytes", @@ -1343,7 +1411,7 @@ dependencies = [ "num_cpus", "object_store 0.11.0", "parking_lot", - "parquet 53.0.0", + "parquet 53.1.0", "paste", "pin-project-lite", "rand", @@ -1377,7 +1445,7 @@ version = "42.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c2b914f6e33c429af7d8696c72a47ed9225d7e2b82c747ebdfa2408ed53579f" dependencies = [ - "arrow-schema 53.0.0", + "arrow-schema 53.1.0", "async-trait", "datafusion-common 42.0.0", "datafusion-execution 42.0.0", @@ -1415,10 +1483,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a84f8e76330c582a6b8ada0b2c599ca46cfe46b7585e458fc3f4092bc722a18" dependencies = [ "ahash", - "arrow 53.0.0", - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-schema 53.0.0", + "arrow 53.1.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-schema 53.1.0", "chrono", "half", "hashbrown 0.14.5", @@ -1426,7 +1494,7 @@ dependencies = [ "libc", "num_cpus", "object_store 0.11.0", - "parquet 53.0.0", + "parquet 53.1.0", "paste", "sqlparser 0.50.0", "tokio", @@ -1478,7 +1546,7 @@ version = "42.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86bc4183d5c45b9f068a6f351678a0d1eb1225181424542bb75db18ec280b822" dependencies = [ - "arrow 53.0.0", + "arrow 53.1.0", "chrono", "dashmap", "datafusion-common 42.0.0", @@ -1519,9 +1587,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "202119ce58e4d103e37ae64aab40d4e574c97bdd2bea994bf307b175fcbfa74d" dependencies = [ "ahash", - "arrow 53.0.0", - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", + "arrow 53.1.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", "chrono", "datafusion-common 42.0.0", "datafusion-expr-common", @@ -1540,7 +1608,7 @@ version = "42.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8b181ce8569216abb01ef3294aa16c0a40d7d39350c2ff01ede00f167a535f2" dependencies = [ - "arrow 53.0.0", + "arrow 53.1.0", "datafusion-common 42.0.0", "paste", ] @@ -1578,8 +1646,8 @@ version = "42.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e4124b8066444e05a24472f852e94cf56546c0f4d92d00f018f207216902712" dependencies = [ - "arrow 53.0.0", - "arrow-buffer 53.0.0", + "arrow 53.1.0", + "arrow-buffer 53.1.0", "base64 0.22.1", "blake2", "blake3", @@ -1624,8 +1692,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b94acdac235ea21810150a89751617ef2db7e32eba27f54be48a81bde2bfe119" dependencies = [ "ahash", - "arrow 53.0.0", - "arrow-schema 53.0.0", + "arrow 53.1.0", + "arrow-schema 53.1.0", "datafusion-common 42.0.0", "datafusion-execution 42.0.0", "datafusion-expr 42.0.0", @@ -1645,7 +1713,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c9ea085bbf900bf16e2ca0f56fc56236b2e4f2e1a2cccb67bcd83c5ab4ad0ef" dependencies = [ "ahash", - "arrow 53.0.0", + "arrow 53.1.0", "datafusion-common 42.0.0", "datafusion-expr-common", "datafusion-physical-expr-common 42.0.0", @@ -1696,11 +1764,11 @@ version = "42.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c882e61665ed60c5ce9b061c1e587aeb8ae5ae4bcb5e5f2465139ab25328e0f" dependencies = [ - "arrow 53.0.0", - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-ord 53.0.0", - "arrow-schema 53.0.0", + "arrow 53.1.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-ord 53.1.0", + "arrow-schema 53.1.0", "datafusion-common 42.0.0", "datafusion-execution 42.0.0", "datafusion-expr 42.0.0", @@ -1751,7 +1819,7 @@ version = "42.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf677c74fb7b5a1899ef52709e4a70fff3ed80bdfb4bbe495909810e83d5f39" dependencies = [ - "arrow 53.0.0", + "arrow 53.1.0", "async-trait", "chrono", "datafusion-common 42.0.0", @@ -1802,12 +1870,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30b077999f6eb6c43d6b25bc66332a3be2f693c382840f008dd763b8540f9530" dependencies = [ "ahash", - "arrow 53.0.0", - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-ord 53.0.0", - "arrow-schema 53.0.0", - "arrow-string 53.0.0", + "arrow 53.1.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-ord 53.1.0", + "arrow-schema 53.1.0", + "arrow-string 53.1.0", "base64 0.22.1", "chrono", "datafusion-common 42.0.0", @@ -1848,7 +1916,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dce847f885c2b13bbe29f5c8b7948797131aa470af6e16d2a94f4428b4f4f1bd" dependencies = [ "ahash", - "arrow 53.0.0", + "arrow 53.1.0", "datafusion-common 42.0.0", "datafusion-expr-common", "hashbrown 0.14.5", @@ -1873,7 +1941,7 @@ version = "42.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d13238e3b9fdd62a4c18760bfef714bb990d1e1d3430e9f416aae4b3cfaa71af" dependencies = [ - "arrow-schema 53.0.0", + "arrow-schema 53.1.0", "datafusion-common 42.0.0", "datafusion-execution 42.0.0", "datafusion-physical-expr 42.0.0", @@ -1922,11 +1990,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faba6f55a7eaf0241d07d12c2640de52742646b10f754485d5192bdfe2c9ceae" dependencies = [ "ahash", - "arrow 53.0.0", - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-ord 53.0.0", - "arrow-schema 53.0.0", + "arrow 53.1.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-ord 53.1.0", + "arrow-schema 53.1.0", "async-trait", "chrono", "datafusion-common 42.0.0", @@ -1963,7 +2031,7 @@ dependencies = [ "datafusion-expr 41.0.0", "datafusion-proto-common", "object_store 0.10.2", - "prost", + "prost 0.12.6", ] [[package]] @@ -1976,7 +2044,7 @@ dependencies = [ "chrono", "datafusion-common 41.0.0", "object_store 0.10.2", - "prost", + "prost 0.12.6", ] [[package]] @@ -2002,9 +2070,9 @@ version = "42.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dad8d96a9b52e1aa24f9373696a815be828193efce7cb0bbd2140b6bb67d1819" dependencies = [ - "arrow 53.0.0", - "arrow-array 53.0.0", - "arrow-schema 53.0.0", + "arrow 53.1.0", + "arrow-array 53.1.0", + "arrow-schema 53.1.0", "datafusion-common 42.0.0", "datafusion-expr 42.0.0", "log", @@ -2144,8 +2212,8 @@ dependencies = [ "clap", "color-eyre", "crossterm", - "datafusion 41.0.0", - "datafusion-common 41.0.0", + "datafusion 42.0.0", + "datafusion-common 42.0.0", "datafusion-functions-json", "deltalake", "directories", @@ -2161,7 +2229,7 @@ dependencies = [ "object_store 0.10.2", "pin-project-lite", "predicates", - "prost", + "prost 0.12.6", "ratatui", "serde", "strum", @@ -2170,8 +2238,8 @@ dependencies = [ "tokio-stream", "tokio-util", "toml", - "tonic", - "tower", + "tonic 0.11.0", + "tower 0.4.13", "tui-logger", "tui-textarea", "url", @@ -2656,7 +2724,7 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hudi" version = "0.2.0" -source = "git+https://github.com/apache/hudi-rs?rev=2e1913234edbea4af2eeb47a0d2d94b3193bfc34#2e1913234edbea4af2eeb47a0d2d94b3193bfc34" +source = "git+https://github.com/apache/hudi-rs?rev=abb3e635a28af229ba1e872fd6005c381e2b7ded#abb3e635a28af229ba1e872fd6005c381e2b7ded" dependencies = [ "hudi-core", "hudi-datafusion", @@ -2665,20 +2733,20 @@ dependencies = [ [[package]] name = "hudi-core" version = "0.2.0" -source = "git+https://github.com/apache/hudi-rs?rev=2e1913234edbea4af2eeb47a0d2d94b3193bfc34#2e1913234edbea4af2eeb47a0d2d94b3193bfc34" +source = "git+https://github.com/apache/hudi-rs?rev=abb3e635a28af229ba1e872fd6005c381e2b7ded#abb3e635a28af229ba1e872fd6005c381e2b7ded" dependencies = [ "anyhow", - "arrow 53.0.0", - "arrow-arith 53.0.0", - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-cast 53.0.0", - "arrow-ipc 53.0.0", - "arrow-json 53.0.0", - "arrow-ord 53.0.0", - "arrow-row 53.0.0", - "arrow-schema 53.0.0", - "arrow-select 53.0.0", + "arrow 53.1.0", + "arrow-arith 53.1.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-cast 53.1.0", + "arrow-ipc 53.1.0", + "arrow-json 53.1.0", + "arrow-ord 53.1.0", + "arrow-row 53.1.0", + "arrow-schema 53.1.0", + "arrow-select 53.1.0", "async-recursion", "bytes", "dashmap", @@ -2689,7 +2757,8 @@ dependencies = [ "futures", "object_store 0.11.0", "once_cell", - "parquet 53.0.0", + "parquet 53.1.0", + "paste", "percent-encoding", "serde", "serde_json", @@ -2702,9 +2771,9 @@ dependencies = [ [[package]] name = "hudi-datafusion" version = "0.2.0" -source = "git+https://github.com/apache/hudi-rs?rev=2e1913234edbea4af2eeb47a0d2d94b3193bfc34#2e1913234edbea4af2eeb47a0d2d94b3193bfc34" +source = "git+https://github.com/apache/hudi-rs?rev=abb3e635a28af229ba1e872fd6005c381e2b7ded#abb3e635a28af229ba1e872fd6005c381e2b7ded" dependencies = [ - "arrow-schema 53.0.0", + "arrow-schema 53.1.0", "async-trait", "datafusion 42.0.0", "datafusion-common 42.0.0", @@ -2758,6 +2827,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "httparse", + "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -2795,6 +2865,19 @@ dependencies = [ "tokio-io-timeout", ] +[[package]] +name = "hyper-timeout" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" +dependencies = [ + "hyper 1.4.1", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.8" @@ -2810,7 +2893,7 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", + "tower 0.4.13", "tower-service", "tracing", ] @@ -2959,7 +3042,7 @@ checksum = "02e23549143ef50eddffd46ba8cd0229b0a4500aef7518cf2eb0f41c9a09d22b" dependencies = [ "ahash", "bitvec", - "lexical-parse-float", + "lexical-parse-float 0.8.5", "num-bigint", "num-traits", "smallvec", @@ -2995,11 +3078,24 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" dependencies = [ - "lexical-parse-float", - "lexical-parse-integer", - "lexical-util", - "lexical-write-float", - "lexical-write-integer", + "lexical-parse-float 0.8.5", + "lexical-parse-integer 0.8.6", + "lexical-util 0.8.5", + "lexical-write-float 0.8.5", + "lexical-write-integer 0.8.5", +] + +[[package]] +name = "lexical-core" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0431c65b318a590c1de6b8fd6e72798c92291d27762d94c9e6c37ed7a73d8458" +dependencies = [ + "lexical-parse-float 1.0.2", + "lexical-parse-integer 1.0.2", + "lexical-util 1.0.3", + "lexical-write-float 1.0.2", + "lexical-write-integer 1.0.2", ] [[package]] @@ -3008,8 +3104,19 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" dependencies = [ - "lexical-parse-integer", - "lexical-util", + "lexical-parse-integer 0.8.6", + "lexical-util 0.8.5", + "static_assertions", +] + +[[package]] +name = "lexical-parse-float" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb17a4bdb9b418051aa59d41d65b1c9be5affab314a872e5ad7f06231fb3b4e0" +dependencies = [ + "lexical-parse-integer 1.0.2", + "lexical-util 1.0.3", "static_assertions", ] @@ -3019,7 +3126,17 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" dependencies = [ - "lexical-util", + "lexical-util 0.8.5", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5df98f4a4ab53bf8b175b363a34c7af608fe31f93cc1fb1bf07130622ca4ef61" +dependencies = [ + "lexical-util 1.0.3", "static_assertions", ] @@ -3032,14 +3149,34 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "lexical-util" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85314db53332e5c192b6bca611fb10c114a80d1b831ddac0af1e9be1b9232ca0" +dependencies = [ + "static_assertions", +] + [[package]] name = "lexical-write-float" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" dependencies = [ - "lexical-util", - "lexical-write-integer", + "lexical-util 0.8.5", + "lexical-write-integer 0.8.5", + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e7c3ad4e37db81c1cbe7cf34610340adc09c322871972f74877a712abc6c809" +dependencies = [ + "lexical-util 1.0.3", + "lexical-write-integer 1.0.2", "static_assertions", ] @@ -3049,7 +3186,17 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" dependencies = [ - "lexical-util", + "lexical-util 0.8.5", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb89e9f6958b83258afa3deed90b5de9ef68eef090ad5086c791cd2345610162" +dependencies = [ + "lexical-util 1.0.3", "static_assertions", ] @@ -3476,18 +3623,18 @@ dependencies = [ [[package]] name = "parquet" -version = "53.0.0" +version = "53.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0fbf928021131daaa57d334ca8e3904fe9ae22f73c56244fc7db9b04eedc3d8" +checksum = "310c46a70a3ba90d98fec39fa2da6d9d731e544191da6fb56c9d199484d0dd3e" dependencies = [ "ahash", - "arrow-array 53.0.0", - "arrow-buffer 53.0.0", - "arrow-cast 53.0.0", - "arrow-data 53.0.0", - "arrow-ipc 53.0.0", - "arrow-schema 53.0.0", - "arrow-select 53.0.0", + "arrow-array 53.1.0", + "arrow-buffer 53.1.0", + "arrow-cast 53.1.0", + "arrow-data 53.1.0", + "arrow-ipc 53.1.0", + "arrow-schema 53.1.0", + "arrow-select 53.1.0", "base64 0.22.1", "brotli", "bytes", @@ -3678,7 +3825,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.12.6", +] + +[[package]] +name = "prost" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +dependencies = [ + "bytes", + "prost-derive 0.13.3", ] [[package]] @@ -3694,13 +3851,26 @@ dependencies = [ "syn 2.0.77", ] +[[package]] +name = "prost-derive" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +dependencies = [ + "anyhow", + "itertools 0.13.0", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "prost-types" -version = "0.12.6" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" +checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" dependencies = [ - "prost", + "prost 0.13.3", ] [[package]] @@ -4326,7 +4496,7 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.77", @@ -4674,20 +4844,50 @@ checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" dependencies = [ "async-stream", "async-trait", - "axum", + "axum 0.6.20", "base64 0.21.7", "bytes", "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.30", - "hyper-timeout", + "hyper-timeout 0.4.1", "percent-encoding", "pin-project", - "prost", + "prost 0.12.6", "tokio", "tokio-stream", - "tower", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum 0.7.7", + "base64 0.22.1", + "bytes", + "h2 0.4.6", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-timeout 0.5.1", + "hyper-util", + "percent-encoding", + "pin-project", + "prost 0.13.3", + "socket2", + "tokio", + "tokio-stream", + "tower 0.4.13", "tower-layer", "tower-service", "tracing", @@ -4713,6 +4913,20 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" diff --git a/Cargo.toml b/Cargo.toml index d0c9604..e9d6f3b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,13 +14,13 @@ default-run = "dft" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -arrow-flight = { version = "52.2.0", features = ["flight-sql-experimental"] , optional = true } +arrow-flight = { version = "53.0.0", features = ["flight-sql-experimental"] , optional = true } async-trait = "0.1.80" clap = { version = "4.5.1", features = ["derive"] } color-eyre = "0.6.3" crossterm = { version = "0.28.1", features = ["event-stream"] } -datafusion = "41.0.0" -datafusion-common = "41.0.0" +datafusion = "42.0.0" +datafusion-common = "42.0.0" datafusion-functions-json = { version = "0.41.0", optional = true } deltalake = { version = "0.19.0", features = ["datafusion"], optional = true } directories = "5.0.1" @@ -28,7 +28,7 @@ env_logger = "0.11.5" futures = "0.3.30" http = "0.2.9" http-body = {version = "0.4.5" } -hudi = { features = ["datafusion"], optional = true, git = "https://github.com/apache/hudi-rs", rev = "2e1913234edbea4af2eeb47a0d2d94b3193bfc34" } +hudi = { features = ["datafusion"], optional = true, git = "https://github.com/apache/hudi-rs", rev = "abb3e635a28af229ba1e872fd6005c381e2b7ded" } itertools = "0.13.0" lazy_static = "1.4.0" log = "0.4.22" diff --git a/src/extensions/hudi.rs b/src/extensions/hudi.rs index 2009ecc..2c8c059 100644 --- a/src/extensions/hudi.rs +++ b/src/extensions/hudi.rs @@ -37,6 +37,6 @@ impl Extension for HudiExtension { _config: &ExecutionConfig, builder: DftSessionStateBuilder, ) -> datafusion_common::Result { - Ok(builder.with_table_factory("HUDITABLE", Arc::new(HudiTableFactory {}))) + Ok(builder.with_table_factory("HUDI", Arc::new(HudiTableFactory {}))) } } From 6b1001c17d48331cc3e42e4d90741de9f5e7add2 Mon Sep 17 00:00:00 2001 From: Matthew Turner Date: Mon, 14 Oct 2024 18:34:10 -0400 Subject: [PATCH 3/8] Start adding hudi test data --- .../.hoodie/20240418172802262.commit | 67 +++++++++++++++ .../20240418172802262.commit.requested | 0 .../.hoodie/20240418172802262.inflight | 57 ++++++++++++ .../.hoodie/20240418172804498.commit | 67 +++++++++++++++ .../20240418172804498.commit.requested | 0 .../.hoodie/20240418172804498.inflight | 81 ++++++++++++++++++ .../.hoodie/hoodie.properties | 17 ++++ .../10/.hoodie_partition_metadata | 4 + ...2a77-0_0-119-166_20240418172804498.parquet | Bin 0 -> 441352 bytes ...42a77-0_1-98-142_20240418172802262.parquet | Bin 0 -> 441426 bytes .../20/.hoodie_partition_metadata | 4 + ...c2cbd-0_0-98-141_20240418172802262.parquet | Bin 0 -> 441161 bytes .../30/.hoodie_partition_metadata | 4 + ...1c24-0_1-119-167_20240418172804498.parquet | Bin 0 -> 441186 bytes tests/extension_cases/hudi.rs | 31 +++++++ tests/extension_cases/mod.rs | 4 +- 16 files changed, 334 insertions(+), 2 deletions(-) create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172802262.commit create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172802262.commit.requested create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172802262.inflight create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172804498.commit create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172804498.commit.requested create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172804498.inflight create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/hoodie.properties create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/10/.hoodie_partition_metadata create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/10/97de74b1-2a8e-4bb7-874c-0a74e1f42a77-0_0-119-166_20240418172804498.parquet create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/10/97de74b1-2a8e-4bb7-874c-0a74e1f42a77-0_1-98-142_20240418172802262.parquet create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/20/.hoodie_partition_metadata create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/20/76e0556b-390d-4249-b7ad-9059e2bc2cbd-0_0-98-141_20240418172802262.parquet create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/30/.hoodie_partition_metadata create mode 100644 data/hudi/v6_simplekeygen_nonhivestyle/30/6db57019-98ee-480e-8eb1-fb3de48e1c24-0_1-119-167_20240418172804498.parquet create mode 100644 tests/extension_cases/hudi.rs diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172802262.commit b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172802262.commit new file mode 100644 index 0000000..5a01fef --- /dev/null +++ b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172802262.commit @@ -0,0 +1,67 @@ +{ + "partitionToWriteStats" : { + "20" : [ { + "fileId" : "76e0556b-390d-4249-b7ad-9059e2bc2cbd-0", + "path" : "20/76e0556b-390d-4249-b7ad-9059e2bc2cbd-0_0-98-141_20240418172802262.parquet", + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 1, + "totalWriteBytes" : 441161, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "20", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 441161, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 0, + "totalCreateTime" : 107 + } + } ], + "10" : [ { + "fileId" : "97de74b1-2a8e-4bb7-874c-0a74e1f42a77-0", + "path" : "10/97de74b1-2a8e-4bb7-874c-0a74e1f42a77-0_1-98-142_20240418172802262.parquet", + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 2, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 2, + "totalWriteBytes" : 441426, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "10", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 441426, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 0, + "totalCreateTime" : 107 + } + } ] + }, + "compacted" : false, + "extraMetadata" : { + "schema" : "{\"type\":\"record\",\"name\":\"v6_simplekeygen_nonhivestyle_record\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle\",\"fields\":[{\"name\":\"id\",\"type\":[\"null\",\"int\"],\"default\":null},{\"name\":\"name\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"isActive\",\"type\":[\"null\",\"boolean\"],\"default\":null},{\"name\":\"shortField\",\"type\":[\"null\",\"int\"],\"default\":null},{\"name\":\"intField\",\"type\":[\"null\",\"int\"],\"default\":null},{\"name\":\"longField\",\"type\":[\"null\",\"long\"],\"default\":null},{\"name\":\"floatField\",\"type\":[\"null\",\"float\"],\"default\":null},{\"name\":\"doubleField\",\"type\":[\"null\",\"double\"],\"default\":null},{\"name\":\"decimalField\",\"type\":[\"null\",{\"type\":\"fixed\",\"name\":\"fixed\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record.decimalField\",\"size\":5,\"logicalType\":\"decimal\",\"precision\":10,\"scale\":5}],\"default\":null},{\"name\":\"dateField\",\"type\":[\"null\",{\"type\":\"int\",\"logicalType\":\"date\"}],\"default\":null},{\"name\":\"timestampField\",\"type\":[\"null\",{\"type\":\"long\",\"logicalType\":\"timestamp-micros\"}],\"default\":null},{\"name\":\"binaryField\",\"type\":[\"null\",\"bytes\"],\"default\":null},{\"name\":\"arrayField\",\"type\":[\"null\",{\"type\":\"array\",\"items\":[\"null\",{\"type\":\"record\",\"name\":\"arrayField\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record\",\"fields\":[{\"name\":\"arr_struct_f1\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"arr_struct_f2\",\"type\":[\"null\",\"int\"],\"default\":null}]}]}],\"default\":null},{\"name\":\"mapField\",\"type\":[\"null\",{\"type\":\"map\",\"values\":[\"null\",{\"type\":\"record\",\"name\":\"mapField\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record\",\"fields\":[{\"name\":\"map_field_value_struct_f1\",\"type\":[\"null\",\"double\"],\"default\":null},{\"name\":\"map_field_value_struct_f2\",\"type\":[\"null\",\"boolean\"],\"default\":null}]}]}],\"default\":null},{\"name\":\"structField\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"structField\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record\",\"fields\":[{\"name\":\"field1\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"field2\",\"type\":[\"null\",\"int\"],\"default\":null},{\"name\":\"child_struct\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"child_struct\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record.structField\",\"fields\":[{\"name\":\"child_field1\",\"type\":[\"null\",\"double\"],\"default\":null},{\"name\":\"child_field2\",\"type\":[\"null\",\"boolean\"],\"default\":null}]}],\"default\":null}]}],\"default\":null},{\"name\":\"byteField\",\"type\":[\"null\",\"int\"],\"default\":null}]}" + }, + "operationType" : "UPSERT" +} \ No newline at end of file diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172802262.commit.requested b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172802262.commit.requested new file mode 100644 index 0000000..e69de29 diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172802262.inflight b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172802262.inflight new file mode 100644 index 0000000..8340262 --- /dev/null +++ b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172802262.inflight @@ -0,0 +1,57 @@ +{ + "partitionToWriteStats" : { + "20" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 1, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ], + "10" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 2, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ] + }, + "compacted" : false, + "extraMetadata" : { }, + "operationType" : "UPSERT" +} \ No newline at end of file diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172804498.commit b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172804498.commit new file mode 100644 index 0000000..4996fcb --- /dev/null +++ b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172804498.commit @@ -0,0 +1,67 @@ +{ + "partitionToWriteStats" : { + "30" : [ { + "fileId" : "6db57019-98ee-480e-8eb1-fb3de48e1c24-0", + "path" : "30/6db57019-98ee-480e-8eb1-fb3de48e1c24-0_1-119-167_20240418172804498.parquet", + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 1, + "totalWriteBytes" : 441186, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "30", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 441186, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 0, + "totalCreateTime" : 90 + } + } ], + "10" : [ { + "fileId" : "97de74b1-2a8e-4bb7-874c-0a74e1f42a77-0", + "path" : "10/97de74b1-2a8e-4bb7-874c-0a74e1f42a77-0_0-119-166_20240418172804498.parquet", + "cdcStats" : null, + "prevCommit" : "20240418172802262", + "numWrites" : 2, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 441352, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "10", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 441352, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 103, + "totalCreateTime" : 0 + } + } ] + }, + "compacted" : false, + "extraMetadata" : { + "schema" : "{\"type\":\"record\",\"name\":\"v6_simplekeygen_nonhivestyle_record\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle\",\"fields\":[{\"name\":\"id\",\"type\":[\"null\",\"int\"],\"default\":null},{\"name\":\"name\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"isActive\",\"type\":[\"null\",\"boolean\"],\"default\":null},{\"name\":\"shortField\",\"type\":[\"null\",\"int\"],\"default\":null},{\"name\":\"intField\",\"type\":[\"null\",\"int\"],\"default\":null},{\"name\":\"longField\",\"type\":[\"null\",\"long\"],\"default\":null},{\"name\":\"floatField\",\"type\":[\"null\",\"float\"],\"default\":null},{\"name\":\"doubleField\",\"type\":[\"null\",\"double\"],\"default\":null},{\"name\":\"decimalField\",\"type\":[\"null\",{\"type\":\"fixed\",\"name\":\"fixed\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record.decimalField\",\"size\":5,\"logicalType\":\"decimal\",\"precision\":10,\"scale\":5}],\"default\":null},{\"name\":\"dateField\",\"type\":[\"null\",{\"type\":\"int\",\"logicalType\":\"date\"}],\"default\":null},{\"name\":\"timestampField\",\"type\":[\"null\",{\"type\":\"long\",\"logicalType\":\"timestamp-micros\"}],\"default\":null},{\"name\":\"binaryField\",\"type\":[\"null\",\"bytes\"],\"default\":null},{\"name\":\"arrayField\",\"type\":[\"null\",{\"type\":\"array\",\"items\":[\"null\",{\"type\":\"record\",\"name\":\"arrayField\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record\",\"fields\":[{\"name\":\"arr_struct_f1\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"arr_struct_f2\",\"type\":[\"null\",\"int\"],\"default\":null}]}]}],\"default\":null},{\"name\":\"mapField\",\"type\":[\"null\",{\"type\":\"map\",\"values\":[\"null\",{\"type\":\"record\",\"name\":\"mapField\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record\",\"fields\":[{\"name\":\"map_field_value_struct_f1\",\"type\":[\"null\",\"double\"],\"default\":null},{\"name\":\"map_field_value_struct_f2\",\"type\":[\"null\",\"boolean\"],\"default\":null}]}]}],\"default\":null},{\"name\":\"structField\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"structField\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record\",\"fields\":[{\"name\":\"field1\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"field2\",\"type\":[\"null\",\"int\"],\"default\":null},{\"name\":\"child_struct\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"child_struct\",\"namespace\":\"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record.structField\",\"fields\":[{\"name\":\"child_field1\",\"type\":[\"null\",\"double\"],\"default\":null},{\"name\":\"child_field2\",\"type\":[\"null\",\"boolean\"],\"default\":null}]}],\"default\":null}]}],\"default\":null},{\"name\":\"byteField\",\"type\":[\"null\",\"int\"],\"default\":null}]}" + }, + "operationType" : "UPSERT" +} \ No newline at end of file diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172804498.commit.requested b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172804498.commit.requested new file mode 100644 index 0000000..e69de29 diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172804498.inflight b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172804498.inflight new file mode 100644 index 0000000..d127dc8 --- /dev/null +++ b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/20240418172804498.inflight @@ -0,0 +1,81 @@ +{ + "partitionToWriteStats" : { + "30" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 1, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ], + "10" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "97de74b1-2a8e-4bb7-874c-0a74e1f42a77-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "20240418172802262", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ] + }, + "compacted" : false, + "extraMetadata" : { }, + "operationType" : "UPSERT" +} \ No newline at end of file diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/hoodie.properties b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/hoodie.properties new file mode 100644 index 0000000..e506169 --- /dev/null +++ b/data/hudi/v6_simplekeygen_nonhivestyle/.hoodie/hoodie.properties @@ -0,0 +1,17 @@ +#Properties saved on 2024-04-18T22:27:38.493Z +#Thu Apr 18 17:27:38 CDT 2024 +hoodie.table.precombine.field=longField +hoodie.datasource.write.drop.partition.columns=false +hoodie.table.partition.fields=byteField +hoodie.table.type=COPY_ON_WRITE +hoodie.archivelog.folder=archived +hoodie.timeline.layout.version=1 +hoodie.table.version=6 +hoodie.table.recordkey.fields=id +hoodie.database.name=default +hoodie.datasource.write.partitionpath.urlencode=false +hoodie.table.name=v6_simplekeygen_nonhivestyle +hoodie.table.keygenerator.class=org.apache.hudi.keygen.SimpleKeyGenerator +hoodie.datasource.write.hive_style_partitioning=false +hoodie.table.create.schema={"type"\:"record","name"\:"v6_simplekeygen_nonhivestyle_record","namespace"\:"hoodie.v6_simplekeygen_nonhivestyle","fields"\:[{"name"\:"id","type"\:["int","null"]},{"name"\:"name","type"\:["string","null"]},{"name"\:"isActive","type"\:["boolean","null"]},{"name"\:"shortField","type"\:["int","null"]},{"name"\:"intField","type"\:["int","null"]},{"name"\:"longField","type"\:["long","null"]},{"name"\:"floatField","type"\:["float","null"]},{"name"\:"doubleField","type"\:["double","null"]},{"name"\:"decimalField","type"\:[{"type"\:"fixed","name"\:"fixed","namespace"\:"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record.decimalField","size"\:5,"logicalType"\:"decimal","precision"\:10,"scale"\:5},"null"]},{"name"\:"dateField","type"\:[{"type"\:"int","logicalType"\:"date"},"null"]},{"name"\:"timestampField","type"\:[{"type"\:"long","logicalType"\:"timestamp-micros"},"null"]},{"name"\:"binaryField","type"\:["bytes","null"]},{"name"\:"arrayField","type"\:[{"type"\:"array","items"\:[{"type"\:"record","name"\:"arrayField","namespace"\:"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record","fields"\:[{"name"\:"arr_struct_f1","type"\:["string","null"]},{"name"\:"arr_struct_f2","type"\:["int","null"]}]},"null"]},"null"]},{"name"\:"mapField","type"\:[{"type"\:"map","values"\:[{"type"\:"record","name"\:"mapField","namespace"\:"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record","fields"\:[{"name"\:"map_field_value_struct_f1","type"\:["double","null"]},{"name"\:"map_field_value_struct_f2","type"\:["boolean","null"]}]},"null"]},"null"]},{"name"\:"structField","type"\:[{"type"\:"record","name"\:"structField","namespace"\:"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record","fields"\:[{"name"\:"field1","type"\:["string","null"]},{"name"\:"field2","type"\:["int","null"]},{"name"\:"child_struct","type"\:[{"type"\:"record","name"\:"child_struct","namespace"\:"hoodie.v6_simplekeygen_nonhivestyle.v6_simplekeygen_nonhivestyle_record.structField","fields"\:[{"name"\:"child_field1","type"\:["double","null"]},{"name"\:"child_field2","type"\:["boolean","null"]}]},"null"]}]},"null"]},{"name"\:"byteField","type"\:["int","null"]}]} +hoodie.table.checksum=616688896 diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/10/.hoodie_partition_metadata b/data/hudi/v6_simplekeygen_nonhivestyle/10/.hoodie_partition_metadata new file mode 100644 index 0000000..822f38c --- /dev/null +++ b/data/hudi/v6_simplekeygen_nonhivestyle/10/.hoodie_partition_metadata @@ -0,0 +1,4 @@ +#partition metadata +#Thu Apr 18 17:28:02 CDT 2024 +commitTime=20240418172802262 +partitionDepth=1 diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/10/97de74b1-2a8e-4bb7-874c-0a74e1f42a77-0_0-119-166_20240418172804498.parquet b/data/hudi/v6_simplekeygen_nonhivestyle/10/97de74b1-2a8e-4bb7-874c-0a74e1f42a77-0_0-119-166_20240418172804498.parquet new file mode 100644 index 0000000000000000000000000000000000000000..9342f319f0b1ba9e7453a744728e032007333af6 GIT binary patch literal 441352 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 Cuqn*| literal 0 HcmV?d00001 diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/20/.hoodie_partition_metadata b/data/hudi/v6_simplekeygen_nonhivestyle/20/.hoodie_partition_metadata new file mode 100644 index 0000000..822f38c --- /dev/null +++ b/data/hudi/v6_simplekeygen_nonhivestyle/20/.hoodie_partition_metadata @@ -0,0 +1,4 @@ +#partition metadata +#Thu Apr 18 17:28:02 CDT 2024 +commitTime=20240418172802262 +partitionDepth=1 diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/20/76e0556b-390d-4249-b7ad-9059e2bc2cbd-0_0-98-141_20240418172802262.parquet b/data/hudi/v6_simplekeygen_nonhivestyle/20/76e0556b-390d-4249-b7ad-9059e2bc2cbd-0_0-98-141_20240418172802262.parquet new file mode 100644 index 0000000000000000000000000000000000000000..4e79a5e0ddfa341559560d742f29c9fd8ca2c0a3 GIT binary patch literal 441161 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 Doh`_Y literal 0 HcmV?d00001 diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/30/.hoodie_partition_metadata b/data/hudi/v6_simplekeygen_nonhivestyle/30/.hoodie_partition_metadata new file mode 100644 index 0000000..9bf279a --- /dev/null +++ b/data/hudi/v6_simplekeygen_nonhivestyle/30/.hoodie_partition_metadata @@ -0,0 +1,4 @@ +#partition metadata +#Thu Apr 18 17:28:04 CDT 2024 +commitTime=20240418172804498 +partitionDepth=1 diff --git a/data/hudi/v6_simplekeygen_nonhivestyle/30/6db57019-98ee-480e-8eb1-fb3de48e1c24-0_1-119-167_20240418172804498.parquet b/data/hudi/v6_simplekeygen_nonhivestyle/30/6db57019-98ee-480e-8eb1-fb3de48e1c24-0_1-119-167_20240418172804498.parquet new file mode 100644 index 0000000000000000000000000000000000000000..9bb076d8d9292aa475b3f2c7d186c88ccec7f75e GIT binary patch literal 441186 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 Zu9KT~9WyP8_U@nP#%=Y{xl7J#{eN4t(H#H) literal 0 HcmV?d00001 diff --git a/tests/extension_cases/hudi.rs b/tests/extension_cases/hudi.rs new file mode 100644 index 0000000..bb48a1b --- /dev/null +++ b/tests/extension_cases/hudi.rs @@ -0,0 +1,31 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +use crate::extension_cases::TestExecution; + +#[tokio::test] +async fn test_hudi() { + let test_exec = TestExecution::new(); + + test_exec.with_setup( + "CREATE EXTERNAL TABLE h STORED AS HUDI LOCATION './data/hudi/v6_simplekeygen_nonhivestyle';", + ) + .await; + + let output = test_exec.run_and_format("SELECT * FROM h").await; + assert_eq!(output, vec![""]); +} diff --git a/tests/extension_cases/mod.rs b/tests/extension_cases/mod.rs index 0d2667f..5015e5e 100644 --- a/tests/extension_cases/mod.rs +++ b/tests/extension_cases/mod.rs @@ -21,6 +21,8 @@ mod flightsql; #[cfg(feature = "functions-json")] mod functions_json; +#[cfg(feature = "hudi")] +mod hudi; #[cfg(feature = "s3")] mod s3; @@ -53,7 +55,6 @@ impl TestExecution { } /// Run the setup SQL query, discarding the result - #[allow(dead_code)] pub async fn with_setup(self, sql: &str) -> Self { debug!("Running setup query: {sql}"); let dialect = datafusion::sql::sqlparser::dialect::GenericDialect {}; @@ -88,7 +89,6 @@ impl TestExecution { /// Runs the specified SQL query, returning the result as a Vec /// suitable for comparison with insta - #[allow(dead_code)] pub async fn run_and_format(&mut self, sql: &str) -> Vec { format_results(&self.run(sql).await.expect("Error running query")) } From e14c47bb82dbfb528ad51326f8d3c60999e8e72c Mon Sep 17 00:00:00 2001 From: Matthew Turner Date: Mon, 14 Oct 2024 20:05:51 -0400 Subject: [PATCH 4/8] Test working --- Cargo.toml | 1 + tests/extension_cases/hudi.rs | 24 ++++++++++++++++++------ tests/extension_cases/mod.rs | 5 ++--- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e9d6f3b..7a8070b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,6 +54,7 @@ assert_cmd = "2.0.16" insta = { version = "1.40.0", features = ["yaml"] } predicates = "3.1.2" tempfile = "3.2.0" +url = "2.5.2" # When addding a new feature, also add it to the features tested list in CI (`.github/workflows/rust.yml`) [features] diff --git a/tests/extension_cases/hudi.rs b/tests/extension_cases/hudi.rs index bb48a1b..93b2b86 100644 --- a/tests/extension_cases/hudi.rs +++ b/tests/extension_cases/hudi.rs @@ -15,17 +15,29 @@ // specific language governing permissions and limitations // under the License. +use url::Url; + use crate::extension_cases::TestExecution; #[tokio::test] async fn test_hudi() { let test_exec = TestExecution::new(); - test_exec.with_setup( - "CREATE EXTERNAL TABLE h STORED AS HUDI LOCATION './data/hudi/v6_simplekeygen_nonhivestyle';", - ) - .await; + let cwd = std::env::current_dir().unwrap(); + let path = Url::from_file_path(cwd.join("data/hudi/v6_simplekeygen_nonhivestyle")).unwrap(); + + let test_exec = test_exec + .with_setup(&format!( + "CREATE EXTERNAL TABLE h STORED AS HUDI LOCATION '{}';", + path + )) + .await; - let output = test_exec.run_and_format("SELECT * FROM h").await; - assert_eq!(output, vec![""]); + let output = test_exec + .run_and_format("SELECT id FROM h ORDER BY id") + .await; + assert_eq!( + output, + vec!["+----+", "| id |", "+----+", "| 1 |", "| 2 |", "| 3 |", "| 4 |", "+----+"] + ); } diff --git a/tests/extension_cases/mod.rs b/tests/extension_cases/mod.rs index 5015e5e..fdc5c1c 100644 --- a/tests/extension_cases/mod.rs +++ b/tests/extension_cases/mod.rs @@ -76,8 +76,7 @@ impl TestExecution { } /// run the specified SQL query, returning the result as a Vec of [`RecordBatch`] - #[allow(dead_code)] - pub async fn run(&mut self, sql: &str) -> Result> { + pub async fn run(&self, sql: &str) -> Result> { debug!("Running query: {sql}"); self.execution .execute_sql(sql) @@ -89,7 +88,7 @@ impl TestExecution { /// Runs the specified SQL query, returning the result as a Vec /// suitable for comparison with insta - pub async fn run_and_format(&mut self, sql: &str) -> Vec { + pub async fn run_and_format(&self, sql: &str) -> Vec { format_results(&self.run(sql).await.expect("Error running query")) } } From a706fba58fce8a706cff3b5bc28d79aa7bf25466 Mon Sep 17 00:00:00 2001 From: Matthew Turner Date: Mon, 6 Jan 2025 10:10:14 -0500 Subject: [PATCH 5/8] Remove dir --- src/extensions/mod.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/extensions/mod.rs b/src/extensions/mod.rs index 498c727..0203660 100644 --- a/src/extensions/mod.rs +++ b/src/extensions/mod.rs @@ -25,8 +25,6 @@ use std::{fmt::Debug, sync::Arc}; mod builder; #[cfg(feature = "deltalake")] mod deltalake; -#[cfg(feature = "functions-json")] -mod functions_json; #[cfg(feature = "hudi")] mod hudi; #[cfg(feature = "iceberg")] From 1988416a11b2504e9decbfd38b6ffc3d5e4146d9 Mon Sep 17 00:00:00 2001 From: Matthew Turner Date: Mon, 6 Jan 2025 10:22:34 -0500 Subject: [PATCH 6/8] Clippy --- src/extensions/hudi.rs | 12 +++++++----- src/extensions/mod.rs | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/extensions/hudi.rs b/src/extensions/hudi.rs index 2c8c059..264fc2d 100644 --- a/src/extensions/hudi.rs +++ b/src/extensions/hudi.rs @@ -31,12 +31,14 @@ impl HudiExtension { } } +#[async_trait::async_trait] impl Extension for HudiExtension { - fn register( + async fn register( &self, - _config: &ExecutionConfig, - builder: DftSessionStateBuilder, - ) -> datafusion_common::Result { - Ok(builder.with_table_factory("HUDI", Arc::new(HudiTableFactory {}))) + _config: ExecutionConfig, + builder: &mut DftSessionStateBuilder, + ) -> datafusion_common::Result<()> { + builder.add_table_factory("HUDI", Arc::new(HudiTableFactory {})); + Ok(()) } } diff --git a/src/extensions/mod.rs b/src/extensions/mod.rs index 0203660..9d2ad17 100644 --- a/src/extensions/mod.rs +++ b/src/extensions/mod.rs @@ -59,7 +59,7 @@ pub fn enabled_extensions() -> Vec> { #[cfg(feature = "deltalake")] Arc::new(deltalake::DeltaLakeExtension::new()), #[cfg(feature = "hudi")] - Box::new(hudi::HudiExtension::new()), + Arc::new(hudi::HudiExtension::new()), #[cfg(feature = "iceberg")] Arc::new(iceberg::IcebergExtension::new()), ] From d09855deadde1e0d3759fcc9813d5db2d95cc864 Mon Sep 17 00:00:00 2001 From: Matthew Turner Date: Mon, 6 Jan 2025 10:32:17 -0500 Subject: [PATCH 7/8] Maybe a fix? --- src/execution/stats.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/execution/stats.rs b/src/execution/stats.rs index 580c03a..902848d 100644 --- a/src/execution/stats.rs +++ b/src/execution/stats.rs @@ -465,13 +465,11 @@ impl ExecutionComputeStats { mean, max, total, - )?; - Ok(()) - })? + ) + }) } else { - writeln!(f, "No {label} Stats")?; - }; - Ok(()) + writeln!(f, "No {label} Stats") + } } } From 6bf31698afe16d6f279d8e025d300fab93cb7c39 Mon Sep 17 00:00:00 2001 From: Matthew Turner Date: Mon, 6 Jan 2025 11:07:40 -0500 Subject: [PATCH 8/8] Update hudi tests --- .github/workflows/test.yml | 28 ++++++++++++++++++++++++++++ tests/extension_cases/hudi.rs | 1 + 2 files changed, 29 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 81f6d9d..8277761 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -161,3 +161,31 @@ jobs: - name: Run Deltalake tests run: | cargo test --features=deltalake extension_cases::deltalake + test-hudi: + name: Hudi + runs-on: ubuntu-latest + strategy: + matrix: + arch: [amd64] + rust: [stable] + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Cache Cargo + uses: actions/cache@v2 + with: + path: /home/runner/.cargo + key: cargo-dft-cache- + - name: Cache Rust dependencies + uses: actions/cache@v2 + with: + path: /home/runner/target + key: target-dft-cache- + - name: Setup Rust toolchain + run: | + rustup toolchain install ${{ matrix.rust }} + rustup default ${{ matrix.rust }} + - name: Run Hudi tests + run: | + cargo test --features=hudi extension_cases::hudi diff --git a/tests/extension_cases/hudi.rs b/tests/extension_cases/hudi.rs index 93b2b86..6051158 100644 --- a/tests/extension_cases/hudi.rs +++ b/tests/extension_cases/hudi.rs @@ -27,6 +27,7 @@ async fn test_hudi() { let path = Url::from_file_path(cwd.join("data/hudi/v6_simplekeygen_nonhivestyle")).unwrap(); let test_exec = test_exec + .await .with_setup(&format!( "CREATE EXTERNAL TABLE h STORED AS HUDI LOCATION '{}';", path