Dmitry Lychagin has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/2281
Change subject: [ASTERIXDB-2245][SQLPP] Implement IS VALUED comparison
......................................................................
[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
---
M
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/null-missing/is/is.1.query.sqlpp
M
asterixdb/asterix-app/src/test/resources/runtimets/results/null-missing/is/is.1.adm
M asterixdb/asterix-doc/src/main/markdown/sqlpp/2_expr.md
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
4 files changed, 16 insertions(+), 4 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/81/2281/1
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
};
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 }
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 @@
| *, /, %
| 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 @@
| 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 @@
| 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`.
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 @@
(
<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 @@
| <USE : "use">
| <USING : "using">
| <VALUE : "value">
+ | <VALUED : "valued">
| <WHEN : "when">
| <WHERE : "where">
| <WITH : "with">
--
To view, visit https://asterix-gerrit.ics.uci.edu/2281
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4f05cad1a49b91baacc4d42512927cdadf851758
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Dmitry Lychagin <[email protected]>