Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • pkg/postgresql-13
1 result
Show changes
Commits on Source (5)
Showing
with 659 additions and 419 deletions
......@@ -25,9 +25,12 @@ src/interfaces/libpq/test/expected.out whitespace=-blank-at-eof
# These files are maintained or generated elsewhere. We take them as is.
configure -whitespace
ppport.h -whitespace
src/backend/jit/llvm/SectionMemoryManager.cpp -whitespace
src/backend/jit/llvm/SectionMemoryManager.LICENSE -whitespace
src/backend/regex/COPYRIGHT -whitespace
src/backend/regex/re_syntax.n -whitespace
src/backend/snowball/libstemmer/*.c -whitespace
src/backend/utils/mb/Unicode/*-std.txt -whitespace
src/include/jit/SectionMemoryManager.h -whitespace
src/include/snowball/libstemmer/* -whitespace
src/timezone/data/* -whitespace
4f8df7a3fb750007ff5018f8125e0d4793cab337
bf5710d3b6656516d828ebe9f6e2ffd49e54d084
PostgreSQL Database Management System
(formerly known as Postgres, then as Postgres95)
Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
Portions Copyright (c) 1994, The Regents of the University of California
......
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for PostgreSQL 13.18.
# Generated by GNU Autoconf 2.69 for PostgreSQL 13.19.
#
# Report bugs to <pgsql-bugs@lists.postgresql.org>.
#
......@@ -582,8 +582,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='PostgreSQL'
PACKAGE_TARNAME='postgresql'
PACKAGE_VERSION='13.18'
PACKAGE_STRING='PostgreSQL 13.18'
PACKAGE_VERSION='13.19'
PACKAGE_STRING='PostgreSQL 13.19'
PACKAGE_BUGREPORT='pgsql-bugs@lists.postgresql.org'
PACKAGE_URL='https://www.postgresql.org/'
 
......@@ -1436,7 +1436,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures PostgreSQL 13.18 to adapt to many kinds of systems.
\`configure' configures PostgreSQL 13.19 to adapt to many kinds of systems.
 
Usage: $0 [OPTION]... [VAR=VALUE]...
 
......@@ -1501,7 +1501,7 @@ fi
 
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of PostgreSQL 13.18:";;
short | recursive ) echo "Configuration of PostgreSQL 13.19:";;
esac
cat <<\_ACEOF
 
......@@ -1668,7 +1668,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
PostgreSQL configure 13.18
PostgreSQL configure 13.19
generated by GNU Autoconf 2.69
 
Copyright (C) 2012 Free Software Foundation, Inc.
......@@ -2074,116 +2074,116 @@ $as_echo "$ac_res" >&6; }
 
} # ac_fn_c_check_func
 
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# -------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
# variable VAR accordingly.
ac_fn_c_check_type ()
# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
# ----------------------------------------------------
# Tries to find if the field MEMBER exists in type AGGR, after including
# INCLUDES, setting cache variable VAR accordingly.
ac_fn_c_check_member ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
if eval \${$3+:} false; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
$as_echo_n "checking for $2.$3... " >&6; }
if eval \${$4+:} false; then :
$as_echo_n "(cached) " >&6
else
eval "$3=no"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
$5
int
main ()
{
if (sizeof ($2))
return 0;
static $2 ac_aggr;
if (ac_aggr.$3)
return 0;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
eval "$4=yes"
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
$5
int
main ()
{
if (sizeof (($2)))
return 0;
static $2 ac_aggr;
if (sizeof ac_aggr.$3)
return 0;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
eval "$4=yes"
else
eval "$3=yes"
eval "$4=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
eval ac_res=\$$3
eval ac_res=\$$4
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
} # ac_fn_c_check_type
} # ac_fn_c_check_member
 
# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
# ----------------------------------------------------
# Tries to find if the field MEMBER exists in type AGGR, after including
# INCLUDES, setting cache variable VAR accordingly.
ac_fn_c_check_member ()
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# -------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
# variable VAR accordingly.
ac_fn_c_check_type ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
$as_echo_n "checking for $2.$3... " >&6; }
if eval \${$4+:} false; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
eval "$3=no"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
$4
int
main ()
{
static $2 ac_aggr;
if (ac_aggr.$3)
return 0;
if (sizeof ($2))
return 0;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
eval "$4=yes"
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
$4
int
main ()
{
static $2 ac_aggr;
if (sizeof ac_aggr.$3)
return 0;
if (sizeof (($2)))
return 0;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
eval "$4=yes"
else
eval "$4=no"
eval "$3=yes"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
eval ac_res=\$$4
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
} # ac_fn_c_check_member
} # ac_fn_c_check_type
 
# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
# --------------------------------------------
......@@ -2421,7 +2421,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
 
It was created by PostgreSQL $as_me 13.18, which was
It was created by PostgreSQL $as_me 13.19, which was
generated by GNU Autoconf 2.69. Invocation command line was
 
$ $0 $@
......@@ -5258,6 +5258,83 @@ else
BITCODE_CXXFLAGS="-O2 $BITCODE_CXXFLAGS"
fi
 
# We use C constructs that became invalid in C23. Check if the compiler
# reports a standard higher than C17, with the flags selected above (so the
# user can control the language level explicitly to avoid the gcc/clang-only
# fallback logic below if preferred).
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC reports a C standard higher than ISO C17" >&5
$as_echo_n "checking whether $CC reports a C standard higher than ISO C17... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
#if __STDC_VERSION__ > 201710L
choke me
#endif
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
POSTC17=no
else
POSTC17=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${POSTC17}" >&5
$as_echo "${POSTC17}" >&6; }
# If a too recent standard was detected with the user's CFLAGS, try asking for
# C17 with GNU extensions explicitly.
if test "$POSTC17" = yes; then
old_CFLAGS="$CFLAGS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -std=gnu17, for CFLAGS" >&5
$as_echo_n "checking whether ${CC} supports -std=gnu17, for CFLAGS... " >&6; }
if ${pgac_cv_prog_CC_cflags__std_gnu17+:} false; then :
$as_echo_n "(cached) " >&6
else
pgac_save_CFLAGS=$CFLAGS
pgac_save_CC=$CC
CC=${CC}
CFLAGS="${CFLAGS} -std=gnu17"
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
pgac_cv_prog_CC_cflags__std_gnu17=yes
else
pgac_cv_prog_CC_cflags__std_gnu17=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="$pgac_save_CFLAGS"
CC="$pgac_save_CC"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CC_cflags__std_gnu17" >&5
$as_echo "$pgac_cv_prog_CC_cflags__std_gnu17" >&6; }
if test x"$pgac_cv_prog_CC_cflags__std_gnu17" = x"yes"; then
CFLAGS="${CFLAGS} -std=gnu17"
fi
if test "$CFLAGS" = "$old_CFLAGS"; then
as_fn_error $? "cannot proceed" "$LINENO" 5
fi
fi
# C[XX]FLAGS we determined above will be added back at the end
user_CFLAGS=$CFLAGS
CFLAGS=""
......@@ -7286,6 +7363,111 @@ if test x"$pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers" = x"yes";
fi
 
 
# Ideally bitcode should perhaps match $CC's use, or not, of outline atomic
# functions, but for now we err on the side of suppressing them in bitcode,
# because we can't assume they're available at runtime. This affects aarch64
# builds using the basic armv8-a ISA without LSE support.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -mno-outline-atomics, for BITCODE_CFLAGS" >&5
$as_echo_n "checking whether ${CLANG} supports -mno-outline-atomics, for BITCODE_CFLAGS... " >&6; }
if ${pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics+:} false; then :
$as_echo_n "(cached) " >&6
else
pgac_save_CXXFLAGS=$CXXFLAGS
pgac_save_CXX=$CXX
CXX=${CLANG}
CXXFLAGS="${BITCODE_CFLAGS} -mno-outline-atomics"
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
ac_cxx_werror_flag=yes
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics=yes
else
pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
CXXFLAGS="$pgac_save_CXXFLAGS"
CXX="$pgac_save_CXX"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics" >&5
$as_echo "$pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics" >&6; }
if test x"$pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics" = x"yes"; then
BITCODE_CFLAGS="${BITCODE_CFLAGS} -mno-outline-atomics"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -mno-outline-atomics, for BITCODE_CXXFLAGS" >&5
$as_echo_n "checking whether ${CLANG} supports -mno-outline-atomics, for BITCODE_CXXFLAGS... " >&6; }
if ${pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics+:} false; then :
$as_echo_n "(cached) " >&6
else
pgac_save_CXXFLAGS=$CXXFLAGS
pgac_save_CXX=$CXX
CXX=${CLANG}
CXXFLAGS="${BITCODE_CXXFLAGS} -mno-outline-atomics"
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
ac_cxx_werror_flag=yes
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics=yes
else
pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
CXXFLAGS="$pgac_save_CXXFLAGS"
CXX="$pgac_save_CXX"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics" >&5
$as_echo "$pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics" >&6; }
if test x"$pgac_cv_prog_CLANG_cxxflags__mno_outline_atomics" = x"yes"; then
BITCODE_CXXFLAGS="${BITCODE_CXXFLAGS} -mno-outline-atomics"
fi
NOT_THE_CFLAGS=""
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -Wunused-command-line-argument, for NOT_THE_CFLAGS" >&5
$as_echo_n "checking whether ${CLANG} supports -Wunused-command-line-argument, for NOT_THE_CFLAGS... " >&6; }
......@@ -13423,100 +13605,6 @@ fi
## Header files
##
 
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
if ${ac_cv_header_stdbool_h+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdbool.h>
#ifndef bool
"error: bool is not defined"
#endif
#ifndef false
"error: false is not defined"
#endif
#if false
"error: false is not 0"
#endif
#ifndef true
"error: true is not defined"
#endif
#if true != 1
"error: true is not 1"
#endif
#ifndef __bool_true_false_are_defined
"error: __bool_true_false_are_defined is not defined"
#endif
struct s { _Bool s: 1; _Bool t; } s;
char a[true == 1 ? 1 : -1];
char b[false == 0 ? 1 : -1];
char c[__bool_true_false_are_defined == 1 ? 1 : -1];
char d[(bool) 0.5 == true ? 1 : -1];
/* See body of main program for 'e'. */
char f[(_Bool) 0.0 == false ? 1 : -1];
char g[true];
char h[sizeof (_Bool)];
char i[sizeof s.t];
enum { j = false, k = true, l = false * true, m = true * 256 };
/* The following fails for
HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
_Bool n[m];
char o[sizeof n == m * sizeof n[0] ? 1 : -1];
char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
/* Catch a bug in an HP-UX C compiler. See
http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
*/
_Bool q = true;
_Bool *pq = &q;
int
main ()
{
bool e = &s;
*pq |= q;
*pq |= ! q;
/* Refer to every declared value, to avoid compiler optimizations. */
return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ !m + !n + !o + !p + !q + !pq);
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_header_stdbool_h=yes
else
ac_cv_header_stdbool_h=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
$as_echo "$ac_cv_header_stdbool_h" >&6; }
ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
if test "x$ac_cv_type__Bool" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE__BOOL 1
_ACEOF
fi
if test $ac_cv_header_stdbool_h = yes; then
$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
fi
for ac_header in atomic.h copyfile.h execinfo.h getopt.h ifaddrs.h langinfo.h mbarrier.h poll.h sys/epoll.h sys/event.h sys/ipc.h sys/personality.h sys/prctl.h sys/procctl.h sys/pstat.h sys/resource.h sys/select.h sys/sem.h sys/shm.h sys/sockio.h sys/tas.h sys/un.h termios.h ucred.h wctype.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
......@@ -15371,9 +15459,7 @@ $as_echo_n "checking size of bool... " >&6; }
if ${ac_cv_sizeof_bool+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (bool))" "ac_cv_sizeof_bool" "#ifdef HAVE_STDBOOL_H
#include <stdbool.h>
#endif
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (bool))" "ac_cv_sizeof_bool" "#include <stdbool.h>
"; then :
 
