summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-08-16release notes: Update to 9.3 git currentBruce Momjian
Backpatch to 9.3, of course.
2013-08-16Move more bgworker code to bgworker.c; also, some renaming.Robert Haas
Per discussion on pgsql-hackers. Michael Paquier, slightly modified by me. Original suggestion from Amit Kapila.
2013-08-16pg_upgrade: shut down server after auth failureBruce Momjian
Register atexit() server shutdown if pg_ctl successfully started the server, but we can't connect to it. Backpatch to 9.3. Pavel Raiskup
2013-08-16Fix typo in comment.Heikki Linnakangas
2013-08-15Don't allow ALTER MATERIALIZED VIEW ADD UNIQUE.Kevin Grittner
Was accidentally allowed, but not documented and lacked support for rename or drop once created. Per report from Noah Misch.
2013-08-15Add tab completion for \dx in psqlMagnus Hagander
2013-08-14Treat timeline IDs as unsigned in replication parserPeter Eisentraut
Timeline IDs are unsigned ints everywhere, except the replication parser treated them as signed ints.
2013-08-14Improve error message when view is not updatablePeter Eisentraut
Avoid using the term "updatable" in confusing ways. Suggest a trigger first, before a rule.
2013-08-14Remove ph_may_need from PlaceHolderInfo, with attendant simplifications.Tom Lane
The planner logic that attempted to make a preliminary estimate of the ph_needed levels for PlaceHolderVars seems to be completely broken by lateral references. Fortunately, the potential join order optimization that this code supported seems to be of relatively little value in practice; so let's just get rid of it rather than trying to fix it. Getting rid of this allows fairly substantial simplifications in placeholder.c, too, so planning in such cases should be a bit faster. Issue noted while pursuing bugs reported by Jeremy Evans and Antonin Houska, though this doesn't in itself fix either of their reported cases. What this does do is prevent an Assert crash in the kind of query illustrated by the added regression test. (I'm not sure that the plan for that query is stable enough across platforms to be usable as a regression test output ... but we'll soon find out from the buildfarm.) Back-patch to 9.3. The problem case can't arise without LATERAL, so no need to touch older branches.
2013-08-14docs: document TRIM "comma" syntaxBruce Momjian
This syntax is supported by the parser, but is non-standard. _Not_ backpatched to 9.3 in case we change our minds.
2013-08-14Remove Assert that matview is not in system schema from REFRESH.Kevin Grittner
We don't want to prevent an extension which creates a matview from being installed in pg_catalog. Issue was raised by Hitoshi Harada. Backpatched to 9.3.
2013-08-13Update Emacs configurationPeter Eisentraut
Update emacs.samples with new configuration snippets that match pgindent et al. formatting more accurately and follow Emacs Lisp best practices better. Add .dir-locals.el with a subset of that configuration for casual editing and viewing. Reviewed-by: Dimitri Fontaine <dimitri@2ndQuadrant.fr> Reviewed-by: Noah Misch <noah@leadboat.com>
2013-08-13Emit a log message if output is about to be redirected away from stderr.Tom Lane
We've seen multiple cases of people looking at the postmaster's original stderr output to try to diagnose problems, not realizing/remembering that their logging configuration is set up to send log messages somewhere else. This seems particularly likely to happen in prepackaged distributions, since many packagers patch the code to change the factory-standard logging configuration to something more in line with their platform conventions. In hopes of reducing confusion, emit a LOG message about this at the point in startup where we are about to switch log output away from the original stderr, providing a pointer to where to look instead. This message will appear as the last thing in the original stderr output. (We might later also try to emit such link messages when logging parameters are changed on-the-fly; but that case seems to be both noticeably harder to do nicely, and much less frequently a problem in practice.) Per discussion, back-patch to 9.3 but not further.
2013-08-139.3 release notes: move foreign table itemBruce Momjian
Move item about foreign data wrappers supporting inserts/updates/deletes to object manipulation. From Etsuro Fujita
2013-08-13pg_dump: avoid schema qualification for ALTER ... OWNERBruce Momjian
We already use search_path to specify the schema, so there is no need for pg_dump to schema-qualify the name. Also remove dead code.
2013-08-11PL/Python: Adjust the regression tests for Python 3.3Peter Eisentraut
Similar to 2cfb1c6f77734db81b6e74bcae630f93b94f69be, the order in which dictionary elements are printed is not reliable. This reappeared in the tests of the string representation of result objects. Reduce the test case to one result set column so that there is no question of order.
2013-08-09docs: mention Julian is midnight _UTC_Bruce Momjian
(Yes, there was no UTC back then, but we compute it that way.) Backpatch to 9.3.
2013-08-09Docs: Document to_*() Julian values are integersBruce Momjian
Backpatch to 9.3. Per request from Marc Dahn
2013-08-09Document how auto_explain.log_timing can be changed.Fujii Masao
2013-08-09Message punctuation and pluralization fixesPeter Eisentraut
2013-08-07Message style improvementsPeter Eisentraut
2013-08-08Fix assertion failure by an immediate shutdown.Fujii Masao
In PM_WAIT_DEAD_END state, checkpointer process must be dead already. But an immediate shutdown could make postmaster's state machine transition to PM_WAIT_DEAD_END state even if checkpointer process is still running, and which caused assertion failure. This bug was introduced in commit 457d6cf049c57cabe9b46ea13f26138040a214ec. This patch ensures that postmaster's state machine doesn't transition to PM_WAIT_DEAD_END state in an immediate shutdown while checkpointer process is running.
2013-08-05pgtest: allow passing parameters, e.g. -s/--silentBruce Momjian
Previously only -n was recognized.
2013-08-05Simplify query_planner's API by having it return the top-level RelOptInfo.Tom Lane
Formerly, query_planner returned one or possibly two Paths for the topmost join relation, so that grouping_planner didn't see the join RelOptInfo (at least not directly; it didn't have any hesitation about examining cheapest_path->parent, though). However, correct selection of the Paths involved a significant amount of coupling between query_planner and grouping_planner, a problem which has gotten worse over time. It seems best to give up on this API choice and instead return the topmost RelOptInfo explicitly. Then grouping_planner can pull out the Paths it wants from the rel's path list. In this way we can remove all knowledge of grouping behaviors from query_planner. The only real benefit of the old way is that in the case of an empty FROM clause, we never made any RelOptInfos at all, just a Path. Now we have to gin up a dummy RelOptInfo to represent the empty FROM clause. That's not a very big deal though. While at it, simplify query_planner's API a bit more by having the caller set up root->tuple_fraction and root->limit_tuples, rather than passing those values as separate parameters. Since query_planner no longer does anything with either value, requiring it to fill the PlannerInfo fields seemed pretty arbitrary. This patch just rearranges code; it doesn't (intentionally) change any behaviors. Followup patches will do more interesting things.
2013-08-05Various cleanups for REFRESH MATERIALIZED VIEW CONCURRENTLY.Kevin Grittner
Open and lock each index before checking definition in RMVC. The ExclusiveLock on the related table is not viewed as sufficient to ensure that no changes are made to the index definition, and invalidation messages from other backends might have been missed. Additionally, use RelationGetIndexExpressions() and check for NIL rather than doing our own loop. Protect against redefinition of tid and rowvar operators in RMVC. While working on this, noticed that the fixes for bugs found during the CF made the UPDATE statement useless, since no rows could qualify for that treatment any more. Ripping out code to support the UPDATE statement simplified the operator cleanups. Change slightly confusing local field name. Use meaningful alias names on queries in refresh_by_match_merge(). Per concerns of raised by Andres Freund and comments and suggestions from Noah Misch. Some additional issues remain, which will be addressed separately.
2013-08-03Make sure float4in/float8in accept all standard spellings of "infinity".Tom Lane
The C99 and POSIX standards require strtod() to accept all these spellings (case-insensitively): "inf", "+inf", "-inf", "infinity", "+infinity", "-infinity". However, pre-C99 systems might accept only some or none of these, and apparently Windows still doesn't accept "inf". To avoid surprising cross-platform behavioral differences, manually check for each of these spellings if strtod() fails. We were previously handling just "infinity" and "-infinity" that way, but since C99 is most of the world now, it seems likely that applications are expecting all these spellings to work. Per bug #8355 from Basil Peace. It turns out this fix won't actually resolve his problem, because Python isn't being this careful; but that doesn't mean we shouldn't be.
2013-08-02Fix old visibility bug in HeapTupleSatisfiesDirtyAlvaro Herrera
If a tuple is locked but not updated by a concurrent transaction, HeapTupleSatisfiesDirty would return that transaction's Xid in xmax, causing callers to wait on it, when it is not necessary (in fact, if the other transaction had used a multixact instead of a plain Xid to mark the tuple, HeapTupleSatisfiesDirty would have behave differently and *not* returned the Xmax). This bug was introduced in commit 3f7fbf85dc5b42, dated December 1998, so it's almost 15 years old now. However, it's hard to see this misbehave, because before we had NOWAIT the only consequence of this is that transactions would wait for slightly more time than necessary; so it's not surprising that this hasn't been reported yet. Craig Ringer and Andres Freund
2013-08-02Fix crash in error report of invalid tuple lockAlvaro Herrera
My tweak of these error messages in commit c359a1b082 contained the thinko that a query would always have rowMarks set for a query containing a locking clause. Not so: when declaring a cursor, for instance, rowMarks isn't set at the point we're checking, so we'd be dereferencing a NULL pointer. The fix is to pass the lock strength to the function raising the error, instead of trying to reverse-engineer it. The result not only is more robust, but it also seems cleaner overall. Per report from Robert Haas.
2013-08-02Fix typo in comment.Robert Haas
Etsuro Fujita
2013-08-02pg_test_fsync: expand ops/sec displayBruce Momjian
Expand ops/sec by two digits to maintain alignment on servers with fast I/O subsystems, e.g. can now display < 10M ops/sec with consistent alignment.
2013-08-01Improve handling of pthread_mutex_lock error caseStephen Frost
We should really be reporting a useful error along with returning a valid return code if pthread_mutex_lock() throws an error for some reason. Add that and back-patch to 9.0 as the prior patch. Pointed out by Alvaro Herrera
2013-08-01Improve comments for IncrementalMaintenance DML enabling functions.Kevin Grittner
Move the static functions after the comment and expand the comment. Per complaint from Andres Freund, although using different comment text.
2013-08-01Assorted bgworker-related comment fixes.Robert Haas
Per gripes by Amit Kapila.
2013-08-01Remove SnapshotNow and HeapTupleSatisfiesNow.Robert Haas
We now use MVCC catalog scans, and, per discussion, have eliminated all other remaining uses of SnapshotNow, so that we can now get rid of it. This will break third-party code which is still using it, which is intentional, as we want such code to be updated to do things the new way.
2013-08-01Add locking around SSL_context usage in libpqStephen Frost
I've been working with Nick Phillips on an issue he ran into when trying to use threads with SSL client certificates. As it turns out, the call in initialize_SSL() to SSL_CTX_use_certificate_chain_file() will modify our SSL_context without any protection from other threads also calling that function or being at some other point and trying to read from SSL_context. To protect against this, I've written up the attached (based on an initial patch from Nick and much subsequent discussion) which puts locks around SSL_CTX_use_certificate_chain_file() and all of the other users of SSL_context which weren't already protected. Nick Phillips, much reworked by Stephen Frost Back-patch to 9.0 where we started loading the cert directly instead of using a callback.
2013-08-01Allow a context to be passed in for error handlingStephen Frost
As pointed out by Tom Lane, we can allow other users of the error handler callbacks to provide their own memory context by adding the context to use to ErrorData and using that instead of explicitly using ErrorContext. This then allows GetErrorContextStack() to be called from inside exception handlers, so modify plpgsql to take advantage of that and add an associated regression test for it.
2013-07-31Fix mis-indented linesAlvaro Herrera
Per Coverity
2013-07-31Fix a couple of inconsequential typos in new headerAlvaro Herrera
2013-07-31pg_dump/pg_dumpall: remove unnecessary SQL trailing semicolonsBruce Momjian
Patch by Ian Lawrence Barwick
2013-07-31Fix regexp_matches() handling of zero-length matches.Tom Lane
We'd find the same match twice if it was of zero length and not immediately adjacent to the previous match. replace_text_regexp() got similar cases right, so adjust this search logic to match that. Note that even though the regexp_split_to_xxx() functions share this code, they did not display equivalent misbehavior, because the second match would be considered degenerate and ignored. Jeevan Chalke, with some cosmetic changes by me.
2013-07-31Fix typo in comment.Fujii Masao
Hitoshi Harada
2013-07-31Fix inaccurate description of tablespace.Fujii Masao
Currently we don't need to update the pg_tablespace catalog after redefining the symbolic links to the tablespaces because pg_tablespace.spclocation column was removed in PostgreSQL 9.2. Back patch to 9.2 where pg_tablespace.spclocation was removed. Ian Barwick, with minor change by me.
2013-07-30Restore REINDEX constraint validation.Noah Misch
Refactoring as part of commit 8ceb24568054232696dddc1166a8563bc78c900a had the unintended effect of making REINDEX TABLE and REINDEX DATABASE no longer validate constraints enforced by the indexes in question; REINDEX INDEX still did so. Indexes marked invalid remained so, and constraint violations arising from data corruption went undetected. Back-patch to 9.0, like the causative commit.
2013-07-30pg_upgrade: clarify C comment about Windows thread struct pointersBruce Momjian
Backpatch to 9.3 to keep source trees consistent.
2013-07-29Sync ECPG with WITH ORDINALITY changesGreg Stark
2013-07-29Add SQL Standard WITH ORDINALITY support for UNNEST (and any other SRF)Greg Stark
Author: Andrew Gierth, David Fetter Reviewers: Dean Rasheed, Jeevan Chalke, Stephen Frost
2013-07-29Fix contrib/cube and contrib/seg to build with bison 3.0.Tom Lane
These modules used the YYPARSE_PARAM macro, which has been deprecated by the bison folk since 1.875, and which they finally removed in 3.0. Adjust the code to use the replacement facility, %parse-param, which is a much better solution anyway since it allows specification of the type of the extra parser parameter. We can thus get rid of a lot of unsightly casting. Back-patch to all active branches, since somebody might try to build a back branch with up-to-date tools.
2013-07-28Message style improvementsPeter Eisentraut
2013-07-27pg_upgrade: fix -j race condition on WindowsBruce Momjian
Pg_Upgrade cannot write the command string to the log file and then call system() to write to the same file without causing occasional file-share errors on Windows. So instead, write the command string to the log file after system(), in those cases. Backpatch to 9.3.
2013-07-26pg_upgrade docs: don't use cluster for binary/libBruce Momjian
In a few cases, pg_upgrade said old/new cluster location when it meant old/new Postgres install location, so fix those. Per private email report