summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2013-04-27Fix unsafe event-trigger coding in ProcessUtility().Tom Lane
We mustn't run any of the event-trigger support code when handling utility statements like START TRANSACTION or ABORT, because that code may need to refresh event-trigger cache data, which requires being inside a valid transaction. (This mistake explains the consistent build failures exhibited by the CLOBBER_CACHE_ALWAYS buildfarm members, as well as some irreproducible failures on other members.) The least messy fix seems to be to break standard_ProcessUtility into two functions, one that handles all the statements not supported by event triggers, and one that contains the event-trigger support code and handles the statements that are supported by event triggers. This change also fixes several inconsistencies, such as four cases where support had been installed for "ddl_event_start" but not "ddl_event_end" triggers, plus the fact that InvokeDDLCommandEventTriggersIfSupported() paid no mind to isCompleteQuery. Dimitri Fontaine and Tom Lane
2013-04-27pg_dump: Improve message formattingPeter Eisentraut
2013-04-27Incidental cleanup of matviews code.Tom Lane
Move checking for unscannable matviews into ExecOpenScanRelation, which is a better place for it first because the open relation is already available (saving a relcache lookup cycle), and second because this eliminates the problem of telling the difference between rangetable entries that will or will not be scanned by the query. In particular we can get rid of the not-terribly-well-thought-out-or-implemented isResultRel field that the initial matviews patch added to RangeTblEntry. Also get rid of entirely unnecessary scannability check in the rewriter, and a bogus decision about whether RefreshMatViewStmt requires a parse-time snapshot. catversion bump due to removal of a RangeTblEntry field, which changes stored rules.
2013-04-26Improve message about failed transaction log archivingPeter Eisentraut
The old phrasing appeared to imply that the failure was terminal. Improve that by indicating that archiving will be tried again later.
2013-04-26Fix collation assignment for aggregates with ORDER BY.Tom Lane
ORDER BY expressions were being treated the same as regular aggregate arguments for purposes of collation determination, but really they should not affect the aggregate's collation at all; only collations of the aggregate's regular arguments should affect it. In many cases this mistake would lead to incorrectly throwing a "collation conflict" error; but in some cases the corrected code will silently assign a different collation to the aggregate than before, for example agg(foo ORDER BY bar COLLATE "x") which will now use foo's collation rather than "x" for the aggregate. Given this risk and the lack of field complaints about the issue, it doesn't seem prudent to back-patch. In passing, rearrange code in assign_collations_walker so that we don't need multiple copies of the standard logic for computing collation of a node with children. (Previously, CaseExpr duplicated the standard logic, and we would have needed a third copy for Aggref without this change.) Andrew Gierth and David Fetter
2013-04-26Ensure that user created rows in extension tables get dumped if the table is ↵Joe Conway
explicitly requested, either with a -t/--table switch of the table itself, or by -n/--schema switch of the schema containing the extension table. Patch reviewed by Vibhor Kumar and Dimitri Fontaine. Backpatched to 9.1 when the extension management facility was added.
2013-04-26libpq: Fix a few bits that didn't get the memo about COPY BOTH.Robert Haas
There's probably no real bug here at present, so not backpatching. But it seems good to make these bits consistent with the rest of libpq, so as to avoid future surprises. Patch by me. Review by Tom Lane.
2013-04-25Avoid deadlock between concurrent CREATE INDEX CONCURRENTLY commands.Tom Lane
There was a high probability of two or more concurrent C.I.C. commands deadlocking just before completion, because each would wait for the others to release their reference snapshots. Fix by releasing the snapshot before waiting for other snapshots to go away. Per report from Paul Hinze. Back-patch to all active branches.
2013-04-25Fix typo in comment.Heikki Linnakangas
Peter Geoghegan
2013-04-24pg_basebackup: Add missing newlines at end of linesPeter Eisentraut
2013-04-24initdb: Improve some messagesPeter Eisentraut
2013-04-24Add missing #include.Heikki Linnakangas
On non-Windows systems, sys/time.h was pulled in by portability/instr_time.h, which pulled in time.h. We certainly should include time.h directly, since we're using time(2), but the indirect include masked the problem on most platforms. Andres Freund
2013-04-24Fix assertion failure for REFRESH MATERIALIZED VIEW in PL.Kevin Grittner
This was due to incomplete implementation of rowcount reporting for RMV, which was due to initial waffling on whether it should be provided. It seems unlikely to be a useful or universally available number as more sophisticated techniques for maintaining matviews are added, so remove the partial support rather than completing it. Per report of Jeevan Chalke, but with a different fix
2013-04-24Make fast promotion the default promotion mode.Simon Riggs
Continue to allow a request for synchronous checkpoints as a mechanism in case of problems.
2013-04-20Fix longstanding race condition in plancache.c.Tom Lane
When creating or manipulating a cached plan for a transaction control command (particularly ROLLBACK), we must not perform any catalog accesses, since we might be in an aborted transaction. However, plancache.c busily saved or examined the search_path for every cached plan. If we were unlucky enough to do this at a moment where the path's expansion into schema OIDs wasn't already cached, we'd do some catalog accesses; and with some more bad luck such as an ill-timed signal arrival, that could lead to crashes or Assert failures, as exhibited in bug #8095 from Nachiket Vaidya. Fortunately, there's no real need to consider the search path for such commands, so we can just skip the relevant steps when the subject statement is a TransactionStmt. This is somewhat related to bug #5269, though the failure happens during initial cached-plan creation rather than revalidation. This bug has been there since the plan cache was invented, so back-patch to all supported branches.
2013-04-20Clean up references to SQL92Peter Eisentraut
In most cases, these were just references to the SQL standard in general. In a few cases, a contrast was made between SQL92 and later standards -- those have been kept unchanged.
2013-04-19Improve error message when an FDW doesn't support WHERE CURRENT OF.Tom Lane
If an FDW fails to take special measures with a CurrentOfExpr, we will end up trying to execute it as an ordinary qual, which was being treated as a purely internal failure condition. Provide a more user-oriented error message for such cases.
2013-04-18Standardize spelling of "nonblocking"Peter Eisentraut
Only adjusted the user-exposed messages and documentation, not all source code comments.
2013-04-16pgindent: add newline to die() so script line number is not reported on ↵Bruce Momjian
failure.
2013-04-16Remove some unused and seldom used fields from RelationAmInfo.Heikki Linnakangas
This saves some memory from each index relcache entry. At least on a 64-bit machine, it saves just enough to shrink a typical relcache entry's memory usage from 2k to 1k. That's nice if you have a lot of backends and a lot of indexes.
2013-04-15Fix function return type confusionPeter Eisentraut
When parse_hba_line's return type was changed from bool to a pointer, the MANDATORY_AUTH_ARG macro wasn't adjusted.
2013-04-15Mark json IO and extraction functions immutable.Andrew Dunstan
Per complaint from Hubert Depesz Lubaczewski. Catalog version bumped.
2013-04-15Correct handling of NULL arguments in json funcs.Andrew Dunstan
Per gripe from Tom Lane.
2013-04-14Add serial commaPeter Eisentraut
2013-04-13pg_ctl: Add idempotent optionPeter Eisentraut
This changes the behavior of the start and stop actions to exit successfully if the server was already started or stopped. This changes the default behavior of the start action: Before, if the server was already running, it would print a message and succeed. Now, that situation will result in an error. When running in idempotent mode, no message is printed and pg_ctl exits successfully. It was considered to just make the idempotent behavior the default and only option, but pg_upgrade needs the old behavior.
2013-04-12Fix sporadic rebuilds for .pc filesPeter Eisentraut
The build of .pc (pkg-config) files depends on all makefiles in use, and in dependency tracking mode, the previous coding ended up including /dev/null as a makefile. Apparently, on some platforms the modification time of /dev/null changes sporadically, and so the .pc files would end up being rebuilt every so often. Fix that by changing the makefile code to do without using /dev/null.
2013-04-12Clean up the mess around EXPLAIN and materialized views.Tom Lane
Revert the matview-related changes in explain.c's API, as per recent complaint from Robert Haas. The reason for these appears to have been principally some ill-considered choices around having intorel_startup do what ought to be parse-time checking, plus a poor arrangement for passing it the view parsetree it needs to store into pg_rewrite when creating a materialized view. Do the latter by having parse analysis stick a copy into the IntoClause, instead of doing it at runtime. (On the whole, I seriously question the choice to represent CREATE MATERIALIZED VIEW as a variant of SELECT INTO/CREATE TABLE AS, because that means injecting even more complexity into what was already a horrid legacy kluge. However, I didn't go so far as to rethink that choice ... yet.) I also moved several error checks into matview parse analysis, and made the check for external Params in a matview more accurate. In passing, clean things up a bit more around interpretOidsOption(), and fix things so that we can use that to force no-oids for views, sequences, etc, thereby eliminating the need to cons up "oids = false" options when creating them. catversion bump due to change in IntoClause. (I wonder though if we really need readfuncs/outfuncs support for IntoClause anymore.)
2013-04-12pgindent: improve error messagesBruce Momjian
per suggestion from Gurjeet Singh
2013-04-12pgindent: fix downloading of BSD indent binaryBruce Momjian
Also fix accessing pgentab binary and tar. Gurjeet Singh
2013-04-12sepgsql: Enforce db_procedure:{execute} permission.Robert Haas
To do this, we add an additional object access hook type, OAT_FUNCTION_EXECUTE. KaiGai Kohei
2013-04-12Minor wording corrections for object-access hook stuff.Robert Haas
KaiGai Kohei
2013-04-11Document that git_changelog needs updating for major version stamping.Bruce Momjian
2013-04-11Remove quotes around SQL statement in error messageAlvaro Herrera
2013-04-11Fix confusion between ObjectType and ObjectClassAlvaro Herrera
Per report by Will Leinweber and Peter Eisentraut
2013-04-10Fix SIGUSR1 handling by unconnected bgworkersAlvaro Herrera
Latch activity was not being detected by non-database-connected workers; the SIGUSR1 signal handler which is normally in charge of that was set to SIG_IGN. Create a simple handler to call latch_sigusr1_handler instead. Robert Haas (bug report and suggested fix)
2013-04-10Fix SIGHUP handling by unconnected bgworkersAlvaro Herrera
Add a SignalUnconnectedWorkers() call so that non-database-connected background workers are also notified when postmaster is SIGHUPped. Previously, only database-connected workers were. Michael Paquier (bug report and fix)
2013-04-09Remove duplicate initialization in XLogReadRecord.Robert Haas
Per a note from Dickson S. Guedes.
2013-04-09Create a distinction between a populated matview and a scannable one.Kevin Grittner
The intent was that being populated would, long term, be just one of the conditions which could affect whether a matview was scannable; being populated should be necessary but not always sufficient to scan the relation. Since only CREATE and REFRESH currently determine the scannability, names and comments accidentally conflated these concepts, leading to confusion. Also add missing locking for the SQL function which allows a test for scannability, and fix a modularity violatiion. Per complaints from Tom Lane, although its not clear that these will satisfy his concerns. Hopefully this will at least better frame the discussion.
2013-04-09Adjust ExplainOneQuery_hook_type to take a DestReceiver argument.Robert Haas
The materialized views patch adjusted ExplainOneQuery to take an additional DestReceiver argument, but failed to add a matching argument to the definition of ExplainOneQuery_hook. This is a problem for users of the hook that want to call ExplainOnePlan. Fix by adding the missing argument.
2013-04-09Support indexing of regular-expression searches in contrib/pg_trgm.Tom Lane
This works by extracting trigrams from the given regular expression, in generally the same spirit as the previously-existing support for LIKE searches, though of course the details are far more complicated. Currently, only GIN indexes are supported. We might be able to make it work with GiST indexes later. The implementation includes adding API functions to backend/regex/ to provide a view of the search NFA created from a regular expression. These functions are meant to be generic enough to be supportable in a standalone version of the regex library, should that ever happen. Alexander Korotkov, reviewed by Heikki Linnakangas and Tom Lane
2013-04-08Minor rewording of README commentsSimon Riggs
2013-04-08Fix calculation of how many segments to retain for wal_keep_segments.Heikki Linnakangas
KeepLogSeg function was broken when we switched to use a 64-bit int for the segment number. Per report from Jeff Janes.
2013-04-08Skip extraneous locking in XLogCheckBuffer().Simon Riggs
Heikki reported comment was wrong, so fixed code to match the comment: we only need to take additional locking precautions when we have a shared lock on the buffer.
2013-04-08Avoid tricky race condition recording XLOG_HINTSimon Riggs
We copy the buffer before inserting an XLOG_HINT to avoid WAL CRC errors caused by concurrent hint writes to buffer while share locked. To make this work we refactor RestoreBackupBlock() to allow an XLOG_HINT to avoid the normal path for backup blocks, which assumes the underlying buffer is exclusive locked. Resulting code completely changes layout of XLOG_HINT WAL records, but this isn't even beta code, so this is a low impact change. In passing, avoid taking WALInsertLock for full page writes on checksummed hints, remove related cruft from XLogInsert() and improve xlog_desc record for XLOG_HINT. Andres Freund Bug report by Fujii Masao, testing by Jeff Janes and Jaime Casanova, review by Jeff Davis and Simon Riggs. Applied with changes from review and some comment editing.
2013-04-08README comments on checksums on page holes.Simon Riggs
2013-04-07Tune BufferGetLSNAtomic() when checksums !enabledSimon Riggs
From performance analysis by Heikki Linnakangas
2013-04-07Fix checksums for CLUSTER, VACUUM FULL etc.Simon Riggs
In CLUSTER, VACUUM FULL and ALTER TABLE SET TABLESPACE I erroneously set checksum before log_newpage, which sets the LSN and invalidates the checksum. So set checksum immediately *after* log_newpage. Bug report Fujii Masao, Fix and patch by Jeff Davis
2013-04-06In isolationtester, retry after EINTR return from select(2).Tom Lane
Per report from Jaime Casanova. Very curious that no one else has seen this failure ... but the code is clearly wrong as-is.
2013-04-05sepgsql: Enforce db_schema:search permission.Robert Haas
KaiGai Kohei, with comment and doc wordsmithing by me
2013-04-04Fix line count in slashUsage().Tom Lane
Counting newlines shows that quite a few recent patches have neglected to update the output-lines count given to PageOutput(). Fortunately it's not terribly critical that this be exact, since we long since exceeded the height of most people's terminal windows. Still, maybe we ought to think of a way to not have to maintain this manually anymore.