diff --git a/ddl/db_integration_test.go b/ddl/db_integration_test.go index effcb92e2d832..0691d4242aafb 100644 --- a/ddl/db_integration_test.go +++ b/ddl/db_integration_test.go @@ -152,6 +152,19 @@ func (s *testIntegrationSuite) TestEndIncluded(c *C) { tk.MustExec("admin check table t") } +func (s *testIntegrationSuite) TestCaseInsensitiveCharsetAndCollate(c *C) { + tk := testkit.NewTestKit(c, s.store) + + tk.MustExec("create database if not exists test_charset_collate") + defer tk.MustExec("drop database test_charset_collate") + tk.MustExec("use test_charset_collate") + tk.MustExec("create table t(id int) ENGINE=InnoDB DEFAULT CHARSET=UTF8 COLLATE=UTF8_BIN;") + tk.MustExec("create table t1(id int) ENGINE=InnoDB DEFAULT CHARSET=UTF8 COLLATE=uTF8_BIN;") + tk.MustExec("create table t2(id int) ENGINE=InnoDB DEFAULT CHARSET=Utf8 COLLATE=utf8_BIN;") + tk.MustExec("create table t3(id int) ENGINE=InnoDB DEFAULT CHARSET=Utf8mb4 COLLATE=utf8MB4_BIN;") + tk.MustExec("create table t4(id int) ENGINE=InnoDB DEFAULT CHARSET=Utf8mb4 COLLATE=utf8MB4_general_ci;") +} + func newStoreWithBootstrap() (kv.Storage, *domain.Domain, error) { store, err := mockstore.NewMockTikvStore() if err != nil { diff --git a/go.mod b/go.mod index ad6fc080b1075..a035c5bef97a9 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,7 @@ require ( github.com/pingcap/errors v0.11.0 github.com/pingcap/goleveldb v0.0.0-20171020084629-8d44bfdf1030 github.com/pingcap/kvproto v0.0.0-20181109035735-8e3f33ac4929 - github.com/pingcap/parser v0.0.0-20181206080309-80784c39ca74 + github.com/pingcap/parser v0.0.0-20181207085916-6c21d4344dfa github.com/pingcap/pd v2.1.0-rc.4+incompatible github.com/pingcap/tidb-tools v0.0.0-20181112132202-4860a0d5de03 github.com/pingcap/tipb v0.0.0-20180910045846-371b48b15d93 diff --git a/go.sum b/go.sum index ad751488a2298..25afbf2f824b3 100644 --- a/go.sum +++ b/go.sum @@ -90,8 +90,8 @@ github.com/pingcap/goleveldb v0.0.0-20171020084629-8d44bfdf1030 h1:XJLuW0lsP7vAt github.com/pingcap/goleveldb v0.0.0-20171020084629-8d44bfdf1030/go.mod h1:O17XtbryoCJhkKGbT62+L2OlrniwqiGLSqrmdHCMzZw= github.com/pingcap/kvproto v0.0.0-20181109035735-8e3f33ac4929 h1:NAq95+VGsS2G7SjzZ5LP9iUlCMNAs13QUzbNY3G90v8= github.com/pingcap/kvproto v0.0.0-20181109035735-8e3f33ac4929/go.mod h1:0gwbe1F2iBIjuQ9AH0DbQhL+Dpr5GofU8fgYyXk+ykk= -github.com/pingcap/parser v0.0.0-20181206080309-80784c39ca74 h1:9/CSV8xFvTSuMPD69pjgaosyclrQpUXLxcAvao5DS6Q= -github.com/pingcap/parser v0.0.0-20181206080309-80784c39ca74/go.mod h1:1FNvfp9+J0wvc4kl8eGNh7Rqrxveg15jJoWo/a0uHwA= +github.com/pingcap/parser v0.0.0-20181207085916-6c21d4344dfa h1:m6vqGJWtMKHr2RiyxdcHptRXAsYMAXcdbL6uGQkaMxg= +github.com/pingcap/parser v0.0.0-20181207085916-6c21d4344dfa/go.mod h1:1FNvfp9+J0wvc4kl8eGNh7Rqrxveg15jJoWo/a0uHwA= github.com/pingcap/pd v2.1.0-rc.4+incompatible h1:/buwGk04aHO5odk/+O8ZOXGs4qkUjYTJ2UpCJXna8NE= github.com/pingcap/pd v2.1.0-rc.4+incompatible/go.mod h1:nD3+EoYes4+aNNODO99ES59V83MZSI+dFbhyr667a0E= github.com/pingcap/tidb-tools v0.0.0-20181112132202-4860a0d5de03 h1:xVuo5U+l6XAWHsb+xhkZ8zz3jerIwDfCHAO6kR2Kaog= diff --git a/vendor/github.com/pingcap/parser/charset/charset.go b/vendor/github.com/pingcap/parser/charset/charset.go index c42c13e4b09fc..0c0d3820efa56 100644 --- a/vendor/github.com/pingcap/parser/charset/charset.go +++ b/vendor/github.com/pingcap/parser/charset/charset.go @@ -94,6 +94,7 @@ func ValidCharsetAndCollation(cs string, co string) bool { if co == "" { return true } + co = strings.ToLower(co) _, ok = c.Collations[co] if !ok { return false diff --git a/vendor/modules.txt b/vendor/modules.txt index 7a1eb249d5218..383c8d377ce92 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -87,7 +87,7 @@ github.com/pingcap/kvproto/pkg/tikvpb github.com/pingcap/kvproto/pkg/pdpb github.com/pingcap/kvproto/pkg/raft_serverpb github.com/pingcap/kvproto/pkg/eraftpb -# github.com/pingcap/parser v0.0.0-20181206080309-80784c39ca74 +# github.com/pingcap/parser v0.0.0-20181207085916-6c21d4344dfa github.com/pingcap/parser/auth github.com/pingcap/parser/model github.com/pingcap/parser/mysql