postgresql/src/backend/parser
Tom Lane e3860ffa4d Initial pgindent run with pg_bsd_indent version 2.0.
The new indent version includes numerous fixes thanks to Piotr Stefaniak.
The main changes visible in this commit are:

* Nicer formatting of function-pointer declarations.
* No longer unexpectedly removes spaces in expressions using casts,
  sizeof, or offsetof.
* No longer wants to add a space in "struct structname *varname", as
  well as some similar cases for const- or volatile-qualified pointers.
* Declarations using PG_USED_FOR_ASSERTS_ONLY are formatted more nicely.
* Fixes bug where comments following declarations were sometimes placed
  with no space separating them from the code.
* Fixes some odd decisions for comments following case labels.
* Fixes some cases where comments following code were indented to less
  than the expected column 33.

On the less good side, it now tends to put more whitespace around typedef
names that are not listed in typedefs.list.  This might encourage us to
put more effort into typedef name collection; it's not really a bug in
indent itself.

There are more changes coming after this round, having to do with comment
indentation and alignment of lines appearing within parentheses.  I wanted
to limit the size of the diffs to something that could be reviewed without
one's eyes completely glazing over, so it seemed better to split up the
changes as much as practical.

Discussion: https://postgr.es/m/E1dAmxK-0006EE-1r@gemulon.postgresql.org
Discussion: https://postgr.es/m/30527.1495162840@sss.pgh.pa.us
2017-06-21 14:39:04 -04:00
..
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
analyze.c Post-PG 10 beta1 pgindent run 2017-05-17 16:31:56 -04:00
check_keywords.pl Post-PG 10 beta1 pgperltidy run 2017-05-17 19:01:23 -04:00
gram.y Fix ALTER SUBSCRIPTION grammar ambiguity 2017-06-05 21:43:25 -04:00
Makefile Add infrastructure to support EphemeralNamedRelation references. 2017-03-31 23:17:18 -05:00
parse_agg.c Disallow set-returning functions inside CASE or COALESCE. 2017-06-13 23:46:39 -04:00
parse_clause.c Disallow set-returning functions inside CASE or COALESCE. 2017-06-13 23:46:39 -04:00
parse_coerce.c Support XMLTABLE query expression 2017-03-08 12:40:26 -03:00
parse_collate.c Improve castNode notation by introducing list-extraction-specific variants. 2017-04-10 13:51:53 -04:00
parse_cte.c Change unknown-type literals to type text in SELECT and RETURNING lists. 2017-01-25 09:17:24 -05:00
parse_enr.c Add infrastructure to support EphemeralNamedRelation references. 2017-03-31 23:17:18 -05:00
parse_expr.c Initial pgindent run with pg_bsd_indent version 2.0. 2017-06-21 14:39:04 -04:00
parse_func.c Initial pgindent run with pg_bsd_indent version 2.0. 2017-06-21 14:39:04 -04:00
parse_node.c Improve castNode notation by introducing list-extraction-specific variants. 2017-04-10 13:51:53 -04:00
parse_oper.c Disallow set-returning functions inside CASE or COALESCE. 2017-06-13 23:46:39 -04:00
parse_param.c Spelling fixes in code comments 2017-03-14 12:58:39 -04:00
parse_relation.c Post-PG 10 beta1 pgindent run 2017-05-17 16:31:56 -04:00
parse_target.c Add infrastructure to support EphemeralNamedRelation references. 2017-03-31 23:17:18 -05:00
parse_type.c Improve castNode notation by introducing list-extraction-specific variants. 2017-04-10 13:51:53 -04:00
parse_utilcmd.c Handle unqualified SEQUENCE NAME options properly in parse_utilcmd.c. 2017-06-11 19:00:01 -04:00
parser.c Change representation of statement lists, and add statement location info. 2017-01-14 16:02:35 -05:00
README Move keywords.c/kwlookup.c into src/common/. 2016-03-23 20:22:08 -04:00
scan.l Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
scansup.c Update copyright via script for 2017 2017-01-03 13:48:53 -05:00

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.