You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by pi...@apache.org on 2022/10/13 09:15:26 UTC

[atlas] branch branch-2.0 updated: ATLAS-4685: Advanced Search : Not Equals operator doesn't work for String type

This is an automated email from the ASF dual-hosted git repository.

pinal pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 876a4da3a ATLAS-4685: Advanced Search : Not Equals operator doesn't work for String type
876a4da3a is described below

commit 876a4da3a2ca4e452b121a2baa6ff13cb5d29a89
Author: Pinal Shah <pi...@freestoneinfotech.com>
AuthorDate: Mon Oct 10 11:35:19 2022 +0530

    ATLAS-4685: Advanced Search : Not Equals operator doesn't work for String type
    
    Signed-off-by: Pinal Shah <pi...@freestoneinfotech.com>
    (cherry picked from commit 392f8b4a38bcb18a684f21127594afa74e10ee47)
---
 .../src/main/java/org/apache/atlas/query/GremlinQueryComposer.java   | 5 +++--
 repository/src/test/java/org/apache/atlas/query/DSLQueriesTest.java  | 4 ++--
 .../test/java/org/apache/atlas/query/GremlinQueryComposerTest.java   | 2 +-
 .../src/test/java/org/apache/atlas/query/TraversalComposerTest.java  | 2 ++
 4 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/repository/src/main/java/org/apache/atlas/query/GremlinQueryComposer.java b/repository/src/main/java/org/apache/atlas/query/GremlinQueryComposer.java
index bc3930250..2cf3532db 100644
--- a/repository/src/main/java/org/apache/atlas/query/GremlinQueryComposer.java
+++ b/repository/src/main/java/org/apache/atlas/query/GremlinQueryComposer.java
@@ -238,9 +238,10 @@ public class GremlinQueryComposer {
             } else if (op == SearchParameters.Operator.IN) {
                 add(GremlinClause.HAS_OPERATOR, getPropertyForClause(lhsI), "within", rhs);
             } else if (op == SearchParameters.Operator.NEQ && rhsIsNotDateOrNumOrBool) {
-                String propertyName = getPropertyForClause(lhsI);
+                String propertyName  = getPropertyForClause(lhsI);
+                Object normalizedRhs = getNormalizedAttrVal(lhsI, IdentifierHelper.removeQuotes(rhs));
 
-                add(GremlinClause.HAS_NOT_OPERATOR, propertyName, rhs, propertyName);
+                add(GremlinClause.HAS_NOT_OPERATOR, propertyName, normalizedRhs.toString(), propertyName);
             } else {
                 Object normalizedRhs = getNormalizedAttrVal(lhsI, IdentifierHelper.removeQuotes(rhs));
 
diff --git a/repository/src/test/java/org/apache/atlas/query/DSLQueriesTest.java b/repository/src/test/java/org/apache/atlas/query/DSLQueriesTest.java
index 1d3e245c5..99bdc94bc 100644
--- a/repository/src/test/java/org/apache/atlas/query/DSLQueriesTest.java
+++ b/repository/src/test/java/org/apache/atlas/query/DSLQueriesTest.java
@@ -458,9 +458,9 @@ public class DSLQueriesTest extends BasicTestSetup {
                 {"hive_db as d where owner = ['John ETL', 'Jane BI']", 2},
                 {"hive_db as d where owner = ['John ETL', 'Jane BI'] limit 10", 2},
                 {"hive_db as d where owner = ['John ETL', 'Jane BI'] limit 10 offset 1", 1},
-                {"hive_db where description != 'Random'", 3},
+                {"hive_db where description != '/apps/warehouse/logging'", 2},
                 {"hive_db where (owner = \"John ETL\" and description != Random)", 1},
-                {"hive_db where (owner = \"Tim ETL\" and description != Random)", 1},
+                {"hive_table where description != ''", 8},
                 {"hive_db where (name='Reporting' or ((name='Logging' and owner = 'Jane BI') and (name='Logging' and owner = 'John ETL')))", 1}
         };
     }
diff --git a/repository/src/test/java/org/apache/atlas/query/GremlinQueryComposerTest.java b/repository/src/test/java/org/apache/atlas/query/GremlinQueryComposerTest.java
index 4002a32b1..c5076cea4 100644
--- a/repository/src/test/java/org/apache/atlas/query/GremlinQueryComposerTest.java
+++ b/repository/src/test/java/org/apache/atlas/query/GremlinQueryComposerTest.java
@@ -409,7 +409,7 @@ public class GremlinQueryComposerTest {
     @Test
     public void whereClauseWithNEQCondition() {
         verify("Table where owner != 'random'",
-                "g.V().has('__typeName', 'Table').or(__.has('Table.owner', neq('random')), __.hasNot('Table.owner')).dedup().limit(25).toList()");
+                "g.V().has('__typeName', 'Table').or(__.has('Table.owner', neq(random)), __.hasNot('Table.owner')).dedup().limit(25).toList()");
     }
 
     @Test
diff --git a/repository/src/test/java/org/apache/atlas/query/TraversalComposerTest.java b/repository/src/test/java/org/apache/atlas/query/TraversalComposerTest.java
index 359ac7045..5950d5562 100644
--- a/repository/src/test/java/org/apache/atlas/query/TraversalComposerTest.java
+++ b/repository/src/test/java/org/apache/atlas/query/TraversalComposerTest.java
@@ -70,6 +70,8 @@ public class TraversalComposerTest extends BaseDSLComposer {
         verify("hive_column where name = 'test_limit' limit 2 offset 4",
                 "[JanusGraphStep([],[__typeName.eq(hive_column), hive_column.name.eq(test_limit)]), DedupGlobalStep(null,null), DedupGlobalStep(null,null), RangeGlobalStep(4,6)]");
 
+        verify("hive_db where owner != 'hdfs'",
+                "[JanusGraphStep([],[__typeName.eq(hive_db)]), OrStep([[HasStep([hive_db.owner.neq(hdfs)])], [NotStep([JanusGraphPropertiesStep([hive_db.owner],property)])]]), DedupGlobalStep(null,null), RangeGlobalStep(0,25)]");
     }
 
     private void verify(String dsl, String expected) {