influxdb/influxdb_line_protocol
dependabot[bot] bc6bf2d8e5
chore(deps): Bump smallvec from 1.10.0 to 1.11.0 (#8164)
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.10.0...v1.11.0)

---
updated-dependencies:
- dependency-name: smallvec
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-06 09:43:27 +00:00
..
src fix(lp parser): adjust parsing tagsets: better error message and error on corner case (#7997) 2023-06-16 15:16:11 +00:00
Cargo.toml chore(deps): Bump smallvec from 1.10.0 to 1.11.0 (#8164) 2023-07-06 09:43:27 +00:00
README.md chore(influxdb_line_protocol): Prepare `influxdb_line_protocol` for crates.io release (#7195) 2023-03-16 17:55:10 +00:00
RELEASE.md chore(influxdb_line_protocol): Prepare `influxdb_line_protocol` for crates.io release (#7195) 2023-03-16 17:55:10 +00:00

README.md

influxdb_line_protocol

This crate contains pure Rust implementations of

  1. A parser for InfluxDB Line Protocol developed as part of the InfluxDB IOx project. This implementation is intended to be compatible with the Go implementation, however, this implementation uses a nom combinator-based parser rather than attempting to port the imperative Go logic so there are likely some small diferences.

  2. A builder to contruct valid InfluxDB Line Protocol

Example

Here is an example of how to parse the following line protocol data into a ParsedLine:

cpu,host=A,region=west usage_system=64.2 1590488773254420000
use influxdb_line_protocol::{ParsedLine, FieldValue};

let mut parsed_lines =
    influxdb_line_protocol::parse_lines(
        "cpu,host=A,region=west usage_system=64i 1590488773254420000"
    );
let parsed_line = parsed_lines
    .next()
    .expect("Should have at least one line")
    .expect("Should parse successfully");

let ParsedLine {
    series,
    field_set,
    timestamp,
} = parsed_line;

assert_eq!(series.measurement, "cpu");

let tags = series.tag_set.unwrap();
assert_eq!(tags[0].0, "host");
assert_eq!(tags[0].1, "A");
assert_eq!(tags[1].0, "region");
assert_eq!(tags[1].1, "west");

let field = &field_set[0];
assert_eq!(field.0, "usage_system");
assert_eq!(field.1, FieldValue::I64(64));

assert_eq!(timestamp, Some(1590488773254420000));