diff --git a/br/pkg/lightning/restore/tidb.go b/br/pkg/lightning/restore/tidb.go index 9cf278a67d1cc..f44691b601df3 100644 --- a/br/pkg/lightning/restore/tidb.go +++ b/br/pkg/lightning/restore/tidb.go @@ -195,7 +195,7 @@ func createIfNotExistsStmt(p *parser.Parser, createTable, dbName, tblName string for _, stmt := range stmts { switch node := stmt.(type) { case *ast.CreateDatabaseStmt: - node.Name = dbName + node.Name = model.NewCIStr(dbName) node.IfNotExists = true case *ast.CreateTableStmt: node.Table.Schema = model.NewCIStr(dbName) diff --git a/ddl/ddl_api.go b/ddl/ddl_api.go index 93bdaad56a0c4..0105ef79f7d0b 100644 --- a/ddl/ddl_api.go +++ b/ddl/ddl_api.go @@ -158,7 +158,7 @@ func (d *ddl) ModifySchemaCharsetAndCollate(ctx sessionctx.Context, stmt *ast.Al } // Check if need to change charset/collation. - dbName := model.NewCIStr(stmt.Name) + dbName := stmt.Name is := d.GetInfoSchemaWithInterceptor(ctx) dbInfo, ok := is.SchemaByName(dbName) if !ok { @@ -181,7 +181,7 @@ func (d *ddl) ModifySchemaCharsetAndCollate(ctx sessionctx.Context, stmt *ast.Al } func (d *ddl) ModifySchemaDefaultPlacement(ctx sessionctx.Context, stmt *ast.AlterDatabaseStmt, placementPolicyRef *model.PolicyRefInfo) (err error) { - dbName := model.NewCIStr(stmt.Name) + dbName := stmt.Name is := d.GetInfoSchemaWithInterceptor(ctx) dbInfo, ok := is.SchemaByName(dbName) if !ok { @@ -276,7 +276,7 @@ func (d *ddl) waitPendingTableThreshold(sctx sessionctx.Context, schemaID int64, } func (d *ddl) ModifySchemaSetTiFlashReplica(sctx sessionctx.Context, stmt *ast.AlterDatabaseStmt, tiflashReplica *ast.TiFlashReplicaSpec) error { - dbName := model.NewCIStr(stmt.Name) + dbName := stmt.Name is := d.GetInfoSchemaWithInterceptor(sctx) dbInfo, ok := is.SchemaByName(dbName) if !ok { diff --git a/executor/ddl.go b/executor/ddl.go index f77091b5a399b..af8742fb1f901 100644 --- a/executor/ddl.go +++ b/executor/ddl.go @@ -306,7 +306,7 @@ func (e *DDLExec) executeCreateDatabase(s *ast.CreateDatabaseStmt) error { } - err = domain.GetDomain(e.ctx).DDL().CreateSchema(e.ctx, model.NewCIStr(s.Name), opt, placementPolicyRef) + err = domain.GetDomain(e.ctx).DDL().CreateSchema(e.ctx, s.Name, opt, placementPolicyRef) if err != nil { if infoschema.ErrDatabaseExists.Equal(err) && s.IfNotExists { err = nil @@ -375,7 +375,7 @@ func (e *DDLExec) executeCreateIndex(s *ast.CreateIndexStmt) error { } func (e *DDLExec) executeDropDatabase(s *ast.DropDatabaseStmt) error { - dbName := model.NewCIStr(s.Name) + dbName := s.Name // Protect important system table from been dropped by a mistake. // I can hardly find a case that a user really need to do this. diff --git a/parser/ast/ddl.go b/parser/ast/ddl.go index 54b2734b8fde5..8ac6f0152749e 100644 --- a/parser/ast/ddl.go +++ b/parser/ast/ddl.go @@ -132,7 +132,7 @@ type CreateDatabaseStmt struct { ddlNode IfNotExists bool - Name string + Name model.CIStr Options []*DatabaseOption } @@ -142,7 +142,7 @@ func (n *CreateDatabaseStmt) Restore(ctx *format.RestoreCtx) error { if n.IfNotExists { ctx.WriteKeyWord("IF NOT EXISTS ") } - ctx.WriteName(n.Name) + ctx.WriteName(n.Name.O) for i, option := range n.Options { ctx.WritePlain(" ") err := option.Restore(ctx) @@ -168,7 +168,7 @@ func (n *CreateDatabaseStmt) Accept(v Visitor) (Node, bool) { type AlterDatabaseStmt struct { ddlNode - Name string + Name model.CIStr AlterDefaultDatabase bool Options []*DatabaseOption } @@ -191,7 +191,7 @@ func (n *AlterDatabaseStmt) Restore(ctx *format.RestoreCtx) error { ctx.WriteKeyWord("ALTER DATABASE") if !n.AlterDefaultDatabase { ctx.WritePlain(" ") - ctx.WriteName(n.Name) + ctx.WriteName(n.Name.O) } for i, option := range n.Options { ctx.WritePlain(" ") @@ -230,7 +230,7 @@ type DropDatabaseStmt struct { ddlNode IfExists bool - Name string + Name model.CIStr } // Restore implements Node interface. @@ -239,7 +239,7 @@ func (n *DropDatabaseStmt) Restore(ctx *format.RestoreCtx) error { if n.IfExists { ctx.WriteKeyWord("IF EXISTS ") } - ctx.WriteName(n.Name) + ctx.WriteName(n.Name.O) return nil } diff --git a/parser/parser.go b/parser/parser.go index 6263a9718444b..051b5550596c1 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -13251,7 +13251,7 @@ yynewstate: case 330: { parser.yyVAL.statement = &ast.AlterDatabaseStmt{ - Name: yyS[yypt-1].ident, + Name: model.NewCIStr(yyS[yypt-1].ident), AlterDefaultDatabase: false, Options: yyS[yypt-0].item.([]*ast.DatabaseOption), } @@ -13259,7 +13259,7 @@ yynewstate: case 331: { parser.yyVAL.statement = &ast.AlterDatabaseStmt{ - Name: "", + Name: model.NewCIStr(""), AlterDefaultDatabase: true, Options: yyS[yypt-0].item.([]*ast.DatabaseOption), } @@ -13268,7 +13268,7 @@ yynewstate: { parser.yyVAL.statement = &ast.CreateDatabaseStmt{ IfNotExists: yyS[yypt-2].item.(bool), - Name: yyS[yypt-1].ident, + Name: model.NewCIStr(yyS[yypt-1].ident), Options: yyS[yypt-0].item.([]*ast.DatabaseOption), } } @@ -13915,7 +13915,7 @@ yynewstate: } case 449: { - parser.yyVAL.statement = &ast.DropDatabaseStmt{IfExists: yyS[yypt-1].item.(bool), Name: yyS[yypt-0].ident} + parser.yyVAL.statement = &ast.DropDatabaseStmt{IfExists: yyS[yypt-1].item.(bool), Name: model.NewCIStr(yyS[yypt-0].ident)} } case 450: { diff --git a/parser/parser.y b/parser/parser.y index 465a2c69101aa..131fa55aaaebd 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -3655,7 +3655,7 @@ AlterDatabaseStmt: "ALTER" DatabaseSym DBName DatabaseOptionList { $$ = &ast.AlterDatabaseStmt{ - Name: $3, + Name: model.NewCIStr($3), AlterDefaultDatabase: false, Options: $4.([]*ast.DatabaseOption), } @@ -3663,7 +3663,7 @@ AlterDatabaseStmt: | "ALTER" DatabaseSym DatabaseOptionList { $$ = &ast.AlterDatabaseStmt{ - Name: "", + Name: model.NewCIStr(""), AlterDefaultDatabase: true, Options: $3.([]*ast.DatabaseOption), } @@ -3685,7 +3685,7 @@ CreateDatabaseStmt: { $$ = &ast.CreateDatabaseStmt{ IfNotExists: $3.(bool), - Name: $4, + Name: model.NewCIStr($4), Options: $5.([]*ast.DatabaseOption), } } @@ -4463,7 +4463,7 @@ DatabaseSym: DropDatabaseStmt: "DROP" DatabaseSym IfExists DBName { - $$ = &ast.DropDatabaseStmt{IfExists: $3.(bool), Name: $4} + $$ = &ast.DropDatabaseStmt{IfExists: $3.(bool), Name: model.NewCIStr($4)} } /****************************************************************** diff --git a/planner/core/planbuilder.go b/planner/core/planbuilder.go index ad8388f15a8f4..b150788d36a56 100644 --- a/planner/core/planbuilder.go +++ b/planner/core/planbuilder.go @@ -4159,16 +4159,16 @@ func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (Plan, err switch v := node.(type) { case *ast.AlterDatabaseStmt: if v.AlterDefaultDatabase { - v.Name = b.ctx.GetSessionVars().CurrentDB + v.Name = model.NewCIStr(b.ctx.GetSessionVars().CurrentDB) } - if v.Name == "" { + if v.Name.O == "" { return nil, ErrNoDB } if b.ctx.GetSessionVars().User != nil { authErr = ErrDBaccessDenied.GenWithStackByArgs("ALTER", b.ctx.GetSessionVars().User.AuthUsername, b.ctx.GetSessionVars().User.AuthHostname, v.Name) } - b.visitInfo = appendVisitInfo(b.visitInfo, mysql.AlterPriv, v.Name, "", "", authErr) + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.AlterPriv, v.Name.L, "", "", authErr) case *ast.AlterTableStmt: if b.ctx.GetSessionVars().User != nil { authErr = ErrTableaccessDenied.GenWithStackByArgs("ALTER", b.ctx.GetSessionVars().User.AuthUsername, @@ -4246,7 +4246,7 @@ func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (Plan, err authErr = ErrDBaccessDenied.GenWithStackByArgs(b.ctx.GetSessionVars().User.AuthUsername, b.ctx.GetSessionVars().User.AuthHostname, v.Name) } - b.visitInfo = appendVisitInfo(b.visitInfo, mysql.CreatePriv, v.Name, + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.CreatePriv, v.Name.L, "", "", authErr) case *ast.CreateIndexStmt: if b.ctx.GetSessionVars().User != nil { @@ -4340,7 +4340,7 @@ func (b *PlanBuilder) buildDDL(ctx context.Context, node ast.DDLNode) (Plan, err authErr = ErrDBaccessDenied.GenWithStackByArgs(b.ctx.GetSessionVars().User.AuthUsername, b.ctx.GetSessionVars().User.AuthHostname, v.Name) } - b.visitInfo = appendVisitInfo(b.visitInfo, mysql.DropPriv, v.Name, + b.visitInfo = appendVisitInfo(b.visitInfo, mysql.DropPriv, v.Name.L, "", "", authErr) case *ast.DropIndexStmt: if b.ctx.GetSessionVars().User != nil { diff --git a/planner/core/preprocess.go b/planner/core/preprocess.go index 5324eaf4de769..3d55d3f6c14d2 100644 --- a/planner/core/preprocess.go +++ b/planner/core/preprocess.go @@ -716,20 +716,20 @@ func (p *preprocessor) checkSetOprSelectList(stmt *ast.SetOprSelectList) { } func (p *preprocessor) checkCreateDatabaseGrammar(stmt *ast.CreateDatabaseStmt) { - if isIncorrectName(stmt.Name) { + if isIncorrectName(stmt.Name.L) { p.err = dbterror.ErrWrongDBName.GenWithStackByArgs(stmt.Name) } } func (p *preprocessor) checkAlterDatabaseGrammar(stmt *ast.AlterDatabaseStmt) { // for 'ALTER DATABASE' statement, database name can be empty to alter default database. - if isIncorrectName(stmt.Name) && !stmt.AlterDefaultDatabase { + if isIncorrectName(stmt.Name.L) && !stmt.AlterDefaultDatabase { p.err = dbterror.ErrWrongDBName.GenWithStackByArgs(stmt.Name) } } func (p *preprocessor) checkDropDatabaseGrammar(stmt *ast.DropDatabaseStmt) { - if isIncorrectName(stmt.Name) { + if isIncorrectName(stmt.Name.L) { p.err = dbterror.ErrWrongDBName.GenWithStackByArgs(stmt.Name) } }