Select: Support Square Bracket Lists (#8457)

Allows for S3 compatible `SELECT * from s3object s WHERE id IN [3,2]`

Fixes #8422
This commit is contained in:
Klaus Post 2019-10-30 07:04:40 +01:00 committed by Nitish Tiwari
parent 1f481c0967
commit 51456e6adc
2 changed files with 17 additions and 1 deletions

View File

@ -171,6 +171,22 @@ func TestJSONQueries(t *testing.T) {
wantResult: `{"id":0,"title":"Test Record","desc":"Some text","synonyms":["foo","bar","whatever"]}
{"id":1,"title":"Second Record","desc":"another text","synonyms":["some","synonym","value"]}
{"id":2,"title":"Second Record","desc":"another text","numbers":[2,3,4]}`,
},
{
name: "indexed-list-square-bracket",
query: `SELECT * from s3object s WHERE [7,8.5,9] = s.nested[1]`,
wantResult: `{"id":3,"title":"Second Record","desc":"another text","nested":[[2,3,4],[7,8.5,9]]}`,
},
{
name: "indexed-list-square-bracket",
query: `SELECT * from s3object s WHERE [7,8.5,9] IN s.nested`,
wantResult: `{"id":3,"title":"Second Record","desc":"another text","nested":[[2,3,4],[7,8.5,9]]}`,
},
{
name: "indexed-list-square-bracket",
query: `SELECT * from s3object s WHERE id IN [3,2]`,
wantResult: `{"id":2,"title":"Second Record","desc":"another text","numbers":[2,3,4]}
{"id":3,"title":"Second Record","desc":"another text","nested":[[2,3,4],[7,8.5,9]]}`,
},
{
name: "index-wildcard-in",

View File

@ -149,7 +149,7 @@ type Expression struct {
// ListExpr represents a literal list with elements as expressions.
type ListExpr struct {
Elements []*Expression `parser:"\"(\" @@ ( \",\" @@ )* \")\""`
Elements []*Expression `parser:"\"(\" @@ ( \",\" @@ )* \")\" | \"[\" @@ ( \",\" @@ )* \"]\""`
}
// AndCondition represents logical conjunction of clauses