postgresql/src/backend/parser
Tom Lane fc2ac1fb41 Allow CHECK constraints to be placed on foreign tables.
As with NOT NULL constraints, we consider that such constraints are merely
reports of constraints that are being enforced by the remote server (or
other underlying storage mechanism).  Their only real use is to allow
planner optimizations, for example in constraint-exclusion checks.  Thus,
the code changes here amount to little more than removal of the error that
was formerly thrown for applying CHECK to a foreign table.

(In passing, do a bit of cleanup of the ALTER FOREIGN TABLE reference page,
which had accumulated some weird decisions about ordering etc.)

Shigeru Hanada and Etsuro Fujita, reviewed by Kyotaro Horiguchi and
Ashutosh Bapat.
2014-12-17 17:00:53 -05:00
..
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
analyze.c Explicitly support the case that a plancache's raw_parse_tree is NULL. 2014-11-12 15:59:01 -05:00
check_keywords.pl Update copyright for 2014 2014-01-07 16:05:30 -05:00
gram.y Add CINE option for CREATE TABLE AS and CREATE MATERIALIZED VIEW 2014-12-13 13:56:09 -05:00
keywords.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
kwlookup.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
Makefile Refactor flex and bison make rules 2012-10-11 06:57:04 -04:00
parse_agg.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
parse_clause.c Avoid recursion when processing simple lists of AND'ed or OR'ed clauses. 2014-06-16 15:55:30 -04:00
parse_coerce.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
parse_collate.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
parse_cte.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
parse_expr.c Implement UPDATE tab SET (col1,col2,...) = (SELECT ...), ... 2014-06-18 13:22:34 -04:00
parse_func.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
parse_node.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
parse_oper.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
parse_param.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
parse_relation.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
parse_target.c Implement UPDATE tab SET (col1,col2,...) = (SELECT ...), ... 2014-06-18 13:22:34 -04:00
parse_type.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
parse_utilcmd.c Allow CHECK constraints to be placed on foreign tables. 2014-12-17 17:00:53 -05:00
parser.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
README Revise collation derivation method and expression-tree representation. 2011-03-19 20:30:08 -04:00
scan.l Fix length checking for Unicode identifiers containing escapes (U&"..."). 2014-02-13 14:24:42 -05:00
scansup.c pgindent run for 9.4 2014-05-06 12:12:18 -04: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
kwlookup.c	turn keywords into specific tokens
keywords.c	table of standard keywords (passed to kwlookup.c)
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)