Skip to content

Commit 6d5be22

Browse files
committed
Merged current state of REL_9_5_STABLE. Including newer version of Artur Zakirov sscanf patch
2 parents b82f06c + 2ce19f8 commit 6d5be22

File tree

15 files changed

+170
-129
lines changed

15 files changed

+170
-129
lines changed

doc/src/sgml/planstats.sgml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ SELECT relpages, reltuples FROM pg_class WHERE relname = 'tenk1';
6767
not requiring a table scan). If that is different from
6868
<structfield>relpages</structfield> then
6969
<structfield>reltuples</structfield> is scaled accordingly to
70-
arrive at a current number-of-rows estimate. In this case the value of
70+
arrive at a current number-of-rows estimate. In the example above, the value of
7171
<structfield>relpages</structfield> is up-to-date so the rows estimate is
7272
the same as <structfield>reltuples</structfield>.
7373
</para>

doc/src/sgml/ref/create_index.sgml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] <replaceable class=
453453
When this option is used,
454454
<productname>&productname;</> must perform two scans of the table, and in
455455
addition it must wait for all existing transactions that could potentially
456-
use the index to terminate. Thus
456+
modify or use the index to terminate. Thus
457457
this method requires more total work than a standard index build and takes
458458
significantly longer to complete. However, since it allows normal
459459
operations to continue while the index is built, this method is useful for
@@ -464,12 +464,15 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] <replaceable class=
464464
<para>
465465
In a concurrent index build, the index is actually entered into
466466
the system catalogs in one transaction, then two table scans occur in
467-
two more transactions. Any transaction active when the second table
468-
scan starts can block concurrent index creation until it completes,
469-
even transactions that only reference the table after the second table
470-
scan starts. Concurrent index creation serially waits for each old
471-
transaction to complete using the method outlined in section <xref
472-
linkend="view-pg-locks">.
467+
two more transactions. Before each table scan, the index build must
468+
wait for existing transactions that have modified the table to terminate.
469+
After the second scan, the index build must wait for any transactions
470+
that have a snapshot (see <xref linkend="mvcc">) predating the second
471+
scan to terminate. Then finally the index can be marked ready for use,
472+
and the <command>CREATE INDEX</> command terminates.
473+
Even then, however, the index may not be immediately usable for queries:
474+
in the worst case, it cannot be used as long as transactions exist that
475+
predate the start of the index build.
473476
</para>
474477

475478
<para>

doc/src/sgml/ref/pg_ctl-ref.sgml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,9 @@ doc/src/sgml/ref/pg_ctl-ref.sgml
362362
<listitem>
363363
<para>
364364
The maximum number of seconds to wait when waiting for startup or
365-
shutdown to complete. The default is 60 seconds.
365+
shutdown to complete. Defaults to the value of the
366+
<envar>PGCTLTIMEOUT</> environment variable or, if not set, to 60
367+
seconds.
366368
</para>
367369
</listitem>
368370
</varlistentry>
@@ -486,6 +488,17 @@ doc/src/sgml/ref/pg_ctl-ref.sgml
486488
<title>Environment</title>
487489

488490
<variablelist>
491+
<varlistentry>
492+
<term><envar>PGCTLTIMEOUT</envar></term>
493+
494+
<listitem>
495+
<para>
496+
Default limit on the number of seconds to wait when waiting for startup
497+
or shutdown to complete. If not set, the default is 60 seconds.
498+
</para>
499+
</listitem>
500+
</varlistentry>
501+
489502
<varlistentry>
490503
<term><envar>PGDATA</envar></term>
491504

doc/src/sgml/release-9.5.sgml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1770,7 +1770,7 @@ Add GUC and storage parameter to set the maximum size of GIN pending list.
17701770

17711771
<listitem>
17721772
<!--
1773-
2015-06-21 [ad89a5d] Alvaro..: Add transforms to pg_get_object_address and fr..
1773+
2014-12-23 [7eca575] Alvaro..: get_object_address: separate domain constraints..
17741774
-->
17751775
<para>
17761776
Support comments on <link linkend="SQL-CREATEDOMAIN">domain

