diff --git a/ddl/db_change_test.go b/ddl/db_change_test.go index dee4723eb8b5c..2e51b1d7bd830 100644 --- a/ddl/db_change_test.go +++ b/ddl/db_change_test.go @@ -1087,8 +1087,7 @@ func (s *testStateChangeSuite) TestParallelTruncateTableAndAddColumn(c *C) { f := func(c *C, err1, err2 error) { c.Assert(err1, IsNil) c.Assert(err2, NotNil) - c.Assert(err2.Error(), Equals, "[domain:2]Information schema is changed. [try again later]") - + c.Assert(err2.Error(), Equals, "[domain:8028]Information schema is changed during the execution of the statement(for example, table definition may be updated by other DDL ran in parallel). If you see this error often, try increasing `tidb_max_delta_schema_count`. [try again later]") } s.testControlParallelExecSQL(c, sql1, sql2, f) } diff --git a/ddl/db_test.go b/ddl/db_test.go index a665a2ed82246..0265c06e626fd 100644 --- a/ddl/db_test.go +++ b/ddl/db_test.go @@ -3476,7 +3476,7 @@ func (s *testDBSuite2) TestLockTables(c *C) { tk2.MustExec("lock tables t1 write") _, err = tk.Exec("commit") c.Assert(err, NotNil) - c.Assert(err.Error(), Equals, "previous statement: insert into t1 set a=1: [domain:2]Information schema is changed. [try again later]") + c.Assert(err.Error(), Equals, "previous statement: insert into t1 set a=1: [domain:8028]Information schema is changed during the execution of the statement(for example, table definition may be updated by other DDL ran in parallel). If you see this error often, try increasing `tidb_max_delta_schema_count`. [try again later]") // Test lock table by other session in transaction and commit with retry. tk.MustExec("unlock tables") diff --git a/ddl/failtest/fail_db_test.go b/ddl/failtest/fail_db_test.go index fbf4ee15f784a..487be5434f812 100644 --- a/ddl/failtest/fail_db_test.go +++ b/ddl/failtest/fail_db_test.go @@ -263,7 +263,7 @@ func (s *testFailDBSuite) TestFailSchemaSyncer(c *C) { c.Assert(s.dom.SchemaValidator.IsStarted(), IsFalse) _, err := tk.Exec("insert into t values(1)") c.Assert(err, NotNil) - c.Assert(err.Error(), Equals, "[domain:1]Information schema is out of date.") + c.Assert(err.Error(), Equals, "[domain:8027]Information schema is out of date: schema failed to update in 1 lease, please make sure TiDB can connect to TiKV") c.Assert(failpoint.Disable("github.com/pingcap/tidb/domain/ErrorMockReloadFailed"), IsNil) // wait the schemaValidator is started. for i := 0; i < 50; i++ { diff --git a/domain/domain.go b/domain/domain.go index 2a7b634e1a0c4..4f46f4562b483 100644 --- a/domain/domain.go +++ b/domain/domain.go @@ -27,6 +27,7 @@ import ( "github.com/pingcap/failpoint" "github.com/pingcap/parser/ast" "github.com/pingcap/parser/model" + "github.com/pingcap/parser/mysql" "github.com/pingcap/parser/terror" "github.com/pingcap/tidb/bindinfo" "github.com/pingcap/tidb/config" @@ -1112,21 +1113,19 @@ func recoverInDomain(funcName string, quit bool) { } } -// Domain error codes. -const ( - codeInfoSchemaExpired terror.ErrCode = 1 - codeInfoSchemaChanged terror.ErrCode = 2 -) - var ( // ErrInfoSchemaExpired returns the error that information schema is out of date. - ErrInfoSchemaExpired = terror.ClassDomain.New(codeInfoSchemaExpired, "Information schema is out of date.") + ErrInfoSchemaExpired = terror.ClassDomain.New(mysql.ErrInfoSchemaExpired, mysql.MySQLErrName[mysql.ErrInfoSchemaExpired]) // ErrInfoSchemaChanged returns the error that information schema is changed. - ErrInfoSchemaChanged = terror.ClassDomain.New(codeInfoSchemaChanged, - "Information schema is changed. "+kv.TxnRetryableMark) + ErrInfoSchemaChanged = terror.ClassDomain.New(mysql.ErrInfoSchemaChanged, + mysql.MySQLErrName[mysql.ErrInfoSchemaChanged]+". "+kv.TxnRetryableMark) ) func init() { // Map error codes to mysql error codes. - terror.ErrClassToMySQLCodes[terror.ClassDomain] = make(map[terror.ErrCode]uint16) + domainMySQLErrCodes := map[terror.ErrCode]uint16{ + mysql.ErrInfoSchemaExpired: mysql.ErrInfoSchemaExpired, + mysql.ErrInfoSchemaChanged: mysql.ErrInfoSchemaChanged, + } + terror.ErrClassToMySQLCodes[terror.ClassDomain] = domainMySQLErrCodes } diff --git a/domain/domain_test.go b/domain/domain_test.go index 294a4b389160c..3a88d2c2d289a 100644 --- a/domain/domain_test.go +++ b/domain/domain_test.go @@ -422,6 +422,6 @@ func (*testSuite) TestSessionPool(c *C) { } func (*testSuite) TestErrorCode(c *C) { - c.Assert(int(ErrInfoSchemaExpired.ToSQLError().Code), Equals, mysql.ErrUnknown) - c.Assert(int(ErrInfoSchemaChanged.ToSQLError().Code), Equals, mysql.ErrUnknown) + c.Assert(int(ErrInfoSchemaExpired.ToSQLError().Code), Equals, mysql.ErrInfoSchemaExpired) + c.Assert(int(ErrInfoSchemaChanged.ToSQLError().Code), Equals, mysql.ErrInfoSchemaChanged) } diff --git a/go.mod b/go.mod index a5ae0fc5001d7..5639b5dd3009d 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/pingcap/goleveldb v0.0.0-20171020122428-b9ff6c35079e github.com/pingcap/kvproto v0.0.0-20191104103048-40f562012fb1 github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9 - github.com/pingcap/parser v0.0.0-20191031081038-bfb0c3adf567 + github.com/pingcap/parser v0.0.0-20191107084102-68af6554dec7 github.com/pingcap/pd v1.1.0-beta.0.20190923032047-5c648dc365e0 github.com/pingcap/tidb-tools v3.0.6-0.20191106033616-90632dda3863+incompatible github.com/pingcap/tipb v0.0.0-20191105120856-bd4b782c8393 diff --git a/go.sum b/go.sum index 7774b7130ee1a..d91f8b94bb88f 100644 --- a/go.sum +++ b/go.sum @@ -194,8 +194,8 @@ github.com/pingcap/kvproto v0.0.0-20191104103048-40f562012fb1/go.mod h1:WWLmULLO github.com/pingcap/log v0.0.0-20190715063458-479153f07ebd/go.mod h1:WpHUKhNZ18v116SvGrmjkA9CBhYmuUTKL+p8JC9ANEw= github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9 h1:AJD9pZYm72vMgPcQDww9rkZ1DnWfl0pXV3BOWlkYIjA= github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= -github.com/pingcap/parser v0.0.0-20191031081038-bfb0c3adf567 h1:Ge5Vt+44xJkb2DZwrdyoD+qMclm1Sq5bWyCc6mW7GpI= -github.com/pingcap/parser v0.0.0-20191031081038-bfb0c3adf567/go.mod h1:1FNvfp9+J0wvc4kl8eGNh7Rqrxveg15jJoWo/a0uHwA= +github.com/pingcap/parser v0.0.0-20191107084102-68af6554dec7 h1:vjPDsANQmfb+RHVfQvqzb/xpzkQhFdICUEjtA8XvAYw= +github.com/pingcap/parser v0.0.0-20191107084102-68af6554dec7/go.mod h1:1FNvfp9+J0wvc4kl8eGNh7Rqrxveg15jJoWo/a0uHwA= github.com/pingcap/pd v1.1.0-beta.0.20190923032047-5c648dc365e0 h1:GIEq+wZfrl2bcJxpuSrEH4H7/nlf5YdmpS+dU9lNIt8= github.com/pingcap/pd v1.1.0-beta.0.20190923032047-5c648dc365e0/go.mod h1:G/6rJpnYwM0LKMec2rI82/5Kg6GaZMvlfB+e6/tvYmI= github.com/pingcap/tidb-tools v3.0.6-0.20191106033616-90632dda3863+incompatible h1:H1jg0aDWz2SLRh3hNBo2HFtnuHtudIUvBumU7syRkic= diff --git a/server/server_test.go b/server/server_test.go index 66bc0892f561d..0156986fe5ee7 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -790,21 +790,21 @@ func runTestErrorCode(c *C) { checkErrorCode(c, err, tmysql.ErrNoSuchTable) _, err = txn2.Exec("create database test;") // Make tests stable. Some times the error may be the ErrInfoSchemaChanged. - checkErrorCode(c, err, tmysql.ErrDBCreateExists, tmysql.ErrUnknown) + checkErrorCode(c, err, tmysql.ErrDBCreateExists, tmysql.ErrInfoSchemaChanged) _, err = txn2.Exec("create database aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;") - checkErrorCode(c, err, tmysql.ErrTooLongIdent, tmysql.ErrUnknown) + checkErrorCode(c, err, tmysql.ErrTooLongIdent, tmysql.ErrInfoSchemaChanged) _, err = txn2.Exec("create table test (c int);") - checkErrorCode(c, err, tmysql.ErrTableExists, tmysql.ErrUnknown) + checkErrorCode(c, err, tmysql.ErrTableExists, tmysql.ErrInfoSchemaChanged) _, err = txn2.Exec("drop table unknown_table;") - checkErrorCode(c, err, tmysql.ErrBadTable, tmysql.ErrUnknown) + checkErrorCode(c, err, tmysql.ErrBadTable, tmysql.ErrInfoSchemaChanged) _, err = txn2.Exec("drop database unknown_db;") - checkErrorCode(c, err, tmysql.ErrDBDropExists, tmysql.ErrUnknown) + checkErrorCode(c, err, tmysql.ErrDBDropExists, tmysql.ErrInfoSchemaChanged) _, err = txn2.Exec("create table aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (a int);") - checkErrorCode(c, err, tmysql.ErrTooLongIdent, tmysql.ErrUnknown) + checkErrorCode(c, err, tmysql.ErrTooLongIdent, tmysql.ErrInfoSchemaChanged) _, err = txn2.Exec("create table long_column_table (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa int);") - checkErrorCode(c, err, tmysql.ErrTooLongIdent, tmysql.ErrUnknown) + checkErrorCode(c, err, tmysql.ErrTooLongIdent, tmysql.ErrInfoSchemaChanged) _, err = txn2.Exec("alter table test add aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa int;") - checkErrorCode(c, err, tmysql.ErrTooLongIdent, tmysql.ErrUnknown) + checkErrorCode(c, err, tmysql.ErrTooLongIdent, tmysql.ErrInfoSchemaChanged) // Optimizer errors _, err = txn2.Exec("select *, * from test;")