Merge branch 'main' into er/refactor/scalar_comp
commit
db96286ed7
|
@ -37,18 +37,18 @@ version = "0.6.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "796540673305a66d127804eef19ad696f1f204b8c1025aaca4958c17eab32877"
|
checksum = "796540673305a66d127804eef19ad696f1f204b8c1025aaca4958c17eab32877"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom 0.2.2",
|
"getrandom 0.2.3",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ahash"
|
name = "ahash"
|
||||||
version = "0.7.2"
|
version = "0.7.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7f200cbb1e856866d9eade941cf3aa0c5d7dd36f74311c4273b494f4ef036957"
|
checksum = "11149c3eb723d15cb065a9ea5cc74ab57250f098ef33c9f6f7f39b48bd207750"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom 0.2.2",
|
"getrandom 0.2.3",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
@ -124,15 +124,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "arrow"
|
name = "arrow"
|
||||||
version = "0.1.0"
|
version = "4.1.0"
|
||||||
dependencies = [
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
"arrow 4.0.0-SNAPSHOT",
|
checksum = "20cdf087304d5cdd743abd621b4b1b388848d29491932dae6f676ec89ebda0ae"
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "arrow"
|
|
||||||
version = "4.0.0-SNAPSHOT"
|
|
||||||
source = "git+https://github.com/apache/arrow-rs?rev=8226219fe7104f6c8a2740806f96f02c960d991c#8226219fe7104f6c8a2740806f96f02c960d991c"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg_aliases",
|
"cfg_aliases",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
@ -154,10 +148,11 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "arrow-flight"
|
name = "arrow-flight"
|
||||||
version = "4.0.0-SNAPSHOT"
|
version = "4.1.0"
|
||||||
source = "git+https://github.com/apache/arrow-rs?rev=8226219fe7104f6c8a2740806f96f02c960d991c#8226219fe7104f6c8a2740806f96f02c960d991c"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "be523cfd3669eee90aac4223cbc6fa8c4fd4cecf3281f061e5421e3e8aa91148"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 4.0.0-SNAPSHOT",
|
"arrow",
|
||||||
"bytes",
|
"bytes",
|
||||||
"futures",
|
"futures",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
|
@ -168,19 +163,12 @@ dependencies = [
|
||||||
"tonic-build",
|
"tonic-build",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "arrow_flight"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"arrow-flight",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "arrow_util"
|
name = "arrow_util"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash 0.7.2",
|
"ahash 0.7.3",
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"futures",
|
"futures",
|
||||||
"hashbrown 0.11.2",
|
"hashbrown 0.11.2",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
|
@ -224,9 +212,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-stream"
|
name = "async-stream"
|
||||||
version = "0.3.1"
|
version = "0.3.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0a26cb53174ddd320edfff199a853f93d571f48eeb4dde75e67a9a3dbb7b7e5e"
|
checksum = "171374e7e3b2504e0e5236e3b59260560f9fe94bfe9ac39ba5e4e929c5590625"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-stream-impl",
|
"async-stream-impl",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
|
@ -234,9 +222,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-stream-impl"
|
name = "async-stream-impl"
|
||||||
version = "0.3.1"
|
version = "0.3.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "db134ba52475c060f3329a8ef0f8786d6b872ed01515d4b79c162e5798da1340"
|
checksum = "648ed8c8d2ce5409ccd57453d9d1b214b342a0d69376a6feda1fd6cae3299308"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -510,11 +498,11 @@ checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cast"
|
name = "cast"
|
||||||
version = "0.2.5"
|
version = "0.2.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cc38c385bfd7e444464011bb24820f40dd1c76bcdfa1b78611cb7c2e5cafab75"
|
checksum = "57cdfa5d50aad6cb4d44dcab6101a7f79925bd59d82ca42f38a9856a28865374"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rustc_version",
|
"rustc_version 0.3.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -587,6 +575,17 @@ dependencies = [
|
||||||
"vec_map",
|
"vec_map",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clipboard-win"
|
||||||
|
version = "4.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4e4ea1881992efc993e4dc50a324cdbd03216e41bdc8385720ff47efc9bd2ca8"
|
||||||
|
dependencies = [
|
||||||
|
"error-code",
|
||||||
|
"str-buf",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cloud-storage"
|
name = "cloud-storage"
|
||||||
version = "0.9.0"
|
version = "0.9.0"
|
||||||
|
@ -622,9 +621,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "const_fn"
|
name = "const_fn"
|
||||||
version = "0.4.7"
|
version = "0.4.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "402da840495de3f976eaefc3485b7f5eb5b0bf9761f9a47be27fe975b3b8c2ec"
|
checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "constant_time_eq"
|
name = "constant_time_eq"
|
||||||
|
@ -650,9 +649,9 @@ checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cpufeatures"
|
name = "cpufeatures"
|
||||||
version = "0.1.3"
|
version = "0.1.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "281f563b2c3a0e535ab12d81d3c5859045795256ad269afa7c19542585b68f93"
|
checksum = "ed00c67cb5d0a7d64a44f6ad2668db7e7530311dd53ea79bcd4fb022c64911c8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
@ -906,20 +905,21 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "datafusion"
|
name = "datafusion"
|
||||||
version = "4.0.0-SNAPSHOT"
|
version = "4.0.0-SNAPSHOT"
|
||||||
source = "git+https://github.com/apache/arrow-datafusion.git?rev=9cf32cf2cda8472b87130142c4eee1126d4d9cbe#9cf32cf2cda8472b87130142c4eee1126d4d9cbe"
|
source = "git+https://github.com/apache/arrow-datafusion.git?rev=7359e4b4df0836b8de970d551c6eeae22d1cc810#7359e4b4df0836b8de970d551c6eeae22d1cc810"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash 0.7.2",
|
"ahash 0.7.3",
|
||||||
"arrow 4.0.0-SNAPSHOT",
|
"arrow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"chrono",
|
"chrono",
|
||||||
"futures",
|
"futures",
|
||||||
"hashbrown 0.11.2",
|
"hashbrown 0.11.2",
|
||||||
"log",
|
"log",
|
||||||
"num_cpus",
|
"num_cpus",
|
||||||
"ordered-float 2.2.0",
|
"ordered-float 2.4.0",
|
||||||
"parquet 4.0.0-SNAPSHOT",
|
"parquet",
|
||||||
"paste 1.0.5",
|
"paste 1.0.5",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
|
"rand 0.8.3",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"sqlparser 0.9.0",
|
"sqlparser 0.9.0",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
@ -1088,6 +1088,16 @@ dependencies = [
|
||||||
"termcolor",
|
"termcolor",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "error-code"
|
||||||
|
version = "2.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b5115567ac25674e0043e472be13d14e537f37ea8aa4bdc4aef0c89add1db1ff"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"str-buf",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "event-listener"
|
name = "event-listener"
|
||||||
version = "2.5.1"
|
version = "2.5.1"
|
||||||
|
@ -1128,6 +1138,16 @@ dependencies = [
|
||||||
"synstructure",
|
"synstructure",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fd-lock"
|
||||||
|
version = "2.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0010f02effd88c702318c5dde0463206be67495d0b4d906ba7c0a8f166cc7f06"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fixedbitset"
|
name = "fixedbitset"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
|
@ -1197,16 +1217,6 @@ dependencies = [
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "fs2"
|
|
||||||
version = "0.4.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fs_extra"
|
name = "fs_extra"
|
||||||
version = "1.2.0"
|
version = "1.2.0"
|
||||||
|
@ -1368,9 +1378,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "getrandom"
|
name = "getrandom"
|
||||||
version = "0.2.2"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8"
|
checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -1438,7 +1448,7 @@ version = "0.11.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
|
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash 0.7.2",
|
"ahash 0.7.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1642,8 +1652,8 @@ dependencies = [
|
||||||
name = "influxdb_iox"
|
name = "influxdb_iox"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"arrow_flight",
|
"arrow-flight",
|
||||||
"arrow_util",
|
"arrow_util",
|
||||||
"assert_cmd",
|
"assert_cmd",
|
||||||
"byteorder",
|
"byteorder",
|
||||||
|
@ -1683,7 +1693,7 @@ dependencies = [
|
||||||
"packers",
|
"packers",
|
||||||
"panic_logging",
|
"panic_logging",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"parquet 0.1.0",
|
"parquet",
|
||||||
"pprof",
|
"pprof",
|
||||||
"predicates",
|
"predicates",
|
||||||
"prettytable-rs",
|
"prettytable-rs",
|
||||||
|
@ -1720,8 +1730,8 @@ dependencies = [
|
||||||
name = "influxdb_iox_client"
|
name = "influxdb_iox_client"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"arrow_flight",
|
"arrow-flight",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"generated_types",
|
"generated_types",
|
||||||
"http",
|
"http",
|
||||||
|
@ -1764,7 +1774,7 @@ dependencies = [
|
||||||
name = "ingest"
|
name = "ingest"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"flate2",
|
"flate2",
|
||||||
"influxdb_line_protocol",
|
"influxdb_line_protocol",
|
||||||
"influxdb_tsm",
|
"influxdb_tsm",
|
||||||
|
@ -1772,7 +1782,7 @@ dependencies = [
|
||||||
"observability_deps",
|
"observability_deps",
|
||||||
"packers",
|
"packers",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"parquet 0.1.0",
|
"parquet",
|
||||||
"snafu",
|
"snafu",
|
||||||
"test_helpers",
|
"test_helpers",
|
||||||
]
|
]
|
||||||
|
@ -1796,7 +1806,7 @@ checksum = "48dc51180a9b377fd75814d0cc02199c20f8e99433d6762f650d39cdbbd3b56f"
|
||||||
name = "internal_types"
|
name = "internal_types"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"arrow_util",
|
"arrow_util",
|
||||||
"observability_deps",
|
"observability_deps",
|
||||||
"snafu",
|
"snafu",
|
||||||
|
@ -1984,7 +1994,7 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
|
||||||
name = "mem_qe"
|
name = "mem_qe"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"chrono",
|
"chrono",
|
||||||
"criterion",
|
"criterion",
|
||||||
"croaring",
|
"croaring",
|
||||||
|
@ -1993,7 +2003,7 @@ dependencies = [
|
||||||
"human_format",
|
"human_format",
|
||||||
"observability_deps",
|
"observability_deps",
|
||||||
"packers",
|
"packers",
|
||||||
"parquet 0.1.0",
|
"parquet",
|
||||||
"snafu",
|
"snafu",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -2121,7 +2131,7 @@ dependencies = [
|
||||||
name = "mutable_buffer"
|
name = "mutable_buffer"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"arrow_util",
|
"arrow_util",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"criterion",
|
"criterion",
|
||||||
|
@ -2212,11 +2222,11 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num"
|
name = "num"
|
||||||
version = "0.3.1"
|
version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8b7a8e9be5e039e2ff869df49155f1c06bd01ade2117ec783e56ab0932b67a8f"
|
checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"num-bigint 0.3.2",
|
"num-bigint 0.4.0",
|
||||||
"num-complex",
|
"num-complex",
|
||||||
"num-integer",
|
"num-integer",
|
||||||
"num-iter",
|
"num-iter",
|
||||||
|
@ -2237,9 +2247,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-bigint"
|
name = "num-bigint"
|
||||||
version = "0.3.2"
|
version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7d0a3d5e207573f948a9e5376662aa743a2ea13f7c50a554d7af443a73fbfeba"
|
checksum = "4e0d047c1062aa51e256408c560894e5251f08925980e53cf1aa5bd00eec6512"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
"num-integer",
|
"num-integer",
|
||||||
|
@ -2248,9 +2258,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-complex"
|
name = "num-complex"
|
||||||
version = "0.3.1"
|
version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "747d632c0c558b87dbabbe6a82f3b4ae03720d0646ac5b7b4dae89394be5f2c5"
|
checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"num-traits",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
@ -2288,12 +2298,12 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-rational"
|
name = "num-rational"
|
||||||
version = "0.3.2"
|
version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07"
|
checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
"num-bigint 0.3.2",
|
"num-bigint 0.4.0",
|
||||||
"num-integer",
|
"num-integer",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
@ -2503,9 +2513,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ordered-float"
|
name = "ordered-float"
|
||||||
version = "2.2.0"
|
version = "2.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b50b8919aecb97e5ee9aceef27e24f39c46b11831130f4a6b7b091ec5de0de12"
|
checksum = "76d99537dd7019c4dabfcf3898a43ee685412f76e6bee1ecc48785d730c1a275"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"num-traits",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
@ -2537,12 +2547,12 @@ dependencies = [
|
||||||
name = "packers"
|
name = "packers"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"human_format",
|
"human_format",
|
||||||
"influxdb_tsm",
|
"influxdb_tsm",
|
||||||
"internal_types",
|
"internal_types",
|
||||||
"observability_deps",
|
"observability_deps",
|
||||||
"parquet 0.1.0",
|
"parquet",
|
||||||
"rand 0.8.3",
|
"rand 0.8.3",
|
||||||
"snafu",
|
"snafu",
|
||||||
"test_helpers",
|
"test_helpers",
|
||||||
|
@ -2582,24 +2592,18 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parquet"
|
name = "parquet"
|
||||||
version = "0.1.0"
|
version = "4.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "193b8db290021fa28a6447df8f433e39b3caab20ee08b874d0a5c1c34aef68de"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"parquet 4.0.0-SNAPSHOT",
|
"arrow",
|
||||||
]
|
"base64 0.13.0",
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "parquet"
|
|
||||||
version = "4.0.0-SNAPSHOT"
|
|
||||||
source = "git+https://github.com/apache/arrow-rs?rev=8226219fe7104f6c8a2740806f96f02c960d991c#8226219fe7104f6c8a2740806f96f02c960d991c"
|
|
||||||
dependencies = [
|
|
||||||
"arrow 4.0.0-SNAPSHOT",
|
|
||||||
"base64 0.12.3",
|
|
||||||
"brotli",
|
"brotli",
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"chrono",
|
"chrono",
|
||||||
"flate2",
|
"flate2",
|
||||||
"lz4",
|
"lz4",
|
||||||
"num-bigint 0.3.2",
|
"num-bigint 0.4.0",
|
||||||
"parquet-format",
|
"parquet-format",
|
||||||
"snap",
|
"snap",
|
||||||
"thrift",
|
"thrift",
|
||||||
|
@ -2619,7 +2623,7 @@ dependencies = [
|
||||||
name = "parquet_file"
|
name = "parquet_file"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"arrow_util",
|
"arrow_util",
|
||||||
"bytes",
|
"bytes",
|
||||||
"data_types",
|
"data_types",
|
||||||
|
@ -2632,7 +2636,7 @@ dependencies = [
|
||||||
"object_store",
|
"object_store",
|
||||||
"observability_deps",
|
"observability_deps",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"parquet 0.1.0",
|
"parquet",
|
||||||
"parquet-format",
|
"parquet-format",
|
||||||
"prost",
|
"prost",
|
||||||
"prost-types",
|
"prost-types",
|
||||||
|
@ -2699,6 +2703,15 @@ version = "0.2.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d9978962f8a4b158e97447a6d09d2d75e206d2994eff056c894019f362b27142"
|
checksum = "d9978962f8a4b158e97447a6d09d2d75e206d2994eff056c894019f362b27142"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pest"
|
||||||
|
version = "2.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53"
|
||||||
|
dependencies = [
|
||||||
|
"ucd-trie",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "petgraph"
|
name = "petgraph"
|
||||||
version = "0.5.1"
|
version = "0.5.1"
|
||||||
|
@ -2769,9 +2782,9 @@ checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "plotters"
|
name = "plotters"
|
||||||
version = "0.3.0"
|
version = "0.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "45ca0ae5f169d0917a7c7f5a9c1a3d3d9598f18f529dd2b8373ed988efea307a"
|
checksum = "32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"plotters-backend",
|
"plotters-backend",
|
||||||
|
@ -2986,7 +2999,7 @@ checksum = "45604fc7a88158e7d514d8e22e14ac746081e7a70d7690074dd0029ee37458d6"
|
||||||
name = "query"
|
name = "query"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"arrow_util",
|
"arrow_util",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
@ -3103,7 +3116,7 @@ version = "0.6.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
|
checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom 0.2.2",
|
"getrandom 0.2.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3136,9 +3149,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rayon"
|
name = "rayon"
|
||||||
version = "1.5.0"
|
version = "1.5.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674"
|
checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
"crossbeam-deque",
|
"crossbeam-deque",
|
||||||
|
@ -3148,9 +3161,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rayon-core"
|
name = "rayon-core"
|
||||||
version = "1.9.0"
|
version = "1.9.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a"
|
checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"crossbeam-channel",
|
"crossbeam-channel",
|
||||||
"crossbeam-deque",
|
"crossbeam-deque",
|
||||||
|
@ -3163,7 +3176,7 @@ dependencies = [
|
||||||
name = "read_buffer"
|
name = "read_buffer"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"arrow_util",
|
"arrow_util",
|
||||||
"criterion",
|
"criterion",
|
||||||
"croaring",
|
"croaring",
|
||||||
|
@ -3217,7 +3230,7 @@ version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
|
checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom 0.2.2",
|
"getrandom 0.2.3",
|
||||||
"redox_syscall 0.2.8",
|
"redox_syscall 0.2.8",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3351,7 +3364,7 @@ dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"rusoto_credential",
|
"rusoto_credential",
|
||||||
"rusoto_signature",
|
"rusoto_signature",
|
||||||
"rustc_version",
|
"rustc_version 0.2.3",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
@ -3407,7 +3420,7 @@ dependencies = [
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"rusoto_credential",
|
"rusoto_credential",
|
||||||
"rustc_version",
|
"rustc_version 0.2.3",
|
||||||
"serde",
|
"serde",
|
||||||
"sha2",
|
"sha2",
|
||||||
"time 0.2.26",
|
"time 0.2.26",
|
||||||
|
@ -3444,7 +3457,16 @@ version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
|
checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"semver",
|
"semver 0.9.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustc_version"
|
||||||
|
version = "0.3.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
|
||||||
|
dependencies = [
|
||||||
|
"semver 0.11.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3474,14 +3496,15 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustyline"
|
name = "rustyline"
|
||||||
version = "8.0.0"
|
version = "8.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b9e1b597fcd1eeb1d6b25b493538e5aa19629eb08932184b85fef931ba87e893"
|
checksum = "fbd4eaf7a7738f76c98e4f0395253ae853be3eb018f7b0bb57fe1b6c17e31874"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
|
"clipboard-win",
|
||||||
"dirs-next",
|
"dirs-next",
|
||||||
"fs2",
|
"fd-lock",
|
||||||
"libc",
|
"libc",
|
||||||
"log",
|
"log",
|
||||||
"memchr",
|
"memchr",
|
||||||
|
@ -3565,7 +3588,16 @@ version = "0.9.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
|
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"semver-parser",
|
"semver-parser 0.7.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "semver"
|
||||||
|
version = "0.11.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
|
||||||
|
dependencies = [
|
||||||
|
"semver-parser 0.10.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3574,6 +3606,15 @@ version = "0.7.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "semver-parser"
|
||||||
|
version = "0.10.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
|
||||||
|
dependencies = [
|
||||||
|
"pest",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.126"
|
version = "1.0.126"
|
||||||
|
@ -3666,8 +3707,8 @@ dependencies = [
|
||||||
name = "server"
|
name = "server"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrow 0.1.0",
|
"arrow",
|
||||||
"arrow_flight",
|
"arrow-flight",
|
||||||
"arrow_util",
|
"arrow_util",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"bytes",
|
"bytes",
|
||||||
|
@ -3871,7 +3912,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5"
|
checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"discard",
|
"discard",
|
||||||
"rustc_version",
|
"rustc_version 0.2.3",
|
||||||
"stdweb-derive",
|
"stdweb-derive",
|
||||||
"stdweb-internal-macros",
|
"stdweb-internal-macros",
|
||||||
"stdweb-internal-runtime",
|
"stdweb-internal-runtime",
|
||||||
|
@ -3913,6 +3954,12 @@ version = "0.1.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0"
|
checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "str-buf"
|
||||||
|
version = "1.0.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d44a3643b4ff9caf57abcee9c2c621d6c03d9135e0d8b589bd9afb5992cb176a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "str_stack"
|
name = "str_stack"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
@ -4061,18 +4108,18 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thiserror"
|
name = "thiserror"
|
||||||
version = "1.0.24"
|
version = "1.0.25"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e"
|
checksum = "fa6f76457f59514c7eeb4e59d891395fab0b2fd1d40723ae737d64153392e9c6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"thiserror-impl",
|
"thiserror-impl",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thiserror-impl"
|
name = "thiserror-impl"
|
||||||
version = "1.0.24"
|
version = "1.0.25"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0"
|
checksum = "8a36768c0fbf1bb15eca10defa29526bda730a2376c2ab4393ccfa16fb1a318d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -4515,6 +4562,12 @@ version = "1.13.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06"
|
checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ucd-trie"
|
||||||
|
version = "0.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-bidi"
|
name = "unicode-bidi"
|
||||||
version = "0.3.5"
|
version = "0.3.5"
|
||||||
|
@ -4582,15 +4635,15 @@ version = "0.8.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
|
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom 0.2.2",
|
"getrandom 0.2.3",
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "vcpkg"
|
name = "vcpkg"
|
||||||
version = "0.2.12"
|
version = "0.2.13"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cbdbff6266a24120518560b5dc983096efb98462e51d0d68169895b237be3e5d"
|
checksum = "025ce40a007e1907e58d5bc1a594def78e5573bb0b1160bc389634e8f12e4faa"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "vec_map"
|
name = "vec_map"
|
||||||
|
@ -4835,18 +4888,18 @@ checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zstd"
|
name = "zstd"
|
||||||
version = "0.7.0+zstd.1.4.9"
|
version = "0.8.1+zstd.1.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9428752481d8372e15b1bf779ea518a179ad6c771cca2d2c60e4fbff3cc2cd52"
|
checksum = "357d6bb1bd9c6f6a55a5a15c74d01260b272f724dc60cc829b86ebd2172ac5ef"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"zstd-safe",
|
"zstd-safe",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zstd-safe"
|
name = "zstd-safe"
|
||||||
version = "3.1.0+zstd.1.4.9"
|
version = "4.1.0+zstd.1.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5aa1926623ad7fe406e090555387daf73db555b948134b4d73eac5eb08fb666d"
|
checksum = "d30375f78e185ca4c91930f42ea2c0162f9aa29737032501f93b79266d985ae7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"zstd-sys",
|
"zstd-sys",
|
||||||
|
@ -4854,9 +4907,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zstd-sys"
|
name = "zstd-sys"
|
||||||
version = "1.5.0+zstd.1.4.9"
|
version = "1.6.0+zstd.1.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4e6c094340240369025fc6b731b054ee2a834328fa584310ac96aa4baebdc465"
|
checksum = "2141bed8922b427761470e6bbfeff255da94fa20b0bbeab0d9297fcaf71e3aa7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"libc",
|
"libc",
|
||||||
|
|
|
@ -8,8 +8,6 @@ readme = "README.md"
|
||||||
|
|
||||||
[workspace] # In alphabetical order
|
[workspace] # In alphabetical order
|
||||||
members = [
|
members = [
|
||||||
"arrow",
|
|
||||||
"arrow_flight",
|
|
||||||
"arrow_util",
|
"arrow_util",
|
||||||
"data_types",
|
"data_types",
|
||||||
"datafusion",
|
"datafusion",
|
||||||
|
@ -30,7 +28,6 @@ members = [
|
||||||
"observability_deps",
|
"observability_deps",
|
||||||
"packers",
|
"packers",
|
||||||
"panic_logging",
|
"panic_logging",
|
||||||
"parquet",
|
|
||||||
"query",
|
"query",
|
||||||
"read_buffer",
|
"read_buffer",
|
||||||
"server",
|
"server",
|
||||||
|
@ -47,8 +44,6 @@ debug = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# Workspace dependencies, in alphabetical order
|
# Workspace dependencies, in alphabetical order
|
||||||
arrow = { path = "arrow" }
|
|
||||||
arrow_flight = { path = "arrow_flight" }
|
|
||||||
datafusion = { path = "datafusion" }
|
datafusion = { path = "datafusion" }
|
||||||
data_types = { path = "data_types" }
|
data_types = { path = "data_types" }
|
||||||
generated_types = { path = "generated_types" }
|
generated_types = { path = "generated_types" }
|
||||||
|
@ -66,7 +61,6 @@ object_store = { path = "object_store" }
|
||||||
observability_deps = { path = "observability_deps" }
|
observability_deps = { path = "observability_deps" }
|
||||||
packers = { path = "packers" }
|
packers = { path = "packers" }
|
||||||
panic_logging = { path = "panic_logging" }
|
panic_logging = { path = "panic_logging" }
|
||||||
parquet = { path = "parquet" }
|
|
||||||
query = { path = "query" }
|
query = { path = "query" }
|
||||||
read_buffer = { path = "read_buffer" }
|
read_buffer = { path = "read_buffer" }
|
||||||
server = { path = "server" }
|
server = { path = "server" }
|
||||||
|
@ -74,6 +68,8 @@ tracker = { path = "tracker" }
|
||||||
write_buffer = { path = "write_buffer" }
|
write_buffer = { path = "write_buffer" }
|
||||||
|
|
||||||
# Crates.io dependencies, in alphabetical order
|
# Crates.io dependencies, in alphabetical order
|
||||||
|
arrow = "4.0"
|
||||||
|
arrow-flight = "4.0"
|
||||||
byteorder = "1.3.4"
|
byteorder = "1.3.4"
|
||||||
bytes = "1.0"
|
bytes = "1.0"
|
||||||
chrono = "0.4"
|
chrono = "0.4"
|
||||||
|
@ -90,6 +86,7 @@ opentelemetry-jaeger = { version = "0.12", features = ["tokio"] }
|
||||||
opentelemetry-otlp = "0.6"
|
opentelemetry-otlp = "0.6"
|
||||||
parking_lot = "0.11.1"
|
parking_lot = "0.11.1"
|
||||||
itertools = "0.9.0"
|
itertools = "0.9.0"
|
||||||
|
parquet = "4.0"
|
||||||
# used by arrow/datafusion anyway
|
# used by arrow/datafusion anyway
|
||||||
prettytable-rs = "0.8"
|
prettytable-rs = "0.8"
|
||||||
pprof = { version = "^0.4", default-features = false, features = ["flamegraph", "protobuf"] }
|
pprof = { version = "^0.4", default-features = false, features = ["flamegraph", "protobuf"] }
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "arrow"
|
|
||||||
version = "0.1.0"
|
|
||||||
authors = ["Andrew Lamb <andrew@nerdnetworks.org>"]
|
|
||||||
edition = "2018"
|
|
||||||
description = "Re-exports arrow at a specific version"
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
|
|
||||||
# Rename to workaround doctest bug
|
|
||||||
upstream = { git = "https://github.com/apache/arrow-rs", rev = "8226219fe7104f6c8a2740806f96f02c960d991c", package="arrow", features = ["prettyprint"]}
|
|
|
@ -1 +0,0 @@
|
||||||
pub use upstream::*;
|
|
|
@ -1,11 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "arrow_flight"
|
|
||||||
version = "0.1.0"
|
|
||||||
authors = ["Andrew Lamb <andrew@nerdnetworks.org>"]
|
|
||||||
edition = "2018"
|
|
||||||
description = "Re-exports arrow-flight at a specific version"
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
|
|
||||||
# Rename to workaround doctest bug
|
|
||||||
upstream = { git = "https://github.com/apache/arrow-rs", rev = "8226219fe7104f6c8a2740806f96f02c960d991c", package = "arrow-flight" }
|
|
|
@ -1 +0,0 @@
|
||||||
pub use upstream::*;
|
|
|
@ -7,7 +7,7 @@ description = "Apache Arrow utilities"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|
||||||
arrow = { path = "../arrow" }
|
arrow = "4.0"
|
||||||
ahash = "0.7.2"
|
ahash = "0.7.2"
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
futures = "0.3"
|
futures = "0.3"
|
||||||
|
|
|
@ -9,4 +9,4 @@ description = "Re-exports datafusion at a specific version"
|
||||||
|
|
||||||
# Rename to workaround doctest bug
|
# Rename to workaround doctest bug
|
||||||
# Turn off optional datafusion features (function packages)
|
# Turn off optional datafusion features (function packages)
|
||||||
upstream = { git = "https://github.com/apache/arrow-datafusion.git", rev = "9cf32cf2cda8472b87130142c4eee1126d4d9cbe", default-features = false, package = "datafusion" }
|
upstream = { git = "https://github.com/apache/arrow-datafusion.git", rev = "7359e4b4df0836b8de970d551c6eeae22d1cc810", default-features = false, package = "datafusion" }
|
||||||
|
|
|
@ -5,13 +5,13 @@ authors = ["Dom Dwyer <dom@itsallbroken.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
flight = ["arrow", "arrow_flight", "serde/derive", "serde_json", "futures-util"]
|
flight = ["arrow", "arrow-flight", "serde/derive", "serde_json", "futures-util"]
|
||||||
format = ["arrow"]
|
format = ["arrow"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# Workspace dependencies, in alphabetical order
|
# Workspace dependencies, in alphabetical order
|
||||||
arrow = { path = "../arrow", optional = true }
|
arrow = { version = "4.0", optional = true }
|
||||||
arrow_flight = { path = "../arrow_flight", optional = true}
|
arrow-flight = { version = "4.0", optional = true}
|
||||||
generated_types = { path = "../generated_types" }
|
generated_types = { path = "../generated_types" }
|
||||||
|
|
||||||
# Crates.io dependencies, in alphabetical order
|
# Crates.io dependencies, in alphabetical order
|
||||||
|
|
|
@ -5,12 +5,12 @@ authors = ["Andrew Lamb <andrew@nerdnetworks.org>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies] # In alphabetical order
|
[dependencies] # In alphabetical order
|
||||||
arrow = { path = "../arrow" }
|
arrow = "4.0"
|
||||||
influxdb_line_protocol = { path = "../influxdb_line_protocol" }
|
influxdb_line_protocol = { path = "../influxdb_line_protocol" }
|
||||||
influxdb_tsm = { path = "../influxdb_tsm" }
|
influxdb_tsm = { path = "../influxdb_tsm" }
|
||||||
internal_types = { path = "../internal_types" }
|
internal_types = { path = "../internal_types" }
|
||||||
packers = { path = "../packers" }
|
packers = { path = "../packers" }
|
||||||
parquet = { path = "../parquet" }
|
parquet = "4.0"
|
||||||
snafu = "0.6.2"
|
snafu = "0.6.2"
|
||||||
observability_deps = { path = "../observability_deps" }
|
observability_deps = { path = "../observability_deps" }
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ description = "InfluxDB IOx internal types, shared between IOx instances"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
arrow = { path = "../arrow" }
|
arrow = "4.0"
|
||||||
snafu = "0.6"
|
snafu = "0.6"
|
||||||
observability_deps = { path = "../observability_deps" }
|
observability_deps = { path = "../observability_deps" }
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ authors = ["Edd Robinson <me@edd.io>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies] # In alphabetical order
|
[dependencies] # In alphabetical order
|
||||||
arrow = { path = "../arrow" }
|
arrow = "4.0"
|
||||||
chrono = "0.4"
|
chrono = "0.4"
|
||||||
croaring = "0.4.5"
|
croaring = "0.4.5"
|
||||||
crossbeam = "0.8"
|
crossbeam = "0.8"
|
||||||
|
@ -14,7 +14,7 @@ human_format = "1.0.3"
|
||||||
packers = { path = "../packers" }
|
packers = { path = "../packers" }
|
||||||
snafu = "0.6.8"
|
snafu = "0.6.8"
|
||||||
observability_deps = { path = "../observability_deps" }
|
observability_deps = { path = "../observability_deps" }
|
||||||
parquet = { path = "../parquet" }
|
parquet = "4.0"
|
||||||
|
|
||||||
[dev-dependencies] # In alphabetical order
|
[dev-dependencies] # In alphabetical order
|
||||||
criterion = "0.3"
|
criterion = "0.3"
|
||||||
|
|
|
@ -14,7 +14,7 @@ edition = "2018"
|
||||||
# 2. Keep change/compile/link time down during development when working on just this crate
|
# 2. Keep change/compile/link time down during development when working on just this crate
|
||||||
|
|
||||||
[dependencies] # In alphabetical order
|
[dependencies] # In alphabetical order
|
||||||
arrow = { path = "../arrow" }
|
arrow = { version = "4.0" }
|
||||||
arrow_util = { path = "../arrow_util" }
|
arrow_util = { path = "../arrow_util" }
|
||||||
async-trait = "0.1"
|
async-trait = "0.1"
|
||||||
data_types = { path = "../data_types" }
|
data_types = { path = "../data_types" }
|
||||||
|
@ -29,7 +29,6 @@ tokio = { version = "1.0", features = ["macros"] }
|
||||||
tracker = { path = "../tracker" }
|
tracker = { path = "../tracker" }
|
||||||
|
|
||||||
[dev-dependencies] # In alphabetical order
|
[dev-dependencies] # In alphabetical order
|
||||||
arrow_util = { path = "../arrow_util" }
|
|
||||||
test_helpers = { path = "../test_helpers" }
|
test_helpers = { path = "../test_helpers" }
|
||||||
criterion = "0.3"
|
criterion = "0.3"
|
||||||
flate2 = "1.0.20"
|
flate2 = "1.0.20"
|
||||||
|
|
|
@ -5,13 +5,13 @@ authors = ["Andrew Lamb <andrew@nerdnetworks.org>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies] # In alphabetical order
|
[dependencies] # In alphabetical order
|
||||||
arrow = { path = "../arrow" }
|
arrow = "4.0"
|
||||||
human_format = "1.0.3"
|
human_format = "1.0.3"
|
||||||
influxdb_tsm = { path = "../influxdb_tsm" }
|
influxdb_tsm = { path = "../influxdb_tsm" }
|
||||||
internal_types = { path = "../internal_types" }
|
internal_types = { path = "../internal_types" }
|
||||||
snafu = "0.6.2"
|
snafu = "0.6.2"
|
||||||
observability_deps = { path = "../observability_deps" }
|
observability_deps = { path = "../observability_deps" }
|
||||||
parquet = { path = "../parquet" }
|
parquet = "4.0"
|
||||||
|
|
||||||
[dev-dependencies] # In alphabetical order
|
[dev-dependencies] # In alphabetical order
|
||||||
rand = "0.8.3"
|
rand = "0.8.3"
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "parquet"
|
|
||||||
version = "0.1.0"
|
|
||||||
authors = ["Andrew Lamb <andrew@nerdnetworks.org>"]
|
|
||||||
edition = "2018"
|
|
||||||
description = "Re-exports the parquet crate at a specific version"
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
|
|
||||||
# Rename to workaround doctest bug
|
|
||||||
upstream = { git = "https://github.com/apache/arrow-rs", rev = "8226219fe7104f6c8a2740806f96f02c960d991c", default-features = false, features = ["arrow", "snap", "brotli", "flate2", "lz4", "zstd"], package = "parquet" }
|
|
|
@ -1,4 +0,0 @@
|
||||||
#![deny(broken_intra_doc_links, rust_2018_idioms)]
|
|
||||||
#![allow(clippy::clone_on_ref_ptr)]
|
|
||||||
|
|
||||||
pub use upstream::*;
|
|
|
@ -5,7 +5,7 @@ authors = ["Nga Tran <nga-tran@live.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies] # In alphabetical order
|
[dependencies] # In alphabetical order
|
||||||
arrow = { path = "../arrow" }
|
arrow = "4.0"
|
||||||
bytes = "1.0"
|
bytes = "1.0"
|
||||||
data_types = { path = "../data_types" }
|
data_types = { path = "../data_types" }
|
||||||
datafusion = { path = "../datafusion" }
|
datafusion = { path = "../datafusion" }
|
||||||
|
@ -18,7 +18,7 @@ object_store = {path = "../object_store"}
|
||||||
observability_deps = { path = "../observability_deps" }
|
observability_deps = { path = "../observability_deps" }
|
||||||
# Turn off the "arrow" feature; it currently has a bug that causes the crate to rebuild every time
|
# Turn off the "arrow" feature; it currently has a bug that causes the crate to rebuild every time
|
||||||
# and we're not currently using it anyway
|
# and we're not currently using it anyway
|
||||||
parquet = { path = "../parquet" }
|
parquet = "4.0"
|
||||||
parquet-format = "2.6"
|
parquet-format = "2.6"
|
||||||
parking_lot = "0.11.1"
|
parking_lot = "0.11.1"
|
||||||
prost = "0.7"
|
prost = "0.7"
|
||||||
|
|
|
@ -77,10 +77,9 @@ impl Chunk {
|
||||||
file_location: Path,
|
file_location: Path,
|
||||||
store: Arc<ObjectStore>,
|
store: Arc<ObjectStore>,
|
||||||
schema: Schema,
|
schema: Schema,
|
||||||
range: Option<TimestampRange>,
|
|
||||||
metrics: ChunkMetrics,
|
metrics: ChunkMetrics,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let table = Table::new(table_summary, file_location, store, schema, range);
|
let table = Table::new(table_summary, file_location, store, schema);
|
||||||
|
|
||||||
let mut chunk = Self {
|
let mut chunk = Self {
|
||||||
partition_key: part_key.into(),
|
partition_key: part_key.into(),
|
||||||
|
@ -130,11 +129,6 @@ impl Chunk {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return the timestamp range of the table
|
|
||||||
pub fn timestamp_range(&self) -> Option<TimestampRange> {
|
|
||||||
self.table.timestamp_range()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return all tables of this chunk whose timestamp overlaps with the give one
|
// Return all tables of this chunk whose timestamp overlaps with the give one
|
||||||
pub fn table_names(
|
pub fn table_names(
|
||||||
&self,
|
&self,
|
||||||
|
|
|
@ -88,9 +88,8 @@
|
||||||
//! [Thrift Compact Protocol]: https://github.com/apache/thrift/blob/master/doc/specs/thrift-compact-protocol.md
|
//! [Thrift Compact Protocol]: https://github.com/apache/thrift/blob/master/doc/specs/thrift-compact-protocol.md
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use data_types::{
|
use data_types::partition_metadata::{
|
||||||
partition_metadata::{ColumnSummary, InfluxDbType, StatValues, Statistics, TableSummary},
|
ColumnSummary, InfluxDbType, StatValues, Statistics, TableSummary,
|
||||||
timestamp::TimestampRange,
|
|
||||||
};
|
};
|
||||||
use internal_types::schema::{InfluxColumnType, InfluxFieldType, Schema};
|
use internal_types::schema::{InfluxColumnType, InfluxFieldType, Schema};
|
||||||
use parquet::{
|
use parquet::{
|
||||||
|
@ -193,44 +192,30 @@ pub fn read_statistics_from_parquet_metadata(
|
||||||
parquet_md: &ParquetMetaData,
|
parquet_md: &ParquetMetaData,
|
||||||
schema: &Schema,
|
schema: &Schema,
|
||||||
table_name: &str,
|
table_name: &str,
|
||||||
) -> Result<(TableSummary, Option<TimestampRange>)> {
|
) -> Result<TableSummary> {
|
||||||
let mut table_summary_agg: Option<TableSummary> = None;
|
let mut table_summary_agg: Option<TableSummary> = None;
|
||||||
let mut timestamp_range_agg = None;
|
|
||||||
|
|
||||||
for (row_group_idx, row_group) in parquet_md.row_groups().iter().enumerate() {
|
for (row_group_idx, row_group) in parquet_md.row_groups().iter().enumerate() {
|
||||||
let (table_summary, timestamp_range) =
|
let table_summary =
|
||||||
read_statistics_from_parquet_row_group(row_group, row_group_idx, schema, table_name)?;
|
read_statistics_from_parquet_row_group(row_group, row_group_idx, schema, table_name)?;
|
||||||
|
|
||||||
match table_summary_agg.as_mut() {
|
match table_summary_agg.as_mut() {
|
||||||
Some(existing) => existing.update_from(&table_summary),
|
Some(existing) => existing.update_from(&table_summary),
|
||||||
None => table_summary_agg = Some(table_summary),
|
None => table_summary_agg = Some(table_summary),
|
||||||
}
|
}
|
||||||
|
|
||||||
timestamp_range_agg = match (timestamp_range_agg, timestamp_range) {
|
|
||||||
(Some(a), Some(b)) => Some(TimestampRange {
|
|
||||||
start: a.start.min(b.start),
|
|
||||||
end: a.end.max(b.end),
|
|
||||||
}),
|
|
||||||
(Some(a), None) | (None, Some(a)) => Some(a),
|
|
||||||
(None, None) => None,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
match table_summary_agg {
|
table_summary_agg.context(NoRowGroup)
|
||||||
Some(table_summary) => Ok((table_summary, timestamp_range_agg)),
|
|
||||||
None => Err(Error::NoRowGroup {}),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Read IOx statistics (including timestamp range) from parquet row group metadata.
|
/// Read IOx statistics from parquet row group metadata.
|
||||||
fn read_statistics_from_parquet_row_group(
|
fn read_statistics_from_parquet_row_group(
|
||||||
row_group: &ParquetRowGroupMetaData,
|
row_group: &ParquetRowGroupMetaData,
|
||||||
row_group_idx: usize,
|
row_group_idx: usize,
|
||||||
schema: &Schema,
|
schema: &Schema,
|
||||||
table_name: &str,
|
table_name: &str,
|
||||||
) -> Result<(TableSummary, Option<TimestampRange>)> {
|
) -> Result<TableSummary> {
|
||||||
let mut column_summaries = vec![];
|
let mut column_summaries = vec![];
|
||||||
let mut timestamp_range = None;
|
|
||||||
|
|
||||||
for ((iox_type, field), column_chunk_metadata) in schema.iter().zip(row_group.columns()) {
|
for ((iox_type, field), column_chunk_metadata) in schema.iter().zip(row_group.columns()) {
|
||||||
if let Some(iox_type) = iox_type {
|
if let Some(iox_type) = iox_type {
|
||||||
|
@ -252,7 +237,7 @@ fn read_statistics_from_parquet_row_group(
|
||||||
let count =
|
let count =
|
||||||
(row_group.num_rows().max(0) as u64).saturating_sub(parquet_stats.null_count());
|
(row_group.num_rows().max(0) as u64).saturating_sub(parquet_stats.null_count());
|
||||||
|
|
||||||
let (stats, maybe_tsrange) = extract_iox_statistics(
|
let stats = extract_iox_statistics(
|
||||||
parquet_stats,
|
parquet_stats,
|
||||||
iox_type,
|
iox_type,
|
||||||
count,
|
count,
|
||||||
|
@ -268,10 +253,6 @@ fn read_statistics_from_parquet_row_group(
|
||||||
}),
|
}),
|
||||||
stats,
|
stats,
|
||||||
});
|
});
|
||||||
if let Some(range) = maybe_tsrange {
|
|
||||||
assert!(timestamp_range.is_none());
|
|
||||||
timestamp_range = Some(range);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -280,97 +261,83 @@ fn read_statistics_from_parquet_row_group(
|
||||||
columns: column_summaries,
|
columns: column_summaries,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok((table_summary, timestamp_range))
|
Ok(table_summary)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extract IOx statistics from parquet statistics.
|
/// Extract IOx statistics from parquet statistics.
|
||||||
///
|
///
|
||||||
/// This is required because upstream does not have a mapper from parquet statistics back to arrow or Rust native types.
|
/// This is required because upstream does not have a mapper from
|
||||||
|
/// parquet statistics back to arrow or Rust native types.
|
||||||
fn extract_iox_statistics(
|
fn extract_iox_statistics(
|
||||||
parquet_stats: &ParquetStatistics,
|
parquet_stats: &ParquetStatistics,
|
||||||
iox_type: InfluxColumnType,
|
iox_type: InfluxColumnType,
|
||||||
count: u64,
|
count: u64,
|
||||||
row_group_idx: usize,
|
row_group_idx: usize,
|
||||||
column_name: &str,
|
column_name: &str,
|
||||||
) -> Result<(Statistics, Option<TimestampRange>)> {
|
) -> Result<Statistics> {
|
||||||
match (parquet_stats, iox_type) {
|
match (parquet_stats, iox_type) {
|
||||||
(ParquetStatistics::Boolean(stats), InfluxColumnType::Field(InfluxFieldType::Boolean)) => {
|
(ParquetStatistics::Boolean(stats), InfluxColumnType::Field(InfluxFieldType::Boolean)) => {
|
||||||
Ok((
|
Ok(Statistics::Bool(StatValues {
|
||||||
Statistics::Bool(StatValues {
|
|
||||||
min: Some(*stats.min()),
|
|
||||||
max: Some(*stats.max()),
|
|
||||||
count,
|
|
||||||
}),
|
|
||||||
None,
|
|
||||||
))
|
|
||||||
}
|
|
||||||
(ParquetStatistics::Int64(stats), InfluxColumnType::Field(InfluxFieldType::Integer)) => {
|
|
||||||
Ok((
|
|
||||||
Statistics::I64(StatValues {
|
|
||||||
min: Some(*stats.min()),
|
|
||||||
max: Some(*stats.max()),
|
|
||||||
count,
|
|
||||||
}),
|
|
||||||
None,
|
|
||||||
))
|
|
||||||
}
|
|
||||||
(ParquetStatistics::Int64(stats), InfluxColumnType::Field(InfluxFieldType::UInteger)) => {
|
|
||||||
// TODO: that's very likely wrong, but blocked by https://github.com/apache/arrow-rs/issues/254
|
|
||||||
Ok((
|
|
||||||
Statistics::U64(StatValues {
|
|
||||||
min: Some(*stats.min() as u64),
|
|
||||||
max: Some(*stats.max() as u64),
|
|
||||||
count,
|
|
||||||
}),
|
|
||||||
None,
|
|
||||||
))
|
|
||||||
}
|
|
||||||
(ParquetStatistics::Double(stats), InfluxColumnType::Field(InfluxFieldType::Float)) => {
|
|
||||||
Ok((
|
|
||||||
Statistics::F64(StatValues {
|
|
||||||
min: Some(*stats.min()),
|
|
||||||
max: Some(*stats.max()),
|
|
||||||
count,
|
|
||||||
}),
|
|
||||||
None,
|
|
||||||
))
|
|
||||||
}
|
|
||||||
(ParquetStatistics::Int64(stats), InfluxColumnType::Timestamp) => Ok((
|
|
||||||
Statistics::I64(StatValues {
|
|
||||||
min: Some(*stats.min()),
|
min: Some(*stats.min()),
|
||||||
max: Some(*stats.max()),
|
max: Some(*stats.max()),
|
||||||
count,
|
count,
|
||||||
}),
|
}))
|
||||||
Some(TimestampRange::new(*stats.min(), *stats.max())),
|
}
|
||||||
)),
|
(ParquetStatistics::Int64(stats), InfluxColumnType::Field(InfluxFieldType::Integer)) => {
|
||||||
|
Ok(Statistics::I64(StatValues {
|
||||||
|
min: Some(*stats.min()),
|
||||||
|
max: Some(*stats.max()),
|
||||||
|
count,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
(ParquetStatistics::Int64(stats), InfluxColumnType::Field(InfluxFieldType::UInteger)) => {
|
||||||
|
// TODO: Likely incorrect for large values until
|
||||||
|
// https://github.com/apache/arrow-rs/issues/254
|
||||||
|
Ok(Statistics::U64(StatValues {
|
||||||
|
min: Some(*stats.min() as u64),
|
||||||
|
max: Some(*stats.max() as u64),
|
||||||
|
count,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
(ParquetStatistics::Double(stats), InfluxColumnType::Field(InfluxFieldType::Float)) => {
|
||||||
|
Ok(Statistics::F64(StatValues {
|
||||||
|
min: Some(*stats.min()),
|
||||||
|
max: Some(*stats.max()),
|
||||||
|
count,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
(ParquetStatistics::Int64(stats), InfluxColumnType::Timestamp) => {
|
||||||
|
Ok(Statistics::I64(StatValues {
|
||||||
|
min: Some(*stats.min()),
|
||||||
|
max: Some(*stats.max()),
|
||||||
|
count,
|
||||||
|
}))
|
||||||
|
}
|
||||||
(ParquetStatistics::ByteArray(stats), InfluxColumnType::Tag)
|
(ParquetStatistics::ByteArray(stats), InfluxColumnType::Tag)
|
||||||
| (ParquetStatistics::ByteArray(stats), InfluxColumnType::Field(InfluxFieldType::String)) => {
|
| (ParquetStatistics::ByteArray(stats), InfluxColumnType::Field(InfluxFieldType::String)) => {
|
||||||
Ok((
|
Ok(Statistics::String(StatValues {
|
||||||
Statistics::String(StatValues {
|
min: Some(
|
||||||
min: Some(
|
stats
|
||||||
stats
|
.min()
|
||||||
.min()
|
.as_utf8()
|
||||||
.as_utf8()
|
.context(StatisticsUtf8Error {
|
||||||
.context(StatisticsUtf8Error {
|
row_group: row_group_idx,
|
||||||
row_group: row_group_idx,
|
column: column_name.to_string(),
|
||||||
column: column_name.to_string(),
|
})?
|
||||||
})?
|
.to_string(),
|
||||||
.to_string(),
|
),
|
||||||
),
|
max: Some(
|
||||||
max: Some(
|
stats
|
||||||
stats
|
.max()
|
||||||
.max()
|
.as_utf8()
|
||||||
.as_utf8()
|
.context(StatisticsUtf8Error {
|
||||||
.context(StatisticsUtf8Error {
|
row_group: row_group_idx,
|
||||||
row_group: row_group_idx,
|
column: column_name.to_string(),
|
||||||
column: column_name.to_string(),
|
})?
|
||||||
})?
|
.to_string(),
|
||||||
.to_string(),
|
),
|
||||||
),
|
count,
|
||||||
count,
|
}))
|
||||||
}),
|
|
||||||
None,
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
_ => Err(Error::StatisticsTypeMismatch {
|
_ => Err(Error::StatisticsTypeMismatch {
|
||||||
row_group: row_group_idx,
|
row_group: row_group_idx,
|
||||||
|
@ -496,13 +463,11 @@ mod tests {
|
||||||
assert_eq!(schema_actual, schema_expected);
|
assert_eq!(schema_actual, schema_expected);
|
||||||
|
|
||||||
// step 2: read back statistics
|
// step 2: read back statistics
|
||||||
let (table_summary_actual, timestamp_range_actual) =
|
let table_summary_actual =
|
||||||
read_statistics_from_parquet_metadata(&parquet_metadata, &schema_actual, &table)
|
read_statistics_from_parquet_metadata(&parquet_metadata, &schema_actual, &table)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let table_summary_expected = chunk.table_summary();
|
let table_summary_expected = chunk.table_summary();
|
||||||
let timestamp_range_expected = chunk.timestamp_range();
|
|
||||||
assert_eq!(table_summary_actual, table_summary_expected);
|
assert_eq!(table_summary_actual, table_summary_expected);
|
||||||
assert_eq!(timestamp_range_actual, timestamp_range_expected)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
@ -521,13 +486,11 @@ mod tests {
|
||||||
assert_eq!(schema_actual, schema_expected);
|
assert_eq!(schema_actual, schema_expected);
|
||||||
|
|
||||||
// step 2: read back statistics
|
// step 2: read back statistics
|
||||||
let (table_summary_actual, timestamp_range_actual) =
|
let table_summary_actual =
|
||||||
read_statistics_from_parquet_metadata(&parquet_metadata, &schema_actual, &table)
|
read_statistics_from_parquet_metadata(&parquet_metadata, &schema_actual, &table)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let table_summary_expected = chunk.table_summary();
|
let table_summary_expected = chunk.table_summary();
|
||||||
let timestamp_range_expected = chunk.timestamp_range();
|
|
||||||
assert_eq!(table_summary_actual, table_summary_expected);
|
assert_eq!(table_summary_actual, table_summary_expected);
|
||||||
assert_eq!(timestamp_range_actual, timestamp_range_expected)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|
|
@ -5,9 +5,9 @@ use arrow::{
|
||||||
error::Result as ArrowResult,
|
error::Result as ArrowResult,
|
||||||
record_batch::RecordBatch,
|
record_batch::RecordBatch,
|
||||||
};
|
};
|
||||||
use datafusion::physical_plan::{
|
use datafusion::{
|
||||||
common::SizedRecordBatchStream, parquet::RowGroupPredicateBuilder, RecordBatchStream,
|
physical_optimizer::pruning::PruningPredicateBuilder,
|
||||||
SendableRecordBatchStream,
|
physical_plan::{common::SizedRecordBatchStream, RecordBatchStream, SendableRecordBatchStream},
|
||||||
};
|
};
|
||||||
use internal_types::{schema::Schema, selection::Selection};
|
use internal_types::{schema::Schema, selection::Selection};
|
||||||
use object_store::{
|
use object_store::{
|
||||||
|
@ -20,7 +20,7 @@ use parquet::{
|
||||||
arrow_reader::ParquetFileArrowReader, parquet_to_arrow_schema, ArrowReader, ArrowWriter,
|
arrow_reader::ParquetFileArrowReader, parquet_to_arrow_schema, ArrowReader, ArrowWriter,
|
||||||
},
|
},
|
||||||
file::{
|
file::{
|
||||||
metadata::ParquetMetaData,
|
metadata::{ParquetMetaData, RowGroupMetaData},
|
||||||
reader::FileReader,
|
reader::FileReader,
|
||||||
serialized_reader::{SerializedFileReader, SliceableCursor},
|
serialized_reader::{SerializedFileReader, SliceableCursor},
|
||||||
writer::TryClone,
|
writer::TryClone,
|
||||||
|
@ -75,6 +75,11 @@ pub enum Error {
|
||||||
#[snafu(display("Error opening file: {}", source))]
|
#[snafu(display("Error opening file: {}", source))]
|
||||||
OpenFile { source: std::io::Error },
|
OpenFile { source: std::io::Error },
|
||||||
|
|
||||||
|
#[snafu(display("Error creating pruning predicate: {}", source))]
|
||||||
|
CreatingPredicate {
|
||||||
|
source: datafusion::error::DataFusionError,
|
||||||
|
},
|
||||||
|
|
||||||
#[snafu(display("Error at serialized file reader: {}", source))]
|
#[snafu(display("Error at serialized file reader: {}", source))]
|
||||||
SerializedFileReaderError {
|
SerializedFileReaderError {
|
||||||
source: parquet::errors::ParquetError,
|
source: parquet::errors::ParquetError,
|
||||||
|
@ -276,13 +281,13 @@ impl Storage {
|
||||||
pub fn predicate_builder(
|
pub fn predicate_builder(
|
||||||
predicate: &Predicate,
|
predicate: &Predicate,
|
||||||
schema: ArrowSchema,
|
schema: ArrowSchema,
|
||||||
) -> Option<RowGroupPredicateBuilder> {
|
) -> Option<PruningPredicateBuilder> {
|
||||||
if predicate.exprs.is_empty() {
|
if predicate.exprs.is_empty() {
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
// Convert to datafusion's predicate
|
// Convert to datafusion's predicate
|
||||||
let predicate = predicate.filter_expr()?;
|
let predicate = predicate.filter_expr()?;
|
||||||
Some(RowGroupPredicateBuilder::try_new(&predicate, schema).ok()?)
|
Some(PruningPredicateBuilder::try_new(&predicate, schema).ok()?)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -355,7 +360,7 @@ impl Storage {
|
||||||
path: Path,
|
path: Path,
|
||||||
store: Arc<ObjectStore>,
|
store: Arc<ObjectStore>,
|
||||||
projection: &[usize],
|
projection: &[usize],
|
||||||
predicate_builder: Option<&RowGroupPredicateBuilder>,
|
predicate_builder: Option<&PruningPredicateBuilder>,
|
||||||
batch_size: usize,
|
batch_size: usize,
|
||||||
batches: &mut Vec<Arc<RecordBatch>>,
|
batches: &mut Vec<Arc<RecordBatch>>,
|
||||||
limit: Option<usize>,
|
limit: Option<usize>,
|
||||||
|
@ -375,8 +380,13 @@ impl Storage {
|
||||||
let schema = read_schema_from_parquet_metadata(metadata)?;
|
let schema = read_schema_from_parquet_metadata(metadata)?;
|
||||||
|
|
||||||
if let Some(predicate_builder) = predicate_builder {
|
if let Some(predicate_builder) = predicate_builder {
|
||||||
let row_group_predicate =
|
let predicate_values = predicate_builder
|
||||||
predicate_builder.build_row_group_predicate(metadata.row_groups());
|
.build_pruning_predicate(metadata.row_groups())
|
||||||
|
.context(CreatingPredicate)?;
|
||||||
|
|
||||||
|
let row_group_predicate: Box<dyn Fn(&RowGroupMetaData, usize) -> bool> =
|
||||||
|
Box::new(move |_, i| predicate_values[i]);
|
||||||
|
|
||||||
reader.filter_row_groups(&row_group_predicate); //filter out
|
reader.filter_row_groups(&row_group_predicate); //filter out
|
||||||
// row group based
|
// row group based
|
||||||
// on the predicate
|
// on the predicate
|
||||||
|
|
|
@ -20,8 +20,7 @@ mod tests {
|
||||||
////////////////////
|
////////////////////
|
||||||
// Create test data which is also the expected data
|
// Create test data which is also the expected data
|
||||||
let table = "table1";
|
let table = "table1";
|
||||||
let (record_batches, schema, column_summaries, time_range, num_rows) =
|
let (record_batches, schema, column_summaries, num_rows) = make_record_batch("foo");
|
||||||
make_record_batch("foo");
|
|
||||||
let mut table_summary = TableSummary::new(table);
|
let mut table_summary = TableSummary::new(table);
|
||||||
table_summary.columns = column_summaries.clone();
|
table_summary.columns = column_summaries.clone();
|
||||||
let record_batch = record_batches[0].clone(); // Get the first one to compare key-value meta data that would be the same for all batches
|
let record_batch = record_batches[0].clone(); // Get the first one to compare key-value meta data that would be the same for all batches
|
||||||
|
@ -40,7 +39,6 @@ mod tests {
|
||||||
schema.clone(),
|
schema.clone(),
|
||||||
table,
|
table,
|
||||||
column_summaries.clone(),
|
column_summaries.clone(),
|
||||||
time_range,
|
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
@ -61,11 +59,10 @@ mod tests {
|
||||||
);
|
);
|
||||||
|
|
||||||
// 2. Check statistics
|
// 2. Check statistics
|
||||||
let (table_summary_actual, timestamp_range_actual) =
|
let table_summary_actual =
|
||||||
read_statistics_from_parquet_metadata(&parquet_metadata, &schema_actual, &table)
|
read_statistics_from_parquet_metadata(&parquet_metadata, &schema_actual, &table)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(table_summary_actual, table_summary);
|
assert_eq!(table_summary_actual, table_summary);
|
||||||
assert_eq!(timestamp_range_actual, Some(time_range));
|
|
||||||
|
|
||||||
// 3. Check data
|
// 3. Check data
|
||||||
// Note that the read_data_from_parquet_data function fixes the row-group/batches' level metadata bug in arrow
|
// Note that the read_data_from_parquet_data function fixes the row-group/batches' level metadata bug in arrow
|
||||||
|
|
|
@ -2,9 +2,15 @@ use snafu::{ResultExt, Snafu};
|
||||||
use std::{collections::BTreeSet, mem, sync::Arc};
|
use std::{collections::BTreeSet, mem, sync::Arc};
|
||||||
|
|
||||||
use crate::storage::{self, Storage};
|
use crate::storage::{self, Storage};
|
||||||
use data_types::{partition_metadata::TableSummary, timestamp::TimestampRange};
|
use data_types::{
|
||||||
|
partition_metadata::{Statistics, TableSummary},
|
||||||
|
timestamp::TimestampRange,
|
||||||
|
};
|
||||||
use datafusion::physical_plan::SendableRecordBatchStream;
|
use datafusion::physical_plan::SendableRecordBatchStream;
|
||||||
use internal_types::{schema::Schema, selection::Selection};
|
use internal_types::{
|
||||||
|
schema::{Schema, TIME_COLUMN_NAME},
|
||||||
|
selection::Selection,
|
||||||
|
};
|
||||||
use object_store::{path::Path, ObjectStore};
|
use object_store::{path::Path, ObjectStore};
|
||||||
use query::predicate::Predicate;
|
use query::predicate::Predicate;
|
||||||
|
|
||||||
|
@ -38,24 +44,26 @@ pub struct Table {
|
||||||
/// Schema that goes with this table's parquet file
|
/// Schema that goes with this table's parquet file
|
||||||
table_schema: Schema,
|
table_schema: Schema,
|
||||||
|
|
||||||
/// Timestamp rang of this table's parquet file
|
/// Timestamp range of this table's parquet file
|
||||||
|
/// (extracted from TableSummary)
|
||||||
timestamp_range: Option<TimestampRange>,
|
timestamp_range: Option<TimestampRange>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Table {
|
impl Table {
|
||||||
pub fn new(
|
pub fn new(
|
||||||
meta: TableSummary,
|
table_summary: TableSummary,
|
||||||
path: Path,
|
path: Path,
|
||||||
store: Arc<ObjectStore>,
|
store: Arc<ObjectStore>,
|
||||||
schema: Schema,
|
schema: Schema,
|
||||||
range: Option<TimestampRange>,
|
|
||||||
) -> Self {
|
) -> Self {
|
||||||
|
let timestamp_range = extract_range(&table_summary);
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
table_summary: meta,
|
table_summary,
|
||||||
object_store_path: path,
|
object_store_path: path,
|
||||||
object_store: store,
|
object_store: store,
|
||||||
table_schema: schema,
|
table_schema: schema,
|
||||||
timestamp_range: range,
|
timestamp_range,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,11 +104,6 @@ impl Table {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return timestamp range of this table
|
|
||||||
pub fn timestamp_range(&self) -> Option<TimestampRange> {
|
|
||||||
self.timestamp_range
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if 2 time ranges overlap
|
// Check if 2 time ranges overlap
|
||||||
pub fn matches_predicate(&self, timestamp_range: &Option<TimestampRange>) -> bool {
|
pub fn matches_predicate(&self, timestamp_range: &Option<TimestampRange>) -> bool {
|
||||||
match (self.timestamp_range, timestamp_range) {
|
match (self.timestamp_range, timestamp_range) {
|
||||||
|
@ -152,3 +155,18 @@ impl Table {
|
||||||
self.table_summary.columns[0].count() as usize
|
self.table_summary.columns[0].count() as usize
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Extracts min/max values of the timestamp column, from the TableSummary, if possible
|
||||||
|
fn extract_range(table_summary: &TableSummary) -> Option<TimestampRange> {
|
||||||
|
table_summary
|
||||||
|
.column(TIME_COLUMN_NAME)
|
||||||
|
.map(|c| {
|
||||||
|
if let Statistics::I64(s) = &c.stats {
|
||||||
|
if let (Some(min), Some(max)) = (s.min, s.max) {
|
||||||
|
return Some(TimestampRange::new(min, max));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None
|
||||||
|
})
|
||||||
|
.flatten()
|
||||||
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ use datafusion::physical_plan::SendableRecordBatchStream;
|
||||||
use data_types::{
|
use data_types::{
|
||||||
partition_metadata::{ColumnSummary, InfluxDbType, StatValues, Statistics, TableSummary},
|
partition_metadata::{ColumnSummary, InfluxDbType, StatValues, Statistics, TableSummary},
|
||||||
server_id::ServerId,
|
server_id::ServerId,
|
||||||
timestamp::TimestampRange,
|
|
||||||
};
|
};
|
||||||
use datafusion_util::MemoryStream;
|
use datafusion_util::MemoryStream;
|
||||||
use futures::TryStreamExt;
|
use futures::TryStreamExt;
|
||||||
|
@ -93,46 +92,20 @@ pub async fn make_chunk_given_record_batch(
|
||||||
schema: Schema,
|
schema: Schema,
|
||||||
table: &str,
|
table: &str,
|
||||||
column_summaries: Vec<ColumnSummary>,
|
column_summaries: Vec<ColumnSummary>,
|
||||||
time_range: TimestampRange,
|
|
||||||
) -> Chunk {
|
) -> Chunk {
|
||||||
make_chunk_common(
|
make_chunk_common(store, record_batches, schema, table, column_summaries).await
|
||||||
store,
|
|
||||||
record_batches,
|
|
||||||
schema,
|
|
||||||
table,
|
|
||||||
column_summaries,
|
|
||||||
time_range,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Same as [`make_chunk`] but parquet file does not contain any row group.
|
/// Same as [`make_chunk`] but parquet file does not contain any row group.
|
||||||
pub async fn make_chunk(store: Arc<ObjectStore>, column_prefix: &str) -> Chunk {
|
pub async fn make_chunk(store: Arc<ObjectStore>, column_prefix: &str) -> Chunk {
|
||||||
let (record_batches, schema, column_summaries, time_range, _num_rows) =
|
let (record_batches, schema, column_summaries, _num_rows) = make_record_batch(column_prefix);
|
||||||
make_record_batch(column_prefix);
|
make_chunk_common(store, record_batches, schema, "table1", column_summaries).await
|
||||||
make_chunk_common(
|
|
||||||
store,
|
|
||||||
record_batches,
|
|
||||||
schema,
|
|
||||||
"table1",
|
|
||||||
column_summaries,
|
|
||||||
time_range,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Same as [`make_chunk`] but parquet file does not contain any row group.
|
/// Same as [`make_chunk`] but parquet file does not contain any row group.
|
||||||
pub async fn make_chunk_no_row_group(store: Arc<ObjectStore>, column_prefix: &str) -> Chunk {
|
pub async fn make_chunk_no_row_group(store: Arc<ObjectStore>, column_prefix: &str) -> Chunk {
|
||||||
let (_, schema, column_summaries, time_range, _num_rows) = make_record_batch(column_prefix);
|
let (_, schema, column_summaries, _num_rows) = make_record_batch(column_prefix);
|
||||||
make_chunk_common(
|
make_chunk_common(store, vec![], schema, "table1", column_summaries).await
|
||||||
store,
|
|
||||||
vec![],
|
|
||||||
schema,
|
|
||||||
"table1",
|
|
||||||
column_summaries,
|
|
||||||
time_range,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Common code for all [`make_chunk`] and [`make_chunk_no_row_group`].
|
/// Common code for all [`make_chunk`] and [`make_chunk_no_row_group`].
|
||||||
|
@ -144,7 +117,6 @@ async fn make_chunk_common(
|
||||||
schema: Schema,
|
schema: Schema,
|
||||||
table: &str,
|
table: &str,
|
||||||
column_summaries: Vec<ColumnSummary>,
|
column_summaries: Vec<ColumnSummary>,
|
||||||
time_range: TimestampRange,
|
|
||||||
) -> Chunk {
|
) -> Chunk {
|
||||||
let server_id = ServerId::new(NonZeroU32::new(1).unwrap());
|
let server_id = ServerId::new(NonZeroU32::new(1).unwrap());
|
||||||
let db_name = "db1";
|
let db_name = "db1";
|
||||||
|
@ -180,7 +152,6 @@ async fn make_chunk_common(
|
||||||
path,
|
path,
|
||||||
Arc::clone(&store),
|
Arc::clone(&store),
|
||||||
schema,
|
schema,
|
||||||
Some(time_range),
|
|
||||||
ChunkMetrics::new_unregistered(),
|
ChunkMetrics::new_unregistered(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -367,7 +338,7 @@ fn create_column_timestamp(
|
||||||
arrow_cols: &mut Vec<Vec<(String, ArrayRef, bool)>>,
|
arrow_cols: &mut Vec<Vec<(String, ArrayRef, bool)>>,
|
||||||
summaries: &mut Vec<ColumnSummary>,
|
summaries: &mut Vec<ColumnSummary>,
|
||||||
schema_builder: SchemaBuilder,
|
schema_builder: SchemaBuilder,
|
||||||
) -> (SchemaBuilder, TimestampRange) {
|
) -> SchemaBuilder {
|
||||||
assert_eq!(data.len(), arrow_cols.len());
|
assert_eq!(data.len(), arrow_cols.len());
|
||||||
|
|
||||||
for (arrow_cols_sub, data_sub) in arrow_cols.iter_mut().zip(data.iter()) {
|
for (arrow_cols_sub, data_sub) in arrow_cols.iter_mut().zip(data.iter()) {
|
||||||
|
@ -389,10 +360,7 @@ fn create_column_timestamp(
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
let timestamp_range = TimestampRange::new(min.unwrap(), max.unwrap());
|
schema_builder.timestamp()
|
||||||
|
|
||||||
let schema_builder = schema_builder.timestamp();
|
|
||||||
(schema_builder, timestamp_range)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates an Arrow RecordBatches with schema and IOx statistics.
|
/// Creates an Arrow RecordBatches with schema and IOx statistics.
|
||||||
|
@ -404,13 +372,7 @@ fn create_column_timestamp(
|
||||||
/// indeed self-contained and can act as a source to recorder schema and statistics.
|
/// indeed self-contained and can act as a source to recorder schema and statistics.
|
||||||
pub fn make_record_batch(
|
pub fn make_record_batch(
|
||||||
column_prefix: &str,
|
column_prefix: &str,
|
||||||
) -> (
|
) -> (Vec<RecordBatch>, Schema, Vec<ColumnSummary>, usize) {
|
||||||
Vec<RecordBatch>,
|
|
||||||
Schema,
|
|
||||||
Vec<ColumnSummary>,
|
|
||||||
TimestampRange,
|
|
||||||
usize,
|
|
||||||
) {
|
|
||||||
// (name, array, nullable)
|
// (name, array, nullable)
|
||||||
let mut arrow_cols: Vec<Vec<(String, ArrayRef, bool)>> = vec![vec![], vec![], vec![]];
|
let mut arrow_cols: Vec<Vec<(String, ArrayRef, bool)>> = vec![vec![], vec![], vec![]];
|
||||||
let mut summaries = vec![];
|
let mut summaries = vec![];
|
||||||
|
@ -527,7 +489,7 @@ pub fn make_record_batch(
|
||||||
);
|
);
|
||||||
|
|
||||||
// time
|
// time
|
||||||
let (schema_builder, timestamp_range) = create_column_timestamp(
|
let schema_builder = create_column_timestamp(
|
||||||
vec![vec![1000], vec![2000], vec![3000, 4000]],
|
vec![vec![1000], vec![2000], vec![3000, 4000]],
|
||||||
&mut arrow_cols,
|
&mut arrow_cols,
|
||||||
&mut summaries,
|
&mut summaries,
|
||||||
|
@ -549,7 +511,7 @@ pub fn make_record_batch(
|
||||||
record_batches.push(record_batch);
|
record_batches.push(record_batch);
|
||||||
}
|
}
|
||||||
|
|
||||||
(record_batches, schema, summaries, timestamp_range, num_rows)
|
(record_batches, schema, summaries, num_rows)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates new in-memory object store for testing.
|
/// Creates new in-memory object store for testing.
|
||||||
|
|
|
@ -14,7 +14,7 @@ description = "IOx Query Interface and Executor"
|
||||||
# 2. Allow for query logic testing without bringing in all the storage systems.
|
# 2. Allow for query logic testing without bringing in all the storage systems.
|
||||||
|
|
||||||
[dependencies] # In alphabetical order
|
[dependencies] # In alphabetical order
|
||||||
arrow = { path = "../arrow" }
|
arrow = "4.0"
|
||||||
arrow_util = { path = "../arrow_util" }
|
arrow_util = { path = "../arrow_util" }
|
||||||
async-trait = "0.1"
|
async-trait = "0.1"
|
||||||
chrono = "0.4"
|
chrono = "0.4"
|
||||||
|
|
|
@ -11,7 +11,7 @@ edition = "2018"
|
||||||
# 2. Keep change/compile/link time down during development when working on just this crate
|
# 2. Keep change/compile/link time down during development when working on just this crate
|
||||||
|
|
||||||
[dependencies] # In alphabetical order
|
[dependencies] # In alphabetical order
|
||||||
arrow = { path = "../arrow" }
|
arrow = "4.0"
|
||||||
arrow_util = { path = "../arrow_util" }
|
arrow_util = { path = "../arrow_util" }
|
||||||
croaring = "0.4.5"
|
croaring = "0.4.5"
|
||||||
data_types = { path = "../data_types" }
|
data_types = { path = "../data_types" }
|
||||||
|
|
|
@ -5,9 +5,9 @@ authors = ["pauldix <paul@pauldix.net>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies] # In alphabetical order
|
[dependencies] # In alphabetical order
|
||||||
arrow = { path = "../arrow" }
|
arrow = "4.0"
|
||||||
arrow_util = { path = "../arrow_util" }
|
arrow_util = { path = "../arrow_util" }
|
||||||
arrow_flight = { path = "../arrow_flight" }
|
arrow-flight = "4.0"
|
||||||
async-trait = "0.1"
|
async-trait = "0.1"
|
||||||
bytes = { version = "1.0" }
|
bytes = { version = "1.0" }
|
||||||
chrono = "0.4"
|
chrono = "0.4"
|
||||||
|
@ -62,4 +62,3 @@ bench = ["mutable_buffer/nocache"]
|
||||||
[[bench]]
|
[[bench]]
|
||||||
name = "influxrpc"
|
name = "influxrpc"
|
||||||
harness = false
|
harness = false
|
||||||
|
|
||||||
|
|
|
@ -1136,7 +1136,7 @@ impl CatalogState for Catalog {
|
||||||
read_schema_from_parquet_metadata(&info.metadata).context(SchemaReadFailed {
|
read_schema_from_parquet_metadata(&info.metadata).context(SchemaReadFailed {
|
||||||
path: info.path.clone(),
|
path: info.path.clone(),
|
||||||
})?;
|
})?;
|
||||||
let (table_summary, timestamp_range) =
|
let table_summary =
|
||||||
read_statistics_from_parquet_metadata(&info.metadata, &schema, &table_name).context(
|
read_statistics_from_parquet_metadata(&info.metadata, &schema, &table_name).context(
|
||||||
StatisticsReadFailed {
|
StatisticsReadFailed {
|
||||||
path: info.path.clone(),
|
path: info.path.clone(),
|
||||||
|
@ -1155,7 +1155,6 @@ impl CatalogState for Catalog {
|
||||||
object_store.path_from_dirs_and_filename(info.path.clone()),
|
object_store.path_from_dirs_and_filename(info.path.clone()),
|
||||||
object_store,
|
object_store,
|
||||||
schema,
|
schema,
|
||||||
timestamp_range,
|
|
||||||
metrics,
|
metrics,
|
||||||
);
|
);
|
||||||
let parquet_chunk = Arc::new(parquet_chunk);
|
let parquet_chunk = Arc::new(parquet_chunk);
|
||||||
|
|
|
@ -468,7 +468,6 @@ mod tests {
|
||||||
path,
|
path,
|
||||||
object_store,
|
object_store,
|
||||||
schema,
|
schema,
|
||||||
None,
|
|
||||||
parquet_file::chunk::ChunkMetrics::new_unregistered(),
|
parquet_file::chunk::ChunkMetrics::new_unregistered(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue