From ccbf2ed31d595a9c118493a343e3becf6d50b084 Mon Sep 17 00:00:00 2001 From: David Piegza <697113+davidpiegza@users.noreply.github.com> Date: Tue, 1 Jul 2025 13:03:23 +0200 Subject: [PATCH 1/4] Set parsed comments in operator for subqueries (#18369) Signed-off-by: David Piegza --- .../operators/subquery_planning.go | 3 + .../planbuilder/testdata/select_cases.json | 68 +++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/go/vt/vtgate/planbuilder/operators/subquery_planning.go b/go/vt/vtgate/planbuilder/operators/subquery_planning.go index 11ff963503d..774427ca2d8 100644 --- a/go/vt/vtgate/planbuilder/operators/subquery_planning.go +++ b/go/vt/vtgate/planbuilder/operators/subquery_planning.go @@ -550,6 +550,9 @@ func tryMergeSubqueryWithOuter(ctx *plancontext.PlanningContext, subQuery *SubQu if !subQuery.IsArgument { op.Source = newFilter(outer.Source, subQuery.Original) } + if outer.Comments != nil { + op.Comments = outer.Comments + } ctx.MergedSubqueries = append(ctx.MergedSubqueries, subQuery.originalSubquery) return op, Rewrote("merged subquery with outer") } diff --git a/go/vt/vtgate/planbuilder/testdata/select_cases.json b/go/vt/vtgate/planbuilder/testdata/select_cases.json index 9091c5d8613..7932893c721 100644 --- a/go/vt/vtgate/planbuilder/testdata/select_cases.json +++ b/go/vt/vtgate/planbuilder/testdata/select_cases.json @@ -933,6 +933,74 @@ ] } }, + { + "comment": "Comments with subquery", + "query": "select /* comment */ user.col from user where id IN (select id from user where id > 1 and id < 10)", + "plan": { + "Type": "Scatter", + "QueryType": "SELECT", + "Original": "select /* comment */ user.col from user where id IN (select id from user where id > 1 and id < 10)", + "Instructions": { + "OperatorType": "Route", + "Variant": "Scatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select /* comment */ `user`.col from `user` where id in (select id from `user` where id > 1 and id < 10)" + }, + "TablesUsed": [ + "user.user" + ] + }, + "skip_e2e": true + }, + { + "comment": "Comments with subquery not merged into a single route", + "query": "select /* comment */ user.col from user where foo IN (select id from user where id > 1 and id < 10)", + "plan": { + "Type": "Complex", + "QueryType": "SELECT", + "Original": "select /* comment */ user.col from user where foo IN (select id from user where id > 1 and id < 10)", + "Instructions": { + "OperatorType": "UncorrelatedSubquery", + "Variant": "PulloutIn", + "PulloutVars": [ + "__sq_has_values", + "__sq1" + ], + "Inputs": [ + { + "InputName": "SubQuery", + "OperatorType": "Route", + "Variant": "Scatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select id from `user` where 1 != 1", + "Query": "select /* comment */ id from `user` where id > 1 and id < 10" + }, + { + "InputName": "Outer", + "OperatorType": "Route", + "Variant": "Scatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select `user`.col from `user` where 1 != 1", + "Query": "select /* comment */ `user`.col from `user` where :__sq_has_values and foo in ::__sq1" + } + ] + }, + "TablesUsed": [ + "user.user" + ] + }, + "skip_e2e": true + }, { "comment": "for update", "query": "select user.col from user join user_extra for update", From 04c51cbef889c570f513c2fca755bae706464e7d Mon Sep 17 00:00:00 2001 From: Mohamed Hamza Date: Fri, 8 Aug 2025 13:05:29 -0400 Subject: [PATCH 2/4] rerun ci Signed-off-by: Mohamed Hamza From 378d6a902f7b73528e0f987f6b80d4701a9995f1 Mon Sep 17 00:00:00 2001 From: Mohamed Hamza Date: Fri, 8 Aug 2025 13:38:44 -0400 Subject: [PATCH 3/4] remove skip_e2e Signed-off-by: Mohamed Hamza --- go/vt/vtgate/planbuilder/testdata/select_cases.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/go/vt/vtgate/planbuilder/testdata/select_cases.json b/go/vt/vtgate/planbuilder/testdata/select_cases.json index 7932893c721..34ff0ee8e55 100644 --- a/go/vt/vtgate/planbuilder/testdata/select_cases.json +++ b/go/vt/vtgate/planbuilder/testdata/select_cases.json @@ -953,8 +953,7 @@ "TablesUsed": [ "user.user" ] - }, - "skip_e2e": true + } }, { "comment": "Comments with subquery not merged into a single route", @@ -998,8 +997,7 @@ "TablesUsed": [ "user.user" ] - }, - "skip_e2e": true + } }, { "comment": "for update", From e001cd01473edeb17a2478edf36441039f384ac3 Mon Sep 17 00:00:00 2001 From: Mohamed Hamza Date: Sat, 9 Aug 2025 08:43:52 -0400 Subject: [PATCH 4/4] fix test cases --- go/vt/vtgate/planbuilder/testdata/select_cases.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/go/vt/vtgate/planbuilder/testdata/select_cases.json b/go/vt/vtgate/planbuilder/testdata/select_cases.json index 34ff0ee8e55..ef6df93441e 100644 --- a/go/vt/vtgate/planbuilder/testdata/select_cases.json +++ b/go/vt/vtgate/planbuilder/testdata/select_cases.json @@ -937,7 +937,6 @@ "comment": "Comments with subquery", "query": "select /* comment */ user.col from user where id IN (select id from user where id > 1 and id < 10)", "plan": { - "Type": "Scatter", "QueryType": "SELECT", "Original": "select /* comment */ user.col from user where id IN (select id from user where id > 1 and id < 10)", "Instructions": { @@ -948,7 +947,8 @@ "Sharded": true }, "FieldQuery": "select `user`.col from `user` where 1 != 1", - "Query": "select /* comment */ `user`.col from `user` where id in (select id from `user` where id > 1 and id < 10)" + "Query": "select /* comment */ `user`.col from `user` where id in (select id from `user` where id > 1 and id < 10)", + "Table": "`user`" }, "TablesUsed": [ "user.user" @@ -959,7 +959,6 @@ "comment": "Comments with subquery not merged into a single route", "query": "select /* comment */ user.col from user where foo IN (select id from user where id > 1 and id < 10)", "plan": { - "Type": "Complex", "QueryType": "SELECT", "Original": "select /* comment */ user.col from user where foo IN (select id from user where id > 1 and id < 10)", "Instructions": { @@ -979,7 +978,8 @@ "Sharded": true }, "FieldQuery": "select id from `user` where 1 != 1", - "Query": "select /* comment */ id from `user` where id > 1 and id < 10" + "Query": "select /* comment */ id from `user` where id > 1 and id < 10", + "Table": "`user`" }, { "InputName": "Outer", @@ -990,7 +990,8 @@ "Sharded": true }, "FieldQuery": "select `user`.col from `user` where 1 != 1", - "Query": "select /* comment */ `user`.col from `user` where :__sq_has_values and foo in ::__sq1" + "Query": "select /* comment */ `user`.col from `user` where :__sq_has_values and foo in ::__sq1", + "Table": "`user`" } ] },