From 085ec578d8ebb78ba0cbe39d51e2653048f431ad Mon Sep 17 00:00:00 2001 From: Rustin-Liu Date: Fri, 6 Mar 2020 18:24:17 +0800 Subject: [PATCH 1/6] executor: bind the func to memtableRetriever Signed-off-by: Rustin-Liu --- executor/infoschema_reader.go | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/executor/infoschema_reader.go b/executor/infoschema_reader.go index 84056de79183c..994f2d7331f19 100644 --- a/executor/infoschema_reader.go +++ b/executor/infoschema_reader.go @@ -71,9 +71,9 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex case infoschema.TableCollations: e.rows = dataForCollations() case infoschema.TableKeyColumn: - e.rows = dataForKeyColumnUsage(sctx, dbs) + e.setDataFromKeyColumnUsage(sctx, dbs) case infoschema.TableCollationCharacterSetApplicability: - e.rows = dataForCollationCharacterSetApplicability() + e.dataForCollationCharacterSetApplicability() case infoschema.TableUserPrivileges: e.setDataFromUserPrivileges(sctx) } @@ -630,17 +630,18 @@ func dataForCollations() (records [][]types.Datum) { return records } -func dataForCollationCharacterSetApplicability() (records [][]types.Datum) { +func (e *memtableRetriever) dataForCollationCharacterSetApplicability() { + var rows [][]types.Datum collations := charset.GetSupportedCollations() for _, collation := range collations { - records = append(records, + rows = append(rows, types.MakeDatums(collation.Name, collation.CharsetName), ) } - return records + e.rows = rows } -func dataForKeyColumnUsage(ctx sessionctx.Context, schemas []*model.DBInfo) [][]types.Datum { +func (e *memtableRetriever) setDataFromKeyColumnUsage(ctx sessionctx.Context, schemas []*model.DBInfo) { checker := privilege.GetPrivilegeManager(ctx) rows := make([][]types.Datum, 0, len(schemas)) // The capacity is not accurate, but it is not a big problem. for _, schema := range schemas { @@ -652,7 +653,12 @@ func dataForKeyColumnUsage(ctx sessionctx.Context, schemas []*model.DBInfo) [][] rows = append(rows, rs...) } } - return rows + e.rows = rows +} + +func (e *memtableRetriever) setDataFromUserPrivileges(ctx sessionctx.Context) { + pm := privilege.GetPrivilegeManager(ctx) + e.rows = pm.UserPrivilegesTable() } func keyColumnUsageInTable(schema *model.DBInfo, table *model.TableInfo) [][]types.Datum { @@ -738,8 +744,3 @@ func keyColumnUsageInTable(schema *model.DBInfo, table *model.TableInfo) [][]typ } return rows } - -func (e *memtableRetriever) setDataFromUserPrivileges(ctx sessionctx.Context) { - pm := privilege.GetPrivilegeManager(ctx) - e.rows = pm.UserPrivilegesTable() -} From a04c15bf321f7181c81a25e2d9e0745c776665ed Mon Sep 17 00:00:00 2001 From: Rustin-Liu Date: Fri, 6 Mar 2020 18:31:23 +0800 Subject: [PATCH 2/6] executor: bind dataForSchemata to memtableRetriever Signed-off-by: Rustin-Liu --- executor/infoschema_reader.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/executor/infoschema_reader.go b/executor/infoschema_reader.go index 994f2d7331f19..a3420059d1128 100644 --- a/executor/infoschema_reader.go +++ b/executor/infoschema_reader.go @@ -55,7 +55,7 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex var err error switch e.table.Name.O { case infoschema.TableSchemata: - e.rows = dataForSchemata(sctx, dbs) + e.dataForSchemata(sctx, dbs) case infoschema.TableTables: e.rows, err = dataForTables(sctx, dbs) case infoschema.TablePartitions: @@ -237,7 +237,7 @@ func getAutoIncrementID(ctx sessionctx.Context, schema *model.DBInfo, tblInfo *m return tbl.Allocator(ctx, autoid.RowIDAllocType).Base() + 1, nil } -func dataForSchemata(ctx sessionctx.Context, schemas []*model.DBInfo) [][]types.Datum { +func (e *memtableRetriever) dataForSchemata(ctx sessionctx.Context, schemas []*model.DBInfo) { checker := privilege.GetPrivilegeManager(ctx) rows := make([][]types.Datum, 0, len(schemas)) @@ -266,7 +266,7 @@ func dataForSchemata(ctx sessionctx.Context, schemas []*model.DBInfo) [][]types. ) rows = append(rows, record) } - return rows + e.rows = rows } func dataForTables(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]types.Datum, error) { From 925d0610fb427133f6fffaac6504dda090bdd144 Mon Sep 17 00:00:00 2001 From: Rustin-Liu Date: Fri, 6 Mar 2020 18:32:32 +0800 Subject: [PATCH 3/6] executor: rename dataForSchemata Signed-off-by: Rustin-Liu --- executor/infoschema_reader.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/executor/infoschema_reader.go b/executor/infoschema_reader.go index a3420059d1128..595be8bba09fa 100644 --- a/executor/infoschema_reader.go +++ b/executor/infoschema_reader.go @@ -55,7 +55,7 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex var err error switch e.table.Name.O { case infoschema.TableSchemata: - e.dataForSchemata(sctx, dbs) + e.setDataFromSchemata(sctx, dbs) case infoschema.TableTables: e.rows, err = dataForTables(sctx, dbs) case infoschema.TablePartitions: @@ -237,7 +237,7 @@ func getAutoIncrementID(ctx sessionctx.Context, schema *model.DBInfo, tblInfo *m return tbl.Allocator(ctx, autoid.RowIDAllocType).Base() + 1, nil } -func (e *memtableRetriever) dataForSchemata(ctx sessionctx.Context, schemas []*model.DBInfo) { +func (e *memtableRetriever) setDataFromSchemata(ctx sessionctx.Context, schemas []*model.DBInfo) { checker := privilege.GetPrivilegeManager(ctx) rows := make([][]types.Datum, 0, len(schemas)) From a59f9a050ea2e6ec11f1b363ea5abc33caa92cd4 Mon Sep 17 00:00:00 2001 From: Rustin-Liu Date: Fri, 6 Mar 2020 18:36:55 +0800 Subject: [PATCH 4/6] executor: bind the func to memtableRetriever Signed-off-by: Rustin-Liu --- executor/infoschema_reader.go | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/executor/infoschema_reader.go b/executor/infoschema_reader.go index 595be8bba09fa..292f3c31588c0 100644 --- a/executor/infoschema_reader.go +++ b/executor/infoschema_reader.go @@ -65,11 +65,11 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex case infoschema.TableViews: e.rows, err = dataForViews(sctx, dbs) case infoschema.TableEngines: - e.rows = dataForEngines() + e.setDataFromEngines() case infoschema.TableCharacterSets: - e.rows = dataForCharacterSets() + e.setDataFromCharacterSets() case infoschema.TableCollations: - e.rows = dataForCollations() + e.setDataFromCollations() case infoschema.TableKeyColumn: e.setDataFromKeyColumnUsage(sctx, dbs) case infoschema.TableCollationCharacterSetApplicability: @@ -592,7 +592,8 @@ func dataForViews(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]types.Da return rows, nil } -func dataForEngines() (rows [][]types.Datum) { +func (e *memtableRetriever) setDataFromEngines() { + var rows [][]types.Datum rows = append(rows, types.MakeDatums( "InnoDB", // Engine @@ -603,31 +604,33 @@ func dataForEngines() (rows [][]types.Datum) { "YES", // Savepoints ), ) - return rows + e.rows = rows } -func dataForCharacterSets() (records [][]types.Datum) { +func (e *memtableRetriever) setDataFromCharacterSets() { + var rows [][]types.Datum charsets := charset.GetSupportedCharsets() for _, charset := range charsets { - records = append(records, + rows = append(rows, types.MakeDatums(charset.Name, charset.DefaultCollation, charset.Desc, charset.Maxlen), ) } - return records + e.rows = rows } -func dataForCollations() (records [][]types.Datum) { +func (e *memtableRetriever) setDataFromCollations() { + var rows [][]types.Datum collations := charset.GetSupportedCollations() for _, collation := range collations { isDefault := "" if collation.IsDefault { isDefault = "Yes" } - records = append(records, + rows = append(rows, types.MakeDatums(collation.Name, collation.CharsetName, collation.ID, isDefault, "Yes", 1), ) } - return records + e.rows = rows } func (e *memtableRetriever) dataForCollationCharacterSetApplicability() { From a21d740fea0034c5a898c6705ffe18eb9f586f05 Mon Sep 17 00:00:00 2001 From: Rustin-Liu Date: Fri, 6 Mar 2020 18:42:54 +0800 Subject: [PATCH 5/6] executor: bind the func to memtableRetriever Signed-off-by: Rustin-Liu --- executor/infoschema_reader.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/executor/infoschema_reader.go b/executor/infoschema_reader.go index 292f3c31588c0..081e31d0ea336 100644 --- a/executor/infoschema_reader.go +++ b/executor/infoschema_reader.go @@ -61,9 +61,9 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex case infoschema.TablePartitions: e.rows, err = dataForPartitions(sctx, dbs) case infoschema.TableTiDBIndexes: - e.rows, err = dataForIndexes(sctx, dbs) + e.setDataFromIndexes(sctx, dbs) case infoschema.TableViews: - e.rows, err = dataForViews(sctx, dbs) + e.setDataFromViews(sctx, dbs) case infoschema.TableEngines: e.setDataFromEngines() case infoschema.TableCharacterSets: @@ -484,7 +484,7 @@ func dataForPartitions(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]typ return rows, nil } -func dataForIndexes(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]types.Datum, error) { +func (e *memtableRetriever) setDataFromIndexes(ctx sessionctx.Context, schemas []*model.DBInfo) { checker := privilege.GetPrivilegeManager(ctx) var rows [][]types.Datum for _, schema := range schemas { @@ -552,10 +552,10 @@ func dataForIndexes(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]types. } } } - return rows, nil + e.rows = rows } -func dataForViews(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]types.Datum, error) { +func (e *memtableRetriever) setDataFromViews(ctx sessionctx.Context, schemas []*model.DBInfo) { checker := privilege.GetPrivilegeManager(ctx) var rows [][]types.Datum for _, schema := range schemas { @@ -589,7 +589,7 @@ func dataForViews(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]types.Da rows = append(rows, record) } } - return rows, nil + e.rows = rows } func (e *memtableRetriever) setDataFromEngines() { From 84139ca0cb7da8c83dee788c78aeaef90b7d690d Mon Sep 17 00:00:00 2001 From: Rustin-Liu Date: Mon, 9 Mar 2020 11:11:24 +0800 Subject: [PATCH 6/6] executor: bind func to memtableRetriever Signed-off-by: Rustin-Liu --- executor/infoschema_reader.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/executor/infoschema_reader.go b/executor/infoschema_reader.go index 081e31d0ea336..9fd5e51668f91 100644 --- a/executor/infoschema_reader.go +++ b/executor/infoschema_reader.go @@ -57,9 +57,9 @@ func (e *memtableRetriever) retrieve(ctx context.Context, sctx sessionctx.Contex case infoschema.TableSchemata: e.setDataFromSchemata(sctx, dbs) case infoschema.TableTables: - e.rows, err = dataForTables(sctx, dbs) + err = e.dataForTables(sctx, dbs) case infoschema.TablePartitions: - e.rows, err = dataForPartitions(sctx, dbs) + err = e.dataForPartitions(sctx, dbs) case infoschema.TableTiDBIndexes: e.setDataFromIndexes(sctx, dbs) case infoschema.TableViews: @@ -269,10 +269,10 @@ func (e *memtableRetriever) setDataFromSchemata(ctx sessionctx.Context, schemas e.rows = rows } -func dataForTables(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]types.Datum, error) { +func (e *memtableRetriever) dataForTables(ctx sessionctx.Context, schemas []*model.DBInfo) error { tableRowsMap, colLengthMap, err := tableStatsCache.get(ctx) if err != nil { - return nil, err + return err } checker := privilege.GetPrivilegeManager(ctx) @@ -302,7 +302,7 @@ func dataForTables(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]types.D if hasAutoIncID { autoIncID, err = getAutoIncrementID(ctx, schema, table) if err != nil { - return nil, err + return err } } @@ -380,13 +380,14 @@ func dataForTables(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]types.D } } } - return rows, nil + e.rows = rows + return nil } -func dataForPartitions(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]types.Datum, error) { +func (e *memtableRetriever) dataForPartitions(ctx sessionctx.Context, schemas []*model.DBInfo) error { tableRowsMap, colLengthMap, err := tableStatsCache.get(ctx) if err != nil { - return nil, err + return err } checker := privilege.GetPrivilegeManager(ctx) var rows [][]types.Datum @@ -481,7 +482,8 @@ func dataForPartitions(ctx sessionctx.Context, schemas []*model.DBInfo) ([][]typ } } } - return rows, nil + e.rows = rows + return nil } func (e *memtableRetriever) setDataFromIndexes(ctx sessionctx.Context, schemas []*model.DBInfo) {