diff --git a/Cargo.lock b/Cargo.lock index 0eed6f2c1d..e55db3a4df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5260,8 +5260,9 @@ dependencies = [ [[package]] name = "promql-parser" -version = "0.0.1" -source = "git+https://github.com/GreptimeTeam/promql-parser.git?rev=fa186978a1234baf5a3e372da03aa663d859cdd2#fa186978a1234baf5a3e372da03aa663d859cdd2" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24766dbb98852e704a98fc2c003d2b3ffa48317ab09b4ae184925f0e60385764" dependencies = [ "cfgrammar", "lazy_static", diff --git a/src/promql/Cargo.toml b/src/promql/Cargo.toml index e3c1d0e1c6..db5599f34b 100644 --- a/src/promql/Cargo.toml +++ b/src/promql/Cargo.toml @@ -13,7 +13,7 @@ common-catalog = { path = "../common/catalog" } datafusion.workspace = true datatypes = { path = "../datatypes" } futures = "0.3" -promql-parser = { git = "https://github.com/GreptimeTeam/promql-parser.git", rev = "fa186978a1234baf5a3e372da03aa663d859cdd2" } +promql-parser = "0.1.0" session = { path = "../session" } snafu = { version = "0.7", features = ["backtraces"] } table = { path = "../table" } diff --git a/src/promql/src/error.rs b/src/promql/src/error.rs index a42c4b2d3e..0f422a4629 100644 --- a/src/promql/src/error.rs +++ b/src/promql/src/error.rs @@ -25,7 +25,7 @@ pub enum Error { #[snafu(display("Unsupported expr type: {}", name))] UnsupportedExpr { name: String, backtrace: Backtrace }, - #[snafu(display("Unexpected token: {}", token))] + #[snafu(display("Unexpected token: {:?}", token))] UnexpectedToken { token: TokenType, backtrace: Backtrace, diff --git a/src/promql/src/planner.rs b/src/promql/src/planner.rs index c7ab57c89d..7ec70e38ad 100644 --- a/src/promql/src/planner.rs +++ b/src/promql/src/planner.rs @@ -103,7 +103,10 @@ impl PromPlanner { let input = self.prom_expr_to_plan(*expr.clone())?; // calculate columns to group by - let group_exprs = self.agg_modifier_to_col(input.schema(), modifier)?; + let group_exprs = modifier.as_ref().map_or(Ok(Vec::new()), |m| { + self.agg_modifier_to_col(input.schema(), m) + })?; + // convert op and value columns to aggregate exprs let aggr_exprs = self.create_aggregate_exprs(*op, &input)?; @@ -629,7 +632,7 @@ impl PromPlanner { token::T_STDVAR => AggregateFunctionEnum::Variance, token::T_TOPK | token::T_BOTTOMK | token::T_COUNT_VALUES | token::T_QUANTILE => { UnsupportedExprSnafu { - name: op.to_string(), + name: format!("{op:?}"), } .fail()? } @@ -1135,7 +1138,9 @@ mod test { // test group without if let PromExpr::Aggregate(AggregateExpr { modifier, .. }) = &mut eval_stmt.expr { - *modifier = AggModifier::Without(vec![String::from("tag_1")].into_iter().collect()); + *modifier = Some(AggModifier::Without( + vec![String::from("tag_1")].into_iter().collect(), + )); } let context_provider = build_test_context_provider("some_metric".to_string(), 2, 2).await; let plan = PromPlanner::stmt_to_plan(eval_stmt, context_provider).unwrap(); diff --git a/src/query/Cargo.toml b/src/query/Cargo.toml index 20ebe7d443..94f941b31a 100644 --- a/src/query/Cargo.toml +++ b/src/query/Cargo.toml @@ -29,7 +29,7 @@ futures-util.workspace = true metrics = "0.20" once_cell = "1.10" promql = { path = "../promql" } -promql-parser = { git = "https://github.com/GreptimeTeam/promql-parser.git", rev = "fa186978a1234baf5a3e372da03aa663d859cdd2" } +promql-parser = "0.1.0" serde.workspace = true serde_json = "1.0" session = { path = "../session" }