feat: allow float number literal in step (#6483)

* chore: allow float number literal as step

Signed-off-by: Ning Sun <sunning@greptime.com>

* chore: switch to released version of promql parser

Signed-off-by: Ning Sun <sunning@greptime.com>

---------

Signed-off-by: Ning Sun <sunning@greptime.com>
This commit is contained in:
Ning Sun
2025-07-09 11:09:09 +08:00
committed by GitHub
parent f7282fde28
commit eeb061ca74
5 changed files with 118 additions and 5 deletions

5
Cargo.lock generated
View File

@@ -9541,8 +9541,9 @@ dependencies = [
[[package]]
name = "promql-parser"
version = "0.5.1"
source = "git+https://github.com/GreptimeTeam/promql-parser.git?rev=0410e8b459dda7cb222ce9596f8bf3971bd07bd2#0410e8b459dda7cb222ce9596f8bf3971bd07bd2"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "328fe69c2443ec4f8e6c33ea925dde04a1026e6c95928e89ed02343944cac9bf"
dependencies = [
"cfgrammar",
"chrono",

View File

@@ -172,9 +172,7 @@ parquet = { version = "54.2", default-features = false, features = ["arrow", "as
paste = "1.0"
pin-project = "1.0"
prometheus = { version = "0.13.3", features = ["process"] }
promql-parser = { git = "https://github.com/GreptimeTeam/promql-parser.git", rev = "0410e8b459dda7cb222ce9596f8bf3971bd07bd2", features = [
"ser",
] }
promql-parser = { version = "0.6", features = ["ser"] }
prost = { version = "0.13", features = ["no-recursion-limit"] }
raft-engine = { version = "0.4.1", default-features = false }
rand = "0.9"

View File

@@ -616,6 +616,17 @@ pub async fn test_prom_http_api(store_type: StorageType) {
.send()
.await;
assert_eq!(res.status(), StatusCode::OK);
let res = client
.get("/v1/prometheus/api/v1/query_range?query=up&start=1&end=100&step=0.5")
.send()
.await;
assert_eq!(res.status(), StatusCode::OK);
let res = client
.post("/v1/prometheus/api/v1/query_range?query=up&start=1&end=100&step=0.5")
.header("Content-Type", "application/x-www-form-urlencoded")
.send()
.await;
assert_eq!(res.status(), StatusCode::OK);
// labels
let res = client

View File

@@ -112,6 +112,102 @@ TQL EVAL (0, 10, '1s', '2s') test{k="a"};
| 2.0 | 1970-01-01T00:00:02 | a |
+-----+---------------------+---+
-- SQLNESS SORT_RESULT 2 1
TQL EVAL (0, 10, '0.5') test;
+-----+-------------------------+---+
| i | j | k |
+-----+-------------------------+---+
| 1.0 | 1970-01-01T00:00:00.500 | b |
| 1.0 | 1970-01-01T00:00:01 | b |
| 1.0 | 1970-01-01T00:00:01.500 | b |
| 1.0 | 1970-01-01T00:00:02 | b |
| 1.0 | 1970-01-01T00:00:02.500 | b |
| 1.0 | 1970-01-01T00:00:03 | b |
| 1.0 | 1970-01-01T00:00:03.500 | b |
| 1.0 | 1970-01-01T00:00:04 | b |
| 1.0 | 1970-01-01T00:00:04.500 | b |
| 1.0 | 1970-01-01T00:00:05 | b |
| 1.0 | 1970-01-01T00:00:05.500 | b |
| 1.0 | 1970-01-01T00:00:06 | b |
| 1.0 | 1970-01-01T00:00:06.500 | b |
| 1.0 | 1970-01-01T00:00:07 | b |
| 1.0 | 1970-01-01T00:00:07.500 | b |
| 1.0 | 1970-01-01T00:00:08 | b |
| 1.0 | 1970-01-01T00:00:08.500 | b |
| 1.0 | 1970-01-01T00:00:09 | b |
| 1.0 | 1970-01-01T00:00:09.500 | b |
| 1.0 | 1970-01-01T00:00:10 | b |
| 2.0 | 1970-01-01T00:00:00.500 | a |
| 2.0 | 1970-01-01T00:00:01 | a |
| 2.0 | 1970-01-01T00:00:01.500 | a |
| 2.0 | 1970-01-01T00:00:02 | a |
| 2.0 | 1970-01-01T00:00:02.500 | a |
| 2.0 | 1970-01-01T00:00:03 | a |
| 2.0 | 1970-01-01T00:00:03.500 | a |
| 2.0 | 1970-01-01T00:00:04 | a |
| 2.0 | 1970-01-01T00:00:04.500 | a |
| 2.0 | 1970-01-01T00:00:05 | a |
| 2.0 | 1970-01-01T00:00:05.500 | a |
| 2.0 | 1970-01-01T00:00:06 | a |
| 2.0 | 1970-01-01T00:00:06.500 | a |
| 2.0 | 1970-01-01T00:00:07 | a |
| 2.0 | 1970-01-01T00:00:07.500 | a |
| 2.0 | 1970-01-01T00:00:08 | a |
| 2.0 | 1970-01-01T00:00:08.500 | a |
| 2.0 | 1970-01-01T00:00:09 | a |
| 2.0 | 1970-01-01T00:00:09.500 | a |
| 2.0 | 1970-01-01T00:00:10 | a |
+-----+-------------------------+---+
-- SQLNESS SORT_RESULT 2 1
TQL EVAL (0, 10, 0.5) test;
+-----+-------------------------+---+
| i | j | k |
+-----+-------------------------+---+
| 1.0 | 1970-01-01T00:00:00.500 | b |
| 1.0 | 1970-01-01T00:00:01 | b |
| 1.0 | 1970-01-01T00:00:01.500 | b |
| 1.0 | 1970-01-01T00:00:02 | b |
| 1.0 | 1970-01-01T00:00:02.500 | b |
| 1.0 | 1970-01-01T00:00:03 | b |
| 1.0 | 1970-01-01T00:00:03.500 | b |
| 1.0 | 1970-01-01T00:00:04 | b |
| 1.0 | 1970-01-01T00:00:04.500 | b |
| 1.0 | 1970-01-01T00:00:05 | b |
| 1.0 | 1970-01-01T00:00:05.500 | b |
| 1.0 | 1970-01-01T00:00:06 | b |
| 1.0 | 1970-01-01T00:00:06.500 | b |
| 1.0 | 1970-01-01T00:00:07 | b |
| 1.0 | 1970-01-01T00:00:07.500 | b |
| 1.0 | 1970-01-01T00:00:08 | b |
| 1.0 | 1970-01-01T00:00:08.500 | b |
| 1.0 | 1970-01-01T00:00:09 | b |
| 1.0 | 1970-01-01T00:00:09.500 | b |
| 1.0 | 1970-01-01T00:00:10 | b |
| 2.0 | 1970-01-01T00:00:00.500 | a |
| 2.0 | 1970-01-01T00:00:01 | a |
| 2.0 | 1970-01-01T00:00:01.500 | a |
| 2.0 | 1970-01-01T00:00:02 | a |
| 2.0 | 1970-01-01T00:00:02.500 | a |
| 2.0 | 1970-01-01T00:00:03 | a |
| 2.0 | 1970-01-01T00:00:03.500 | a |
| 2.0 | 1970-01-01T00:00:04 | a |
| 2.0 | 1970-01-01T00:00:04.500 | a |
| 2.0 | 1970-01-01T00:00:05 | a |
| 2.0 | 1970-01-01T00:00:05.500 | a |
| 2.0 | 1970-01-01T00:00:06 | a |
| 2.0 | 1970-01-01T00:00:06.500 | a |
| 2.0 | 1970-01-01T00:00:07 | a |
| 2.0 | 1970-01-01T00:00:07.500 | a |
| 2.0 | 1970-01-01T00:00:08 | a |
| 2.0 | 1970-01-01T00:00:08.500 | a |
| 2.0 | 1970-01-01T00:00:09 | a |
| 2.0 | 1970-01-01T00:00:09.500 | a |
| 2.0 | 1970-01-01T00:00:10 | a |
+-----+-------------------------+---+
TQL EVAL ('1970-01-01T00:00:00'::timestamp, '1970-01-01T00:00:00'::timestamp + '10 seconds'::interval, '1s') test{k="a"};
+-----+---------------------+---+

View File

@@ -35,6 +35,13 @@ TQL EVAL (0, 10, '5s') test{k="a"};
TQL EVAL (0, 10, '1s', '2s') test{k="a"};
-- SQLNESS SORT_RESULT 2 1
TQL EVAL (0, 10, '0.5') test;
-- SQLNESS SORT_RESULT 2 1
TQL EVAL (0, 10, 0.5) test;
TQL EVAL ('1970-01-01T00:00:00'::timestamp, '1970-01-01T00:00:00'::timestamp + '10 seconds'::interval, '1s') test{k="a"};
TQL EVAL (now() - now(), now() - (now() - '10 seconds'::interval), '1s') test{k="a"};