Skip to content

Commit

Permalink
Cherry-pick 5c08da6 with conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
vitess-bot[bot] authored and vitess-bot committed Oct 30, 2024
1 parent aca5683 commit 466454d
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 1 deletion.
25 changes: 25 additions & 0 deletions go/vt/vtgate/planbuilder/testdata/from_cases.json
Original file line number Diff line number Diff line change
Expand Up @@ -964,6 +964,31 @@
]
}
},
{
"comment": "Ambiguous column is not a problem when we can merge and push down",
"query": "select foobar from user join music on user.id = music.user_id order by foobar",
"plan": {
"QueryType": "SELECT",
"Original": "select foobar from user join music on user.id = music.user_id order by foobar",
"Instructions": {
"OperatorType": "Route",
"Variant": "Scatter",
"Keyspace": {
"Name": "user",
"Sharded": true
},
"FieldQuery": "select foobar, weight_string(foobar) from `user`, music where 1 != 1",
"OrderBy": "(0|1) ASC",
"Query": "select foobar, weight_string(foobar) from `user`, music where `user`.id = music.user_id order by foobar asc",
"ResultColumns": 1,
"Table": "`user`, music"
},
"TablesUsed": [
"user.music",
"user.user"
]
}
},
{
"comment": "index hints, make sure they are not stripped.",
"query": "select user.col from user use index(a)",
Expand Down
7 changes: 7 additions & 0 deletions go/vt/vtgate/semantics/analyzer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1259,9 +1259,16 @@ var ks3 = &vindexes.Keyspace{
func fakeSchemaInfo() *FakeSI {
si := &FakeSI{
Tables: map[string]*vindexes.Table{
<<<<<<< HEAD
"t": tableT(),
"t1": tableT1(),
"t2": tableT2(),
=======
"t": {Name: sqlparser.NewIdentifierCS("t"), Keyspace: unsharded},
"t3": {Name: sqlparser.NewIdentifierCS("t3"), Keyspace: unsharded},
"t1": {Name: sqlparser.NewIdentifierCS("t1"), Columns: cols1, ColumnListAuthoritative: true, Keyspace: ks2},
"t2": {Name: sqlparser.NewIdentifierCS("t2"), Columns: cols2, ColumnListAuthoritative: true, Keyspace: ks3},
>>>>>>> 5c08da6a5d (Bugfix for Panic on Joined Queries with Non-Authoritative Tables in Vitess 19.0 (#17103))
},
}
return si
Expand Down
10 changes: 9 additions & 1 deletion go/vt/vtgate/semantics/early_rewriter.go
Original file line number Diff line number Diff line change
Expand Up @@ -605,7 +605,15 @@ func (r *earlyRewriter) fillInQualifiers(cursor *sqlparser.CopyOnWriteCursor) {
if !found {
panic("uh oh")
}
tbl := r.tables.Tables[ts.TableOffset()]
offset := ts.TableOffset()
if offset < 0 {
// this is a column that is not coming from a table - it's an alias introduced in a SELECT expression
// Example: select (1+1) as foo from bar order by foo
// we don't want to add a qualifier to foo here
cursor.Replace(sqlparser.NewColName(col.Name.String()))
return
}
tbl := r.tables.Tables[offset]
tblName, err := tbl.Name()
if err != nil {
panic(err)
Expand Down
27 changes: 27 additions & 0 deletions go/vt/vtgate/semantics/early_rewriter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -735,6 +735,33 @@ func TestOrderByColumnName(t *testing.T) {
}
}

func TestOrderByNotAllColumnsAuthoritative(t *testing.T) {
schemaInfo := fakeSchemaInfo()
cDB := "db"
tcases := []struct {
sql string
expSQL string
deps TableSet
}{{
sql: "select foo from t3 join t order by foo",
expSQL: "select foo from t3 join t order by foo asc",
deps: None,
}}
for _, tcase := range tcases {
t.Run(tcase.sql, func(t *testing.T) {
ast, err := sqlparser.NewTestParser().Parse(tcase.sql)
require.NoError(t, err)
selectStatement := ast.(sqlparser.SelectStatement)
semTable, err := Analyze(selectStatement, cDB, schemaInfo)

require.NoError(t, err)
assert.Equal(t, tcase.expSQL, sqlparser.String(selectStatement))
orderByExpr := selectStatement.GetOrderBy()[0].Expr
assert.Equal(t, tcase.deps, semTable.RecursiveDeps(orderByExpr))
})
}
}

func TestSemTableDependenciesAfterExpandStar(t *testing.T) {
schemaInfo := &FakeSI{Tables: map[string]*vindexes.Table{
"t1": {
Expand Down

0 comments on commit 466454d

Please sign in to comment.