-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bulk fetch all columns from all tables in JDBC connectors
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` or `system.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's `information_schema.columns` and Trino's `system.jdbc.columns` (`io.trino.jdbc.TrinoDatabaseMetaData.getColumns`), and does not use remote database's `information_schema.columns` directly. Instead, the commit leverages the fact that `DatabaseMetaData.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). Co-authored-by: Ashhar Hasan <[email protected]>
- Loading branch information
Showing
21 changed files
with
515 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/FailingExecutor.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
/* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package io.trino.plugin.jdbc; | ||
|
||
import java.util.concurrent.Executor; | ||
|
||
public enum FailingExecutor | ||
implements Executor | ||
{ | ||
INSTANCE; | ||
|
||
@Override | ||
public void execute(Runnable command) | ||
{ | ||
throw new UnsupportedOperationException(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.