aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
* Fix an omission in the outfuncs.c support for Agg nodes: the grpColIdxNeil Conway2008-01-09
| | | | and grpOperators fields were not emitted by _outAgg().
* lmgr.c:DescribeLockTag was never taught about virtual xids, per Greg Stark.Tom Lane2008-01-08
| | | | | Also a couple of minor tweaks to try to future-proof the code a bit better against future locktag additions.
* Remove unnecessary comma in enum definition ... some C compilers don'tTom Lane2008-01-08
| | | | like that. Per report from J6M.
* Fix a minor bug in outfuncs support for SetOp: dupOperators is an arrayNeil Conway2008-01-07
| | | | of Oid, and therefore should use the "%u" escape sequence rather than "%d".
* A long time ago, Peter pointed out that ruleutils.c didn't dump simpleTom Lane2008-01-06
| | | | | | | | | | | | | | | | constant ORDER/GROUP BY entries properly: http://archives.postgresql.org/pgsql-hackers/2001-04/msg00457.php The original solution to that was in fact no good, as demonstrated by today's report from Martin Pitt: http://archives.postgresql.org/pgsql-bugs/2008-01/msg00027.php We can't use the column-number-reference format for a constant that is a resjunk targetlist entry, a case that was unfortunately not thought of in the original discussion. What we can do instead (which did not work at the time, but does work in 7.3 and up) is to emit the constant with explicit ::typename decoration, even if it otherwise wouldn't need it. This is sufficient to keep the parser from thinking it's a column number reference, and indeed is probably what the user must have done to get such a thing into the querytree in the first place.
* Make standard maintenance operations (including VACUUM, ANALYZE, REINDEX,Tom Lane2008-01-03
| | | | | | | | | | | | | | | | | | | and CLUSTER) execute as the table owner rather than the calling user, using the same privilege-switching mechanism already used for SECURITY DEFINER functions. The purpose of this change is to ensure that user-defined functions used in index definitions cannot acquire the privileges of a superuser account that is performing routine maintenance. While a function used in an index is supposed to be IMMUTABLE and thus not able to do anything very interesting, there are several easy ways around that restriction; and even if we could plug them all, there would remain a risk of reading sensitive information and broadcasting it through a covert channel such as CPU usage. To prevent bypassing this security measure, execution of SET SESSION AUTHORIZATION and SET ROLE is now forbidden within a SECURITY DEFINER context. Thanks to Itagaki Takahiro for reporting this vulnerability. Security: CVE-2007-6600
* Fix assorted security-grade bugs in the regex engine. All of these problemsTom Lane2008-01-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | are shared with Tcl, since it's their code to begin with, and the patches have been copied from Tcl 8.5.0. Problems: CVE-2007-4769: Inadequate check on the range of backref numbers allows crash due to out-of-bounds read. CVE-2007-4772: Infinite loop in regex optimizer for pattern '($|^)*'. CVE-2007-6067: Very slow optimizer cleanup for regex with a large NFA representation, as well as crash if we encounter an out-of-memory condition during NFA construction. Part of the response to CVE-2007-6067 is to put a limit on the number of states in the NFA representation of a regex. This seems needed even though the within-the-code problems have been corrected, since otherwise the code could try to use very large amounts of memory for a suitably-crafted regex, leading to potential DOS by driving the system into swap, activating a kernel OOM killer, etc. Although there are certainly plenty of ways to drive the system into effective DOS with poorly-written SQL queries, these problems seem worth treating as security issues because many applications might accept regex search patterns from untrustworthy sources. Thanks to Will Drewry of Google for reporting these problems. Patches by Will Drewry and Tom Lane. Security: CVE-2007-4769, CVE-2007-4772, CVE-2007-6067
* Forbid ALTER TABLE and CLUSTER when there are pending AFTER-trigger eventsTom Lane2008-01-02
| | | | | | | | | | | | | | in the current backend for the target table. These operations move tuples around and would thus invalidate the TIDs stored in the trigger event records. (We need not worry about events in other backends, since acquiring exclusive lock should be enough to ensure there aren't any.) It might be sufficient to forbid only the table-rewriting variants of ALTER TABLE, but in the absence of any compelling use-case, let's just be safe and simple. Per follow-on investigation of bug #3847, though this is not actually the same problem reported therein. Possibly this should be back-patched, but since the case has never been reported from the field, I didn't bother.
* Correct two more copyrights found by updated script.Bruce Momjian2008-01-02
|
* Fix some missed copyright updates.Tom Lane2008-01-01
|
* Update copyrights in source tree to 2008.Bruce Momjian2008-01-01
|
* Improve a number of elog messages for not-supposed-to-happen cases in btrees,Tom Lane2007-12-31
| | | | | | | | | since these seem to happen after all in corrupted indexes. Make sure we supply the index name in all cases, and provide relevant block numbers where available. Also consistently identify the index name as such. Back-patch to 8.2, in hopes that this might help Mason Hale figure out his problem.
* Add sanity check to ensure delimiter and quote are different in CSV modeAndrew Dunstan2007-12-30
|
* Improve consistency of error reporting in GUC assign_hook routines. SomeTom Lane2007-12-28
| | | | | | | | | | | | | | were reporting ERROR for interactive assignments and LOG for other cases, some were saying nothing for non-interactive cases, and a few did yet other things. Make them use a new function GUC_complaint_elevel() to establish a reasonably uniform policy about how to report. There are still a few edge cases such as assign_search_path(), but it's much better than before. Per gripe from Devrim Gunduz and subsequent discussion. As noted by Alvaro, it'd be better to fold these custom messages into the standard "invalid parameter value" complaint from guc.c, perhaps as the DETAIL field. However that will require more redesign than seems prudent for 8.3. This is a relatively safe, low-impact change that we can afford to risk now.
* Disallow digits and lower-case ASCII letters as the delimiter in non-CSVTom Lane2007-12-27
| | | | | | | | | | | | COPY. We need a restriction here because when the delimiter occurs as a data character, it is emitted with a backslash, and that will only work as desired if CopyReadAttributesText() will interpret the backslash sequence as representing the second character literally. This is currently untrue for 'b', 'f', 'n', 'r', 't', 'v', 'x', and octal digits. For future-proofing and simplicity of explanation, it seems best to disallow a-z and 0-9. We must also disallow dot, since "\." by itself would look like copy EOF. Note: "\N" is by default the null print string, so N would also cause a problem, but that is already tested for.
* Fix ill-advised usage of x?y:z expressions in errmsg() and errhint() calls.Tom Lane2007-12-27
| | | | | This prevented gettext from recognizing the strings that need to be translated.
* Swap the order of testing for control characters and for column delimiter inTom Lane2007-12-27
| | | | | | | | CopyAttributeOutText(), so that control characters are converted to the C-style escape sequences even if they happen to be equal to the column delimiter (as is true by default for tab, for example). Oversight in my previous patch to restore pre-8.3 behavior of COPY OUT escaping. Per report from Tomas Szepe.
* Wording improvementsPeter Eisentraut2007-12-27
|
* When given a nonzero column number, pg_get_indexdef() is only supposed toTom Lane2007-12-20
| | | | | | | | | print the index key variable or expression for that column. It was mistakenly printing ASC/DESC/NULLS FIRST/NULLS LAST decoration too --- and not only for the target column, but all columns. Someday we should have an option to extract that info (and the opclass decoration as well) for a single index column ... but today is not that day. Per bug #3829 and subsequent discussion.
* Fix thinko in encoding check for chr()Andrew Dunstan2007-12-18
|
* Make archiver process report its progress in PS display. PerTom Lane2007-12-18
| | | | proposal by Simon Riggs, though not exactly his patch.
* Make path_recv() and poly_recv() reject paths/polygons containing no points.Tom Lane2007-12-18
| | | | | | | | The zero-point case is sensible so far as the data structure is concerned, so maybe we ought to allow it sometime; but right now the textual input routines for these types don't allow it, and it seems that not all the functions for the types are prepared to cope. Report and patch by Merlin Moncure.
* Clarify log messagesPeter Eisentraut2007-12-13
|
* Clean up unportable attempt to use #if inside a macro call, alsoTom Lane2007-12-12
| | | | faulty code in third arm of #if. Per buildfarm reports.
* Provide a more accurate, detailed log message when the archive command fails.Peter Eisentraut2007-12-12
|
* Make CSV column ordering a bit more logical.Alvaro Herrera2007-12-11
|
* Extend the format of CSV logs to include the additional information suppliedAlvaro Herrera2007-12-11
| | | | | | | with the logged event. CSV logs are now a first-class citizen along plain text logs in that they carry much of the same information. Per complaint from depesz on bug #3799.
* Fix mergejoin cost estimation so that we consider the statistical ranges ofTom Lane2007-12-08
| | | | | | | | | | the two join variables at both ends: not only trailing rows that need not be scanned because there cannot be a match on the other side, but initial rows that will be scanned without possibly having a match. This allows a more realistic estimate of startup cost to be made, per recent pgsql-performance discussion. In passing, fix a couple of bugs that had crept into mergejoinscansel: it was not quite up to speed for the task of estimating descending-order scans, which is a new requirement in 8.3.
* Realign the running text in this file to 79 characters wide. Some otherPeter Eisentraut2007-12-07
| | | | copy-editing.
* Change wording of logged message when cancelling an autovacuum task, usingAlvaro Herrera2007-12-06
| | | | | american speling (unlike this commit message). Per complaint from Mike C. on bug #3790 and subsequent discussion.
* Fix build_minmax_path() to cope if an IS NULL clause turns up in theTom Lane2007-12-03
| | | | | | indexable-clauses list for a btree index. Formerly it just Asserted that all such clauses were opclauses, but that's no longer true in 8.3. Per bug #3796 from Matthias Schoeneich.
* Revert COPY OUT to follow the pre-8.3 handling of ASCII control characters,Tom Lane2007-12-03
| | | | | | | | | | namely that \r, \n, \t, \b, \f, \v are dumped as those two-character representations rather than a backslash and the literal control character. I had made it do the other to save some code, but this was ill-advised, because dump files in which these characters appear literally are prone to newline mangling. Fortunately, doing it the old way should only cost a few more lines of code, and not slow down the copy loop materially. Per bug #3795 from Lou Duchez.
* Code review for LIKE ... INCLUDING INDEXES patch. Fix failure to propagateTom Lane2007-12-01
| | | | | | | | | | constraint status of copied indexes (bug #3774), as well as various other small bugs such as failure to pstrdup when needed. Allow INCLUDING INDEXES indexes to be merged with identical declared indexes (perhaps not real useful, but the code is there and having it not apply to LIKE indexes seems pretty unorthogonal). Avoid useless work in generateClonedIndexStmt(). Undo some poorly chosen API changes, and put a couple of routines in modules that seem to be better places for them.
* Avoid incrementing the CommandCounter when CommandCounterIncrement is calledTom Lane2007-11-30
| | | | | | | | | | | | | | | | | | | | but no database changes have been made since the last CommandCounterIncrement. This should result in a significant improvement in the number of "commands" that can typically be performed within a transaction before hitting the 2^32 CommandId size limit. In particular this buys back (and more) the possible adverse consequences of my previous patch to fix plan caching behavior. The implementation requires tracking whether the current CommandCounter value has been "used" to mark any tuples. CommandCounter values stored into snapshots are presumed not to be used for this purpose. This requires some small executor changes, since the executor used to conflate the curcid of the snapshot it was using with the command ID to mark output tuples with. Separating these concepts allows some small simplifications in executor APIs. Something for the TODO list: look into having CommandCounterIncrement not do AcceptInvalidationMessages. It seems fairly bogus to be doing it there, but exactly where to do it instead isn't clear, and I'm disinclined to mess with asynchronous behavior during late beta.
* Repair bug that allowed RevalidateCachedPlan to attempt to rebuild a cachedTom Lane2007-11-30
| | | | | | | | | | plan before the effects of DDL executed in an immediately prior SPI operation had been absorbed. Per report from Chris Wood. This patch has an unpleasant side effect of causing the number of CommandCounterIncrement()s done by a typical plpgsql function to approximately double. Amelioration of the consequences of that will be undertaken in a separate patch.
* Translation updatesPeter Eisentraut2007-11-29
|
* Make a cleanup pass over error reports in tsearch code. Use ereportTom Lane2007-11-28
| | | | | for user-facing errors, fix some poor choices of errcode, adhere to message style guide.
* Improve test coverage of CLOBBER_CACHE_ALWAYS by having it also forceTom Lane2007-11-28
| | | | | | | | reloading of operator class information on each use of LookupOpclassInfo. Had this been in place a year ago, it would have helped me find a bug in the then-new 'operator family' code. Now that we have a build farm member testing CLOBBER_CACHE_ALWAYS on a regular basis, it seems worth expending a little bit of effort here.
* Adjust the names of a couple of tsearch index support functions that hadTom Lane2007-11-28
| | | | | | | inappropriately generic-sounding names. This is more or less free since we already forced initdb for the next beta, and it may prevent confusion or name conflicts (particularly at the C-global-symbol level) down the road. Per my proposal yesterday.
* Install a lookaside cache to speed up repeated lookups of the same operatorTom Lane2007-11-28
| | | | | | | | | by short-circuiting schema search path and ambiguous-operator resolution computations. Remarkably, this buys as much as 45% speedup of repetitive simple queries that involve operators that are not an exact match to the input datatypes. It should be marginally faster even for exact-match cases, though I've not had success in proving an improvement in benchmark tests. Per report from Guillame Smet and subsequent discussion.
* Proper capitalization of IspellPeter Eisentraut2007-11-28
|
* Fix XML Schema structure for char types without length (bug #3782)Peter Eisentraut2007-11-28
|
* Improve terminologyPeter Eisentraut2007-11-28
|
* Fix typoPeter Eisentraut2007-11-28
|
* Change a stop word on the right-hand-side in the thesaurus file to be anBruce Momjian2007-11-28
| | | | ERROR, not NOTICE.
* Suppress compiler warning.Tom Lane2007-11-27
|
* Make casts from xml to text independent of the XML option setting, thusPeter Eisentraut2007-11-27
| | | | | immutable and indexable. Also fix the volatility settings of some other XML-related functions.
* correct capitalizationPeter Eisentraut2007-11-27
|
* Fix select_common_type() so that it can select a domain type, if all inputsTom Lane2007-11-26
| | | | | | | | | | | | | | | | to a UNION, CASE, or related construct are of the same domain type. The main part of this routine smashes domains to their base types, which seems necessary because the logic involves TypeCategory() and IsPreferredType(), neither of which work usefully on domains. However, we can add a first pass that just detects whether all the inputs are exactly the same type, and if so accept that without question (so long as it's not UNKNOWN). Per recent gripe from Dean Rasheed. In passing, remove some tests for InvalidOid, which have clearly been dead code for quite some time now, because getBaseType() would fail on that input. Also, clarify the manual's not-very-precise description of the existing algorithm's behavior.
* Allow for X as well as x to be the prefix for hexadecimal character ref ↵Andrew Dunstan2007-11-25
| | | | | | entity numbers, as in HTML.