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())

Reply via email to