aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
...
* Improve lock level choices in pg_shdepend.c. Noticed by Tom Lane.Alvaro Herrera2008-01-23
|
* Provide a clearer error message if the pg_control version number looksPeter Eisentraut2008-01-21
| | | | wrong because of mismatched byte ordering.
* Fix RS_isRegis() to agree exactly with RS_compile()'s idea of what's a validTom Lane2008-01-21
| | | | | | | regis. Correct the latter's oversight that a bracket-expression needs to be terminated. Reduce the ereports to elogs, since they are now not expected to ever be hit (thus addressing Alvaro's original complaint). In passing, const-ify the string argument to RS_compile.
* Split error message.Alvaro Herrera2008-01-20
|
* Fix subselect.c to avoid assuming that a SubLink's testexpr references eachTom Lane2008-01-17
| | | | | | | | | | subquery output column exactly once left-to-right. Although this is the case in the original parser output, it might not be so after rewriting and constant-folding, as illustrated by bug #3882 from Jan Mate. Instead scan the subquery's target list to obtain needed per-column information; this is duplicative of what the parser did, but only a couple dozen lines need be copied, and we can clean up a couple of notational uglinesses. Bug was introduced in 8.2 as part of revision of SubLink representation.
* Fix ALTER INDEX RENAME so that if the index belongs to a unique or primary keyTom Lane2008-01-17
| | | | | | | | constraint, the constraint is renamed as well. This avoids inconsistent situations that could confuse pg_dump (not to mention humans). We might at some point provide ALTER TABLE RENAME CONSTRAINT as a more general solution, but there seems no reason not to allow doing it this way too. Per bug #3854 and related discussions.
* Fix core dump with buffer-overrun by too long infinitive. Add checking of usingTeodor Sigaev2008-01-16
| | | | | fixed length arrays to prevent array's overrun. Per report by Hannes Dorbath <light@theendofthetunnel.de> and comments by Tom.
* Prevent CLUSTER from decreasing a relation's relfrozenxid. BugTom Lane2008-01-15
| | | | introduced in rewrite to make CLUSTER MVCC-safe.
* Revise memory management for libxml calls. Instead of keeping libxml's dataTom Lane2008-01-15
| | | | | | | | | | | in whichever context happens to be current during a call of an xml.c function, use a dedicated context that will not go away until we explicitly delete it (which we do at transaction end or subtransaction abort). This makes recovery after an error much simpler --- we don't have to individually delete the data structures created by libxml. Also, we need to initialize and cleanup libxml only once per transaction (if there's no error) instead of once per function call, so it should be a bit faster. We'll need to keep an eye out for intra-transaction memory leaks, though. Alvaro and Tom.
* Tweak new error message to conform to style guidelines.Tom Lane2008-01-15
|
* Add check of headline method presence. Per report by Yoshiyuki Asaba ↵Teodor Sigaev2008-01-15
| | | | <y-asaba@sraoss.co.jp>
* Avoid cluttering the postmaster log with bogus complaintsTom Lane2008-01-14
| | | | during transaction abort, per my note from a couple days ago.
* Mark autovacuum entries in pg_stat_activity so that they can be easilyAlvaro Herrera2008-01-14
| | | | distinguished from user-invoked commands. Per suggestion from Tom Lane.
* Fix CREATE INDEX CONCURRENTLY so that it won't use synchronized scan forTom Lane2008-01-14
| | | | | | | | its second pass over the table. It has to start at block zero, else the "merge join" logic for detecting which TIDs are already in the index doesn't work. Hence, extend heapam.c's API so that callers can enable or disable syncscan. (I put in an option to disable buffer access strategy, too, just in case somebody needs it.) Per report from Hannes Dorbath.
* It turns out the LIBXML_TEST_VERSION macro calls xmlInitParser().Tom Lane2008-01-12
| | | | | | | Therefore we must xmlCleanupParser(), or we risk leaving behind dangling pointers to whatever memory context is current when xml_init() is called. This seems to fix bug #3860, though we might still want the more invasive solution being worked on by Alvaro.
* Fix two places in xml.c that neglected to check the return values ofNeil Conway2008-01-12
| | | | SPI_prepare() and SPI_cursor_open(), to silence a Coverity warning.
* Minor perf tweak for _SPI_strdup(): if we're going to call strlen()Neil Conway2008-01-12
| | | | anyway, it is faster to memcpy() than to strcpy().
* Fix logical errors in constraint exclusion: we cannot assume that a CHECKTom Lane2008-01-12
| | | | | | | | | | | | | | | constraint yields TRUE for every row of its table, only that it does not yield FALSE (a NULL result isn't disallowed). This breaks a couple of implications that would be true in two-valued logic. I had put in one such mistake in an 8.2.5 patch: foo IS NULL doesn't refute a strict operator on foo. But there was another in the original 8.2 release: NOT foo doesn't refute an expression whose truth would imply the truth of foo. Per report from Rajesh Kumar Mallah. To preserve the ability to do constraint exclusion with one partition holding NULL values, extend relation_excluded_by_constraints() to check for attnotnull flags, and add col IS NOT NULL expressions to the set of constraints we hope to refute.
* The original implementation of polymorphic aggregates didn't really get theTom Lane2008-01-11
| | | | | | checking of argument compatibility right; although the problem is only exposed with multiple-input aggregates in which some arguments are polymorphic and some are not. Per bug #3852 from Sokolov Yura.
* Fix an old error in clause_selectivity: the default selectivity estimateTom Lane2008-01-11
| | | | | | | | | | | | | for unhandled clause types ought to be 0.5, not 1.0. I fear I introduced this silliness due to misreading the intent of the very-poorly-structured code that was there when we inherited the file from Berkeley. The lack of sanity in this behavior was exposed by an example from Sim Zacks. (Arguably this is a bug fix and should be back-patched, but I'm a bit hesitant to introduce a possible planner behavior change in the back branches; it might detune queries that worked acceptably in the past.) While at it, make estimation for DistinctExpr do something marginally realistic, rather than just defaulting.
* Fix a conceptual error in my patch of 2007-10-26 that avoided consideringTom Lane2008-01-11
| | | | | | | | | | | | clauseless joins of relations that have unexploited join clauses. Rather than looking at every other base relation in the query, the correct thing is to examine the other relations in the "initial_rels" list of the current make_rel_from_joinlist() invocation, because those are what we actually have the ability to join against. This might be a subset of the whole query in cases where join_collapse_limit or from_collapse_limit or full joins have prevented merging the whole query into a single join problem. This is a bit untidy because we have to pass those rels down through a new PlannerInfo field, but it's necessary. Per bug #3865 from Oleg Kharin.
* Restructure the shutdown procedure for the archiver process to allow it toTom Lane2008-01-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | finish archiving everything (when there's no error), and to eliminate various hazards as best we can. This fixes a previous 8.3 patch that caused the postmaster to kill and then restart the archiver during shutdown (!?). The new behavior is that the archiver is allowed to run unmolested until the bgwriter has exited; then it is sent SIGUSR2 to tell it to do a final archiving cycle and quit. We only SIGQUIT the archiver if we want a panic stop; this is important since SIGQUIT will also be sent to any active archive_command. The postmaster also now doesn't SIGQUIT the stats collector until the bgwriter is done, since the bgwriter can send stats messages in 8.3. The postmaster will not exit until both the archiver and stats collector are gone; this provides some defense (not too bulletproof) against conflicting archiver or stats collector processes being started by a new postmaster instance. We continue the prior practice that the archiver will check for postmaster death immediately before issuing any archive_command; that gives some additional protection against conflicting archivers. Also, modify the archiver process to notice SIGTERM and refuse to issue any more archive commands if it gets it. The postmaster doesn't ever send it SIGTERM; we assume that any such signal came from init and is a notice of impending whole-system shutdown. In this situation it seems imprudent to try to start new archive commands --- if they aren't extremely quick they're likely to get SIGKILL'd by init. All per discussion.
* vacuum_cost_limit has a minimum value of 1, not zero; updateBruce Momjian2008-01-10
| | | | postgresql.conf comment to match.
* Remove incorrect (and ill-advised anyway) pfree's in pg_convert_from andTom Lane2008-01-09
| | | | pg_convert_to. Per bug #3866 from Andrew Gilligan.
* Fix CREATE INDEX CONCURRENTLY to not deadlock against an automatic or manualTom Lane2008-01-09
| | | | | VACUUM that is blocked waiting to get lock on the table being indexed. Per report and fix suggestion from Greg Stark.
* Fix some planner issues found while investigating Kevin Grittner's reportTom Lane2008-01-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of poorer planning in 8.3 than 8.2: 1. After pushing a constant across an outer join --- ie, given "a LEFT JOIN b ON (a.x = b.y) WHERE a.x = 42", we can deduce that b.y is sort of equal to 42, in the sense that we needn't fetch any b rows where it isn't 42 --- loop to see if any additional deductions can be made. Previous releases did that by recursing, but I had mistakenly thought that this was no longer necessary given the EquivalenceClass machinery. 2. Allow pushing constants across outer join conditions even if the condition is outerjoin_delayed due to a lower outer join. This is safe as long as the condition is strict and we re-test it at the upper join. 3. Keep the outer-join clause even if we successfully push a constant across it. This is *necessary* in the outerjoin_delayed case, but even in the simple case, it seems better to do this to ensure that the join search order heuristics will consider the join as reasonable to make. Mark such a clause as having selectivity 1.0, though, since it's not going to eliminate very many rows after application of the constant condition. 4. Tweak have_relevant_eclass_joinclause to report that two relations are joinable when they have vars that are equated to the same constant. We won't actually generate any joinclause from such an EquivalenceClass, but again it seems that in such a case it's a good idea to consider the join as worth costing out. 5. Fix a bug in select_mergejoin_clauses that was exposed by these changes: we have to reject candidate mergejoin clauses if either side was equated to a constant, because we can't construct a canonical pathkey list for such a clause. This is an implementation restriction that might be worth fixing someday, but it doesn't seem critical to get it done for 8.3.
* 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.