1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-22 02:52:08 +03:00
Commit Graph

8160 Commits

Author SHA1 Message Date
d9572c4e3b Core support for "extensions", which are packages of SQL objects.
This patch adds the server infrastructure to support extensions.
There is still one significant loose end, namely how to make it play nice
with pg_upgrade, so I am not yet committing the changes that would make
all the contrib modules depend on this feature.

In passing, fix a disturbingly large amount of breakage in
AlterObjectNamespace() and callers.

Dimitri Fontaine, reviewed by Anssi Kääriäinen,
Itagaki Takahiro, Tom Lane, and numerous others
2011-02-08 16:13:22 -05:00
414c5a2ea6 Per-column collation support
This adds collation support for columns and domains, a COLLATE clause
to override it per expression, and B-tree index support.

Peter Eisentraut
reviewed by Pavel Stehule, Itagaki Takahiro, Robert Haas, Noah Misch
2011-02-08 23:04:18 +02:00
1703f0e8da Fix typo, by Kevin Grittner. 2011-02-08 21:48:03 +02:00
c016ce7281 Named restore points in recovery. Users can record named points, then
new recovery.conf parameter recovery_target_name allows PITR to
specify named points as recovery targets.

Jaime Casanova, reviewed by Euler Taveira de Oliveira, plus minor edits
2011-02-08 19:39:08 +00:00
8c6e3adbf7 Basic Recovery Control functions for use in Hot Standby. Pause, Resume,
Status check functions only. Also, new recovery.conf parameter to
pause_at_recovery_target, default on.

Simon Riggs, reviewed by Fujii Masao
2011-02-08 18:30:22 +00:00
722bf7017b Extend ALTER TABLE to allow Foreign Keys to be added without initial validation.
FK constraints that are marked NOT VALID may later be VALIDATED, which uses an
ShareUpdateExclusiveLock on constraint table and RowShareLock on referenced
table. Significantly reduces lock strength and duration when adding FKs.
New state visible from psql.

Simon Riggs, with reviews from Marko Tiikkaja and Robert Haas
2011-02-08 12:23:20 +00:00
7202ad7b8d Fix copy-pasto in description of pg_serial, and silence compiler warning
about uninitialized field you get on some compilers.
2011-02-08 09:05:13 +02:00
32896c40ca Avoid having autovacuum workers wait for relation locks.
Waiting for relation locks can lead to starvation - it pins down an
autovacuum worker for as long as the lock is held.  But if we're doing
an anti-wraparound vacuum, then we still wait; maintenance can no longer
be put off.

To assist with troubleshooting, if log_autovacuum_min_duration >= 0,
we log whenever an autovacuum or autoanalyze is skipped for this reason.

Per a gripe by Josh Berkus, and ensuing discussion.
2011-02-07 22:04:29 -05:00
47082fa875 Oops, forgot to bump catversion in the Serializable Snapshot Isolation patch.
I thought we didn't need that, but then I remembered that it added a new
SLRU subdirectory, pg_serial. While we're at it, document what pg_serial is.
2011-02-08 00:24:23 +02:00
dafaa3efb7 Implement genuine serializable isolation level.
Until now, our Serializable mode has in fact been what's called Snapshot
Isolation, which allows some anomalies that could not occur in any
serialized ordering of the transactions. This patch fixes that using a
method called Serializable Snapshot Isolation, based on research papers by
Michael J. Cahill (see README-SSI for full references). In Serializable
Snapshot Isolation, transactions run like they do in Snapshot Isolation,
but a predicate lock manager observes the reads and writes performed and
aborts transactions if it detects that an anomaly might occur. This method
produces some false positives, ie. it sometimes aborts transactions even
though there is no anomaly.

To track reads we implement predicate locking, see storage/lmgr/predicate.c.
Whenever a tuple is read, a predicate lock is acquired on the tuple. Shared
memory is finite, so when a transaction takes many tuple-level locks on a
page, the locks are promoted to a single page-level lock, and further to a
single relation level lock if necessary. To lock key values with no matching
tuple, a sequential scan always takes a relation-level lock, and an index
scan acquires a page-level lock that covers the search key, whether or not
there are any matching keys at the moment.

A predicate lock doesn't conflict with any regular locks or with another
predicate locks in the normal sense. They're only used by the predicate lock
manager to detect the danger of anomalies. Only serializable transactions
participate in predicate locking, so there should be no extra overhead for
for other transactions.

Predicate locks can't be released at commit, but must be remembered until
all the transactions that overlapped with it have completed. That means that
we need to remember an unbounded amount of predicate locks, so we apply a
lossy but conservative method of tracking locks for committed transactions.
If we run short of shared memory, we overflow to a new "pg_serial" SLRU
pool.

