eric-maynard commented on code in PR #1686:
URL: https://github.com/apache/polaris/pull/1686#discussion_r2122656994


##########
extension/persistence/relational-jdbc/src/test/java/org/apache/polaris/extension/persistence/relational/jdbc/QueryGeneratorTest.java:
##########
@@ -222,4 +222,29 @@ void testGenerateWhereClause_emptyMap() {
     Map<String, Object> whereClause = Collections.emptyMap();
     assertEquals("", QueryGenerator.generateWhereClause(whereClause));
   }
+
+  @Test
+  void testGenerateOverlapQuery() {
+    String realmId = "realmId";
+    int parentId = "polaris".hashCode();
+
+    assertEquals(
+        "SELECT entity_version, to_purge_timestamp, internal_properties, "
+            + "catalog_id, purge_timestamp, sub_type_code, create_timestamp, 
last_update_timestamp, "
+            + "parent_id, name, location, id, drop_timestamp, properties, 
grant_records_version, "
+            + "type_code FROM POLARIS_SCHEMA.ENTITIES WHERE realm_id = 
'realmId' AND parent_id = "
+            + "-398224152 AND (1 = 2 OR location = '/' OR location = '/tmp/' 
OR location = '/tmp/location/' "
+            + "OR location LIKE '/tmp/location/%')",
+        QueryGenerator.generateOverlapQuery(realmId, parentId, 
"/tmp/location/"));
+
+    assertEquals(
+        "SELECT entity_version, to_purge_timestamp, internal_properties, 
catalog_id, "
+            + "purge_timestamp, sub_type_code, create_timestamp, 
last_update_timestamp, parent_id, "
+            + "name, location, id, drop_timestamp, properties, 
grant_records_version, type_code "
+            + "FROM POLARIS_SCHEMA.ENTITIES WHERE realm_id = 'realmId' AND 
parent_id = -398224152 "
+            + "AND (1 = 2 OR location = 's3:/' OR location = 's3://' OR 
location = 's3://bucket/' OR "
+            + "location = 's3://bucket/tmp/' OR location = 
's3://bucket/tmp/location/' OR location "

Review Comment:
   > What about case differences in the URI scheme or bucket name?
   
   Then there is no overlap.
   
   > What is a particular storage technology treats path in a case-insensitive 
way?
   
   The check is case sensitive, to be clear. From what I can see, the current 
check is also case sensitive 
([1](https://github.com/apache/polaris/blob/4528db1020b73814109d19e615e43bddf5ad652c/service/common/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalog.java#L1162),
 
[2](https://github.com/apache/polaris/blob/4528db1020b73814109d19e615e43bddf5ad652c/polaris-core/src/main/java/org/apache/polaris/core/storage/StorageLocation.java#L93)).
   
   > What about special chars in the URI?
   
   What about them?



-- 
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...@polaris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to