From d06884c646bfbc429ed51f0ea635034d0064cd64 Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Mon, 19 Aug 2024 15:04:41 +0800 Subject: [PATCH 1/2] This is an automated cherry-pick of #55447 Signed-off-by: ti-chi-bot --- executor/analyzetest/analyze_test.go | 9 ++++++ pkg/executor/test/analyzetest/BUILD.bazel | 37 +++++++++++++++++++++++ planner/core/expression_rewriter.go | 10 ++++++ 3 files changed, 56 insertions(+) create mode 100644 pkg/executor/test/analyzetest/BUILD.bazel diff --git a/executor/analyzetest/analyze_test.go b/executor/analyzetest/analyze_test.go index cae564758b6be..224f7582cf40b 100644 --- a/executor/analyzetest/analyze_test.go +++ b/executor/analyzetest/analyze_test.go @@ -3270,3 +3270,12 @@ func TestAnalyzeColumnsSkipMVIndexJsonCol(t *testing.T) { require.True(t, stats.Indices[tblInfo.Indices[0].ID].IsStatsInitialized()) require.False(t, stats.Indices[tblInfo.Indices[1].ID].IsStatsInitialized()) } + +func TestIssue55438(t *testing.T) { + store := testkit.CreateMockStore(t) + tk := testkit.NewTestKit(t, store) + tk.MustExec("use test") + tk.MustExec("CREATE TABLE t0(c0 NUMERIC , c1 BIGINT UNSIGNED AS ((CASE 0 WHEN false THEN 1358571571 ELSE TRIM(c0) END )));") + tk.MustExec("CREATE INDEX i0 ON t0(c1);") + tk.MustExec("analyze table t0") +} diff --git a/pkg/executor/test/analyzetest/BUILD.bazel b/pkg/executor/test/analyzetest/BUILD.bazel new file mode 100644 index 0000000000000..49cdd55c580a9 --- /dev/null +++ b/pkg/executor/test/analyzetest/BUILD.bazel @@ -0,0 +1,37 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "analyzetest_test", + timeout = "short", + srcs = [ + "analyze_bench_test.go", + "analyze_test.go", + "main_test.go", + ], + flaky = True, + shard_count = 49, + deps = [ + "//pkg/config", + "//pkg/domain", + "//pkg/domain/infosync", + "//pkg/errno", + "//pkg/executor", + "//pkg/infoschema", + "//pkg/kv", + "//pkg/parser/model", + "//pkg/parser/mysql", + "//pkg/parser/terror", + "//pkg/planner/core", + "//pkg/session", + "//pkg/sessionctx", + "//pkg/sessionctx/variable", + "//pkg/statistics", + "//pkg/testkit", + "//pkg/testkit/analyzehelper", + "//pkg/util/dbterror/exeerrors", + "@com_github_pingcap_errors//:errors", + "@com_github_pingcap_failpoint//:failpoint", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/planner/core/expression_rewriter.go b/planner/core/expression_rewriter.go index 80c310dedde8a..ac6c8dbd50c3e 100644 --- a/planner/core/expression_rewriter.go +++ b/planner/core/expression_rewriter.go @@ -2045,6 +2045,16 @@ func (er *expressionRewriter) toColumn(v *ast.ColumnName) { } er.ctxStackAppend(column, er.names[idx]) return + } else if er.planCtx == nil && er.sourceTable != nil && + (v.Table.L == "" || er.sourceTable.Name.L == v.Table.L) { + colInfo := er.sourceTable.FindPublicColumnByName(v.Name.L) + if colInfo == nil || colInfo.Hidden { + er.err = plannererrors.ErrUnknownColumn.GenWithStackByArgs(v.Name, clauseMsg[er.clause()]) + return + } + er.ctxStackAppend(&expression.Column{RetType: &colInfo.FieldType, ID: colInfo.ID, UniqueID: colInfo.ID}, + &types.FieldName{ColName: v.Name}) + return } for i := len(er.b.outerSchemas) - 1; i >= 0; i-- { outerSchema, outerName := er.b.outerSchemas[i], er.b.outerNames[i] From 6c3681e062f27c693b13875f007043d85b8c5b02 Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Tue, 20 Aug 2024 11:47:15 +0800 Subject: [PATCH 2/2] update Signed-off-by: Weizhen Wang --- pkg/executor/test/analyzetest/BUILD.bazel | 37 ----------------------- 1 file changed, 37 deletions(-) delete mode 100644 pkg/executor/test/analyzetest/BUILD.bazel diff --git a/pkg/executor/test/analyzetest/BUILD.bazel b/pkg/executor/test/analyzetest/BUILD.bazel deleted file mode 100644 index 49cdd55c580a9..0000000000000 --- a/pkg/executor/test/analyzetest/BUILD.bazel +++ /dev/null @@ -1,37 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_test") - -go_test( - name = "analyzetest_test", - timeout = "short", - srcs = [ - "analyze_bench_test.go", - "analyze_test.go", - "main_test.go", - ], - flaky = True, - shard_count = 49, - deps = [ - "//pkg/config", - "//pkg/domain", - "//pkg/domain/infosync", - "//pkg/errno", - "//pkg/executor", - "//pkg/infoschema", - "//pkg/kv", - "//pkg/parser/model", - "//pkg/parser/mysql", - "//pkg/parser/terror", - "//pkg/planner/core", - "//pkg/session", - "//pkg/sessionctx", - "//pkg/sessionctx/variable", - "//pkg/statistics", - "//pkg/testkit", - "//pkg/testkit/analyzehelper", - "//pkg/util/dbterror/exeerrors", - "@com_github_pingcap_errors//:errors", - "@com_github_pingcap_failpoint//:failpoint", - "@com_github_stretchr_testify//require", - "@org_uber_go_goleak//:goleak", - ], -)