postgresql/src/backend/parser
Heikki Linnakangas ef71375346 Coerce 'unknown' type parameters to the right type in the fixed-params
parse_analyze() function. That case occurs e.g with PL/pgSQL
EXECUTE ... USING 'stringconstant'.

The coercion with a CoerceViaIO node. The result is similar to the coercion
via input function performed for unknown constants in coerce_type(),
except that this happens at runtime.

Backpatch to 9.0. The issue is present in 8.4 as well, but the coerce param
hook infrastructure this patch relies on was introduced in 9.0. Given the
lack of user reports and harmlessness of the bug, it's not worth attempting
a different fix just for 8.4.
2010-08-18 12:20:15 +00:00
..
.cvsignore Remove all traces that suggest that a non-Bison yacc might be supported, and 2008-08-29 13:02:33 +00:00
Makefile Fix a few places where we needed -I. in CPPFLAGS to work properly in 2010-01-05 03:56:52 +00:00
README Implement parser hooks for processing ColumnRef and ParamRef nodes, as per my 2009-10-31 01:41:31 +00:00
analyze.c pgindent run for 9.0 2010-02-26 02:01:40 +00:00
gram.y Add xmlexists function 2010-08-05 04:21:54 +00:00
keywords.c Update copyright for the year 2010. 2010-01-02 16:58:17 +00:00
kwlookup.c Update copyright for the year 2010. 2010-01-02 16:58:17 +00:00
parse_agg.c Recognize functional dependency on primary keys. This allows a table's 2010-08-07 02:44:09 +00:00
parse_clause.c Allow ORDER BY/GROUP BY/etc items to match targetlist items regardless of 2010-07-18 19:37:49 +00:00
parse_coerce.c Fix IsBinaryCoercible to not confuse a cast using in/out functions 2010-03-04 09:39:53 +00:00
parse_cte.c Update copyright for the year 2010. 2010-01-02 16:58:17 +00:00
parse_expr.c Improved version of patch to protect pg_get_expr() against misuse: 2010-07-29 23:16:33 +00:00
parse_func.c Add a very specific hint for the case that we're unable to locate a function 2010-08-05 21:45:35 +00:00
parse_node.c Wrap calls to SearchSysCache and related functions using macros. 2010-02-14 18:42:19 +00:00
parse_oper.c Improved version of patch to protect pg_get_expr() against misuse: 2010-07-29 23:16:33 +00:00
parse_param.c Coerce 'unknown' type parameters to the right type in the fixed-params 2010-08-18 12:20:15 +00:00
parse_relation.c Fix stupid typo in refnameRangeTblEntry() --- mea maxima culpa. 2010-04-28 00:46:33 +00:00
parse_target.c pgindent run for 9.0 2010-02-26 02:01:40 +00:00
parse_type.c Wrap calls to SearchSysCache and related functions using macros. 2010-02-14 18:42:19 +00:00
parse_utilcmd.c Standardize get_whatever_oid functions for other object types. 2010-08-05 15:25:36 +00:00
parser.c Update copyright for the year 2010. 2010-01-02 16:58:17 +00:00
scan.l Change the default value of standard_conforming_strings to on. 2010-07-20 00:34:44 +00:00
scansup.c pgindent run for 9.0, second run 2010-07-06 19:19:02 +00:00

README

$PostgreSQL: pgsql/src/backend/parser/README,v 1.11 2009/10/31 01:41:31 tgl Exp $

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_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)