Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions go/mysql/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,7 @@ const (
ERNoSuchTable = 1146
ERNonExistingTableGrant = 1147
ERKeyDoesNotExist = 1176
ERDbDropExists = 1008

// permissions
ERDBAccessDenied = 1044
Expand Down Expand Up @@ -382,10 +383,11 @@ const (
ErSPNotVarArg = 1414

// already exists
ERTableExists = 1050
ERDupEntry = 1062
ERFileExists = 1086
ERUDFExists = 1125
ERTableExists = 1050
ERDupEntry = 1062
ERFileExists = 1086
ERUDFExists = 1125
ERDbCreateExists = 1007

// aborted
ERGotSignal = 1078
Expand Down
8 changes: 5 additions & 3 deletions go/vt/vtgate/planbuilder/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ import (
"errors"
"sort"

"vitess.io/vitess/go/mysql"

"vitess.io/vitess/go/sqltypes"
querypb "vitess.io/vitess/go/vt/proto/query"
"vitess.io/vitess/go/vt/vtgate/semantics"
Expand Down Expand Up @@ -185,20 +187,20 @@ func buildDBDDLPlan(stmt sqlparser.Statement, vschema ContextVSchema) (engine.Pr
return engine.NewRowsPrimitive(make([][]sqltypes.Value, 0), make([]*querypb.Field, 0)), nil
}
if !ksExists {
return nil, vterrors.Errorf(vtrpcpb.Code_FAILED_PRECONDITION, "cannot drop database '%s'; database does not exists", ksName)
return nil, mysql.NewSQLError(mysql.ERDbDropExists, mysql.SSUnknownSQLState, "Can't drop database '%s'; database doesn't exists", ksName)
}
return nil, vterrors.New(vtrpcpb.Code_UNIMPLEMENTED, "drop database not allowed")
case *sqlparser.AlterDatabase:
if !ksExists {
return nil, vterrors.Errorf(vtrpcpb.Code_FAILED_PRECONDITION, "cannot alter database '%s'; database does not exists", ksName)
return nil, vterrors.Errorf(vtrpcpb.Code_FAILED_PRECONDITION, "Can't alter database '%s'; database doesn't exists", ksName)
}
return nil, vterrors.New(vtrpcpb.Code_UNIMPLEMENTED, "alter database not allowed")
case *sqlparser.CreateDatabase:
if dbDDL.IfNotExists && ksExists {
return engine.NewRowsPrimitive(make([][]sqltypes.Value, 0), make([]*querypb.Field, 0)), nil
}
if !dbDDL.IfNotExists && ksExists {
return nil, vterrors.Errorf(vtrpcpb.Code_ALREADY_EXISTS, "cannot create database '%s'; database exists", ksName)
return nil, mysql.NewSQLError(mysql.ERDbCreateExists, mysql.SSUnknownSQLState, "Can't create database '%s'; database exists", ksName)
}
return nil, vterrors.New(vtrpcpb.Code_UNIMPLEMENTED, "create database not allowed")
}
Expand Down
6 changes: 3 additions & 3 deletions go/vt/vtgate/planbuilder/testdata/ddl_cases.txt
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@

# create db main
"create database main"
"cannot create database 'main'; database exists"
"Can't create database 'main'; database exists (errno 1007) (sqlstate HY000)"

# create db if not exists main
"create database if not exists main"
Expand All @@ -116,15 +116,15 @@

# alter db foo
"alter database foo collate utf8"
"cannot alter database 'foo'; database does not exists"
"Can't alter database 'foo'; database doesn't exists"

# alter db main
"alter database main collate utf8"
"alter database not allowed"

# drop db foo
"drop database foo"
"cannot drop database 'foo'; database does not exists"
"Can't drop database 'foo'; database doesn't exists (errno 1008) (sqlstate HY000)"

# drop db main
"drop database main"
Expand Down