nastra commented on code in PR #9487: URL: https://github.com/apache/iceberg/pull/9487#discussion_r1458852399
########## core/src/main/java/org/apache/iceberg/jdbc/JdbcUtil.java: ########## @@ -303,6 +287,325 @@ public static Properties filterAndRemovePrefix(Map<String, String> properties, S return result; } + static String getTableOrViewSql(boolean table) { + String tableOrViewTableName = table ? CATALOG_TABLE_NAME : CATALOG_VIEW_NAME; + String tableOrViewNamespace = table ? TABLE_NAMESPACE : VIEW_NAMESPACE; + String tableOrViewName = table ? TABLE_NAME : VIEW_NAME; + return String.format( + GET_TABLE_OR_VIEW_SQL, tableOrViewTableName, tableOrViewNamespace, tableOrViewName); + } + + private static String getTableOrViewNamespaceSql(boolean table) { + String tableOrViewTableName = table ? CATALOG_TABLE_NAME : CATALOG_VIEW_NAME; + String tableOrViewNamespace = table ? TABLE_NAMESPACE : VIEW_NAMESPACE; + return String.format( + GET_TABLE_OR_VIEW_NAMESPACE_SQL, + tableOrViewNamespace, + tableOrViewTableName, + tableOrViewNamespace, + tableOrViewNamespace); + } + + public static String getTableNamespaceSql() { + return getTableOrViewNamespaceSql(true); + } + + public static String getViewNamespaceSql() { + return getTableOrViewNamespaceSql(false); + } + + private static String listTableOrViewNamespacesSql(boolean table) { + String tableOrViewTableName = table ? CATALOG_TABLE_NAME : CATALOG_VIEW_NAME; + String tableOrViewNamespace = table ? TABLE_NAMESPACE : VIEW_NAMESPACE; + return String.format( + LIST_TABLE_OR_VIEW_NAMESPACES_SQL, + tableOrViewNamespace, + tableOrViewTableName, + tableOrViewNamespace); + } + + public static String listTableNamespacesSql() { + return listTableOrViewNamespacesSql(true); + } + + public static String listViewNamespacesSql() { + return listTableOrViewNamespacesSql(false); + } + + private static String listAllTableOrViewNamespacesSql(boolean table) { + String tableOrViewTableName = table ? CATALOG_TABLE_NAME : CATALOG_VIEW_NAME; + String tableOrViewNamespace = table ? TABLE_NAMESPACE : VIEW_NAMESPACE; + return String.format( + LIST_ALL_TABLE_OR_VIEW_NAMESPACES_SQL, tableOrViewNamespace, tableOrViewTableName); + } + + public static String listAllTableNamespacesSql() { + return listAllTableOrViewNamespacesSql(true); + } + + public static String listAllViewNamespacesSql() { + return listAllTableOrViewNamespacesSql(false); + } + + static String doCommitSql(boolean table) { + String tableOrViewTableName = table ? CATALOG_TABLE_NAME : CATALOG_VIEW_NAME; + String tableOrViewNamespace = table ? TABLE_NAMESPACE : VIEW_NAMESPACE; + String tableOrViewName = table ? TABLE_NAME : VIEW_NAME; + return String.format( + DO_COMMIT_TABLE_OR_VIEW_SQL, tableOrViewTableName, tableOrViewNamespace, tableOrViewName); + } + + private static String createCatalogTableOrViewSql(boolean table) { + String tableOrViewTableName = table ? CATALOG_TABLE_NAME : CATALOG_VIEW_NAME; + String tableOrViewNamespace = table ? TABLE_NAMESPACE : VIEW_NAMESPACE; + String tableOrViewName = table ? TABLE_NAME : VIEW_NAME; + return String.format( + CREATE_CATALOG_TABLE_OR_VIEW, + tableOrViewTableName, + tableOrViewNamespace, + tableOrViewName, + tableOrViewNamespace, + tableOrViewName); + } + + public static String createCatalogTableSql() { + return createCatalogTableOrViewSql(true); + } + + public static String createCatalogViewSql() { + return createCatalogTableOrViewSql(false); + } + + private static String listTablesOrViewsSql(boolean table) { + String tableOrViewTableName = table ? CATALOG_TABLE_NAME : CATALOG_VIEW_NAME; + String tableOrViewNamespace = table ? TABLE_NAMESPACE : VIEW_NAMESPACE; + return String.format(LIST_TABLES_OR_VIEWS_SQL, tableOrViewTableName, tableOrViewNamespace); + } + + public static String listTablesSql() { + return listTablesOrViewsSql(true); + } + + public static String listViewsSql() { + return listTablesOrViewsSql(false); + } + + private static String renameTableOrViewSql(boolean table) { + String tableOrViewTableName = table ? CATALOG_TABLE_NAME : CATALOG_VIEW_NAME; + String tableOrViewNamespace = table ? TABLE_NAMESPACE : VIEW_NAMESPACE; + String tableOrViewName = table ? TABLE_NAME : VIEW_NAME; + return String.format( + RENAME_TABLE_OR_VIEW_SQL, + tableOrViewTableName, + tableOrViewNamespace, + tableOrViewName, + tableOrViewNamespace, + tableOrViewName); + } + + public static String renameTableSql() { + return renameTableOrViewSql(true); + } + + public static String renameViewSql() { + return renameTableOrViewSql(false); + } + + private static String dropTableOrViewSql(boolean table) { + String tableOrViewTableName = table ? CATALOG_TABLE_NAME : CATALOG_VIEW_NAME; + String tableOrViewNamespace = table ? TABLE_NAMESPACE : VIEW_NAMESPACE; + String tableOrViewName = table ? TABLE_NAME : VIEW_NAME; + return String.format( + DROP_TABLE_OR_VIEW_SQL, tableOrViewTableName, tableOrViewNamespace, tableOrViewName); + } + + public static String dropTableSql() { + return dropTableOrViewSql(true); + } + + public static String dropViewSql() { + return dropTableOrViewSql(false); + } + + private static String doCommitCreateTableOrViewSql(boolean table) { + String tableOrViewTableName = table ? CATALOG_TABLE_NAME : CATALOG_VIEW_NAME; + String tableOrViewNamespace = table ? TABLE_NAMESPACE : VIEW_NAMESPACE; + String tableOrViewName = table ? TABLE_NAME : VIEW_NAME; + return String.format( + DO_COMMIT_CREATE_TABLE_OR_VIEW_SQL, + tableOrViewTableName, + tableOrViewNamespace, + tableOrViewName); + } + + private static int updateTableOrView( + boolean table, + JdbcClientPool connections, + String catalogName, + TableIdentifier tableOrViewIdentifier, + String newMetadataLocation, + String oldMetadataLocation) + throws SQLException, InterruptedException { + return connections.run( + conn -> { + try (PreparedStatement sql = conn.prepareStatement(doCommitSql(table))) { + // UPDATE + sql.setString(1, newMetadataLocation); + sql.setString(2, oldMetadataLocation); + // WHERE + sql.setString(3, catalogName); + sql.setString(4, namespaceToString(tableOrViewIdentifier.namespace())); + sql.setString(5, tableOrViewIdentifier.name()); + sql.setString(6, oldMetadataLocation); + return sql.executeUpdate(); + } + }); + } + + public static int updateTable( Review Comment: we should make as much of these methods as possible package-private rather than public -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org