postgresql/src/backend/parser
Peter Eisentraut a292c98d62 Convert node test compile-time settings into run-time parameters
This converts

    COPY_PARSE_PLAN_TREES
    WRITE_READ_PARSE_PLAN_TREES
    RAW_EXPRESSION_COVERAGE_TEST

into run-time parameters

    debug_copy_parse_plan_trees
    debug_write_read_parse_plan_trees
    debug_raw_expression_coverage_test

They can be activated for tests using PG_TEST_INITDB_EXTRA_OPTS.

The compile-time symbols are kept for build farm compatibility, but
they now just determine the default value of the run-time settings.

Furthermore, support for these settings is not compiled in at all
unless assertions are enabled, or the new symbol
DEBUG_NODE_TESTS_ENABLED is defined at compile time, or any of the
legacy compile-time setting symbols are defined.  So there is no
run-time overhead in production builds.  (This is similar to the
handling of DISCARD_CACHES_ENABLED.)

Discussion: https://www.postgresql.org/message-id/flat/30747bd8-f51e-4e0c-a310-a6e2c37ec8aa%40eisentraut.org
2024-08-01 10:09:18 +02:00
..
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
analyze.c Convert node test compile-time settings into run-time parameters 2024-08-01 10:09:18 +02:00
check_keywords.pl Update copyright for 2024 2024-01-03 20:49:05 -05:00
gram.y SQL/JSON: Prevent ON EMPTY for EXISTS columns in JSON_TABLE() 2024-06-28 14:01:43 +09:00
gramparse.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
Makefile Add basic JSON_TABLE() functionality 2024-04-04 20:20:15 +09:00
meson.build Add basic JSON_TABLE() functionality 2024-04-04 20:20:15 +09:00
parse_agg.c Add RETURNING support to MERGE. 2024-03-17 13:58:59 +00:00
parse_clause.c Fix query pullup issue with WindowClause runCondition 2024-05-05 12:54:46 +12:00
parse_coerce.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
parse_collate.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
parse_cte.c Avoid unhelpful internal error for incorrect recursive-WITH queries. 2024-07-14 13:49:46 -04:00
parse_enr.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
parse_expr.c SQL/JSON: Some fixes to JsonBehavior expression casting 2024-07-30 10:34:17 +09:00
parse_func.c Fix query pullup issue with WindowClause runCondition 2024-05-05 12:54:46 +12:00
parse_jsontable.c SQL/JSON: Validate values in ON ERROR/EMPTY clauses 2024-06-28 14:01:43 +09:00
parse_merge.c Use macro NUM_MERGE_MATCH_KINDS instead of '3' in MERGE code. 2024-04-19 09:40:20 +01:00
parse_node.c Remove unused #include's from backend .c files 2024-03-04 12:02:20 +01:00
parse_oper.c Update copyright for 2024 2024-01-03 20:49:05 -05:00
parse_param.c Limit max parameter number with MaxAllocSize 2024-07-02 09:29:26 +02:00
parse_relation.c Fix type-checking of RECORD-returning functions in FROM, redux. 2024-04-15 12:56:56 -04:00
parse_target.c Add basic JSON_TABLE() functionality 2024-04-04 20:20:15 +09:00
parse_type.c Add a const decoration 2024-01-25 13:34:49 +01:00
parse_utilcmd.c Fix handling of extended expression statistics in CREATE TABLE LIKE. 2024-05-22 17:54:17 -04:00
parser.c Make the order of the header file includes consistent 2024-03-13 15:07:00 +01:00
README Remove outdated reference to a removed file 2023-06-15 22:35:42 +09:00
scan.l Fix overflow in parsing of positional parameter 2024-07-02 09:29:26 +02:00
scansup.c Update copyright for 2024 2024-01-03 20:49:05 -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
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_enr.c	handle ephemeral named rels (trigger transition tables, ...)
parse_func.c	handle functions, table.column and column identifiers
parse_merge.c	handle MERGE
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.