You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by dl...@apache.org on 2018/01/16 21:02:56 UTC

asterixdb git commit: [ASTERIXDB-2245][SQLPP] Implement IS VALUED comparison

Repository: asterixdb
Updated Branches:
  refs/heads/master d4914fbd8 -> 7d594a386


[ASTERIXDB-2245][SQLPP] Implement IS VALUED comparison

- user model changes: yes
- storage format changes: no
- interface changes: no

Details:
- Implement IS VALUED comparison operation
  IS VALUED = IS NOT UNKNOWN
  IS NOT VALUED = IS UNKNOWN

Change-Id: I4f05cad1a49b91baacc4d42512927cdadf851758
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2281
Sonar-Qube: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mh...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/7d594a38
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/7d594a38
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/7d594a38

Branch: refs/heads/master
Commit: 7d594a38667a8bc6753360160f5b473a6da70815
Parents: d4914fb
Author: Dmitry Lychagin <dm...@couchbase.com>
Authored: Mon Jan 15 14:31:03 2018 -0800
Committer: Dmitry Lychagin <dm...@couchbase.com>
Committed: Tue Jan 16 13:02:32 2018 -0800

----------------------------------------------------------------------
 .../runtimets/queries_sqlpp/null-missing/is/is.1.query.sqlpp | 8 +++++++-
 .../resources/runtimets/results/null-missing/is/is.1.adm     | 2 +-
 asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md      | 6 +++++-
 asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj        | 4 +++-
 4 files changed, 16 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/7d594a38/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/null-missing/is/is.1.query.sqlpp
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/null-missing/is/is.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/null-missing/is/is.1.query.sqlpp
index 4c4a2fc..81f2a3f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/null-missing/is/is.1.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/null-missing/is/is.1.query.sqlpp
@@ -35,5 +35,11 @@
   "15": 1 is unknown,
   "16": null is not unknown,
   "17": missing is not unknown,
-  "18": 1 is not unknown
+  "18": 1 is not unknown,
+  "19": null is valued,
+  "20": missing is valued,
+  "21": 1 is valued,
+  "22": null is not valued,
+  "23": missing is not valued,
+  "24": 1 is not valued
 };

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/7d594a38/asterixdb/asterix-app/src/test/resources/runtimets/results/null-missing/is/is.1.adm
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/null-missing/is/is.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/null-missing/is/is.1.adm
index 38de473..920f7b4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/null-missing/is/is.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/null-missing/is/is.1.adm
@@ -1 +1 @@
-{ "1": true, "3": false, "4": false, "6": true, "7": false, "8": true, "9": false, "10": true, "11": false, "12": true, "13": true, "14": true, "15": false, "16": false, "17": false, "18": true }
+{ "1": true, "3": false, "4": false, "6": true, "7": false, "8": true, "9": false, "10": true, "11": false, "12": true, "13": true, "14": true, "15": false, "16": false, "17": false, "18": true, "19": false, "20": false, "21": true, "22": true, "23": true, "24": false }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/7d594a38/asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md b/asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md
index 281eb18..93e2f5d 100644
--- a/asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md
+++ b/asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md
@@ -53,7 +53,7 @@ The following table summarizes the precedence order (from higher to lower) of th
 | *, /, %                                                                     |  Multiplication, division, modulo |
 | +, -                                                                        |  Addition, subtraction  |
 | &#124;&#124;                                                                          |  String concatenation |
-| IS NULL, IS NOT NULL, IS MISSING, IS NOT MISSING, <br/>IS UNKNOWN, IS NOT UNKNOWN| Unknown value comparison |
+| IS NULL, IS NOT NULL, IS MISSING, IS NOT MISSING, <br/>IS UNKNOWN, IS NOT UNKNOWN, IS VALUED, IS NOT VALUED | Unknown value comparison |
 | BETWEEN, NOT BETWEEN                                                        | Range comparison (inclusive on both sides) |
 | =, !=, <>, <, >, <=, >=, LIKE, NOT LIKE, IN, NOT IN                             | Comparison  |
 | NOT                                                                         | Logical negation |
@@ -111,6 +111,8 @@ The following table enumerates all of SQL++'s comparison operators.
 | IS NOT MISSING |  Test if a value is not MISSING                | SELECT * FROM ChirpMessages cm <br/>WHERE cm.user.name IS NOT MISSING;|
 | IS UNKNOWN     |  Test if a value is NULL or MISSING            | SELECT * FROM ChirpMessages cm <br/>WHERE cm.user.name IS UNKNOWN; |
 | IS NOT UNKNOWN |  Test if a value is neither NULL nor MISSING   | SELECT * FROM ChirpMessages cm <br/>WHERE cm.user.name IS NOT UNKNOWN;|
+| IS VALUED      |  Test if a value is neither NULL nor MISSING   | SELECT * FROM ChirpMessages cm <br/>WHERE cm.user.name IS VALUED; |
+| IS NOT VALUED  |  Test if a value is NULL or MISSING            | SELECT * FROM ChirpMessages cm <br/>WHERE cm.user.name IS NOT VALUED;|
 | BETWEEN        |  Test if a value is between a start value and <br/>a end value. The comparison is inclusive <br/>to both start and end values. |  SELECT * FROM ChirpMessages cm <br/>WHERE cm.chirpId BETWEEN 10 AND 20;|
 | =              |  Equality test                                 | SELECT * FROM ChirpMessages cm <br/>WHERE cm.chirpId=10; |
 | !=             |  Inequality test                               | SELECT * FROM ChirpMessages cm <br/>WHERE cm.chirpId!=10;|
@@ -132,6 +134,8 @@ The following table summarizes how the missing value comparison operators work.
 | IS NOT MISSING | TRUE | TRUE | FALSE |
 | IS UNKNOWN | FALSE | TRUE | TRUE |
 | IS NOT UNKNOWN | TRUE | FALSE | FALSE|
+| IS VALUED | TRUE | FALSE | FALSE |
+| IS NOT VALUED | FALSE | TRUE | TRUE |
 
 ### <a id="Logical_operators">Logical Operators</a>
 Logical operators perform logical `NOT`, `AND`, and `OR` operations over Boolean values (`TRUE` and `FALSE`) plus `NULL` and `MISSING`.

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/7d594a38/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
index 56de389..a11aaf4 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
+++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
@@ -2012,7 +2012,8 @@ Expression IsExpr() throws ParseException:
         (
             <NULL> { fn = BuiltinFunctions.IS_NULL; } |
             <MISSING> { fn = BuiltinFunctions.IS_MISSING; } |
-            <UNKNOWN> { fn = BuiltinFunctions.IS_UNKNOWN; }
+            <UNKNOWN> { fn = BuiltinFunctions.IS_UNKNOWN; } |
+            <VALUED> { not = !not; fn = BuiltinFunctions.IS_UNKNOWN; }
         )
       {
         FunctionSignature signature = new FunctionSignature(fn);
@@ -3293,6 +3294,7 @@ TOKEN [IGNORE_CASE]:
   | <USE : "use">
   | <USING : "using">
   | <VALUE : "value">
+  | <VALUED : "valued">
   | <WHEN : "when">
   | <WHERE : "where">
   | <WITH : "with">