beliefer opened a new pull request #25074: [SPARK-27924]Support ANSI SQL 
Boolean-Predicate syntax 
URL: https://github.com/apache/spark/pull/25074
 
 
   ## What changes were proposed in this pull request?
   
   The syntax Boolean-Predicate is an ANSI SQL.
   ```
   expression IS [NOT] TRUE
   expression IS [NOT] FALSE
   expression IS [NOT] UNKNOWN
   ```
   For example:
   ```
   spark-sql> select null is true;
   false
   Time taken: 0.159 seconds, Fetched 1 row(s)
   spark-sql> select null is not true;
   true
   Time taken: 0.15 seconds, Fetched 1 row(s)
   spark-sql> select false is true;
   false
   Time taken: 0.105 seconds, Fetched 1 row(s)
   spark-sql> select false is not true;
   true
   Time taken: 0.136 seconds, Fetched 1 row(s)
   spark-sql> select true is true;
   true
   Time taken: 0.109 seconds, Fetched 1 row(s)
   spark-sql> select true is not true;
   false
   Time taken: 0.155 seconds, Fetched 1 row(s)
   spark-sql> select null is false;
   false
   Time taken: 0.09 seconds, Fetched 1 row(s)
   spark-sql> select null is not false;
   true
   Time taken: 0.12 seconds, Fetched 1 row(s)
   spark-sql> select false is false;
   true
   Time taken: 0.113 seconds, Fetched 1 row(s)
   spark-sql> select false is not false;
   false
   Time taken: 0.106 seconds, Fetched 1 row(s)
   spark-sql> select true is false;
   false
   Time taken: 0.097 seconds, Fetched 1 row(s)
   spark-sql> select true is not false;
   true
   Time taken: 0.107 seconds, Fetched 1 row(s)
   spark-sql> select null is unknown;
   true
   Time taken: 0.106 seconds, Fetched 1 row(s)
   spark-sql> select null is not unknown;
   false
   Time taken: 0.113 seconds, Fetched 1 row(s)
   spark-sql> select false is unknown;
   false
   Time taken: 0.109 seconds, Fetched 1 row(s)
   spark-sql> select false is not unknown;
   true
   Time taken: 0.164 seconds, Fetched 1 row(s)
   spark-sql> select true is unknown;
   false
   Time taken: 0.11 seconds, Fetched 1 row(s)
   spark-sql> select true is not unknown;
   true
   Time taken: 0.12 seconds, Fetched 1 row(s)
   ```
   **Note**: A null input is treated as the logical value "unknown".
   
   There are some mainstream database support the syntax.
   **PostgreSQL:** 
   https://www.postgresql.org/docs/9.1/functions-comparison.html
   **Hive:** 
   https://issues.apache.org/jira/browse/HIVE-13583
   **Redshift:** 
   https://docs.aws.amazon.com/redshift/latest/dg/r_Boolean_type.html
   **Vertica:** 
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/LanguageElements/Predicates/Boolean-predicate.htm
   
   ## How was this patch tested?
   
   new UT.
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to