dramaticlly commented on code in PR #8340:
URL: https://github.com/apache/iceberg/pull/8340#discussion_r1296494553


##########
core/src/main/java/org/apache/iceberg/jdbc/JdbcUtil.java:
##########
@@ -345,38 +345,44 @@ public static String 
deletePropertiesStatement(Set<String> properties) {
 
   static boolean namespaceExists(
       String catalogName, JdbcClientPool connections, Namespace namespace) {
-    if (exists(
+    if (namespaceExists(
         connections,
         JdbcUtil.GET_NAMESPACE_SQL,
         catalogName,
-        JdbcUtil.namespaceToString(namespace) + "%")) {
+        JdbcUtil.namespaceToString(namespace))) {
       return true;
     }
 
-    if (exists(
+    if (namespaceExists(
         connections,
         JdbcUtil.GET_NAMESPACE_PROPERTIES_SQL,
         catalogName,
-        JdbcUtil.namespaceToString(namespace) + "%")) {
+        JdbcUtil.namespaceToString(namespace))) {
       return true;
     }
 
     return false;
   }
 
   @SuppressWarnings("checkstyle:NestedTryDepth")
-  private static boolean exists(JdbcClientPool connections, String sql, 
String... args) {
+  private static boolean namespaceExists(
+      JdbcClientPool connections, String sql, String catalogName, String 
namespace) {
     try {
       return connections.run(
           conn -> {
             try (PreparedStatement preparedStatement = 
conn.prepareStatement(sql)) {
-              for (int pos = 0; pos < args.length; pos += 1) {
-                preparedStatement.setString(pos + 1, args[pos]);
-              }
-
+              preparedStatement.setString(1, catalogName);
+              preparedStatement.setString(2, namespace + "%");
               try (ResultSet rs = preparedStatement.executeQuery()) {
-                if (rs.next()) {
-                  return true;
+                while (rs.next()) {
+                  String ns = rs.getString(1);
+                  // given namespace can exist as is or can be parent of sub 
namespace level,
+                  // containing `.`
+                  // for existing namespace: `root.namespace.subnamespace` 
searching
+                  // `root.namespace` will return true

Review Comment:
   I am curious, if we check for equality and prefix match here, would user 
input of `root.name` match existing namespace of `root.namespace.subnamespace`?



-- 
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]

Reply via email to