From df1b88eeb2fc9ef9a0a576c10da99e08f176a938 Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Fri, 14 Jul 2023 13:29:13 +0530 Subject: [PATCH] fix: error.as method usage to send pointer to the reference type expected. (#13496) Signed-off-by: Harshit Gangal --- go/vt/vttablet/tabletserver/schema/engine.go | 2 +- .../tabletserver/schema/engine_test.go | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/go/vt/vttablet/tabletserver/schema/engine.go b/go/vt/vttablet/tabletserver/schema/engine.go index 1cb15abb74b..51fca3bc92e 100644 --- a/go/vt/vttablet/tabletserver/schema/engine.go +++ b/go/vt/vttablet/tabletserver/schema/engine.go @@ -384,7 +384,7 @@ func (se *Engine) reload(ctx context.Context) error { table, err := LoadTable(conn, se.cp.DBName(), tableName, row[3].ToString()) if err != nil { isView := strings.Contains(tableType, tmutils.TableView) - var emptyColumnsError mysqlctl.EmptyColumnsErr + var emptyColumnsError *mysqlctl.EmptyColumnsErr if errors.As(err, &emptyColumnsError) && isView { log.Warningf("Failed reading schema for the table: %s, error: %v", tableName, err) continue diff --git a/go/vt/vttablet/tabletserver/schema/engine_test.go b/go/vt/vttablet/tabletserver/schema/engine_test.go index 29a74a28021..09830b6e19e 100644 --- a/go/vt/vttablet/tabletserver/schema/engine_test.go +++ b/go/vt/vttablet/tabletserver/schema/engine_test.go @@ -458,6 +458,35 @@ func TestOpenFailedDueToLoadTableErr(t *testing.T) { assert.Contains(t, logOutput, "The user specified as a definer ('root'@'%') does not exist (errno 1449) (sqlstate HY000)") } +// TestOpenFailedDueToEmptyColumnInView tests that schema engine load should not fail instead should log the failures for empty columns in view +func TestOpenFailedDueToEmptyColumnInView(t *testing.T) { + tl := syslogger.NewTestLogger() + defer tl.Close() + db := fakesqldb.New(t) + defer db.Close() + schematest.AddDefaultQueries(db) + db.AddQueryPattern(baseShowTablesPattern, &sqltypes.Result{ + Fields: mysql.BaseShowTablesFields, + Rows: [][]sqltypes.Value{ + mysql.BaseShowTablesRow("test_view", true, "VIEW"), + }, + }) + + // adding column query for table_view + db.AddQueryPattern(fmt.Sprintf(mysql.GetColumnNamesQueryPatternForTable, "test_view"), + &sqltypes.Result{}) + + AddFakeInnoDBReadRowsResult(db, 0) + se := newEngine(10, 1*time.Second, 1*time.Second, 0, db) + err := se.Open() + require.NoError(t, err) + + logs := tl.GetAllLogs() + logOutput := strings.Join(logs, ":::") + assert.Contains(t, logOutput, "WARNING:Failed reading schema for the table: test_view") + assert.Contains(t, logOutput, "unable to get columns for table fakesqldb.test_view") +} + func TestExportVars(t *testing.T) { db := fakesqldb.New(t) defer db.Close()