Skip to content

Commit 810a8b5

Browse files
authored
[#5784] improvement(catalog) Modify the ColumnSize/Scale of JdbcTypeBean to be of type integer. (#5788)
### What changes were proposed in this pull request? Modify the ColumnSize/Scale of JdbcTypeBean to be of type integer. ### Why are the changes needed? Fix: #5784
1 parent c0bdd46 commit 810a8b5

File tree

14 files changed

+48
-71
lines changed

14 files changed

+48
-71
lines changed

catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/converter/JdbcTypeConverter.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ public static class JdbcTypeBean {
3535
private String typeName;
3636

3737
/** Column size. For example: 20 in varchar (20) and 10 in decimal (10,2). */
38-
private String columnSize;
38+
private Integer columnSize;
3939

4040
/** Scale. For example: 2 in decimal (10,2). */
41-
private String scale;
41+
private Integer scale;
4242

4343
public JdbcTypeBean(String typeName) {
4444
this.typeName = typeName;
@@ -52,19 +52,19 @@ public void setTypeName(String typeName) {
5252
this.typeName = typeName;
5353
}
5454

55-
public String getColumnSize() {
55+
public Integer getColumnSize() {
5656
return columnSize;
5757
}
5858

59-
public void setColumnSize(String columnSize) {
59+
public void setColumnSize(Integer columnSize) {
6060
this.columnSize = columnSize;
6161
}
6262

63-
public String getScale() {
63+
public Integer getScale() {
6464
return scale;
6565
}
6666

67-
public void setScale(String scale) {
67+
public void setScale(Integer scale) {
6868
this.scale = scale;
6969
}
7070

catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/operation/JdbcTableOperations.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -587,8 +587,8 @@ protected JdbcTable.Builder getBasicJdbcTableInfo(ResultSet table) throws SQLExc
587587
protected JdbcColumn.Builder getBasicJdbcColumnInfo(ResultSet column) throws SQLException {
588588
JdbcTypeConverter.JdbcTypeBean typeBean =
589589
new JdbcTypeConverter.JdbcTypeBean(column.getString("TYPE_NAME"));
590-
typeBean.setColumnSize(column.getString("COLUMN_SIZE"));
591-
typeBean.setScale(column.getString("DECIMAL_DIGITS"));
590+
typeBean.setColumnSize(column.getInt("COLUMN_SIZE"));
591+
typeBean.setScale(column.getInt("DECIMAL_DIGITS"));
592592
String comment = column.getString("REMARKS");
593593
boolean nullable = column.getBoolean("NULLABLE");
594594

catalogs/catalog-jdbc-doris/src/main/java/org/apache/gravitino/catalog/doris/converter/DorisColumnDefaultValueConverter.java

+3-9
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,7 @@ public Expression toGravitino(
8181
return Literals.doubleLiteral(Double.valueOf(columnDefaultValue));
8282
case DECIMAL:
8383
return Literals.decimalLiteral(
84-
Decimal.of(
85-
columnDefaultValue,
86-
Integer.parseInt(columnType.getColumnSize()),
87-
Integer.parseInt(columnType.getScale())));
84+
Decimal.of(columnDefaultValue, columnType.getColumnSize(), columnType.getScale()));
8885
case JdbcTypeConverter.DATE:
8986
return Literals.dateLiteral(LocalDate.parse(columnDefaultValue, DATE_TIME_FORMATTER));
9087
case JdbcTypeConverter.TIME:
@@ -96,12 +93,9 @@ public Expression toGravitino(
9693
: Literals.timestampLiteral(
9794
LocalDateTime.parse(columnDefaultValue, DATE_TIME_FORMATTER));
9895
case JdbcTypeConverter.VARCHAR:
99-
return Literals.of(
100-
columnDefaultValue, Types.VarCharType.of(Integer.parseInt(columnType.getColumnSize())));
96+
return Literals.of(columnDefaultValue, Types.VarCharType.of(columnType.getColumnSize()));
10197
case CHAR:
102-
return Literals.of(
103-
columnDefaultValue,
104-
Types.FixedCharType.of(Integer.parseInt(columnType.getColumnSize())));
98+
return Literals.of(columnDefaultValue, Types.FixedCharType.of(columnType.getColumnSize()));
10599
case JdbcTypeConverter.TEXT:
106100
return Literals.stringLiteral(columnDefaultValue);
107101
default:

catalogs/catalog-jdbc-doris/src/main/java/org/apache/gravitino/catalog/doris/converter/DorisTypeConverter.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,15 @@ public Type toGravitino(JdbcTypeBean typeBean) {
5454
case DOUBLE:
5555
return Types.DoubleType.get();
5656
case DECIMAL:
57-
return Types.DecimalType.of(
58-
Integer.parseInt(typeBean.getColumnSize()), Integer.parseInt(typeBean.getScale()));
57+
return Types.DecimalType.of(typeBean.getColumnSize(), typeBean.getScale());
5958
case DATE:
6059
return Types.DateType.get();
6160
case DATETIME:
6261
return Types.TimestampType.withoutTimeZone();
6362
case CHAR:
64-
return Types.FixedCharType.of(Integer.parseInt(typeBean.getColumnSize()));
63+
return Types.FixedCharType.of(typeBean.getColumnSize());
6564
case VARCHAR:
66-
return Types.VarCharType.of(Integer.parseInt(typeBean.getColumnSize()));
65+
return Types.VarCharType.of(typeBean.getColumnSize());
6766
case STRING:
6867
case TEXT:
6968
return Types.StringType.get();

catalogs/catalog-jdbc-doris/src/main/java/org/apache/gravitino/catalog/doris/operation/DorisTablePartitionOperations.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -285,8 +285,8 @@ private Map<String, Type> getColumnType(Connection connection) throws SQLExcepti
285285
if (Objects.equals(result.getString("TABLE_NAME"), loadedTable.name())) {
286286
JdbcTypeConverter.JdbcTypeBean typeBean =
287287
new JdbcTypeConverter.JdbcTypeBean(result.getString("TYPE_NAME"));
288-
typeBean.setColumnSize(result.getString("COLUMN_SIZE"));
289-
typeBean.setScale(result.getString("DECIMAL_DIGITS"));
288+
typeBean.setColumnSize(result.getInt("COLUMN_SIZE"));
289+
typeBean.setScale(result.getInt("DECIMAL_DIGITS"));
290290
Type gravitinoType = typeConverter.toGravitino(typeBean);
291291
String columnName = result.getString("COLUMN_NAME");
292292
columnTypes.put(columnName, gravitinoType);

catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/converter/MysqlColumnDefaultValueConverter.java

+3-8
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,7 @@ public Expression toGravitino(
8080
return Literals.doubleLiteral(Double.valueOf(columnDefaultValue));
8181
case MysqlTypeConverter.DECIMAL:
8282
return Literals.decimalLiteral(
83-
Decimal.of(
84-
columnDefaultValue,
85-
Integer.parseInt(type.getColumnSize()),
86-
Integer.parseInt(type.getScale())));
83+
Decimal.of(columnDefaultValue, type.getColumnSize(), type.getScale()));
8784
case JdbcTypeConverter.DATE:
8885
return Literals.dateLiteral(LocalDate.parse(columnDefaultValue, DATE_FORMATTER));
8986
case JdbcTypeConverter.TIME:
@@ -95,11 +92,9 @@ public Expression toGravitino(
9592
: Literals.timestampLiteral(
9693
LocalDateTime.parse(columnDefaultValue, DATE_TIME_FORMATTER));
9794
case JdbcTypeConverter.VARCHAR:
98-
return Literals.of(
99-
columnDefaultValue, Types.VarCharType.of(Integer.parseInt(type.getColumnSize())));
95+
return Literals.of(columnDefaultValue, Types.VarCharType.of(type.getColumnSize()));
10096
case MysqlTypeConverter.CHAR:
101-
return Literals.of(
102-
columnDefaultValue, Types.FixedCharType.of(Integer.parseInt(type.getColumnSize())));
97+
return Literals.of(columnDefaultValue, Types.FixedCharType.of(type.getColumnSize()));
10398
case JdbcTypeConverter.TEXT:
10499
return Literals.stringLiteral(columnDefaultValue);
105100
default:

catalogs/catalog-jdbc-mysql/src/main/java/org/apache/gravitino/catalog/mysql/converter/MysqlTypeConverter.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,11 @@ public Type toGravitino(JdbcTypeBean typeBean) {
7676
case DATETIME:
7777
return Types.TimestampType.withoutTimeZone();
7878
case DECIMAL:
79-
return Types.DecimalType.of(
80-
Integer.parseInt(typeBean.getColumnSize()), Integer.parseInt(typeBean.getScale()));
79+
return Types.DecimalType.of(typeBean.getColumnSize(), typeBean.getScale());
8180
case VARCHAR:
82-
return Types.VarCharType.of(Integer.parseInt(typeBean.getColumnSize()));
81+
return Types.VarCharType.of(typeBean.getColumnSize());
8382
case CHAR:
84-
return Types.FixedCharType.of(Integer.parseInt(typeBean.getColumnSize()));
83+
return Types.FixedCharType.of(typeBean.getColumnSize());
8584
case TEXT:
8685
return Types.StringType.get();
8786
case BINARY:

catalogs/catalog-jdbc-mysql/src/test/java/org/apache/gravitino/catalog/mysql/converter/TestMysqlTypeConverter.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ public void testToGravitinoType() {
5656
checkJdbcTypeToGravitinoType(Types.TimeType.get(), TIME, null, null);
5757
checkJdbcTypeToGravitinoType(Types.TimestampType.withoutTimeZone(), DATETIME, null, null);
5858
checkJdbcTypeToGravitinoType(Types.TimestampType.withTimeZone(), TIMESTAMP, null, null);
59-
checkJdbcTypeToGravitinoType(Types.DecimalType.of(10, 2), DECIMAL, "10", "2");
60-
checkJdbcTypeToGravitinoType(Types.VarCharType.of(20), VARCHAR, "20", null);
61-
checkJdbcTypeToGravitinoType(Types.FixedCharType.of(20), CHAR, "20", null);
59+
checkJdbcTypeToGravitinoType(Types.DecimalType.of(10, 2), DECIMAL, 10, 2);
60+
checkJdbcTypeToGravitinoType(Types.VarCharType.of(20), VARCHAR, 20, null);
61+
checkJdbcTypeToGravitinoType(Types.FixedCharType.of(20), CHAR, 20, null);
6262
checkJdbcTypeToGravitinoType(Types.StringType.get(), TEXT, null, null);
6363
checkJdbcTypeToGravitinoType(Types.BinaryType.get(), BINARY, null, null);
6464
checkJdbcTypeToGravitinoType(
@@ -92,13 +92,13 @@ protected void checkGravitinoTypeToJdbcType(String jdbcTypeName, Type gravitinoT
9292
}
9393

9494
protected void checkJdbcTypeToGravitinoType(
95-
Type gravitinoType, String jdbcTypeName, String columnSize, String scale) {
95+
Type gravitinoType, String jdbcTypeName, Integer columnSize, Integer scale) {
9696
JdbcTypeConverter.JdbcTypeBean typeBean = createTypeBean(jdbcTypeName, columnSize, scale);
9797
Assertions.assertEquals(gravitinoType, MYSQL_TYPE_CONVERTER.toGravitino(typeBean));
9898
}
9999

100100
protected static JdbcTypeConverter.JdbcTypeBean createTypeBean(
101-
String typeName, String columnSize, String scale) {
101+
String typeName, Integer columnSize, Integer scale) {
102102
return new JdbcTypeConverter.JdbcTypeBean(typeName) {
103103
{
104104
setColumnSize(columnSize);

catalogs/catalog-jdbc-oceanbase/src/main/java/org/apache/gravitino/catalog/oceanbase/converter/OceanBaseColumnDefaultValueConverter.java

+3-8
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,7 @@ public Expression toGravitino(
8888
case OceanBaseTypeConverter.NUMERIC:
8989
case OceanBaseTypeConverter.DECIMAL:
9090
return Literals.decimalLiteral(
91-
Decimal.of(
92-
columnDefaultValue,
93-
Integer.parseInt(type.getColumnSize()),
94-
Integer.parseInt(type.getScale())));
91+
Decimal.of(columnDefaultValue, type.getColumnSize(), type.getScale()));
9592
case JdbcTypeConverter.DATE:
9693
return Literals.dateLiteral(LocalDate.parse(columnDefaultValue, DATE_FORMATTER));
9794
case JdbcTypeConverter.TIME:
@@ -103,11 +100,9 @@ public Expression toGravitino(
103100
: Literals.timestampLiteral(
104101
LocalDateTime.parse(columnDefaultValue, DATE_TIME_FORMATTER));
105102
case JdbcTypeConverter.VARCHAR:
106-
return Literals.of(
107-
columnDefaultValue, Types.VarCharType.of(Integer.parseInt(type.getColumnSize())));
103+
return Literals.of(columnDefaultValue, Types.VarCharType.of(type.getColumnSize()));
108104
case OceanBaseTypeConverter.CHAR:
109-
return Literals.of(
110-
columnDefaultValue, Types.FixedCharType.of(Integer.parseInt(type.getColumnSize())));
105+
return Literals.of(columnDefaultValue, Types.FixedCharType.of(type.getColumnSize()));
111106
case JdbcTypeConverter.TEXT:
112107
return Literals.stringLiteral(columnDefaultValue);
113108
default:

catalogs/catalog-jdbc-oceanbase/src/main/java/org/apache/gravitino/catalog/oceanbase/converter/OceanBaseTypeConverter.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,11 @@ public Type toGravitino(JdbcTypeBean typeBean) {
7676
case NUMBER:
7777
case NUMERIC:
7878
case DECIMAL:
79-
return Types.DecimalType.of(
80-
Integer.parseInt(typeBean.getColumnSize()), Integer.parseInt(typeBean.getScale()));
79+
return Types.DecimalType.of(typeBean.getColumnSize(), typeBean.getScale());
8180
case VARCHAR:
82-
return Types.VarCharType.of(Integer.parseInt(typeBean.getColumnSize()));
81+
return Types.VarCharType.of(typeBean.getColumnSize());
8382
case CHAR:
84-
return Types.FixedCharType.of(Integer.parseInt(typeBean.getColumnSize()));
83+
return Types.FixedCharType.of(typeBean.getColumnSize());
8584
case TEXT:
8685
return Types.StringType.get();
8786
case BINARY:

catalogs/catalog-jdbc-oceanbase/src/test/java/org/apache/gravitino/catalog/oceanbase/converter/TestOceanBaseTypeConverter.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ public void testToGravitinoType() {
5959
checkJdbcTypeToGravitinoType(Types.TimeType.get(), TIME, null, null);
6060
checkJdbcTypeToGravitinoType(Types.TimestampType.withoutTimeZone(), DATETIME, null, null);
6161
checkJdbcTypeToGravitinoType(Types.TimestampType.withTimeZone(), TIMESTAMP, null, null);
62-
checkJdbcTypeToGravitinoType(Types.DecimalType.of(10, 2), DECIMAL, "10", "2");
63-
checkJdbcTypeToGravitinoType(Types.VarCharType.of(20), VARCHAR, "20", null);
64-
checkJdbcTypeToGravitinoType(Types.FixedCharType.of(20), CHAR, "20", null);
62+
checkJdbcTypeToGravitinoType(Types.DecimalType.of(10, 2), DECIMAL, 10, 2);
63+
checkJdbcTypeToGravitinoType(Types.VarCharType.of(20), VARCHAR, 20, null);
64+
checkJdbcTypeToGravitinoType(Types.FixedCharType.of(20), CHAR, 20, null);
6565
checkJdbcTypeToGravitinoType(Types.StringType.get(), TEXT, null, null);
6666
checkJdbcTypeToGravitinoType(Types.BinaryType.get(), BINARY, null, null);
6767
checkJdbcTypeToGravitinoType(
@@ -95,13 +95,13 @@ protected void checkGravitinoTypeToJdbcType(String jdbcTypeName, Type gravitinoT
9595
}
9696

9797
protected void checkJdbcTypeToGravitinoType(
98-
Type gravitinoType, String jdbcTypeName, String columnSize, String scale) {
98+
Type gravitinoType, String jdbcTypeName, Integer columnSize, Integer scale) {
9999
JdbcTypeConverter.JdbcTypeBean typeBean = createTypeBean(jdbcTypeName, columnSize, scale);
100100
Assertions.assertEquals(gravitinoType, OCEANBASE_TYPE_CONVERTER.toGravitino(typeBean));
101101
}
102102

103103
protected static JdbcTypeConverter.JdbcTypeBean createTypeBean(
104-
String typeName, String columnSize, String scale) {
104+
String typeName, Integer columnSize, Integer scale) {
105105
return new JdbcTypeConverter.JdbcTypeBean(typeName) {
106106
{
107107
setColumnSize(columnSize);

catalogs/catalog-jdbc-postgresql/src/main/java/org/apache/gravitino/catalog/postgresql/converter/PostgreSqlColumnDefaultValueConverter.java

+2-5
Original file line numberDiff line numberDiff line change
@@ -96,16 +96,13 @@ private Expression parseLiteral(JdbcTypeConverter.JdbcTypeBean type, String colu
9696
return Literals.doubleLiteral(Double.valueOf(columnDefaultValue));
9797
case PostgreSqlTypeConverter.NUMERIC:
9898
return Literals.decimalLiteral(
99-
Decimal.of(
100-
columnDefaultValue,
101-
Integer.parseInt(type.getColumnSize()),
102-
Integer.parseInt(type.getScale())));
99+
Decimal.of(columnDefaultValue, type.getColumnSize(), type.getScale()));
103100
case JdbcTypeConverter.DATE:
104101
return Literals.dateLiteral(LocalDate.parse(columnDefaultValue, DATE_TIME_FORMATTER));
105102
case PostgreSqlTypeConverter.TIMESTAMP_TZ:
106103
return Literals.timeLiteral(LocalTime.parse(columnDefaultValue, DATE_TIME_FORMATTER));
107104
case VARCHAR:
108-
return Literals.varcharLiteral(Integer.parseInt(type.getColumnSize()), columnDefaultValue);
105+
return Literals.varcharLiteral(type.getColumnSize(), columnDefaultValue);
109106
case PostgreSqlTypeConverter.BPCHAR:
110107
case JdbcTypeConverter.TEXT:
111108
return Literals.stringLiteral(columnDefaultValue);

catalogs/catalog-jdbc-postgresql/src/main/java/org/apache/gravitino/catalog/postgresql/converter/PostgreSqlTypeConverter.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,11 @@ public Type toGravitino(JdbcTypeBean typeBean) {
6969
case TIMESTAMP_TZ:
7070
return Types.TimestampType.withTimeZone();
7171
case NUMERIC:
72-
return Types.DecimalType.of(
73-
Integer.parseInt(typeBean.getColumnSize()), Integer.parseInt(typeBean.getScale()));
72+
return Types.DecimalType.of(typeBean.getColumnSize(), typeBean.getScale());
7473
case VARCHAR:
75-
return Types.VarCharType.of(Integer.parseInt(typeBean.getColumnSize()));
74+
return Types.VarCharType.of(typeBean.getColumnSize());
7675
case BPCHAR:
77-
return Types.FixedCharType.of(Integer.parseInt(typeBean.getColumnSize()));
76+
return Types.FixedCharType.of(typeBean.getColumnSize());
7877
case TEXT:
7978
return Types.StringType.get();
8079
case BYTEA:

catalogs/catalog-jdbc-postgresql/src/test/java/org/apache/gravitino/catalog/postgresql/converter/TestPostgreSqlTypeConverter.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ public void testToGravitinoType() {
6161
checkJdbcTypeToGravitinoType(Types.DateType.get(), DATE, null, null);
6262
checkJdbcTypeToGravitinoType(Types.TimeType.get(), TIME, null, null);
6363
checkJdbcTypeToGravitinoType(Types.TimestampType.withoutTimeZone(), TIMESTAMP, null, null);
64-
checkJdbcTypeToGravitinoType(Types.DecimalType.of(10, 2), NUMERIC, "10", "2");
65-
checkJdbcTypeToGravitinoType(Types.VarCharType.of(20), VARCHAR, "20", null);
66-
checkJdbcTypeToGravitinoType(Types.FixedCharType.of(20), BPCHAR, "20", null);
64+
checkJdbcTypeToGravitinoType(Types.DecimalType.of(10, 2), NUMERIC, 10, 2);
65+
checkJdbcTypeToGravitinoType(Types.VarCharType.of(20), VARCHAR, 20, null);
66+
checkJdbcTypeToGravitinoType(Types.FixedCharType.of(20), BPCHAR, 20, null);
6767
checkJdbcTypeToGravitinoType(Types.StringType.get(), TEXT, null, null);
6868
checkJdbcTypeToGravitinoType(Types.BinaryType.get(), BYTEA, null, null);
6969
checkJdbcTypeToGravitinoType(
@@ -118,13 +118,13 @@ protected void checkGravitinoTypeToJdbcType(String jdbcTypeName, Type gravitinoT
118118
}
119119

120120
protected void checkJdbcTypeToGravitinoType(
121-
Type gravitinoType, String jdbcTypeName, String columnSize, String scale) {
121+
Type gravitinoType, String jdbcTypeName, Integer columnSize, Integer scale) {
122122
JdbcTypeConverter.JdbcTypeBean typeBean = createTypeBean(jdbcTypeName, columnSize, scale);
123123
Assertions.assertEquals(gravitinoType, POSTGRE_SQL_TYPE_CONVERTER.toGravitino(typeBean));
124124
}
125125

126126
protected static JdbcTypeConverter.JdbcTypeBean createTypeBean(
127-
String typeName, String columnSize, String scale) {
127+
String typeName, Integer columnSize, Integer scale) {
128128
return new JdbcTypeConverter.JdbcTypeBean(typeName) {
129129
{
130130
setColumnSize(columnSize);

0 commit comments

Comments
 (0)