ajantha-bhat commented on code in PR #9487: URL: https://github.com/apache/iceberg/pull/9487#discussion_r1466259305
########## core/src/main/java/org/apache/iceberg/jdbc/JdbcUtil.java: ########## @@ -25,161 +25,177 @@ import java.util.Map; import java.util.Properties; import java.util.Set; +import org.apache.iceberg.BaseMetastoreTableOperations; import org.apache.iceberg.catalog.Namespace; import org.apache.iceberg.catalog.TableIdentifier; import org.apache.iceberg.relocated.com.google.common.base.Joiner; import org.apache.iceberg.relocated.com.google.common.base.Preconditions; import org.apache.iceberg.relocated.com.google.common.base.Splitter; import org.apache.iceberg.relocated.com.google.common.collect.Iterables; +import org.apache.iceberg.relocated.com.google.common.collect.Maps; final class JdbcUtil { // property to control strict-mode (aka check if namespace exists when creating a table) static final String STRICT_MODE_PROPERTY = JdbcCatalog.PROPERTY_PREFIX + "strict-mode"; - // Catalog Table - static final String CATALOG_TABLE_NAME = "iceberg_tables"; + // Catalog Table & View + static final String CATALOG_TABLE_VIEW_NAME = "iceberg_tables_views"; static final String CATALOG_NAME = "catalog_name"; - static final String TABLE_NAMESPACE = "table_namespace"; - static final String TABLE_NAME = "table_name"; + static final String TABLE_VIEW_NAME = "name"; + static final String TABLE_VIEW_NAMESPACE = "namespace"; + static final String TABLE_VIEW_FLAG = "type"; - static final String DO_COMMIT_SQL = + private static final String DO_COMMIT_SQL = "UPDATE " - + CATALOG_TABLE_NAME + + CATALOG_TABLE_VIEW_NAME + " SET " + JdbcTableOperations.METADATA_LOCATION_PROP + " = ? , " + JdbcTableOperations.PREVIOUS_METADATA_LOCATION_PROP - + " = ? " + + " = ?" + " WHERE " + CATALOG_NAME + " = ? AND " - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + " = ? AND " - + TABLE_NAME + + TABLE_VIEW_NAME + " = ? AND " + JdbcTableOperations.METADATA_LOCATION_PROP + + " = ? AND " + + TABLE_VIEW_FLAG + " = ?"; - static final String CREATE_CATALOG_TABLE = + static final String CREATE_CATALOG_SQL = "CREATE TABLE " - + CATALOG_TABLE_NAME + + CATALOG_TABLE_VIEW_NAME + "(" + CATALOG_NAME + " VARCHAR(255) NOT NULL," - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + " VARCHAR(255) NOT NULL," - + TABLE_NAME + + TABLE_VIEW_NAME + " VARCHAR(255) NOT NULL," + JdbcTableOperations.METADATA_LOCATION_PROP + " VARCHAR(1000)," + JdbcTableOperations.PREVIOUS_METADATA_LOCATION_PROP + " VARCHAR(1000)," + + TABLE_VIEW_FLAG + + " VARCHAR(5) NOT NULL," + "PRIMARY KEY (" + CATALOG_NAME + ", " - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + ", " - + TABLE_NAME + + TABLE_VIEW_NAME + ")" + ")"; - static final String GET_TABLE_SQL = + private static final String GET_SQL = "SELECT * FROM " - + CATALOG_TABLE_NAME + + CATALOG_TABLE_VIEW_NAME + " WHERE " + CATALOG_NAME + " = ? AND " - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + " = ? AND " - + TABLE_NAME - + " = ? "; - static final String LIST_TABLES_SQL = + + TABLE_VIEW_NAME + + " = ? AND " + + TABLE_VIEW_FLAG + + " = ?"; + static final String LIST_SQL = "SELECT * FROM " - + CATALOG_TABLE_NAME + + CATALOG_TABLE_VIEW_NAME + " WHERE " + CATALOG_NAME + " = ? AND " - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + + " = ? AND " + + TABLE_VIEW_FLAG + " = ?"; - static final String RENAME_TABLE_SQL = + static final String RENAME_SQL = "UPDATE " - + CATALOG_TABLE_NAME + + CATALOG_TABLE_VIEW_NAME + " SET " - + TABLE_NAMESPACE - + " = ? , " - + TABLE_NAME - + " = ? " + + TABLE_VIEW_NAMESPACE + + " = ?, " + + TABLE_VIEW_NAME + + " = ?" + " WHERE " + CATALOG_NAME + " = ? AND " - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + " = ? AND " - + TABLE_NAME - + " = ? "; - static final String DROP_TABLE_SQL = + + TABLE_VIEW_NAME + + " = ? AND " + + TABLE_VIEW_FLAG + + " = ?"; + static final String DROP_SQL = "DELETE FROM " - + CATALOG_TABLE_NAME + + CATALOG_TABLE_VIEW_NAME + " WHERE " + CATALOG_NAME + " = ? AND " - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + + " = ? AND " + + TABLE_VIEW_NAME + " = ? AND " - + TABLE_NAME - + " = ? "; - static final String GET_NAMESPACE_SQL = + + TABLE_VIEW_FLAG + + " = ?"; + private static final String GET_NAMESPACE_SQL = "SELECT " - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + " FROM " - + CATALOG_TABLE_NAME + + CATALOG_TABLE_VIEW_NAME + " WHERE " + CATALOG_NAME + " = ? AND " - + " ( " - + TABLE_NAMESPACE + + " (" + + TABLE_VIEW_NAMESPACE + " = ? OR " - + TABLE_NAMESPACE - + " LIKE ? ESCAPE '\\' " - + " ) " + + TABLE_VIEW_NAMESPACE + + " LIKE ? ESCAPE '\\')" + " LIMIT 1"; static final String LIST_NAMESPACES_SQL = "SELECT DISTINCT " - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + " FROM " - + CATALOG_TABLE_NAME + + CATALOG_TABLE_VIEW_NAME + " WHERE " + CATALOG_NAME + " = ? AND " - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + " LIKE ?"; - static final String LIST_ALL_TABLE_NAMESPACES_SQL = + static final String LIST_ALL_NAMESPACES_SQL = "SELECT DISTINCT " - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + " FROM " - + CATALOG_TABLE_NAME + + CATALOG_TABLE_VIEW_NAME + " WHERE " + CATALOG_NAME + " = ?"; - static final String DO_COMMIT_CREATE_TABLE_SQL = + private static final String DO_COMMIT_CREATE_SQL = "INSERT INTO " - + CATALOG_TABLE_NAME + + CATALOG_TABLE_VIEW_NAME + " (" + CATALOG_NAME + ", " - + TABLE_NAMESPACE + + TABLE_VIEW_NAMESPACE + ", " - + TABLE_NAME + + TABLE_VIEW_NAME + ", " + JdbcTableOperations.METADATA_LOCATION_PROP + ", " + JdbcTableOperations.PREVIOUS_METADATA_LOCATION_PROP + + ", " + + TABLE_VIEW_FLAG Review Comment: Automatically updating the schema before any SQL query seems like a right thing to do. But might slightly degrade performance as it will be two calls now. -- 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