This is an automated email from the ASF dual-hosted git repository.
amestry 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 857ffa2 ATLAS-4122: Advanced Search: Literals with double-quotes.
857ffa2 is described below
commit 857ffa2df5d08b5c336ff641fa5c10b9e589be70
Author: Ashutosh Mestry <[email protected]>
AuthorDate: Tue Feb 2 20:59:07 2021 -0800
ATLAS-4122: Advanced Search: Literals with double-quotes.
---
.../query/executors/GremlinClauseToTraversalTranslator.java | 5 +++--
.../src/test/java/org/apache/atlas/query/DSLQueriesTest.java | 9 ++++++---
.../java/org/apache/atlas/query/GremlinQueryComposerTest.java | 8 ++++++++
3 files changed, 17 insertions(+), 5 deletions(-)
diff --git
a/repository/src/main/java/org/apache/atlas/query/executors/GremlinClauseToTraversalTranslator.java
b/repository/src/main/java/org/apache/atlas/query/executors/GremlinClauseToTraversalTranslator.java
index a7b05fd..156a65c 100644
---
a/repository/src/main/java/org/apache/atlas/query/executors/GremlinClauseToTraversalTranslator.java
+++
b/repository/src/main/java/org/apache/atlas/query/executors/GremlinClauseToTraversalTranslator.java
@@ -48,6 +48,8 @@ public class GremlinClauseToTraversalTranslator {
private static final String EDGE_NAME_CLASSIFIED_AS =
"classifiedAs";
private static final String EDGE_NAME_TRAIT_NAMES =
"__traitNames";
private static final String EDGE_NAME_PROPAGATED_TRAIT_NAMES =
"__propagatedTraitNames";
+ private static final String[] STR_TOKEN_SEARCH = new
String[]{"[", "]", "'", "\""};
+ private static final String[] STR_TOKEN_REPLACE = new
String[]{"", "", "", ""};
private final AtlasGraph graph;
@@ -293,8 +295,7 @@ public class GremlinClauseToTraversalTranslator {
}
private String[] csvToArray(String strRhs) {
- String csvRow = StringUtils.replaceEach(strRhs, new String[]{"[",
"]", "'"}, new String[]{"", "", ""});
-
+ String csvRow = StringUtils.replaceEach(strRhs, STR_TOKEN_SEARCH,
STR_TOKEN_REPLACE);
return csvRow.split(",");
}
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 359cb31..0c1dd59 100644
--- a/repository/src/test/java/org/apache/atlas/query/DSLQueriesTest.java
+++ b/repository/src/test/java/org/apache/atlas/query/DSLQueriesTest.java
@@ -226,7 +226,8 @@ public class DSLQueriesTest extends BasicTestSetup {
{"hive_table hasTerm \"modernTrade@salesGlossary\" and
hive_table isA Dimension",1, new ListValidator( "time_dim")},
{"hive_table hasTerm \"modernTrade@salesGlossary\" and db.name
= \"Sales\" or (hive_table.name = \"sales_fact_monthly_mv\")", 2, new
ListValidator("sales_fact_monthly_mv", "time_dim")},
{"hive_table where hive_table hasTerm
\"modernTrade@salesGlossary\"", 2, new ListValidator("logging_fact_monthly_mv",
"time_dim")},
- {"hive_table where (name = \"product_dim\" and hive_table
hasTerm \"ecommerce@salesGlossary\")", 1, new ListValidator("product_dim")}
+ {"hive_table where (name = \"product_dim\" and hive_table
hasTerm \"ecommerce@salesGlossary\")", 1, new ListValidator("product_dim")},
+ {"hive_table where (name = 'product_dim' and hive_table
hasTerm 'ecommerce@salesGlossary')", 1, new ListValidator("product_dim")}
};
}
@@ -283,14 +284,16 @@ public class DSLQueriesTest extends BasicTestSetup {
{"DataSet where name='sales_fact'", 1},
{"Asset where name='sales_fact'", 1},
{"hive_db _NOT_CLASSIFIED", 3},
- {"_CLASSIFIED", 23}
+ {"_CLASSIFIED", 23},
+ {"hive_db where name = [\"Reporting\",\"Sales\"]", 2},
+ {"hive_db where name = ['Reporting', 'Sales']", 2},
};
}
@Test(dataProvider = "basicProvider")
public void basic(String query, int expected) throws AtlasBaseException {
queryAssert(query, expected, DEFAULT_LIMIT, 0);
-// queryAssert(query.replace("where", " "), expected, DEFAULT_LIMIT, 0);
+ queryAssert(query.replace("where", " "), expected, DEFAULT_LIMIT, 0);
}
@DataProvider(name = "systemAttributesProvider")
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 0e8af18..3594e2f 100644
---
a/repository/src/test/java/org/apache/atlas/query/GremlinQueryComposerTest.java
+++
b/repository/src/test/java/org/apache/atlas/query/GremlinQueryComposerTest.java
@@ -41,6 +41,14 @@ import static org.testng.Assert.fail;
import static
org.apache.atlas.type.AtlasStructType.AtlasAttribute.AtlasRelationshipEdgeDirection.OUT;
public class GremlinQueryComposerTest {
@Test
+ public void withinClause() {
+ String expected1 = "g.V().has('__typeName',
within('Asset','Table')).has('Asset.__s_name',
within('t1','t2','t3')).dedup().limit(25).toList()";
+ String expected2 = "g.V().has('__typeName',
within('Asset','Table')).has('Asset.__s_name',
within(\"t1\",\"t2\",\"t3\")).dedup().limit(25).toList()";
+ verify("Asset where name=['t1', 't2', 't3']", expected1);
+ verify("Asset where name=[\"t1\", \"t2\", \"t3\"]", expected2);
+ }
+
+ @Test
public void classification() {
String expected = "g.V().outE('classifiedAs').has('__name',
within('PII')).outV().dedup().limit(25).toList()";
verify("PII", expected);