zhangbutao commented on code in PR #3276:
URL: https://github.com/apache/hive/pull/3276#discussion_r957963875


##########
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/MySQLConnectorProvider.java:
##########
@@ -90,10 +90,20 @@ protected String getDataType(String dbDataType, int size) {
     // map any db specific types here.
     switch (dbDataType.toLowerCase())
     {
+    case "bit":
+      return toHiveBitType(size);
     default:
       mappedType = ColumnType.VOID_TYPE_NAME;
       break;
     }
     return mappedType;
   }
+
+  private String toHiveBitType(int size) {
+    if (size <= 1) {
+      return ColumnType.BOOLEAN_TYPE_NAME;
+    } else {
+      return ColumnType.BIGINT_TYPE_NAME;

Review Comment:
   @nrg4878 Another alternative is the one I mentioned earlier, that is we use 
hive's interal udf bin() to convert the bigint values to bit type. This one 
needs users to be aware of hive's bin() udf:
   
   Step to test:
   1. Create jdbc-mapping table in hive. Use hive's bigint to map MySQL's bit 
datatype:
    ` CREATE EXTERNAL TABLE jdbc_testmysqlbit_use_bigint`
   `(`
   `  id bigint`
   `)`
   `STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler'`
   `TBLPROPERTIES (`
   `"hive.sql.database.type" = "MYSQL",`
   `"hive.sql.jdbc.driver" = "com.mysql.jdbc.Driver",`
   `"hive.sql.jdbc.url" = "jdbc:mysql://localhost:3306/testdb",`
   `"hive.sql.dbcp.username" = "user",`
   `"hive.sql.dbcp.password" = "passwd",`
   `"hive.sql.table" = "testmysqlbit",`
   `"hive.sql.dbcp.maxActive" = "1"`
   `);`
    
   2. `select * from jdbc_testmysqlbit_use_bigint;` using hive beeline:
   
![image](https://user-images.githubusercontent.com/9760681/187339777-16cc48f7-af07-4e31-8095-660f8e8e0c58.png)
   
   3. `select bin(id) from jdbc_testmysqlbit_use_bigint;` using hive beeline:
     
   
![image](https://user-images.githubusercontent.com/9760681/187339967-bd33c930-85de-4da5-ae4c-8a3f13d7763d.png)
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to