Merge pull request #50 from influxdata/line-parser
refactor: Rewrite the line parser with nompull/24376/head
commit
093e1e960f
|
@ -31,6 +31,14 @@ name = "arrayref"
|
|||
version = "0.3.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "arrayvec"
|
||||
version = "0.4.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "arrayvec"
|
||||
version = "0.5.1"
|
||||
|
@ -112,7 +120,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
dependencies = [
|
||||
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -135,7 +143,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
dependencies = [
|
||||
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -226,7 +234,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "0.1.10"
|
||||
version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
|
@ -341,7 +349,7 @@ version = "0.8.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -354,7 +362,7 @@ name = "crossbeam-queue"
|
|||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -364,7 +372,7 @@ version = "0.7.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -406,6 +414,7 @@ dependencies = [
|
|||
"hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"integer-encoding 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"nom 5.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"prost 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"prost-types 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -430,7 +439,7 @@ name = "dirs"
|
|||
version = "2.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -439,7 +448,7 @@ name = "dirs-sys"
|
|||
version = "0.3.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.67 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -470,7 +479,7 @@ name = "encoding_rs"
|
|||
version = "0.8.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -620,7 +629,7 @@ name = "getrandom"
|
|||
version = "0.1.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.67 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -813,6 +822,19 @@ name = "lazycell"
|
|||
version = "1.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "lexical-core"
|
||||
version = "0.6.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.67"
|
||||
|
@ -843,7 +865,7 @@ name = "log"
|
|||
version = "0.4.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -888,7 +910,7 @@ name = "mio"
|
|||
version = "0.6.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -969,11 +991,16 @@ name = "net2"
|
|||
version = "0.2.33"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.67 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nodrop"
|
||||
version = "0.1.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "nom"
|
||||
version = "4.2.3"
|
||||
|
@ -983,6 +1010,16 @@ dependencies = [
|
|||
"version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nom"
|
||||
version = "5.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"lexical-core 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.11"
|
||||
|
@ -1011,7 +1048,7 @@ version = "0.10.28"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.67 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1523,7 +1560,7 @@ name = "socket2"
|
|||
version = "0.3.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.67 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1534,6 +1571,16 @@ name = "sourcefile"
|
|||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "spin"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "static_assertions"
|
||||
version = "0.3.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "strsim"
|
||||
version = "0.8.0"
|
||||
|
@ -1554,7 +1601,7 @@ name = "tempfile"
|
|||
version = "3.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.67 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1685,7 +1732,7 @@ dependencies = [
|
|||
"tower-load 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tower-make 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tracing 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tracing 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tracing-futures 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -1735,7 +1782,7 @@ dependencies = [
|
|||
"tower-make 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tower-ready-cache 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tracing 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tracing 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1748,7 +1795,7 @@ dependencies = [
|
|||
"tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tower-layer 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tracing 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tracing 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1865,11 +1912,12 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tracing"
|
||||
version = "0.1.13"
|
||||
version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tracing-attributes 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tracing-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -1897,7 +1945,7 @@ version = "0.2.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tracing 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tracing 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2008,7 +2056,7 @@ name = "wasm-bindgen"
|
|||
version = "0.2.58"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -2033,7 +2081,7 @@ name = "wasm-bindgen-futures"
|
|||
version = "0.4.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -2168,6 +2216,7 @@ dependencies = [
|
|||
"checksum anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c"
|
||||
"checksum arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff"
|
||||
"checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
|
||||
"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9"
|
||||
"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8"
|
||||
"checksum assert_cmd 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6283bac8dd7226470d491bc4737816fea4ca1fba7a2847f2e9097fd6bfb4624c"
|
||||
"checksum async-stream 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "22068c0c19514942eefcfd4daf8976ef1aad84e61539f95cd200c35202f80af5"
|
||||
|
@ -2189,7 +2238,7 @@ dependencies = [
|
|||
"checksum cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0"
|
||||
"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd"
|
||||
"checksum cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fce5b5fb86b0c57c20c834c1b412fd09c77c8a59b9473f86272709e78874cd1d"
|
||||
"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
||||
"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
|
||||
"checksum clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81de550971c976f176130da4b2978d3b524eaa0fd9ac31f3ceb5ae1231fb4853"
|
||||
"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
|
||||
"checksum constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
|
||||
|
@ -2252,6 +2301,7 @@ dependencies = [
|
|||
"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
|
||||
"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||
"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
|
||||
"checksum lexical-core 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f86d66d380c9c5a685aaac7a11818bdfa1f733198dfd9ec09c70b762cd12ad6f"
|
||||
"checksum libc 0.2.67 (registry+https://github.com/rust-lang/crates.io-index)" = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018"
|
||||
"checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753"
|
||||
"checksum librocksdb-sys 6.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e3b727e2dd20ec2fb7ed93f23d9fd5328a0871185485ebdaff007b47d3e27e4"
|
||||
|
@ -2270,7 +2320,9 @@ dependencies = [
|
|||
"checksum multimap 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a97fbd5d00e0e37bfb10f433af8f5aaf631e739368dc9fc28286ca81ca4948dc"
|
||||
"checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e"
|
||||
"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
|
||||
"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
|
||||
"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6"
|
||||
"checksum nom 5.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b471253da97532da4b61552249c521e01e736071f71c1a4f7ebbfbf0a06aad6"
|
||||
"checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096"
|
||||
"checksum num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6"
|
||||
"checksum oorandom 11.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebcec7c9c2a95cacc7cd0ecb89d8a8454eca13906f6deb55258ffff0adeb9405"
|
||||
|
@ -2336,6 +2388,8 @@ dependencies = [
|
|||
"checksum smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc"
|
||||
"checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85"
|
||||
"checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3"
|
||||
"checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
|
||||
"checksum static_assertions 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7f3eb36b47e512f8f1c9e3d10c2c1965bc992bd9cdb024fa581e2194501c83d3"
|
||||
"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
||||
"checksum syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" = "123bd9499cfb380418d509322d7a6d52e5315f064fe4b3ad18a53d6b92c07859"
|
||||
"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
|
||||
|
@ -2364,7 +2418,7 @@ dependencies = [
|
|||
"checksum tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860"
|
||||
"checksum tower-timeout 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "127b8924b357be938823eaaec0608c482d40add25609481027b96198b2e4b31e"
|
||||
"checksum tower-util 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5702d7890e35b2aae6ee420e8a762547505dbed30c075fbc84ec069a0aa18314"
|
||||
"checksum tracing 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1721cc8cf7d770cc4257872507180f35a4797272f5962f24c806af9e7faf52ab"
|
||||
"checksum tracing 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c21ff9457accc293386c20e8f754d0b059e67e325edf2284f04230d125d7e5ff"
|
||||
"checksum tracing-attributes 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "7fbad39da2f9af1cae3016339ad7f2c7a9e870f12e8fd04c4fd7ef35b30c0d2b"
|
||||
"checksum tracing-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0aa83a9a47081cd522c09c81b31aec2c9273424976f922ad61c053b58350b715"
|
||||
"checksum tracing-futures 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "58b0b7fd92dc7b71f29623cc6836dd7200f32161a2313dd78be233a8405694f6"
|
||||
|
|
|
@ -37,7 +37,7 @@ prost-types = "0.6.1"
|
|||
croaring = "0.4.2"
|
||||
http = "0.2.0"
|
||||
serde_urlencoded = "0.6.1"
|
||||
|
||||
nom = "5.1.1"
|
||||
|
||||
[dev-dependencies]
|
||||
criterion = "0.3"
|
||||
|
|
|
@ -1,4 +1,12 @@
|
|||
use std::str::Chars;
|
||||
use nom::{
|
||||
branch::alt,
|
||||
bytes::complete::{tag, take_while1},
|
||||
character::complete::digit1,
|
||||
combinator::{map, opt, recognize},
|
||||
multi::separated_list,
|
||||
sequence::{separated_pair, terminated, tuple},
|
||||
IResult,
|
||||
};
|
||||
use std::{error, fmt};
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
|
@ -163,97 +171,109 @@ impl error::Error for ParseError {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: have parse return an error for invalid inputs
|
||||
#[derive(Debug)]
|
||||
struct ParsedLine<'a> {
|
||||
measurement: &'a str,
|
||||
tag_set: Option<Vec<(&'a str, &'a str)>>,
|
||||
field_set: Vec<(&'a str, FieldValue)>,
|
||||
timestamp: Option<i64>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
enum FieldValue {
|
||||
I64(i64),
|
||||
F64(f64),
|
||||
}
|
||||
|
||||
// TODO: Return an error for invalid inputs
|
||||
pub fn parse(input: &str) -> Vec<PointType> {
|
||||
let mut points: Vec<PointType> = Vec::with_capacity(10000);
|
||||
let lines = input.lines();
|
||||
for line in lines {
|
||||
read_line(line, &mut points)
|
||||
}
|
||||
points
|
||||
}
|
||||
input
|
||||
.lines()
|
||||
.flat_map(|line| match parse_line(line) {
|
||||
Ok((_remaining, parsed_line)) => {
|
||||
let ParsedLine {
|
||||
measurement,
|
||||
tag_set,
|
||||
field_set,
|
||||
timestamp,
|
||||
} = parsed_line;
|
||||
|
||||
fn read_line(line: &str, points: &mut Vec<PointType>) {
|
||||
let mut points = points;
|
||||
let mut chars = line.chars();
|
||||
let mut series = String::with_capacity(1000);
|
||||
while let Some(ch) = chars.next() {
|
||||
match ch {
|
||||
' ' => read_fields(&series, &mut chars, &mut points),
|
||||
_ => series.push(ch),
|
||||
}
|
||||
}
|
||||
}
|
||||
assert!(tag_set.is_none(), "TODO: tag set not supported");
|
||||
let timestamp = timestamp.expect("TODO: default timestamp not supported");
|
||||
|
||||
fn read_fields(measurement_tags: &str, chars: &mut Chars<'_>, points: &mut Vec<PointType>) {
|
||||
let mut chars = chars;
|
||||
let mut points = points;
|
||||
let mut field_name = String::with_capacity(100);
|
||||
field_set.into_iter().map(move |(field_key, field_value)| {
|
||||
let series = format!("{}\t{}", measurement, field_key);
|
||||
|
||||
let mut point_offset = points.len();
|
||||
|
||||
while let Some(ch) = chars.next() {
|
||||
match ch {
|
||||
'=' => {
|
||||
let should_break =
|
||||
!read_value(&measurement_tags, field_name, &mut chars, &mut points);
|
||||
field_name = String::with_capacity(100);
|
||||
if should_break {
|
||||
break;
|
||||
}
|
||||
match field_value {
|
||||
FieldValue::I64(value) => PointType::new_i64(series, value, timestamp),
|
||||
FieldValue::F64(value) => PointType::new_f64(series, value, timestamp),
|
||||
}
|
||||
})
|
||||
}
|
||||
_ => field_name.push(ch),
|
||||
}
|
||||
}
|
||||
|
||||
// read the time
|
||||
for ch in chars {
|
||||
field_name.push(ch);
|
||||
}
|
||||
let time = field_name.parse::<i64>().unwrap();
|
||||
|
||||
while point_offset < points.len() {
|
||||
points[point_offset].set_time(time);
|
||||
point_offset += 1;
|
||||
}
|
||||
Err(e) => {
|
||||
panic!("TODO: Failed to parse: {}", e);
|
||||
}
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
// read_value reads the value from the chars and returns true if there are more fields and values to be read
|
||||
fn read_value(
|
||||
measurement_tags: &str,
|
||||
field_name: String,
|
||||
chars: &mut Chars<'_>,
|
||||
points: &mut Vec<PointType>,
|
||||
) -> bool {
|
||||
let mut value = String::new();
|
||||
fn parse_line(i: &str) -> IResult<&str, ParsedLine<'_>> {
|
||||
let tag_set = map(tuple((tag(","), tag_set)), |(_, ts)| ts);
|
||||
let field_set = map(tuple((tag(" "), field_set)), |(_, fs)| fs);
|
||||
let timestamp = map(tuple((tag(" "), timestamp)), |(_, ts)| ts);
|
||||
|
||||
for ch in chars {
|
||||
match ch {
|
||||
' ' | ',' => {
|
||||
let series = measurement_tags.to_string() + "\t" + &field_name;
|
||||
let line = tuple((measurement, opt(tag_set), field_set, opt(timestamp)));
|
||||
|
||||
// if the last character of the value is an i then it's an integer, otherwise it's
|
||||
// a float (at least until we support the other data types
|
||||
let point = if value.ends_with('i') {
|
||||
let val = value[..value.len() - 1].parse::<i64>().unwrap();
|
||||
PointType::new_i64(series, val, 0)
|
||||
} else {
|
||||
let val = value.parse::<f64>().unwrap();
|
||||
PointType::new_f64(series, val, 0)
|
||||
};
|
||||
points.push(point);
|
||||
|
||||
if ch == ' ' {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
_ => value.push(ch),
|
||||
map(line, |(measurement, tag_set, field_set, timestamp)| {
|
||||
ParsedLine {
|
||||
measurement,
|
||||
tag_set,
|
||||
field_set,
|
||||
timestamp,
|
||||
}
|
||||
}
|
||||
})(i)
|
||||
}
|
||||
|
||||
false
|
||||
fn measurement(i: &str) -> IResult<&str, &str> {
|
||||
// TODO: This needs to account for `,` to separate tag sets
|
||||
take_while1(|c| c != ' ')(i)
|
||||
}
|
||||
|
||||
// TODO: ensure that the tags are sorted
|
||||
fn tag_set(i: &str) -> IResult<&str, Vec<(&str, &str)>> {
|
||||
let tag_key = take_while1(|c| c != '=');
|
||||
let tag_value = take_while1(|c| c != ' ');
|
||||
let one_tag = separated_pair(tag_key, tag("="), tag_value);
|
||||
separated_list(tag(","), one_tag)(i)
|
||||
}
|
||||
|
||||
fn field_set(i: &str) -> IResult<&str, Vec<(&str, FieldValue)>> {
|
||||
let field_key = take_while1(|c| c != '=');
|
||||
let one_field = separated_pair(field_key, tag("="), field_value);
|
||||
separated_list(tag(","), one_field)(i)
|
||||
}
|
||||
|
||||
fn field_value(i: &str) -> IResult<&str, FieldValue> {
|
||||
let int = map(terminated(digit1, tag("i")), |v: &str| {
|
||||
FieldValue::I64(v.parse().expect("TODO: Unsupported"))
|
||||
});
|
||||
|
||||
let float_no_decimal = map(digit1, |v: &str| {
|
||||
FieldValue::F64(v.parse().expect("TODO: Unsupported"))
|
||||
});
|
||||
|
||||
let float_with_decimal = map(
|
||||
recognize(separated_pair(digit1, tag("."), digit1)),
|
||||
|v: &str| FieldValue::F64(v.parse().expect("TODO: Unsupported")),
|
||||
);
|
||||
|
||||
alt((float_with_decimal, int, float_no_decimal))(i)
|
||||
}
|
||||
|
||||
fn timestamp(i: &str) -> IResult<&str, i64> {
|
||||
map(digit1, |f: &str| {
|
||||
f.parse().expect("TODO: parsing timestamp failed")
|
||||
})(i)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -262,32 +282,40 @@ mod test {
|
|||
use crate::tests::approximately_equal;
|
||||
|
||||
#[test]
|
||||
fn parse_single_field() {
|
||||
fn parse_single_field_integer() {
|
||||
let input = "foo asdf=23i 1234";
|
||||
|
||||
let vals = parse(input);
|
||||
|
||||
assert_eq!(vals[0].series(), "foo\tasdf");
|
||||
assert_eq!(vals[0].time(), 1234);
|
||||
assert_eq!(vals[0].i64_value().unwrap(), 23);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_single_field_float_no_decimal() {
|
||||
let input = "foo asdf=44 546";
|
||||
let vals = parse(input);
|
||||
|
||||
assert_eq!(vals[0].series(), "foo\tasdf");
|
||||
assert_eq!(vals[0].time(), 546);
|
||||
assert!(approximately_equal(vals[0].f64_value().unwrap(), 44.0));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_single_field_float_with_decimal() {
|
||||
let input = "foo asdf=3.74 123";
|
||||
let vals = parse(input);
|
||||
|
||||
assert_eq!(vals[0].series(), "foo\tasdf");
|
||||
assert_eq!(vals[0].time(), 123);
|
||||
assert!(approximately_equal(vals[0].f64_value().unwrap(), 3.74));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_two_fields() {
|
||||
fn parse_two_fields_integer() {
|
||||
let input = "foo asdf=23i,bar=5i 1234";
|
||||
|
||||
let vals = parse(input);
|
||||
|
||||
assert_eq!(vals[0].series(), "foo\tasdf");
|
||||
assert_eq!(vals[0].time(), 1234);
|
||||
assert_eq!(vals[0].i64_value().unwrap(), 23);
|
||||
|
@ -295,10 +323,13 @@ mod test {
|
|||
assert_eq!(vals[1].series(), "foo\tbar");
|
||||
assert_eq!(vals[1].time(), 1234);
|
||||
assert_eq!(vals[1].i64_value().unwrap(), 5);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_two_fields_float() {
|
||||
let input = "foo asdf=23.1,bar=5 1234";
|
||||
|
||||
let vals = parse(input);
|
||||
|
||||
assert_eq!(vals[0].series(), "foo\tasdf");
|
||||
assert_eq!(vals[0].time(), 1234);
|
||||
assert!(approximately_equal(vals[0].f64_value().unwrap(), 23.1));
|
||||
|
@ -309,10 +340,10 @@ mod test {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn parse_mixed() {
|
||||
fn parse_mixed_float_and_integer() {
|
||||
let input = "foo asdf=23.1,bar=5i 1234";
|
||||
|
||||
let vals = parse(input);
|
||||
|
||||
assert_eq!(vals[0].series(), "foo\tasdf");
|
||||
assert_eq!(vals[0].time(), 1234);
|
||||
assert!(approximately_equal(vals[0].f64_value().unwrap(), 23.1));
|
||||
|
@ -322,6 +353,14 @@ mod test {
|
|||
assert_eq!(vals[1].i64_value().unwrap(), 5);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_tag_set_included_in_series() {
|
||||
let input = "foo,tag1=1,tag2=2 value=1 123";
|
||||
let vals = parse(input);
|
||||
|
||||
assert_eq!(vals[0].series(), "foo,tag1=1,tag2=2\tvalue");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn index_pairs() {
|
||||
let p = Point {
|
||||
|
|
Loading…
Reference in New Issue