Cannot use catalog name in qualified table reference

Dremio Server 14.0.0-202103011714040666-9a0c2e10
Dremio JDBC 14.0.0-202103011714040666-9a0c2e10

JDBC driver returns DREMIO as a catalog name in DatabaseMetadata.getCatalogs, getTables etc.

An application may dynamically generate qualified names based on these responses.

Was an issue noted with previous Dremio versions. Will this be fixed shortly?

sun.reflect.GeneratedConstructorAccessor236.newInstance():-1
sun.reflect.DelegatingConstructorAccessorImpl.newInstance():45
java.lang.reflect.Constructor.newInstance():423
org.apache.calcite.runtime.Resources$ExInstWithCause.ex():463
org.apache.calcite.sql.SqlUtil.newContextException():803
org.apache.calcite.sql.SqlUtil.newContextException():788
org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError():4478
org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl():104
org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl():120
org.apache.calcite.sql.validate.AbstractNamespace.validate():84
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace():946
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery():927
org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom():2979
org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom():2964
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect():3205
org.apache.calcite.sql.validate.SelectNamespace.validateImpl():60
org.apache.calcite.sql.validate.AbstractNamespace.validate():84
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace():946
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery():927

A SQL statement will not parse when a 3-part (catalog.schema.table) name is used, will only function with a 2-part name.

I believe the driver returns the catalog name but also returns false for DatabaseMetaData#isCatalogAtStart() which should signal not to use the catalog to qualify the table name.

This has been Dremio’s behavior since the beginning, and there’s no timeline for supporting qualifying table names with the catalog identifier.

That method denotes where a catalog reference would appear in a vendor grammar.

Based on experience, one cannot presume to rely on the responses from drivers to be correct.

For example, DatabaseMetadata.supportsCatalogsInDataManipulation returns true.