postgresql/src/backend/parser
Tom Lane 2c6af4f442 Move keywords.c/kwlookup.c into src/common/.
Now that we have src/common/ for code shared between frontend and backend,
we can get rid of (most of) the klugy ways that the keyword table and
keyword lookup code were formerly shared between different uses.
This is a first step towards a more general plan of getting rid of
special-purpose kluges for sharing code in src/bin/.

I chose to merge kwlookup.c back into keywords.c, as it once was, and
always has been so far as keywords.h is concerned.  We could have
kept them separate, but there is noplace that uses ScanKeywordLookup
without also wanting access to the backend's keyword list, so there
seems little point.

ecpg is still a bit weird, but at least now the trickiness is documented.

I think that the MSVC build script should require no adjustments beyond
what's done here ... but we'll soon find out.
2016-03-23 20:22:08 -04:00
..
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
Makefile Move keywords.c/kwlookup.c into src/common/. 2016-03-23 20:22:08 -04:00
README Move keywords.c/kwlookup.c into src/common/. 2016-03-23 20:22:08 -04:00
analyze.c Update copyright for 2016 2016-01-02 13:33:40 -05:00
check_keywords.pl Update copyright for 2016 2016-01-02 13:33:40 -05:00
gram.y Build backend/parser/scan.l and interfaces/ecpg/preproc/pgc.l standalone. 2016-03-19 12:07:24 -04:00
parse_agg.c Refactor pull_var_clause's API to make it less tedious to extend. 2016-03-10 15:53:07 -05:00
parse_clause.c Refactor pull_var_clause's API to make it less tedious to extend. 2016-03-10 15:53:07 -05:00
parse_coerce.c Add defenses against putting expanded objects into Const nodes. 2016-01-21 12:56:08 -05:00
parse_collate.c Update copyright for 2016 2016-01-02 13:33:40 -05:00
parse_cte.c Update copyright for 2016 2016-01-02 13:33:40 -05:00
parse_expr.c Update copyright for 2016 2016-01-02 13:33:40 -05:00
parse_func.c Support parallel aggregation. 2016-03-21 09:30:18 -04:00
parse_node.c Update copyright for 2016 2016-01-02 13:33:40 -05:00
parse_oper.c Update copyright for 2016 2016-01-02 13:33:40 -05:00
parse_param.c Update copyright for 2016 2016-01-02 13:33:40 -05:00
parse_relation.c Remove new coupling between NAMEDATALEN and MAX_LEVENSHTEIN_STRLEN. 2016-01-22 11:53:06 -05:00
parse_target.c Fix typos. 2016-03-15 18:06:11 -04:00
parse_type.c Add defenses against putting expanded objects into Const nodes. 2016-01-21 12:56:08 -05:00
parse_utilcmd.c Move pg_constraint.h function declarations to new file pg_constraint_fn.h. 2016-02-11 15:51:28 -05:00
parser.c Update copyright for 2016 2016-01-02 13:33:40 -05:00
scan.l Sync backend/parser/scan.l with bin/psql/psqlscan.l. 2016-03-19 14:36:22 -04:00
scansup.c Introduce parse_ident() 2016-03-18 18:16:14 +03:00

README

src/backend/parser/README

Parser
======

This directory does more than tokenize and parse SQL queries.  It also
creates Query structures for the various complex queries that are passed
to the optimizer and then executor.

parser.c	things start here
scan.l		break query into tokens
scansup.c	handle escapes in input strings
gram.y		parse the tokens and produce a "raw" parse tree
analyze.c	top level of parse analysis for optimizable queries
parse_agg.c	handle aggregates, like SUM(col1),  AVG(col2), ...
parse_clause.c	handle clauses like WHERE, ORDER BY, GROUP BY, ...
parse_coerce.c	handle coercing expressions to different data types
parse_collate.c	assign collation information in completed expressions
parse_cte.c	handle Common Table Expressions (WITH clauses)
parse_expr.c	handle expressions like col, col + 3, x = 3 or x = 4
parse_func.c	handle functions, table.column and column identifiers
parse_node.c	create nodes for various structures
parse_oper.c	handle operators in expressions
parse_param.c	handle Params (for the cases used in the core backend)
parse_relation.c support routines for tables and column handling
parse_target.c	handle the result list of the query
parse_type.c	support routines for data type handling
parse_utilcmd.c	parse analysis for utility commands (done at execution time)

See also src/common/keywords.c, which contains the table of standard
keywords and the keyword lookup function.  We separated that out because
various frontend code wants to use it too.