diff options
| author | Bruce Momjian | 1997-10-29 23:48:18 +0000 |
|---|---|---|
| committer | Bruce Momjian | 1997-10-29 23:48:18 +0000 |
| commit | 97b1bb228135dee3770ea0dd1db39d85e239030c (patch) | |
| tree | 84b08efaf673c85a3216f591fe0887bbf03cc76b /src/tools/backend | |
| parent | 5071d3124a1420d4c7d6a1efebcdbbe83b33f889 (diff) | |
New backend_dir html source.
Diffstat (limited to 'src/tools/backend')
| -rw-r--r-- | src/tools/backend/README | 3 | ||||
| -rw-r--r-- | src/tools/backend/backend_dirs.html | 420 | ||||
| -rw-r--r-- | src/tools/backend/flow.fig | 140 | ||||
| -rw-r--r-- | src/tools/backend/flow.gif | bin | 0 -> 674098 bytes | |||
| -rw-r--r-- | src/tools/backend/index.html | 42 |
5 files changed, 605 insertions, 0 deletions
diff --git a/src/tools/backend/README b/src/tools/backend/README new file mode 100644 index 00000000000..601c66cc4bc --- /dev/null +++ b/src/tools/backend/README @@ -0,0 +1,3 @@ +Just point your browser at the index.html file, and click on the +flowchart to see the description and source code. + diff --git a/src/tools/backend/backend_dirs.html b/src/tools/backend/backend_dirs.html new file mode 100644 index 00000000000..3ef940f0ca1 --- /dev/null +++ b/src/tools/backend/backend_dirs.html @@ -0,0 +1,420 @@ +<HTML> +<HEAD> +<TITLE>PostgreSQL Backend Directories</TITLE> +</HEAD> +<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#A00000" ALINK="#0000FF"> +<H1 ALIGN=CENTER> +PostgreSQL Backend Directories +</H1> +<H2 ALIGN=CENTER> +by Bruce Momjian +</H2 ALIGN=CENTER> +<H2> +<A NAME="bootstrap"> +<A HREF="../../backend/bootstrap">bootstrap</A></A> +- creates initial template database via initdb +</H2> +<P> +Because PostgreSQL requires access to system tables for almost every +operation, getting those system tables in place is a problem. +You can't just create the tables and insert data into them in the normal way, +because table creation and insertion requires the tables to already +exist. +This code <I>jams</I> the data directly into tables using a +special syntax used only by the bootstrap procedure. +</P> +<H2> +<A NAME="main"> +<A HREF="../../backend/main">main</A></A> +- passes control to postmaster or postgres +</H2> +<P> +This checks the process name(argv[0]) and various flags, and passes +control to the postmaster or postgres backend code. +</P> +<H2> +<A NAME="postmaster"> +<A HREF="../../backend/postmaster">postmaster</A></A> +- controls postgres server startup/termination +</H2> +<P> +This creates shared memory, and then goes into a loop waiting for +connection requests. +When a connection request arrives, a <I>postgres</I> backend is started, +and the connection is passed to it. +</P> +<H2> +<A NAME="libpq"> +<A HREF="../../backend/libpq">libpq</A></A> +- backend libpq library routines +</H2> +<P> +This handles communication to the client processes. +</P> +<H2> +<A NAME="tcop"> +<A HREF="../../backend/tcop">tcop</A></A> +- traffic cop, dispatches request to proper module +</H2> +<P> +This contains the <I>postgres</I> backend main handler, as well as the +code that makes calls to the parser, optimizer, executor, and +<I>/commands</I> functions. +</P> +<H2> +<A NAME="parser"> +<A HREF="../../backend/parser">parser</A></A> +- converts SQL query to query tree +</H2> +<P> +This converts SQL queries coming from <I>libpq</I> into command-specific +structures to be used the the optimizer/executor, or <I>/commands</I> +routines. +The SQL is lexically analyzed into keywords, identifiers, and constants, +and passed to the parser. +The parser creates command-specific structures to hold the elements of +the query. +The command-specific structures are then broken apart, checked, and passed to +<I>/commands</I> processing routines, or converted into <I>Lists</I> of +<I>Nodes</I> to be handled by the optimizer and executor. +</P> +<H2> +<A NAME="optimizer"> +<A HREF="../../backend/optimizer">optimizer</A></A> +- creates path and plan +</H2> +<P> +This uses the parser output to generate an optimal plan for the +executor. +</P> +<H4> +<A NAME="optimizer/path"> +<A HREF="../../backend/optimizer/path">optimizer/path</A></A> +- creates path from parser output +</H4> +<P> +This takes the parser query output, and generates all possible methods of +executing the request. +It examines table join order, <I>where</I> clause restrictions, +and optimizer table statistics to evaluate each possible execution +method, and assigns a cost to each. +</P> +<H4> +<A NAME="optimizer/geqo"> +<A HREF="../../backend/optimizer/geqo">optimizer/geqo</A></A> +- genetic query optimizer +</H4> +<P> +<I>optimizer/path</I> evaluates all possible ways to join the requested tables. +When the number of tables becomes great, the number of tests made +becomes great too. +The Genetic Query Optimizer considers each table separately, then figures +the most optimal order to perform the join. +For a few tables, this method takes longer, but for a large number of +tables, it is faster. +There is an option to control when this feature is used. +</P> +<H4> +<A NAME="optimizer/plan"> +<A HREF="../../backend/optimizer/plan">optimizer/plan</A></A> +- optimizes path output +</H4> +<P> +This takes the <I>optimizer/path</I> output, chooses the path with the +least cost, and creates a plan for the executor. +</P> +<H4> +<A NAME="optimizer/prep"> +<A HREF="../../backend/optimizer/prep">optimizer/prep</A></A> +- handle special plan cases +</H4> +<P> +This does special plan processing. +</P> +<H4> +<A NAME="optimizer/util"> +<A HREF="../../backend/optimizer/util">optimizer/util</A></A> +- optimizer support routines +</H4> +<P> +This contains support routines used by other parts of the optimizer. +</P> +<H2> +<A NAME="executor"> +<A HREF="../../backend/executor">executor</A></A> +- executes complex node plans from optimizer +</H2> +<P> +This handles <I>select, insert, update,</I> and <I>delete</I> statements. +The operations required to handle these statement types include +heap scans, index scans, sorting, joining tables, grouping, aggregates, +and uniqueness. +</P> +<H2> +<A NAME="commands"> +<A HREF="../../backend/commands">commands</A></A> +- commands that do not require the executor +</H2> +<P> +These process SQL commands that do not require complex handling. +It includes <I>vacuum, copy, alter, create table, create type,</I> and +many others. +The code is called with the structures generated by the parser. +Most of the routines do some processing, then call lower-level functions +in the catalog directory to do the actual work. +</P> +<H2> +<A NAME="catalog"> +<A HREF="../../backend/catalog">catalog</A></A> +- system catalog manipulation +</H2> +<P> +This contains functions that manipulate the system tables or catalogs. +Table, index, procedure, operator, type, and aggregate creation and +manipulation routines are here. +These are low-level routines, and are usually called by upper routines +that pre-format user requests into a predefined format. +</P> +<H2> +<A NAME="storage"> +<A HREF="../../backend/storage">storage</A></A> +- manages various storage systems +</H2> +<P> +These allow uniform resource access by the backend. +<BR> +<BR> +<A NAME="storage/buffer"> +<A HREF="../../backend/storage/buffer">storage/buffer</A></A> +- shared buffer pool manager +<BR> +<A NAME="storage/file"> +<A HREF="../../backend/storage/file">storage/file</A></A> +- file manager +<BR> +<A NAME="storage/ipc"> +<A HREF="../../backend/storage/ipc">storage/ipc</A></A> +- semaphores and shared memory +<BR> +<A NAME="storage/large_object"> +<A HREF="../../backend/storage/large_object">storage/large_object</A></A> +- large objects +<BR> +<A NAME="storage/lmgr"> +<A HREF="../../backend/storage/lmgr">storage/lmgr</A></A> +- lock manager +<BR> +<A NAME="storage/page"> +<A HREF="../../backend/storage/page">storage/page</A></A> +- page manager +<BR> +<A NAME="storage/smgr"> +<A HREF="../../backend/storage/smgr">storage/smgr</A></A> +- storage/disk manager +<BR> +<BR> +</P> +<H2> +<A NAME="access"> +<A HREF="../../backend/access">access</A></A> +- various data access methods +</H2> +<P> +These control the way data is accessed in heap, indexes, and +transactions. +<BR> +<BR> +<A NAME="access/common"> +<A HREF="../../backend/access/common">access/common</A></A> +- common access routines +<BR> +<A NAME="access/gist"> +<A HREF="../../backend/access/gist">access/gist</A></A> +- easy-to-define access method system +<BR> +<A NAME="access/hash"> +<A HREF="../../backend/access/hash">access/hash</A></A> +- hash +<BR> +<A NAME="access/heap"> +<A HREF="../../backend/access/heap">access/heap</A></A> +- heap is use to store data rows +<BR> +<A NAME="access/index"> +<A HREF="../../backend/access/index">access/index</A></A> +- used by all index types +<BR> +<A NAME="access/nbtree"> +<A HREF="../../backend/access/nbtree">access/nbtree</A></A> +- Lehman and Yao's btree management algorithm +<BR> +<A NAME="access/rtree"> +<A HREF="../../backend/access/rtree">access/rtree</A></A> +- used for indexing of 2-dimensional data +<BR> +<A NAME="access/transam"> +<A HREF="../../backend/access/transam">access/transam</A></A> +- transaction manager (BEGIN/ABORT/COMMIT) +<BR> +<BR> +</P> +<H2> +<A NAME="nodes"> +<A HREF="../../backend/nodes">nodes</A></A> +- creation/manipulation of nodes and lists +</H2> +<P> +PostgreSQL stores information about SQL queries in structures called +nodes. +<I>Nodes</I> are generic containers that have a <I>type</I> field and then a +type-specific data section. +Nodes are usually placed in <I>Lists.</I> +A <I>List</I> is container with an <I>elem</I> element, +and a <I>next</I> field that points to the next <I>List.</I> +These <I>List</I> structures are chained together in a forward linked list. +In this way, a chain of <I>List</I>s can contain an unlimited number of <I>Node</I> +elements, and each <I>Node</I> can contain any data type. +These are used extensively in the parser, optimizer, and executor to +store requests and data. +</P> +<H2> +<A NAME="utils"> +<A HREF="../../backend/utils">utils</A></A> +- support routines +</H2> +<H4> +<A NAME="utils/adt"> +<A HREF="../../backend/utils/adt">utils/adt</A></A> +- built-in data type routines +</H4> +<P> +This contains all the PostgreSQL builtin data types. +</P> +<H4> +<A NAME="utils/cache"> +<A HREF="../../backend/utils/cache">utils/cache</A></A> +- system/relation/function cache routines +</H4> +<P> +PostgreSQL supports arbitrary data types, so no data types are hard-coded +into the core backend routines. +When the backend needs to find out about a type, is does a lookup of a +system table. +Because these system tables are referred to often, a cache is maintained +that speeds lookups. +There is a system relation cache, a function/operator cache, and a relation +information cache. +This last cache maintains information about all recently-accessed +tables, not just system ones. +</P> +<H4> +<A NAME="utils/error"> +<A HREF="../../backend/utils/error">utils/error</A></A> +- error reporting routines +</H4> +<P> +Reports backend errors to the front end. +</P> +<H4> +<A NAME="utils/fmgr"> +<A HREF="../../backend/utils/fmgr">utils/fmgr</A></A> +- function manager +</H4> +<P> +This handles the calling of dynamically-loaded functions, and the calling +of functions defined in the system tables. +</P> +<H4> +<A NAME="utils/hash"> +<A HREF="../../backend/utils/hash">utils/hash</A></A> +- hash routines for internal algorithms +</H4> +<P> +These hash routines are used by the cache and memory-manager routines to +do quick lookups of dynamic data storage structures maintained by the +backend. +</P> +<H4> +<A NAME="utils/init"> +<A HREF="../../backend/utils/init">utils/init</A></A> +- various initialization stuff +</H4> +<H4> +<A NAME="utils/misc"> +<A HREF="../../backend/utils/misc">utils/misc</A></A> +- miscellaneous stuff +</H4> +<H4> +<A NAME="utils/mmgr"> +<A HREF="../../backend/utils/mmgr">utils/mmgr</A></A> +- memory manager(process-local memory) +</H4> +<P> +When PostgreSQL allocates memory, it does so in an explicit context. +Contexts can be statement-specific, transaction-specific, or +persistent/global. +By doing this, the backend can easily free memory once a statement or +transaction completes. +</P> +<H4> +<A NAME="utils/sort"> +<A HREF="../../backend/utils/sort">utils/sort</A></A> +- sort routines for internal algorithms +</H4> +<P> +When statement output must be sorted as part of a backend operation, +this code sorts the tuples, either in memory or using disk files. +</P> +<H4> +<A NAME="utils/time"> +<A HREF="../../backend/utils/time">utils/time</A></A> +- transaction time qualification routines +</H4> +<P> +These routines do checking of tuple internal columns to determine if the +current row is still valid, or is part of a non-committed transaction or +superseded by a new row. +</P> +<H2> +<A NAME="include"> +<A HREF="../../backend/include">include</A></A> +- include files +</H2> +<P> +There are include directories for each subsystem. +</P> +<H2> +<A NAME="lib"> +<A HREF="../../backend/lib">lib</A></A> +- support library +</H2> +<P> +This houses several generic routines. +</P> +<H2> +<A NAME="regex"> +<A HREF="../../backend/regex">regex</A></A> +- regular expression library +</H2> +<P> +This is used for regular expression handling in the backend, i.e. '~'. +</P> +<H2> +<A NAME="rewrite"> +<A HREF="../../backend/rewrite">rewrite</A></A> +- rules system +</H2> +<P> +This does processing for the rules system. +</P> +<H2> +<A NAME="tioga"> +<A HREF="../../backend/tioga">tioga</A></A> +- unused (array handling?) +</H2> +<HR> +<ADDRESS> +Maintainer: Bruce Momjian<A +HREF="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</a>)<BR> +Last updated: Mon Oct 27 11:01:08 EST 1997 +</ADDRESS> diff --git a/src/tools/backend/flow.fig b/src/tools/backend/flow.fig new file mode 100644 index 00000000000..265fb28e089 --- /dev/null +++ b/src/tools/backend/flow.fig @@ -0,0 +1,140 @@ +#FIG 3.1 +Landscape +Center +Inches +1200 2 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 6900 1200 6900 600 4500 600 4500 1200 6900 1200 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5700 1200 5700 1800 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 6900 2400 6900 1800 4500 1800 4500 2400 6900 2400 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 6900 3600 6900 3000 4500 3000 4500 3600 6900 3600 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5700 2400 5700 3000 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 10800 3600 10800 3000 8400 3000 8400 3600 10800 3600 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5700 2400 9600 3000 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 6900 5100 6900 4500 4500 4500 4500 5100 6900 5100 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 6900 6300 6900 5700 4500 5700 4500 6300 6900 6300 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5700 5100 5700 5700 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 6900 7500 6900 6900 4500 6900 4500 7500 6900 7500 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5700 6300 5700 6900 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 6900 8700 6900 8100 4500 8100 4500 8700 6900 8700 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5700 7500 5700 8100 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5700 8700 5700 9300 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 10800 6300 10800 5700 8400 5700 8400 6300 10800 6300 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 6900 6000 8400 6000 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 + 0 0 1.00 60.00 120.00 + 4500 9600 3900 9600 3900 6600 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 4 + 0 0 1.00 60.00 120.00 + 10800 6000 11400 6000 11400 4200 5700 4200 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 1 + 2700 8100 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 1 + 8475 2175 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 1 + 8475 2175 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 3900 6600 3900 4200 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 3900 4200 5700 4200 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5700 4200 5700 4500 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 2700 9600 2700 9000 300 9000 300 9600 2700 9600 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2700 9300 3300 9300 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 2700 8700 2700 8100 300 8100 300 8700 2700 8700 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2700 8400 3300 8400 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 2700 7800 2700 7200 300 7200 300 7800 2700 7800 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 3300 7500 2700 7500 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 2700 6900 2700 6300 300 6300 300 6900 2700 6900 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 3300 6600 2700 6600 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 2700 6000 2700 5400 300 5400 300 6000 2700 6000 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2700 5700 3300 5700 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 6900 9900 6900 9300 4500 9300 4500 9900 6900 9900 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 8 0 0 5 + 10800 1200 10800 600 8400 600 8400 1200 10800 1200 +2 4 0 1 -1 7 0 0 -1 0.000 0 0 7 0 0 5 + 10800 2400 10800 1800 8400 1800 8400 2400 10800 2400 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 8400 2100 7725 2100 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 8325 2175 7725 2550 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 5700 3600 5700 4200 +4 1 -1 0 0 28 18 0.0000 4 195 630 5670 990 Main\001 +4 1 -1 0 0 28 18 0.0000 4 195 1470 5685 2190 Postmaster\001 +4 1 -1 0 0 28 18 0.0000 4 240 1110 9585 3375 Postgres\001 +4 1 -1 0 0 28 18 0.0000 4 240 1110 5700 3390 Postgres\001 +4 1 -1 0 0 28 18 0.0000 4 240 915 9600 5970 Simple\001 +4 1 -1 0 0 28 18 0.0000 4 195 1980 5685 7455 Generate Paths\001 +4 1 -1 0 0 28 18 0.0000 4 195 1275 5715 7170 Rewrite &\001 +4 1 -1 0 0 28 18 0.0000 4 255 1500 5715 6090 Traffic Cop\001 +4 1 -1 0 0 28 18 0.0000 4 195 825 5685 4875 Parser\001 +4 1 -1 0 0 28 18 0.0000 4 195 1485 9600 6255 Commands\001 +4 1 -1 0 0 28 18 0.0000 4 195 1830 5715 8670 Generate Plan\001 +4 1 -1 0 0 28 18 0.0000 4 195 1890 5700 8400 Choose Path &\001 +4 1 -1 0 0 28 18 0.0000 4 240 900 7605 5925 simple\001 +4 1 -1 0 0 28 18 0.0000 4 240 1125 5715 6660 complex\001 +4 0 -1 0 0 0 24 0.0000 4 330 1290 600 1470 Program\001 +4 0 -1 0 0 0 24 0.0000 4 255 735 600 1890 Flow\001 +4 0 -1 0 0 0 24 0.0000 4 330 1800 600 1050 PostgreSQL\001 +4 0 -1 0 0 0 18 0.0000 4 255 1095 9000 975 Bootstrap\001 +4 1 -1 0 0 28 18 0.0000 4 240 2325 1515 9390 Storage Managers\001 +4 0 -1 0 0 0 18 0.0000 4 225 1425 750 8475 Nodes / Lists\001 +4 1 -1 0 0 28 18 0.0000 4 195 1050 1485 7590 Utilities\001 +4 1 -1 0 0 28 18 0.0000 4 195 2100 1485 5805 Access Methods\001 +4 1 -1 0 0 28 18 0.0000 4 195 1140 5685 9720 Executor\001 +4 0 -1 0 0 0 18 0.0000 4 255 645 9225 2175 Libpq\001 +4 0 -1 0 0 0 18 0.0000 4 255 840 1050 6675 Catalog\001 diff --git a/src/tools/backend/flow.gif b/src/tools/backend/flow.gif Binary files differnew file mode 100644 index 00000000000..1076af06f42 --- /dev/null +++ b/src/tools/backend/flow.gif diff --git a/src/tools/backend/index.html b/src/tools/backend/index.html new file mode 100644 index 00000000000..6b5362dff8c --- /dev/null +++ b/src/tools/backend/index.html @@ -0,0 +1,42 @@ +<HTML> +<HEAD> +<TITLE>PostgreSQL Backend Flowchart</TITLE> +</HEAD> +<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#A00000" ALINK="#0000FF"> +<H1 ALIGN=CENTER> +PostgreSQL Backend Flowchart +</H1> +<H2 ALIGN=CENTER> +by Bruce Momjian +</H2 ALIGN=CENTER> +<CENTER> +Click on an item to see more detail. +<BR> +<BR> +<IMG src="flow.gif" usemap="#flowmap"> +</CENTER> +<MAP name="flowmap"> +<AREA COORDS="290,10,450,50" HREF="backend_dirs.html#main"> +<AREA COORDS="550,10,710,50" HREF="backend_dirs.html#bootstrap"> +<AREA COORDS="290,90,450,130," HREF="backend_dirs.html#postmaster"> +<AREA COORDS="550,90,710,130," HREF="backend_dirs.html#libpq"> +<AREA COORDS="290,170,450,210" HREF="backend_dirs.html#tcop"> +<AREA COORDS="550,170,710,210" HREF="backend_dirs.html#tcop"> +<AREA COORDS="290,270,450,310" HREF="backend_dirs.html#parser"> +<AREA COORDS="290,350,450,390" HREF="backend_dirs.html#tcop"> +<AREA COORDS="290,430,450,470" HREF="backend_dirs.html#optimizer"> +<AREA COORDS="290,510,450,550" HREF="backend_dirs.html#optimizer/plan"> +<AREA COORDS="290,570,450,630" HREF="backend_dirs.html#executor"> +<AREA COORDS="550,350,710,390" HREF="backend_dirs.html#commands"> +<AREA COORDS="10,330,170,370" HREF="backend_dirs.html#access"> +<AREA COORDS="10,390,170,430" HREF="backend_dirs.html#catalog"> +<AREA COORDS="10,450,170,490" HREF="backend_dirs.html#utils"> +<AREA COORDS="10,510,170,550" HREF="backend_dirs.html#nodes"> +<AREA COORDS="10,570,170,610" HREF="backend_dirs.html#storage"> +</MAP> +<HR> +<ADDRESS> +Maintainer: Bruce Momjian<A +HREF="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</a>)<BR> +Last updated: Mon Oct 27 11:01:08 EST 1997 +</ADDRESS> |
