aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Get rid of pg_class.reltoastidxid.Fujii Masao2013-07-04
| | | | | | | | | | Treat TOAST index just the same as normal one and get the OID of TOAST index from pg_index but not pg_class.reltoastidxid. This change allows us to handle multiple TOAST indexes, and which is required infrastructure for upcoming REINDEX CONCURRENTLY feature. Patch by Michael Paquier, reviewed by Andres Freund and me.
* pg_buffercache: document column meaningsBruce Momjian2013-07-03
| | | | | | Improve documentation for usagecount and relforknumber. Backpatch to 9.3. Suggestion from Satoshi Nagayasu
* Revert "Hopefully-portable regression tests for CREATE/ALTER/DROP COLLATION."Robert Haas2013-07-03
| | | | | | This reverts commit 263645305b8f14a3821e04dffa96fa7c1bc2ae86. The buildfarm is sad.
* Hopefully-portable regression tests for CREATE/ALTER/DROP COLLATION.Robert Haas2013-07-03
| | | | | | | | | | | The collate.linux.utf8 test covers some of the same territory, but isn't portable and so probably does not get run often, or on non-Linux platforms. If this approach turns out to be sufficiently portable, we may want to look at trimming the redundant tests out of that file to avoid duplication. Robins Tharakan, reviewed by Michael Paquier and Fabien Coelho, with further changes and cleanup by me.
* Fix handling of auto-updatable views on inherited tables.Tom Lane2013-07-03
| | | | | | | | | | | | An INSERT into such a view should work just like an INSERT into its base table, ie the insertion should go directly into that table ... not be duplicated into each child table, as was happening before, per bug #8275 from Rushabh Lathia. On the other hand, the current behavior for UPDATE/DELETE seems reasonable: the update/delete traverses the child tables, or not, depending on whether the view specifies ONLY or not. Add some regression tests covering this area. Dean Rasheed
* Unbreak postmaster restart-after-crash sequenceAlvaro Herrera2013-07-03
| | | | | | In patch 82233ce7ea42, AbortStartTime wasn't being reset appropriately after the restart sequence, causing subsequent iterations through ServerLoop to malfunction.
* Regression tests for LISTEN/NOTIFY/UNLISTEN/pg_notify.Robert Haas2013-07-03
| | | | Robins Tharakan, reviewed by Szymon Guz
* Additional regression tests for CREATE OPERATOR.Robert Haas2013-07-03
| | | | Robins Tharakan, reviewed by Szymon Guz
* Expose object name error fields in PL/pgSQL.Noah Misch2013-07-03
| | | | | | | | | | | | | | | | | Specifically, permit attaching them to the error in RAISE and retrieving them from a caught error in GET STACKED DIAGNOSTICS. RAISE enforces nothing about the content of the fields; for its purposes, they are just additional string fields. Consequently, clarify in the protocol and libpq documentation that the usual relationships between error fields, like a schema name appearing wherever a table name appears, are not universal. This freedom has other applications; consider a FDW propagating an error from an RDBMS having no schema support. Back-patch to 9.3, where core support for the error fields was introduced. This prevents the confusion of having a release where libpq exposes the fields and PL/pgSQL does not. Pavel Stehule, lexical revisions by Noah Misch.
* doc: Remove i18ngurus.com linkPeter Eisentraut2013-07-02
| | | | | The web site is dead, and the Wayback Machine shows that it didn't have much useful content before.
* Add #include to make header file independentPeter Eisentraut2013-07-02
|
* doc: Arrange See Also links in more consistent orderPeter Eisentraut2013-07-02
|
* pg_restore: Error about incompatible optionsPeter Eisentraut2013-07-02
| | | | This mirrors the equivalent error cases in pg_dump.
* Add support for multiple kinds of external toast datums.Robert Haas2013-07-02
| | | | | | | | | | | To that end, support tags rather than lengths for external datums. As an example of how this can be used, add support or "indirect" tuples which point to some externally allocated memory containing a toast tuple. Similar infrastructure could be used for other purposes, including, perhaps, support for alternative compression algorithms. Andres Freund, reviewed by Hitoshi Harada and myself
* Mention extra_float_digits in floating point docsAlvaro Herrera2013-07-02
| | | | | | | | | | | Make it easier for readers of the FP docs to find out about possibly truncated values. Per complaint from Tom Duffey in message F0E0F874-C86F-48D1-AA2A-0C5365BF5118@trillitech.com Author: Albe Laurenz Reviewed by: Abhijit Menon-Sen
* Silence compiler warning in assertion-enabled builds.Heikki Linnakangas2013-07-02
| | | | | | | | | With -Wtype-limits, gcc correctly points out that size_t can never be < 0. Backpatch to 9.3 and 9.2. It's been like this forever, but in <= 9.1 you got a lot other warnings with -Wtype-limits anyway (at least with my version of gcc). Andres Freund
* pg_upgrade: revert changing '' to ""Bruce Momjian2013-07-02
| | | | | | | On the command line, GUC option strings are handled by the guc parser, not by the shell parser, so '' is the proper way to represent a zero-length string. This reverts commit 3132a9b7ab3d76c15f88cfa29792fd888e7a959e.
* Use an MVCC snapshot, rather than SnapshotNow, for catalog scans.Robert Haas2013-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | SnapshotNow scans have the undesirable property that, in the face of concurrent updates, the scan can fail to see either the old or the new versions of the row. In many cases, we work around this by requiring DDL operations to hold AccessExclusiveLock on the object being modified; in some cases, the existing locking is inadequate and random failures occur as a result. This commit doesn't change anything related to locking, but will hopefully pave the way to allowing lock strength reductions in the future. The major issue has held us back from making this change in the past is that taking an MVCC snapshot is significantly more expensive than using a static special snapshot such as SnapshotNow. However, testing of various worst-case scenarios reveals that this problem is not severe except under fairly extreme workloads. To mitigate those problems, we avoid retaking the MVCC snapshot for each new scan; instead, we take a new snapshot only when invalidation messages have been processed. The catcache machinery already requires that invalidation messages be sent before releasing the related heavyweight lock; else other backends might rely on locally-cached data rather than scanning the catalog at all. Thus, making snapshot reuse dependent on the same guarantees shouldn't break anything that wasn't already subtly broken. Patch by me. Review by Michael Paquier and Andres Freund.
* Fix regression test make dependenciesPeter Eisentraut2013-07-01
| | | | | | | | | | | | The dependencies on the spi and dummy_seclabel contrib modules were incomplete, because they did not pick up automatically generated dependencies on header files. This will manifest itself especially when switching major versions, where the contrib modules would not be recompiled to contain the new version number, leading to regression test failures. To fix this, use the submake approach already in use elsewhere, so that the contrib modules are built using their full rules.
* pg_dump docs: use escaped double-quotes, for WindowsBruce Momjian2013-07-01
| | | | | | | | On Unix, you can embed double-quotes in single-quotes, and via versa. However, on Windows, you can only escape double-quotes in double-quotes, so use that in the pg_dump -t/table example. Backpatch to 9.3. Report from Mike Toews
* Add a convenience routine makeFuncCall to reduce duplication.Robert Haas2013-07-01
| | | | David Fetter and Andrew Gierth, reviewed by Jeevan Chalke
* pg_upgrade: use "" rather than '', for WindowsBruce Momjian2013-07-01
| | | | | If we ever support unix sockets on Windows, we should use "" rather than '' for zero-length strings on the command-line, so use that.
* Add timezone offset output option to to_char()Bruce Momjian2013-07-01
| | | | | | Add ability for to_char() to output the timezone's UTC offset (OF). We already have the ability to return the timezone abbeviation (TZ/tz). Per request from Andrew Dunstan
* Improve support for building PGXS modules with VPATH.Andrew Dunstan2013-07-01
| | | | | | | | | | | | | | A VPATH build will be performed when the module's make file path is not the current directory or when USE_VPATH is set. This will assist packagers and others who prefer to build without polluting the source directories. There is still a bit of work to do here, notably documentation, but it's probably a good idea to commit what we have so far and let people test it out on their modules. Cédric Villemain, with an addition from me.
* Update LSB URL in pg_ctlBruce Momjian2013-07-01
| | | | | Update Linux Standard Base Core Specification 3.1 URL mention in pg_ctl comments.
* Remove undocumented -h (help) optionBruce Momjian2013-07-01
| | | | | | The -h option was not supported by many tools, and not documented, so remove them for consistency from pg_upgrade, pg_test_fsync, and pg_test_timing.
* Optimize pglz compressor for small inputs.Heikki Linnakangas2013-07-01
| | | | | | | | | | | | | | | | The pglz compressor has a significant startup cost, because it has to initialize to zeros the history-tracking hash table. On a 64-bit system, the hash table was 64kB in size. While clearing memory is pretty fast, for very short inputs the relative cost of that was quite large. This patch alleviates that in two ways. First, instead of storing pointers in the hash table, store 16-bit indexes into the hist_entries array. That slashes the size of the hash table to 1/2 or 1/4 of the original, depending on the pointer width. Secondly, adjust the size of the hash table based on input size. For very small inputs, you don't need a large hash table to avoid collisions. Review by Amit Kapila.
* Retry short writes when flushing WAL.Heikki Linnakangas2013-07-01
| | | | | | | | | | | | | We don't normally bother retrying when the number of bytes written by write() is short of what was requested. It is generally assumed that a write() to disk doesn't return short, unless you run out of disk space. While writing the WAL, however, it seems prudent to try a bit harder, because a failure leads to PANIC. The write() is also much larger than most write()s in the backend (up to wal_buffers), so there's more room for surprises. Also retry on EINTR. All signals used in the backend are flagged SA_RESTART nowadays, so it shouldn't happen, but better to be defensive.
* Fix cpluspluscheck in checksum codePeter Eisentraut2013-06-30
| | | | C++ is more picky about comparing signed and unsigned integers.
* ecpg: Consistently use mm_strdup()Peter Eisentraut2013-06-29
| | | | | mm_strdup() is provided to check errors from strdup(), but some places were failing to use it.
* Inline ginCompareItemPointers function for speed.Heikki Linnakangas2013-06-29
| | | | | ginCompareItemPointers function is called heavily in gin index scans - inlining it speeds up some kind of queries a lot.
* Change errcode for lock_timeout to match NOWAITSimon Riggs2013-06-29
| | | | | | Set errcode to ERRCODE_LOCK_NOT_AVAILABLE Zoltán Bsöszörményi
* ALTER TABLE ... ALTER CONSTRAINT for FKsSimon Riggs2013-06-29
| | | | | | | | Allow constraint attributes to be altered, so the default setting of NOT DEFERRABLE can be altered to DEFERRABLE and back. Review by Abhijit Menon-Sen
* Assert that ALTER TABLE subcommands have pass setSimon Riggs2013-06-29
|
* pg_upgrade: pass username to analyze scriptBruce Momjian2013-06-28
| | | | | | If -U (user) is specified, pass the username into the created analyze script. Per request from Ray Stell
* pg_upgrade: remove -h optionBruce Momjian2013-06-28
| | | | | -h (help) is not needed; pg_upgrade already supports --help and -?, which is consistent with other tools.
* pg_upgrade: trim down --help and doc option descriptionsBruce Momjian2013-06-28
| | | | | | Previous code had old/new prefixes on option values, e.g. --old-datadir=OLDDATADIR. Remove them, for simplicity; now: --old-datadir=DATADIR. Also update docs to do the same.
* Send SIGKILL to children if they don't die quickly in immediate shutdownAlvaro Herrera2013-06-28
| | | | | | | | | | | | | | | | | | | | | | | | On immediate shutdown, or during a restart-after-crash sequence, postmaster used to send SIGQUIT (and then abandon ship if shutdown); but this is not a good strategy if backends don't die because of that signal. (This might happen, for example, if a backend gets tangled trying to malloc() due to gettext(), as in an example illustrated by MauMau.) This causes problems when later trying to restart the server, because some processes are still attached to the shared memory segment. Instead of just abandoning such backends to their fates, we now have postmaster hang around for a little while longer, send a SIGKILL after some reasonable waiting period, and then exit. This makes immediate shutdown more reliable. There is disagreement on whether it's best for postmaster to exit after sending SIGKILL, or to stick around until all children have reported death. If this controversy is resolved differently than what this patch implements, it's an easy change to make. Bug reported by MauMau in message 20DAEA8949EC4E2289C6E8E58560DEC0@maumau MauMau and Álvaro Herrera
* pg_upgrade: change -u to -U, for consistencyBruce Momjian2013-06-28
| | | | | | | Change -u (user) option to -U, for consistency with other tools like pg_dump and psql. Also expand --user to --username, again for consistency. BACKWARD INCOMPATIBILITY
* Make the OVER keyword unreserved.Robert Haas2013-06-28
| | | | | | | | | | | | This results in a slightly less specific error message when OVER is used in a context where we don't accept window functions, but per discussion, it's worth it to get the benefit of not needing to reserve this keyword any more. This same refactoring will also let us avoid reserving some other keywords that we expect to add in upcoming patches (specifically, IGNORE, RESPECT, and FILTER). Troels Nielsen, with minor changes by me
* Define Trap and TrapMacro even in non-cassert builds.Robert Haas2013-06-28
| | | | | | | In some cases, the use of these macros may be preferable to Assert() or AssertMacro(), since this way the caller can set the trap message. Andres Freund and Robert Haas
* Track spinlock delay in microsecond granularity.Heikki Linnakangas2013-06-28
| | | | | | | | | | | | | | | | On many platforms the OS will round the sleep time to millisecond resolution, but there is no reason for us to pre-emptively round the argument to pg_usleep. When the delay was measured in milliseconds and started from 1 ms, it sometimes took many attempts until the logic that increases the delay by multiplying with a random value between 1 and 2 actually managed to bump it from 1 ms to 2 ms. That lead to a sequence of 1 ms waits until the delay started to increase. This wasn't really a problem but it looked odd if you observed the waits. There is no measurable difference in performance, but it's more readable this way. Jeff Janes
* Update pg_resetxlog's documentation on multixactsAlvaro Herrera2013-06-27
| | | | | | | | I added some more functionality to it in 0ac5ad5134f27 but neglected to add it to the docs. Per Peter Eisentraut in message 1367112171.32604.4.camel@vanquo.pezone.net
* Document relminmxid and datminmxidAlvaro Herrera2013-06-27
| | | | | | | | I introduced these new fields in 0ac5ad5134f27 but neglected to add them to the system catalogs section of the docs. Per Thom Brown in message CAA-aLv7UiO=Whiq3MVbsEqSyQRthuX8Tb_RLyBuQt0KQBp=6EQ@mail.gmail.com
* Permit super-MaxAllocSize allocations with MemoryContextAllocHuge().Noah Misch2013-06-27
| | | | | | | | | | | | | The MaxAllocSize guard is convenient for most callers, because it reduces the need for careful attention to overflow, data type selection, and the SET_VARSIZE() limit. A handful of callers are happy to navigate those hazards in exchange for the ability to allocate a larger chunk. Introduce MemoryContextAllocHuge() and repalloc_huge(). Use this in tuplesort.c and tuplestore.c, enabling internal sorts of up to INT_MAX tuples, a factor-of-48 increase. In particular, B-tree index builds can now benefit from much-larger maintenance_work_mem settings. Reviewed by Stephen Frost, Simon Riggs and Jeff Janes.
* Mark index-constraint comments with correct dependency in pg_dump.Tom Lane2013-06-27
| | | | | | | | | | | | | | | | | When there's a comment on an index that was created with UNIQUE or PRIMARY KEY constraint syntax, we need to label the comment as depending on the constraint not the index, since only the constraint object actually appears in the dump. This incorrect dependency can lead to parallel pg_restore trying to restore the comment before the index has been created, per bug #8257 from Lloyd Albin. This patch fixes pg_dump to produce the right dependency in dumps made in the future. Usually we also try to hack pg_restore to work around bogus dependencies, so that existing (wrong) dumps can still be restored in parallel mode; but that doesn't seem practical here since there's no easy way to relate the constraint dump entry to the comment after the fact. Andres Freund
* Expect EWOULDBLOCK from a non-blocking connect() call only on Windows.Tom Lane2013-06-27
| | | | | | | | | | | | | | | | | | | | | | | On Unix-ish platforms, EWOULDBLOCK may be the same as EAGAIN, which is *not* a success return, at least not on Linux. We need to treat it as a failure to avoid giving a misleading error message. Per the Single Unix Spec, only EINPROGRESS and EINTR returns indicate that the connection attempt is in progress. On Windows, on the other hand, EWOULDBLOCK (WSAEWOULDBLOCK) is the expected case. We must accept EINPROGRESS as well because Cygwin will return that, and it doesn't seem worth distinguishing Cygwin from native Windows here. It's not very clear whether EINTR can occur on Windows, but let's leave that part of the logic alone in the absence of concrete trouble reports. Also, remove the test for errno == 0, effectively reverting commit da9501bddb42222dc33c031b1db6ce2133bcee7b, which AFAICS was just a thinko; or at best it might have been a workaround for a platform-specific bug, which we can hope is gone now thirteen years later. In any case, since libpq makes no effort to reset errno to zero before calling connect(), it seems unlikely that that test has ever reliably done anything useful. Andres Freund and Tom Lane
* Fixed incorrect description of EXEC SQL VAR command.Michael Meskes2013-06-27
| | | | Thanks to MauMau <maumau307@gmail.com> for finding and fixing this.
* pgbench: Fix inadvertent inconsistency in help message.Robert Haas2013-06-27
| | | | Per report from Fujii Masao.
* pgbench: Add long options for all existing short options.Robert Haas2013-06-27
| | | | | Fabien Coelho, reviewed by Fabrízio de Royes Mello, with some further changes by me