aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Remove the isLocalBuf argument from ReadBuffer_common.Robert Haas2010-08-20
| | | | | | Since an SMgrRelation now knows whether or not the underlying relation is temporary, there's no point in also passing that information via an additional argument.
* Bring some sanity to the trace_recovery_messages code and docs.Tom Lane2010-08-19
| | | | | | | | | | Per gripe from Fujii Masao, though this is not exactly his proposed patch. Categorize as DEVELOPER_OPTIONS and set context PGC_SIGHUP, as per Fujii, but set the default to LOG because higher values aren't really sensible (see the code for trace_recovery()). Fix the documentation to agree with the code and to try to explain what the variable actually does. Get rid of no-op calls trace_recovery(LOG), which accomplish nothing except to demonstrate that this option confuses even its author.
* Allow USING and INTO clauses of plpgsql's EXECUTE to appear in either order.Tom Lane2010-08-19
| | | | | | | | | | | | Aside from being more forgiving, this prevents a rather surprising misbehavior when the "wrong" order was used: the old code didn't throw a syntax error, but absorbed the INTO clause into the last USING expression, which then did strange things downstream. Intentionally not changing the documentation; we'll continue to advertise only the "standard" clause order. Backpatch to 8.4, where the USING clause was added to EXECUTE.
* Keep exec_simple_check_plan() from thinking "SELECT foo INTO bar" is simple.Tom Lane2010-08-19
| | | | | | | | | | | | It's not clear if this situation can occur in plpgsql other than via the EXECUTE USING case Heikki illustrated, which I will shortly close off. However, ignoring the intoClause if it's there is surely wrong, so let's patch it for safety. Backpatch to 8.3, which is as far back as this code has a PlannedStmt to deal with. There might be another way to make an equivalent test before that, but since this is just preventing hypothetical bugs, I'm not going to obsess about it.
* Be a bit less cavalier with both the code and the comment for UNKNOWN fix.Tom Lane2010-08-19
|
* Revert patch to coerce 'unknown' type parameters in the backend. As TomHeikki Linnakangas2010-08-19
| | | | | | | | | | | | | | | | pointed out, it would need a 2nd pass after the whole query is processed to correctly check that an unknown Param is coerced to the same target type everywhere. Adding the 2nd pass would add a lot more code, which doesn't seem worth the risk given that there isn't much of a use case for passing unknown Params in the first place. The code would work without that check, but it might be confusing and the behavior would be different from the varparams case. Instead, just coerce all unknown params in a PL/pgSQL USING clause to text. That's simple, and is usually what users expect. Revert the patch in CVS HEAD and master, and backpatch the new solution to 8.4. Unlike the previous solution, this applies easily to 8.4 too.
* Allocate local buffers in a context of their own, rather than dumping themTom Lane2010-08-19
| | | | | | into TopMemoryContext. This makes no functional difference, but makes it easier to see what the space is being used for in MemoryContextStats dumps. Per a recent example in which I was surprised by the size of TopMemoryContext.
* Fix possible corruption of AfterTriggerEventLists in subtransaction rollback.Tom Lane2010-08-19
| | | | | | | | | | | | | afterTriggerInvokeEvents failed to adjust events->tailfree when truncating the last chunk of an event list. This could result in the data being "de-truncated" by afterTriggerRestoreEventList during a subsequent subtransaction abort. Even that wouldn't kill us, because the re-added data would just be events marked DONE --- unless the data had been partially overwritten by new events. Then we might crash, or in any case misbehave (perhaps fire triggers twice, or fire triggers with the wrong event data). Per bug #5622 from Thue Janus Kristensen. Back-patch to 8.4 where the current trigger list representation was introduced.
* Remove extra newlines at end and beginning of files, add missing newlinesPeter Eisentraut2010-08-19
| | | | at end of files.
* Tidy up a few calls to smrgextend().Robert Haas2010-08-19
| | | | | | | | | In the new API introduced by my patch to include the backend ID in temprel filenames, the last argument to smrgextend() became skipFsync rather than isTemp, but these calls didn't get the memo. It's not really a problem to pass rel->rd_istemp rather than just plain false, because smgrextend() now automatically skips the fsync for temprels anyway, but this seems cleaner and saves some minute number of cycles.
* Reset the per-output-tuple exprcontext each time through the main loop inTom Lane2010-08-18
| | | | | | | | | | ExecModifyTable(). This avoids memory leakage when trigger functions leave junk behind in that context (as they more or less must). Problem and solution identified by Dean Rasheed. I'm a bit concerned about the longevity of this solution --- once a plan can have multiple ModifyTable nodes, we are very possibly going to have to do something different. But it should hold up for 9.0.
* Rename utf2ucs() to utf8_to_unicode(), and export it so it can be usedTom Lane2010-08-18
| | | | | | | | | | | | elsewhere. Similarly rename the version in mbprint.c, not because this affects anything but just to keep the two copies in exact sync. There was some discussion of having only one copy in src/port/ instead, but this function is so small and unlikely to change that that seems like overkill. Slightly editorialized version of a patch by Joseph Adams. (The bug-fix aspect of his patch was applied separately, and back-patched.)
* Fix failure of "ALTER TABLE t ADD COLUMN c serial" when done by non-owner.Tom Lane2010-08-18
| | | | | | | | | | | | | | | | | The implicitly created sequence was created as owned by the current user, who could be different from the table owner, eg if current user is a superuser or some member of the table's owning role. This caused sanity checks in the SEQUENCE OWNED BY code to spit up. Although possibly we don't need those sanity checks, the safest fix seems to be to make sure the implicit sequence is assigned the same owner role as the table has. (We still do all permissions checks as the current user, however.) Per report from Josh Berkus. Back-patch to 9.0. The bug goes back to the invention of SEQUENCE OWNED BY in 8.2, but the fix requires an API change for DefineRelation(), which seems to have potential for breaking third-party code if done in a minor release. Given the lack of prior complaints, it's probably not worth fixing in the stable branches.
* Add missing handling of PlannedStmt.transientPlan in copyfuncs/outfuncs.Tom Lane2010-08-18
| | | | | | | | | | | | _outPlannedStmt is only debug support, so the omission there was not very serious, but the omission in _copyPlannedStmt is a real bug. The consequence would be that a copied plan tree would never be marked as a transient plan, so that we would forget we ought to replan it after some not-yet-ready index becomes ready for use. This might explain some past complaints about indexes created with CREATE INDEX CONCURRENTLY not being used right away. Problem spotted by Yeb Havinga. Back-patch to 8.3, where the field was added.
* Coerce 'unknown' type parameters to the right type in the fixed-paramsHeikki Linnakangas2010-08-18
| | | | | | | | | | | | | | parse_analyze() function. That case occurs e.g with PL/pgSQL EXECUTE ... USING 'stringconstant'. The coercion with a CoerceViaIO node. The result is similar to the coercion via input function performed for unknown constants in coerce_type(), except that this happens at runtime. Backpatch to 9.0. The issue is present in 8.4 as well, but the coerce param hook infrastructure this patch relies on was introduced in 9.0. Given the lack of user reports and harmlessness of the bug, it's not worth attempting a different fix just for 8.4.
* Applied Zoltan's patch to fix a few memleaks in ecpg's pgtypeslib.Michael Meskes2010-08-17
|
* Revert: looks like Binary Large OBject[sic] wasn't a misspellingPeter Eisentraut2010-08-17
|
* Spell and markup checkingPeter Eisentraut2010-08-17
|
* Arrange to fsync the contents of lockfiles (both postmaster.pid and theTom Lane2010-08-16
| | | | | | | | | | socket lockfile) when writing them. The lack of an fsync here may well explain two different reports we've seen of corrupted lockfile contents, which doesn't particularly bother the running server but can prevent a new server from starting if the old one crashes. Per suggestion from Alvaro. Back-patch to all supported versions.
* Make LockDatabaseObject() AcceptInvalidationMessages().Robert Haas2010-08-16
| | | | | | | This is appropriate for the same reasons we already do it in LockSharedObject(): things might have changed while we were waiting for the lock. There doesn't seem to be a live bug here at the moment, but that's mostly because it isn't currently used for very much.
* Fix psql's copy of utf2ucs() to match the backend's copy exactly;Tom Lane2010-08-16
| | | | | | | | | | in particular, propagate a fix in the test to see whether a UTF8 character has length 4 bytes. This is likely of little real-world consequence because 5-or-more-byte UTF8 sequences are not supported by Postgres nor seen anywhere in the wild, but still we may as well get it right. Problem found by Joseph Adams. Bug is aboriginal, so back-patch all the way.
* Assorted improvements to backup/restore documentation, per Thom Brown.Tom Lane2010-08-15
|
* Clarify bit numbering in get_bit/set_bit etc. Per gripe fromTom Lane2010-08-15
| | | | Boszormenyi Zoltan.
* Improve pgarchivecleanup documentation, per comments from Satoshi Nagayasu.Tom Lane2010-08-15
|
* Avoid unnecessary use of TPS acronym.Tom Lane2010-08-15
| | | | Robert Haas, per gripe from Erik Rijkers
* Add link and additional index reference to pgcrypto.Robert Haas2010-08-15
| | | | Kevin Grittner, with markup adjustments.
* Fix planner to make a reasonable assumption about the amount of memory spaceTom Lane2010-08-14
| | | | | | | | | | used by array_agg(), string_agg(), and similar aggregate functions that use "internal" as their transition datatype. The previous coding thought this took *no* extra space, since "internal" is pass-by-value; but actually these aggregates typically consume a great deal of space. Per bug #5608 from Itagaki Takahiro, and fix suggestion from Hitoshi Harada. Back-patch to 8.4, where array_agg was introduced.
* Fix \ef and \sf to not fail on functions with nonnull probin.Tom Lane2010-08-14
| | | | Update comment about them in pg_get_functiondef.
* Add a \sf (show function) command to psql, for those times when you need toTom Lane2010-08-14
| | | | | | look at a function but don't wish to fire up an editor. Pavel Stehule, reviewed by Jan Urbanski
* MyBackendId now needs to be PGDLLIMPORT, so that contrib modules canTom Lane2010-08-14
| | | | access it on Windows. Per buildfarm.
* Further dtrace adjustments for the backend-IDs-in-relpath patch.Robert Haas2010-08-14
| | | | | Update the documentation, and back out a few ill-considered changes whose folly I failed to realize for failure to read the documentation.
* Fix assorted dtrace breakage caused by patch to include backend IDsRobert Haas2010-08-13
| | | | | | in temp relpaths. Per buildfarm.
* Clean up failure to use ClosePager() where appropriate in help.c.Tom Lane2010-08-13
| | | | Also prevent possible repeat opening of pager in helpSQL().
* Include the backend ID in the relpath of temporary relations.Robert Haas2010-08-13
| | | | | | | | | | | | | | | | | This allows us to reliably remove all leftover temporary relation files on cluster startup without reference to system catalogs or WAL; therefore, we no longer include temporary relations in XLOG_XACT_COMMIT and XLOG_XACT_ABORT WAL records. Since these changes require including a backend ID in each SharedInvalSmgrMsg, the size of the SharedInvalidationMessage.id field has been reduced from two bytes to one, and the maximum number of connections has been reduced from INT_MAX / 4 to 2^23-1. It would be possible to remove these restrictions by increasing the size of SharedInvalidationMessage by 4 bytes, but right now that doesn't seem like a good trade-off. Review by Jaime Casanova and Tom Lane.
* Minor #include cleanup.Tom Lane2010-08-13
| | | | | | I just noticed that libpq's pqsignal.h was violating our general inclusion style guidelines by explicitly including postgres_fe.h. Remove that, and put it in pqsignal.c where it belongs.
* Add xml_is_well_formed, xml_is_well_formed_document, xml_is_well_formed_contentTom Lane2010-08-13
| | | | | | | | functions to the core XML code. Per discussion, the former depends on XMLOPTION while the others do not. These supersede a version previously offered by contrib/xml2. Mike Fowler, reviewed by Pavel Stehule
* Fix Assert failure in PushOverrideSearchPath when trying to restore a searchTom Lane2010-08-13
| | | | | | | | | | | | | path that specifies useTemp, but there is no active temp schema in the current session. (This can happen if the path was saved during a transaction that created a temp schema and was later rolled back.) For existing callers it's sufficient to ignore the useTemp flag in this case, though we might later want to offer an option to create a fresh temp schema. So far as I can tell this is just an Assert failure: in a non-assert build, the code would push a zero onto the new search path, which is useless but not very harmful. Per bug report from Heikki. Back-patch to 8.3; prior versions don't have this code.
* Make RecordTransactionCommit() respect wal_level.Robert Haas2010-08-13
| | | | | | | | | Since the only purpose of WAL-loggin SharedInvalidationMessages is to support Hot Standby operation, they needn't be included when wal_level < hot_standby. Back-patch to 9.0. Review by Heikki Linnakanagas and Fujii Masao.
* Fix pg_restore to complain if any arguments remain after parsing the switchesTom Lane2010-08-13
| | | | | | | | | | and input file name, per bug #5617 from Leo Shklovskii. Rearrange the corresponding code in pg_dump and pg_dumpall so that all three programs handle this in a consistent, straightforward fashion. Back-patch to 9.0, but no further. Although this is certainly a bug, it's possible that people have scripts that will be broken by the added error check, so it seems better not to change the behavior in stable branches.
* Reorder docs on lexical structure slightly for clarity.Robert Haas2010-08-13
| | | | Thom Brown
* Correct sundry errors in Hot Standby-related comments.Robert Haas2010-08-12
| | | | Fujii Masao
* Get rid of a bunch of dubious error handling code in pgbench by just erroringTom Lane2010-08-12
| | | | | | out immediately on any out-of-memory condition. It's rather pointless to imagine that pgbench will be able to continue usefully after a malloc failure, and in any case there were a number of unchecked mallocs.
* Add the ability to compute per-statement latencies (ie, average executionTom Lane2010-08-12
| | | | | | times) to pgbench. Florian Pflug, reviewed by Greg Smith
* Back out syntax case changes --- seems they were intentional.Bruce Momjian2010-08-12
|
* Extend psql's \e and \ef commands so that a line number can be specified,Tom Lane2010-08-12
| | | | | | | | | | | | | | | | | | and the editor's cursor will be initially placed on that line. In \e the lines are counted with respect to the query buffer, while in \ef they are counted with line 1 = first line of function body. These choices are useful for positioning the cursor on the line of a previously-reported error. To avoid assumptions about what switch the user's editor takes for this purpose, invent a new psql variable EDITOR_LINENUMBER_SWITCH with (at present) no default value. One incompatibility from previous behavior is that "\e 1234" will now take "1234" as a line number not a file name. There are at least two ways to select a numerically-named file if you really want to. Pavel Stehule, reviewed by Jan Urbanski, with further editing by Robert Haas and Tom Lane
* Properly lowercase identifiers, uppercase keywords, in doc examplesBruce Momjian2010-08-11
|
* The sanity check added to array_recv() wa a bit too tight; we mustHeikki Linnakangas2010-08-11
| | | | | | | continue to accept an empty array with dimension information. array_send() can output such arrays. Per report from Vladimir Shakhov.
* Fix one more incorrect errno definition in the ECPG manual.Robert Haas2010-08-11
| | | | Again, back-patch all the way to 7.4.
* Fix incorrect errno definitions in ECPG manual.Robert Haas2010-08-11
| | | | | | | ecpgerrno.h hasn't materially changed since PostgreSQL 7.4, so this has been wrong for a very long time. Back-patch all the way. Satoshi Nagayasu
* Remove the arbitrary (and undocumented) limit on the number of parameter=valueTom Lane2010-08-10
| | | | | | | | | pairs that can be handled by xslt_process(). There is much else to do here, but this patch seems useful in its own right for as long as this code survives. Pavel Stehule, reviewed by Mike Fowler