else
......@@ -15399,7 +15485,7 @@ _ACEOF
 
 
 
if test "$ac_cv_header_stdbool_h" = yes -a "$ac_cv_sizeof_bool" = 1; then
if test "$ac_cv_sizeof_bool" = 1; then
 
$as_echo "#define PG_USE_STDBOOL 1" >>confdefs.h
 
......@@ -18231,7 +18317,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
# Check for ARMv8 CRC Extension intrinsics to do CRC calculations.
#
# First check if __crc32c* intrinsics can be used with the default compiler
# flags. If not, check if adding -march=armv8-a+crc flag helps.
# flags. If not, check if adding "-march=armv8-a+crc+simd" flag helps.
# On systems using soft-float ABI, "-march=armv8-a+crc" is required instead.
# CFLAGS_ARMV8_CRC32C is set if the extra flag is required.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=" >&5
$as_echo_n "checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=... " >&6; }
......@@ -18274,7 +18361,48 @@ if test x"$pgac_cv_armv8_crc32c_intrinsics_" = x"yes"; then
fi
 
if test x"$pgac_armv8_crc32c_intrinsics" != x"yes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=-march=armv8-a+crc" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=-march=armv8-a+crc+simd" >&5
$as_echo_n "checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=-march=armv8-a+crc+simd... " >&6; }
if ${pgac_cv_armv8_crc32c_intrinsics__march_armv8_apcrcpsimd+:} false; then :
$as_echo_n "(cached) " >&6
else
pgac_save_CFLAGS=$CFLAGS
CFLAGS="$pgac_save_CFLAGS -march=armv8-a+crc+simd"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <arm_acle.h>
int
main ()
{
unsigned int crc = 0;
crc = __crc32cb(crc, 0);
crc = __crc32ch(crc, 0);
crc = __crc32cw(crc, 0);
crc = __crc32cd(crc, 0);
/* return computed value, to prevent the above being optimized away */
return crc == 0;
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
pgac_cv_armv8_crc32c_intrinsics__march_armv8_apcrcpsimd=yes
else
pgac_cv_armv8_crc32c_intrinsics__march_armv8_apcrcpsimd=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$pgac_save_CFLAGS"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_armv8_crc32c_intrinsics__march_armv8_apcrcpsimd" >&5
$as_echo "$pgac_cv_armv8_crc32c_intrinsics__march_armv8_apcrcpsimd" >&6; }
if test x"$pgac_cv_armv8_crc32c_intrinsics__march_armv8_apcrcpsimd" = x"yes"; then
CFLAGS_ARMV8_CRC32C="-march=armv8-a+crc+simd"
pgac_armv8_crc32c_intrinsics=yes
fi
if test x"$pgac_armv8_crc32c_intrinsics" != x"yes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=-march=armv8-a+crc" >&5
$as_echo_n "checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=-march=armv8-a+crc... " >&6; }
if ${pgac_cv_armv8_crc32c_intrinsics__march_armv8_apcrc+:} false; then :
$as_echo_n "(cached) " >&6
......@@ -18314,6 +18442,7 @@ if test x"$pgac_cv_armv8_crc32c_intrinsics__march_armv8_apcrc" = x"yes"; then
pgac_armv8_crc32c_intrinsics=yes
fi
 
fi
fi
 
 
......@@ -20185,7 +20314,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by PostgreSQL $as_me 13.18, which was
This file was extended by PostgreSQL $as_me 13.19, which was
generated by GNU Autoconf 2.69. Invocation command line was
 
CONFIG_FILES = $CONFIG_FILES
......@@ -20256,7 +20385,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
PostgreSQL config.status 13.18
PostgreSQL config.status 13.19
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
 
