This is an automated email from the ASF dual-hosted git repository. kezhenxu94 pushed a commit to branch ql in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git
commit 4e929b3c0034bad3471aaed04b316b9d6c53855b Author: kezhenxu94 <[email protected]> AuthorDate: Fri Sep 19 16:58:02 2025 +0800 test --- bydbctl/internal/cmd/bydbql_test.go | 2 +- pkg/bydbql/bydbql_test.go | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/bydbctl/internal/cmd/bydbql_test.go b/bydbctl/internal/cmd/bydbql_test.go index 361d286d..df34fadf 100644 --- a/bydbctl/internal/cmd/bydbql_test.go +++ b/bydbctl/internal/cmd/bydbql_test.go @@ -104,7 +104,7 @@ SELECT trace_id FROM STREAM sw in (default) TIME BETWEEN '%s' AND '%s'`, nowStr, rootCmd.SetArgs([]string{"bydbql", "query", "-a", addr, "-f", "-"}) issue := func() string { rootCmd.SetIn(strings.NewReader(fmt.Sprintf(` -SELECT trace_id FROM STREAM sw in (default) WHERE trace_id = 'trace-1' TIME BETWEEN '%s' AND '%s' LIMIT 10`, nowStr, endStr))) +SELECT trace_id FROM STREAM sw in (default) TIME BETWEEN '%s' AND '%s' WHERE trace_id = 'trace-1' LIMIT 10`, nowStr, endStr))) return capturer.CaptureStdout(func() { err := rootCmd.Execute() if err != nil { diff --git a/pkg/bydbql/bydbql_test.go b/pkg/bydbql/bydbql_test.go index d993b085..8534dd73 100644 --- a/pkg/bydbql/bydbql_test.go +++ b/pkg/bydbql/bydbql_test.go @@ -133,6 +133,29 @@ var _ = Describe("Parser", func() { Expect(stmt.GroupBy.Columns[0]).To(Equal("region")) }) + It("parses SELECT with both TIME BETWEEN and WHERE clause", func() { + parsed, errors := ParseQuery("SELECT * FROM STREAM sw TIME BETWEEN '2023-01-01T00:00:00Z' AND '2023-01-02T00:00:00Z' WHERE service_id = 'webapp' AND status = 200") + Expect(errors).To(BeEmpty()) + Expect(parsed).NotTo(BeNil()) + + stmt, ok := parsed.Statement.(*SelectStatement) + Expect(ok).To(BeTrue()) + + // Verify TIME BETWEEN is parsed + Expect(stmt.Time).NotTo(BeNil()) + Expect(stmt.Time.Operator).To(Equal(TimeOpBetween)) + Expect(stmt.Time.Begin).To(Equal("2023-01-01T00:00:00Z")) + Expect(stmt.Time.End).To(Equal("2023-01-02T00:00:00Z")) + + // Verify WHERE clause is parsed + Expect(stmt.Where).NotTo(BeNil()) + Expect(stmt.Where.Conditions).To(HaveLen(2)) + Expect(stmt.Where.Conditions[0].Left).To(Equal("service_id")) + Expect(stmt.Where.Conditions[0].Right.StringVal).To(Equal("webapp")) + Expect(stmt.Where.Conditions[1].Left).To(Equal("status")) + Expect(stmt.Where.Conditions[1].Right.Integer).To(Equal(int64(200))) + }) + It("parses TOP N statement", func() { parsed, errors := ParseQuery("SHOW TOP 10 FROM MEASURE service_latency ORDER BY value DESC") Expect(errors).To(BeEmpty())
