</sect2>
<sect2>
- <title>Optional <parameter>heapallindexed</parameter> verification</title>
+ <title>Optional <parameter>heapallindexed</parameter> Verification</title>
<para>
When the <parameter>heapallindexed</parameter> argument to
verification functions is <literal>true</literal>, an additional
</sect2>
<sect2>
- <title>Using <filename>amcheck</filename> effectively</title>
+ <title>Using <filename>amcheck</filename> Effectively</title>
<para>
<filename>amcheck</filename> can be effective at detecting various types of
</sect2>
<sect2>
- <title>Repairing corruption</title>
+ <title>Repairing Corruption</title>
<para>
No error concerning corruption raised by <filename>amcheck</filename> should
ever be a false positive. <filename>amcheck</filename> raises
</sect1>
<sect1 id="connect-estab">
- <title>How Connections are Established</title>
+ <title>How Connections Are Established</title>
<para>
<productname>PostgreSQL</productname> is implemented using a
way. The non-exclusive method is recommended and the exclusive one is
deprecated and will eventually be removed.
</para>
+
<sect3 id="backup-lowlevel-base-backup-nonexclusive">
- <title>Making a non-exclusive low level backup</title>
+ <title>Making a Non-Exclusive Low-Level Backup</title>
<para>
A non-exclusive low level backup is one that allows other
concurrent backups to be running (both those started using
</para>
</sect3>
<sect3 id="backup-lowlevel-base-backup-exclusive">
- <title>Making an exclusive low level backup</title>
+ <title>Making an Exclusive Low-Level Backup</title>
<note>
<para>
</para>
</sect3>
<sect3 id="backup-lowlevel-base-backup-data">
- <title>Backing up the data directory</title>
+ <title>Backing Up the Data Directory</title>
<para>
Some file system backup tools emit warnings or errors
if the files they are trying to copy change while the copy proceeds.
</para>
<sect4>
- <title>libc collations</title>
+ <title>libc Collations</title>
<para>
For example, the operating system might
</sect4>
<sect4>
- <title>ICU collations</title>
+ <title>ICU Collations</title>
<para>
With ICU, it is not sensible to enumerate all possible locale names. ICU
</para>
<sect4>
- <title>libc collations</title>
+ <title>libc Collations</title>
<para>
New libc collations can be created like this:
</sect4>
<sect4>
- <title>ICU collations</title>
+ <title>ICU Collations</title>
<para>
ICU allows collations to be customized beyond the basic language+country
</indexterm>
<sect2 id="runtime-config-logging-where">
- <title>Where To Log</title>
+ <title>Where to Log</title>
<indexterm zone="runtime-config-logging-where">
<primary>where to log</primary>
</variablelist>
</sect2>
<sect2 id="runtime-config-logging-when">
- <title>When To Log</title>
+ <title>When to Log</title>
<variablelist>
</sect2>
<sect2 id="runtime-config-logging-what">
- <title>What To Log</title>
+ <title>What to Log</title>
<variablelist>
<!-- doc/src/sgml/custom-scan.sgml -->
<chapter id="custom-scan">
- <title>Writing A Custom Scan Provider</title>
+ <title>Writing a Custom Scan Provider</title>
<indexterm zone="custom-scan">
<primary>custom scan provider</primary>
<!-- doc/src/sgml/dfunc.sgml -->
<sect2 id="dfunc">
- <title>Compiling and Linking Dynamically-loaded Functions</title>
+ <title>Compiling and Linking Dynamically-Loaded Functions</title>
<para>
Before you are able to use your
</sect1>
<sect1 id="docguide-build">
- <title>Building The Documentation</title>
+ <title>Building the Documentation</title>
<para>
Once you have everything set up, change to the directory
</para>
<sect2>
- <title>Cube-based Earth Distances</title>
+ <title>Cube-Based Earth Distances</title>
<para>
Data is stored in cubes that are points (both corners are the same) using 3
</para>
<table id="earthdistance-cube-functions">
- <title>Cube-based Earthdistance Functions</title>
+ <title>Cube-Based Earthdistance Functions</title>
<tgroup cols="3">
<thead>
<row>
</sect2>
<sect2>
- <title>Point-based Earth Distances</title>
+ <title>Point-Based Earth Distances</title>
<para>
The second part of the module relies on representing Earth locations as
</para>
<table id="earthdistance-point-operators">
- <title>Point-based Earthdistance Operators</title>
+ <title>Point-Based Earthdistance Operators</title>
<tgroup cols="3">
<thead>
<row>
</sect3>
<sect3>
- <title>User-defined Base Types</title>
+ <title>User-Defined Base Types</title>
<para>
New user-defined base types are not directly supported by ECPG.
</sect2>
<sect2>
- <title>Installing Extensions using Update Scripts</title>
+ <title>Installing Extensions Using Update Scripts</title>
<para>
An extension that has been around for awhile will probably exist in
<!-- doc/src/sgml/fdwhandler.sgml -->
<chapter id="fdwhandler">
- <title>Writing A Foreign Data Wrapper</title>
+ <title>Writing a Foreign Data Wrapper</title>
<indexterm zone="fdwhandler">
<primary>foreign data wrapper</primary>
</para>
<sect2 id="fdw-callbacks-scan">
- <title>FDW Routines For Scanning Foreign Tables</title>
+ <title>FDW Routines for Scanning Foreign Tables</title>
<para>
<programlisting>
</sect2>
<sect2 id="fdw-callbacks-join-scan">
- <title>FDW Routines For Scanning Foreign Joins</title>
+ <title>FDW Routines for Scanning Foreign Joins</title>
<para>
If an FDW supports performing foreign joins remotely (rather than
</sect2>
<sect2 id="fdw-callbacks-upper-planning">
- <title>FDW Routines For Planning Post-Scan/Join Processing</title>
+ <title>FDW Routines for Planning Post-Scan/Join Processing</title>
<para>
If an FDW supports performing remote post-scan/join processing, such as
</sect2>
<sect2 id="fdw-callbacks-update">
- <title>FDW Routines For Updating Foreign Tables</title>
+ <title>FDW Routines for Updating Foreign Tables</title>
<para>
If an FDW supports writable foreign tables, it should provide
</sect2>
<sect2 id="fdw-callbacks-row-locking">
- <title>FDW Routines For Row Locking</title>
+ <title>FDW Routines for Row Locking</title>
<para>
If an FDW wishes to support <firstterm>late row locking</firstterm> (as described
</sect2>
<sect2 id="fdw-callbacks-import">
- <title>FDW Routines For <command>IMPORT FOREIGN SCHEMA</command></title>
+ <title>FDW Routines for <command>IMPORT FOREIGN SCHEMA</command></title>
<para>
<programlisting>
</sect2>
<sect2 id="fdw-callbacks-reparameterize-paths">
- <title>FDW Routines For reparameterization of paths</title>
+ <title>FDW Routines for Reparameterization of Paths</title>
<para>
<programlisting>
</para>
<sect2 id="functions-xml-limits-xpath1">
- <title>Queries are restricted to XPath 1.0</title>
+ <title>Queries Are Restricted to XPath 1.0</title>
<para>
The <productname>PostgreSQL</productname>-specific functions
</sect3>
<sect3 id="functions-xml-limits-casts">
- <title>Mappings between SQL and XML data types and values</title>
+ <title>Mappings between SQL and XML Data Types and Values</title>
<para>
In SQL:2006 and later, both directions of conversion between standard SQL
</para>
<sect3>
- <title>Only <literal>BY VALUE</literal> passing mechanism is supported</title>
+ <title>Only <literal>BY VALUE</literal> Passing Mechanism Is Supported</title>
<para>
The SQL standard defines two <firstterm>passing mechanisms</firstterm>
</sect3>
<sect3>
- <title>Cannot pass named parameters to queries</title>
+ <title>Cannot Pass Named Parameters to Queries</title>
<para>
The XPath-based functions support passing one parameter to serve as the
</sect3>
<sect3>
- <title>No <type>XML(SEQUENCE)</type> type</title>
+ <title>No <type>XML(SEQUENCE)</type> Type</title>
<para>
The <productname>PostgreSQL</productname> <type>xml</type> data type
</para>
<table id="posix-character-entry-escapes-table">
- <title>Regular Expression Character-entry Escapes</title>
+ <title>Regular Expression Character-Entry Escapes</title>
<tgroup cols="2">
<thead>
</para>
<table id="posix-class-shorthand-escapes-table">
- <title>Regular Expression Class-shorthand Escapes</title>
+ <title>Regular Expression Class-Shorthand Escapes</title>
<tgroup cols="2">
<thead>
</para>
<table id="posix-embedded-options-table">
- <title>ARE Embedded-option Letters</title>
+ <title>ARE Embedded-Option Letters</title>
<tgroup cols="2">
<thead>
</sect2>
<sect2>
- <title>Single-row Comparison</title>
+ <title>Single-Row Comparison</title>
<indexterm zone="functions-subquery">
<primary>comparison</primary>
</para>
<table id="functions-commit-timestamp">
- <title>Committed transaction information</title>
+ <title>Committed Transaction Information</title>
<tgroup cols="3">
<thead>
<row><entry>Name</entry> <entry>Return Type</entry> <entry>Description</entry></row>
</para>
<table id="functions-event-trigger-table-rewrite">
- <title>Table Rewrite information</title>
+ <title>Table Rewrite Information</title>
<tgroup cols="3">
<thead>
<row><entry>Name</entry> <entry>Return Type</entry> <entry>Description</entry></row>
</para>
<sect2 id="functions-statistics-mcv">
- <title>Inspecting MCV lists</title>
+ <title>Inspecting MCV Lists</title>
<indexterm>
<primary>pg_mcv_list_items</primary>
<title>Implementation</title>
<sect2 id="gist-buffering-build">
- <title>GiST buffering build</title>
+ <title>GiST Buffering Build</title>
<para>
Building large GiST indexes by simply inserting all the tuples tends to be
slow, because if the index tuples are scattered across the index and the
protection. Replication slots overcome these disadvantages.
</para>
<sect3 id="streaming-replication-slots-manipulation">
- <title>Querying and manipulating replication slots</title>
+ <title>Querying and Manipulating Replication Slots</title>
<para>
Each replication slot has a name, which can contain lower-case letters,
numbers, and the underscore character.
</sect2>
<sect2 id="continuous-archiving-in-standby">
- <title>Continuous archiving in standby</title>
+ <title>Continuous Archiving in Standby</title>
<indexterm>
<primary>continuous archiving</primary>
</sect2>
<sect2 id="warm-standby-record">
- <title>Record-based Log Shipping</title>
+ <title>Record-Based Log Shipping</title>
<para>
It is also possible to implement record-based log shipping using this
</sect2>
<sect2>
- <title>Special Considerations for 64-bit Windows</title>
+ <title>Special Considerations for 64-Bit Windows</title>
<para>
PostgreSQL will only build for the x64 architecture on 64-bit Windows, there
</sect1>
<sect1 id="install-getsource">
- <title>Getting The Source</title>
+ <title>Getting the Source</title>
<para>
The <productname>PostgreSQL</productname> &version; sources can be obtained from the
</sect1>
<sect1 id="installation-platform-notes">
- <title>Platform-specific Notes</title>
+ <title>Platform-Specific Notes</title>
<para>
This section documents additional platform-specific issues
</para>
<sect1 id="intro-whatis">
- <title> What is <productname>PostgreSQL</productname>?</title>
+ <title> What Is <productname>PostgreSQL</productname>?</title>
<para>
<productname>PostgreSQL</productname> is an object-relational
</para>
<sect1 id="jit-reason">
- <title>What is <acronym>JIT</acronym> compilation?</title>
+ <title>What Is <acronym>JIT</acronym> compilation?</title>
<para>
Just-in-Time (<acronym>JIT</acronym>) compilation is the process of turning
</para>
<table id="json-type-mapping-table">
- <title>JSON primitive types and corresponding <productname>PostgreSQL</productname> types</title>
+ <title>JSON Primitive Types and Corresponding <productname>PostgreSQL</productname> Types</title>
<tgroup cols="3">
<thead>
<row>
</sect2>
<sect2 id="json-doc-design">
- <title>Designing JSON documents effectively</title>
+ <title>Designing JSON Documents Effectively</title>
<para>
Representing data as JSON can be considerably more flexible than
the traditional relational data model, which is compelling in
</sect1>
<sect1 id="libpq-single-row-mode">
- <title>Retrieving Query Results Row-By-Row</title>
+ <title>Retrieving Query Results Row-by-Row</title>
<indexterm zone="libpq-single-row-mode">
<primary>libpq</primary>
</para>
<table id="limits-table">
- <title><productname>PostgreSQL</productname> limitations</title>
+ <title><productname>PostgreSQL</productname> Limitations</title>
<tgroup cols="3">
<thead>
<row>
</sect1>
<sect1 id="lo-funcs">
-<title>Server-side Functions</title>
+<title>Server-Side Functions</title>
<para>
Server-side functions tailored for manipulating large objects from SQL are
</para>
<table id="lo-funcs-table">
- <title>SQL-oriented Large Object Functions</title>
+ <title>SQL-Oriented Large Object Functions</title>
<tgroup cols="5">
<thead>
<row>
</sect2>
<sect2 id="vacuum-for-visibility-map">
- <title>Updating The Visibility Map</title>
+ <title>Updating the Visibility Map</title>
<para>
Vacuum maintains a <link linkend="storage-vm">visibility map</link> for each
</table>
<table id="create-index-phases">
- <title>CREATE INDEX phases</title>
+ <title>CREATE INDEX Phases</title>
<tgroup cols="2">
<thead>
<row>
</table>
<table id="vacuum-phases">
- <title>VACUUM phases</title>
+ <title>VACUUM Phases</title>
<tgroup cols="2">
<thead>
<row>
</table>
<table id="cluster-phases">
- <title>CLUSTER and VACUUM FULL phases</title>
+ <title>CLUSTER and VACUUM FULL Phases</title>
<tgroup cols="2">
<thead>
<row>
</para>
<sect2 id="locking-tables">
- <title>Table-level Locks</title>
+ <title>Table-Level Locks</title>
<indexterm zone="locking-tables">
<primary>LOCK</primary>
</para>
<variablelist>
- <title>Table-level Lock Modes</title>
+ <title>Table-Level Lock Modes</title>
<varlistentry>
<term>
<literal>ACCESS SHARE</literal>
</sect2>
<sect2 id="locking-rows">
- <title>Row-level Locks</title>
+ <title>Row-Level Locks</title>
<para>
In addition to table-level locks, there are row-level locks, which
</para>
<variablelist>
- <title>Row-level Lock Modes</title>
+ <title>Row-Level Lock Modes</title>
<varlistentry>
<term>
<literal>FOR UPDATE</literal>
</para>
<table tocentry="1" id="row-lock-compatibility">
- <title>Conflicting Row-level Locks</title>
+ <title>Conflicting Row-Level Locks</title>
<tgroup cols="5">
<colspec colnum="2" colname="lockst"/>
<colspec colnum="5" colname="lockend"/>
</sect2>
<sect2 id="locking-pages">
- <title>Page-level Locks</title>
+ <title>Page-Level Locks</title>
<para>
In addition to table and row locks, page-level share/exclusive locks are
</para>
<sect2 id="serializable-consistency">
- <title>Enforcing Consistency With Serializable Transactions</title>
+ <title>Enforcing Consistency with Serializable Transactions</title>
<para>
If the Serializable transaction isolation level is used for all writes
</sect2>
<sect2 id="non-serializable-consistency">
- <title>Enforcing Consistency With Explicit Blocking Locks</title>
+ <title>Enforcing Consistency with Explicit Blocking Locks</title>
<para>
When non-serializable writes are possible,
</sect2>
<sect2 id="nls-guidelines">
- <title>Message-writing Guidelines</title>
+ <title>Message-Writing Guidelines</title>
<para>
Here are some guidelines for writing messages that are easily
</sect2>
<sect2>
- <title>B-tree Functions</title>
+ <title>B-Tree Functions</title>
<variablelist>
<varlistentry>
</sect3>
<sect3>
- <title>Multivariate MCV lists</title>
+ <title>Multivariate MCV Lists</title>
<para>
Another type of statistics stored for each column are most-common value
</sect2>
<sect2 id="populate-pg-dump">
- <title>Some Notes About <application>pg_dump</application></title>
+ <title>Some Notes about <application>pg_dump</application></title>
<para>
Dump scripts generated by <application>pg_dump</application> automatically apply
</sect2>
<sect2 id="mcv-lists">
- <title>MCV lists</title>
+ <title>MCV Lists</title>
<para>
As explained in <xref linkend="functional-dependencies"/>, functional
<!-- doc/src/sgml/plhandler.sgml -->
<chapter id="plhandler">
- <title>Writing A Procedural Language Handler</title>
+ <title>Writing a Procedural Language Handler</title>
<indexterm zone="plhandler">
<primary>procedural language</primary>
</sect2>
<sect2 id="plpgsql-statements-sql-noresult">
- <title>Executing a Command With No Result</title>
+ <title>Executing a Command with No Result</title>
<para>
For any SQL command that does not return rows, for example
</sect2>
<sect2 id="plpgsql-statements-sql-onerow">
- <title>Executing a Query with a Single-row Result</title>
+ <title>Executing a Query with a Single-Row Result</title>
<indexterm zone="plpgsql-statements-sql-onerow">
<primary>SELECT INTO</primary>
</note>
<example id="plpgsql-quote-literal-example">
- <title>Quoting Values In Dynamic Queries</title>
+ <title>Quoting Values in Dynamic Queries</title>
<indexterm>
<primary>quote_ident</primary>
</sect2>
<sect2 id="plpgsql-statements-returning-procedure">
- <title>Returning From a Procedure</title>
+ <title>Returning from a Procedure</title>
<para>
A procedure does not have a return value. A procedure can therefore end
</sect2>
<sect2 id="plpgsql-records-iterating">
- <title>Looping Through Query Results</title>
+ <title>Looping through Query Results</title>
<para>
Using a different type of <literal>FOR</literal> loop, you can iterate through
</sect2>
<sect2 id="plpgsql-foreach-array">
- <title>Looping Through Arrays</title>
+ <title>Looping through Arrays</title>
<para>
The <literal>FOREACH</literal> loop is much like a <literal>FOR</literal> loop,
</example>
<sect3 id="plpgsql-exception-diagnostics">
- <title>Obtaining Information About an Error</title>
+ <title>Obtaining Information about an Error</title>
<para>
Exception handlers frequently need to identify the specific error that
</sect2>
<sect2 id="plpgsql-cursor-for-loop">
- <title>Looping Through a Cursor's Result</title>
+ <title>Looping through a Cursor's Result</title>
<para>
There is a variant of the <command>FOR</command> statement that allows
</para>
<example id="plpgsql-trigger-audit-example">
- <title>A <application>PL/pgSQL</application> Trigger Function For Auditing</title>
+ <title>A <application>PL/pgSQL</application> Trigger Function for Auditing</title>
<para>
This example trigger ensures that any insert, update or delete of a row
</para>
<example id="plpgsql-view-trigger-audit-example">
- <title>A <application>PL/pgSQL</application> View Trigger Function For Auditing</title>
+ <title>A <application>PL/pgSQL</application> View Trigger Function for Auditing</title>
<para>
This example uses a trigger on the view to make it updatable, and
<example id="plpgsql-trigger-summary-example">
- <title>A <application>PL/pgSQL</application> Trigger Function For Maintaining A Summary Table</title>
+ <title>A <application>PL/pgSQL</application> Trigger Function for Maintaining a Summary Table</title>
<para>
The schema detailed here is partly based on the <emphasis>Grocery Store
</sect1>
<sect1 id="plpgsql-implementation">
- <title><application>PL/pgSQL</application> Under the Hood</title>
+ <title><application>PL/pgSQL</application> under the Hood</title>
<para>
This section discusses some implementation details that are
</sect2>
<sect2 id="plpgsql-extra-checks">
- <title>Additional Compile-time and Run-time Checks</title>
+ <title>Additional Compile-Time and Run-Time Checks</title>
<para>
To aid the user in finding instances of simple but common problems before
</sect2>
<sect2>
- <title>Set-returning Functions</title>
+ <title>Set-Returning Functions</title>
<para>
A <application>PL/Python</application> function can also return sets of
scalar or composite types. There are several ways to achieve this because
</para>
<sect2 id="sasl-scram-sha-256">
- <title>SCRAM-SHA-256 authentication</title>
+ <title>SCRAM-SHA-256 Authentication</title>
<para>
The implemented SASL mechanisms at the moment
</refsect2>
<refsect2>
- <title>Non-deferred Uniqueness Constraints</title>
+ <title>Non-Deferred Uniqueness Constraints</title>
<para>
When a <literal>UNIQUE</literal> or <literal>PRIMARY KEY</literal> constraint is
</refsect2>
<refsect2>
- <title>Zero-column Tables</title>
+ <title>Zero-Column Tables</title>
<para>
<productname>PostgreSQL</productname> allows a table of no columns
</para>
<refsect2>
- <title>How it works</title>
+ <title>How It Works</title>
<para>
The basic idea is to copy all file system-level changes from the source
<title>Notes</title>
<refsect2>
- <title>What is the <quote>Transaction</quote> Actually Performed in <application>pgbench</application>?</title>
+ <title>What Is the <quote>Transaction</quote> Actually Performed in <application>pgbench</application>?</title>
<para>
<application>pgbench</application> executes test scripts chosen randomly
</refsect2>
<refsect2 id="pgbench-builtin-operators">
- <title>Built-In Operators</title>
+ <title>Built-in Operators</title>
<para>
The arithmetic, bitwise, comparison and logical operators listed in
</para>
<table id="pgbench-operators">
- <title>pgbench Operators by increasing precedence</title>
+ <title>pgbench Operators by Increasing Precedence</title>
<tgroup cols="4">
<thead>
<row>
<title>Usage</title>
<refsect2>
- <title>Interpreting results</title>
+ <title>Interpreting Results</title>
<para>
Good results will show most (>90%) individual timing calls take less than
</refsect2>
<refsect2>
- <title>Measuring executor timing overhead</title>
+ <title>Measuring Executor Timing Overhead</title>
<para>
When the query executor is running a statement using
</refsect2>
<refsect2>
- <title>Changing time sources</title>
+ <title>Changing Time Sources</title>
<para>
On some newer Linux systems, it's possible to change the clock source used
to collect timing data at any time. A second example shows the slowdown
</refsect2>
<refsect2>
- <title>Clock hardware and timing accuracy</title>
+ <title>Clock Hardware and Timing Accuracy</title>
<para>
Collecting accurate timing information is normally done on computers using
</step>
<step id="pgupgrade-step-replicas">
- <title>Upgrade Streaming Replication and Log-Shipping standby servers</title>
+ <title>Upgrade streaming replication and log-shipping standby servers</title>
<para>
If you used link mode and have Streaming Replication (see <xref
</step>
<step>
- <title>Post-Upgrade processing</title>
+ <title>Post-upgrade processing</title>
<para>
If any post-upgrade processing is required, pg_upgrade will issue
</refsect2>
<refsect2>
- <title>Semi-internal Options</title>
+ <title>Semi-Internal Options</title>
<para>
The options described here are used
</sect1>
<sect1 id="gssapi-enc">
- <title>Secure TCP/IP Connections with GSSAPI encryption</title>
+ <title>Secure TCP/IP Connections with GSSAPI Encryption</title>
<indexterm zone="gssapi-enc">
<primary>gssapi</primary>
</para>
<sect1 id="git">
- <title>Getting The Source via <productname>Git</productname></title>
+ <title>Getting the Source via <productname>Git</productname></title>
<para>
With <productname>Git</productname> you will make a copy of the entire code repository
</sect2>
<sect2 id="spgist-all-the-same">
- <title><quote>All-the-same</quote> Inner Tuples</title>
+ <title><quote>All-the-Same</quote> Inner Tuples</title>
<para>
The <acronym>SP-GiST</acronym> core can override the results of the
</para>
<sect2 id="storage-toast-ondisk">
- <title>Out-of-line, on-disk TOAST storage</title>
+ <title>Out-of-Line, On-Disk TOAST Storage</title>
<para>
If any of the columns of a table are <acronym>TOAST</acronym>-able, the table will
</sect2>
<sect2 id="storage-toast-inmemory">
- <title>Out-of-line, in-memory TOAST storage</title>
+ <title>Out-of-Line, In-Memory TOAST Storage</title>
<para>
<acronym>TOAST</acronym> pointers can point to data that is not on disk, but is
</sect3>
<sect3 id="sql-syntax-strings-escape">
- <title>String Constants with C-style Escapes</title>
+ <title>String Constants with C-Style Escapes</title>
<indexterm zone="sql-syntax-strings-escape">
<primary>escape string syntax</primary>
</sect3>
<sect3 id="sql-syntax-dollar-quoting">
- <title>Dollar-quoted String Constants</title>
+ <title>Dollar-Quoted String Constants</title>
<indexterm>
<primary>dollar quoting</primary>
</sect3>
<sect3 id="sql-syntax-bit-strings">
- <title>Bit-string Constants</title>
+ <title>Bit-String Constants</title>
<indexterm zone="sql-syntax-bit-strings">
<primary>bit string</primary>
<!-- doc/src/sgml/tablesample-method.sgml -->
<chapter id="tablesample-method">
- <title>Writing A Table Sampling Method</title>
+ <title>Writing a Table Sampling Method</title>
<indexterm zone="tablesample-method">
<primary>table sampling method</primary>
<!-- doc/src/sgml/xaggr.sgml -->
<sect1 id="xaggr">
- <title>User-defined Aggregates</title>
+ <title>User-Defined Aggregates</title>
<indexterm zone="xaggr">
<primary>aggregate function</primary>
<!-- doc/src/sgml/xfunc.sgml -->
<sect1 id="xfunc">
- <title>User-defined Functions</title>
+ <title>User-Defined Functions</title>
<indexterm zone="xfunc">
<primary>function</primary>
</sect1>
<sect1 id="xproc">
- <title>User-defined Procedures</title>
+ <title>User-Defined Procedures</title>
<indexterm zone="xproc">
<primary>procedure</primary>
&dfunc;
<sect2>
- <title>Composite-type Arguments</title>
+ <title>Composite-Type Arguments</title>
<para>
Composite types do not have a fixed layout like C structures.
<!-- doc/src/sgml/xindex.sgml -->
<sect1 id="xindex">
- <title>Interfacing Extensions To Indexes</title>
+ <title>Interfacing Extensions to Indexes</title>
<indexterm zone="xindex">
<primary>index</primary>
</para>
<table tocentry="1" id="xindex-btree-strat-table">
- <title>B-tree Strategies</title>
+ <title>B-Tree Strategies</title>
<tgroup cols="2">
<thead>
<row>
</para>
<table tocentry="1" id="xindex-btree-support-table">
- <title>B-tree Support Functions</title>
+ <title>B-Tree Support Functions</title>
<tgroup cols="2">
<thead>
<row>
<!-- doc/src/sgml/xoper.sgml -->
<sect1 id="xoper">
- <title>User-defined Operators</title>
+ <title>User-Defined Operators</title>
<indexterm zone="xoper">
<primary>operator</primary>
<!-- doc/src/sgml/xtypes.sgml -->
<sect1 id="xtypes">
- <title>User-defined Types</title>
+ <title>User-Defined Types</title>
<indexterm zone="xtypes">
<primary>data type</primary>