11<!--
2- $Header: /cvsroot/pgsql/doc/src/sgml/arch-dev.sgml,v 2.17 2003/01 /1900:13:28 momjian Exp $
2+ $Header: /cvsroot/pgsql/doc/src/sgml/arch-dev.sgml,v 2.18 2003/02 /1904:06:27 momjian Exp $
33-->
44
55 <chapter id="overview">
@@ -17,15 +17,15 @@ $Header: /cvsroot/pgsql/doc/src/sgml/arch-dev.sgml,v 2.17 2003/01/19 00:13:28 mo
1717
1818 <para>
1919 This chapter gives an overview of the internal structure of the
20- backend of <productname>PostgreSQL</productname>.
21- After having read the following sections you
22- should have an idea of how a query is processed. Don't expect a
23- detailed descriptionhere (I think such a description dealing with
24- all data structures and functions used within <productname>PostgreSQL</productname>
25- would exceed 1000
26- pages!). This chapter is intended to help understanding the general
27- control and data flow within thebackend from receiving a queryto
28- sending the results.
20+ backend of <productname>PostgreSQL</productname>. After having
21+ read the following sections you should have an idea of how a query
22+ is processed. This chapter does not aim to provide a detailed
23+ descriptionof the internal operation of
24+ <productname>PostgreSQL</productname>, as such a document would be
25+ very extensive. Rather, this chapter is intended to help the reader
26+ understand the general sequence of operations that occur within the
27+ backend from thepoint at which a queryis received, to the point
28+ when the results are returned to the client .
2929 </para>
3030
3131 <sect1 id="query-path">
@@ -118,23 +118,25 @@ $Header: /cvsroot/pgsql/doc/src/sgml/arch-dev.sgml,v 2.17 2003/01/19 00:13:28 mo
118118 <title>How Connections are Established</title>
119119
120120 <para>
121- <productname>PostgreSQL</productname> is implemented using a simple "process per-user"
122- client/server model. In this model there is one <firstterm>client process</firstterm>
123- connected to exactly one <firstterm>server process</firstterm>.
124- As we don't know <foreignphrase>per se</foreignphrase>
125- how many connections will be made, we have to use a <firstterm>master process</firstterm>
126- that spawns a new server process every time a connection is
127- requested. This master process is called <literal>postmaster</literal> and
128- listens at a specified TCP/IP port for incoming connections. Whenever
129- a request for a connection is detected the <literal>postmaster</literal> process
130- spawns a new server process called <literal>postgres</literal>. The server
131- tasks (<literal>postgres</literal> processes) communicate with each other using
132- <firstterm>semaphores</firstterm> and <firstterm>shared memory</firstterm>
133- to ensure data integrity
134- throughout concurrent data access. Figure
135- \ref{connection} illustrates the interaction of the master process
136- <literal>postmaster</literal> the server process <literal>postgres</literal> and a client
137- application.
121+ <productname>PostgreSQL</productname> is implemented using a
122+ simple "process per-user" client/server model. In this model
123+ there is one <firstterm>client process</firstterm> connected to
124+ exactly one <firstterm>server process</firstterm>. As we do not
125+ know ahead of time how many connections will be made, we have to
126+ use a <firstterm>master process</firstterm> that spawns a new
127+ server process every time a connection is requested. This master
128+ process is called <literal>postmaster</literal> and listens at a
129+ specified TCP/IP port for incoming connections. Whenever a request
130+ for a connection is detected the <literal>postmaster</literal>
131+ process spawns a new server process called
132+ <literal>postgres</literal>. The server tasks
133+ (<literal>postgres</literal> processes) communicate with each
134+ other using <firstterm>semaphores</firstterm> and
135+ <firstterm>shared memory</firstterm> to ensure data integrity
136+ throughout concurrent data access. Figure \ref{connection}
137+ illustrates the interaction of the master process
138+ <literal>postmaster</literal> the server process
139+ <literal>postgres</literal> and a client application.
138140 </para>
139141
140142 <para>
@@ -686,7 +688,7 @@ current context are performed.
686688 for the <literal>varno</literal> fields in the
687689 <literal>VAR</literal> nodes appearing in the <literal>mergeclauses</literal> list (and also in the
688690 <literal>targetlist</literal>) mean that not the tuples of the current node should be
689- considered but the tuples of the next" deeper" nodes (i.e. the top
691+ considered but the tuples of the next<quote> deeper</quote> nodes (i.e. the top
690692 nodes of the subplans) should be used instead.
691693 </para>
692694