Skip to content

Commit

Permalink
[release-18.0] fix: remove keyspace from column during query builder (#…
Browse files Browse the repository at this point in the history
…15514) (#15516)

Signed-off-by: Harshit Gangal <harshit@planetscale.com>
Co-authored-by: Harshit Gangal <harshit@planetscale.com>
  • Loading branch information
vitess-bot[bot] and harshit-gangal authored Mar 19, 2024
1 parent 2443fe5 commit 1d1a1df
Show file tree
Hide file tree
Showing 2 changed files with 105 additions and 6 deletions.
7 changes: 1 addition & 6 deletions go/vt/vtgate/planbuilder/operators/SQL_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -679,12 +679,7 @@ func buildHorizon(op *Horizon, qb *queryBuilder) error {
if err != nil {
return err
}
_ = sqlparser.Walk(func(node sqlparser.SQLNode) (kontinue bool, err error) {
if aliasedExpr, ok := node.(sqlparser.SelectExpr); ok {
removeKeyspaceFromSelectExpr(aliasedExpr)
}
return true, nil
}, qb.stmt)
sqlparser.RemoveKeyspace(qb.stmt)
return nil
}

Expand Down
104 changes: 104 additions & 0 deletions go/vt/vtgate/planbuilder/testdata/filter_cases.json
Original file line number Diff line number Diff line change
Expand Up @@ -4426,5 +4426,109 @@
"user.user_extra"
]
}
},
{
"comment": "order by with filter removing the keyspace from order by",
"query": "select col from user.user where id = 1 order by user.user.user_id",
"plan": {
"QueryType": "SELECT",
"Original": "select col from user.user where id = 1 order by user.user.user_id",
"Instructions": {
"OperatorType": "Route",
"Variant": "EqualUnique",
"Keyspace": {
"Name": "user",
"Sharded": true
},
"FieldQuery": "select col from `user` where 1 != 1",
"Query": "select col from `user` where id = 1 order by `user`.user_id asc",
"Table": "`user`",
"Values": [
"INT64(1)"
],
"Vindex": "user_index"
},
"TablesUsed": [
"user.user"
]
}
},
{
"comment": "group by with filter removing the keyspace from order by",
"query": "select col from user.user where id = 1 group by user.user.user_id",
"plan": {
"QueryType": "SELECT",
"Original": "select col from user.user where id = 1 group by user.user.user_id",
"Instructions": {
"OperatorType": "Route",
"Variant": "EqualUnique",
"Keyspace": {
"Name": "user",
"Sharded": true
},
"FieldQuery": "select col from `user` where 1 != 1 group by `user`.user_id",
"Query": "select col from `user` where id = 1 group by `user`.user_id",
"Table": "`user`",
"Values": [
"INT64(1)"
],
"Vindex": "user_index"
},
"TablesUsed": [
"user.user"
]
}
},
{
"comment": "order with authoritative table - removing keyspace from group by",
"query": "select * from user.authoritative where user_id = 5 order by user_id",
"plan": {
"QueryType": "SELECT",
"Original": "select * from user.authoritative where user_id = 5 order by user_id",
"Instructions": {
"OperatorType": "Route",
"Variant": "EqualUnique",
"Keyspace": {
"Name": "user",
"Sharded": true
},
"FieldQuery": "select user_id, col1, col2 from authoritative where 1 != 1",
"Query": "select user_id, col1, col2 from authoritative where user_id = 5 order by authoritative.user_id asc",
"Table": "authoritative",
"Values": [
"INT64(5)"
],
"Vindex": "user_index"
},
"TablesUsed": [
"user.authoritative"
]
}
},
{
"comment": "group by and having with authoritative table - removing keyspace from having",
"query": "select * from user.authoritative where user_id = 5 group by user_id having count(user_id) = 6 order by user_id",
"plan": {
"QueryType": "SELECT",
"Original": "select * from user.authoritative where user_id = 5 group by user_id having count(user_id) = 6 order by user_id",
"Instructions": {
"OperatorType": "Route",
"Variant": "EqualUnique",
"Keyspace": {
"Name": "user",
"Sharded": true
},
"FieldQuery": "select user_id, col1, col2 from authoritative where 1 != 1 group by user_id",
"Query": "select user_id, col1, col2 from authoritative where user_id = 5 group by user_id having count(user_id) = 6 order by authoritative.user_id asc",
"Table": "authoritative",
"Values": [
"INT64(5)"
],
"Vindex": "user_index"
},
"TablesUsed": [
"user.authoritative"
]
}
}
]

0 comments on commit 1d1a1df

Please sign in to comment.