You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ha...@apache.org on 2016/04/14 08:32:36 UTC

incubator-eagle git commit: EAGLE-257 Support != operator in jdbc storage

Repository: incubator-eagle
Updated Branches:
  refs/heads/master 72b79c558 -> 01f48fe80


EAGLE-257 Support != operator in jdbc storage

Fixed bug/exception reported at https://issues.apache.org/jira/browse/EAGLE-257.

Author: Hao Chen <ha...@apache.org>

Closes #152 from haoch/EAGLE-257.


Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/01f48fe8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/01f48fe8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/01f48fe8

Branch: refs/heads/master
Commit: 01f48fe8034a9eaf935e1576d442f3c348b66d84
Parents: 72b79c5
Author: Hao Chen <ha...@apache.org>
Authored: Thu Apr 14 14:32:25 2016 +0800
Committer: Hao Chen <ha...@apache.org>
Committed: Thu Apr 14 14:32:25 2016 +0800

----------------------------------------------------------------------
 .../jdbc/criteria/impl/ExpressionCriterionBuilder.java |  8 ++++++--
 .../org/apache/eagle/storage/jdbc/TestJdbcStorage.java | 13 +++++++++++++
 2 files changed, 19 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/01f48fe8/eagle-core/eagle-query/eagle-storage-jdbc/src/main/java/org/apache/eagle/storage/jdbc/criteria/impl/ExpressionCriterionBuilder.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-jdbc/src/main/java/org/apache/eagle/storage/jdbc/criteria/impl/ExpressionCriterionBuilder.java b/eagle-core/eagle-query/eagle-storage-jdbc/src/main/java/org/apache/eagle/storage/jdbc/criteria/impl/ExpressionCriterionBuilder.java
index b3eb462..b0f7ed7 100644
--- a/eagle-core/eagle-query/eagle-storage-jdbc/src/main/java/org/apache/eagle/storage/jdbc/criteria/impl/ExpressionCriterionBuilder.java
+++ b/eagle-core/eagle-query/eagle-storage-jdbc/src/main/java/org/apache/eagle/storage/jdbc/criteria/impl/ExpressionCriterionBuilder.java
@@ -109,9 +109,12 @@ public class ExpressionCriterionBuilder implements CriterionBuilder {
             return EntityQualifierUtils.parseList(value);
         } else if (tokenType.equals(TokenType.NUMBER)) {
             // TODO: currently only treat all number value as double
-            if(columnType.equals(Long.class)) {
+            // NOTE: Must use Number Object instead of primitive type
+            if(columnType.equals(Long.class) || columnType.equals(long.class)) {
                 return Long.parseLong(value);
-            } else {
+            } else if(columnType.equals(int.class) || columnType.equals(Integer.class)){
+                return Integer.parseInt(value);
+            }else {
                 return Double.parseDouble(value);
             }
         } else if (op.equals(ComparisonOperator.LIKE) && value.equals(".*")){
@@ -145,6 +148,7 @@ public class ExpressionCriterionBuilder implements CriterionBuilder {
     static{
         _opSqlEnum.put(ComparisonOperator.CONTAINS, SqlEnum.LIKE);
         _opSqlEnum.put(ComparisonOperator.EQUAL, SqlEnum.EQUAL);
+        _opSqlEnum.put(ComparisonOperator.NOT_EQUAL, SqlEnum.NOT_EQUAL);
         _opSqlEnum.put(ComparisonOperator.GREATER, SqlEnum.GREATER_THAN);
         _opSqlEnum.put(ComparisonOperator.GREATER_OR_EQUAL, SqlEnum.GREATER_EQUAL);
         _opSqlEnum.put(ComparisonOperator.IN, SqlEnum.IN);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/01f48fe8/eagle-core/eagle-query/eagle-storage-jdbc/src/test/java/org/apache/eagle/storage/jdbc/TestJdbcStorage.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-storage-jdbc/src/test/java/org/apache/eagle/storage/jdbc/TestJdbcStorage.java b/eagle-core/eagle-query/eagle-storage-jdbc/src/test/java/org/apache/eagle/storage/jdbc/TestJdbcStorage.java
index cb0f0a7..005a61c 100644
--- a/eagle-core/eagle-query/eagle-storage-jdbc/src/test/java/org/apache/eagle/storage/jdbc/TestJdbcStorage.java
+++ b/eagle-core/eagle-query/eagle-storage-jdbc/src/test/java/org/apache/eagle/storage/jdbc/TestJdbcStorage.java
@@ -55,6 +55,19 @@ public class TestJdbcStorage extends JdbcStorageTestBase {
     }
 
     @Test
+    public void testReadByNotEqualCondition() throws QueryCompileException, IOException {
+        RawQuery rawQuery = new RawQuery();
+        rawQuery.setQuery("TestTimeSeriesAPIEntity[@cluster!=\"c4ut_not_found\" AND @field1 != 0]{*}");
+        System.out.println(DateTimeUtil.millisecondsToHumanDateWithSeconds(baseTimestamp));
+        rawQuery.setStartTime(DateTimeUtil.millisecondsToHumanDateWithSeconds(baseTimestamp));
+        rawQuery.setEndTime(DateTimeUtil.millisecondsToHumanDateWithMilliseconds(baseTimestamp+2000));
+        rawQuery.setPageSize(1000);
+        CompiledQuery query = new CompiledQuery(rawQuery);
+        QueryResult<TestTimeSeriesAPIEntity> result = storage.query(query, entityDefinition);
+        Assert.assertNotNull(result);
+    }
+
+    @Test
     public void testReadByComplexQuery() throws QueryCompileException, IOException {
         RawQuery rawQuery = new RawQuery();
         rawQuery.setQuery("TestTimeSeriesAPIEntity[@cluster=\"c4ut\" AND @field4 > 1000 OR @datacenter =\"d4ut\" ]{@field1,@field2}");