]> granicus.if.org Git - postgresql/commitdiff
Update flowchart and backend descriptions.
authorBruce Momjian <bruce@momjian.us>
Sun, 28 Jun 1998 15:00:28 +0000 (15:00 +0000)
committerBruce Momjian <bruce@momjian.us>
Sun, 28 Jun 1998 15:00:28 +0000 (15:00 +0000)
src/tools/backend/index.html

index e286b6d8c6655940add16b0ba5355c872c51771a..dbf78042a4653886038e8cb85004fc92c5aa6135 100644 (file)
@@ -32,35 +32,35 @@ The parser takes the complex queries, and creates a
 <A HREF="../../include/nodes/parsenodes.h">Query</A> structure that
 contains all the elements used by complex queries.  Query.qual holds the
 WHERE clause qualification, which is filled in by
-
 <A HREF="../../backend/parser/parse_clause.c">transformWhereClause().</A>
-Each table is represented by a <A HREF="../../include/nodes/parsenodes.h">
-RangeTableEntry,</A>
-and they are linked together to form the <I>range table</I> for the
-query, and is generated by <A HREF="../../backend/parser/parse_clause.c">
+Each table referenced in the query is represented by a <A
+HREF="../../include/nodes/parsenodes.h"> RangeTableEntry,</A> and they
+are linked together to form the <I>range table</I> of the query, which is
+generated by <A HREF="../../backend/parser/parse_clause.c">
 makeRangeTable().</A>  Query.rtable holds the queries range table.
 <P>
 Certain queries, like SELECT, return columns of data.  Other queries,
 like INSERT and UPDATE, specify the columns modified by the query. 
-These columns references are converted to <A
+These column references are converted to <A
 HREF="../../include/nodes/primnodes.h"> Resdom</A> entries, which are
 linked together to make up the <I>target list</I> of the query. The
-target list is stored in Query.targetList, and is generated by
+target list is stored in Query.targetList, which is generated by
 <A HREF="../../backend/parser/parse_target.c">transformTargetList().</A>
 <P>
 Other query elements, like aggregates(SUM()), GROUP BY, ORDER BY are
-also stored in their own fields.
+also stored in their own Query fields.
 <P>
 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 <A
 HREF="../../backend/rewrite">rewrite</A> system.
 <P>
-The optimizer takes the Query structure, and generates an optimal
-<A HREF="../..//include/nodes/plannodes.h">Plan</A> containing primitive
-operations to be performed by the executor to complete the query.  The
-<A HREF="../../backend/optimizer/path">path</A> module
-determines the table join order and join type of each of the tables in
-the RangeTable, using Query.qual(WHERE clause) to consider optimal index
+The <A HREF="../../backend/optimizer">optimizer</A> takes the Query
+structure, and generates an optimal
+<A HREF="../..//include/nodes/plannodes.h">Plan</A> containing the
+primitive operations to be performed by the executor to execute the
+query.  The <A HREF="../../backend/optimizer/path">path</A> module
+determines the best table join order and join type of each table in the
+RangeTable, using Query.qual(WHERE clause) to consider optimal index
 usage.
 <P>
 The Plan is then passed to the <A
@@ -76,21 +76,27 @@ table data/index blocks, locks, and backend information:
 <LI>ShmemIndex - contains an index of all other shared memory
 structures, allowing quick lookup of other structure locations in shared
 memory
-<LI>Buffer Descriptors - control header for shared memory buffer block
-<LI>Buffer Blocks - block of table/index data shared by all backends
+<LI><A HREF="../../include/storage/buf_internals.h">Buffer
+Descriptors</A> - control header for shared memory buffer block
+
+<LI><A HREF="../../include/storage/buf_internals.h">Buffer Blocks</A>
+- block of table/index data shared by all backends
 <LI>Shared Buf Lookup Table - lookup to see if a requested buffer
 is already in the shared memory area
-<LI>LockTable - lock table structure, specifiying table, lock types, and
+<LI><A HREF="../../include/storage/lock.h">LockTable</A>
+- lock table structure, specifiying table, lock types, and
 backends holding or waiting on lock
 <LI>LockTable (lock hash) - lookup of LockTable structures using
 table name
 <LI>LockTable (xid hash) - lookup of LockTable structures using
 transaction id
-<LI>Proc Header - information about each backend, including locks held/waiting, 
-indexed by process id
+<LI><A HREF="../../include/storage/proc.h">Proc Header</A> - information
+about each backend, including locks held/waiting,  indexed by process id
 </UL>
-Each structure is created by calling <A
-HREF="../../backend/storage/ipc/shmem.c"> ShmemInitStruct().</A>
+Each data structure is created by calling <A
+HREF="../../backend/storage/ipc/shmem.c"> ShmemInitStruct(),</A> and
+the lookup hashes are created by
+<A HREF="../../backend/storage/ipc/shmem.c">ShmemInitHash().</A>
 <HR>
 <CENTER>
 <EM><BIG>