Skip to content

Commit

Permalink
[fix](jdbc catalog) fix type conversion error in MySQL JDBC Driver 5.x (
Browse files Browse the repository at this point in the history
  • Loading branch information
zy-kkk authored Mar 10, 2024
1 parent 80a5692 commit 340427c
Show file tree
Hide file tree
Showing 5 changed files with 1,090 additions and 13 deletions.
8 changes: 4 additions & 4 deletions docs/en/docs/lakehouse/multi-catalog/jdbc.md
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ CREATE CATALOG jdbc_mysql PROPERTIES (
"user" = "root",
"password" = "123456",
"jdbc_url" = "jdbc:mysql://127.0.0.1:3306/demo",
"driver_url" = "mysql-connector-java-5.1.47.jar",
"driver_url" = "mysql-connector-java-5.1.49.jar",
"driver_class" = "com.mysql.jdbc.Driver"
)
```
Expand Down Expand Up @@ -625,7 +625,7 @@ CREATE CATALOG jdbc_doris PROPERTIES (
"user" = "root",
"password" = "123456",
"jdbc_url" = "jdbc:mysql://127.0.0.1:9030?useSSL=false",
"driver_url" = "mysql-connector-java-5.1.47.jar",
"driver_url" = "mysql-connector-java-5.1.49.jar",
"driver_class" = "com.mysql.jdbc.Driver"
)
```
Expand Down Expand Up @@ -899,12 +899,12 @@ It is recommended to use the following versions of Driver to connect to the corr

| Source | JDBC Driver Version |
|:------------:|:-----------------------------------------------------------------:|
| MySQL 5.x | mysql-connector-java-5.1.47.jar |
| MySQL 5.x | mysql-connector-java-5.1.49.jar |
| MySQL 8.x | mysql-connector-java-8.0.25.jar |
| PostgreSQL | postgresql-42.5.1.jar |
| Oracle | ojdbc8.jar |
| SQLServer | mssql-jdbc-11.2.3.jre8.jar |
| Doris | mysql-connector-java-5.1.47.jar / mysql-connector-java-8.0.25.jar |
| Doris | mysql-connector-java-5.1.49.jar / mysql-connector-java-8.0.25.jar |
| Clickhouse | clickhouse-jdbc-0.4.2-all.jar |
| SAP HAHA | ngdbc.jar |
| Trino/Presto | trino-jdbc-389.jar / presto-jdbc-0.280.jar |
Expand Down
8 changes: 4 additions & 4 deletions docs/zh-CN/docs/lakehouse/multi-catalog/jdbc.md
Original file line number Diff line number Diff line change
Expand Up @@ -409,7 +409,7 @@ CALL EXECUTE_STMT(jdbc_catalog", "create table dbl1.tbl2 (k1 int)");
"user"="root",
"password"="123456",
"jdbc_url" = "jdbc:mysql://127.0.0.1:3306/demo",
"driver_url" = "mysql-connector-java-5.1.47.jar",
"driver_url" = "mysql-connector-java-5.1.49.jar",
"driver_class" = "com.mysql.jdbc.Driver"
)
```
Expand Down Expand Up @@ -628,7 +628,7 @@ CREATE CATALOG jdbc_doris PROPERTIES (
"user"="root",
"password"="123456",
"jdbc_url" = "jdbc:mysql://127.0.0.1:9030?useSSL=false",
"driver_url" = "mysql-connector-java-5.1.47.jar",
"driver_url" = "mysql-connector-java-5.1.49.jar",
"driver_class" = "com.mysql.jdbc.Driver"
)
```
Expand Down Expand Up @@ -902,12 +902,12 @@ CREATE CATALOG `jdbc_db2` PROPERTIES (

| Source | JDBC Driver Version |
|:------------:|:-----------------------------------------------------------------:|
| MySQL 5.x | mysql-connector-java-5.1.47.jar |
| MySQL 5.x | mysql-connector-java-5.1.49.jar |
| MySQL 8.x | mysql-connector-java-8.0.25.jar |
| PostgreSQL | postgresql-42.5.1.jar |
| Oracle | ojdbc8.jar |
| SQLServer | mssql-jdbc-11.2.3.jre8.jar |
| Doris | mysql-connector-java-5.1.47.jar / mysql-connector-java-8.0.25.jar |
| Doris | mysql-connector-java-5.1.49.jar / mysql-connector-java-8.0.25.jar |
| Clickhouse | clickhouse-jdbc-0.4.2-all.jar |
| SAP HAHA | ngdbc.jar |
| Trino/Presto | trino-jdbc-389.jar / presto-jdbc-0.280.jar |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,10 @@ protected void initializeBlock(int columnCount, String[] replaceStringList, int
block.add(new byte[batchSizeNum][]);
} else if (outputTable.getColumnType(i).getType() == Type.ARRAY) {
block.add(new String[batchSizeNum]);
} else if (outputTable.getColumnType(i).getType() == Type.STRING) {
} else if (outputTable.getColumnType(i).getType() == Type.TINYINT
|| outputTable.getColumnType(i).getType() == Type.SMALLINT
|| outputTable.getColumnType(i).getType() == Type.LARGEINT
|| outputTable.getColumnType(i).getType() == Type.STRING) {
block.add(new Object[batchSizeNum]);
} else {
block.add(outputTable.getColumn(i).newObjectContainerArray(batchSizeNum));
Expand All @@ -105,15 +108,13 @@ protected Object getColumnValue(int columnIndex, ColumnType type, String[] repla
case BOOLEAN:
return resultSet.getObject(columnIndex + 1, Boolean.class);
case TINYINT:
return resultSet.getObject(columnIndex + 1, Byte.class);
case SMALLINT:
return resultSet.getObject(columnIndex + 1, Short.class);
case LARGEINT:
return resultSet.getObject(columnIndex + 1);
case INT:
return resultSet.getObject(columnIndex + 1, Integer.class);
case BIGINT:
return resultSet.getObject(columnIndex + 1, Long.class);
case LARGEINT:
return resultSet.getObject(columnIndex + 1, BigInteger.class);
case FLOAT:
return resultSet.getObject(columnIndex + 1, Float.class);
case DOUBLE:
Expand Down Expand Up @@ -144,6 +145,30 @@ protected Object getColumnValue(int columnIndex, ColumnType type, String[] repla
@Override
protected ColumnValueConverter getOutputConverter(ColumnType columnType, String replaceString) {
switch (columnType.getType()) {
case TINYINT:
return createConverter(input -> {
if (input instanceof Integer) {
return ((Integer) input).byteValue();
} else {
return input;
}
}, Byte.class);
case SMALLINT:
return createConverter(input -> {
if (input instanceof Integer) {
return ((Integer) input).shortValue();
} else {
return input;
}
}, Short.class);
case LARGEINT:
return createConverter(input -> {
if (input instanceof String) {
return new BigInteger((String) input);
} else {
return input;
}
}, BigInteger.class);
case STRING:
if (replaceString.equals("bitmap") || replaceString.equals("hll")) {
return null;
Expand Down
Loading

0 comments on commit 340427c

Please sign in to comment.