We don't currently allow Serializable transactions in Hot Standby mode.
That would be hard, because even read-only transactions can cause anomalies
that wouldn't otherwise occur.

Serializable isolation mode now means the new fully serializable level.
Repeatable Read gives you the old Snapshot Isolation level that we have
always had.

Kevin Grittner and Dan Ports, reviewed by Jeff Davis, Heikki Linnakangas and
Anssi Kääriäinen
2011-02-08 00:09:08 +02:00
ad76242633 remove tags. 2011-02-06 18:44:43 -05:00
50d89d422f Force strings passed to and from plperl to be in UTF8 encoding.
String are converted to UTF8 on the way into perl and to the
database encoding on the way back. This avoids a number of
observed anomalies, and ensures Perl a consistent view of the
world.

Some minor code cleanups are also accomplished.

Alex Hunsaker, reviewed by Andy Colson.
2011-02-06 17:29:26 -05:00
5ed45ac09c Adjust libpq docs to be clearer about 'hostaddr' usage by rewording and
using an itemized list.
2011-02-06 12:04:42 -05:00
8e6ae3d79c Add doc comment that installation.sgml can't use xrefs. 2011-02-04 17:30:54 -05:00
b157a1d555 In docs, move PQrequestCancel() deprecation mention up to match other
libpq doc mentions.
2011-02-04 14:23:35 -05:00
edad08ba54 Update ALTER TABLE docs to mention using VACUUM FULL for rewrites.
Remove the claim that ALTER TABLE .. SET DATA TYPE is the fastest way of
rewriting a table, since it no longer is.

Noah Misch and Robert Haas, based on a suggestion from Tom Lane.
2011-02-04 13:08:56 -05:00
afb6dee1e3 Attempt to un-break the documentation build again
Another case of <xref linkend> in the documentation that
builds INSTALL, which is not allowed.
2011-02-04 15:24:49 +01:00
ddfe26f644 Avoid maintaining three separate copies of the error codes list.
src/pl/plpgsql/src/plerrcodes.h, src/include/utils/errcodes.h, and a
big chunk of errcodes.sgml are now automatically generated from a single
file, src/backend/utils/errcodes.txt.

Jan Urbański, reviewed by Tom Lane.
2011-02-03 22:32:49 -05:00
7212c77d0c ALTER TABLE sometimes takes only ShareUpdateExclusiveLock.
Along the way, be more consistent about the wording we use here.
2011-02-03 15:14:27 -05:00
df63aac678 In docs, PL is Procedural Language, not Programming Language.
Satoshi Nagayasu
2011-02-03 11:54:07 -05:00
76129e7f14 Include more status information in walsender results
Add the current xlog insert location to the response of
IDENTIFY_SYSTEM, and adds result sets containing start
and stop location of backups to BASE_BACKUP responses.
2011-02-03 13:46:23 +01:00
f001cb38b6 Fix typo.
Thom Brown
2011-02-03 11:24:47 +01:00
4c4daf6710 Further sepgsql documentation cleanup. 2011-02-03 00:23:44 -05:00
4ff9dec138 sepgsql doc fix
KaiGai Kohei
2011-02-02 23:47:45 -05:00
0af695fd43 Log restartpoints in the same fashion as checkpoints.
Prior to 9.0, restartpoints never created, deleted, or recycled WAL
files, but now they can.  This code makes log_checkpoints treat
checkpoints and restartpoints symmetrically.  It also adjusts up
the documentation of the parameter to mention restartpoints.

Fujii Masao.  Docs by me, as suggested by Itagaki Takahiro.
2011-02-02 21:08:53 -05:00
03c25dd900 Mark all GUC variables with <varname> markup, rather than <literal>. 2011-02-02 18:06:38 -05:00
0c5933d010 Wrap PL/Python SPI calls into subtransactions
This allows the language-specific try/catch construct to catch and
handle exceptions arising from SPI calls, matching the behavior of
other PLs.

As an additional bonus you no longer get all the ugly "unrecognized
error in PLy_spi_execute_query" errors.

