From cd5ef33951cd3ed8efeef4f71c72b1ba5248deac Mon Sep 17 00:00:00 2001 From: hnd4r7 <307365651@qq.com> Date: Thu, 12 Jan 2023 10:12:38 +0800 Subject: [PATCH] velaql support indexing into exported array field (#5320) Signed-off-by: hnd4r7 <307365651@qq.com> Signed-off-by: hnd4r7 <307365651@qq.com> --- pkg/velaql/parse.go | 2 +- pkg/velaql/parse_test.go | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/velaql/parse.go b/pkg/velaql/parse.go index ae70b03b0..c8d0dfab2 100644 --- a/pkg/velaql/parse.go +++ b/pkg/velaql/parse.go @@ -37,7 +37,7 @@ type QueryView struct { const ( // PatternQL is the pattern string of velaQL, velaQL's query syntax is `ViewName{key1=value1 ,key2="value2",}.Export` - PatternQL = `(?P[a-z0-9](?:[a-z0-9\-]{0,61}[a-z0-9])?)(?P{.*?})?\.?(?P[_a-zA-Z][\._a-zA-Z0-9]*)?` + PatternQL = `(?P[a-z0-9](?:[a-z0-9\-]{0,61}[a-z0-9])?)(?P{.*?})?\.?(?P[_a-zA-Z][\._a-zA-Z0-9\[\]]*)?` // PatternKV is the pattern string of parameter PatternKV = `(?P[^=]+)=(?P[^=]*?)(?:,|$)` // KeyWordView represent view keyword diff --git a/pkg/velaql/parse_test.go b/pkg/velaql/parse_test.go index 1867cf606..a8d446e51 100644 --- a/pkg/velaql/parse_test.go +++ b/pkg/velaql/parse_test.go @@ -58,6 +58,13 @@ func TestParseVelaQL(t *testing.T) { Export: "output.value.spec", }, err: nil, + }, { + ql: `view{test=true}.output.value[0].spec`, + query: QueryView{ + View: "view", + Export: "output.value[0].spec", + }, + err: nil, }} for _, testcase := range testcases {