fix(bqjdbc): resolve JDBC metadata compliance gaps for wrappers, searchability, and type mappings#13242
fix(bqjdbc): resolve JDBC metadata compliance gaps for wrappers, searchability, and type mappings#13242Neenu1995 wants to merge 2 commits into
Conversation
…chability, and type mappings
There was a problem hiding this comment.
Code Review
This pull request refactors the type mapping logic in BigQueryDatabaseMetaData by introducing a static STANDARD_TYPE_INFO map and updates several BigQuery-to-JDBC type mappings, such as changing the default string representation to NVARCHAR and mapping complex types like GEOGRAPHY and JSON to Types.OTHER. Additionally, it implements the unwrap and isWrapperFor methods in BigQueryDatabaseMetaData, BigQueryResultSetMetadata, and the JDBC context proxy to support standard JDBC wrapper operations. Corresponding unit tests have been updated and expanded to verify these changes. I have no feedback to provide as there were no review comments to assess.
|
|
||
| @Test | ||
| public void testIsSearchableForOtherTypes() throws SQLException { | ||
| FieldList schemaFields = |
There was a problem hiding this comment.
nit: it's better to parameterize it to test 1 type at a time instead of the list
| assertThat(unwrappedImpl).isNotSameInstanceAs(resultSetMetaData); | ||
| assertThat(unwrappedImpl).isInstanceOf(BigQueryResultSetMetadata.class); | ||
|
|
||
| try { |
There was a problem hiding this comment.
nit:
assertThatThrownBy(() -> {
// code that should throw
}).isInstanceOf(SomeException.class)
.hasMessageContaining("error message");
|
|
||
| // BigQuery STRING represents Unicode character strings (UTF-8). | ||
| // Standard JDBC maps UTF-8/Unicode data to Types.NVARCHAR rather than Types.VARCHAR. | ||
| private static final Map<StandardSQLTypeName, ColumnTypeInfo> STANDARD_TYPE_INFO = |
There was a problem hiding this comment.
Can you also add a test to ensure that metadata & resultsetmetadata column types match each other?
b/514445832
Key Changes
DatabaseMetaData.getColumns()type resolution (viamapBigQueryTypeToJdbc) to map BigQuery types and database-specific type names compliantly (e.g.,STRING,RANGE,GEOGRAPHY,JSON,INTERVAL).StandardSQLTypeName.STRINGmaps toTypes.NVARCHARto support Unicode/UTF-8 string reporting).Types.NVARCHAR/STRINGinstead ofTypes.VARCHARto keep mapping behavior consistent across the driver.StandardSQLTypeName.STRINGtoTypes.NVARCHAR(UTF-8 character encoding reporting).unwrapandisWrapperFor) inBigQueryDatabaseMetaDataandBigQueryResultSetMetadata.BigQueryJdbcContextProxyto correctly handle unwrapping in connection proxy environments.BigQueryResultSetMetadata.isSearchableto returntruefor all column types. This fixes compliance issues where advanced types (GEOGRAPHY,JSON,INTERVAL,RANGEunderTypes.OTHER) were incorrectly reported as not searchable, even though they are fully queryable.