This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 00213e5  Add mysql data type with json (#11414)
00213e5 is described below

commit 00213e5038f137909de409519f7445d5f7b95fd8
Author: zhaojinchao <[email protected]>
AuthorDate: Wed Jul 21 09:59:32 2021 +0800

    Add mysql data type with json (#11414)
    
    * add mysql data type
    
    * add ut for json data type
---
 .../loader/dialect/MySQLTableMetaDataLoader.java   |  1 +
 .../dialect/MySQLTableMetaDataLoaderTest.java      | 29 +++++++++++-----------
 2 files changed, 16 insertions(+), 14 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java
index 511adde..e3b684c 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoader.java
@@ -70,6 +70,7 @@ public final class MySQLTableMetaDataLoader implements 
DialectTableMetaDataLoade
                 Connection connection = dataSource.getConnection();
                 PreparedStatement preparedStatement = 
connection.prepareStatement(getTableMetaDataSQL(existedTables))) {
             Map<String, Integer> dataTypes = 
DataTypeLoader.load(connection.getMetaData());
+            dataTypes.putIfAbsent("JSON", -1);
             preparedStatement.setString(1, connection.getCatalog());
             try (ResultSet resultSet = preparedStatement.executeQuery()) {
                 while (resultSet.next()) {
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoaderTest.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoaderTest.java
index c359774..c997cc4 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoaderTest.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/loader/dialect/MySQLTableMetaDataLoaderTest.java
@@ -79,24 +79,24 @@ public final class MySQLTableMetaDataLoaderTest {
     
     private ResultSet mockTypeInfoResultSet() throws SQLException {
         ResultSet result = mock(ResultSet.class);
-        when(result.next()).thenReturn(true, true, false);
-        when(result.getString("TYPE_NAME")).thenReturn("int", "varchar");
-        when(result.getInt("DATA_TYPE")).thenReturn(4, 12);
+        when(result.next()).thenReturn(true, true, true, false);
+        when(result.getString("TYPE_NAME")).thenReturn("int", "varchar", 
"json");
+        when(result.getInt("DATA_TYPE")).thenReturn(4, 12, -1);
         return result;
     }
-    
+
     private ResultSet mockTableMetaDataResultSet() throws SQLException {
         ResultSet result = mock(ResultSet.class);
-        when(result.next()).thenReturn(true, true, false);
+        when(result.next()).thenReturn(true, true, true, false);
         when(result.getString("TABLE_NAME")).thenReturn("tbl");
-        when(result.getString("COLUMN_NAME")).thenReturn("id", "name");
-        when(result.getString("DATA_TYPE")).thenReturn("int", "varchar");
-        when(result.getString("COLUMN_KEY")).thenReturn("PRI", "");
-        when(result.getString("EXTRA")).thenReturn("auto_increment", "");
-        when(result.getString("COLLATION_NAME")).thenReturn("utf8", 
"utf8_general_ci");
+        when(result.getString("COLUMN_NAME")).thenReturn("id", "name", "doc");
+        when(result.getString("DATA_TYPE")).thenReturn("int", "varchar", 
"json");
+        when(result.getString("COLUMN_KEY")).thenReturn("PRI", "", "");
+        when(result.getString("EXTRA")).thenReturn("auto_increment", "", "");
+        when(result.getString("COLLATION_NAME")).thenReturn("utf8", 
"utf8_general_ci", "utf8_general_ci");
         return result;
     }
-    
+
     private ResultSet mockIndexMetaDataResultSet() throws SQLException {
         ResultSet result = mock(ResultSet.class);
         when(result.next()).thenReturn(true, false);
@@ -104,7 +104,7 @@ public final class MySQLTableMetaDataLoaderTest {
         when(result.getString("TABLE_NAME")).thenReturn("tbl");
         return result;
     }
-    
+
     private DialectTableMetaDataLoader getTableMetaDataLoader() {
         for (DialectTableMetaDataLoader each : 
ShardingSphereServiceLoader.getSingletonServiceInstances(DialectTableMetaDataLoader.class))
 {
             if ("MySQL".equals(each.getDatabaseType())) {
@@ -113,12 +113,13 @@ public final class MySQLTableMetaDataLoaderTest {
         }
         throw new IllegalStateException("Can not find 
MySQLTableMetaDataLoader");
     }
-    
+
     private void assertTableMetaDataMap(final Map<String, TableMetaData> 
actual) {
         assertThat(actual.size(), is(1));
-        assertThat(actual.get("tbl").getColumns().size(), is(2));
+        assertThat(actual.get("tbl").getColumns().size(), is(3));
         assertThat(actual.get("tbl").getColumnMetaData(0), is(new 
ColumnMetaData("id", 4, true, true, true)));
         assertThat(actual.get("tbl").getColumnMetaData(1), is(new 
ColumnMetaData("name", 12, false, false, false)));
+        assertThat(actual.get("tbl").getColumnMetaData(2), is(new 
ColumnMetaData("doc", -1, false, false, false)));
         assertThat(actual.get("tbl").getIndexes().size(), is(1));
         assertThat(actual.get("tbl").getIndexes().get("id"), is(new 
IndexMetaData("id")));
     }

Reply via email to