postgresql/src/backend/parser
Tom Lane a222f7fda6 Remove broken code that tried to handle OVERLAPS with a single argument.
The SQL standard says that OVERLAPS should have a two-element row
constructor on each side.  The original coding of OVERLAPS support in
our grammar attempted to extend that by allowing a single-element row
constructor, which it internally duplicated ... or tried to, anyway.
But that code has certainly not worked since our List infrastructure was
rewritten in 2004, and I'm none too sure it worked before that.  As it
stands, it ends up building a List that includes itself, leading to
assorted undesirable behaviors later in the parser.

Even if it worked as intended, it'd be a bit evil because of the
possibility of duplicate evaluation of a volatile function that the user
had written only once.  Given the lack of documentation, test cases, or
complaints, let's just get rid of the idea and only support the standard
syntax.

While we're at it, improve the error cursor positioning for the
wrong-number-of-arguments errors, and inline the makeOverlaps() function
since it's only called in one place anyway.

Per bug #9227 from Joshua Yanovski.  Initial patch by Joshua Yanovski,
extended a bit by me.
2014-02-18 12:44:20 -05:00
..
.gitignore
analyze.c Disallow LATERAL references to the target table of an UPDATE/DELETE. 2014-01-11 19:03:12 -05:00
check_keywords.pl Update copyright for 2014 2014-01-07 16:05:30 -05:00
gram.y Remove broken code that tried to handle OVERLAPS with a single argument. 2014-02-18 12:44:20 -05:00
keywords.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
kwlookup.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
Makefile Refactor flex and bison make rules 2012-10-11 06:57:04 -04:00
parse_agg.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
parse_clause.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
parse_coerce.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
parse_collate.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
parse_cte.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
parse_expr.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
parse_func.c Make DROP IF EXISTS more consistently not fail 2014-01-23 14:40:29 -03:00
parse_node.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
parse_oper.c Make DROP IF EXISTS more consistently not fail 2014-01-23 14:40:29 -03:00
parse_param.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
parse_relation.c Disallow LATERAL references to the target table of an UPDATE/DELETE. 2014-01-11 19:03:12 -05:00
parse_target.c Update copyright for 2014 2014-01-07 16:05:30 -05:00
parse_type.c Make DROP IF EXISTS more consistently not fail 2014-01-23 14:40:29 -03:00
parse_utilcmd.c Avoid repeated name lookups during table and index DDL. 2014-02-17 09:33:31 -05:00
parser.c Update copyright for 2014 2014-01-07 16:05:30 -05: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 Update copyright for 2014 2014-01-07 16:05:30 -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
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)