......
......@@ -17,7 +17,7 @@ dnl Read the Autoconf manual for details.
dnl
m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
AC_INIT([PostgreSQL], [13.18], [pgsql-bugs@lists.postgresql.org], [], [https://www.postgresql.org/])
AC_INIT([PostgreSQL], [13.19], [pgsql-bugs@lists.postgresql.org], [], [https://www.postgresql.org/])
m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_fatal([Autoconf version 2.69 is required.
Untested combinations of 'autoconf' and PostgreSQL versions are not
......@@ -456,6 +456,26 @@ else
BITCODE_CXXFLAGS="-O2 $BITCODE_CXXFLAGS"
fi
# We use C constructs that became invalid in C23. Check if the compiler
# reports a standard higher than C17, with the flags selected above (so the
# user can control the language level explicitly to avoid the gcc/clang-only
# fallback logic below if preferred).
AC_MSG_CHECKING([whether $CC reports a C standard higher than ISO C17])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [@%:@if __STDC_VERSION__ > 201710L
choke me
@%:@endif])], [POSTC17=no], [POSTC17=yes])
AC_MSG_RESULT(${POSTC17})
# If a too recent standard was detected with the user's CFLAGS, try asking for
# C17 with GNU extensions explicitly.
if test "$POSTC17" = yes; then
old_CFLAGS="$CFLAGS"
PGAC_PROG_CC_CFLAGS_OPT([-std=gnu17])
if test "$CFLAGS" = "$old_CFLAGS"; then
AC_MSG_ERROR([cannot proceed])
fi
fi
# C[XX]FLAGS we determined above will be added back at the end
user_CFLAGS=$CFLAGS
CFLAGS=""
......@@ -601,6 +621,13 @@ if test "$with_llvm" = yes ; then
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, BITCODE_CFLAGS, [-Xclang -no-opaque-pointers])
PGAC_PROG_VARCXX_VARFLAGS_OPT(CLANGXX, BITCODE_CXXFLAGS, [-Xclang -no-opaque-pointers])
# Ideally bitcode should perhaps match $CC's use, or not, of outline atomic
# functions, but for now we err on the side of suppressing them in bitcode,
# because we can't assume they're available at runtime. This affects aarch64
# builds using the basic armv8-a ISA without LSE support.
PGAC_PROG_VARCXX_VARFLAGS_OPT(CLANG, BITCODE_CFLAGS, [-mno-outline-atomics])
PGAC_PROG_VARCXX_VARFLAGS_OPT(CLANG, BITCODE_CXXFLAGS, [-mno-outline-atomics])
NOT_THE_CFLAGS=""
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, NOT_THE_CFLAGS, [-Wunused-command-line-argument])
if test -n "$NOT_THE_CFLAGS"; then
......@@ -1376,8 +1403,6 @@ AC_SUBST(UUID_LIBS)
## Header files
##
AC_HEADER_STDBOOL
AC_CHECK_HEADERS(m4_normalize([
atomic.h
copyfile.h
......@@ -1686,14 +1711,11 @@ if test "$ac_cv_sizeof_off_t" -lt 8 -a "$segsize" != "1"; then
AC_MSG_ERROR([Large file support is not enabled. Segment size cannot be larger than 1GB.])
fi
AC_CHECK_SIZEOF([bool], [],
[#ifdef HAVE_STDBOOL_H
#include <stdbool.h>
#endif])
AC_CHECK_SIZEOF([bool], [], [#include <stdbool.h>])
dnl We use <stdbool.h> if we have it and it declares type bool as having
dnl size 1. Otherwise, c.h will fall back to declaring bool as unsigned char.
if test "$ac_cv_header_stdbool_h" = yes -a "$ac_cv_sizeof_bool" = 1; then
dnl We use <stdbool.h> if bool has size 1 after including it. Otherwise, c.h
dnl will fall back to declaring bool as unsigned char.
if test "$ac_cv_sizeof_bool" = 1; then
AC_DEFINE([PG_USE_STDBOOL], 1,
[Define to 1 to use <stdbool.h> to define type bool.])
fi
......@@ -2102,11 +2124,15 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
# Check for ARMv8 CRC Extension intrinsics to do CRC calculations.
#
# First check if __crc32c* intrinsics can be used with the default compiler
# flags. If not, check if adding -march=armv8-a+crc flag helps.
# flags. If not, check if adding "-march=armv8-a+crc+simd" flag helps.
# On systems using soft-float ABI, "-march=armv8-a+crc" is required instead.
# CFLAGS_ARMV8_CRC32C is set if the extra flag is required.
PGAC_ARMV8_CRC32C_INTRINSICS([])
if test x"$pgac_armv8_crc32c_intrinsics" != x"yes"; then
PGAC_ARMV8_CRC32C_INTRINSICS([-march=armv8-a+crc])
PGAC_ARMV8_CRC32C_INTRINSICS([-march=armv8-a+crc+simd])
if test x"$pgac_armv8_crc32c_intrinsics" != x"yes"; then
PGAC_ARMV8_CRC32C_INTRINSICS([-march=armv8-a+crc])
fi
fi
AC_SUBST(CFLAGS_ARMV8_CRC32C)
......
......@@ -47,4 +47,73 @@ SELECT lo_get(43214);
DELETE FROM image;
SELECT lo_get(43214);
ERROR: large object 43214 does not exist
-- Now let's try it with an AFTER trigger
DROP TRIGGER t_raster ON image;
CREATE CONSTRAINT TRIGGER t_raster AFTER UPDATE OR DELETE ON image
DEFERRABLE INITIALLY DEFERRED
FOR EACH ROW EXECUTE PROCEDURE lo_manage(raster);
SELECT lo_create(43223);
lo_create
-----------
43223
(1 row)
SELECT lo_create(43224);
lo_create
-----------
43224
(1 row)
SELECT lo_create(43225);
lo_create
-----------
43225
(1 row)
INSERT INTO image (title, raster) VALUES ('beautiful image', 43223);
SELECT lo_get(43223);
lo_get
--------
\x
(1 row)
UPDATE image SET raster = 43224 WHERE title = 'beautiful image';
SELECT lo_get(43223); -- gone
ERROR: large object 43223 does not exist
SELECT lo_get(43224);
lo_get
--------
\x
(1 row)
-- test updating of unrelated column
UPDATE image SET title = 'beautiful picture' WHERE title = 'beautiful image';
SELECT lo_get(43224);
lo_get
--------
\x
(1 row)
-- this case used to be buggy
BEGIN;
UPDATE image SET title = 'beautiful image' WHERE title = 'beautiful picture';
UPDATE image SET raster = 43225 WHERE title = 'beautiful image';
SELECT lo_get(43224);
lo_get
--------
\x
(1 row)
COMMIT;
SELECT lo_get(43224); -- gone
ERROR: large object 43224 does not exist
SELECT lo_get(43225);
lo_get
--------
\x
(1 row)
DELETE FROM image;
SELECT lo_get(43225); -- gone
ERROR: large object 43225 does not exist
DROP TABLE image;
......@@ -27,4 +27,44 @@ DELETE FROM image;
SELECT lo_get(43214);
-- Now let's try it with an AFTER trigger
DROP TRIGGER t_raster ON image;
CREATE CONSTRAINT TRIGGER t_raster AFTER UPDATE OR DELETE ON image
DEFERRABLE INITIALLY DEFERRED
FOR EACH ROW EXECUTE PROCEDURE lo_manage(raster);
SELECT lo_create(43223);
SELECT lo_create(43224);
SELECT lo_create(43225);
INSERT INTO image (title, raster) VALUES ('beautiful image', 43223);
SELECT lo_get(43223);
UPDATE image SET raster = 43224 WHERE title = 'beautiful image';
SELECT lo_get(43223); -- gone
SELECT lo_get(43224);
-- test updating of unrelated column
UPDATE image SET title = 'beautiful picture' WHERE title = 'beautiful image';
SELECT lo_get(43224);
-- this case used to be buggy
BEGIN;
UPDATE image SET title = 'beautiful image' WHERE title = 'beautiful picture';
UPDATE image SET raster = 43225 WHERE title = 'beautiful image';
SELECT lo_get(43224);
COMMIT;
SELECT lo_get(43224); -- gone
SELECT lo_get(43225);
DELETE FROM image;
SELECT lo_get(43225); -- gone
DROP TABLE image;
......@@ -18,6 +18,7 @@
#include "funcapi.h"
#include "miscadmin.h"
#include "storage/bufmgr.h"
#include "storage/proc.h"
#include "storage/procarray.h"
#include "storage/smgr.h"
#include "utils/rel.h"
......@@ -385,6 +386,7 @@ pg_truncate_visibility_map(PG_FUNCTION_ARGS)
Relation rel;
ForkNumber fork;
BlockNumber block;
BlockNumber old_block;
rel = relation_open(relid, AccessExclusiveLock);
......@@ -394,15 +396,24 @@ pg_truncate_visibility_map(PG_FUNCTION_ARGS)
/* Forcibly reset cached file size */
RelationGetSmgr(rel)->smgr_vm_nblocks = InvalidBlockNumber;
/* Compute new and old size before entering critical section. */
fork = VISIBILITYMAP_FORKNUM;
block = visibilitymap_prepare_truncate(rel, 0);
if (BlockNumberIsValid(block))
{
fork = VISIBILITYMAP_FORKNUM;
smgrtruncate(RelationGetSmgr(rel), &fork, 1, &block);
}
old_block = BlockNumberIsValid(block) ? smgrnblocks(RelationGetSmgr(rel), fork) : 0;
/*
* WAL-logging, buffer dropping, file truncation must be atomic and all on
* one side of a checkpoint. See RelationTruncate() for discussion.
*/
Assert(!MyProc->delayChkpt);
MyProc->delayChkpt = true;
Assert(!MyProc->delayChkptEnd);
MyProc->delayChkptEnd = true;
START_CRIT_SECTION();
if (RelationNeedsWAL(rel))
{
XLogRecPtr lsn;
xl_smgr_truncate xlrec;
xlrec.blkno = 0;
......@@ -412,9 +423,18 @@ pg_truncate_visibility_map(PG_FUNCTION_ARGS)
XLogBeginInsert();
XLogRegisterData((char *) &xlrec, sizeof(xlrec));
XLogInsert(RM_SMGR_ID, XLOG_SMGR_TRUNCATE | XLR_SPECIAL_REL_UPDATE);
lsn = XLogInsert(RM_SMGR_ID,
XLOG_SMGR_TRUNCATE | XLR_SPECIAL_REL_UPDATE);
XLogFlush(lsn);
}
if (BlockNumberIsValid(block))
smgrtruncate2(RelationGetSmgr(rel), &fork, 1, &old_block, &block);
END_CRIT_SECTION();
MyProc->delayChkpt = false;
MyProc->delayChkptEnd = false;
/*
* Release the lock right away, not at commit time.
*
......
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: COPYRIGHT
Copyright: 1996-2024, PostgreSQL Global Development Group
Copyright: 1996-2025, PostgreSQL Global Development Group
1994, The Regents of the University of California
License: PostgreSQL
......@@ -122,7 +122,7 @@ Copyright: no-info-found
License: JSON
Files: doc/src/sgml/html/legalnotice.html
Copyright: 1996-2024, the PostgreSQL Global Development Group.
Copyright: 1996-2025, the PostgreSQL Global Development Group.
1994, –5
License: PostgreSQL
......@@ -135,7 +135,7 @@ Copyright: no-info-found
License: JSON
Files: doc/src/sgml/legal.sgml
Copyright: 1996-2024, the PostgreSQL Global Development Group.
Copyright: 1996-2025, the PostgreSQL Global Development Group.
1994, 1995
License: PostgreSQL
......
postgresql-13 (13.19-0+deb11u1+apertis0) apertis; urgency=medium
* Sync from debian/bullseye-security.
-- Apertis CI <devel@lists.apertis.org> Fri, 14 Feb 2025 07:42:59 +0000
postgresql-13 (13.19-0+deb11u1) bullseye-security; urgency=medium
* New upstream version 13.19.
+ Harden PQescapeString and allied functions against invalidly-encoded
input strings (Andres Freund, Noah Misch)
Data-quoting functions supplied by libpq now fully check the encoding
validity of their input. If invalid characters are detected, they
report an error if possible. For the ones that lack an error return
convention, the output string is adjusted to ensure that the server will
report invalid encoding and no intervening processing will be fooled by
bytes that might happen to match single quote, backslash, etc.
The purpose of this change is to guard against SQL-injection attacks
that are possible if one of these functions is used to quote crafted
input. There is no hazard when the resulting string is sent directly to
a PostgreSQL server (which would check its encoding anyway), but there
is a risk when it is passed through psql or other client-side code.
Historically such code has not carefully vetted encoding, and in many
cases it's not clear what it should do if it did detect such a problem.
This fix is effective only if the data-quoting function, the server, and
any intermediate processing agree on the character encoding that's being
used. Applications that insert untrusted input into SQL commands should
take special care to ensure that that's true.
Applications and drivers that quote untrusted input without using these
libpq functions may be at risk of similar problems. They should first
confirm the data is valid in the encoding expected by the server.
The PostgreSQL Project thanks Stephen Fewer for reporting this problem.
(CVE-2025-1094)
-- Christoph Berg <myon@debian.org> Tue, 11 Feb 2025 11:27:41 +0100
postgresql-13 (13.18-0+deb11u1+apertis0) apertis; urgency=medium
* Sync from debian/bullseye-security.
......
......@@ -3,7 +3,7 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
--- a/src/test/recovery/t/039_end_of_wal.pl
+++ /dev/null
@@ -1,497 +0,0 @@
@@ -1,366 +0,0 @@
-# Copyright (c) 2023, PostgreSQL Global Development Group
-#
-# Test detecting end-of-WAL conditions. This test suite generates
......@@ -26,9 +26,6 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
-# we need to know the endianness to do that.
-my $BIG_ENDIAN = pack("L", 0x12345678) eq pack("N", 0x12345678);
-
-# Header size of record header.
-my $RECORD_HEADER_SIZE = 24;
-
-# Fields retrieved from code headers.
-my @scan_result = scan_server_header('access/xlog_internal.h',
- '#define\s+XLOG_PAGE_MAGIC\s+(\w+)');
......@@ -42,70 +39,6 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
-my $WAL_BLOCK_SIZE;
-my $TLI;
-
-# Build path of a WAL segment.
-sub wal_segment_path
-{
- my $node = shift;
- my $tli = shift;
- my $segment = shift;
- my $wal_path =
- sprintf("%s/pg_wal/%08X%08X%08X", $node->data_dir, $tli, 0, $segment);
- return $wal_path;
-}
-
-# Calculate from a LSN (in bytes) its segment number and its offset.
-sub lsn_to_segment_and_offset
-{
- my $lsn = shift;
- return ($lsn / $WAL_SEGMENT_SIZE, $lsn % $WAL_SEGMENT_SIZE);
-}
-
-# Write some arbitrary data in WAL for the given segment at LSN.
-# This should be called while the cluster is not running.
-sub write_wal
-{
- my $node = shift;
- my $tli = shift;
- my $lsn = shift;
- my $data = shift;
-
- my ($segment, $offset) = lsn_to_segment_and_offset($lsn);
- my $path = wal_segment_path($node, $tli, $segment);
-
- open my $fh, "+<:raw", $path or die;
- seek($fh, $offset, SEEK_SET) or die;
- print $fh $data;
- close $fh;
-}
-
-sub format_lsn
-{
- my $lsn = shift;
- return sprintf("%X/%X", $lsn >> 32, $lsn & 0xffffffff);
-}
-
-# Emit a WAL record of arbitrary size. Returns the end LSN of the
-# record inserted, in bytes.
-sub emit_message
-{
- my $node = shift;
- my $size = shift;
- return int(
- $node->safe_psql(
- 'postgres',
- "SELECT pg_logical_emit_message(true, '', repeat('a', $size)) - '0/0'"
- ));
-}
-
-# Get the current insert LSN of a node, in bytes.
-sub get_insert_lsn
-{
- my $node = shift;
- return int(
- $node->safe_psql(
- 'postgres', "SELECT pg_current_wal_insert_lsn() - '0/0'"));
-}
-
-# Get GUC value, converted to an int.
-sub get_int_setting
-{
......@@ -179,69 +112,6 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
- $BIG_ENDIAN ? $xlp_pageaddr : 0, $xlp_rem_len);
-}
-
-# Make sure we are far away enough from the end of a page that we could insert
-# a couple of small records. This inserts a few records of a fixed size, until
-# the threshold gets close enough to the end of the WAL page inserting records
-# to.
-sub advance_out_of_record_splitting_zone
-{
- my $node = shift;
-
- my $page_threshold = 2000;
- my $end_lsn = get_insert_lsn($node);
- my $page_offset = $end_lsn % $WAL_BLOCK_SIZE;
- while ($page_offset >= $WAL_BLOCK_SIZE - $page_threshold)
- {
- emit_message($node, $page_threshold);
- $end_lsn = get_insert_lsn($node);
- $page_offset = $end_lsn % $WAL_BLOCK_SIZE;
- }
- return $end_lsn;
-}
-
-# Advance so close to the end of a page that an XLogRecordHeader would not
-# fit on it.
-sub advance_to_record_splitting_zone
-{
- my $node = shift;
-
- my $end_lsn = get_insert_lsn($node);
- my $page_offset = $end_lsn % $WAL_BLOCK_SIZE;
-
- # Get fairly close to the end of a page in big steps
- while ($page_offset <= $WAL_BLOCK_SIZE - 512)
- {
- emit_message($node, $WAL_BLOCK_SIZE - $page_offset - 256);
- $end_lsn = get_insert_lsn($node);
- $page_offset = $end_lsn % $WAL_BLOCK_SIZE;
- }
-
- # Calibrate our message size so that we can get closer 8 bytes at
- # a time.
- my $message_size = $WAL_BLOCK_SIZE - 80;
- while ($page_offset <= $WAL_BLOCK_SIZE - $RECORD_HEADER_SIZE)
- {
- emit_message($node, $message_size);
- $end_lsn = get_insert_lsn($node);
-
- my $old_offset = $page_offset;
- $page_offset = $end_lsn % $WAL_BLOCK_SIZE;
-
- # Adjust the message size until it causes 8 bytes changes in
- # offset, enough to be able to split a record header.
- my $delta = $page_offset - $old_offset;
- if ($delta > 8)
- {
- $message_size -= 8;
- }
- elsif ($delta <= 0)
- {
- $message_size += 8;
- }
- }
- return $end_lsn;
-}
-
-# Setup a new node. The configuration chosen here minimizes the number
-# of arbitrary records that could get generated in a cluster. Enlarging
-# checkpoint_timeout avoids noise with checkpoint activity. wal_level
......@@ -277,8 +147,8 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
-###########################################################################
-
-# xl_tot_len is 0 (a common case, we hit trailing zeroes).
-emit_message($node, 0);
-$end_lsn = advance_out_of_record_splitting_zone($node);
-$node->emit_wal(0);
-$end_lsn = $node->advance_wal_out_of_record_splitting_zone($WAL_BLOCK_SIZE);
-$node->stop('immediate');
-my $log_size = -s $node->logfile;
-$node->start;
......@@ -288,10 +158,10 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
- "xl_tot_len zero");
-
-# xl_tot_len is < 24 (presumably recycled garbage).
-emit_message($node, 0);
-$end_lsn = advance_out_of_record_splitting_zone($node);
-$node->emit_wal(0);
-$end_lsn = $node->advance_wal_out_of_record_splitting_zone($WAL_BLOCK_SIZE);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn, build_record_header(23));
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE, build_record_header(23));
-$log_size = -s $node->logfile;
-$node->start;
-ok( $node->log_contains(
......@@ -301,10 +171,10 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
-
-# xl_tot_len in final position, not big enough to span into a new page but
-# also not eligible for regular record header validation
-emit_message($node, 0);
-$end_lsn = advance_to_record_splitting_zone($node);
-$node->emit_wal(0);
-$end_lsn = $node->advance_wal_to_record_splitting_zone($WAL_BLOCK_SIZE);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn, build_record_header(1));
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE, build_record_header(1));
-$log_size = -s $node->logfile;
-$node->start;
-ok( $node->log_contains(
......@@ -313,10 +183,10 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
- "xl_tot_len short at end-of-page");
-
-# Need more pages, but xl_prev check fails first.
-emit_message($node, 0);
-$end_lsn = advance_out_of_record_splitting_zone($node);
-$node->emit_wal(0);
-$end_lsn = $node->advance_wal_out_of_record_splitting_zone($WAL_BLOCK_SIZE);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn,
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE,
- build_record_header(2 * 1024 * 1024 * 1024, 0, 0xdeadbeef));
-$log_size = -s $node->logfile;
-$node->start;
......@@ -325,12 +195,12 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
- "xl_prev bad");
-
-# xl_crc check fails.
-emit_message($node, 0);
-advance_out_of_record_splitting_zone($node);
-$end_lsn = emit_message($node, 10);
-$node->emit_wal(0);
-$node->advance_wal_out_of_record_splitting_zone($WAL_BLOCK_SIZE);
-$end_lsn = $node->emit_wal(10);
-$node->stop('immediate');
-# Corrupt a byte in that record, breaking its CRC.
-write_wal($node, $TLI, $end_lsn - 8, '!');
-$node->write_wal($TLI, $end_lsn - 8, $WAL_SEGMENT_SIZE, '!');
-$log_size = -s $node->logfile;
-$node->start;
-ok( $node->log_contains(
......@@ -347,11 +217,11 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
-# written to WAL.
-
-# Good xl_prev, we hit zero page next (zero magic).
-emit_message($node, 0);
-$prev_lsn = advance_out_of_record_splitting_zone($node);
-$end_lsn = emit_message($node, 0);
-$node->emit_wal(0);
-$prev_lsn = $node->advance_wal_out_of_record_splitting_zone($WAL_BLOCK_SIZE);
-$end_lsn = $node->emit_wal(0);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn,
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE,
- build_record_header(2 * 1024 * 1024 * 1024, 0, $prev_lsn));
-$log_size = -s $node->logfile;
-$node->start;
......@@ -359,16 +229,14 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
- "xlp_magic zero");
-
-# Good xl_prev, we hit garbage page next (bad magic).
-emit_message($node, 0);
-$prev_lsn = advance_out_of_record_splitting_zone($node);
-$end_lsn = emit_message($node, 0);
-$node->emit_wal(0);
-$prev_lsn = $node->advance_wal_out_of_record_splitting_zone($WAL_BLOCK_SIZE);
-$end_lsn = $node->emit_wal(0);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn,
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE,
- build_record_header(2 * 1024 * 1024 * 1024, 0, $prev_lsn));
-write_wal(
- $node, $TLI,
- start_of_next_page($end_lsn),
- build_page_header(0xcafe, 0, 1, 0));
-$node->write_wal($TLI, start_of_next_page($end_lsn),
- $WAL_SEGMENT_SIZE, build_page_header(0xcafe, 0, 1, 0));
-$log_size = -s $node->logfile;
-$node->start;
-ok($node->log_contains("invalid magic number CAFE ", $log_size),
......@@ -376,16 +244,14 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
-
-# Good xl_prev, we hit typical recycled page (good xlp_magic, bad
-# xlp_pageaddr).
-emit_message($node, 0);
-$prev_lsn = advance_out_of_record_splitting_zone($node);
-$end_lsn = emit_message($node, 0);
-$node->emit_wal(0);
-$prev_lsn = $node->advance_wal_out_of_record_splitting_zone($WAL_BLOCK_SIZE);
-$end_lsn = $node->emit_wal(0);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn,
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE,
- build_record_header(2 * 1024 * 1024 * 1024, 0, $prev_lsn));
-write_wal(
- $node, $TLI,
- start_of_next_page($end_lsn),
- build_page_header($XLP_PAGE_MAGIC, 0, 1, 0xbaaaaaad));
-$node->write_wal($TLI, start_of_next_page($end_lsn),
- $WAL_SEGMENT_SIZE, build_page_header($XLP_PAGE_MAGIC, 0, 1, 0xbaaaaaad));
-$log_size = -s $node->logfile;
-$node->start;
-ok( $node->log_contains(
......@@ -393,15 +259,16 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
- "xlp_pageaddr bad");
-
-# Good xl_prev, xlp_magic, xlp_pageaddr, but bogus xlp_info.
-emit_message($node, 0);
-$prev_lsn = advance_out_of_record_splitting_zone($node);
-$end_lsn = emit_message($node, 0);
-$node->emit_wal(0);
-$prev_lsn = $node->advance_wal_out_of_record_splitting_zone($WAL_BLOCK_SIZE);
-$end_lsn = $node->emit_wal(0);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn,
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE,
- build_record_header(2 * 1024 * 1024 * 1024, 42, $prev_lsn));
-write_wal(
- $node, $TLI,
-$node->write_wal(
- $TLI,
- start_of_next_page($end_lsn),
- $WAL_SEGMENT_SIZE,
- build_page_header(
- $XLP_PAGE_MAGIC, 0x1234, 1, start_of_next_page($end_lsn)));
-$log_size = -s $node->logfile;
......@@ -411,15 +278,14 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
-
-# Good xl_prev, xlp_magic, xlp_pageaddr, but xlp_info doesn't mention
-# continuation record.
-emit_message($node, 0);
-$prev_lsn = advance_out_of_record_splitting_zone($node);
-$end_lsn = emit_message($node, 0);
-$node->emit_wal(0);
-$prev_lsn = $node->advance_wal_out_of_record_splitting_zone($WAL_BLOCK_SIZE);
-$end_lsn = $node->emit_wal(0);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn,
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE,
- build_record_header(2 * 1024 * 1024 * 1024, 42, $prev_lsn));
-write_wal(
- $node, $TLI,
- start_of_next_page($end_lsn),
-$node->write_wal($TLI, start_of_next_page($end_lsn),
- $WAL_SEGMENT_SIZE,
- build_page_header($XLP_PAGE_MAGIC, 0, 1, start_of_next_page($end_lsn)));
-$log_size = -s $node->logfile;
-$node->start;
......@@ -428,15 +294,16 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
-
-# Good xl_prev, xlp_magic, xlp_pageaddr, xlp_info but xlp_rem_len doesn't add
-# up.
-emit_message($node, 0);
-$prev_lsn = advance_out_of_record_splitting_zone($node);
-$end_lsn = emit_message($node, 0);
-$node->emit_wal(0);
-$prev_lsn = $node->advance_wal_out_of_record_splitting_zone($WAL_BLOCK_SIZE);
-$end_lsn = $node->emit_wal(0);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn,
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE,
- build_record_header(2 * 1024 * 1024 * 1024, 42, $prev_lsn));
-write_wal(
- $node, $TLI,
-$node->write_wal(
- $TLI,
- start_of_next_page($end_lsn),
- $WAL_SEGMENT_SIZE,
- build_page_header(
- $XLP_PAGE_MAGIC, $XLP_FIRST_IS_CONTRECORD,
- 1, start_of_next_page($end_lsn),
......@@ -453,10 +320,10 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
-###########################################################################
-
-# xl_prev is bad and xl_tot_len is too big, but we'll check xlp_magic first.
-emit_message($node, 0);
-$end_lsn = advance_to_record_splitting_zone($node);
-$node->emit_wal(0);
-$end_lsn = $node->advance_wal_to_record_splitting_zone($WAL_BLOCK_SIZE);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn,
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE,
- build_record_header(2 * 1024 * 1024 * 1024, 0, 0xdeadbeef));
-$log_size = -s $node->logfile;
-$node->start;
......@@ -464,14 +331,15 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
- "xlp_magic zero (split record header)");
-
-# And we'll also check xlp_pageaddr before any header checks.
-emit_message($node, 0);
-$end_lsn = advance_to_record_splitting_zone($node);
-$node->emit_wal(0);
-$end_lsn = $node->advance_wal_to_record_splitting_zone($WAL_BLOCK_SIZE);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn,
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE,
- build_record_header(2 * 1024 * 1024 * 1024, 0, 0xdeadbeef));
-write_wal(
- $node, $TLI,
-$node->write_wal(
- $TLI,
- start_of_next_page($end_lsn),
- $WAL_SEGMENT_SIZE,
- build_page_header(
- $XLP_PAGE_MAGIC, $XLP_FIRST_IS_CONTRECORD, 1, 0xbaaaaaad));
-$log_size = -s $node->logfile;
......@@ -482,14 +350,15 @@ https://www.postgresql.org/message-id/flat/ZU5yKecW5yMKKhtp%40msg.df7cb.de
-
-# We'll also discover that xlp_rem_len doesn't add up before any
-# header checks,
-emit_message($node, 0);
-$end_lsn = advance_to_record_splitting_zone($node);
-$node->emit_wal(0);
-$end_lsn = $node->advance_wal_to_record_splitting_zone($WAL_BLOCK_SIZE);
-$node->stop('immediate');
-write_wal($node, $TLI, $end_lsn,
-$node->write_wal($TLI, $end_lsn, $WAL_SEGMENT_SIZE,
- build_record_header(2 * 1024 * 1024 * 1024, 0, 0xdeadbeef));
-write_wal(
- $node, $TLI,
-$node->write_wal(
- $TLI,
- start_of_next_page($end_lsn),
- $WAL_SEGMENT_SIZE,
- build_page_header(
- $XLP_PAGE_MAGIC, $XLP_FIRST_IS_CONTRECORD,
- 1, start_of_next_page($end_lsn),
......
......@@ -106,10 +106,10 @@ pg_dump <replaceable class="parameter">dbname</replaceable> &gt; <replaceable cl
<para>
Text files created by <application>pg_dump</application> are intended to
be read in by the <application>psql</application> program. The
general command form to restore a dump is
be read by the <application>psql</application> program using its default
settings. The general command form to restore a text dump is
<synopsis>
psql <replaceable class="parameter">dbname</replaceable> &lt; <replaceable class="parameter">dumpfile</replaceable>
psql -X <replaceable class="parameter">dbname</replaceable> &lt; <replaceable class="parameter">dumpfile</replaceable>
</synopsis>
where <replaceable class="parameter">dumpfile</replaceable> is the
file output by the <application>pg_dump</application> command. The database <replaceable
......@@ -117,11 +117,17 @@ psql <replaceable class="parameter">dbname</replaceable> &lt; <replaceable class
command, so you must create it yourself from <literal>template0</literal>
before executing <application>psql</application> (e.g., with
<literal>createdb -T template0 <replaceable
class="parameter">dbname</replaceable></literal>). <application>psql</application>
class="parameter">dbname</replaceable></literal>).
To ensure <application>psql</application> runs with its default settings,
use the <option>-X</option> (<option>--no-psqlrc</option>) option.
<application>psql</application>
supports options similar to <application>pg_dump</application> for specifying
the database server to connect to and the user name to use. See
the <xref linkend="app-psql"/> reference page for more information.
Non-text file dumps are restored using the <xref
</para>
<para>
Non-text file dumps should be restored using the <xref
linkend="app-pgrestore"/> utility.
</para>
......@@ -141,7 +147,7 @@ psql <replaceable class="parameter">dbname</replaceable> &lt; <replaceable class
behavior and have <application>psql</application> exit with an
exit status of 3 if an SQL error occurs:
<programlisting>
psql --set ON_ERROR_STOP=on <replaceable>dbname</replaceable> &lt; <replaceable>dumpfile</replaceable>
psql -X --set ON_ERROR_STOP=on <replaceable>dbname</replaceable> &lt; <replaceable>dumpfile</replaceable>
</programlisting>
Either way, you will only have a partially restored database.
Alternatively, you can specify that the whole dump should be
......@@ -160,7 +166,7 @@ psql --set ON_ERROR_STOP=on <replaceable>dbname</replaceable> &lt; <replaceable>
write to or read from pipes makes it possible to dump a database
directly from one server to another, for example:
<programlisting>
pg_dump -h <replaceable>host1</replaceable> <replaceable>dbname</replaceable> | psql -h <replaceable>host2</replaceable> <replaceable>dbname</replaceable>
pg_dump -h <replaceable>host1</replaceable> <replaceable>dbname</replaceable> | psql -X -h <replaceable>host2</replaceable> <replaceable>dbname</replaceable>
</programlisting>
</para>
......@@ -205,7 +211,7 @@ pg_dumpall &gt; <replaceable>dumpfile</replaceable>
</synopsis>
The resulting dump can be restored with <application>psql</application>:
<synopsis>
psql -f <replaceable class="parameter">dumpfile</replaceable> postgres
psql -X -f <replaceable class="parameter">dumpfile</replaceable> postgres
</synopsis>
(Actually, you can specify any existing database name to start from,
but if you are loading into an empty cluster then <literal>postgres</literal>
......
......@@ -546,5 +546,23 @@ ssimkovi@ag.or.at
</confgroup>
</biblioentry>
<biblioentry id="ston92">
<biblioset relation="article">
<title><ulink url="https://dsf.berkeley.edu/papers/S2K-91-05.pdf">
An overview of the Sequoia 2000 project
</ulink></title>
<authorgroup>
<author>
<firstname>M.</firstname>
<surname>Stonebraker</surname>
</author>
</authorgroup>
</biblioset>
<biblioset relation="journal">
<title>Digest of Papers COMPCON Spring 1992</title>
<date>1992</date>
<pagenums>383&ndash;388</pagenums>
</biblioset>
</biblioentry>
</bibliodiv>
</bibliography>
......@@ -118,11 +118,11 @@ SELECT 10000000
=# EXPLAIN ANALYZE SELECT * FROM tbloom WHERE i2 = 898732 AND i5 = 123451;
QUERY PLAN
-------------------------------------------------------------------&zwsp;-----------------------------------
Seq Scan on tbloom (cost=0.00..2137.14 rows=3 width=24) (actual time=15.480..15.480 rows=0 loops=1)
Seq Scan on tbloom (cost=0.00..213744.00 rows=250 width=24) (actual time=357.059..357.059 rows=0 loops=1)
Filter: ((i2 = 898732) AND (i5 = 123451))
Rows Removed by Filter: 100000
Planning Time: 0.340 ms
Execution Time: 15.501 ms
Rows Removed by Filter: 10000000
Planning Time: 0.346 ms
Execution Time: 357.076 ms
(5 rows)
</programlisting>
</para>
......@@ -136,16 +136,16 @@ CREATE INDEX
=# SELECT pg_size_pretty(pg_relation_size('btreeidx'));
pg_size_pretty
----------------
3976 kB
386 MB
(1 row)
=# EXPLAIN ANALYZE SELECT * FROM tbloom WHERE i2 = 898732 AND i5 = 123451;
QUERY PLAN
-------------------------------------------------------------------&zwsp;-----------------------------------
Seq Scan on tbloom (cost=0.00..2137.00 rows=2 width=24) (actual time=12.604..12.604 rows=0 loops=1)
Seq Scan on tbloom (cost=0.00..213744.00 rows=2 width=24) (actual time=351.016..351.017 rows=0 loops=1)
Filter: ((i2 = 898732) AND (i5 = 123451))
Rows Removed by Filter: 100000
Planning Time: 0.155 ms
Execution Time: 12.617 ms
Rows Removed by Filter: 10000000
Planning Time: 0.138 ms
Execution Time: 351.035 ms
(5 rows)
</programlisting>
</para>
......@@ -159,19 +159,19 @@ CREATE INDEX
=# SELECT pg_size_pretty(pg_relation_size('bloomidx'));
pg_size_pretty
----------------
1584 kB
153 MB
(1 row)
=# EXPLAIN ANALYZE SELECT * FROM tbloom WHERE i2 = 898732 AND i5 = 123451;
QUERY PLAN
-------------------------------------------------------------------&zwsp;--------------------------------------------------
Bitmap Heap Scan on tbloom (cost=1792.00..1799.69 rows=2 width=24) (actual time=0.384..0.384 rows=0 loops=1)
Bitmap Heap Scan on tbloom (cost=1792.00..1799.69 rows=2 width=24) (actual time=22.605..22.606 rows=0 loops=1)
Recheck Cond: ((i2 = 898732) AND (i5 = 123451))
Rows Removed by Index Recheck: 26
Heap Blocks: exact=26
-&gt; Bitmap Index Scan on bloomidx (cost=0.00..1792.00 rows=2 width=0) (actual time=0.350..0.350 rows=26 loops=1)
Rows Removed by Index Recheck: 2300
Heap Blocks: exact=2256
-&gt; Bitmap Index Scan on bloomidx (cost=0.00..178436.00 rows=1 width=0) (actual time=20.005..20.005 rows=2300 loops=1)
Index Cond: ((i2 = 898732) AND (i5 = 123451))
Planning Time: 0.122 ms
Execution Time: 0.407 ms
Planning Time: 0.099 ms
Execution Time: 22.632 ms
(8 rows)
</programlisting>
</para>
......@@ -197,21 +197,21 @@ CREATE INDEX
=# EXPLAIN ANALYZE SELECT * FROM tbloom WHERE i2 = 898732 AND i5 = 123451;
QUERY PLAN
-------------------------------------------------------------------&zwsp;--------------------------------------------------------
Bitmap Heap Scan on tbloom (cost=24.34..32.03 rows=2 width=24) (actual time=0.032..0.033 rows=0 loops=1)
Bitmap Heap Scan on tbloom (cost=9.29..13.30 rows=1 width=24) (actual time=0.032..0.033 rows=0 loops=1)
Recheck Cond: ((i5 = 123451) AND (i2 = 898732))
-&gt; BitmapAnd (cost=24.34..24.34 rows=2 width=0) (actual time=0.029..0.030 rows=0 loops=1)
-&gt; Bitmap Index Scan on btreeidx5 (cost=0.00..12.04 rows=500 width=0) (actual time=0.029..0.029 rows=0 loops=1)
-&gt; BitmapAnd (cost=9.29..9.29 rows=1 width=0) (actual time=0.047..0.047 rows=0 loops=1)
-&gt; Bitmap Index Scan on btreeidx5 (cost=0.00..4.52 rows=11 width=0) (actual time=0.026..0.026 rows=7 loops=1)
Index Cond: (i5 = 123451)
-&gt; Bitmap Index Scan on btreeidx2 (cost=0.00..12.04 rows=500 width=0) (never executed)
-&gt; Bitmap Index Scan on btreeidx2 (cost=0.00..4.52 rows=11 width=0) (actual time=0.007..0.007 rows=8 loops=1)
Index Cond: (i2 = 898732)
Planning Time: 0.537 ms
Execution Time: 0.064 ms
Planning Time: 0.264 ms
Execution Time: 0.047 ms
(9 rows)
</programlisting>
Although this query runs much faster than with either of the single
indexes, we pay a penalty in index size. Each of the single-column
btree indexes occupies 2 MB, so the total space needed is 12 MB,
eight times the space used by the bloom index.
btree indexes occupies 88.5 MB, so the total space needed is 531 MB,
over three times the space used by the bloom index.
</para>
</sect2>
......
......@@ -1065,7 +1065,7 @@ CREATE COLLATION ignore_accents (provider = icu, locale = 'und-u-ks-level1-kc-tr
<entry>Traditional Chinese, Taiwanese</entry>
<entry>Yes</entry>
<entry>Yes</entry>
<entry>1&ndash;3</entry>
<entry>1&ndash;4</entry>
<entry></entry>
</row>
<row>
......
......@@ -2141,24 +2141,27 @@ TIMESTAMP '2004-10-19 10:23:54+02'
<programlisting>
TIMESTAMP WITH TIME ZONE '2004-10-19 10:23:54+02'
</programlisting>
</para>
In a literal that has been determined to be <type>timestamp without time
<para>
In a value that has been determined to be <type>timestamp without time
zone</type>, <productname>PostgreSQL</productname> will silently ignore
any time zone indication.
That is, the resulting value is derived from the date/time
fields in the input value, and is not adjusted for time zone.
fields in the input string, and is not adjusted for time zone.
</para>
<para>
For <type>timestamp with time zone</type>, the internally stored
value is always in UTC (Universal
Coordinated Time, traditionally known as Greenwich Mean Time,
<acronym>GMT</acronym>). An input value that has an explicit
time zone specified is converted to UTC using the appropriate offset
For <type>timestamp with time zone</type> values, an input string
that includes an explicit time zone will be converted to UTC
(<glossterm linkend="glossary-utc">Universal Coordinated
Time</glossterm>) using the appropriate offset
for that time zone. If no time zone is stated in the input string,
then it is assumed to be in the time zone indicated by the system's
<xref linkend="guc-timezone"/> parameter, and is converted to UTC using the
offset for the <varname>timezone</varname> zone.
In either case, the value is stored internally as UTC, and the
originally stated or assumed time zone is not retained.
</para>
<para>
......
......@@ -674,6 +674,11 @@
</glossdef>
</glossentry>
<glossentry>
<glossterm>GMT</glossterm>
<glosssee otherterm="glossary-utc" />
</glossentry>
<glossentry id="glossary-grant">
<glossterm>Grant</glossterm>
<glossdef>
......@@ -1769,6 +1774,17 @@
</glossdef>
</glossentry>
<glossentry id="glossary-utc">
<glossterm>UTC</glossterm>
<glossdef>
<para>
Universal Coordinated Time, the primary global time reference,
approximately the time prevailing at the zero meridian of longitude.
Often but inaccurately referred to as GMT (Greenwich Mean Time).
</para>
</glossdef>
</glossentry>
<glossentry id="glossary-vacuum">
<glossterm>Vacuum</glossterm>
<glossdef>
......
......@@ -69,9 +69,8 @@
url="https://www.ibm.com/">IBM</ulink>) picked up the code and
commercialized it. In late 1992,
<productname>POSTGRES</productname> became the primary data manager
for the
<ulink url="http://meteora.ucsd.edu/s2k/s2k_home.html">
Sequoia 2000 scientific computing project</ulink>.
for the Sequoia 2000 scientific computing project described in
<xref linkend="ston92"/>.
</para>
<para>
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!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 http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix L. Acronyms</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="limits.html" title="Appendix K. PostgreSQL Limits" /><link rel="next" href="glossary.html" title="Appendix M. Glossary" /></head><body id="docContent" class="container-fluid col-10"><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">Appendix L. Acronyms</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="limits.html" title="Appendix K. PostgreSQL Limits">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="appendixes.html" title="Part VIII. Appendixes">Up</a></td><th width="60%" align="center">Part VIII. Appendixes</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 13.18 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="glossary.html" title="Appendix M. Glossary">Next</a></td></tr></table><hr></hr></div><div class="appendix" id="ACRONYMS"><div class="titlepage"><div><div><h2 class="title">Appendix L. Acronyms</h2></div></div></div><p>
<!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 http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix L. Acronyms</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="limits.html" title="Appendix K. PostgreSQL Limits" /><link rel="next" href="glossary.html" title="Appendix M. Glossary" /></head><body id="docContent" class="container-fluid col-10"><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">Appendix L. Acronyms</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="limits.html" title="Appendix K. PostgreSQL Limits">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="appendixes.html" title="Part VIII. Appendixes">Up</a></td><th width="60%" align="center">Part VIII. Appendixes</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 13.19 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="glossary.html" title="Appendix M. Glossary">Next</a></td></tr></table><hr></hr></div><div class="appendix" id="ACRONYMS"><div class="titlepage"><div><div><h2 class="title">Appendix L. Acronyms</h2></div></div></div><p>
This is a list of acronyms commonly used in the <span class="productname">PostgreSQL</span>
documentation and in discussions about <span class="productname">PostgreSQL</span>.
......@@ -134,7 +134,7 @@
<a class="ulink" href="https://en.wikipedia.org/wiki/Pluggable_Authentication_Modules" target="_top">Pluggable
Authentication Modules</a>
</p></dd><dt><span class="term"><acronym class="acronym">PGSQL</acronym></span></dt><dd><p>
<a class="link" href="index.html" title="PostgreSQL 13.18 Documentation"><span class="productname">PostgreSQL</span></a>
<a class="link" href="index.html" title="PostgreSQL 13.19 Documentation"><span class="productname">PostgreSQL</span></a>
</p></dd><dt><span class="term"><acronym class="acronym">PGXS</acronym></span></dt><dd><p>
<a class="link" href="extend-pgxs.html" title="37.18. Extension Building Infrastructure"><span class="productname">PostgreSQL</span> Extension System</a>
</p></dd><dt><span class="term"><acronym class="acronym">PID</acronym></span></dt><dd><p>
......@@ -209,4 +209,4 @@
<a class="ulink" href="https://en.wikipedia.org/wiki/XML" target="_top">Extensible Markup
Language</a>
</p></dd></dl></div><p>
</p></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="limits.html" title="Appendix K. PostgreSQL Limits">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendixes.html" title="Part VIII. Appendixes">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="glossary.html" title="Appendix M. Glossary">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix K. <span xmlns="http://www.w3.org/1999/xhtml" class="productname">PostgreSQL</span> Limits </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 13.18 Documentation">Home</a></td><td width="40%" align="right" valign="top"> Appendix M. Glossary</td></tr></table></div></body></html>
\ No newline at end of file
</p></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="limits.html" title="Appendix K. PostgreSQL Limits">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendixes.html" title="Part VIII. Appendixes">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="glossary.html" title="Appendix M. Glossary">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix K. <span xmlns="http://www.w3.org/1999/xhtml" class="productname">PostgreSQL</span> Limits </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 13.19 Documentation">Home</a></td><td width="40%" align="right" valign="top"> Appendix M. Glossary</td></tr></table></div></body></html>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!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 http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part III. Server Administration</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="parallel-safety.html" title="15.4. Parallel Safety" /><link rel="next" href="installation.html" title="Chapter 16. Installation from Source Code" /></head><body id="docContent" class="container-fluid col-10"><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">Part III. Server Administration</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="parallel-safety.html" title="15.4. Parallel Safety">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="index.html" title="PostgreSQL 13.18 Documentation">Up</a></td><th width="60%" align="center">PostgreSQL 13.18 Documentation</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 13.18 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="installation.html" title="Chapter 16. Installation from Source Code">Next</a></td></tr></table><hr></hr></div><div class="part" id="ADMIN"><div class="titlepage"><div><div><h1 class="title">Part III. Server Administration</h1></div></div></div><div class="partintro" id="id-1.6.2"><div></div><p>
<!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 http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part III. Server Administration</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="parallel-safety.html" title="15.4. Parallel Safety" /><link rel="next" href="installation.html" title="Chapter 16. Installation from Source Code" /></head><body id="docContent" class="container-fluid col-10"><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">Part III. Server Administration</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="parallel-safety.html" title="15.4. Parallel Safety">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="index.html" title="PostgreSQL 13.19 Documentation">Up</a></td><th width="60%" align="center">PostgreSQL 13.19 Documentation</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 13.19 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="installation.html" title="Chapter 16. Installation from Source Code">Next</a></td></tr></table><hr></hr></div><div class="part" id="ADMIN"><div class="titlepage"><div><div><h1 class="title">Part III. Server Administration</h1></div></div></div><div class="partintro" id="id-1.6.2"><div></div><p>
This part covers topics that are of interest to a
<span class="productname">PostgreSQL</span> database administrator. This includes
installation of the software, set up and configuration of the
......@@ -23,4 +23,4 @@
the <span class="productname">PostgreSQL</span> database system. Readers are
encouraged to look at <a class="xref" href="tutorial.html" title="Part I. Tutorial">Part I</a> and <a class="xref" href="sql.html" title="Part II. The SQL Language">Part II</a> for additional information.
</p><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="installation.html">16. Installation from Source Code</a></span></dt><dd><dl><dt><span class="sect1"><a href="install-short.html">16.1. Short Version</a></span></dt><dt><span class="sect1"><a href="install-requirements.html">16.2. Requirements</a></span></dt><dt><span class="sect1"><a href="install-getsource.html">16.3. Getting the Source</a></span></dt><dt><span class="sect1"><a href="install-procedure.html">16.4. Installation Procedure</a></span></dt><dt><span class="sect1"><a href="install-post.html">16.5. Post-Installation Setup</a></span></dt><dt><span class="sect1"><a href="supported-platforms.html">16.6. Supported Platforms</a></span></dt><dt><span class="sect1"><a href="installation-platform-notes.html">16.7. Platform-Specific Notes</a></span></dt></dl></dd><dt><span class="chapter"><a href="install-windows.html">17. Installation from Source Code on <span class="productname">Windows</span></a></span></dt><dd><dl><dt><span class="sect1"><a href="install-windows-full.html">17.1. Building with <span class="productname">Visual C++</span> or the
<span class="productname">Microsoft Windows SDK</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="runtime.html">18. Server Setup and Operation</a></span></dt><dd><dl><dt><span class="sect1"><a href="postgres-user.html">18.1. The <span class="productname">PostgreSQL</span> User Account</a></span></dt><dt><span class="sect1"><a href="creating-cluster.html">18.2. Creating a Database Cluster</a></span></dt><dt><span class="sect1"><a href="server-start.html">18.3. Starting the Database Server</a></span></dt><dt><span class="sect1"><a href="kernel-resources.html">18.4. Managing Kernel Resources</a></span></dt><dt><span class="sect1"><a href="server-shutdown.html">18.5. Shutting Down the Server</a></span></dt><dt><span class="sect1"><a href="upgrading.html">18.6. Upgrading a <span class="productname">PostgreSQL</span> Cluster</a></span></dt><dt><span class="sect1"><a href="preventing-server-spoofing.html">18.7. Preventing Server Spoofing</a></span></dt><dt><span class="sect1"><a href="encryption-options.html">18.8. Encryption Options</a></span></dt><dt><span class="sect1"><a href="ssl-tcp.html">18.9. Secure TCP/IP Connections with SSL</a></span></dt><dt><span class="sect1"><a href="gssapi-enc.html">18.10. Secure TCP/IP Connections with GSSAPI Encryption</a></span></dt><dt><span class="sect1"><a href="ssh-tunnels.html">18.11. Secure TCP/IP Connections with <span class="application">SSH</span> Tunnels</a></span></dt><dt><span class="sect1"><a href="event-log-registration.html">18.12. Registering <span class="application">Event Log</span> on <span class="systemitem">Windows</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="runtime-config.html">19. Server Configuration</a></span></dt><dd><dl><dt><span class="sect1"><a href="config-setting.html">19.1. Setting Parameters</a></span></dt><dt><span class="sect1"><a href="runtime-config-file-locations.html">19.2. File Locations</a></span></dt><dt><span class="sect1"><a href="runtime-config-connection.html">19.3. Connections and Authentication</a></span></dt><dt><span class="sect1"><a href="runtime-config-resource.html">19.4. Resource Consumption</a></span></dt><dt><span class="sect1"><a href="runtime-config-wal.html">19.5. Write Ahead Log</a></span></dt><dt><span class="sect1"><a href="runtime-config-replication.html">19.6. Replication</a></span></dt><dt><span class="sect1"><a href="runtime-config-query.html">19.7. Query Planning</a></span></dt><dt><span class="sect1"><a href="runtime-config-logging.html">19.8. Error Reporting and Logging</a></span></dt><dt><span class="sect1"><a href="runtime-config-statistics.html">19.9. Run-time Statistics</a></span></dt><dt><span class="sect1"><a href="runtime-config-autovacuum.html">19.10. Automatic Vacuuming</a></span></dt><dt><span class="sect1"><a href="runtime-config-client.html">19.11. Client Connection Defaults</a></span></dt><dt><span class="sect1"><a href="runtime-config-locks.html">19.12. Lock Management</a></span></dt><dt><span class="sect1"><a href="runtime-config-compatible.html">19.13. Version and Platform Compatibility</a></span></dt><dt><span class="sect1"><a href="runtime-config-error-handling.html">19.14. Error Handling</a></span></dt><dt><span class="sect1"><a href="runtime-config-preset.html">19.15. Preset Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-custom.html">19.16. Customized Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-developer.html">19.17. Developer Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-short.html">19.18. Short Options</a></span></dt></dl></dd><dt><span class="chapter"><a href="client-authentication.html">20. Client Authentication</a></span></dt><dd><dl><dt><span class="sect1"><a href="auth-pg-hba-conf.html">20.1. The <code class="filename">pg_hba.conf</code> File</a></span></dt><dt><span class="sect1"><a href="auth-username-maps.html">20.2. User Name Maps</a></span></dt><dt><span class="sect1"><a href="auth-methods.html">20.3. Authentication Methods</a></span></dt><dt><span class="sect1"><a href="auth-trust.html">20.4. Trust Authentication</a></span></dt><dt><span class="sect1"><a href="auth-password.html">20.5. Password Authentication</a></span></dt><dt><span class="sect1"><a href="gssapi-auth.html">20.6. GSSAPI Authentication</a></span></dt><dt><span class="sect1"><a href="sspi-auth.html">20.7. SSPI Authentication</a></span></dt><dt><span class="sect1"><a href="auth-ident.html">20.8. Ident Authentication</a></span></dt><dt><span class="sect1"><a href="auth-peer.html">20.9. Peer Authentication</a></span></dt><dt><span class="sect1"><a href="auth-ldap.html">20.10. LDAP Authentication</a></span></dt><dt><span class="sect1"><a href="auth-radius.html">20.11. RADIUS Authentication</a></span></dt><dt><span class="sect1"><a href="auth-cert.html">20.12. Certificate Authentication</a></span></dt><dt><span class="sect1"><a href="auth-pam.html">20.13. PAM Authentication</a></span></dt><dt><span class="sect1"><a href="auth-bsd.html">20.14. BSD Authentication</a></span></dt><dt><span class="sect1"><a href="client-authentication-problems.html">20.15. Authentication Problems</a></span></dt></dl></dd><dt><span class="chapter"><a href="user-manag.html">21. Database Roles</a></span></dt><dd><dl><dt><span class="sect1"><a href="database-roles.html">21.1. Database Roles</a></span></dt><dt><span class="sect1"><a href="role-attributes.html">21.2. Role Attributes</a></span></dt><dt><span class="sect1"><a href="role-membership.html">21.3. Role Membership</a></span></dt><dt><span class="sect1"><a href="role-removal.html">21.4. Dropping Roles</a></span></dt><dt><span class="sect1"><a href="default-roles.html">21.5. Default Roles</a></span></dt><dt><span class="sect1"><a href="perm-functions.html">21.6. Function Security</a></span></dt></dl></dd><dt><span class="chapter"><a href="managing-databases.html">22. Managing Databases</a></span></dt><dd><dl><dt><span class="sect1"><a href="manage-ag-overview.html">22.1. Overview</a></span></dt><dt><span class="sect1"><a href="manage-ag-createdb.html">22.2. Creating a Database</a></span></dt><dt><span class="sect1"><a href="manage-ag-templatedbs.html">22.3. Template Databases</a></span></dt><dt><span class="sect1"><a href="manage-ag-config.html">22.4. Database Configuration</a></span></dt><dt><span class="sect1"><a href="manage-ag-dropdb.html">22.5. Destroying a Database</a></span></dt><dt><span class="sect1"><a href="manage-ag-tablespaces.html">22.6. Tablespaces</a></span></dt></dl></dd><dt><span class="chapter"><a href="charset.html">23. Localization</a></span></dt><dd><dl><dt><span class="sect1"><a href="locale.html">23.1. Locale Support</a></span></dt><dt><span class="sect1"><a href="collation.html">23.2. Collation Support</a></span></dt><dt><span class="sect1"><a href="multibyte.html">23.3. Character Set Support</a></span></dt></dl></dd><dt><span class="chapter"><a href="maintenance.html">24. Routine Database Maintenance Tasks</a></span></dt><dd><dl><dt><span class="sect1"><a href="routine-vacuuming.html">24.1. Routine Vacuuming</a></span></dt><dt><span class="sect1"><a href="routine-reindex.html">24.2. Routine Reindexing</a></span></dt><dt><span class="sect1"><a href="logfile-maintenance.html">24.3. Log File Maintenance</a></span></dt></dl></dd><dt><span class="chapter"><a href="backup.html">25. Backup and Restore</a></span></dt><dd><dl><dt><span class="sect1"><a href="backup-dump.html">25.1. <acronym class="acronym">SQL</acronym> Dump</a></span></dt><dt><span class="sect1"><a href="backup-file.html">25.2. File System Level Backup</a></span></dt><dt><span class="sect1"><a href="continuous-archiving.html">25.3. Continuous Archiving and Point-in-Time Recovery (PITR)</a></span></dt></dl></dd><dt><span class="chapter"><a href="high-availability.html">26. High Availability, Load Balancing, and Replication</a></span></dt><dd><dl><dt><span class="sect1"><a href="different-replication-solutions.html">26.1. Comparison of Different Solutions</a></span></dt><dt><span class="sect1"><a href="warm-standby.html">26.2. Log-Shipping Standby Servers</a></span></dt><dt><span class="sect1"><a href="warm-standby-failover.html">26.3. Failover</a></span></dt><dt><span class="sect1"><a href="log-shipping-alternative.html">26.4. Alternative Method for Log Shipping</a></span></dt><dt><span class="sect1"><a href="hot-standby.html">26.5. Hot Standby</a></span></dt></dl></dd><dt><span class="chapter"><a href="monitoring.html">27. Monitoring Database Activity</a></span></dt><dd><dl><dt><span class="sect1"><a href="monitoring-ps.html">27.1. Standard Unix Tools</a></span></dt><dt><span class="sect1"><a href="monitoring-stats.html">27.2. The Statistics Collector</a></span></dt><dt><span class="sect1"><a href="monitoring-locks.html">27.3. Viewing Locks</a></span></dt><dt><span class="sect1"><a href="progress-reporting.html">27.4. Progress Reporting</a></span></dt><dt><span class="sect1"><a href="dynamic-trace.html">27.5. Dynamic Tracing</a></span></dt></dl></dd><dt><span class="chapter"><a href="diskusage.html">28. Monitoring Disk Usage</a></span></dt><dd><dl><dt><span class="sect1"><a href="disk-usage.html">28.1. Determining Disk Usage</a></span></dt><dt><span class="sect1"><a href="disk-full.html">28.2. Disk Full Failure</a></span></dt></dl></dd><dt><span class="chapter"><a href="wal.html">29. Reliability and the Write-Ahead Log</a></span></dt><dd><dl><dt><span class="sect1"><a href="wal-reliability.html">29.1. Reliability</a></span></dt><dt><span class="sect1"><a href="wal-intro.html">29.2. Write-Ahead Logging (<acronym class="acronym">WAL</acronym>)</a></span></dt><dt><span class="sect1"><a href="wal-async-commit.html">29.3. Asynchronous Commit</a></span></dt><dt><span class="sect1"><a href="wal-configuration.html">29.4. <acronym class="acronym">WAL</acronym> Configuration</a></span></dt><dt><span class="sect1"><a href="wal-internals.html">29.5. WAL Internals</a></span></dt></dl></dd><dt><span class="chapter"><a href="logical-replication.html">30. Logical Replication</a></span></dt><dd><dl><dt><span class="sect1"><a href="logical-replication-publication.html">30.1. Publication</a></span></dt><dt><span class="sect1"><a href="logical-replication-subscription.html">30.2. Subscription</a></span></dt><dt><span class="sect1"><a href="logical-replication-conflicts.html">30.3. Conflicts</a></span></dt><dt><span class="sect1"><a href="logical-replication-restrictions.html">30.4. Restrictions</a></span></dt><dt><span class="sect1"><a href="logical-replication-architecture.html">30.5. Architecture</a></span></dt><dt><span class="sect1"><a href="logical-replication-monitoring.html">30.6. Monitoring</a></span></dt><dt><span class="sect1"><a href="logical-replication-security.html">30.7. Security</a></span></dt><dt><span class="sect1"><a href="logical-replication-config.html">30.8. Configuration Settings</a></span></dt><dt><span class="sect1"><a href="logical-replication-quick-setup.html">30.9. Quick Setup</a></span></dt></dl></dd><dt><span class="chapter"><a href="jit.html">31. Just-in-Time Compilation (<acronym class="acronym">JIT</acronym>)</a></span></dt><dd><dl><dt><span class="sect1"><a href="jit-reason.html">31.1. What Is <acronym class="acronym">JIT</acronym> compilation?</a></span></dt><dt><span class="sect1"><a href="jit-decision.html">31.2. When to <acronym class="acronym">JIT</acronym>?</a></span></dt><dt><span class="sect1"><a href="jit-configuration.html">31.3. Configuration</a></span></dt><dt><span class="sect1"><a href="jit-extensibility.html">31.4. Extensibility</a></span></dt></dl></dd><dt><span class="chapter"><a href="regress.html">32. Regression Tests</a></span></dt><dd><dl><dt><span class="sect1"><a href="regress-run.html">32.1. Running the Tests</a></span></dt><dt><span class="sect1"><a href="regress-evaluation.html">32.2. Test Evaluation</a></span></dt><dt><span class="sect1"><a href="regress-variant.html">32.3. Variant Comparison Files</a></span></dt><dt><span class="sect1"><a href="regress-tap.html">32.4. TAP Tests</a></span></dt><dt><span class="sect1"><a href="regress-coverage.html">32.5. Test Coverage Examination</a></span></dt></dl></dd></dl></div></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="parallel-safety.html" title="15.4. Parallel Safety">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html" title="PostgreSQL 13.18 Documentation">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="installation.html" title="Chapter 16. Installation from Source Code">Next</a></td></tr><tr><td width="40%" align="left" valign="top">15.4. Parallel Safety </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 13.18 Documentation">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16. Installation from Source Code</td></tr></table></div></body></html>
\ No newline at end of file
<span class="productname">Microsoft Windows SDK</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="runtime.html">18. Server Setup and Operation</a></span></dt><dd><dl><dt><span class="sect1"><a href="postgres-user.html">18.1. The <span class="productname">PostgreSQL</span> User Account</a></span></dt><dt><span class="sect1"><a href="creating-cluster.html">18.2. Creating a Database Cluster</a></span></dt><dt><span class="sect1"><a href="server-start.html">18.3. Starting the Database Server</a></span></dt><dt><span class="sect1"><a href="kernel-resources.html">18.4. Managing Kernel Resources</a></span></dt><dt><span class="sect1"><a href="server-shutdown.html">18.5. Shutting Down the Server</a></span></dt><dt><span class="sect1"><a href="upgrading.html">18.6. Upgrading a <span class="productname">PostgreSQL</span> Cluster</a></span></dt><dt><span class="sect1"><a href="preventing-server-spoofing.html">18.7. Preventing Server Spoofing</a></span></dt><dt><span class="sect1"><a href="encryption-options.html">18.8. Encryption Options</a></span></dt><dt><span class="sect1"><a href="ssl-tcp.html">18.9. Secure TCP/IP Connections with SSL</a></span></dt><dt><span class="sect1"><a href="gssapi-enc.html">18.10. Secure TCP/IP Connections with GSSAPI Encryption</a></span></dt><dt><span class="sect1"><a href="ssh-tunnels.html">18.11. Secure TCP/IP Connections with <span class="application">SSH</span> Tunnels</a></span></dt><dt><span class="sect1"><a href="event-log-registration.html">18.12. Registering <span class="application">Event Log</span> on <span class="systemitem">Windows</span></a></span></dt></dl></dd><dt><span class="chapter"><a href="runtime-config.html">19. Server Configuration</a></span></dt><dd><dl><dt><span class="sect1"><a href="config-setting.html">19.1. Setting Parameters</a></span></dt><dt><span class="sect1"><a href="runtime-config-file-locations.html">19.2. File Locations</a></span></dt><dt><span class="sect1"><a href="runtime-config-connection.html">19.3. Connections and Authentication</a></span></dt><dt><span class="sect1"><a href="runtime-config-resource.html">19.4. Resource Consumption</a></span></dt><dt><span class="sect1"><a href="runtime-config-wal.html">19.5. Write Ahead Log</a></span></dt><dt><span class="sect1"><a href="runtime-config-replication.html">19.6. Replication</a></span></dt><dt><span class="sect1"><a href="runtime-config-query.html">19.7. Query Planning</a></span></dt><dt><span class="sect1"><a href="runtime-config-logging.html">19.8. Error Reporting and Logging</a></span></dt><dt><span class="sect1"><a href="runtime-config-statistics.html">19.9. Run-time Statistics</a></span></dt><dt><span class="sect1"><a href="runtime-config-autovacuum.html">19.10. Automatic Vacuuming</a></span></dt><dt><span class="sect1"><a href="runtime-config-client.html">19.11. Client Connection Defaults</a></span></dt><dt><span class="sect1"><a href="runtime-config-locks.html">19.12. Lock Management</a></span></dt><dt><span class="sect1"><a href="runtime-config-compatible.html">19.13. Version and Platform Compatibility</a></span></dt><dt><span class="sect1"><a href="runtime-config-error-handling.html">19.14. Error Handling</a></span></dt><dt><span class="sect1"><a href="runtime-config-preset.html">19.15. Preset Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-custom.html">19.16. Customized Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-developer.html">19.17. Developer Options</a></span></dt><dt><span class="sect1"><a href="runtime-config-short.html">19.18. Short Options</a></span></dt></dl></dd><dt><span class="chapter"><a href="client-authentication.html">20. Client Authentication</a></span></dt><dd><dl><dt><span class="sect1"><a href="auth-pg-hba-conf.html">20.1. The <code class="filename">pg_hba.conf</code> File</a></span></dt><dt><span class="sect1"><a href="auth-username-maps.html">20.2. User Name Maps</a></span></dt><dt><span class="sect1"><a href="auth-methods.html">20.3. Authentication Methods</a></span></dt><dt><span class="sect1"><a href="auth-trust.html">20.4. Trust Authentication</a></span></dt><dt><span class="sect1"><a href="auth-password.html">20.5. Password Authentication</a></span></dt><dt><span class="sect1"><a href="gssapi-auth.html">20.6. GSSAPI Authentication</a></span></dt><dt><span class="sect1"><a href="sspi-auth.html">20.7. SSPI Authentication</a></span></dt><dt><span class="sect1"><a href="auth-ident.html">20.8. Ident Authentication</a></span></dt><dt><span class="sect1"><a href="auth-peer.html">20.9. Peer Authentication</a></span></dt><dt><span class="sect1"><a href="auth-ldap.html">20.10. LDAP Authentication</a></span></dt><dt><span class="sect1"><a href="auth-radius.html">20.11. RADIUS Authentication</a></span></dt><dt><span class="sect1"><a href="auth-cert.html">20.12. Certificate Authentication</a></span></dt><dt><span class="sect1"><a href="auth-pam.html">20.13. PAM Authentication</a></span></dt><dt><span class="sect1"><a href="auth-bsd.html">20.14. BSD Authentication</a></span></dt><dt><span class="sect1"><a href="client-authentication-problems.html">20.15. Authentication Problems</a></span></dt></dl></dd><dt><span class="chapter"><a href="user-manag.html">21. Database Roles</a></span></dt><dd><dl><dt><span class="sect1"><a href="database-roles.html">21.1. Database Roles</a></span></dt><dt><span class="sect1"><a href="role-attributes.html">21.2. Role Attributes</a></span></dt><dt><span class="sect1"><a href="role-membership.html">21.3. Role Membership</a></span></dt><dt><span class="sect1"><a href="role-removal.html">21.4. Dropping Roles</a></span></dt><dt><span class="sect1"><a href="default-roles.html">21.5. Default Roles</a></span></dt><dt><span class="sect1"><a href="perm-functions.html">21.6. Function Security</a></span></dt></dl></dd><dt><span class="chapter"><a href="managing-databases.html">22. Managing Databases</a></span></dt><dd><dl><dt><span class="sect1"><a href="manage-ag-overview.html">22.1. Overview</a></span></dt><dt><span class="sect1"><a href="manage-ag-createdb.html">22.2. Creating a Database</a></span></dt><dt><span class="sect1"><a href="manage-ag-templatedbs.html">22.3. Template Databases</a></span></dt><dt><span class="sect1"><a href="manage-ag-config.html">22.4. Database Configuration</a></span></dt><dt><span class="sect1"><a href="manage-ag-dropdb.html">22.5. Destroying a Database</a></span></dt><dt><span class="sect1"><a href="manage-ag-tablespaces.html">22.6. Tablespaces</a></span></dt></dl></dd><dt><span class="chapter"><a href="charset.html">23. Localization</a></span></dt><dd><dl><dt><span class="sect1"><a href="locale.html">23.1. Locale Support</a></span></dt><dt><span class="sect1"><a href="collation.html">23.2. Collation Support</a></span></dt><dt><span class="sect1"><a href="multibyte.html">23.3. Character Set Support</a></span></dt></dl></dd><dt><span class="chapter"><a href="maintenance.html">24. Routine Database Maintenance Tasks</a></span></dt><dd><dl><dt><span class="sect1"><a href="routine-vacuuming.html">24.1. Routine Vacuuming</a></span></dt><dt><span class="sect1"><a href="routine-reindex.html">24.2. Routine Reindexing</a></span></dt><dt><span class="sect1"><a href="logfile-maintenance.html">24.3. Log File Maintenance</a></span></dt></dl></dd><dt><span class="chapter"><a href="backup.html">25. Backup and Restore</a></span></dt><dd><dl><dt><span class="sect1"><a href="backup-dump.html">25.1. <acronym class="acronym">SQL</acronym> Dump</a></span></dt><dt><span class="sect1"><a href="backup-file.html">25.2. File System Level Backup</a></span></dt><dt><span class="sect1"><a href="continuous-archiving.html">25.3. Continuous Archiving and Point-in-Time Recovery (PITR)</a></span></dt></dl></dd><dt><span class="chapter"><a href="high-availability.html">26. High Availability, Load Balancing, and Replication</a></span></dt><dd><dl><dt><span class="sect1"><a href="different-replication-solutions.html">26.1. Comparison of Different Solutions</a></span></dt><dt><span class="sect1"><a href="warm-standby.html">26.2. Log-Shipping Standby Servers</a></span></dt><dt><span class="sect1"><a href="warm-standby-failover.html">26.3. Failover</a></span></dt><dt><span class="sect1"><a href="log-shipping-alternative.html">26.4. Alternative Method for Log Shipping</a></span></dt><dt><span class="sect1"><a href="hot-standby.html">26.5. Hot Standby</a></span></dt></dl></dd><dt><span class="chapter"><a href="monitoring.html">27. Monitoring Database Activity</a></span></dt><dd><dl><dt><span class="sect1"><a href="monitoring-ps.html">27.1. Standard Unix Tools</a></span></dt><dt><span class="sect1"><a href="monitoring-stats.html">27.2. The Statistics Collector</a></span></dt><dt><span class="sect1"><a href="monitoring-locks.html">27.3. Viewing Locks</a></span></dt><dt><span class="sect1"><a href="progress-reporting.html">27.4. Progress Reporting</a></span></dt><dt><span class="sect1"><a href="dynamic-trace.html">27.5. Dynamic Tracing</a></span></dt></dl></dd><dt><span class="chapter"><a href="diskusage.html">28. Monitoring Disk Usage</a></span></dt><dd><dl><dt><span class="sect1"><a href="disk-usage.html">28.1. Determining Disk Usage</a></span></dt><dt><span class="sect1"><a href="disk-full.html">28.2. Disk Full Failure</a></span></dt></dl></dd><dt><span class="chapter"><a href="wal.html">29. Reliability and the Write-Ahead Log</a></span></dt><dd><dl><dt><span class="sect1"><a href="wal-reliability.html">29.1. Reliability</a></span></dt><dt><span class="sect1"><a href="wal-intro.html">29.2. Write-Ahead Logging (<acronym class="acronym">WAL</acronym>)</a></span></dt><dt><span class="sect1"><a href="wal-async-commit.html">29.3. Asynchronous Commit</a></span></dt><dt><span class="sect1"><a href="wal-configuration.html">29.4. <acronym class="acronym">WAL</acronym> Configuration</a></span></dt><dt><span class="sect1"><a href="wal-internals.html">29.5. WAL Internals</a></span></dt></dl></dd><dt><span class="chapter"><a href="logical-replication.html">30. Logical Replication</a></span></dt><dd><dl><dt><span class="sect1"><a href="logical-replication-publication.html">30.1. Publication</a></span></dt><dt><span class="sect1"><a href="logical-replication-subscription.html">30.2. Subscription</a></span></dt><dt><span class="sect1"><a href="logical-replication-conflicts.html">30.3. Conflicts</a></span></dt><dt><span class="sect1"><a href="logical-replication-restrictions.html">30.4. Restrictions</a></span></dt><dt><span class="sect1"><a href="logical-replication-architecture.html">30.5. Architecture</a></span></dt><dt><span class="sect1"><a href="logical-replication-monitoring.html">30.6. Monitoring</a></span></dt><dt><span class="sect1"><a href="logical-replication-security.html">30.7. Security</a></span></dt><dt><span class="sect1"><a href="logical-replication-config.html">30.8. Configuration Settings</a></span></dt><dt><span class="sect1"><a href="logical-replication-quick-setup.html">30.9. Quick Setup</a></span></dt></dl></dd><dt><span class="chapter"><a href="jit.html">31. Just-in-Time Compilation (<acronym class="acronym">JIT</acronym>)</a></span></dt><dd><dl><dt><span class="sect1"><a href="jit-reason.html">31.1. What Is <acronym class="acronym">JIT</acronym> compilation?</a></span></dt><dt><span class="sect1"><a href="jit-decision.html">31.2. When to <acronym class="acronym">JIT</acronym>?</a></span></dt><dt><span class="sect1"><a href="jit-configuration.html">31.3. Configuration</a></span></dt><dt><span class="sect1"><a href="jit-extensibility.html">31.4. Extensibility</a></span></dt></dl></dd><dt><span class="chapter"><a href="regress.html">32. Regression Tests</a></span></dt><dd><dl><dt><span class="sect1"><a href="regress-run.html">32.1. Running the Tests</a></span></dt><dt><span class="sect1"><a href="regress-evaluation.html">32.2. Test Evaluation</a></span></dt><dt><span class="sect1"><a href="regress-variant.html">32.3. Variant Comparison Files</a></span></dt><dt><span class="sect1"><a href="regress-tap.html">32.4. TAP Tests</a></span></dt><dt><span class="sect1"><a href="regress-coverage.html">32.5. Test Coverage Examination</a></span></dt></dl></dd></dl></div></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="parallel-safety.html" title="15.4. Parallel Safety">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html" title="PostgreSQL 13.19 Documentation">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="installation.html" title="Chapter 16. Installation from Source Code">Next</a></td></tr><tr><td width="40%" align="left" valign="top">15.4. Parallel Safety </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 13.19 Documentation">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16. Installation from Source Code</td></tr></table></div></body></html>
\ No newline at end of file