Google BigQuery JDBC 1.1.0 – BigQueryJdbcSqlFeatureNotSupportedException when reading STRING columns
Has anyone successfully used the Google BigQuery JDBC 1.1.0 driver with KNIME 5.12?
Is there any configuration to force KNIME to use ResultSet.getString() instead of getNString()?
Or is this already a known compatibility issue?
Any help would be appreciated.
Thanks!
More details:
Environment
KNIME Analytics Platform 5.12.0
Google BigQuery Connector
Google BigQuery JDBC Driver 1.1.0
Tested both:
regular driver + dependencies
Uber JAR (google-cloud-bigquery-jdbc-1.1.0-all.jar)
Same behavior with both.
What works
Authentication
Connection
Metadata browsing
Listing datasets
Listing tables
Listing columns
DB Loader / DB Writer (writing to BigQuery)
Scalar queries such as:
SELECT 1;SELECT CURRENT_DATE();SELECT CAST(1 AS INT64);SELECT CAST(1.23 AS FLOAT64);SELECT CAST(TRUE AS BOOL);What fails
Any query returning a STRING value fails.
Even the simplest possible query:
SELECT CAST('PT' AS STRING) AS country;or
SELECT country
FROM `project.dataset.table`;throws:
com.google.cloud.bigquery.exception.BigQueryJdbcSqlFeatureNotSupportedException:
This method is not implemented.The problem is independent of:
tables
views
query complexity
number of rows
metadata
type mapping
I reproduced it even with a table containing a single row:
CREATE OR REPLACE TABLE dataset.test_knime AS
SELECT 'PT' AS country;Reading that table still fails.
Stack trace
The important part is:
Caused by: com.google.cloud.bigquery.exception.BigQueryJdbcSqlFeatureNotSupportedException:
This method is not implemented.
at com.google.cloud.bigquery.jdbc.BigQueryNoOpsResultSet.getNString(...)
at com.google.cloud.bigquery.jdbc.BigQueryBaseResultSet.getNString(...)
at org.knime.database.connection.wrappers.AbstractResultSetWrapper.getNString(...)It appears that KNIME is calling:
ResultSet.getNString(...)while the Google JDBC driver intentionally throws SQLFeatureNotSupportedException because getNString() is not implemented.