postgresql/src/backend/parser
Tom Lane b9527e9840 First phase of plan-invalidation project: create a plan cache management
module and teach PREPARE and protocol-level prepared statements to use it.
In service of this, rearrange utility-statement processing so that parse
analysis does not assume table schemas can't change before execution for
utility statements (necessary because we don't attempt to re-acquire locks
for utility statements when reusing a stored plan).  This requires some
refactoring of the ProcessUtility API, but it ends up cleaner anyway,
for instance we can get rid of the QueryContext global.

Still to do: fix up SPI and related code to use the plan cache; I'm tempted to
try to make SQL functions use it too.  Also, there are at least some aspects
of system state that we want to ensure remain the same during a replan as in
the original processing; search_path certainly ought to behave that way for
instance, and perhaps there are others.
2007-03-13 00:33:44 +00:00
..
.cvsignore Add .cvsignore file so cvs doesn't complain if you have lex/yacc 1999-03-21 02:43:58 +00:00
Makefile Re-introduce the yylex filter function formerly used to support UNION 2006-05-27 17:38:46 +00:00
README cleanup 1998-08-23 14:43:46 +00:00
analyze.c First phase of plan-invalidation project: create a plan cache management 2007-03-13 00:33:44 +00:00
gram.y First phase of plan-invalidation project: create a plan cache management 2007-03-13 00:33:44 +00:00
keywords.c Various fixes in the logic of XML functions: 2007-01-25 11:53:52 +00:00
parse_agg.c Wording cleanup for error messages. Also change can't -> cannot. 2007-02-01 19:10:30 +00:00
parse_clause.c Wording cleanup for error messages. Also change can't -> cannot. 2007-02-01 19:10:30 +00:00
parse_coerce.c Update CVS HEAD for 2007 copyright. Back branches are typically not 2007-01-05 22:20:05 +00:00
parse_expr.c Turn the rangetable used by the executor into a flat list, and avoid storing 2007-02-22 22:00:26 +00:00
parse_func.c Wording cleanup for error messages. Also change can't -> cannot. 2007-02-01 19:10:30 +00:00
parse_node.c Update CVS HEAD for 2007 copyright. Back branches are typically not 2007-01-05 22:20:05 +00:00
parse_oper.c Wording cleanup for error messages. Also change can't -> cannot. 2007-02-01 19:10:30 +00:00
parse_relation.c Update CVS HEAD for 2007 copyright. Back branches are typically not 2007-01-05 22:20:05 +00:00
parse_target.c Implement XMLSERIALIZE for real. Analogously, make the xml to text cast 2007-02-03 14:06:56 +00:00
parse_type.c Update CVS HEAD for 2007 copyright. Back branches are typically not 2007-01-05 22:20:05 +00:00
parser.c Support ORDER BY ... NULLS FIRST/LAST, and add ASC/DESC/NULLS FIRST/NULLS LAST 2007-01-09 02:14:16 +00:00
scan.l Update CVS HEAD for 2007 copyright. Back branches are typically not 2007-01-05 22:20:05 +00:00
scansup.c Update CVS HEAD for 2007 copyright. Back branches are typically not 2007-01-05 22:20:05 +00:00

README

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