From 8986e609ab7597658ee2c23cf2ca1ce6a6ccb75f Mon Sep 17 00:00:00 2001 From: Bruce Momjian <bruce@momjian.us> Date: Sun, 28 Jun 1998 15:00:28 +0000 Subject: [PATCH] Update flowchart and backend descriptions. --- src/tools/backend/index.html | 48 ++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/src/tools/backend/index.html b/src/tools/backend/index.html index e286b6d8c66..dbf78042a46 100644 --- a/src/tools/backend/index.html +++ b/src/tools/backend/index.html @@ -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> -- GitLab