Skip to content

Commit b6de51f

Browse files
committed
simplified convertion from arrow types to sql types
1 parent 9202240 commit b6de51f

File tree

3 files changed

+14
-49
lines changed

3 files changed

+14
-49
lines changed

flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/ConvertUtils.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public static List<ColumnMetaData> convertArrowFieldsToColumnMetaDataList(
7272
.map(
7373
index -> {
7474
final Field field = fields.get(index);
75+
final ArrowType fieldType = field.getType();
7576

7677
final Common.ColumnMetaData.Builder builder =
7778
Common.ColumnMetaData.newBuilder()
@@ -83,8 +84,8 @@ public static List<ColumnMetaData> convertArrowFieldsToColumnMetaDataList(
8384

8485
builder.setType(
8586
Common.AvaticaType.newBuilder()
86-
.setId(SqlTypes.getSqlTypeIdFromField(field))
87-
.setName(SqlTypes.getSqlTypeNameFromField(field))
87+
.setId(SqlTypes.getSqlTypeIdFromArrowType(fieldType))
88+
.setName(SqlTypes.getSqlTypeNameFromArrowType(fieldType))
8889
.build());
8990

9091
return ColumnMetaData.fromProto(builder.build());

flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/utils/SqlTypes.java

Lines changed: 3 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,9 @@ public static int getSqlTypeIdFromArrowType(ArrowType arrowType) {
114114
case Binary:
115115
return Types.VARBINARY;
116116
case FixedSizeBinary:
117+
if (arrowType instanceof UuidType) {
118+
return Types.OTHER;
119+
}
117120
return Types.BINARY;
118121
case LargeBinary:
119122
return Types.LONGVARBINARY;
@@ -167,44 +170,4 @@ public static int getSqlTypeIdFromArrowType(ArrowType arrowType) {
167170

168171
throw new IllegalArgumentException("Unsupported ArrowType " + arrowType);
169172
}
170-
171-
/**
172-
* Convert given {@link Field} to its corresponding SQL type ID, handling extension types.
173-
*
174-
* @param field field to convert from
175-
* @return corresponding SQL type ID.
176-
* @see java.sql.Types
177-
*/
178-
public static int getSqlTypeIdFromField(Field field) {
179-
ArrowType arrowType = field.getType();
180-
if (arrowType instanceof UuidType) {
181-
return Types.OTHER;
182-
}
183-
return getSqlTypeIdFromArrowType(arrowType);
184-
}
185-
186-
/**
187-
* Convert given {@link Field} to its corresponding SQL type name, handling extension types.
188-
*
189-
* @param field field to convert from
190-
* @return corresponding SQL type name.
191-
* @see java.sql.Types
192-
*/
193-
public static String getSqlTypeNameFromField(Field field) {
194-
ArrowType arrowType = field.getType();
195-
if (arrowType instanceof UuidType) {
196-
return UUID_TYPE_NAME;
197-
}
198-
return getSqlTypeNameFromArrowType(arrowType);
199-
}
200-
201-
/**
202-
* Check if the given field represents a UUID type.
203-
*
204-
* @param field field to check
205-
* @return true if the field is a UUID extension type
206-
*/
207-
public static boolean isUuidField(Field field) {
208-
return field.getType() instanceof UuidType;
209-
}
210173
}

flight/flight-sql-jdbc-core/src/test/java/org/apache/arrow/driver/jdbc/utils/SqlTypesTest.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,7 @@
1717
package org.apache.arrow.driver.jdbc.utils;
1818

1919
import static org.apache.arrow.driver.jdbc.utils.SqlTypes.getSqlTypeIdFromArrowType;
20-
import static org.apache.arrow.driver.jdbc.utils.SqlTypes.getSqlTypeIdFromField;
2120
import static org.apache.arrow.driver.jdbc.utils.SqlTypes.getSqlTypeNameFromArrowType;
22-
import static org.apache.arrow.driver.jdbc.utils.SqlTypes.getSqlTypeNameFromField;
23-
import static org.apache.arrow.driver.jdbc.utils.SqlTypes.isUuidField;
2421
import static org.junit.jupiter.api.Assertions.assertEquals;
2522
import static org.junit.jupiter.api.Assertions.assertFalse;
2623
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -149,13 +146,13 @@ public void testGetSqlTypeNameFromArrowType() {
149146
@Test
150147
public void testGetSqlTypeIdFromFieldForUuid() {
151148
Field uuidField = new Field("uuid_col", new FieldType(true, UuidType.INSTANCE, null), null);
152-
assertEquals(Types.OTHER, getSqlTypeIdFromField(uuidField));
149+
assertEquals(Types.OTHER, getSqlTypeIdFromArrowType(uuidField.getType()));
153150
}
154151

155152
@Test
156153
public void testGetSqlTypeNameFromFieldForUuid() {
157154
Field uuidField = new Field("uuid_col", new FieldType(true, UuidType.INSTANCE, null), null);
158-
assertEquals("uuid", getSqlTypeNameFromField(uuidField));
155+
assertEquals("OTHER", getSqlTypeNameFromArrowType(uuidField.getType()));
159156
}
160157

161158
@Test
@@ -177,12 +174,16 @@ public void testIsUuidFieldReturnsFalseForNonUuid() {
177174
@Test
178175
public void testGetSqlTypeIdFromFieldForNonUuid() {
179176
Field intField = new Field("int_col", FieldType.nullable(new ArrowType.Int(32, true)), null);
180-
assertEquals(Types.INTEGER, getSqlTypeIdFromField(intField));
177+
assertEquals(Types.INTEGER, getSqlTypeIdFromArrowType(intField.getType()));
181178
}
182179

183180
@Test
184181
public void testGetSqlTypeNameFromFieldForNonUuid() {
185182
Field intField = new Field("int_col", FieldType.nullable(new ArrowType.Int(32, true)), null);
186-
assertEquals("INTEGER", getSqlTypeNameFromField(intField));
183+
assertEquals("INTEGER", getSqlTypeNameFromArrowType(intField.getType()));
184+
}
185+
186+
static boolean isUuidField(Field field) {
187+
return field.getType() instanceof UuidType;
187188
}
188189
}

0 commit comments

Comments
 (0)