</para>
<para>
- <structfield>bgw_flags</> is a bitwise-or'd bitmask indicating the
+ <structfield>bgw_flags</> is a bitwise-or'd bit mask indicating the
capabilities that the module wants. Possible values are
<literal>BGWORKER_SHMEM_ACCESS</literal> (requesting shared memory access)
and <literal>BGWORKER_BACKEND_DATABASE_CONNECTION</literal> (requesting the
passed at registration time. <structfield>bgw_main</structfield> may be
NULL; in that case, <structfield>bgw_library_name</structfield> and
<structfield>bgw_function_name</structfield> will be used to determine
- the entrypoint. This is useful for background workers launched after
+ the entry point. This is useful for background workers launched after
postmaster startup, where the postmaster does not have the requisite
library loaded.
</para>
<para>
<structfield>bgw_library_name</structfield> is the name of a library in
- which the initial entrypoint for the background worker should be sought.
+ which the initial entry point for the background worker should be sought.
It is ignored unless <structfield>bgw_main</structfield> is NULL.
But if <structfield>bgw_main</structfield> is NULL, then the named library
will be dynamically loaded by the worker process and
<para>
<structfield>bgw_function_name</structfield> is the name of a function in
- a dynamically loaded library which should be used as the initial entrypoint
+ a dynamically loaded library which should be used as the initial entry point
for a new background worker. It is ignored unless
<structfield>bgw_main</structfield> is NULL.
</para>
<entry><structfield>aggfinalextra</structfield></entry>
<entry><type>bool</type></entry>
<entry></entry>
- <entry>True to pass extra dummy arguments to aggfinalfn</entry>
+ <entry>True to pass extra dummy arguments to <structfield>aggfinalfn</structfield></entry>
</row>
<row>
<entry><structfield>aggmfinalextra</structfield></entry>
<entry><type>bool</type></entry>
<entry></entry>
- <entry>True to pass extra dummy arguments to aggmfinalfn</entry>
+ <entry>True to pass extra dummy arguments to <structfield>aggmfinalfn</structfield></entry>
</row>
<row>
<entry><structfield>aggsortop</structfield></entry>
<entry><structfield>amopsortfamily</structfield></entry>
<entry><type>oid</type></entry>
<entry><literal><link linkend="catalog-pg-opfamily"><structname>pg_opfamily</structname></link>.oid</literal></entry>
- <entry>The btree operator family this entry sorts according to, if an
+ <entry>The B-tree operator family this entry sorts according to, if an
ordering operator; zero if a search operator</entry>
</row>
<replaceable>indexed_column</>
<replaceable>operator</>
<replaceable>constant</>.
- Obviously, such an operator must return boolean, and its left-hand input
+ Obviously, such an operator must return <type>boolean</type>, and its left-hand input
type must match the index's column data type.
</para>
its left-hand input type must match the index's column data type.
The exact semantics of the <literal>ORDER BY</> are specified by the
<structfield>amopsortfamily</structfield> column, which must reference
- a btree operator family for the operator's result type.
+ a B-tree operator family for the operator's result type.
</para>
<note>
<para>
At present, it's assumed that the sort order for an ordering operator
- is the default for the referenced opfamily, i.e., <literal>ASC NULLS
+ is the default for the referenced operator family, i.e., <literal>ASC NULLS
LAST</>. This might someday be relaxed by adding additional columns
to specify sort options explicitly.
</para>
these match the input data type(s) of the support procedure itself, for
others not. There is a notion of <quote>default</> support procedures for
an index, which are those with <structfield>amproclefttype</> and
- <structfield>amprocrighttype</> both equal to the index opclass's
+ <structfield>amprocrighttype</> both equal to the index operator class's
<structfield>opcintype</>.
</para>
<literal>d</> = default (primary key, if any),
<literal>n</> = nothing,
<literal>f</> = all columns
- <literal>i</> = index with indisreplident set, or default
+ <literal>i</> = index with <structfield>indisreplident</structfield> set, or default
</entry>
</row>
<entry><structfield>plugin</structfield></entry>
<entry><type>name</type></entry>
<entry></entry>
- <entry>The basename of the shared object containing the output plugin this logical slot is using, or null for physical slots.</entry>
+ <entry>The base name of the shared object containing the output plugin this logical slot is using, or null for physical slots.</entry>
</row>
<row>
<entry><structfield>datoid</structfield></entry>
<entry><type>oid</type></entry>
<entry><literal><link linkend="catalog-pg-database"><structname>pg_database</structname></link>.oid</literal></entry>
- <entry>The oid of the database this slot is associated with, or
+ <entry>The OID of the database this slot is associated with, or
null. Only logical slots have an associated database.</entry>
</row>
<para>
The name of a standby server for this purpose is the
<varname>application_name</> setting of the standby, as set in the
- <varname>primary_conninfo</> of the standby's walreceiver. There is
+ <varname>primary_conninfo</> of the standby's WAL receiver. There is
no mechanism to enforce uniqueness. In case of duplicates one of the
matching standbys will be chosen to be the synchronous standby, though
exactly which one is indeterminate.
<para>
The <type>pg_lsn</type> data type can be used to store LSN (Log Sequence
Number) data which is a pointer to a location in the XLOG. This type is a
- representation of XLogRecPtr and an internal system type of
+ representation of <type>XLogRecPtr</type> and an internal system type of
<productname>PostgreSQL</productname>.
</para>
<literal>plan</> is the <structname>ModifyTable</> plan node, which is
complete except for the <structfield>fdwPrivLists</> field.
<literal>resultRelation</> identifies the target foreign table by its
- rangetable index. <literal>subplan_index</> identifies which target of
+ range table index. <literal>subplan_index</> identifies which target of
the <structname>ModifyTable</> plan node this is, counting from zero;
use this if you want to index into <literal>plan->plans</> or other
substructure of the <literal>plan</> node.
<literal>rinfo</> is the <structname>ResultRelInfo</> struct describing
the target foreign table.
<literal>slot</> contains the tuple to be inserted; it will match the
- rowtype definition of the foreign table.
+ row-type definition of the foreign table.
<literal>planSlot</> contains the tuple that was generated by the
<structname>ModifyTable</> plan node's subplan; it differs from
<literal>slot</> in possibly containing additional <quote>junk</>
<literal>rinfo</> is the <structname>ResultRelInfo</> struct describing
the target foreign table.
<literal>slot</> contains the new data for the tuple; it will match the
- rowtype definition of the foreign table.
+ row-type definition of the foreign table.
<literal>planSlot</> contains the tuple that was generated by the
<structname>ModifyTable</> plan node's subplan; it differs from
<literal>slot</> in possibly containing additional <quote>junk</>
</programlisting>
Report which update operations the specified foreign table supports.
- The return value should be a bitmask of rule event numbers indicating
+ The return value should be a bit mask of rule event numbers indicating
which operations are supported by the foreign table, using the
<literal>CmdType</> enumeration; that is,
<literal>(1 << CMD_UPDATE) = 4</> for <command>UPDATE</>,
<para>
<xref linkend="functions-json-op-table"> shows the operators that
- are available for use with the two JSON datatypes (see <xref
+ are available for use with the two JSON data types (see <xref
linkend="datatype-json">).
</para>
The standard comparison operators shown in <xref
linkend="functions-comparison-table"> are available for
<type>jsonb</type>, but not for <type>json</type>. They follow the
- ordering rules for btree operations outlined at <xref
+ ordering rules for B-tree operations outlined at <xref
linkend="json-indexing">.
</para>
<para>
(recursively) to arrays and objects; otherwise, if there is a cast
from the type to <type>json</type>, the cast function will be used to
perform the conversion; otherwise, a JSON scalar value is produced.
- For any scalar type other than a number, a boolean, or a null value,
+ For any scalar type other than a number, a Boolean, or a null value,
the text representation will be used, properly quoted and escaped
so that it is a valid JSON string.
</entry>
These operators compare the internal binary representation of the two
rows. Two rows might have a different binary representation even
though comparisons of the two rows with the equality operator is true.
- The ordering of rows under these comparision operators is deterministic
+ The ordering of rows under these comparison operators is deterministic
but not otherwise meaningful. These operators are used internally for
materialized views and might be useful for other specialized purposes
such as replication but are not intended to be generally useful for
<row>
<entry><literal><function>to_regclass(<parameter>rel_name</parameter>)</function></literal></entry>
<entry><type>regclass</type></entry>
- <entry>get the oid of the named relation</entry>
+ <entry>get the OID of the named relation</entry>
</row>
<row>
<entry><literal><function>to_regproc(<parameter>func_name</parameter>)</function></literal></entry>
<entry><type>regproc</type></entry>
- <entry>get the oid of the named function</entry>
+ <entry>get the OID of the named function</entry>
</row>
<row>
<entry><literal><function>to_regprocedure(<parameter>func_name</parameter>)</function></literal></entry>
<entry><type>regprocedure</type></entry>
- <entry>get the oid of the named function</entry>
+ <entry>get the OID of the named function</entry>
</row>
<row>
<entry><literal><function>to_regoper(<parameter>operator_name</parameter>)</function></literal></entry>
<entry><type>regoper</type></entry>
- <entry>get the oid of the named operator</entry>
+ <entry>get the OID of the named operator</entry>
</row>
<row>
<entry><literal><function>to_regoperator(<parameter>operator_name</parameter>)</function></literal></entry>
<entry><type>regoperator</type></entry>
- <entry>get the oid of the named operator</entry>
+ <entry>get the OID of the named operator</entry>
</row>
<row>
<entry><literal><function>to_regtype(<parameter>type_name</parameter>)</function></literal></entry>
<entry><type>regtype</type></entry>
- <entry>get the oid of the named type</entry>
+ <entry>get the OID of the named type</entry>
</row>
</tbody>
</tgroup>
<entry>
Creates a new physical replication slot named
<parameter>slot_name</parameter>. Streaming changes from a physical slot
- is only possible with the walsender protocol - see <xref
- linkend="protocol-replication">. Corresponds to the walsender protocol
+ is only possible with the streaming-replication protocol - see <xref
+ linkend="protocol-replication">. Corresponds to the replication protocol
command <literal>CREATE_REPLICATION_SLOT ... PHYSICAL</literal>.
</entry>
</row>
</entry>
<entry>
Drops the physical or logical replication slot
- named <parameter>slot_name</parameter>. Same as walsender protocol
+ named <parameter>slot_name</parameter>. Same as replication protocol
command <literal>DROP_REPLICATION_SLOT</>.
</entry>
</row>
might want to make adjustments to handle the period when
<varname>hot_standby_feedback</> feedback is not being provided.
For example, consider increasing <varname>max_standby_archive_delay</>
- so that queries are not rapidly cancelled by conflicts in WAL archive
+ so that queries are not rapidly canceled by conflicts in WAL archive
files during disconnected periods. You should also consider increasing
<varname>max_standby_streaming_delay</> to avoid rapid cancellations
by newly-arrived streaming WAL entries after reconnection.
void
ambuildempty (Relation indexRelation);
</programlisting>
- Build an empty index, and write it to the initialization fork (INIT_FORKNUM)
+ Build an empty index, and write it to the initialization fork (<symbol>INIT_FORKNUM</symbol>)
of the given relation. This method is called only for unlogged tables; the
empty index written to the initialization fork will be copied over the main
relation fork on each server restart.
</programlisting>
Check whether the index can support <firstterm>index-only scans</> by
returning the indexed column values for an index entry in the form of an
- IndexTuple. Return TRUE if so, else FALSE. If the index AM can never
+ <structname>IndexTuple</structname>. Return TRUE if so, else FALSE. If the index AM can never
support index-only scans (an example is hash, which stores only
the hash values not the original data), it is sufficient to set its
<structfield>amcanreturn</> field to zero in <structname>pg_am</>.
keys or key/value pairs occurring within a large number of
<type>jsonb</> documents (datums).
Two GIN <quote>operator classes</> are provided, offering different
- performance and flexibility tradeoffs.
+ performance and flexibility trade-offs.
</para>
<para>
The default GIN operator class for <type>jsonb</> supports queries with
</para>
<para>
- If any parameter is NULL or an emptry string, the corresponding
+ If any parameter is <symbol>NULL</symbol> or an emptry string, the corresponding
environment variable (see <xref linkend="libpq-envars">) is checked.
If the environment variable is not set either, then the indicated
built-in defaults are used.
</indexterm>
<para>
An output plugin is loaded by dynamically loading a shared library with
- the output plugin's name as the library basename. The normal library
+ the output plugin's name as the library base name. The normal library
search path is used to locate the library. To provide the required output
plugin callbacks and to indicate that the library is actually an output
plugin it needs to provide a function named
various callbacks it needs to provide.
</para>
<para>
- Concurrent transactions are decoded in commit order and only changes
- belonging to a specific transaction are decoded inbetween
+ Concurrent transactions are decoded in commit order, and only changes
+ belonging to a specific transaction are decoded between
the <literal>begin</literal> and <literal>commit</literal>
callbacks. Transactions that were rolled back explicitly or implicitly
never get
<title>Transaction Begin Callback</title>
<para>
The required <function>begin_cb</function> callback is called whenever a
- start of a commited transaction has been decoded. Aborted transactions
+ start of a committed transaction has been decoded. Aborted transactions
and their contents never get decoded.
<programlisting>
typedef void (*LogicalDecodeBeginCB) (
);
</programlisting>
The <parameter>txn</parameter> parameter contains meta information about
- the transaction, like the timestamp at which it has been committed and
+ the transaction, like the time stamp at which it has been committed and
its XID.
</para>
</sect3>
individual row modification inside a transaction, may it be
an <command>INSERT</command>, <command>UPDATE</command>
or <command>DELETE</command>. Even if the original command modified
- several rows at once the callback will be called indvidually for each
+ several rows at once the callback will be called individually for each
row.
<programlisting>
typedef void (*LogicalDecodeChangeCB) (
<row>
<entry><structfield>backend_xid</structfield></entry>
<entry><type>xid</type></entry>
- <entry>Toplevel transaction identifier of this backend, if any.</entry>
+ <entry>Top-level transaction identifier of this backend, if any.</entry>
</row>
<row>
<entry><structfield>backend_xmin</structfield></entry>
<para>
Notice that here the planner has chosen to <quote>materialize</> the inner
relation of the join, by putting a Materialize plan node atop it. This
- means that the <literal>t2</> indexscan will be done just once, even
+ means that the <literal>t2</> index scan will be done just once, even
though the nested-loop join node needs to read that data ten times, once
for each row from the outer relation. The Materialize node saves the data
in memory as it's read, and then returns the data from memory on each
<para>
For security reasons, non-superusers are not allowed to see the SQL
- text or queryid of queries executed by other users. They can see
+ text or <structfield>queryid</structfield> of queries executed by other users. They can see
the statistics, however, if the view has been installed in their
database.
</para>
<row>
<entry><literal>PG_DATATYPE_NAME</literal></entry>
<entry>text</entry>
- <entry>the name of datatype related to exception</entry>
+ <entry>the name of data type related to exception</entry>
</row>
<row>
<entry><literal>MESSAGE_TEXT</literal></entry>
<para>
To initiate streaming replication, the frontend sends the
-<literal>replication</> parameter in the startup message. A boolean value
+<literal>replication</> parameter in the startup message. A Boolean value
of <literal>true</> tells the backend to go into walsender mode, wherein a
small set of replication commands can be issued instead of SQL statements. Only
the simple query protocol can be used in walsender mode.
Table functions may also be combined using the <literal>ROWS FROM</>
syntax, with the results returned in parallel columns; the number of
result rows in this case is that of the largest function result, with
- smaller results padded with NULLs to match.
+ smaller results padded with null values to match.
</para>
<synopsis>
on master and the time on the current standby. Delays
in transfer because of networks or cascading replication configurations
may reduce the actual wait time significantly. If the system
- clocks on master and standby are not synchronised, this may lead to
+ clocks on master and standby are not synchronized, this may lead to
recovery applying records earlier than expected; but that is not a
major issue because useful settings of the parameter are much larger
than typical time deviations between servers. Be careful to allow for
</para>
<para>
This parameter is intended for use with streaming replication deployments,
- however, if the parameter is specified it will be honoured in all cases.
+ however, if the parameter is specified it will be honored in all cases.
Synchronous replication is not affected by this setting because there is
not yet any setting to request synchronous apply of transaction commits.
<varname>hot_standby_feedback</> will be delayed by use of this feature
arguments that are evaluated only once per aggregation rather than once
per input row. Hypothetical-set aggregates are a subclass of ordered-set
aggregates in which some of the direct arguments are required to match,
- in number and datatypes, the aggregated argument columns. This allows
+ in number and data types, the aggregated argument columns. This allows
the values of those direct arguments to be added to the collection of
aggregate-input rows as an additional <quote>hypothetical</> row.
</para>
<para>
If an automatically updatable view is marked with the
<literal>security_barrier</> property then all the view's <literal>WHERE</>
- conditions (and any conditions using operators which are marked as LEAKPROOF)
+ conditions (and any conditions using operators which are marked as <literal>LEAKPROOF</literal>)
will always be evaluated before any conditions that a user of the view has
added. See <xref linkend="rules-privileges"> for full details. Note that,
due to this, rows which are not ultimately returned (because they do not
<para>
The following command-line options control the location and format of the
- output and other replication behaviour:
+ output and other replication behavior:
<variablelist>
<listitem>
<para>
- Tighten checks for multi-dimensional <link
+ Tighten checks for multidimensional <link
linkend="arrays">array</link> input (Bruce Momjian)
</para>
<para>
Previously an input array string that started with a single-element
- array dimension could later contain multi-dimensional segments,
+ array dimension could later contain multidimensional segments,
e.g. <literal>'{{1}, {2,3}}'::int[]</>.
</para>
</listitem>
<listitem>
<para>
Rename <link linkend="SQL-EXPLAIN"><command>EXPLAIN
- ANALYZE</></link>'s "total runtime" output to "execution time"
+ ANALYZE</></link>'s <quote>total runtime</quote> output to <quote>execution time</quote>
(Tom Lane)
</para>
<listitem>
<para>
- Improve speed of accesessing many different <link
+ Improve speed of accessing many different <link
linkend="SQL-CREATESEQUENCE">sequences</link> in the same session
(David Rowley)
</para>
<listitem>
<para>
- Allow printf-style space padding to be specified in <link
+ Allow <function>printf</function>-style space padding to be specified in <link
linkend="guc-log-line-prefix"><varname>log_line_prefix</></link>
(David Rowley)
</para>
<para>
Previously only unquoted matching strings would be imported
- as NULLs.
+ as null values.
</para>
</listitem>
<listitem>
<para>
Add structured (non-text) data type (<link
- linkend="datatype-json"><type>JSONB</></link>) for storing
- <type>JSON</> data (Oleg Bartunov, Teodor Sigaev, Alexander
+ linkend="datatype-json"><type>jsonb</></link>) for storing
+ JSON data (Oleg Bartunov, Teodor Sigaev, Alexander
Korotkov, Peter Geoghegan, and Andrew Dunstan)
</para>
<para>
- This allows for faster access to values in the <type>JSON</>
- document and faster and more useful indexing of <type>JSON</>.
- Scalar values in <type>JSONB</> documents are typed as appropriate
+ This allows for faster access to values in the JSON
+ document and faster and more useful indexing of JSON.
+ Scalar values in <type>jsonb</> documents are typed as appropriate
scalar SQL types.
</para>
</listitem>
<listitem>
<para>
- Add new <type>JSON</> functions to allow for the construction
- of arbitrarily complex json trees (Andrew Dunstan, Laurence Rowe)
+ Add new JSON functions to allow for the construction
+ of arbitrarily complex JSON trees (Andrew Dunstan, Laurence Rowe)
</para>
<para>
<para>
Add <link
linkend="functions-json-processing-table"><function>json_typeof()</></link>
- to return the data type of a <type>JSON</> value (Andrew Tipton)
+ to return the data type of a <type>json</> value (Andrew Tipton)
</para>
</listitem>
<listitem>
<para>
- Allow <function>sizeof()</> in <link linkend="ecpg">ecpg</link>
+ Allow <function>sizeof()</> in <link linkend="ecpg">ECPG</link>
C array definitions (Michael Meskes)
</para>
</listitem>
<listitem>
<para>
- Have <link linkend="ecpg">ecpg</link> properly handle nesting
+ Have <link linkend="ecpg">ECPG</link> properly handle nesting
requirements in C and <acronym>SQL</> mode for C-style comments
(Michael Meskes)
</para>
<listitem>
<para>
Have <application>psql</> <command>\d+</> output an
- <literal>OID</> line only if an oid column exists in a table
+ <literal>OID</> line only if an <literal>oid</literal> column exists in a table
(Bruce Momjian)
</para>
<para>
- Previously, the presence or absence of an oid column was always
+ Previously, the presence or absence of an <literal>oid</literal> column was always
reported.
</para>
</listitem>
<listitem>
<para>
- Avoid most uses of dlltool in <productname>Cygwin</> and
+ Avoid most uses of <command>dlltool</command> in <productname>Cygwin</> and
<productname>Mingw</> builds (Marco Atzeri, Hiroshi Inoue)
</para>
</listitem>
<para>
This allows the creation of version 4 <acronym>UUID</>s without
- requiring the installation of uuid-ossp.
+ requiring the installation of <literal>uuid-ossp</literal>.
</para>
</listitem>
<listitem>
<para>
Have <link linkend="pgstattuple"><application>pgstattuple</></link>
- functions use regclass-type arguments (Satoshi Nagayasu)
+ functions use <type>regclass</type>-type arguments (Satoshi Nagayasu)
</para>
<para>
- While text-type arguments are still supported, they will be
+ While <type>text</type>-type arguments are still supported, they will be
removed in a later major release.
</para>
</listitem>
setting <varname>vm.nr_hugepages</varname>. To estimate the number of
necessary huge pages start <productname>PostgreSQL</productname> without
huge pages enabled and check the <varname>VmPeak</varname> value from the
- proc filesystem:
+ proc file system:
<programlisting>
$ <userinput>head -1 /path/to/data/directory/postmaster.pid</userinput>
4170
<term><literal>void * <parameter>parserSetupArg</parameter></literal></term>
<listitem>
<para>
- passthrough argument for <parameter>parserSetup</parameter>
+ pass-through argument for <parameter>parserSetup</parameter>
</para>
</listitem>
</varlistentry>
<para>
The forward transition function for moving-aggregate mode is not allowed
- to return NULL as the new state value. If the inverse transition
- function returns NULL, this is taken as an indication that the inverse
+ to return null as the new state value. If the inverse transition
+ function returns null, this is taken as an indication that the inverse
function cannot reverse the state calculation for this particular input,
and so the aggregate calculation will be redone from scratch for the
current frame starting position. This convention allows moving-aggregate
no SQL-level equivalent for it. To address this case, it is possible to
declare the final function as taking extra <quote>dummy</> arguments
that match the input arguments of the aggregate. Such dummy arguments
- are always passed as NULLs since no specific value is available when the
+ are always passed as null values since no specific value is available when the
final function is called. Their only use is to allow a polymorphic
final function's result type to be connected to the aggregate's input
type(s). For example, the definition of the built-in
While normal aggregates can often be implemented with support
functions written in <application>PL/pgSQL</application> or another
PL language, ordered-set aggregates generally have to be written in
- C, since their state values aren't definable as any SQL datatype.
+ C, since their state values aren't definable as any SQL data type.
(In the above example, notice that the state value is declared as
type <type>internal</> — this is typical.)
</para>
same definition as for normal aggregates, but note that the direct
arguments (if any) are not provided. The final function receives
the last state value, the values of the direct arguments if any,
- and (if <literal>finalfunc_extra</> is specified) NULL values
+ and (if <literal>finalfunc_extra</> is specified) null values
corresponding to the aggregated input(s). As with normal
aggregates, <literal>finalfunc_extra</> is only really useful if the
aggregate is polymorphic; then the extra dummy argument(s) are needed
<row>
<entry><function>consistent</></entry>
<entry>
- determine whether value matches query condition (boolean variant)
+ determine whether value matches query condition (Boolean variant)
(optional if support function 6 is present)
</entry>
<entry>4</entry>
</entry>
<entry>
<para>
- Like <function>xpath_nodeset(document, query, toptag, itemtag)</> but result omits toptag.
+ Like <function>xpath_nodeset(document, query, toptag, itemtag)</> but result omits <literal>toptag</literal>.
</para>
</entry>
</row>
<para>
Development of this module was sponsored by Torchbox Ltd. (www.torchbox.com).
- It has the same BSD licence as PostgreSQL.
+ It has the same BSD license as PostgreSQL.
</para>
</sect2>