]> granicus.if.org Git - postgresql/commit
Implement the IS DISTINCT FROM operator per SQL99.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Thu, 4 Jul 2002 15:24:11 +0000 (15:24 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Thu, 4 Jul 2002 15:24:11 +0000 (15:24 +0000)
commit68d9fbeb5511d846ce3a6f66b8955d3ca55a4b76
tree2c916fdd1c617a90fdd143e6f68ea9c48d19f296
parentc7eea66c392cd3f5c914ed135d01a2e20ecb1f92
Implement the IS DISTINCT FROM operator per SQL99.
Reused the Expr node to hold DISTINCT which strongly resembles
 the existing OP info. Define DISTINCT_EXPR which strongly resembles
 the existing OPER_EXPR opType, but with handling for NULLs required
 by SQL99.
We have explicit support for single-element DISTINCT comparisons
 all the way through to the executor. But, multi-element DISTINCTs
 are handled by expanding into a comparison tree in gram.y as is done for
 other row comparisons. Per discussions, it might be desirable to move
 this into one or more purpose-built nodes to be handled in the backend.
Define the optional ROW keyword and token per SQL99.
 This allows single-element row constructs, which were formerly disallowed
 due to shift/reduce conflicts with parenthesized a_expr clauses.
Define the SQL99 TREAT() function. Currently, use as a synonym for CAST().
src/backend/executor/execQual.c
src/backend/nodes/outfuncs.c
src/backend/nodes/readfuncs.c
src/backend/optimizer/path/costsize.c
src/backend/optimizer/util/clauses.c
src/backend/parser/gram.y
src/backend/parser/keywords.c
src/backend/parser/parse_expr.c
src/backend/utils/adt/ruleutils.c
src/include/nodes/primnodes.h