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 <[email protected]> Tested-by: Jenkins <[email protected]> Contrib: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Reviewed-by: Murtadha Hubail <[email protected]> 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 <[email protected]> Authored: Mon Jan 15 14:31:03 2018 -0800 Committer: Dmitry Lychagin <[email protected]> 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 | | || | 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">
