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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]