You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ra...@apache.org on 2022/03/08 18:23:38 UTC
[atlas] branch branch-2.0 updated: ATLAS-4560 : DSL Search : Error when keyword 'limit' is present in the search value
This is an automated email from the ASF dual-hosted git repository.
radhikakundam 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 db32748 ATLAS-4560 : DSL Search : Error when keyword 'limit' is present in the search value
db32748 is described below
commit db3274852615b17acd3ee967cb7bb82b8c995e70
Author: snehal.ambavkar <sn...@cloudera.com>
AuthorDate: Thu Mar 3 22:51:08 2022 +0530
ATLAS-4560 : DSL Search : Error when keyword 'limit' is present in the search value
Signed-off-by: radhikakundam <ra...@apache.org>
(cherry picked from commit f12b0cde76b9c17080f12a5be59e7ce8ee4dc881)
---
.../query/executors/TraversalBasedExecutor.java | 5 ---
.../test/java/org/apache/atlas/BasicTestSetup.java | 11 +++++--
.../atlas/discovery/AtlasDiscoveryServiceTest.java | 8 ++---
.../org/apache/atlas/query/BaseDSLComposer.java | 1 +
.../org/apache/atlas/query/DSLQueriesTest.java | 37 ++++++++++++----------
.../apache/atlas/query/TraversalComposerTest.java | 16 ++++++++++
6 files changed, 51 insertions(+), 27 deletions(-)
diff --git a/repository/src/main/java/org/apache/atlas/query/executors/TraversalBasedExecutor.java b/repository/src/main/java/org/apache/atlas/query/executors/TraversalBasedExecutor.java
index ecd82e3..5a5b7e7 100644
--- a/repository/src/main/java/org/apache/atlas/query/executors/TraversalBasedExecutor.java
+++ b/repository/src/main/java/org/apache/atlas/query/executors/TraversalBasedExecutor.java
@@ -44,7 +44,6 @@ public class TraversalBasedExecutor implements DSLQueryExecutor {
private static final String DSL_KEYWORD_LIMIT = "limit";
private static final String DSL_KEYWORD_OFFSET = "offset";
private static final String DEFAULT_LIMIT_OFFSET_TEMPLATE = " limit %d offset %d";
- private static final String CLAUSE_OFFSET_ZERO = " offset 0";
private static final Translator translator;
@@ -144,10 +143,6 @@ public class TraversalBasedExecutor implements DSLQueryExecutor {
query += String.format(DEFAULT_LIMIT_OFFSET_TEMPLATE, params.limit(), params.offset());
}
- if (query.contains(DSL_KEYWORD_LIMIT) && !query.contains(DSL_KEYWORD_OFFSET)) {
- query += CLAUSE_OFFSET_ZERO;
- }
-
return query;
}
}
diff --git a/repository/src/test/java/org/apache/atlas/BasicTestSetup.java b/repository/src/test/java/org/apache/atlas/BasicTestSetup.java
index a1d7b62..9b0578f 100644
--- a/repository/src/test/java/org/apache/atlas/BasicTestSetup.java
+++ b/repository/src/test/java/org/apache/atlas/BasicTestSetup.java
@@ -165,7 +165,11 @@ public abstract class BasicTestSetup extends AtlasTestBase {
.of(column("time_id", "int", "time id"),
column("product_id", "int", "product id"),
column("customer_id", "int", "customer id", PII_CLASSIFICATION),
- column("sales", "double", "product id", METRIC_CLASSIFICATION));
+ column("sales", "double", "product id", METRIC_CLASSIFICATION),
+ column("test", "int", "test 1"),
+ column("test_limit", "int", "test limit 1")
+ );
+
entities.addAll(salesFactColumns);
AtlasEntity salesFact = table("sales_fact", "sales fact table", salesDB, sd, "Joe", "Managed", salesFactColumns, FACT_CLASSIFICATION);
@@ -176,7 +180,10 @@ public abstract class BasicTestSetup extends AtlasTestBase {
.of(column("time_id", "int", "time id"),
column("app_id", "int", "app id"),
column("machine_id", "int", "machine id"),
- column("log", "string", "log data", LOGDATA_CLASSIFICATION));
+ column("log", "string", "log data", LOGDATA_CLASSIFICATION),
+ column("test", "int", "test 2"),
+ column("test_limit", "int", "test limit 2")
+ );
entities.addAll(logFactColumns);
List<AtlasEntity> timeDimColumns = ImmutableList
diff --git a/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java b/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java
index 8c257d8..fbc7396 100644
--- a/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java
+++ b/repository/src/test/java/org/apache/atlas/discovery/AtlasDiscoveryServiceTest.java
@@ -906,9 +906,9 @@ public class AtlasDiscoveryServiceTest extends BasicTestSetup {
List<AtlasEntityHeader> list = relResult.getEntities();
Assert.assertTrue(CollectionUtils.isNotEmpty(list));
- Assert.assertTrue(list.size() == 4);
+ Assert.assertTrue(list.size() == 6);
Assert.assertTrue(list.get(0).getDisplayText().equalsIgnoreCase("customer_id"));
- Assert.assertTrue(list.get(3).getDisplayText().equalsIgnoreCase("time_id"));
+ Assert.assertTrue(list.get(5).getDisplayText().equalsIgnoreCase("time_id"));
}
@@ -924,8 +924,8 @@ public class AtlasDiscoveryServiceTest extends BasicTestSetup {
List<AtlasEntityHeader> list = relResult.getEntities();
Assert.assertTrue(CollectionUtils.isNotEmpty(list));
- Assert.assertTrue(list.size() == 4);
- Assert.assertTrue(list.get(3).getDisplayText().equalsIgnoreCase("customer_id"));
+ Assert.assertTrue(list.size() == 6);
+ Assert.assertTrue(list.get(5).getDisplayText().equalsIgnoreCase("customer_id"));
Assert.assertTrue(list.get(0).getDisplayText().equalsIgnoreCase("time_id"));
}
diff --git a/repository/src/test/java/org/apache/atlas/query/BaseDSLComposer.java b/repository/src/test/java/org/apache/atlas/query/BaseDSLComposer.java
index 419050e..24b3a2a 100644
--- a/repository/src/test/java/org/apache/atlas/query/BaseDSLComposer.java
+++ b/repository/src/test/java/org/apache/atlas/query/BaseDSLComposer.java
@@ -168,6 +168,7 @@ public class BaseDSLComposer {
(context.getActiveTypeName().equals("hive_db") && attributeName.equals("createTime")) ||
(context.getActiveTypeName().equals("hive_db") && attributeName.equals("description")) ||
(context.getActiveTypeName().equals("hive_db") && attributeName.equals("userDescription")) ||
+ (context.getActiveTypeName().equals("hive_column") && attributeName.equals("name")) ||
(context.getActiveTypeName().equals("DB") && attributeName.equals("name")) ||
(context.getActiveTypeName().equals("DB") && attributeName.equals("owner")) ||
(context.getActiveTypeName().equals("DB") && attributeName.equals("clusterName")) ||
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 74cc4e0..1d3e245 100644
--- a/repository/src/test/java/org/apache/atlas/query/DSLQueriesTest.java
+++ b/repository/src/test/java/org/apache/atlas/query/DSLQueriesTest.java
@@ -55,6 +55,7 @@ public class DSLQueriesTest extends BasicTestSetup {
private static final Logger LOG = LoggerFactory.getLogger(DSLQueriesTest.class);
private final int DEFAULT_LIMIT = 25;
+ private final int DEFAULT_OFFSET = 0;
@Inject
private EntityDiscoveryService discoveryService;
@@ -272,7 +273,7 @@ public class DSLQueriesTest extends BasicTestSetup {
@DataProvider(name = "basicProvider")
private Object[][] basicQueries() {
return new Object[][]{
- {"hive_column where table.name = \"sales_fact_daily_mv\"", 4},
+ {"hive_column where table.name = \"sales_fact_daily_mv\"", 6},
{"hive_table where columns.name = \"app_id\"", 2},
{"from hive_db", 3},
{"hive_db", 3},
@@ -286,10 +287,10 @@ public class DSLQueriesTest extends BasicTestSetup {
{"hive_table isa Dimension", 5},
{"hive_column where hive_column isa PII", 4},
{"hive_column where hive_column isa PII select hive_column.qualifiedName", 4},
- {"hive_column select hive_column.qualifiedName", 17},
- {"hive_column select hive_column.qualifiedName, hive_column.description", 17},
- {"hive_column select qualifiedName", 17},
- {"hive_column select qualifiedName, description", 17},
+ {"hive_column select hive_column.qualifiedName", 21},
+ {"hive_column select hive_column.qualifiedName, hive_column.description", 21},
+ {"hive_column select qualifiedName", 21},
+ {"hive_column select qualifiedName, description", 21},
{"hive_column where hive_column.name=\"customer_id\"", 2},
{"hive_column where hive_column.name=\"customer_id\" select qualifiedName, description", 2},
{"from hive_table select hive_table.qualifiedName", 10},
@@ -352,12 +353,16 @@ public class DSLQueriesTest extends BasicTestSetup {
@DataProvider(name = "limitProvider")
private Object[][] limitQueries() {
return new Object[][]{
- {"hive_column", 17, 40, 0},
+ {"hive_column", 21, 40, 0},
{"hive_column limit 10", 10, 50, 0},
{"hive_column select hive_column.qualifiedName limit 10", 10, 5, 0},
- {"hive_column select hive_column.qualifiedName limit 40 offset 10", 7, 40, 0},
+ {"hive_column select hive_column.qualifiedName limit 40 offset 10", 11, 40, 0},
{"hive_db where name = 'Reporting' limit 10 offset 0", 1, 40, 0},
{"hive_table where db.name = 'Reporting' limit 10", 4, 1, 0},
+ {"hive_column where name = 'test' ", 2, DEFAULT_LIMIT, DEFAULT_OFFSET},
+ {"hive_column where name = 'test_limit' ", 2, DEFAULT_LIMIT, DEFAULT_OFFSET},
+ {"hive_column where name = 'test_limit' limit 1 ", 1, DEFAULT_LIMIT, DEFAULT_OFFSET},
+ {"hive_column where name = 'test_limit' limit 1 offset 1", 1, DEFAULT_LIMIT, DEFAULT_OFFSET},
};
}
@@ -411,11 +416,11 @@ public class DSLQueriesTest extends BasicTestSetup {
{"hive_column where hive_column isa PII limit 5 offset 1", 3},
{"hive_column where hive_column isa PII limit 5 offset 5", 0},
- {"hive_column select hive_column.qualifiedName", 17},
+ {"hive_column select hive_column.qualifiedName", 21},
{"hive_column select hive_column.qualifiedName limit 5", 5},
{"hive_column select hive_column.qualifiedName limit 5 offset 36", 0},
- {"hive_column select qualifiedName", 17},
+ {"hive_column select qualifiedName", 21},
{"hive_column select qualifiedName limit 5", 5},
{"hive_column select qualifiedName limit 5 offset 36 ", 0},
@@ -470,17 +475,17 @@ public class DSLQueriesTest extends BasicTestSetup {
private Object[][] orderByQueries() {
return new Object[][]{
{"from hive_db as h orderby h.owner limit 3", 3, "owner", true},
- {"hive_column as c select c.qualifiedName orderby hive_column.qualifiedName ", 17, "qualifiedName", true},
+ {"hive_column as c select c.qualifiedName orderby hive_column.qualifiedName ", 21, "qualifiedName", true},
{"hive_column as c select c.qualifiedName orderby hive_column.qualifiedName limit 5", 5, "qualifiedName", true},
{"hive_column as c select c.qualifiedName orderby hive_column.qualifiedName desc limit 5", 5, "qualifiedName", false},
{"from hive_db orderby hive_db.owner limit 3", 3, "owner", true},
- {"hive_column select hive_column.qualifiedName orderby hive_column.qualifiedName ", 17, "qualifiedName", true},
+ {"hive_column select hive_column.qualifiedName orderby hive_column.qualifiedName ", 21, "qualifiedName", true},
{"hive_column select hive_column.qualifiedName orderby hive_column.qualifiedName limit 5", 5, "qualifiedName", true},
{"hive_column select hive_column.qualifiedName orderby hive_column.qualifiedName desc limit 5", 5, "qualifiedName", false},
{"from hive_db orderby owner limit 3", 3, "owner", true},
- {"hive_column select hive_column.qualifiedName orderby qualifiedName ", 17, "qualifiedName", true},
+ {"hive_column select hive_column.qualifiedName orderby qualifiedName ", 21, "qualifiedName", true},
{"hive_column select hive_column.qualifiedName orderby qualifiedName limit 5", 5, "qualifiedName", true},
{"hive_column select hive_column.qualifiedName orderby qualifiedName desc limit 5", 5, "qualifiedName", false},
@@ -500,14 +505,14 @@ public class DSLQueriesTest extends BasicTestSetup {
{"hive_table orderby hive_table.owner limit 8 offset 0", 8, "owner", true},
{"hive_table orderby hive_table.owner desc limit 8 offset 0", 8, "owner", false},
- {"hive_column select hive_column.qualifiedName orderby hive_column.qualifiedName ", 17, "qualifiedName", true},
+ {"hive_column select hive_column.qualifiedName orderby hive_column.qualifiedName ", 21, "qualifiedName", true},
{"hive_column select hive_column.qualifiedName orderby hive_column.qualifiedName limit 5", 5, "qualifiedName", true},
{"hive_column select hive_column.qualifiedName orderby hive_column.qualifiedName desc limit 5", 5, "qualifiedName", false},
{"hive_column select hive_column.qualifiedName orderby hive_column.qualifiedName limit 5 offset 2", 5, "qualifiedName", true},
- {"hive_column select qualifiedName orderby hive_column.qualifiedName", 17, "qualifiedName", true},
+ {"hive_column select qualifiedName orderby hive_column.qualifiedName", 21, "qualifiedName", true},
{"hive_column select qualifiedName orderby hive_column.qualifiedName limit 5", 5, "qualifiedName", true},
- {"hive_column select qualifiedName orderby hive_column.qualifiedName desc", 17, "qualifiedName", false},
+ {"hive_column select qualifiedName orderby hive_column.qualifiedName desc", 21, "qualifiedName", false},
{"hive_column where hive_column.name=\"customer_id\" orderby hive_column.name", 2, "name", true},
{"hive_column where hive_column.name=\"customer_id\" orderby hive_column.name limit 2", 2, "name", true},
@@ -699,7 +704,7 @@ public class DSLQueriesTest extends BasicTestSetup {
new TableValidator("__typeName", "count()")
.row("Asset", 1)
.row("hive_table", 10)
- .row("hive_column", 17)
+ .row("hive_column", 21)
.row("hive_db", 3)
.row("hive_process", 7)
}
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 6064577..359ac70 100644
--- a/repository/src/test/java/org/apache/atlas/query/TraversalComposerTest.java
+++ b/repository/src/test/java/org/apache/atlas/query/TraversalComposerTest.java
@@ -54,6 +54,22 @@ public class TraversalComposerTest extends BaseDSLComposer {
verify("Table groupby(owner) select name, owner, clusterName orderby name",
"[JanusGraphStep([],[__typeName.eq(Table), Table.owner.neq]), GroupStep(value([CoalesceStep([value(Table.owner), (null)])]),[FoldStep]), DedupGlobalStep(null,null), RangeGlobalStep(0,25)]");
+
+ verify("hive_column where name = 'test'",
+ "[JanusGraphStep([],[__typeName.eq(hive_column), hive_column.name.eq(test)]), DedupGlobalStep(null,null), RangeGlobalStep(0,25)]");
+
+ verify("hive_column where name = 'test' limit 35 offset 6",
+ "[JanusGraphStep([],[__typeName.eq(hive_column), hive_column.name.eq(test)]), DedupGlobalStep(null,null), DedupGlobalStep(null,null), RangeGlobalStep(6,41)]");
+
+ verify("hive_column where name = 'test_limit'",
+ "[JanusGraphStep([],[__typeName.eq(hive_column), hive_column.name.eq(test_limit)]), DedupGlobalStep(null,null), RangeGlobalStep(0,25)]");
+
+ verify("hive_column where name = 'test_limit' limit 2",
+ "[JanusGraphStep([],[__typeName.eq(hive_column), hive_column.name.eq(test_limit)]), DedupGlobalStep(null,null), RangeGlobalStep(0,2)]");
+
+ 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)]");
+
}
private void verify(String dsl, String expected) {