doc/src/sgml/runtime.sgml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -645,13 +645,13 @@ psql: could not connect to server: No such file or directory
645645
<row>
646646
<entry><varname>SEMMNI</></>
647647
<entry>Maximum number of semaphore identifiers (i.e., sets)</>
648-
<entry>at least <literal>ceil((max_connections + autovacuum_max_workers + 4) / 16)</literal></>
648+
<entry>at least <literal>ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16)</literal></>
649649
</row>
650650

651651
<row>
652652
<entry><varname>SEMMNS</></>
653653
<entry>Maximum number of semaphores system-wide</>
654-
<entry><literal>ceil((max_connections + autovacuum_max_workers + 4) / 16) * 17</literal> plus room for other applications</>
654+
<entry><literal>ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16) * 17</literal> plus room for other applications</>
655655
</row>
656656

657657
<row>
@@ -698,21 +698,23 @@ psql: could not connect to server: No such file or directory
698698
</para>
699699

700700
<para>
701-
<productname>&productname;</> uses one semaphore per allowed connection
702-
(<xref linkend="guc-max-connections">) and allowed autovacuum worker
703-
process (<xref linkend="guc-autovacuum-max-workers">), in sets of 16.
701+
<productname>PostgreSQL</> uses one semaphore per allowed connection
702+
(<xref linkend="guc-max-connections">), allowed autovacuum worker process
703+
(<xref linkend="guc-autovacuum-max-workers">) and allowed background
704+
process (<xref linkend="guc-max-worker-processes">), in sets of 16.
704705
Each such set will
705706
also contain a 17th semaphore which contains a <quote>magic
706707
number</quote>, to detect collision with semaphore sets used by
707708
other applications. The maximum number of semaphores in the system
708709
is set by <varname>SEMMNS</>, which consequently must be at least
709710
as high as <varname>max_connections</> plus
710-
<varname>autovacuum_max_workers</>, plus one extra for each 16
711+
<varname>autovacuum_max_workers</> plus <varname>max_worker_processes</>,
712+
plus one extra for each 16
711713
allowed connections plus workers (see the formula in <xref
712714
linkend="sysvipc-parameters">). The parameter <varname>SEMMNI</>
713715
determines the limit on the number of semaphore sets that can
714716
exist on the system at one time. Hence this parameter must be at
715-
least <literal>ceil((max_connections + autovacuum_max_workers + 4) / 16)</>.
717+
least <literal>ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16)</>.
716718
Lowering the number
717719
of allowed connections is a temporary workaround for failures,
718720
which are usually confusingly worded <quote>No space

src/backend/regex/regc_lex.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -792,13 +792,13 @@ lexescape(struct vars * v)
792792
break;
793793
case CHR('u'):
794794
c = lexdigits(v, 16, 4, 4);
795-
if (ISERR() || c < CHR_MIN || c > CHR_MAX)
795+
if (ISERR() || !CHR_IS_IN_RANGE(c))
796796
FAILW(REG_EESCAPE);
797797
RETV(PLAIN, c);
798798
break;
799799
case CHR('U'):
800800
c = lexdigits(v, 16, 8, 8);
801-
if (ISERR() || c < CHR_MIN || c > CHR_MAX)
801+
if (ISERR() || !CHR_IS_IN_RANGE(c))
802802
FAILW(REG_EESCAPE);
803803
RETV(PLAIN, c);
804804
break;
@@ -816,7 +816,7 @@ lexescape(struct vars * v)
816816
case CHR('x'):
817817
NOTE(REG_UUNPORT);
818818
c = lexdigits(v, 16, 1, 255); /* REs >255 long outside spec */
819-
if (ISERR() || c < CHR_MIN || c > CHR_MAX)
819+
if (ISERR() || !CHR_IS_IN_RANGE(c))
820820
FAILW(REG_EESCAPE);
821821
RETV(PLAIN, c);
822822
break;

0 commit comments

Comments
 (0)