Skip to content

Commit 498a466

Browse files
Merge pull request #156 from github/backport-18260-to-release-19.0
Fix subquery merging regression introduced in vitessio#11379 (vitessio#18260)
2 parents 0cb1030 + ca43c11 commit 498a466

File tree

2 files changed

+38
-119
lines changed

2 files changed

+38
-119
lines changed

go/vt/vtgate/planbuilder/operators/route_planning.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,8 +392,8 @@ func canMergeOnFilter(ctx *plancontext.PlanningContext, a, b *Route, predicate s
392392
if comparison.Operator != sqlparser.EqualOp {
393393
return false
394394
}
395-
left := comparison.Left
396-
right := comparison.Right
395+
left := getColName(comparison.Left)
396+
right := getColName(comparison.Right)
397397

398398
lVindex := findColumnVindex(ctx, a, left)
399399
if lVindex == nil {

go/vt/vtgate/planbuilder/testdata/select_cases.json

Lines changed: 36 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -3846,46 +3846,19 @@
38463846
"QueryType": "SELECT",
38473847
"Original": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id IN (5, 6) GROUP BY music.user_id)",
38483848
"Instructions": {
3849-
"OperatorType": "UncorrelatedSubquery",
3850-
"Variant": "PulloutIn",
3851-
"PulloutVars": [
3852-
"__sq_has_values",
3853-
"__sq1"
3849+
"OperatorType": "Route",
3850+
"Variant": "IN",
3851+
"Keyspace": {
3852+
"Name": "user",
3853+
"Sharded": true
3854+
},
3855+
"FieldQuery": "select music.id from music where 1 != 1",
3856+
"Query": "select music.id from music where music.id in (select max(music.id) from music where music.user_id in (5, 6) group by music.user_id)",
3857+
"Table": "music",
3858+
"Values": [
3859+
"(5, 6)"
38543860
],
3855-
"Inputs": [
3856-
{
3857-
"InputName": "SubQuery",
3858-
"OperatorType": "Route",
3859-
"Variant": "IN",
3860-
"Keyspace": {
3861-
"Name": "user",
3862-
"Sharded": true
3863-
},
3864-
"FieldQuery": "select max(music.id) from music where 1 != 1 group by music.user_id",
3865-
"Query": "select max(music.id) from music where music.user_id in ::__vals group by music.user_id",
3866-
"Table": "music",
3867-
"Values": [
3868-
"(5, 6)"
3869-
],
3870-
"Vindex": "user_index"
3871-
},
3872-
{
3873-
"InputName": "Outer",
3874-
"OperatorType": "Route",
3875-
"Variant": "IN",
3876-
"Keyspace": {
3877-
"Name": "user",
3878-
"Sharded": true
3879-
},
3880-
"FieldQuery": "select music.id from music where 1 != 1",
3881-
"Query": "select music.id from music where :__sq_has_values and music.id in ::__vals",
3882-
"Table": "music",
3883-
"Values": [
3884-
"::__sq1"
3885-
],
3886-
"Vindex": "music_user_map"
3887-
}
3888-
]
3861+
"Vindex": "user_index"
38893862
},
38903863
"TablesUsed": [
38913864
"user.music"
@@ -3959,46 +3932,19 @@
39593932
"QueryType": "SELECT",
39603933
"Original": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id = 5)",
39613934
"Instructions": {
3962-
"OperatorType": "UncorrelatedSubquery",
3963-
"Variant": "PulloutIn",
3964-
"PulloutVars": [
3965-
"__sq_has_values",
3966-
"__sq1"
3935+
"OperatorType": "Route",
3936+
"Variant": "EqualUnique",
3937+
"Keyspace": {
3938+
"Name": "user",
3939+
"Sharded": true
3940+
},
3941+
"FieldQuery": "select music.id from music where 1 != 1",
3942+
"Query": "select music.id from music where music.id in (select max(music.id) from music where music.user_id = 5)",
3943+
"Table": "music",
3944+
"Values": [
3945+
"5"
39673946
],
3968-
"Inputs": [
3969-
{
3970-
"InputName": "SubQuery",
3971-
"OperatorType": "Route",
3972-
"Variant": "EqualUnique",
3973-
"Keyspace": {
3974-
"Name": "user",
3975-
"Sharded": true
3976-
},
3977-
"FieldQuery": "select max(music.id) from music where 1 != 1",
3978-
"Query": "select max(music.id) from music where music.user_id = 5",
3979-
"Table": "music",
3980-
"Values": [
3981-
"5"
3982-
],
3983-
"Vindex": "user_index"
3984-
},
3985-
{
3986-
"InputName": "Outer",
3987-
"OperatorType": "Route",
3988-
"Variant": "IN",
3989-
"Keyspace": {
3990-
"Name": "user",
3991-
"Sharded": true
3992-
},
3993-
"FieldQuery": "select music.id from music where 1 != 1",
3994-
"Query": "select music.id from music where :__sq_has_values and music.id in ::__vals",
3995-
"Table": "music",
3996-
"Values": [
3997-
"::__sq1"
3998-
],
3999-
"Vindex": "music_user_map"
4000-
}
4001-
]
3947+
"Vindex": "user_index"
40023948
},
40033949
"TablesUsed": [
40043950
"user.music"
@@ -4012,46 +3958,19 @@
40123958
"QueryType": "SELECT",
40133959
"Original": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id = 5 LIMIT 10)",
40143960
"Instructions": {
4015-
"OperatorType": "UncorrelatedSubquery",
4016-
"Variant": "PulloutIn",
4017-
"PulloutVars": [
4018-
"__sq_has_values",
4019-
"__sq1"
3961+
"OperatorType": "Route",
3962+
"Variant": "EqualUnique",
3963+
"Keyspace": {
3964+
"Name": "user",
3965+
"Sharded": true
3966+
},
3967+
"FieldQuery": "select music.id from music where 1 != 1",
3968+
"Query": "select music.id from music where music.id in (select max(music.id) from music where music.user_id = 5 limit 10)",
3969+
"Table": "music",
3970+
"Values": [
3971+
"5"
40203972
],
4021-
"Inputs": [
4022-
{
4023-
"InputName": "SubQuery",
4024-
"OperatorType": "Route",
4025-
"Variant": "EqualUnique",
4026-
"Keyspace": {
4027-
"Name": "user",
4028-
"Sharded": true
4029-
},
4030-
"FieldQuery": "select max(music.id) from music where 1 != 1",
4031-
"Query": "select max(music.id) from music where music.user_id = 5 limit 10",
4032-
"Table": "music",
4033-
"Values": [
4034-
"5"
4035-
],
4036-
"Vindex": "user_index"
4037-
},
4038-
{
4039-
"InputName": "Outer",
4040-
"OperatorType": "Route",
4041-
"Variant": "IN",
4042-
"Keyspace": {
4043-
"Name": "user",
4044-
"Sharded": true
4045-
},
4046-
"FieldQuery": "select music.id from music where 1 != 1",
4047-
"Query": "select music.id from music where :__sq_has_values and music.id in ::__vals",
4048-
"Table": "music",
4049-
"Values": [
4050-
"::__sq1"
4051-
],
4052-
"Vindex": "music_user_map"
4053-
}
4054-
]
3973+
"Vindex": "user_index"
40553974
},
40563975
"TablesUsed": [
40573976
"user.music"

0 commit comments

Comments
 (0)