postgresql/src/backend/parser
Tom Lane 9e7e29e6c9 First cut at doing LIKE/regex indexing optimization in
optimizer rather than parser.  This has many advantages, such as not
getting fooled by chance uses of operator names ~ and ~~ (the operators
are identified by OID now), and not creating useless comparison operations
in contexts where the comparisons will not actually be used as indexquals.
The new code also recognizes exact-match LIKE and regex patterns, and
produces an = indexqual instead of >= and <=.

This change does NOT fix the problem with non-ASCII locales: the code
still doesn't know how to generate an upper bound indexqual for non-ASCII
collation order.  But it's no worse than before, just the same deficiency
in a different place...

Also, dike out loc_restrictinfo fields in Plan nodes.  These were doing
nothing useful in the absence of 'expensive functions' optimization,
and they took a considerable amount of processing to fill in.
1999-07-27 03:51:11 +00:00
..
.cvsignore Add .cvsignore file so cvs doesn't complain if you have lex/yacc 1999-03-21 02:43:58 +00:00
analyze.c Rewrite parser's handling of INSERT ... SELECT so that processing 1999-07-19 00:26:20 +00:00
gram.y First cut at doing LIKE/regex indexing optimization in 1999-07-27 03:51:11 +00:00
keywords.c Move some system includes into c.h, and remove duplicates. 1999-07-17 20:18:55 +00:00
Makefile here are some patches for 6.5.0 which I already submitted but have never 1999-05-03 19:10:48 +00:00
parse_agg.c Move some system includes into c.h, and remove duplicates. 1999-07-17 20:18:55 +00:00
parse_clause.c Rewrite parser's handling of INSERT ... SELECT so that processing 1999-07-19 00:26:20 +00:00
parse_coerce.c Move some system includes into c.h, and remove duplicates. 1999-07-17 20:18:55 +00:00
parse_expr.c Rewrite parser's handling of INSERT ... SELECT so that processing 1999-07-19 00:26:20 +00:00
parse_func.c Move some system includes into c.h, and remove duplicates. 1999-07-17 20:18:55 +00:00
parse_node.c Rewrite parser's handling of INSERT ... SELECT so that processing 1999-07-19 00:26:20 +00:00
parse_oper.c Move some system includes into c.h, and remove duplicates. 1999-07-17 20:18:55 +00:00
parse_relation.c Rewrite parser's handling of INSERT ... SELECT so that processing 1999-07-19 00:26:20 +00:00
parse_target.c Rewrite parser's handling of INSERT ... SELECT so that processing 1999-07-19 00:26:20 +00:00
parse_type.c Move some system includes into c.h, and remove duplicates. 1999-07-17 20:18:55 +00:00
parser.c Move some system includes into c.h, and remove duplicates. 1999-07-17 20:18:55 +00:00
README cleanup 1998-08-23 14:43:46 +00:00
scan.l Move some system includes into c.h, and remove duplicates. 1999-07-17 20:18:55 +00:00
scansup.c Move some system includes into c.h, and remove duplicates. 1999-07-17 20:18:55 +00:00

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

parser.c	things start here
scan.l		break query into tokens
scansup.c	handle escapes in input
keywords.c	turn keywords into specific tokens
gram.y		parse the tokens and fill query-type-specific structures
analyze.c	handle post-parse processing for each query type
parse_clause.c	handle clauses like WHERE, ORDER BY, GROUP BY, ...
parse_coerce.c	used for coercing expressions of different types
parse_expr.c	handle expressions like col, col + 3, x = 3 or x = 4
parse_oper.c	handle operations in expressions
parse_agg.c	handle aggregates, like SUM(col1),  AVG(col2), ...
parse_func.c	handle functions, table.column and column identifiers
parse_node.c	create nodes for various structures
parse_target.c	handle the result list of the query
parse_relation.c support routines for tables and column handling
parse_type.c	support routines for type handling