diff --git a/src/tools/backend/index.html b/src/tools/backend/index.html index 3f032e081c..b94f39be66 100644 --- a/src/tools/backend/index.html +++ b/src/tools/backend/index.html @@ -1,31 +1,31 @@ -PostgreSQL Backend Flowchart +How PostgreSQL Processes a Query

-PostgreSQL Backend Flowchart +How PostgreSQL Processes a Query

by Bruce Momjian

-A query come into the backend via data packets coming in through TCP/IP -and Unix Domain sockets. It is loaded into a string, and passed to +A query comes to the backend via data packets arriving through TCP/IP +or Unix Domain sockets. It is loaded into a string, and passed to the parser, where the lexical scanner, scan.l, breaks the query up into tokens(words). The parser uses gram.y and the tokens to -identify the query type, and load the proper query-specific -structure, like -CreateStmt or SelectStmt. +identify the query type, and load the proper query-specific structure, +like CreateStmt or SelectStmt.

-The query is then identified as a Utility function or a more -complex query. A Utility query is processed by a -query-specific function in -commands. A complex query, like SELECT, UPDATE, and +The query is then identified as a Utility query or a more complex +query. A Utility query is processed by a query-specific function +in commands. A complex query, like +SELECT, UPDATE, and DELETE requires much more handling.

The parser takes a complex query, and creates a @@ -37,7 +37,7 @@ Each table referenced in the query is represented by a RangeTableEntry, and they are linked together to form the range table of the query, which is generated by -makeRangeTable(). Query.rtable holds the queries range table. +makeRangeTable(). Query.rtable holds the query's range table.

Certain queries, like SELECT, return columns of data. Other queries, like INSERT and UPDATE, specify the columns @@ -48,7 +48,7 @@ target list is stored in Query.targetList, which is generated by transformTargetList().

Other query elements, like aggregates(SUM()), GROUP BY, -ORDER BY are also stored in their own Query fields. +and ORDER BY are also stored in their own Query fields.

The next step is for the Query to be modified by any VIEWS or RULES that may apply to the query. This is performed by the -Another area of interest is the shared memory area, containing table -data/index blocks, locks, backend information, and lookup tables for -these structures: +Another area of interest is the shared memory area, which contains data +accessable to all backends. It has table recently used data/index +blocks, locks, backend information, and lookup tables for these +structures: