Skip to content

Commit

Permalink
fix: remove keyspace from column during query builder (#15514)
Browse files Browse the repository at this point in the history
Signed-off-by: Harshit Gangal <harshit@planetscale.com>
  • Loading branch information
harshit-gangal committed Mar 19, 2024
1 parent 52ca497 commit a1acdde
Show file tree
Hide file tree
Showing 2 changed files with 105 additions and 8 deletions.
9 changes: 1 addition & 8 deletions go/vt/vtgate/planbuilder/operators/SQL_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -623,15 +623,8 @@ func buildDerivedSelect(op *Horizon, qb *queryBuilder, sel *sqlparser.Select) {

func buildHorizon(op *Horizon, qb *queryBuilder) {
buildQuery(op.Source, qb)

stripDownQuery(op.Query, qb.asSelectStatement())

_ = 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.RemoveKeyspaceInCol(qb.stmt)
}

func mergeHaving(h1, h2 *sqlparser.Where) *sqlparser.Where {
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 @@ -4585,5 +4585,109 @@
"user.multicol_tbl"
]
}
},
{
"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": [
"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": [
"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": [
"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": [
"5"
],
"Vindex": "user_index"
},
"TablesUsed": [
"user.authoritative"
]
}
}
]

0 comments on commit a1acdde

Please sign in to comment.