aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
* Improve wording for privilege description on certain failure messages; theAlvaro Herrera2010-08-26
| | | | | original misleadingly suggests that only access is meant, causing confusion. Per recent trouble report by Robert McGehee on pgsql-admin.
* Remove duplicate translatable phraseAlvaro Herrera2010-08-26
|
* Fix ExecMakeTableFunctionResult to verify that all rows returned by a SRFTom Lane2010-08-26
| | | | | | | | | | | returning "record" actually do have the same rowtype. This is needed because the parser can't realistically enforce that they will all have the same typmod, as seen in a recent example from David Wheeler. Back-patch to 8.0, which is as far back as we have the notion of RECORD subtypes being distinguished by typmod. Wheeler's example depends on 8.4-and-up features, but I suspect there may be ways to provoke similar failures before 8.4.
* Improve hint message for ENOMEM failure from shmget().Tom Lane2010-08-25
| | | | | | | | | | | | It turns out that some platforms return ENOMEM for a request that violates SHMALL, whereas we were assuming that ENOSPC would always be used for that. Apparently the latter is a Linuxism while ENOMEM is the BSD tradition. Extend the ENOMEM hint to suggest that raising SHMALL might be needed. Per gripe from A.M. Backpatch to 9.0, but not further, because this doesn't seem important enough to warrant creating extra translation work in the stable branches. (If it were, we'd have figured this out years ago.)
* Make EXPLAIN show the function call expression of a FunctionScan plan node,Tom Lane2010-08-24
| | | | but only in VERBOSE mode. Per discussion.
* Add string functions: concat(), concat_ws(), left(), right(), and reverse().Itagaki Takahiro2010-08-24
| | | | Pavel Stehule, reviewed by me.
* Marginal code cleanup for streaming replication.Tom Lane2010-08-23
| | | | | | There is no reason that proc.c should have to get involved in this dirty hack for letting the postmaster know which children are walsenders. Revert that file to the way it was, and confine the kluge to pmsignal.c and postmaster.c.
* Use a non-locale-dependent definition of isspace() in array_in/array_out.Tom Lane2010-08-21
| | | | | | | | | | | | | | | | | | | array_in discards unquoted leading and trailing whitespace in array values, while array_out is careful to quote array elements that contain whitespace. This is problematic when the definition of "whitespace" varies between locales: array_in could drop characters that were meant to be part of the value. To avoid that, lock down "whitespace" to mean only the traditional six ASCII space characters. This change also works around a bug in OS X and some older BSD systems, in which isspace() could return true for character fragments in UTF8 locales. (There may be other places in PG where that bug could cause problems, but this is the only one complained of so far; see recent report from Steven Schlansker.) Back-patch to 9.0, but not further. Given the lack of previous reports of trouble, changing this behavior in stable branches seems to offer more risk of breaking applications than reward of avoiding problems.
* Add vacuum and analyze counters to pg_stat_*_tables views.Magnus Hagander2010-08-21
|
* Add missing processing of OptTemp in CREATE IF NOT EXISTS variantTom Lane2010-08-20
| | | | for typed tables. Noted by Robert Haas.
* 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.
* 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.
* 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 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.
* 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.
* 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.
* 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.
* Correct sundry errors in Hot Standby-related comments.Robert Haas2010-08-12
| | | | Fujii Masao
* 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
* 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.
* Add three-parameter forms of array_to_string and string_to_array, to allowTom Lane2010-08-10
| | | | | | | | | | | | | | | | better handling of NULL elements within the arrays. The third parameter is a string that should be used to represent a NULL element, or should be translated into a NULL element, respectively. If the third parameter is NULL it behaves the same as the two-parameter form. There are two incompatible changes in the behavior of the two-parameter form of string_to_array. First, it will return an empty (zero-element) array rather than NULL when the input string is of zero length. Second, if the field separator is NULL, the function splits the string into individual characters, rather than returning NULL as before. These two changes make this form fully compatible with the behavior of the new three-parameter form. Pavel Stehule, reviewed by Brendan Jurd
* Add an xpath_exists() function. This is equivalent to XMLEXISTS except thatTom Lane2010-08-08
| | | | | | it offers support for namespace mapping. Mike Fowler, reviewed by David Fetter
* Add stats functions and views to provide access to a transaction's ownTom Lane2010-08-08
| | | | | | | | statistics counts. These numbers are being accumulated but haven't yet been transmitted to the collector (and won't be, until the transaction ends). For some purposes, though, it's handy to be able to look at them. Joel Jacobson, reviewed by Itagaki Takahiro
* Recognize functional dependency on primary keys. This allows a table'sTom Lane2010-08-07
| | | | | | | | | | | | | other columns to be referenced without listing them in GROUP BY, so long as the primary key column(s) are listed in GROUP BY. Eventually we should also allow functional dependency on a UNIQUE constraint when the columns are marked NOT NULL, but that has to wait until NOT NULL constraints are represented in pg_constraint, because we need to have pg_constraint OIDs for all the conditions needed to ensure functional dependency. Peter Eisentraut, reviewed by Alex Hunsaker and Tom Lane
* Add a comment about the initial default value of max_stack_depth.Tom Lane2010-08-06
|
* Fix incorrect pathname in comment.Robert Haas2010-08-06
|
* Add a very specific hint for the case that we're unable to locate a functionTom Lane2010-08-05
| | | | | | | matching a call like f(x, ORDER BY y,z). It could be that what the user really wants is f(x,z ORDER BY y). We now have pretty conclusive evidence that many people won't understand this problem without concrete guidance, so give it to them. Per further discussion of the string_agg() problem.
* Remove the single-argument form of string_agg(). It added nothing much inTom Lane2010-08-05
| | | | | | | | functionality, while creating an ambiguity in usage with ORDER BY that at least two people have already gotten seriously confused by. Also, add an opr_sanity test to check that we don't in future violate the newly minted policy of not having built-in aggregates with the same name and different numbers of parameters. Per discussion of a complaint from Thom Brown.
* Standardize get_whatever_oid functions for other object types.Robert Haas2010-08-05
| | | | | | | | | | | | | | | - Rename TSParserGetPrsid to get_ts_parser_oid. - Rename TSDictionaryGetDictid to get_ts_dict_oid. - Rename TSTemplateGetTmplid to get_ts_template_oid. - Rename TSConfigGetCfgid to get_ts_config_oid. - Rename FindConversionByName to get_conversion_oid. - Rename GetConstraintName to get_constraint_oid. - Add new functions get_opclass_oid, get_opfamily_oid, get_rewrite_oid, get_rewrite_oid_without_relid, get_trigger_oid, and get_cast_oid. The name of each function matches the corresponding catalog. Thanks to KaiGai Kohei for the review.
* Standardize get_whatever_oid functions for object types withRobert Haas2010-08-05
| | | | | | | | | | | | | unqualified names. - Add a missing_ok parameter to get_tablespace_oid. - Avoid duplicating get_tablespace_od guts in objectNamesToOids. - Add a missing_ok parameter to get_database_oid. - Replace get_roleid and get_role_checked with get_role_oid. - Add get_namespace_oid, get_language_oid, get_am_oid. - Refactor existing code to use new interfaces. Thanks to KaiGai Kohei for the review.
* Add xmlexists functionPeter Eisentraut2010-08-05
| | | | by Mike Fowler, reviewed by Peter Eisentraut
* Fix numeric_maximum_size() calculation.Robert Haas2010-08-04
| | | | | | | | The old computation can sometimes underestimate the necessary space by 2 bytes; however we're not back-patching this, because this result isn't used for anything critical. Per discussion with Tom Lane, make the typmod test in this function match the ones in numeric() and apply_typmod() exactly.
* Allow numeric to use a more compact, 2-byte header in many cases.Robert Haas2010-08-03
| | | | Review by Brendan Jurd and Tom Lane.
* Replace the naive HYPOT() macro with a standards-conformant hypotenuseTom Lane2010-08-03
| | | | | | | function. This avoids unnecessary overflows and probably gives a more accurate result as well. Paul Matthews, reviewed by Andrew Geery
* Code review for --quote-all-identifiers patch: add missing --help documentationTom Lane2010-08-03
| | | | | for new pg_dump/pg_dumpall parameters, make a couple of trivial stylistic adjustments to make the code follow usual project style.