mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-10 19:03:23 +02:00
f213131f20
the SQL spec, viz IS NULL is true if all the row's fields are null, IS NOT NULL is true if all the row's fields are not null. The former coding got this right for a limited number of cases with IS NULL (ie, those where it could disassemble a ROW constructor at parse time), but was entirely wrong for IS NOT NULL. Per report from Teodor. I desisted from changing the behavior for arrays, since on closer inspection it's not clear that there's any support for that in the SQL spec. This probably needs more consideration. |
||
---|---|---|
.. | ||
.cvsignore | ||
analyze.c | ||
gram.y | ||
keywords.c | ||
Makefile | ||
parse_agg.c | ||
parse_clause.c | ||
parse_coerce.c | ||
parse_expr.c | ||
parse_func.c | ||
parse_node.c | ||
parse_oper.c | ||
parse_relation.c | ||
parse_target.c | ||
parse_type.c | ||
parser.c | ||
README | ||
scan.l | ||
scansup.c |
This directory does more than tokenize and parse SQL queries. It also creates Query structures for the various complex queries that is passed to the optimizer and then executor. parser.c things start here scan.l break query into tokens scansup.c handle escapes in input keywords.c turn keywords into specific tokens gram.y parse the tokens and fill query-type-specific structures analyze.c handle post-parse processing for each query type parse_clause.c handle clauses like WHERE, ORDER BY, GROUP BY, ... parse_coerce.c used for coercing expressions of different types parse_expr.c handle expressions like col, col + 3, x = 3 or x = 4 parse_oper.c handle operations in expressions parse_agg.c handle aggregates, like SUM(col1), AVG(col2), ... parse_func.c handle functions, table.column and column identifiers parse_node.c create nodes for various structures parse_target.c handle the result list of the query parse_relation.c support routines for tables and column handling parse_type.c support routines for type handling