diff --git a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java index a590ede6d2e6..78ab31ab9823 100644 --- a/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java +++ b/paimon-hive/paimon-hive-catalog/src/main/java/org/apache/paimon/hive/HiveCatalog.java @@ -436,17 +436,13 @@ protected void alterDatabaseImpl(String name, List changes) { @Override protected List listTablesImpl(String databaseName) { try { - List allTables = clients.run(client -> client.getAllTables(databaseName)); - List result = new ArrayList<>(allTables.size()); - for (String t : allTables) { - try { - Identifier identifier = new Identifier(databaseName, t); - Table table = getHmsTable(identifier); - if (isPaimonTable(identifier, table) - || (!formatTableDisabled() && isFormatTable(table))) { - result.add(t); - } - } catch (TableNotExistException ignored) { + List tableNames = clients.run(client -> client.getAllTables(databaseName)); + List hmsTables = + clients.run(client -> client.getTableObjectsByName(databaseName, tableNames)); + List result = new ArrayList<>(hmsTables.size()); + for (Table table : hmsTables) { + if (isPaimonTable(table) || (!formatTableDisabled() && isFormatTable(table))) { + result.add(table.getTableName()); } } return result; @@ -478,7 +474,7 @@ public TableSchema getDataTableSchema(Identifier identifier) throws TableNotExis private TableSchema getDataTableSchema(Identifier identifier, Table table) throws TableNotExistException { - if (!isPaimonTable(identifier, table)) { + if (!isPaimonTable(table)) { throw new TableNotExistException(identifier); } @@ -870,7 +866,7 @@ private Table renameHiveTable(Identifier fromTable, Identifier toTable) { protected void alterTableImpl(Identifier identifier, List changes) throws TableNotExistException, ColumnAlreadyExistException, ColumnNotExistException { Table table = getHmsTable(identifier); - if (!isPaimonTable(identifier, table)) { + if (!isPaimonTable(table)) { throw new UnsupportedOperationException("Only data table support alter table."); } @@ -1044,12 +1040,6 @@ public Table getHmsTable(Identifier identifier) throws TableNotExistException { } } - private boolean isPaimonTable(Identifier identifier, Table table) { - return isPaimonTable(table) - && tableExistsInFileSystem( - getTableLocation(identifier, table), identifier.getBranchNameOrDefault()); - } - private static boolean isPaimonTable(Table table) { boolean isPaimonTable = INPUT_FORMAT_CLASS_NAME.equals(table.getSd().getInputFormat())