Jan Urbański, reviewed by Steve Singer
2011-02-02 22:06:10 +02:00
5a6ba62be5 Document that CREATE VIEW that uses "*" for the column list will not
auto-add columns later added to the base table.
2011-02-01 17:17:34 -05:00
d56d246e70 Properly capitalize hyphenated words in documentation titles. 2011-02-01 17:00:26 -05:00
7106f74e2a Clarify documentation to state that "zero_damaged_pages" does not force
data to disk, so the table or index should be recreated before the
parameter is turned off again.
2011-02-01 16:44:22 -05:00
6c6e6f7fd3 Document that effective cache size does not assume data remains in the
cache between queries.
2011-02-01 15:23:35 -05:00
e8cdc238cf Document that Slony can do upgrades easier _because_ it supports
replication between different Postgres major versions.
2011-02-01 15:21:22 -05:00
902aae5ec5 Clarify pg_upgrade install instructions, per suggestion from Robert Haas. 2011-02-01 13:57:43 -05:00
d2888d1ca3 Add missing period "." in pg_upgrade documentation. 2011-02-01 13:53:04 -05:00
56b21b7ae3 Re-classify ERRCODE_DATABASE_DROPPED to 57P04 2011-02-01 08:44:01 +00:00
03282bfa89 Add a link from client_encoding parameter to the list of character sets
in documentation.

Thom Brown
2011-02-01 14:26:17 +09:00
00dd340210 Improve docs for pg_authid encryption description with better markup and
a mention of unencrypted passwords.
2011-01-31 22:53:58 -05:00
2dbed56c5a In pg_authid.rolpassword docs, make "md5" appear as a literal. 2011-01-31 22:29:10 -05:00
6e2f3ae884 Support LIKE and ILIKE index searches via contrib/pg_trgm indexes.
Unlike Btree-based LIKE optimization, this works for non-left-anchored
search patterns.  The effectiveness of the search depends on how many
trigrams can be extracted from the pattern.  (The worst case, with no
trigrams, degrades to a full-table scan, so this isn't a panacea.  But
it can be very useful.)

Alexander Korotkov, reviewed by Jan Urbanski
2011-01-31 21:34:49 -05:00
9e95c9ad55 Create new errcode for recovery conflict caused by db drop on master.
Previously reported as ERRCODE_ADMIN_SHUTDOWN, this case is now
reported as ERRCODE_T_R_DATABASE_DROPPED. No message text change.
Unlikely to happen on most servers, so low impact change to allow
session poolers to correctly handle this situation.

Tatsuo Ishii, edits by me, review by Robert Haas
2011-02-01 00:20:53 +00:00
44df84df72 Remove spurious word, spotted by Thom Brown. 2011-01-31 22:52:27 +02:00
49450f01ec Update pg_upgrade docs to mention its use in a less risk-warning way,
and update the pg_upgrade docs to mention its reliance on no changes to
the storage format (the later based on Robert Haas's patch).
2011-01-31 15:21:51 -05:00
ff20fbd6c2 Fix SGML markup for upgrade doc addition. 2011-01-31 14:58:49 -05:00
51be78b09a Update docs on building for Windows to accomodate current reality.
Document how to build 64 bit Windows binaries using the MinGW64 tool set.
Remove recommendation against using Mingw as a build platform.
Be more specific about when Cygwin is useful and when it's not,  in
particular note its usefulness for running psql, and
add a note about building on Cygwin in non-C locales.

Per recent discussions.
2011-01-31 13:40:45 -05:00
c5ba11f8fb Move upgrade instructions into its own section under "Server Setup and
Operation", merged from upgrade sections in "Installation from Source
Code" and "Backup and Restore".  This now gives a single place for all
upgrade information.
2011-01-31 12:32:03 -05:00
997b48ed96 Support multiple concurrent pg_basebackup backups.
With this patch, pg_basebackup doesn't write a backup_label file in the
data directory, so it doesn't interfere with a pg_start/stop_backup() based
backup anymore. backup_label is still included in the backup, but it is
injected directly into the tar stream.

Heikki Linnakangas, reviewed by Fujii Masao and Magnus Hagander.
2011-01-31 18:25:39 +02:00
507069de6d Add option to include WAL in base backup
When included, this makes the base backup a complete working
"clone" of the initial database, ready to have a postmaster
started against it without the need to set up any log archiving
or similar.

Magnus Hagander, reviewed by Fujii Masao and Heikki Linnakangas
2011-01-30 21:30:09 +01:00
5d5678d7c3 Properly capitalize documentation headings; some only had initial-word
capitalization.
2011-01-29 13:01:48 -05:00
6f489dca65 Make installation.sgml build standalone again.
We must not try to link to sections that aren't part of the standalone
"make INSTALL" build.  Corrects build failure introduced in commit
159e3d8629.
2011-01-29 12:51:44 -05:00
b2826ad52d Copy-edit a paragraph in the contrib/seg documentation.
Although this improves the style, an ulterior motive is to keep the two
table links from breaking across lines in PDF output, per complaint from
Josh Kupershmidt.
2011-01-28 14:34:42 -05:00