From 63f1ccd838a19e4a0923221b2f90e4e014cabf74 Mon Sep 17 00:00:00 2001 From: Bruce Momjian <bruce@momjian.us> Date: Tue, 4 Sep 2012 12:38:33 -0400 Subject: [PATCH] Remove src/tool/backend, now that the content is on the web site and wiki. --- src/tools/backend/README | 4 - src/tools/backend/backend_dirs.html | 349 ---------------------------- src/tools/backend/flow.fig | 143 ------------ src/tools/backend/flow.gif | Bin 501221 -> 0 bytes src/tools/backend/index.html | 155 ------------ 5 files changed, 651 deletions(-) delete mode 100644 src/tools/backend/README delete mode 100644 src/tools/backend/backend_dirs.html delete mode 100644 src/tools/backend/flow.fig delete mode 100644 src/tools/backend/flow.gif delete mode 100644 src/tools/backend/index.html diff --git a/src/tools/backend/README b/src/tools/backend/README deleted file mode 100644 index 2b8692d3939..00000000000 --- a/src/tools/backend/README +++ /dev/null @@ -1,4 +0,0 @@ -src/tools/backend/README - -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 deleted file mode 100644 index 16bd894582e..00000000000 --- a/src/tools/backend/backend_dirs.html +++ /dev/null @@ -1,349 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta name="generator" -content="HTML Tidy for BSD/OS (vers 1st July 2002), see www.w3.org" /> -<title>PostgreSQL Backend Directories</title> -</head> -<body bgcolor="#FFFFFF" text="#000000" link="#FF0000" -vlink="#A00000" alink="#0000FF"> -<h1>PostgreSQL Backend Directories</h1> - -<h2>by Bruce Momjian</h2> - -<hr /> -<p><em>Click on any of the section headings to see the source code -for that section.</em></p> - -<h2><a id="bootstrap" name="bootstrap"></a> <a -href="../../backend/bootstrap">bootstrap</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 id="main" name="main"></a> <a -href="../../backend/main">main</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 id="postmaster" name="postmaster"></a> <a -href="../../backend/postmaster">postmaster</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 id="libpq" name="libpq"></a> <a -href="../../backend/libpq">libpq</a> - backend libpq library -routines</h2> - -<p>This handles communication to the client processes.</p> - -<h2><a id="tcop" name="tcop"></a> <a -href="../../backend/tcop">tcop</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 id="parser" name="parser"></a> <a -href="../../backend/parser">parser</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 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 id="rewrite" name="rewrite"></a> <a -href="../../backend/rewrite">rewrite</a> - rule and views -support</h2> - -<h2><a id="optimizer" name="optimizer"></a> <a -href="../../backend/optimizer">optimizer</a> - creates path and -plan</h2> - -<p>This uses the parser output to generate an optimal plan for the -executor.</p> - -<h3><a id="optimizer_path" name="optimizer_path"></a> <a -href="../../backend/optimizer/path">optimizer/path</a> - creates -path from parser output</h3> - -<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> - -<h3><a id="optimizer_geqo" name="optimizer_geqo"></a> <a -href="../../backend/optimizer/geqo">optimizer/geqo</a> - genetic -query optimizer</h3> - -<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> - -<h3><a id="optimizer_plan" name="optimizer_plan"></a> <a -href="../../backend/optimizer/plan">optimizer/plan</a> - optimizes -path output</h3> - -<p>This takes the <i>optimizer/path</i> output, chooses the path -with the least cost, and creates a plan for the executor.</p> - -<h3><a id="optimizer_prep" name="optimizer_prep"></a> <a -href="../../backend/optimizer/prep">optimizer/prep</a> - handle -special plan cases</h3> - -<p>This does special plan processing.</p> - -<h3><a id="optimizer_util" name="optimizer_util"></a> <a -href="../../backend/optimizer/util">optimizer/util</a> - optimizer -support routines</h3> - -<p>This contains support routines used by other parts of the -optimizer.</p> - -<h2><a id="executor" name="executor"></a> <a -href="../../backend/executor">executor</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 id="commands" name="commands"></a> <a -href="../../backend/commands">commands</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 id="catalog" name="catalog"></a> <a -href="../../backend/catalog">catalog</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 id="storage" name="storage"></a> <a -href="../../backend/storage">storage</a> - manages various storage -systems</h2> - -<p>These allow uniform resource access by the backend.<br /> -<br /> - <a id="storage_buffer" name="storage_buffer"></a> <a -href="../../backend/storage/buffer">storage/buffer</a> - shared -buffer pool manager<br /> - <a id="storage_file" name="storage_file"></a> <a -href="../../backend/storage/file">storage/file</a> - file -manager<br /> - <a id="storage_freespace" name="storage_freespace"></a> <a -href="../../backend/storage/freespace">storage/freespace</a> - free -space map<br /> - <a id="storage_ipc" name="storage_ipc"></a> <a -href="../../backend/storage/ipc">storage/ipc</a> - semaphores and -shared memory<br /> - <a id="storage_large_object" name="storage_large_object"></a> <a -href="../../backend/storage/large_object">storage/large_object</a> -- large objects<br /> - <a id="storage_lmgr" name="storage_lmgr"></a> <a -href="../../backend/storage/lmgr">storage/lmgr</a> - lock -manager<br /> - <a id="storage_page" name="storage_page"></a> <a -href="../../backend/storage/page">storage/page</a> - page -manager<br /> - <a id="storage_smgr" name="storage_smgr"></a> <a -href="../../backend/storage/smgr">storage/smgr</a> - storage/disk -manager<br /> -<br /> -</p> - -<h2><a id="access" name="access"></a> <a -href="../../backend/access">access</a> - various data access -methods</h2> - -<p>These control the way data is accessed in heap, indexes, and -transactions.<br /> -<br /> - <a id="access_common" name="access_common"></a> <a -href="../../backend/access/common">access/common</a> - common -access routines<br /> - <a id="access_gist" name="access_gist"></a> <a -href="../../backend/access/gist">access/gist</a> - easy-to-define -access method system<br /> - <a id="access_hash" name="access_hash"></a> <a -href="../../backend/access/hash">access/hash</a> - hash<br /> - <a id="access_heap" name="access_heap"></a> <a -href="../../backend/access/heap">access/heap</a> - heap is use to -store data rows<br /> - <a id="access_index" name="access_index"></a> <a -href="../../backend/access/index">access/index</a> - used by all -index types<br /> - <a id="access_nbtree" name="access_nbtree"></a> <a -href="../../backend/access/nbtree">access/nbtree</a> - Lehman and -Yao's btree management algorithm<br /> - <a id="access_transam" name="access_transam"></a> <a -href="../../backend/access/transam">access/transam</a> - -transaction manager (BEGIN/ABORT/COMMIT)<br /> -<br /> -</p> - -<h2><a id="nodes" name="nodes"></a> <a -href="../../backend/nodes">nodes</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 id="utils" name="utils"></a> <a -href="../../backend/utils">utils</a> - support routines</h2> - -<h3><a id="utils_adt" name="utils_adt"></a> <a -href="../../backend/utils/adt">utils/adt</a> - built-in data type -routines</h3> - -<p>This contains all the PostgreSQL builtin data types.</p> - -<h3><a id="utils_cache" name="utils_cache"></a> <a -href="../../backend/utils/cache">utils/cache</a> - -system/relation/function cache routines</h3> - -<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> - -<h3><a id="utils_error" name="utils_error"></a> <a -href="../../backend/utils/error">utils/error</a> - error reporting -routines</h3> - -<p>Reports backend errors to the front end.</p> - -<h3><a id="utils_fmgr" name="utils_fmgr"></a> <a -href="../../backend/utils/fmgr">utils/fmgr</a> - function -manager</h3> - -<p>This handles the calling of dynamically-loaded functions, and -the calling of functions defined in the system tables.</p> - -<h3><a id="utils_hash" name="utils_hash"></a> <a -href="../../backend/utils/hash">utils/hash</a> - hash routines for -internal algorithms</h3> - -<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> - -<h3><a id="utils_init" name="utils_init"></a> <a -href="../../backend/utils/init">utils/init</a> - various -initialization stuff</h3> - -<h3><a id="utils_mb" name="utils_mb"></a> <a -href="../../backend/utils/mb">utils/mb</a> - single and multibyte -encoding</h3> - -<h3><a id="utils_misc" name="utils_misc"></a> <a -href="../../backend/utils/misc">utils/misc</a> - miscellaneous -stuff</h3> - -<h3><a id="utils_mmgr" name="utils_mmgr"></a> <a -href="../../backend/utils/mmgr">utils/mmgr</a> - memory -manager(process-local memory)</h3> - -<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> - -<h3><a id="utils_resowner" name="utils_resowner"></a> <a -href="../../backend/utils/resowner">utils/resowner</a> - resource -owner tracking</h3> - -<h3><a id="utils_sort" name="utils_sort"></a> <a -href="../../backend/utils/sort">utils/sort</a> - sort routines for -internal algorithms</h3> - -<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> - -<h3><a id="utils_time" name="utils_time"></a> <a -href="../../backend/utils/time">utils/time</a> - transaction time -qualification routines</h3> - -<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 id="include" name="include"></a> <a -href="../../backend/include">include</a> - include files</h2> - -<p>There are include directories for each subsystem.</p> - -<h2><a id="lib" name="lib"></a> <a href="../../backend/lib">lib</a> -- support library</h2> - -<p>This houses several generic routines.</p> - -<h2><a id="regex" name="regex"></a> <a -href="../../backend/regex">regex</a> - regular expression -library</h2> - -<p>This is used for regular expression handling in the backend, -i.e. '~'.</p> - -<h2><a id="port" name="port"></a> <a -href="../../backend/port">port</a> - compatibility routines</h2> - -<br /> - -<hr /> -<small>Maintainer: Bruce Momjian ( <a -href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a> -)<br /> - Last updated: Fri May 6 14:22:27 EDT 2005</small> -</body> -</html> diff --git a/src/tools/backend/flow.fig b/src/tools/backend/flow.fig deleted file mode 100644 index b10aa2cfc48..00000000000 --- a/src/tools/backend/flow.fig +++ /dev/null @@ -1,143 +0,0 @@ -#FIG 3.2 Produced by xfig version 3.2.5 -Portrait -Center -Inches -Letter -88.00 -Single --2 -1200 2 -0 32 #919191 -0 33 #c5ddc1 -2 4 0 1 -1 26 1 0 20 0.000 0 0 7 0 0 5 - 3600 900 1200 900 1200 300 3600 300 3600 900 -2 4 0 1 -1 4 1 0 20 0.000 0 0 7 0 0 5 - 3600 2100 1200 2100 1200 1500 3600 1500 3600 2100 -2 4 0 1 -1 0 1 0 20 0.000 0 0 7 0 0 5 - 7500 1500 5100 1500 5100 900 7500 900 7500 1500 -2 4 0 1 -1 31 1 0 20 0.000 0 0 7 0 0 5 - 3600 3300 1200 3300 1200 2700 3600 2700 3600 3300 -2 4 0 1 -1 8 1 0 20 0.000 0 0 7 0 0 5 - 3600 6000 1200 6000 1200 5400 3600 5400 3600 6000 -2 4 0 1 -1 31 1 0 20 0.000 0 0 7 0 0 5 - 7500 3300 5100 3300 5100 2700 7500 2700 7500 3300 -2 4 0 1 -1 8 1 0 20 0.000 0 0 7 0 0 5 - 3600 8400 1200 8400 1200 7800 3600 7800 3600 8400 -2 4 0 1 -1 8 1 0 20 0.000 0 0 7 0 0 5 - 3600 9600 1200 9600 1200 9000 3600 9000 3600 9600 -2 1 2 2 -1 7 0 0 -1 3.000 0 1 -1 1 1 2 - 0 0 2.00 80.00 150.00 - 0 0 2.00 80.00 150.00 - 4500 1425 5135 1194 -2 1 2 2 -1 7 0 0 -1 4.000 0 1 -1 1 1 2 - 0 0 2.00 80.00 150.00 - 0 0 2.00 80.00 150.00 - 4725 2025 5160 1467 -2 1 0 2 20 7 1 0 -1 0.000 0 0 -1 1 0 2 - 0 0 2.00 150.00 180.00 - 2400 2100 2400 2700 -2 1 0 2 31 7 1 0 -1 0.000 0 0 -1 1 0 2 - 0 0 2.00 150.00 180.00 - 2400 3300 2400 4275 -2 4 0 1 -1 8 1 0 20 0.000 0 0 7 0 0 5 - 3600 7200 1200 7200 1200 6600 3600 6600 3600 7200 -2 4 0 1 -1 8 1 0 20 0.000 0 0 7 0 0 5 - 3600 10800 1200 10800 1200 10200 3600 10200 3600 10800 -2 4 0 1 -1 8 1 0 20 0.000 0 0 7 0 0 5 - 3600 4800 1200 4800 1200 4200 3600 4200 3600 4800 -2 1 1 2 32 7 1 0 -1 4.000 0 0 -1 1 0 2 - 0 0 2.00 150.00 180.00 - 2400 8400 2400 9000 -2 1 1 2 32 7 1 0 -1 4.000 0 0 -1 1 0 2 - 0 0 2.00 150.00 180.00 - 2400 7200 2400 7800 -2 1 1 2 32 7 1 0 -1 4.000 0 0 -1 1 0 2 - 0 0 2.00 150.00 180.00 - 2400 6000 2400 6600 -2 1 1 2 32 7 1 0 -1 4.000 0 0 -1 1 0 2 - 0 0 2.00 150.00 180.00 - 2400 4800 2400 5400 -2 1 1 2 32 7 1 0 -1 4.000 0 0 -1 1 0 2 - 0 0 2.00 150.00 180.00 - 3600 5700 5100 5700 -2 1 0 2 25 7 0 0 -1 0.000 0 0 -1 1 0 2 - 0 0 2.00 150.00 180.50 - 2400 900 2400 1500 -2 4 0 1 -1 8 1 0 20 0.000 0 0 7 0 0 5 - 7500 6000 5100 6000 5100 5400 7500 5400 7500 6000 -2 4 0 1 33 33 3 0 20 0.000 0 0 40 0 0 5 - 8700 11100 300 11100 300 3600 8700 3600 8700 11100 -2 1 0 2 29 7 0 0 -1 0.000 0 0 -1 1 1 2 - 0 0 2.00 150.00 180.00 - 0 0 2.00 150.00 180.00 - 3150 13050 3150 13650 -2 1 0 2 29 7 0 0 -1 0.000 0 0 -1 1 1 2 - 0 0 2.00 150.00 180.00 - 0 0 2.00 150.00 180.00 - 1500 12450 1500 11850 -2 4 0 1 -1 29 1 0 20 0.000 0 0 7 0 0 5 - 2700 13050 300 13050 300 12450 2700 12450 2700 13050 -2 4 0 1 -1 29 1 0 20 0.000 0 0 7 0 0 5 - 6000 13050 3600 13050 3600 12450 6000 12450 6000 13050 -2 4 0 1 -1 29 1 0 20 0.000 0 0 7 0 0 5 - 7500 14250 5100 14250 5100 13650 7500 13650 7500 14250 -2 4 0 1 -1 29 1 0 20 0.000 0 0 7 0 0 5 - 4200 14250 1800 14250 1800 13650 4200 13650 4200 14250 -2 1 0 2 29 7 0 0 -1 0.000 0 0 -1 1 1 2 - 0 0 2.00 150.00 180.00 - 0 0 2.00 150.00 180.00 - 4800 12450 4800 11850 -2 1 0 2 29 7 0 0 -1 0.000 0 0 -1 1 1 2 - 0 0 2.00 150.00 180.00 - 0 0 2.00 150.00 180.00 - 6300 13050 6300 13650 -2 4 0 1 -1 29 1 0 20 0.000 0 0 7 0 0 5 - 9300 13050 6600 13050 6600 12450 9300 12450 9300 13050 -2 1 0 2 29 7 0 0 -1 0.000 0 0 -1 1 1 2 - 0 0 2.00 150.00 180.00 - 0 0 2.00 150.00 180.00 - 7950 11850 7950 12450 -2 1 1 2 5 7 1 0 -1 4.000 0 0 -1 1 0 2 - 0 0 2.00 150.00 180.00 - 2400 6000 2400 6600 -2 1 1 2 32 7 1 0 -1 4.000 0 0 -1 1 0 2 - 0 0 2.00 150.00 180.00 - 2400 9600 2400 10200 -3 2 2 2 20 7 0 0 -1 6.000 1 1 0 5 - 0 0 2.00 150.00 180.00 - 2415 2140 3090 2440 5265 2515 6090 2590 6315 2740 - 0.000 -1.000 -1.000 -1.000 0.000 -3 0 1 2 32 7 1 0 -1 4.500 0 1 0 7 - 0 0 2.00 150.00 150.00 - 7500 5700 8400 5400 8400 4500 7800 3900 3600 3900 3000 3900 - 2700 4200 - 0.000 1.000 1.000 1.000 1.000 1.000 0.000 -3 0 1 2 32 7 0 0 -1 4.000 0 1 0 8 - 0 0 2.00 150.00 150.00 - 1125 10500 900 10350 675 9975 675 4350 900 3975 1350 3900 - 1800 3900 2100 4200 - 0.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000 -4 1 5 2 0 28 18 0.0000 4 285 870 4350 5625 utility\001 -4 1 -1 0 0 16 18 0.0000 4 210 1455 2400 1950 Postmaster\001 -4 1 -1 0 0 16 18 0.0000 4 270 1125 2400 3150 Postgres\001 -4 1 -1 0 0 16 18 0.0000 4 270 1125 6300 3150 Postgres\001 -4 1 7 0 0 16 18 0.0000 4 270 720 6300 1350 Libpq\001 -4 1 -1 0 0 16 18 0.0000 4 210 615 2400 750 Main\001 -4 1 7 0 0 16 18 0.0000 4 210 1815 2400 9450 Generate Plan\001 -4 1 7 0 0 16 18 0.0000 4 270 1440 2400 5850 Traffic Cop\001 -4 1 7 0 0 16 18 0.0000 4 210 1980 2400 8250 Generate Paths\001 -4 1 5 2 0 28 18 0.0000 4 225 615 2400 9900 Plan\001 -4 1 5 2 0 28 18 0.0000 4 285 1920 2400 8700 Optimal Path\001 -4 1 5 2 0 28 18 0.0000 4 285 900 2400 6300 Query\001 -4 1 7 0 0 16 18 0.0000 4 210 1680 2400 10650 Execute Plan\001 -4 0 5 0 0 16 12 0.0000 4 210 2640 5250 6300 e.g. CREATE TABLE, COPY\001 -4 1 5 0 0 16 12 0.0000 4 195 3540 2400 6525 SELECT, INSERT, UPDATE, DELETE\001 -4 1 7 0 0 16 18 0.0000 4 270 1800 2400 7050 Rewrite Query\001 -4 1 7 0 0 16 18 0.0000 4 210 2130 2400 4650 Parse Statement\001 -4 1 7 0 0 16 18 0.0000 4 270 720 6300 5700 Utility\001 -4 1 7 0 0 16 18 0.0000 4 210 1335 6300 6000 Command\001 -4 1 -1 0 0 16 18 0.0000 4 270 2355 7950 12900 Storage Managers\001 -4 1 -1 0 0 16 18 0.0000 4 270 1020 4800 12900 Catalog\001 -4 1 -1 0 0 16 18 0.0000 4 210 915 1500 12900 Utilities\001 -4 1 -1 0 0 16 18 0.0000 4 210 2085 3000 14100 Access Methods\001 -4 1 -1 0 0 16 18 0.0000 4 210 1635 6300 14100 Nodes / Lists\001 diff --git a/src/tools/backend/flow.gif b/src/tools/backend/flow.gif deleted file mode 100644 index e0cd8db9b193c7667e00131fa3f3847af97daa14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501221 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⋘}Me9%RJAL)?pZf}_YNaSA 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 diff --git a/src/tools/backend/index.html b/src/tools/backend/index.html deleted file mode 100644 index eb4978bfe04..00000000000 --- a/src/tools/backend/index.html +++ /dev/null @@ -1,155 +0,0 @@ -<!-- src/tools/backend/index.html --> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta name="generator" -content="HTML Tidy for BSD/OS (vers 1st July 2002), see www.w3.org" /> -<title>How PostgreSQL Processes a Query</title> -</head> -<body bgcolor="#FFFFFF" text="#000000" link="#FF0000" -vlink="#A00000" alink="#0000FF"> -<h1>How PostgreSQL Processes a Query</h1> - -<h2>by Bruce Momjian</h2> - -<center> -<h3><i>Click on an item</i> to see more detail or look at the full -<a href="backend_dirs.html">index.</a></h3> - -<p><img src="flow.gif" usemap="#flowmap" alt="flowchart" /> - -<map name="flowmap" id="flowmap"> -<area coords="45, 0, 175, 30" href="backend_dirs.html#main" alt="main" /> -<area coords="255, 35, 380, 65" href="backend_dirs.html#libpq" alt="libpq" /> -<area coords="45, 65, 175, 95" href="backend_dirs.html#postmaster" alt="postmaster" /> -<area coords="45, 130, 175, 160" href="backend_dirs.html#tcop" alt="tcop" /> -<area coords="250, 130, 380, 160" href="backend_dirs.html#tcop" alt="tcop" /> -<area coords="45, 205, 175, 240" href="backend_dirs.html#parser" alt="parser" /> -<area coords="45, 270, 175, 300" href="backend_dirs.html#tcop" alt="tcop" /> -<area coords="255, 270, 380, 300" href="backend_dirs.html#commands" alt="commands" /> -<area coords="45, 335, 175, 365" href="backend_dirs.html#rewrite" alt="rewrite" /> -<area coords="45, 400, 175, 430" href="backend_dirs.html#optimizer_path" alt="path" /> -<area coords="45, 460, 175, 490" href="backend_dirs.html#optimizer_plan" alt="plan" /> -<area coords="45, 525, 175, 555" href="backend_dirs.html#executor" alt="executor" /> -<area coords="0, 640, 130, 675" href="backend_dirs.html#utils" alt="utils" /> -<area coords="175, 640, 300, 675" href="backend_dirs.html#catalog" alt="catalog" /> -<area coords="330, 640, 475, 675" href="backend_dirs.html#storage" alt="storage" /> -<area coords="75, 700, 210, 735" href="backend_dirs.html#access" alt="access" /> -<area coords="255, 705, 380, 735" href="backend_dirs.html#nodes" alt="nodes" /> -</map> -</center> - -<br /> - -<p>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 <a href="../../backend/parser">parser,</a> where the -lexical scanner, <a href="../../backend/parser/scan.l">scan.l,</a> -breaks the query up into tokens(words). The parser uses <a -href="../../backend/parser/gram.y">gram.y</a> and the tokens to -identify the query type, and load the proper query-specific -structure, like <a -href="../../include/nodes/parsenodes.h">CreateStmt</a> or <a -href="../../include/nodes/parsenodes.h">SelectStmt.</a></p> - -<p>The statement is then identified as complex (<i>SELECT / INSERT / -UPDATE / DELETE</i>) or a simple, e.g <i> CREATE USER, ANALYZE, </i>, -etc. Simple utility commands are processed by statement-specific -functions in <a href="../../backend/commands">backend/commands.</a> -Complex statements require more handling.</p> - -<p>The parser takes a complex query, 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 <i>WHERE</i> clause qualification, which is filled in by <a -href="../../backend/parser/parse_clause.c">transformWhereClause().</a> -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">transformFromClause().</a> -Query.rtable holds the query's range table.</p> - -<p>Certain queries, like <i>SELECT,</i> return columns of data. -Other queries, like <i>INSERT</i> and <i>UPDATE,</i> specify the -columns modified by the query. These column references are -converted to <a -href="../../include/nodes/primnodes.h">TargetEntry</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, which is -generated by <a -href="../../backend/parser/parse_target.c">transformTargetList().</a></p> - -<p>Other query elements, like aggregates(<i>SUM()</i>), <i>GROUP -BY,</i> and <i>ORDER BY</i> are also stored in their own Query -fields.</p> - -<p>The next step is for the Query to be modified by any -<i>VIEWS</i> or <i>RULES</i> that may apply to the query. This is -performed by the <a href="../../backend/rewrite">rewrite</a> -system.</p> - -<p>The <a href="../../backend/optimizer">optimizer</a> takes the -Query structure and generates an optimal <a -href="../../include/nodes/plannodes.h">Plan,</a> which contains the -operations to be performed 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(<i>WHERE</i> clause) to consider -optimal index usage.</p> - -<p>The Plan is then passed to the <a -href="../../backend/executor">executor</a> for execution, and the -result returned to the client. The Plan is actually as set of nodes, -arranged in a tree structure with a top-level node, and various -sub-nodes as children.</p> - -<p>There are many other modules that support this basic -functionality. They can be accessed by clicking on the -flowchart.</p> - -<hr /> -<p>Another area of interest is the shared memory area, which -contains data accessible to all backends. It has recently used -data/index blocks, locks, backend process information, and lookup -tables for these structures:</p> - -<ul> -<li>ShmemIndex - lookup shared memory addresses using structure -names</li> - -<li><a href="../../include/storage/buf_internals.h">Buffer -Descriptor</a> - control header for buffer cache block</li> - -<li><a href="../../include/storage/buf_internals.h">Buffer -Block</a> - data/index buffer cache block</li> - -<li>Shared Buffer Lookup Table - lookup of buffer cache block -addresses using table name and block number( <a -href="../../include/storage/buf_internals.h">BufferTag</a>)</li> - -<li>Lock Manager Tables (lock hash) - the <a -href="../../include/storage/lock.h">LOCK</a> structure, looked up -using a <a href="../../include/storage/lock.h">LOCKTAG</a>. -A LOCK structure exists for each lockable object that is currently -locked by any backend. Also, there is a subsidiary <a -href="../../include/storage/lock.h">PROCLOCK</a> structure for each -backend currently interested in a given LOCK</li> - -<li><a href="../../include/storage/proc.h">PGPROC Structures</a> - -information about each backend, including locks held/waiting</li> -</ul> - -<p>Each data structure is created by calling <a -href="../../backend/storage/ipc/shmem.c">ShmemInitStruct(),</a> and -the lookups are created by <a -href="../../backend/storage/ipc/shmem.c">ShmemInitHash().</a></p> - -<hr /> -<small>Maintainer: Bruce Momjian (<a -href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>)<br /> - -Last updated: Fri May 6 14:22:27 EDT 2005</small> -</body> -</html> -- GitLab