Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DatabaseMetaData.getTables() etc. not working #130

Open
TimVermeiren opened this issue Dec 11, 2018 · 0 comments
Open

DatabaseMetaData.getTables() etc. not working #130

TimVermeiren opened this issue Dec 11, 2018 · 0 comments

Comments

@TimVermeiren
Copy link

When I tried the method DatabaseMetaData.getTables() (or getProcedures()), I always get back empty TABLE_NAME-columns (or PROCEDURE_NAME-columns).

When I manually did the underlying query:

SELECT CASE WHEN TABLE_CATALOG='' THEN NULL ELSE TABLE_CATALOG END AS TABLE_CAT, CASE WHEN TABLE_SCHEMA='' THEN NULL ELSE TABLE_SCHEMA END AS TABLE_SCHEM, TABLE_NAME, 'TABLE' AS TABLE_TYPE, NULL AS REMARKS, NULL AS TYPE_CAT, NULL AS TYPE_SCHEM, NULL AS TYPE_NAME, NULL AS SELF_REFERENCING_COL_NAME, NULL AS REF_GENERATION
FROM INFORMATION_SCHEMA.TABLES AS T
WHERE 1=1 

I've got

TABLE_CAT TABLE_CAT TABLE_SCHEM TABLE_SCHEM REMARKS TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME
null null tableName1 TABLE
null null tableName2 TABLE

When I changed the usages of CASE WHEN into COALESCE() it was working and gave the expected result:
SELECT COALESCE(TABLE_CATALOG, '') AS TABLE_CAT, COALESCE(TABLE_SCHEMA, '') AS TABLE_SCHEM, TABLE_NAME, 'TABLE' AS TABLE_TYPE, NULL AS REMARKS, NULL AS TYPE_CAT, NULL AS TYPE_SCHEM, NULL AS TYPE_NAME, NULL AS SELF_REFERENCING_COL_NAME, NULL AS REF_GENERATION FROM INFORMATION_SCHEMA.TABLES WHERE 1=1

TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION
'' '' tableName1 TABLE
'' '' tableName2 TABLE

I don't have the time to file a proper pull request, but if someone could please change the constant
nl.topicus.jdbc.CloudSpannerDatabaseMetaDataConstants#SELECT_TABLES_COLUMNS
into

 public static final String SELECT_TABLES_COLUMNS =
      "SELECT COALESCE(TABLE_CATALOG, '') AS TABLE_CAT, COALESCE(TABLE_SCHEMA, '') AS TABLE_SCHEM, TABLE_NAME, 'TABLE' AS TABLE_TYPE, NULL AS REMARKS, NULL AS TYPE_CAT, NULL AS TYPE_SCHEM, NULL AS TYPE_NAME, NULL AS SELF_REFERENCING_COL_NAME, NULL AS REF_GENERATION ";

Thanks alot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant