Obviously getColumns() is the only way to request the column definitions for a view, as there is no distinct such method explicitly for views. Sad but true, the field TABLE_TYPE is existing for getTables() and getTableTypes() but not for getColumns(). Maybe it would be a good idea to add it to the JDBC spec? Anyways, Thomas apparently is right. Any tool that wants to learn about the structure of a view has no other chance than using getColumns().
From: pgsql-jdbc-owner@postgresql.org [mailto:pgsql-jdbc-owner@postgresql.org] On Behalf Of Dave Cramer Sent: Donnerstag, 15. Oktober 2015 22:48 To: Thomas Kellerer Cc: List; lance.andersen@oracle.com Subject: Re: [JDBC] Release 1204 released
So I am looking at the API reference and no where does it say getColumns should return information about views.
That being said the fact that getTables returns the type of the table there may be some inference that it should ?
On 15 October 2015 at 05:10, Thomas Kellerer <spam_eater@gmx.net> wrote:
Dave Cramer schrieb am 09.10.2015 um 21:32: > * fix: filter DatabaseMetaData.getColumns by tables PR #386 (0c95126)
Why was this done?
From my perspective this is a serious bug, because now getColumns() doesn't return column information for views, materialized views or foreign tables any more.
Which in turn means that the SQL client I am maintaining (SQL Workbench/J) is no longer able to display column information for anything else than tables.
I would assume that this is true for any other JDBC based SQL client. It will also break tools like Liquibase and probably Hibernate as well as they also rely on getColumns() to return information about views (I am sure about Liquibase, not 100% sure about Hibernate though)