summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2010-05-02Improve printing of XLOG_HEAP_NEWPAGE records to include the forknum.Tom Lane
2010-05-02Fix replay of XLOG_HEAP_NEWPAGE WAL records to pay attention to the forknumTom Lane
field of the WAL record. The previous coding always wrote to the main fork, resulting in data corruption if the page was meant to go into a non-default fork. At present, the only operation that can produce such WAL records is ALTER TABLE/INDEX SET TABLESPACE when executed with archive_mode = on. Data corruption would be observed on standby slaves, and could occur on the master as well if a database crash and recovery occurred after committing the ALTER and before the next checkpoint. Per report from Gordon Shannon. Back-patch to 8.4; the problem doesn't exist in earlier branches because we didn't have a concept of multiple relation forks then.
2010-05-02Update standbycheck test output with new ERROR message changes. No changesSimon Riggs
to tests and no changes in accepted server behaviour.
2010-05-02Clean up some awkward, inaccurate, and inefficient processing aroundTom Lane
MaxStandbyDelay. Use the GUC units mechanism for the value, and choose more appropriate timestamp functions for performing tests with it. Make the ps_activity manipulation in ResolveRecoveryConflictWithVirtualXIDs have behavior similar to ps_activity code elsewhere, notably not updating the display when update_process_title is off and not truncating the display contents at an arbitrarily-chosen length. Improve the docs to be explicit about what MaxStandbyDelay actually measures, viz the difference between primary and standby servers' clocks, and the possible hazards if their clocks aren't in sync.
2010-05-01Add code to InternalIpcMemoryCreate() to handle the case where shmget()Tom Lane
returns EINVAL for an existing shared memory segment. Although it's not terribly sensible, that behavior does meet the POSIX spec because EINVAL is the appropriate error code when the existing segment is smaller than the requested size, and the spec explicitly disclaims any particular ordering of error checks. Moreover, it does in fact happen on OS X and probably other BSD-derived kernels. (We were able to talk NetBSD into changing their code, but purging that behavior from the wild completely seems unlikely to happen.) We need to distinguish collision with a pre-existing segment from invalid size request in order to behave sensibly, so it's worth some extra code here to get it right. Per report from Gavin Kistner and subsequent investigation. Back-patch to all supported versions, since any of them could get used with a kernel having the debatable behavior.
2010-05-01Fix leakage of proc-related storage in plpython's inline handler.Tom Lane
Per report from Andres Freund.
2010-04-30Fix multiple memory leaks in PLy_spi_execute_fetch_result: it would leakTom Lane
memory if the result had zero rows, and also if there was any sort of error while converting the result tuples into Python data. Reported and partially fixed by Andres Freund. Back-patch to all supported versions. Note: I haven't tested the 7.4 fix. 7.4's configure check for python is so obsolete it doesn't work on my current machines :-(. The logic change is pretty straightforward though.
2010-04-30Fix a couple of places where the result of fgets() wasn't checked.Tom Lane
This is mostly to suppress compiler warnings, although in principle the cases could result in undesirable behavior. Martin Pitt
2010-04-30Fix handling of b-tree reuse WAL records when hot standby is disabled,Heikki Linnakangas
and add missing code in btree_desc for them. This fixes the bug with "tree_redo: unknown op code 208" error reported by Jaime Casanova.
2010-04-30tag for 9.0beta1REL9_0_BETA1Marc G. Fournier
2010-04-29Adjust error checks in pg_start_backup and pg_stop_backup to make it possibleTom Lane
to perform a backup without archive_mode being enabled. This gives up some user-error protection in order to improve usefulness for streaming-replication scenarios. Per discussion.
2010-04-29Rename the parameter recovery_connections to hot_standby, to reduce possibleTom Lane
confusion with streaming-replication settings. Also, change its default value to "off", because of concern about executing new and poorly-tested code during ordinary non-replicating operation. Per discussion. In passing do some minor editing of related documentation.
2010-04-28Modify information_schema._pg_keysequal() to avoid search path risk whenTom Lane
contrib/intarray is loaded. Per bug #5417 from Kenaniah Cerny. Not forcing initdb since backend doesn't directly depend on this, and few people have run into it.
2010-04-28Minor editorializing on pg_controldata and pg_resetxlog: adjust some messageTom Lane
wording, deal explicitly with some fields that were being silently left zero.
2010-04-28pg_controldata needs #define FRONTEND, same as pg_resetxlog.Tom Lane
Per buildfarm results from dawn_bat.
2010-04-28Modify ShmemInitStruct and ShmemInitHash to throw errors internally,Tom Lane
rather than returning NULL for some-but-not-all failures as they used to. Remove now-redundant tests for NULL from call sites. We had to do something about this because many call sites were failing to check for NULL; and changing it like this seems a lot more useful and mistake-proof than adding checks to the call sites without them.
2010-04-28Introduce wal_level GUC to explicitly control if information needed forHeikki Linnakangas
archival or hot standby should be WAL-logged, instead of deducing that from other options like archive_mode. This replaces recovery_connections GUC in the primary, where it now has no effect, but it's still used in the standby to enable/disable hot standby. Remove the WAL-logging of "unlogged operations", like creating an index without WAL-logging and fsyncing it at the end. Instead, we keep a copy of the wal_mode setting and the settings that affect how much shared memory a hot standby server needs to track master transactions (max_connections, max_prepared_xacts, max_locks_per_xact) in pg_control. Whenever the settings change, at server restart, write a WAL record noting the new settings and update pg_control. This allows us to notice the change in those settings in the standby at the right moment, they used to be included in checkpoint records, but that meant that a changed value was not reflected in the standby until the first checkpoint after the change. Bump PG_CONTROL_VERSION and XLOG_PAGE_MAGIC. Whack XLOG_PAGE_MAGIC back to the sequence it used to follow, before hot standby and subsequent patches changed it to 0x9003.
2010-04-28Fix typo that had the code check the same thing twice.Magnus Hagander
Fujii Masao
2010-04-28Modify the built-in text search parser to handle URLs more nearly accordingTom Lane
to RFC 3986. In particular, these characters now terminate the path part of a URL: '"', '<', '>', '\', '^', '`', '{', '|', '}'. The previous behavior was inconsistent and depended on whether a "?" was present in the path. Per gripe from Donald Fraser and spec research by Kevin Grittner. This is a pre-existing bug, but not back-patching since the risks of breaking existing applications seem to outweigh the benefits.
2010-04-28Fix stupid typo in refnameRangeTblEntry() --- mea maxima culpa.Tom Lane
Per report from Josh.
2010-04-28Add CP949 as an alias for UHC encoding. pg_get_encoding_from_locale()Itagaki Takahiro
with kor locale on Windows can use the path. Reported by Hiroshi Inoue.
2010-04-28Replace the KnownAssignedXids hash table with a sorted-array data structure,Tom Lane
and be more tense about the locking requirements for it, to improve performance in Hot Standby mode. In passing fix a few bugs and improve a number of comments in the existing HS code. Simon Riggs, with some editorialization by Tom
2010-04-27If a base backup is cancelled by server shutdown or crash, throw an errorHeikki Linnakangas
in WAL recovery when it sees the shutdown checkpoint record. It's more user-friendly to find out about it at that point than at the end of recovery, and you're not left wondering why your hot standby server never opens up for read-only connections.
2010-04-26Add missing newlines in WPARSER_TRACE output.Tom Lane
2010-04-26Reorder pg_stat_activity columns to be more consistent, using layoutBruce Momjian
suggested by Tom Lane. Catalog version bumped due to system view change.
2010-04-26Add comments about why we set LC_CTYPE in WIN32 for time when we don'tBruce Momjian
actually access it, per information from Hiroshi.
2010-04-26When we're restricting who can connect, don't allow new walsenders.Robert Haas
Normal superuser processes are allowed to connect even when the database system is shutting down, or when fewer than superuser_reserved_connection slots remain. This is intended to make sure an administrator can log in and troubleshoot, so don't extend these same courtesies to users connecting for replication.
2010-04-24Add C comments for recent to_char('L') fix for Win32.Bruce Momjian
2010-04-24Patch revoked because of objections.Simon Riggs
2010-04-23Fix various instances of "the the".Robert Haas
Two of these were pointed out by Erik Rijkers; the rest I found.
2010-04-23Add missing optimizer hooks for function cost and number of rows.Simon Riggs
Closely follow design of other optimizer hooks: if hook exists retrieve value from plugin; if still not set then get from cache.
2010-04-23Previous patch revoked following objections.Simon Riggs
2010-04-23Make CheckRequiredParameterValues() depend upon correct combinationSimon Riggs
of parameters. Fix bug report by Robert Haas that error message and hint was incorrect if wrong mode parameters specified on master. Internal changes only. Proposals for parameter simplification on master/primary still under way.
2010-04-22Fix message punctuationPeter Eisentraut
2010-04-22Optimise btree delete processing when no active backends.Simon Riggs
Clarify comments, downgrade a message to DEBUG and remove some debug counters. Direct from ideas by Heikki Linnakangas.
2010-04-22Further reductions in Hot Standby conflict processing. TheseSimon Riggs
come from the realistion that HEAP2_CLEAN records don't always remove user visible data, so conflict processing for them can be skipped. Confirm validity using Assert checks, clarify circumstances under which we log heap_cleanup_info records. Tuning arises from bug fixing of earlier safety check failures.
2010-04-22Fix encoding issue when lc_monetary or lc_numeric are different encodingItagaki Takahiro
from lc_ctype, that could happen on Windows. We need to change lc_ctype together with lc_monetary or lc_numeric, and convert strings in lconv from lc_ctype encoding to the database encoding. The bug reported by Mikko, original patch by Hiroshi Inoue, with changes by Bruce and me.
2010-04-21Enforce superuser permissions checks during ALTER ROLE/DATABASE SET, ratherTom Lane
than during define_custom_variable(). This entails rejecting an ALTER command if the target variable doesn't have a known (non-placeholder) definition, unless the calling user is superuser. When the variable *is* known, we can correctly apply the rule that only superusers can issue ALTER for SUSET parameters. This allows define_custom_variable to apply ALTER's values for SUSET parameters at module load time, secure in the knowledge that only a superuser could have set the ALTER value. This change fixes a longstanding gotcha in the usage of SUSET-level custom parameters; which is a good thing to fix now that plpgsql defines such a parameter.
2010-04-21Only send cleanup_info messages if VACUUM removes any tuples.Simon Riggs
There is no other purpose for this message type than to report the latestRemovedXid of removed tuples, prior to index scans. Removes overlooked path for sending invalid latestRemovedXid. Fixes buildfarm failure on centaur.
2010-04-21Relax locking during GetCurrentVirtualXIDs(). Earlier improvementsSimon Riggs
to handling of btree delete records mean that all snapshot conflicts on standby now have a valid, useful latestRemovedXid. Our earlier approach using LW_EXCLUSIVE was useful when we didnt always have a valid value, though is no longer useful or necessary. Asserts added to code path to prove and ensure this is the case. This will reduce contention and improve performance of larger Hot Standby servers.
2010-04-21Fix oversight in collecting values for cleanup_info records.Simon Riggs
vacuum_log_cleanup_info() now generates log records with a valid latestRemovedXid set in all cases. Also be careful not to zero the value when we do a round of vacuuming part-way through lazy_scan_heap(). Incidentally, this reduces frequency of conflicts in Hot Standby.
2010-04-21Fix pg_hba.conf matching so that replication connections only match recordsTom Lane
with database = replication. The previous coding would allow them to match ordinary records too, but that seems like a recipe for security breaches. Improve the messages associated with no-such-pg_hba.conf entry to report replication connections as such, since that's now a critical aspect of whether the connection matches. Make some cursory improvements in the related documentation, too.
2010-04-21Move the check for whether walreceiver has authenticated as a superuserTom Lane
from walsender.c, where it didn't really belong, to postinit.c where it does belong (and is essentially free, too).
2010-04-20Arrange for client authentication to occur before we select a specificTom Lane
database to connect to. This is necessary for the walsender code to work properly (it was previously using an untenable assumption that template1 would always be available to connect to). This also gets rid of a small security shortcoming that was introduced in the original patch to eliminate the flat authentication files: before, you could find out whether or not the requested database existed even if you couldn't pass the authentication checks. The changes needed to support this are mainly just to treat pg_authid and pg_auth_members as nailed relations, so that we can read them without having to be able to locate real pg_class entries for them. This mechanism was already debugged for pg_database, but we hadn't recognized the value of applying it to those catalogs too. Since the current code doesn't have support for accessing toast tables before we've brought up all of the relcache, remove pg_authid's toast table to ensure that no one can store an out-of-line toasted value of rolpassword. The case seems quite unlikely to occur in practice, and was effectively unsupported anyway in the old "flatfiles" implementation. Update genbki.pl to actually implement the same rules as bootstrap.c does for not-nullability of catalog columns. The previous coding was a bit cheesy but worked all right for the previous set of bootstrap catalogs. It does not work for pg_authid, where rolvaliduntil needs to be nullable. Initdb forced due to minor catalog changes (mainly the toast table removal).
2010-04-20Fix code that doesn't work on machines with strict alignment requirements:Tom Lane
must use memcpy here rather than struct assignment. In passing, rearrange some randomly-ordered declarations to be a tad less random.
2010-04-20Rename standby_keep_segments to wal_keep_segments.Robert Haas
Also, make the name of the GUC and the name of the backing variable match. Alnong the way, clean up a couple of slight typographical errors in the related docs.
2010-04-20Move the responsibility for calling StartupXLOG into InitPostgres, forTom Lane
those process types that go through InitPostgres; in particular, bootstrap and standalone-backend cases. This ensures that we have set up a PGPROC and done some other basic initialization steps (corresponding to the if (IsUnderPostmaster) block in AuxiliaryProcessMain) before we attempt to run WAL recovery in a standalone backend. As was discovered last September, this is necessary for some corner-case code paths during WAL recovery, particularly end-of-WAL cleanup. Moving the bootstrap case here too is not necessary for correctness, but it seems like a good idea since it reduces the number of distinct code paths.
2010-04-19Add new message for explicit rejection by pg_hba.conf. ImplicitSimon Riggs
rejection retains same message as before.
2010-04-19Check RecoveryInProgress() while holding ProcArrayLock during snapshots.Simon Riggs
This prevents a rare, yet possible race condition at the exact moment of transition from recovery to normal running.
2010-04-19Fix uninitialized local variables. Not sure why gcc doesn't complain aboutTom Lane
these --- maybe because they're effectively unused? MSVC does complain though, per buildfarm.