Skip to content

Commit 0df29fc

Browse files
authored
feat: add UUID data type (#2036)
1 parent 4fe13a3 commit 0df29fc

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

src/main/java/com/google/cloud/spanner/jdbc/JdbcDatabaseMetaData.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1290,6 +1290,44 @@ public ResultSet getTypeInfo() {
12901290
.set("NUM_PREC_RADIX")
12911291
.to(10)
12921292
.build(),
1293+
Struct.newBuilder()
1294+
.set("TYPE_NAME")
1295+
.to("UUID")
1296+
.set("DATA_TYPE")
1297+
.to(Types.OTHER) // There's no JDBC-specific type code for UUID.
1298+
.set("PRECISION")
1299+
.to((Long) null)
1300+
.set("LITERAL_PREFIX")
1301+
.to("UUID ")
1302+
.set("LITERAL_SUFFIX")
1303+
.to((String) null)
1304+
.set("CREATE_PARAMS")
1305+
.to((String) null)
1306+
.set("NULLABLE")
1307+
.to(DatabaseMetaData.typeNullable)
1308+
.set("CASE_SENSITIVE")
1309+
.to(false)
1310+
.set("SEARCHABLE")
1311+
.to(DatabaseMetaData.typeSearchable)
1312+
.set("UNSIGNED_ATTRIBUTE")
1313+
.to(true)
1314+
.set("FIXED_PREC_SCALE")
1315+
.to(false)
1316+
.set("AUTO_INCREMENT")
1317+
.to(false)
1318+
.set("LOCAL_TYPE_NAME")
1319+
.to("UUID")
1320+
.set("MINIMUM_SCALE")
1321+
.to(0)
1322+
.set("MAXIMUM_SCALE")
1323+
.to(0)
1324+
.set("SQL_DATA_TYPE")
1325+
.to((Long) null)
1326+
.set("SQL_DATETIME_SUB")
1327+
.to((Long) null)
1328+
.set("NUM_PREC_RADIX")
1329+
.to((Long) null)
1330+
.build(),
12931331
getJsonType(connection.getDialect()))),
12941332
// Allow column 2 to be cast to short without any range checks.
12951333
ImmutableSet.of(2));

src/main/resources/com/google/cloud/spanner/jdbc/DatabaseMetaData_GetColumns.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ SELECT TABLE_CATALOG AS TABLE_CAT, TABLE_SCHEMA AS TABLE_SCHEM, TABLE_NAME, COLU
2727
WHEN SPANNER_TYPE LIKE 'STRING%' THEN -9
2828
WHEN SPANNER_TYPE = 'JSON' THEN -9
2929
WHEN SPANNER_TYPE = 'TIMESTAMP' THEN 93
30+
WHEN SPANNER_TYPE = 'UUID' THEN 1111
31+
ELSE 1111
3032
END AS DATA_TYPE,
3133
SPANNER_TYPE AS TYPE_NAME,
3234
CASE

src/test/java/com/google/cloud/spanner/jdbc/JdbcDatabaseMetaDataTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,10 @@ public void testGetTypeInfo() throws SQLException {
510510
assertEquals(Types.NUMERIC, rs.getInt("DATA_TYPE"));
511511
assertEquals(Types.NUMERIC, rs.getShort("DATA_TYPE"));
512512
assertTrue(rs.next());
513+
assertEquals("UUID", rs.getString("TYPE_NAME"));
514+
assertEquals(Types.OTHER, rs.getInt("DATA_TYPE"));
515+
assertEquals(Types.OTHER, rs.getShort("DATA_TYPE"));
516+
assertTrue(rs.next());
513517
if (dialect == Dialect.POSTGRESQL) {
514518
assertEquals("JSONB", rs.getString("TYPE_NAME"));
515519
assertEquals(PgJsonbType.VENDOR_TYPE_NUMBER, rs.getInt("DATA_TYPE"));

0 commit comments

Comments
 (0)