출시일: 2020-09-24
PostgreSQL 13 주요 새 기능과 개선사항:
B-tree 인덱스 중복 항목 없애서 크기를 줄이고 속도를 높혔다.
집계 작업이나 파티션 테이블 작업 쿼리 성능을 높혔다.
확장 통계 정보를 사용할 때 쿼리 실행 계획이 보다 똑똑해졌다.
인덱스 청소 작업을 병렬로 할 수 있다.
증분 정렬 Incremental sorting
PostgreSQL 13의 위에서 소개한 것들과 기타 새 기능들의 보다 자세한 사항은 아래에서 다룬다.
이전 버전에서 사용했던 자료를 마이그레이션 하려면, pg_dumpall 명령을 이용한 덤프/복원 작업을 하거나, pg_upgrade 명령을 이용하거나, 논리 복제 기법을 쓴다. 기존 자료를 새 버전에서 사용하려는 마이그레이션 작업에 대한 일반적인 내용은 18.6절에서 자세히 다룬다.
13 버전은 하위 버전 호환성에 영향을 미치는 여러 변경 사항을 포한한다. 다음은 하위 버전과 호환되지 않는 것들이다:
SIMILAR
TO ... ESCAPE NULL
구문은 이제
NULL
을 반환한다. (Tom Lane)
이 새 정책은 SQL 표준 규약을 따르기 위해서
적용되었다. 이전 버전에서는 ESCAPE NULL
을
사용하면, 기본 이스케이프 문자열(백슬래쉬 문자)을 사용하는 것으로
간주하였다. 이 정책은
substring(
구문에서도
적용된다. 예전부터 사용했던 함수를 바꾸지 않음으로
예전부터 사용했던 뷰의 하위 호환성은 유지했다.
text
FROM pattern
ESCAPE text
)
json[b]_to_tsvector()
함수에서 사용하는 string
옵션의 철자를 엄격하게 확인한다.
(Dominik Czarnota)
effective_io_concurrency 설정값이 기본값이 아닌 경우 그 영향도 계산 방식이 바뀌었다. (Thomas Munro)
이전 버전에서는 동시 요청 수를 지정하기 전에, 이 설정값을 조정했다. 이제부터는 이 값은 그대로 사용된다. 이전버전에서 사용했던 값은 이 버전부터는 다음과 같이 계산해서 바꿔 사용하면 된다:
SELECT round(sum(OLDVALUE
/ n::float)) AS newvalue FROM generate_series(1,OLDVALUE
) s(n);
pg_stat_ssl 뷰와 pg_stat_gssapi 뷰에서 상관 없는 프로세스들은 이제 보이지 않는다. (Euler Taveira)
pg_stat_activity와 조인할 경우, ssl, gssapi 연결과 상관 없는 프로세스들도 함께 보려면, left 조인을 해야한다.
보다 나은 일관성을 위해 wait event 이름을 바꿨다. (Fujii Masao, Tom Lane)
ALTER FOREIGN
TABLE ... RENAME COLUMN
명령 결과를 좀더 정확하게 바꿨다.
(Fujii Masao)
이전 버전에서는 ALTER TABLE
을 반환했고,
이제부터 ALTER FOREIGN TABLE
을 반환한다.
ALTER
MATERIALIZED VIEW ... RENAME COLUMN
명령 결과를
좀더 정확하게 바꿨다. (Fujii Masao)
이전 버전에서는 ALTER TABLE
을 반환했고,
이제부터 ALTER MATERIALIZED VIEW
를 반환한다.
wal_keep_segments
환경 설정 매개 변수가
wal_keep_size로 바뀜 (Fujii Masao)
이 설정은 대기 서버를 위해 남겨 놓을 WAL 양을 지정한다.
이전 버전에서는 WAL 파일 수로 지정했으나, 이제는
총 메가 바이트 단위로 지정한다.
예전 wal_keep_segments
값은
다음과 같은 계산식으로 크기를 계산한다:
wal_keep_size = wal_keep_segments * wal_segment_size (통상 16MB)
8.0 이전 버전의 연산자 클래스 정의 문법을 더 이상 지원하지 않는다. (Daniel Gustafsson)
7.3 이전 버전의 참조키 제약조건 정의 문법을 더 이상 지원하지 않는다. (Daniel Gustafsson)
7.3 이전 버전의 "opaque" 의사 자료형을 더 이상 지원하지 않는다. (Daniel Gustafsson)
패키지화 되지 않은 확장 모듈(9.1 이전 버전)의 업그레이드를 지원하지 않는다. (Tom Lane)
CREATE
EXTENSION
명령에서 FROM
옵션을 지원하지 않는다. 패키지화 되지 않은 확장 모듈은
13버전으로 바꾸기 전에 먼저 패키지로 묶는 작업을 해야한다.
지역시간대 데이터베이스에서 posixrules
파일들을 지원하지 않는다.
(Tom Lane)
IANA(Internet Assigned Numbers Authority 인터넷 할당 번호 관리기관)의
지역시간대 그룹은 이 기능을 없앴다. 따라서 향후 몇 년 사이에,
시스템의 지역시간대 데이터베이스에서도 없어질 것이다. 지역시간대
자료가 업데이트 됨에 따라 예상치 않게 시간 처리가 될 소지가 있어,
13 버전에서 이 기능을 없앴다. 이 조치는
POSIX 스타일
지역시간대 명세에만 국한된다. 사용자 정의
posixrules
파일을 만들어 잘못 계산 될 수
있는 일광 시간 절약 변환 규칙을 명시적으로 지정해
문제를 풀어가는 방법이었다. 이제는 이 방법을 사용할 수 없다.
추천하는 지역시간대는 지리적인 지역시간대 이름을 사용하는 것이다.
ltree 확장 모듈을 사용할 때,
중괄호 앞 별표를 사용하는
lquery
인 경우 이제 바르게 처리한다.
예, *{2}.*{3}
는
*{5}
로 처리한다. (Nikita Glukhov)
pageinspect 확장 모듈의 bt_metap()
함수 반환값에 사용하는 자료형 중 자료형 오버플로우가 일어날
가능성이 있는 자료형들은 보다 큰 자료형으로 바꿨다.
(Peter Geoghegan)
Below you will find a detailed account of the changes between PostgreSQL 13 and the previous major release.
보다 다양한 경우에도, 파티션 테이블 가지치기 pruning를 할 수 있다. (Yuzuko Hosoya, Amit Langote, Álvaro Herrera)
보다 다양한 경우에도, partitionwise 조인을 할 수 있다. (Ashutosh Bapat, Etsuro Fujita, Amit Langote, Tom Lane)
예를 들어 파티션 경계가 정확하게 딱 맞지 않아도 파티션 테이블 사이 파티션와이즈 조인이 가능하다.
Support row-level BEFORE
triggers on partitioned tables (Álvaro
Herrera)
However, such a trigger is not allowed to change which partition is the destination.
Allow partitioned tables to be logically replicated via publications (Amit Langote)
Previously, partitions had to be replicated individually. Now a
partitioned table can be published explicitly, causing all its
partitions to be published automatically. Addition/removal of a
partition causes it to be likewise added to or removed from the
publication.
The CREATE
PUBLICATION
option
publish_via_partition_root
controls whether changes
to partitions are published as their own changes or their parent's.
Allow logical replication into partitioned tables on subscribers (Amit Langote)
Previously, subscribers could only receive rows into non-partitioned tables.
Allow whole-row variables (that
is, table
.*
) to be
used in partitioning expressions (Amit Langote)
More efficiently store duplicates in B-tree indexes (Anastasia Lubennikova, Peter Geoghegan)
This allows efficient B-tree indexing of low-cardinality columns
by storing duplicate keys only once. Users upgrading with pg_upgrade
will need to use REINDEX
to make an
existing index use this feature.
Allow GiST and SP-GiST indexes on box
columns to support ORDER BY
queries (Nikita
Glukhov)
box
<-> point
Allow GIN indexes to
more efficiently handle !
(NOT) clauses
in tsquery
searches (Nikita
Glukhov, Alexander Korotkov, Tom Lane, Julien Rouhaud)
Allow index operator classes to take parameters (Nikita Glukhov)
Allow CREATE INDEX
to specify the GiST signature
length and maximum number of integer ranges (Nikita Glukhov)
Indexes created on four and eight-byte integer array, tsvector, pg_trgm, ltree, and hstore columns can now control these GiST index parameters, rather than using the defaults.
Prevent indexes that use non-default collations from being added as a table's unique or primary key constraint (Tom Lane)
The index's collation must match that of the underlying column,
but ALTER TABLE
previously failed to check
this.
Improve the optimizer's selectivity estimation for containment/match operators (Tom Lane)
Allow setting the statistics target for extended statistics (Tomas Vondra)
This is controlled with the new command option ALTER
STATISTICS ... SET STATISTICS
. Previously this was computed
based on more general statistics target settings.
Allow use of multiple extended statistics objects in a single query (Tomas Vondra)
Allow use of extended statistics objects for OR clauses and IN/ANY
constant
lists (Pierre Ducroquet, Tomas Vondra)
Allow functions in FROM
clauses to be pulled up
(inlined) if they evaluate to constants (Alexander Kuzmenkov,
Aleksandr Parfenov)
Implement incremental sorting (James Coleman, Alexander Korotkov, Tomas Vondra)
If an intermediate query result is known to be sorted by one or more leading keys of a required sort ordering, the additional sorting can be done considering only the remaining keys, if the rows are sorted in batches that have equal leading keys.
If necessary, this can be controlled using enable_incremental_sort.
Improve the performance of sorting inet values (Brandur Leach)
큰 집계 결과 집합을 해시 집계로 처리할 때 디스크를 사용할 수 있다. (Jeff Davis)
이전 버전에서는 해시 집계인 경우 work_mem
설정값보다 그 집계 결과가 더 클 것으로 예상 되는 경우, 해시 집계
계획을 짜지 않았다. 이제 이런 경우에도 해시 집계 계획이
선택될 수 있다. 해시 자료 결과가
work_mem
값의 hash_mem_multiplier
배가 넘으면 디스크를 사용한다.
일단 해시 집계 계획이 선택되면 무조건 그 필요한 메모리만큼
확보하고 그곳에 해시 자료를 담는 예전 방식보다 낫다. —
실행 계획기가 잘못 예측하면, 꽤 많은 메모리를 사용하게 된다. 필요하다면,
hash_mem_multiplier
값을 늘려 해시 집계에
사용할 메모리를 크게 확보하는 방법으로 이전 버전의 처리 방식처럼
처리할 수 있다.
Allow inserts, not only updates and deletes, to trigger vacuuming activity in autovacuum (Laurenz Albe, Darafei Praliaskouski)
Previously, insert-only activity would trigger auto-analyze but not auto-vacuum, on the grounds that there could not be any dead tuples to remove. However, a vacuum scan has other useful side-effects such as setting page-all-visible bits, which improves the efficiency of index-only scans. Also, allowing an insert-only table to receive periodic vacuuming helps to spread out the work of “freezing” old tuples, so that there is not suddenly a large amount of freezing work to do when the entire table reaches the anti-wraparound threshold all at once.
If necessary, this behavior can be adjusted with the new parameters autovacuum_vacuum_insert_threshold and autovacuum_vacuum_insert_scale_factor, or the equivalent table storage options.
Add maintenance_io_concurrency parameter to control I/O concurrency for maintenance operations (Thomas Munro)
wal_level 설정값이 minimal
일 때,
릴레이션 새로 만들기, 다시 쓰기 관련 WAL를 건너뛸 수 있다. (Kyotaro
Horiguchi)
기록할 자료량이
wal_skip_threshold 설정값보다 큰 경우
WAL 기록을 하지 않고, 직접 데이터 파일
fsync 작업을 한다. 이전 버전에서는 COPY
작업일 때만 이렇게 했는데, 이 기능이 복구 작업 때,
자료를 잃을 가능성이 있었다.
Improve performance when replaying DROP DATABASE
commands when many tablespaces are in use (Fujii Masao)
Improve performance for truncation of very large relations (Kirk Jamison)
Improve retrieval of the leading bytes of TOAST'ed values (Binguo Bao, Andrey Borodin)
Previously, compressed out-of-line TOAST values were fully fetched even when it's known that only some leading bytes are needed. Now, only enough data to produce the result is fetched.
Improve performance of LISTEN
/NOTIFY
(Martijn van Oosterhout, Tom Lane)
Speed up conversions of integers to text (David Fetter)
Reduce memory usage for query strings and extension scripts that contain many SQL statements (Amit Langote)
Allow EXPLAIN
,
auto_explain, autovacuum, and pg_stat_statements to track WAL usage
statistics (Kirill Bychik, Julien Rouhaud)
Allow a sample of SQL statements, rather than all statements, to be logged (Adrien Nayrat)
A log_statement_sample_rate fraction of those statements taking more than log_min_duration_sample duration will be logged.
Add the backend type to csvlog and optionally log_line_prefix log output (Peter Eisentraut)
Improve control of prepared statement parameter logging (Alexey Bashtanov, Álvaro Herrera)
The GUC setting log_parameter_max_length controls the maximum length of parameter values output during logging of non-error statements, while log_parameter_max_length_on_error does the same for logging of statements with errors. Previously, prepared statement parameters were never logged during errors.
Allow function call backtraces to be logged after errors (Peter Eisentraut, Álvaro Herrera)
The new parameter backtrace_functions specifies which C functions should generate backtraces on error.
Make vacuum buffer counters 64-bits wide to avoid overflow (Álvaro Herrera)
Add leader_pid
to pg_stat_activity to report a parallel worker's
leader process (Julien Rouhaud)
Add system view pg_stat_progress_basebackup
to report the progress of streaming base backups (Fujii Masao)
Add system view pg_stat_progress_analyze
to report ANALYZE progress
(Álvaro Herrera, Tatsuro Yamada, Vinayak Pokale)
Add system view pg_shmem_allocations
to display shared memory usage (Andres Freund, Robert Haas)
Add system view pg_stat_slru
to monitor internal SLRU caches
(Tomas Vondra)
Allow track_activity_query_size to be set as high as 1MB (Vyacheslav Makarov)
The previous maximum was 100kB.
Report a wait event while creating a DSM segment
with posix_fallocate()
(Thomas Munro)
Add wait event VacuumDelay to report on cost-based vacuum delay (Justin Pryzby)
Add wait events for WAL archive and recovery pause (Fujii Masao)
The new events are BackupWaitWalArchive and RecoveryPause.
Add wait events RecoveryConflictSnapshot and RecoveryConflictTablespace to monitor recovery conflicts (Masahiko Sawada)
Improve performance of wait events on BSD-based systems (Thomas Munro)
Allow only superusers to view the ssl_passphrase_command setting (Insung Moon)
This was changed as a security precaution.
Change the server's default minimum TLS version for encrypted connections from 1.0 to 1.2 (Peter Eisentraut)
This choice can be controlled by ssl_min_protocol_version.
Tighten rules on which utility commands are allowed in read-only transaction mode (Robert Haas)
This change also increases the number of utility commands that can run in parallel queries.
Allow allow_system_table_mods to be changed after server start (Peter Eisentraut)
Disallow non-superusers from modifying system tables when allow_system_table_mods is set (Peter Eisentraut)
Previously, if allow_system_table_mods
was set at server start, non-superusers could issue
INSERT
/UPDATE
/DELETE
commands on system tables.
Enable support for Unix-domain sockets on Windows (Peter Eisentraut)
Allow streaming replication configuration settings to be changed by reload (Sergei Kornilov)
Previously, a server restart was required to change primary_conninfo and primary_slot_name.
Allow WAL receivers to use a temporary replication slot when a permanent one is not specified (Peter Eisentraut, Sergei Kornilov)
This behavior can be enabled using wal_receiver_create_temp_slot.
Allow WAL storage for replication slots to be limited by max_slot_wal_keep_size (Kyotaro Horiguchi)
Replication slots that would require exceeding this value are marked invalid.
Allow standby promotion to cancel any requested pause (Fujii Masao)
Previously, promotion could not happen while the standby was in paused state.
Generate an error if recovery does not reach the specified recovery target (Leif Gunnar Erlandsen, Peter Eisentraut)
Previously, a standby would promote itself upon reaching the end of WAL, even if the target was not reached.
Allow control over how much memory is used by logical decoding before it is spilled to disk (Tomas Vondra, Dilip Kumar, Amit Kapila)
This is controlled by logical_decoding_work_mem.
Allow recovery to continue even if invalid pages are referenced by WAL (Fujii Masao)
This is enabled using ignore_invalid_pages.
Allow VACUUM
to process a table's indexes in parallel (Masahiko Sawada, Amit Kapila)
The new PARALLEL
option controls this.
Allow FETCH FIRST
to use WITH TIES
to return any additional rows
that match the last result row (Surafel Temesgen)
Report planning-time buffer usage in EXPLAIN
's
BUFFER
output (Julien Rouhaud)
Make CREATE TABLE
LIKE
propagate a CHECK
constraint's NO INHERIT
property to the created
table (Ildar Musin, Chris Travers)
When using LOCK
TABLE
on a partitioned table, do not check permissions
on the child tables (Amit Langote)
Allow OVERRIDING USER
VALUE
on inserts into identity columns (Dean Rasheed)
Add ALTER
TABLE ... DROP EXPRESSION
to allow removing the GENERATED
property from a column (Peter Eisentraut)
Fix bugs in multi-step ALTER TABLE
commands (Tom
Lane)
IF NOT EXISTS
clauses now work as expected, in
that derived actions (such as index creation) do not execute if the
column already exists. Also, certain cases of combining related
actions into one ALTER TABLE
now work when they
did not before.
Add ALTER VIEW
syntax to rename view columns (Fujii Masao)
Renaming view columns was already possible, but one had to
write ALTER TABLE RENAME COLUMN
, which is
confusing.
Add ALTER TYPE
options to modify a base type's TOAST properties
and support functions (Tomas Vondra, Tom Lane)
Add CREATE
DATABASE
LOCALE
option (Peter
Eisentraut)
This combines the existing options LC_COLLATE
and
LC_CTYPE
into a single option.
Allow DROP
DATABASE
to disconnect sessions using the target
database, allowing the drop to succeed (Pavel Stehule, Amit Kapila)
This is enabled by the FORCE
option.
Add structure member tg_updatedcols
to allow C-language update triggers to know which column(s) were updated
(Peter Eisentraut)
Add polymorphic data types for use by functions requiring compatible arguments (Pavel Stehule)
The new data types are anycompatible
,
anycompatiblearray
, anycompatiblenonarray
,
and anycompatiblerange
.
Add SQL data type xid8
to expose
FullTransactionId (Thomas Munro)
The existing xid
data type is only four bytes so it
does not provide the transaction epoch.
Add data
type regcollation
and associated functions, to represent OIDs of collation objects
(Julien Rouhaud)
Use the glibc version in some cases as a collation version identifier (Thomas Munro)
If the glibc version changes, a warning will be issued about possible corruption of collation-dependent indexes.
Add support for collation versions on Windows (Thomas Munro)
Allow ROW
expressions to have their members extracted with suffix
notation (Tom Lane)
For example, (ROW(4, 5.0)).f1
now returns 4.
Add alternate version of jsonb_set()
with improved NULL
handling (Andrew Dunstan)
The new function, jsonb_set_lax()
, handles a
NULL
new value by either setting the specified
key to a JSON null, deleting the key, raising an
exception, or returning the jsonb
value unmodified, as
requested.
Add jsonpath .datetime()
method (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander
Korotkov)
This function allows JSON values to be converted
to timestamps, which can then be processed in jsonpath
expressions. This change also adds jsonpath
functions
that support time-zone-aware output.
Add SQL functions NORMALIZE
()
to normalize Unicode strings, and IS
NORMALIZED
to check for normalization (Peter
Eisentraut)
Add min()
and
max()
aggregates for pg_lsn
(Fabrízio
de Royes Mello)
These are particularly useful in monitoring queries.
Allow Unicode
escapes,
e.g., E'\u
or nnnn
'U&'\
, to
specify any character available in the database encoding, even when
the database encoding is not UTF-8 (Tom Lane)
nnnn
'
Allow to_date()
and to_timestamp()
to recognize non-English
month/day names (Juan José Santamaría Flecha, Tom Lane)
The names recognized are the same as those output by to_char()
with the same format patterns.
Add datetime format patterns FF1
– FF6
to specify input or output of
1 to 6 fractional-second digits (Alexander
Korotkov, Nikita Glukhov, Teodor Sigaev, Oleg Bartunov)
These patterns can be used by to_char()
,
to_timestamp()
, and jsonpath's
.datetime()
.
Add SSSSS
datetime format pattern as an
SQL-standard alias for SSSS
(Nikita Glukhov, Alexander Korotkov)
Add function gen_random_uuid()
to generate version-4 UUIDs (Peter Eisentraut)
Previously UUID generation functions were only available in the external modules uuid-ossp and pgcrypto.
Add greatest-common-denominator
(gcd
)
and least-common-multiple (lcm
) functions (Vik
Fearing)
Improve the performance and accuracy of the numeric
type's square root
(sqrt
) and natural log
(ln
) functions (Dean Rasheed)
Add function min_scale()
that returns the number of digits to the right of the decimal point
that are required to represent a numeric
value with
full accuracy (Pavel Stehule)
Add function trim_scale()
to reduce the scale of a numeric
value by removing
trailing zeros (Pavel Stehule)
Add commutators of distance operators (Nikita Glukhov)
For example, previously only point
<->
line
was supported,
now line
<->
point
works too.
Create xid8
versions of all transaction ID functions
(Thomas Munro)
The old xid
-based functions still exist, for backward
compatibility.
Allow get_bit()
and set_bit()
to set bits beyond the first
256MB of a bytea
value (Movead Li)
Allow advisory-lock functions to be used in some parallel operations (Tom Lane)
Add the ability to remove an object's dependency on an extension (Álvaro Herrera)
The object can be a function, materialized view, index, or trigger.
The syntax is ALTER .. NO DEPENDS ON
.
Improve performance of simple PL/pgSQL expressions (Tom Lane, Amit Langote)
Improve performance of PL/pgSQL functions that use immutable expressions (Konstantin Knizhnik)
Allow libpq clients to require channel binding for encrypted connections (Jeff Davis)
Using the libpq connection parameter channel_binding
forces the other end of the TLS connection to prove
it knows the user's password. This prevents man-in-the-middle attacks.
Add libpq connection parameters to control the minimum and maximum TLS version allowed for an encrypted connection (Daniel Gustafsson)
The settings are ssl_min_protocol_version and ssl_max_protocol_version. By default, the minimum TLS version is 1.2 (this represents a behavioral change from previous releases).
Allow use of passwords to unlock client certificates (Craig Ringer, Andrew Dunstan)
This is enabled by libpq's sslpassword connection parameter.
Allow libpq to use DER-encoded client certificates (Craig Ringer, Andrew Dunstan)
Fix ecpg's EXEC SQL
elif
directive to work correctly (Tom Lane)
Previously it behaved the same as endif
followed
by ifdef
, so that a successful previous branch
of the same if
construct did not prevent
expansion of the elif
branch or following
branches.
Add transaction status (%x
)
to psql's default
prompts (Vik Fearing)
Allow the secondary psql prompt to be blank but the same width as the primary prompt (Thomas Munro)
This is accomplished by setting PROMPT2
to %w
.
Allow psql's
\g
and \gx
commands to
change \pset output
options for the duration of that single command (Tom Lane)
This feature allows syntax like \g (expand=on)
,
which is equivalent to \gx
.
Add psql commands to display operator classes and operator families (Sergey Cherkashin, Nikita Glukhov, Alexander Korotkov)
The new commands are \dAc
,
\dAf
, \dAo
,
and \dAp
.
Show table persistence in psql's \dt+
and related commands (David Fetter)
In verbose mode, the table/index/view shows if the object is permanent, temporary, or unlogged.
Improve output of psql's \d
for TOAST tables (Justin Pryzby)
Fix redisplay after psql's \e
command (Tom Lane)
When exiting the editor, if the query doesn't end with a semicolon
or \g
, the query buffer contents will now be
displayed.
Add \warn
command to psql (David Fetter)
This is like \echo
except that the text is sent
to stderr instead of stdout.
Add the PostgreSQL home page to command-line
--help
output (Peter Eisentraut)
Allow pgbench to partition its “accounts” table (Fabien Coelho)
This allows performance testing of partitioning.
Add pgbench command \aset
, which behaves
like \gset
, but for multiple queries (Fabien
Coelho)
Allow pgbench to generate its initial data server-side, rather than client-side (Fabien Coelho)
Allow pgbench to show script contents using option
--show-script
(Fabien Coelho)
Generate backup manifests for base backups, and verify them (Robert Haas)
A new tool pg_verifybackup can verify backups.
Have pg_basebackup estimate the total backup size by default (Fujii Masao)
This computation allows pg_stat_progress_basebackup
to show progress. If that is not needed, it can be disabled by
using the --no-estimate-size
option. Previously,
this computation happened only if the --progress
option was used.
Add an option to pg_rewind to configure standbys (Paul Guo, Jimmy Yih, Ashwin Agrawal)
This matches pg_basebackup's
--write-recovery-conf
option.
Allow pg_rewind to use the target cluster's restore_command to retrieve needed WAL (Alexey Kondratov)
This is enabled using the
-c
/--restore-target-wal
option.
Have pg_rewind automatically run crash recovery before rewinding (Paul Guo, Jimmy Yih, Ashwin Agrawal)
This can be disabled by using --no-ensure-shutdown
.
Increase the PREPARE
TRANSACTION
-related information reported by
pg_waldump (Fujii Masao)
Add pg_waldump
option --quiet
to suppress non-error output (Andres
Freund, Robert Haas)
Add pg_dump
option --include-foreign-data
to dump data from
foreign servers (Luis Carril)
Allow vacuum commands run by vacuumdb to operate in parallel mode (Masahiko Sawada)
This is enabled with the new --parallel
option.
Allow reindexdb to operate in parallel (Julien Rouhaud)
Parallel mode is enabled with the new --jobs
option.
Allow dropdb to disconnect sessions using the target database, allowing the drop to succeed (Pavel Stehule)
This is enabled with the -f
option.
Remove --adduser
and --no-adduser
from createuser (Alexander
Lakhin)
The long-supported preferred options for this are called
--superuser
and --no-superuser
.
Use the directory of the pg_upgrade
program as the default --new-bindir
setting when
running pg_upgrade (Daniel Gustafsson)
Add a glossary to the documentation (Corey Huinker, Jürgen Purtz, Roger Harkavy, Álvaro Herrera)
Reformat tables containing function and operator information for better clarity (Tom Lane)
Upgrade to use DocBook 4.5 (Peter Eisentraut)
Add support for building on Visual Studio 2019 (Haribabu Kommi)
Add build support for MSYS2 (Peter Eisentraut)
Add compare_exchange and fetch_add assembly language code for Power PC compilers (Noah Misch)
Update Snowball stemmer dictionaries used by full text search (Panagiotis Mavrogiorgos)
This adds Greek stemming and improves Danish and French stemming.
Remove support for Windows 2000 (Michael Paquier)
Remove support for non-ELF BSD systems (Peter Eisentraut)
Remove support for Python versions 2.5.X and earlier (Peter Eisentraut)
Remove support for OpenSSL 0.9.8 and 1.0.0 (Michael Paquier)
Remove configure options
--disable-float8-byval
and --disable-float4-byval
(Peter Eisentraut)
These were needed for compatibility with some version-zero C functions, but those are no longer supported.
Pass the query string to planner hook functions (Pascal Legrand, Julien Rouhaud)
Add TRUNCATE
command hook (Yuli Khodorkovskiy)
Add TLS init hook (Andrew Dunstan)
Allow building with no predefined Unix-domain socket directory (Peter Eisentraut)
Reduce the probability of SysV resource key collision on Unix platforms (Tom Lane)
Use operating system functions to reliably erase memory that contains sensitive information (Peter Eisentraut)
For example, this is used for clearing passwords stored in memory.
Add headerscheck
script to test C header-file
compatibility (Tom Lane)
Implement internal lists as arrays, rather than a chain of cells (Tom Lane)
This improves performance for queries that access many objects.
Change the API for TS_execute()
(Tom Lane,
Pavel Borisov)
TS_execute
callbacks must now provide ternary
(yes/no/maybe) logic. Calculating NOT queries accurately is now
the default.
Allow extensions to be specified as trusted (Tom Lane)
Such extensions can be installed in a database by users with
database-level CREATE
privileges, even if they
are not superusers. This change also removes
the pg_pltemplate
system catalog.
Allow non-superusers to connect to postgres_fdw foreign servers without using a password (Craig Ringer)
Specifically, allow a superuser to set
password_required
to false for
a user mapping. Care
must still be taken to prevent non-superusers from using superuser
credentials to connect to the foreign server.
Allow postgres_fdw to use certificate authentication (Craig Ringer)
Different users can use different certificates.
Allow sepgsql to control access to the
TRUNCATE
command (Yuli Khodorkovskiy)
Add extension bool_plperl which transforms SQL booleans to/from PL/Perl booleans (Ivan Panchenko)
Have pg_stat_statements treat SELECT
... FOR UPDATE
commands as distinct from those
without FOR UPDATE
(Andrew Gierth, Vik Fearing)
Allow pg_stat_statements to optionally track the planning time of statements (Julien Rouhaud, Pascal Legrand, Thomas Munro, Fujii Masao)
Previously only execution time was tracked.
Overhaul ltree's lquery syntax to treat
NOT
(!) more logically (Filip Rembialkowski,
Tom Lane, Nikita Glukhov)
Also allow non-* queries to use a numeric range ({}) of matches.
Add support for binary I/O of ltree, lquery, and ltxtquery types (Nino Floris)
Add an option to dict_int to ignore the sign of integers (Jeff Janes)
Add adminpack function
pg_file_sync()
to allow fsync'ing a file
(Fujii Masao)
Add pageinspect functions to output
t_infomask
/t_infomask2
values in human-readable format (Craig Ringer, Sawada Masahiko,
Michael Paquier)
pageinspect 확장모듈 출력에서 btree 인덱스 중복제거 작업상황에대한 컬럼이 추가되었다. (Peter Geoghegan)
The following individuals (in alphabetical order) have contributed to this release as patch authors, committers, reviewers, testers, or reporters of issues.
Abhijit Menon-Sen |
Adam Lee |
Adam Scott |
Adé Heyward |
Adrien Nayrat |
Ahsan Hadi |
Alastair McKinley |
Aleksandr Parfenov |
Alex Aktsipetrov |
Alex Macy |
Alex Shulgin |
Alexander Korotkov |
Alexander Kukushkin |
Alexander Kuzmenkov |
Alexander Lakhin |
Alexey Bashtanov |
Alexey Kondratov |
Álvaro Herrera |
Amit Kapila |
Amit Khandekar |
Amit Langote |
Amul Sul |
Anastasia Lubennikova |
Andreas Joseph Krogh |
Andreas Karlsson |
Andreas Kunert |
Andreas Seltenreich |
Andrei Zubkov |
Andres Freund |
Andrew Bille |
Andrew Dunstan |
Andrew Gierth |
Andrey Borodin |
Andrey Klychkov |
Andrey Lepikhov |
Anna Akenteva |
Anna Endo |
Anthony Nowocien |
Anton Vlasov |
Antonin Houska |
Ants Aasma |
Arne Roland |
Arnold Müller |
Arseny Sher |
Arthur Nascimento |
Arthur Zakirov |
Ashutosh Bapat |
Ashutosh Sharma |
Ashwin Agrawal |
Asif Rehman |
Asim Praveen |
Atsushi Torikoshi |
Augustinas Jokubauskas |
Austin Drenski |
Basil Bourque |
Beena Emerson |
Ben Cornett |
Benjie Gillam |
Benoît Lobréau |
Bernd Helmle |
Bharath Rupireddy |
Bhargav Kamineni |
Binguo Bao |
Brad DeJong |
Brandur Leach |
Brent Bates |
Brian Williams |
Bruce Momjian |
Cameron Ezell |
Cary Huang |
Chapman Flack |
Charles Offenbacher |
Chen Huajun |
Chenyang Lu |
Chris Bandy |
Chris Travers |
Christoph Berg |
Christophe Courtois |
Corey Huinker |
Craig Ringer |
Cuiping Lin |
Dagfinn Ilmari Mannsåker |
Daniel Fiori |
Daniel Gustafsson |
Daniel Vérité |
Daniel Westermann |
Darafei Praliaskouski |
Daryl Waycott |
Dave Cramer |
David Christensen |
David Fetter |
David G. Johnston |
David Gilman |
David Harper |
David Rowley |
David Steele |
David Zhang |
Davinder Singh |
Dean Rasheed |
Denis Stuchalin |
Dent John |
Didier Gautheron |
Dilip Kumar |
Dmitry Belyavsky |
Dmitry Dolgov |
Dmitry Ivanov |
Dmitry Telpt |
Dmitry Uspenskiy |
Dominik Czarnota |
Dongming Liu |
Ed Morley |
Edmund Horner |
Emre Hasegeli |
Eric Gillum |
Erik Rijkers |
Erwin Brandstetter |
Ethan Waldo |
Etsuro Fujita |
Eugen Konkov |
Euler Taveira |
Fabien Coelho |
Fabrízio de Royes Mello |
Felix Lechner |
Filip Janus |
Filip Rembialkowski |
Frank Gagnepain |
Georgios Kokolatos |
Gilles Darold |
Greg Nancarrow |
Grigory Smolkin |
Guancheng Luo |
Guillaume Lelarge |
Hadi Moshayedi |
Haiying Tang |
Hamid Akhtar |
Hans Buschmann |
Hao Wu |
Haribabu Kommi |
Haruka Takatsuka |
Heath Lord |
Heikki Linnakangas |
Himanshu Upadhyaya |
Hironobu Suzuki |
Hugh McMaster |
Hugh Ranalli |
Hugh Wang |
Ian Barwick |
Ibrar Ahmed |
Ildar Musin |
Insung Moon |
Ireneusz Pluta |
Isaac Morland |
Ivan Kartyshov |
Ivan Panchenko |
Ivan Sergio Borgonovo |
Jaime Casanova |
James Coleman |
James Gray |
James Hunter |
James Inform |
James Lucas |
Jan Mussler |
Jaroslav Sivy |
Jeevan Chalke |
Jeevan Ladhe |
Jeff Davis |
Jeff Janes |
Jehan-Guillaume de Rorthais |
Jeremy Evans |
Jeremy Schneider |
Jeremy Smith |
Jerry Sievers |
Jesper Pedersen |
Jesse Kinkead |
Jesse Zhang |
Jian Zhang |
Jie Zhang |
Jim Nasby |
Jimmy Yih |
Jobin Augustine |
Joe Conway |
John Hsu |
John Naylor |
Jon Jensen |
Jonathan Katz |
Jorge Gustavo Rocha |
Josef Šimánek |
Joseph Nahmias |
Juan José Santamaría Flecha |
Julian Backes |
Julien Rouhaud |
Jürgen Purtz |
Justin King |
Justin Pryzby |
Karl O. Pinc |
Keisuke Kuroda |
Keith Fiske |
Kelly Min |
Ken Tanzer |
Kirill Bychik |
Kirk Jamison |
Konstantin Knizhnik |
Kuntal Ghosh |
Kyle Kingsbury |
Kyotaro Horiguchi |
Lars Kanis |
Laurenz Albe |
Leif Gunnar Erlandsen |
Li Japin |
Liudmila Mantrova |
Lucas Viecelli |
Luis M. Carril |
Lukáš Sobotka |
Maciek Sakrejda |
Magnus Hagander |
Mahadevan Ramachandran |
Mahendra Singh Thalor |
Manuel Rigger |
Marc Munro |
Marcos David |
Marina Polyakova |
Mark Dilger |
Mark Wong |
Marko Tiikkaja |
Markus Winand |
Marti Raudsepp |
Martijn van Oosterhout |
Masahiko Sawada |
Masahiro Ikeda |
Masao Fujii |
Mateusz Guzik |
Matt Jibson |
Matteo Beccati |
Maxence Ahlouche |
Melanie Plageman |
Michael Banck |
Michael Luo |
Michael Meskes |
Michael Paquier |
Michail Nikolaev |
Mike Palmiotto |
Mithun Cy |
Movead Li |
Nathan Bossart |
Nazli Ugur Koyluoglu |
Neha Sharma |
Nicola Contu |
Nicolás Alvarez |
Nikhil Sontakke |
Nikita Glukhov |
Nikolay Shaplov |
Nino Floris |
Noah Misch |
Noriyoshi Shinoda |
Oleg Bartunov |
Oleg Samoilov |
Oleksii Kliukin |
Ondrej Jirman |
Panagiotis Mavrogiorgos |
Pascal Legrand |
Patrick McHardy |
Paul Guo |
Paul Jungwirth |
Paul Ramsey |
Paul Sivash |
Paul Spencer |
Pavan Deolasee |
Pavel Borisov |
Pavel Luzanov |
Pavel Stehule |
Pavel Suderevsky |
Peifeng Qiu |
Pengzhou Tang |
Peter Billen |
Peter Eisentraut |
Peter Geoghegan |
Peter Smith |
Petr Fedorov |
Petr Jelínek |
Phil Bayer |
Philip Semanchuk |
Philippe Beaudoin |
Pierre Ducroquet |
Pierre Giraud |
Piotr Gabriel Kosinski |
Piotr Wlodarczyk |
Prabhat Sahu |
Quan Zongliang |
Quentin Rameau |
Rafael Castro |
Rafia Sabih |
Raj Mohite |
Rajkumar Raghuwanshi |
Ramanarayana M |
Ranier Vilela |
Rares Salcudean |
Raúl Marín Rodríguez |
Raymond Martin |
Reijo Suhonen |
Richard Guo |
Robert Ford |
Robert Haas |
Robert Kahlert |
Robert Treat |
Robin Abbi |
Robins Tharakan |
Roger Harkavy |
Roman Peshkurov |
Rui DeSousa |
Rui Hai Jiang |
Rushabh Lathia |
Ryan Lambert |
Ryohei Takahashi |
Scott Ribe |
Sean Farrell |
Sehrope Sarkuni |
Sergei Agalakov |
Sergei Kornilov |
Sergey Cherkashin |
Shawn Debnath |
Shawn Wang |
Shay Rojansky |
Shenhao Wang |
Simon Riggs |
Slawomir Chodnicki |
Soumyadeep Chakraborty |
Stéphane Lorek |
Stephen Frost |
Steve Rogerson |
Steven Winfield |
Surafel Temesgen |
Suraj Kharage |
Takanori Asaba |
Takao Fujii |
Takayuki Tsunakawa |
Takuma Hoshiai |
Tatsuhito Kasahara |
Tatsuo Ishii |
Tatsuro Yamada |
Taylor Vesely |
Teodor Sigaev |
Tham Nguyen |
Thibaut Madelaine |
Thom Brown |
Thomas Kellerer |
Thomas Munro |
Tiago Anastacio |
Tim Clarke |
Tim Möhlmann |
Tom Ellis |
Tom Gottfried |
Tom Lane |
Tomas Vondra |
Tuomas Leikola |
Tushar Ahuja |
Victor Wagner |
Victor Yegorov |
Vignesh C |
Vik Fearing |
Vinay Banakar |
Vladimir Leskov |
Vladimir Sitnikov |
Vyacheslav Makarov |
Vyacheslav Shablistyy |
Will Leinweber |
William Crowell |
Wyatt Alt |
Yang Xiao |
Yaroslav Schekin |
Yi Huang |
Yigong Hu |
Yoann La Cancellera |
Yoshikazu Imai |
Yu Kimura |
Yugo Nagata |
Yuli Khodorkovskiy |
Yusuke Egashira |
Yuya Watari |
Yuzuko Hosoya |
ZhenHua Cai |