aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
* Prevent WAL logging when COPY is done in the same transation thatBruce Momjian2007-01-25
| | | | | | created it. Simon Riggs
* Get pg_utf_mblen(), pg_utf2wchar_with_len(), and utf2ucs() all on the sameTom Lane2007-01-24
| | | | | | | | | | | | | | | | | | | | | page about the maximum UTF8 sequence length we support (4 bytes since 8.1, 3 before that). pg_utf2wchar_with_len never got updated to support 4-byte characters at all, and in any case had a buffer-overrun risk in that it could produce multiple pg_wchars from what mblen claims to be just one UTF8 character. The only reason we don't have a major security hole is that most callers allocate worst-case output buffers; the sole exception in released versions appears to be pre-8.2 iwchareq() (ie, ILIKE), which can be crashed due to zeroing out its return address --- but AFAICS that can't be exploited for anything more than a crash, due to inability to control what gets written there. Per report from James Russell and Michael Fuhr. Pre-8.1 the risk is much less, but I still think pg_utf2wchar_with_len's behavior given an incomplete final character risks buffer overrun, so back-patch that logic change anyway. This patch also makes sure that UTF8 sequences exceeding the supported length (whichever it is) are consistently treated as error cases, rather than being treated like a valid shorter sequence in some places.
* Relax an Assert() that has been found to be too strict in some situationsTom Lane2007-01-24
| | | | | | | involving unions of types having typmods. Variants of the failure are known to occur in 8.1 and up; not sure if it's possible in 8.0 and 7.4, but since the code exists that far back, I'll just patch 'em all. Per report from Brian Hurt.
* Simplify handling of XML error messages: Just use the string provided byPeter Eisentraut2007-01-23
| | | | | | | | | libxml as the detail message. As per <http://archives.postgresql.org/pgsql-hackers/2006-12/msg01087.php>. For converting error codes to messages, we only need to cover those codes that we raise ourselves now.
* Add CREATE/ALTER/DROP OPERATOR FAMILY commands, also COMMENT ON OPERATORTom Lane2007-01-23
| | | | | | FAMILY; and add FAMILY option to CREATE OPERATOR CLASS to allow adding a class to a pre-existing family. Per previous discussion. Man, what a tedious lot of cutting and pasting ...
* Back out use of FormatMessage(), does error values, not exceptionBruce Momjian2007-01-23
| | | | | values. Point to /include/ntstatus.h for an exception list, rather than a URL.
* Print meaningfull error text for abonormal process exit on Win32, ratherBruce Momjian2007-01-23
| | | | than hex codes, using FormatMessage().
* Put back planner's ability to cache the results of mergejoinscansel(),Tom Lane2007-01-22
| | | | | | | | | | which I had removed in the first cut of the EquivalenceClass rewrite to simplify that patch a little. But it's still important --- in a four-way join problem mergejoinscansel() was eating about 40% of the planning time according to gprof. Also, improve the EquivalenceClass code to re-use join RestrictInfos rather than generating fresh ones for each join considered. This saves some memory space but more importantly improves the effectiveness of caching planning info in RestrictInfos.
* Use errhint() for WIN32 SIGTERM message, where possible.Bruce Momjian2007-01-22
|
* When system() fails in Win32, report it as an exception, print theBruce Momjian2007-01-22
| | | | exception value in hex, and give a URL where the value can be looked-up.
* Add COST and ROWS options to CREATE/ALTER FUNCTION, plus underlying pg_procTom Lane2007-01-22
| | | | | | | | | | | | columns procost and prorows, to allow simple user adjustment of the estimated cost of a function call, as well as control of the estimated number of rows returned by a set-returning function. We might eventually wish to extend this to allow function-specific estimation routines, but there seems to be consensus that we should try a simple constant estimate first. In particular this provides a relatively simple way to control the order in which different WHERE clauses are applied in a plan node, which is a Good Thing in view of the fact that the recent EquivalenceClass planner rewrite made that much less predictable than before.
* Refactor some lsyscache routines to eliminate duplicate code and saveTom Lane2007-01-21
| | | | a couple of syscache lookups in make_pathkey_from_sortinfo().
* Simplify pg_am representation of ordering-capable access methods:Tom Lane2007-01-20
| | | | | | | provide just a boolean 'amcanorder', instead of fields that specify the sort operator strategy numbers. We have decided to require ordering-capable AMs to use btree-compatible strategy numbers, so the old fields are overkill (and indeed misleading about what's allowed).
* Make setseed() return void, rather than an int4 without any use. PerNeil Conway2007-01-20
| | | | pgsql-patches discussion of September 20, 2006. Bump the catversion.
* Add documentation of memory and time units to postgresql.conf.Bruce Momjian2007-01-20
| | | | Backpatch to 8.2.X for new initdbs.
* Don't use 'int' where you mean 'bool'.Tom Lane2007-01-20
|
* Refactor planner's pathkeys data structure to create a separate, explicitTom Lane2007-01-20
| | | | | | | | | | | | | | representation of equivalence classes of variables. This is an extensive rewrite, but it brings a number of benefits: * planner no longer fails in the presence of "incomplete" operator families that don't offer operators for every possible combination of datatypes. * avoid generating and then discarding redundant equality clauses. * remove bogus assumption that derived equalities always use operators named "=". * mergejoins can work with a variety of sort orders (e.g., descending) now, instead of tying each mergejoinable operator to exactly one sort order. * better recognition of redundant sort columns. * can make use of equalities appearing underneath an outer join.
* Refactor the index AM API slightly: move currentItemData andNeil Conway2007-01-20
| | | | | | | currentMarkData from IndexScanDesc to the opaque structs for the AMs that need this information (currently gist and hash). Patch from Heikki Linnakangas, fixes by Neil Conway.
* Remove remains of old depend target.Peter Eisentraut2007-01-20
|
* Modify max_fsm_pages in postgresql.conf.sample to show a typical value,Bruce Momjian2007-01-20
| | | | rather than a value too high.
* Move code that places LOG error level between ERROR and PANIC into newBruce Momjian2007-01-20
| | | | function is_log_level_output(), for code clarity.
* Fix xmlconcat by properly merging the XML declarations. Add aggregatePeter Eisentraut2007-01-20
| | | | function xmlagg.
* Add missing copyright blurb, make ruleutils.c use the standard layoutNeil Conway2007-01-20
| | | | for its header comment.
* Add support for converting binary values (i.e. bytea) into xml values,Peter Eisentraut2007-01-19
| | | | | with new GUC parameter "xmlbinary" that controls the output encoding, as per SQL/XML standard.
* Clean up encoding issues in the xml type: In text mode, encodingPeter Eisentraut2007-01-18
| | | | | declarations are ignored and removed, in binary mode they are honored as specified by the XML standard.
* Add a note pointing out that is_pseudo_constant_clause() doesn't checkTom Lane2007-01-17
| | | | | for aggregates. This is OK for current uses but could burn somebody someday...
* Extend yesterday's patch so that the bgwriter is also told to forgetTom Lane2007-01-17
| | | | pending fsyncs during DROP DATABASE. Obviously necessary in hindsight :-(
* Revise bgwriter fsync-request mechanism to improve robustness when a tableTom Lane2007-01-17
| | | | | | | | | | | | | | | | is deleted. A backend about to unlink a file now sends a "revoke fsync" request to the bgwriter to make it clean out pending fsync requests. There is still a race condition where the bgwriter may try to fsync after the unlink has happened, but we can resolve that by rechecking the fsync request queue to see if a revoke request arrived meanwhile. This eliminates the former kluge of "just assuming" that an ENOENT failure is okay, and lets us handle the fact that on Windows it might be EACCES too without introducing any questionable assumptions. After an idea of mine improved by Magnus. The HEAD patch doesn't apply cleanly to 8.2, but I'll see about a back-port later. In the meantime this could do with some testing on Windows; I've been able to force it through the code path via ENOENT, but that doesn't prove that it actually fixes the Windows problem ...
* Implement width_bucket() for the float8 data type.Neil Conway2007-01-16
| | | | | | | | | | | | | | | | | | | | | | | The implementation is somewhat ugly logic-wise, but I don't see an easy way to make it more concise. When writing this, I noticed that my previous implementation of width_bucket() doesn't handle NaN correctly: postgres=# select width_bucket('NaN', 1, 5, 5); width_bucket -------------- 6 (1 row) AFAICS SQL:2003 does not define a NaN value, so it doesn't address how width_bucket() should behave here. The patch changes width_bucket() so that ereport(ERROR) is raised if NaN is specified for the operand or the lower or upper bounds to width_bucket(). For float8, NaN is disallowed for any of the floating-point inputs, and +/- infinity is disallowed for the histogram bounds (but allowed for the operand). Update docs and regression tests, bump the catversion.
* Fix incorrect permissions check in information_schema.key_column_usage view:Tom Lane2007-01-16
| | | | | | | | | | it was checking a pg_constraint OID instead of pg_class OID, resulting in "relation with OID nnnnn does not exist" failures for anyone who wasn't owner of the table being examined. Per bug #2848 from Laurence Rowe. Note: for existing 8.2 installations a simple version update won't fix this; the easiest fix is to CREATE OR REPLACE this view with the corrected definition.
* Enable autovacuum in the default configuration, per discussion.Alvaro Herrera2007-01-16
|
* Arrange for autovacuum to be killed when another operation wants to be aloneAlvaro Herrera2007-01-16
| | | | | | accessing it, like DROP DATABASE. This allows the regression tests to pass with autovacuum enabled, which open the gates for finally enabling autovacuum by default.
* Fix reverse compilation of IS DOCUMENT expression.Peter Eisentraut2007-01-14
|
* Add support for xmlval IS DOCUMENT expression.Peter Eisentraut2007-01-14
|
* Fix handling of CC (century) format spec in to_date/to_char. According toTom Lane2007-01-12
| | | | | | | | standard convention the 21st century runs from 2001-2100, not 2000-2099, so make it work like that. Per bug #2885 from Akio Iwaasa. Backpatch to 8.2, but no further, since this is really a definitional change; users of older branches are probably more interested in stability.
* Fix compiler warningPeter Eisentraut2007-01-12
|
* Use XML output escaping also in XMLFOREST.Peter Eisentraut2007-01-12
|
* Update error messsage wording.Bruce Momjian2007-01-12
|
* Update ORDER BY UNION function/exprssion wording (again).Bruce Momjian2007-01-12
|
* Add some notes about the basic mathematical laws that the system presumesTom Lane2007-01-12
| | | | | | hold true for operators in a btree operator family. This is mostly to clarify my own thinking about what the planner can assume for optimization purposes. (blowing dust off an old abstract-algebra textbook...)
* Allow for arbitrary data types as content in XMLELEMENT. The originalPeter Eisentraut2007-01-12
| | | | | coercion to type xml was a mistake. Escape values so they are valid XML character data.
* Fix a performance problem in databases with large numbers of tablesTom Lane2007-01-11
| | | | | | | | | | | (or other types of pg_class entry): the function pgstat_vacuum_tabstat, invoked during VACUUM startup, had runtime proportional to the number of stats table entries times the number of pg_class rows; in other words O(N^2) if the stats collector's information is reasonably complete. Replace list searching with a hash table to bring it back to O(N) behavior. Per report from kim at myemma.com. Back-patch as far as 8.1; 8.0 and before use different coding here.
* Update UNION/INTERSECT/EXCEPT ORDER BY error wording forBruce Momjian2007-01-11
| | | | expressions/functions.
* Improve error wording of ORDER BY in UNION that uses new expressions inBruce Momjian2007-01-11
| | | | ORDER BY.
* Teach nodeMergejoin how to handle DESC and/or NULLS FIRST sort orders.Tom Lane2007-01-11
| | | | So far only tested by hacking the planner ...
* Use libxml's xmlwriter API for producing XML elements, instead of doingPeter Eisentraut2007-01-10
| | | | | our own printing dance. This does a better job of quoting and escaping the values.
* Change the planner-to-executor API so that the planner tells the executorTom Lane2007-01-10
| | | | | | | | | | | | | | | | which comparison operators to use for plan nodes involving tuple comparison (Agg, Group, Unique, SetOp). Formerly the executor looked up the default equality operator for the datatype, which was really pretty shaky, since it's possible that the data being fed to the node is sorted according to some nondefault operator class that could have an incompatible idea of equality. The planner knows what it has sorted by and therefore can provide the right equality operator to use. Also, this change moves a couple of catalog lookups out of the executor and into the planner, which should help startup time for pre-planned queries by some small amount. Modify the planner to remove some other cavalier assumptions about always being able to use the default operators. Also add "nulls first/last" info to the Plan node for a mergejoin --- neither the executor nor the planner can cope yet, but at least the API is in place.
* Have log_temp_files be in kilobytes, remove trace call.Bruce Momjian2007-01-09
|
* Remove trace macro call from new log_temp_files, until it gets moreBruce Momjian2007-01-09
| | | | research.
* Enable another five tuple status bits by using the high bits of theBruce Momjian2007-01-09
| | | | | | nattr field, and rename the field. Heikki Linnakangas