diff --git a/core/src/main/java/com/scalar/db/storage/jdbc/JdbcDatabaseAdmin.java b/core/src/main/java/com/scalar/db/storage/jdbc/JdbcDatabaseAdmin.java index 9265d4bc81..ce4beafdce 100644 --- a/core/src/main/java/com/scalar/db/storage/jdbc/JdbcDatabaseAdmin.java +++ b/core/src/main/java/com/scalar/db/storage/jdbc/JdbcDatabaseAdmin.java @@ -78,7 +78,7 @@ public class JdbcDatabaseAdmin implements DistributedStorageAdmin { ImmutableMap.builder() .put(DataType.INT, "INT") .put(DataType.BIGINT, "BIGINT") - .put(DataType.TEXT, "VARCHAR(8000)") + .put(DataType.TEXT, "VARCHAR(8000) COLLATE Latin1_General_BIN") .put(DataType.FLOAT, "FLOAT(24)") .put(DataType.DOUBLE, "FLOAT") .put(DataType.BOOLEAN, "BIT") @@ -150,6 +150,9 @@ public void createNamespace(String namespace, Map options) if (rdbEngine == RdbEngine.ORACLE) { execute(connection, "CREATE USER " + fullNamespace + " IDENTIFIED BY \"oracle\""); execute(connection, "ALTER USER " + fullNamespace + " quota unlimited on USERS"); + } else if (rdbEngine == RdbEngine.MYSQL) { + execute( + connection, "CREATE SCHEMA " + fullNamespace + " character set utf8 COLLATE utf8_bin"); } else { execute(connection, "CREATE SCHEMA " + fullNamespace); } diff --git a/core/src/test/java/com/scalar/db/storage/jdbc/JdbcDatabaseAdminTest.java b/core/src/test/java/com/scalar/db/storage/jdbc/JdbcDatabaseAdminTest.java index 28228274c9..0a5c8a0599 100644 --- a/core/src/test/java/com/scalar/db/storage/jdbc/JdbcDatabaseAdminTest.java +++ b/core/src/test/java/com/scalar/db/storage/jdbc/JdbcDatabaseAdminTest.java @@ -184,7 +184,7 @@ public ResultSet mockResultSet(List rows) throws public void createNamespace_forMysql_shouldExecuteCreateNamespaceStatement() throws ExecutionException, SQLException { createNamespace_forX_shouldExecuteCreateNamespaceStatement( - RdbEngine.MYSQL, "CREATE SCHEMA `my_ns`"); + RdbEngine.MYSQL, "CREATE SCHEMA `my_ns` character set utf8 COLLATE utf8_bin"); } @Test @@ -298,7 +298,8 @@ public void createTable_forSqlServer_shouldExecuteCreateTableStatement() createTable_forX_shouldExecuteCreateTableStatement( RdbEngine.SQL_SERVER, Optional.empty(), - "CREATE TABLE [my_ns].[foo_table]([c3] BIT,[c1] VARCHAR(8000),[c4] VARBINARY(8000),[c2] BIGINT,[c5] INT,[c6] FLOAT,[c7] FLOAT(24), PRIMARY KEY ([c3],[c1],[c4]))", + "CREATE TABLE [my_ns].[foo_table]([c3] BIT,[c1] VARCHAR(8000) COLLATE Latin1_General_BIN," + + "[c4] VARBINARY(8000),[c2] BIGINT,[c5] INT,[c6] FLOAT,[c7] FLOAT(24), PRIMARY KEY ([c3],[c1],[c4]))", "CREATE INDEX index_my_ns_foo_table_c4 ON [my_ns].[foo_table] ([c4])", "CREATE INDEX index_my_ns_foo_table_c1 ON [my_ns].[foo_table] ([c1])", "CREATE SCHEMA [scalardb]", @@ -406,7 +407,7 @@ public void createTable_forMysqlWithTableMetadataSchemaChanged_shouldExecuteCrea createTable_forX_shouldExecuteCreateTableStatement( RdbEngine.SQL_SERVER, Optional.of("changed"), - "CREATE TABLE [my_ns].[foo_table]([c3] BIT,[c1] VARCHAR(8000),[c4] VARBINARY(8000),[c2] BIGINT,[c5] INT,[c6] FLOAT,[c7] FLOAT(24), PRIMARY KEY ([c3],[c1],[c4]))", + "CREATE TABLE [my_ns].[foo_table]([c3] BIT,[c1] VARCHAR(8000) COLLATE Latin1_General_BIN,[c4] VARBINARY(8000),[c2] BIGINT,[c5] INT,[c6] FLOAT,[c7] FLOAT(24), PRIMARY KEY ([c3],[c1],[c4]))", "CREATE INDEX index_my_ns_foo_table_c4 ON [my_ns].[foo_table] ([c4])", "CREATE INDEX index_my_ns_foo_table_c1 ON [my_ns].[foo_table] ([c1])", "CREATE SCHEMA [changed]",