mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Implement IS NOT DISTINCT FROM, update the regression tests and docs.
Patch from Pavel Stehule, minor fixups by myself.
This commit is contained in:
@ -11,7 +11,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.516 2005/11/28 04:35:31 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.517 2005/12/11 10:54:27 neilc Exp $
|
||||
*
|
||||
* HISTORY
|
||||
* AUTHOR DATE MAJOR EVENT
|
||||
@ -6715,6 +6715,13 @@ a_expr: c_expr { $$ = $1; }
|
||||
{
|
||||
$$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5);
|
||||
}
|
||||
| a_expr IS NOT DISTINCT FROM a_expr %prec IS
|
||||
{
|
||||
$$ = (Node *) makeA_Expr(AEXPR_NOT, NIL, NULL,
|
||||
(Node *) makeSimpleA_Expr(AEXPR_DISTINCT,
|
||||
"=", $1, $6));
|
||||
|
||||
}
|
||||
| a_expr IS OF '(' type_list ')' %prec IS
|
||||
{
|
||||
$$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5);
|
||||
@ -6880,6 +6887,11 @@ b_expr: c_expr
|
||||
{
|
||||
$$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5);
|
||||
}
|
||||
| b_expr IS NOT DISTINCT FROM b_expr %prec IS
|
||||
{
|
||||
$$ = (Node *) makeA_Expr(AEXPR_NOT, NIL,
|
||||
NULL, (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $6));
|
||||
}
|
||||
| b_expr IS OF '(' type_list ')' %prec IS
|
||||
{
|
||||
$$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5);
|
||||
|
@ -195,3 +195,28 @@ SELECT null IS DISTINCT FROM null as "no";
|
||||
f
|
||||
(1 row)
|
||||
|
||||
-- ANSI SQL 2003 form
|
||||
SELECT 1 IS NOT DISTINCT FROM 2 as "no";
|
||||
no
|
||||
----
|
||||
f
|
||||
(1 row)
|
||||
|
||||
SELECT 2 IS NOT DISTINCT FROM 2 as "yes";
|
||||
yes
|
||||
-----
|
||||
t
|
||||
(1 row)
|
||||
|
||||
SELECT 2 IS NOT DISTINCT FROM null as "no";
|
||||
no
|
||||
----
|
||||
f
|
||||
(1 row)
|
||||
|
||||
SELECT null IS NOT DISTINCT FROM null as "yes";
|
||||
yes
|
||||
-----
|
||||
t
|
||||
(1 row)
|
||||
|
||||
|
@ -56,3 +56,9 @@ SELECT 1 IS DISTINCT FROM 2 as "yes";
|
||||
SELECT 2 IS DISTINCT FROM 2 as "no";
|
||||
SELECT 2 IS DISTINCT FROM null as "yes";
|
||||
SELECT null IS DISTINCT FROM null as "no";
|
||||
|
||||
-- ANSI SQL 2003 form
|
||||
SELECT 1 IS NOT DISTINCT FROM 2 as "no";
|
||||
SELECT 2 IS NOT DISTINCT FROM 2 as "yes";
|
||||
SELECT 2 IS NOT DISTINCT FROM null as "no";
|
||||
SELECT null IS NOT DISTINCT FROM null as "yes";
|
||||
|
Reference in New Issue
Block a user