Bulk fetch all columns from all tables in JDBC connectors #22241
+515
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Before this change, when listing table columns, JDBC connectors would first list tables and then list columns of a table. Thus, when serving Trino's
information_schema.columns
orsystem.jdbc.columns
, we would make O(#tables) calls to the remote database.With this change, we utilize remote database's bulk column listing facilities to satisfy Trino's bulk column listing requests. This can be viewed as "
information_schema.columns
pass-through", although this works for both Trino'sinformation_schema.columns
and Trino'ssystem.jdbc.columns
(
io.trino.jdbc.TrinoDatabaseMetaData.getColumns
), and does not use remote database'sinformation_schema.columns
directly. Instead, the commit leverages the fact thatDatabaseMetaData.getColumns
typically used to get columns of a table can be used without a table filter, and then it gets all columns from all tables.The bulk retrieval is supported for selected JDBC connectors, and by default is not supported (requires
JdbcClient
changes).Release notes
( ) This is not user-visible or is docs only, and no release notes are required.
( ) Release notes are required. Please propose a release note for me.
(x) Release notes are required, with the following suggested text: