mirror of
https://github.com/postgres/postgres.git
synced 2025-05-28 05:21:27 +03:00
Now that we have src/common/ for code shared between frontend and backend, we can get rid of (most of) the klugy ways that the keyword table and keyword lookup code were formerly shared between different uses. This is a first step towards a more general plan of getting rid of special-purpose kluges for sharing code in src/bin/. I chose to merge kwlookup.c back into keywords.c, as it once was, and always has been so far as keywords.h is concerned. We could have kept them separate, but there is noplace that uses ScanKeywordLookup without also wanting access to the backend's keyword list, so there seems little point. ecpg is still a bit weird, but at least now the trickiness is documented. I think that the MSVC build script should require no adjustments beyond what's done here ... but we'll soon find out.
33 lines
1.5 KiB
Plaintext
33 lines
1.5 KiB
Plaintext
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.
|