aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
...
* Add GUC log_temp_files to log the use of temporary files.Bruce Momjian2007-01-09
| | | | Bill Moran
* Add a citation to Seltzer and Yigit's Usenix '91 paper about hash tableTom Lane2007-01-09
| | | | | | | | | | management. The paper clearly describes many of the ideas embodied in our current hashing code, but as far as I could find out there is not a direct code heritage. (Mike Olsen recalls discussion of this paper at Postgres meetings but believes it "informed the Postgres implementation probably just at the design level". Margo herself says she wasn't involved with Postgres' hash code.) Credit where credit is due 'n all that, even if fifteen years after the fact.
* Support ORDER BY ... NULLS FIRST/LAST, and add ASC/DESC/NULLS FIRST/NULLS LASTTom Lane2007-01-09
| | | | | | | | | | | | per-column options for btree indexes. The planner's support for this is still pretty rudimentary; it does not yet know how to plan mergejoins with nondefault ordering options. The documentation is pretty rudimentary, too. I'll work on improving that stuff later. Note incompatible change from prior behavior: ORDER BY ... USING will now be rejected if the operator is not a less-than or greater-than member of some btree opclass. This prevents less-than-sane behavior if an operator that doesn't actually define a proper sort ordering is selected.
* Prevent duplicate attribute names in XMLELEMENT.Peter Eisentraut2007-01-08
|
* Tweak joinlist creation to avoid generating useless one-element subproblemsTom Lane2007-01-08
| | | | | | | | | | when collapsing of JOIN trees is stopped by join_collapse_limit. For instance a list of 11 LEFT JOINs with limit 8 now produces something like ((1 2 3 4 5 6 7 8) 9 10 11 12) instead of (((1 2 3 4 5 6 7 8) (9)) 10 11 12) The latter structure is really only required for a FULL JOIN. Noted while studying an example from Shane Ambler.
* Remove cost_hashjoin's very ancient hack to discourage (once, entirely forbid)Tom Lane2007-01-08
| | | | | | | | | | | hash joins with the estimated-larger relation on the inside. There are several cases where doing that makes perfect sense, and in cases where it doesn't, the regular cost computation really ought to be able to figure that out. Make some marginal tweaks in said computation to try to get results approximating reality a bit better. Per an example from Shane Ambler. Also, fix an oversight in the original patch to add seq_page_cost: the costs of spilling a hash join to disk should be scaled by seq_page_cost.
* Some fine-tuning of xmlpi in corner cases:Peter Eisentraut2007-01-07
| | | | | | - correct error codes - do syntax checks in correct order - strip leading spaces of argument
* Indent comments in makefiles better so they don't appear in the output.Peter Eisentraut2007-01-07
|
* Allow XML fragment to contain a XML declaration. For that, we need a smallPeter Eisentraut2007-01-07
| | | | | hand-crafted parser for the XML declaration, because libxml doesn't seem to allow this.
* Apply fix so pow() and exp() ERANGE is used only if result is not 0.Bruce Momjian2007-01-06
|
* Replace xmlroot with a properly functioning version that parses the value,Peter Eisentraut2007-01-06
| | | | | | | | | sets the items, and serializes the value back (rather than adding an arbitrary number of XML preambles as before). The libxml memory management via palloc had to be disabled because it crashes when libxml tries to access memory that was helpfully freed earlier by PostgreSQL. This needs further thought.
* Fix filtered_base_yylex() to save and restore base_yylval and base_yyllocTom Lane2007-01-06
| | | | | properly when doing a lookahead. The lack of this was causing various interesting misbehaviors when one tries to use "with" as a plain identifier.
* Check for ERANGE in exp() as well.Bruce Momjian2007-01-06
| | | | Improve release docs for ecpg regression tests.
* Improve dpow() check for ERANGE overflow for HPPA.Bruce Momjian2007-01-06
|
* Put back ERANGE test in dpow(). There are platforms that need this,Tom Lane2007-01-06
| | | | like my HPPA ...
* Update CVS HEAD for 2007 copyright. Back branches are typically notBruce Momjian2007-01-05
| | | | back-stamped for this.
* Update float dpow() comment about whick platforms had issues with Nan.Bruce Momjian2007-01-05
| | | | Stefan Kaltenbrunner
* Fix some small typos in comments. Greg StarkTom Lane2007-01-04
|
* Simplify assignment of Inf for pow Nan (don't worry about the sign).Bruce Momjian2007-01-04
|
* Fix erroneous implementation of -s in postmaster.c (the switch doesn't takeTom Lane2007-01-04
| | | | | | an optarg). Add some comments noting that code in three different files has to be kept in sync. Fix erroneous description of -S switch (it sets work_mem not silent_mode), and do some light copy-editing elsewhere in postgres-ref.
* Fix regex_fixed_prefix() to cope reasonably well with regex patterns of theTom Lane2007-01-03
| | | | | | | | | | form '^(foo)$'. Before, these could never be optimized into indexscans. The recent changes to make psql and pg_dump generate such patterns (for \d commands and -t and related switches, respectively) therefore represented a big performance hit for people with large pg_class catalogs, as seen in recent gripe from Erik Jones. While at it, be more paranoid about case-sensitivity checking in multibyte encodings, and fix some other corner cases in which a regex might be interpreted too liberally.
* Update pow() tests to check for both errno==EDOM _and_ result==Nan, andBruce Momjian2007-01-03
| | | | document why this happens. Remove exp() errno check because not needed.
* Fix erroneous error tests in pow/exp.Tom Lane2007-01-03
|
* Clean up smgr.c/md.c APIs as per discussion a couple months ago. Instead ofTom Lane2007-01-03
| | | | | | | | | | | | | | | | | | having md.c return a success/failure boolean to smgr.c, which was just going to elog anyway, let md.c issue the elog messages itself. This allows better error reporting, particularly in cases such as "short read" or "short write" which Peter was complaining of. Also, remove the kluge of allowing mdread() to return zeroes from a read-beyond-EOF: this is now an error condition except when InRecovery or zero_damaged_pages = true. (Hash indexes used to require that behavior, but no more.) Also, enforce that mdwrite() is to be used for rewriting existing blocks while mdextend() is to be used for extending the relation EOF. This restriction lets us get rid of the old ad-hoc defense against creating huge files by an accidental reference to a bogus block number: we'll only create new segments in mdextend() not mdwrite() or mdread(). (Again, when InRecovery we allow it anyway, since we need to allow updates of blocks that were later truncated away.) Also, clean up the original makeshift patch for bug #2737: move the responsibility for padding relation segments to full length into md.c.
* Attempt to return proper overflow/underflow messages for platforms thatBruce Momjian2007-01-03
| | | | only return Nan and set errno for pow/exp overflow/underflow.
* For float4/8, remove errno checks for pow() and exp() because only someBruce Momjian2007-01-03
| | | | | | platforms set errno, and we already have a check macro that detects under/overflow, so there is no reason for platform-specific code anymore.
* Widen the money type to 64 bits.D'Arcy J.M. Cain2007-01-03
|
* Adjust network errmsg("result is out of range") message to be consistentBruce Momjian2007-01-02
| | | | with other places.
* Some platforms set errno on pow(), exp() overflow, some do not, so ifBruce Momjian2007-01-02
| | | | isinf(), fall through to our own infinity checks.
* finite() no longer used; remove finite() platform-specificBruce Momjian2007-01-02
| | | | infrastructure.
* Add n_live_tuples and n_dead_tuples to pg_stat_all_tables.Bruce Momjian2007-01-02
| | | | | | | | | The purpose is to allow autovacuum-esq conditional vacuuming and clustering using SQL to discover the required stats. No documentation updates required. Catalog version updated. Glen Parker
* Add #include <float.h> for platforms that still need it.Bruce Momjian2007-01-02
|
* Fix float4/8 to handle Infinity and Nan consistently, e.g. Infinity is aBruce Momjian2007-01-02
| | | | | | | | | | | | | | | | | valid result from a computation if one of the input values was infinity. The previous code assumed an operation that returned infinity was an overflow. Handle underflow/overflow consistently, and add checks for aggregate overflow. Consistently prevent Inf/Nan from being cast to integer data types. Fix INT_MIN % -1 to prevent overflow. Update regression results for new error text. Per report from Roman Kononov.
* Found the problem with my operator-family changes: by fetching fromTom Lane2006-12-31
| | | | | | | | | | | pg_opclass during LookupOpclassInfo(), I'd turned pg_opclass_oid_index into a critical system index. However the problem could only manifest during a backend's first attempt to load opclass data, and then only if it had successfully loaded pg_internal.init and subsequently received a relcache flush; which made it impossible to reproduce in sequential tests and darn hard even in parallel tests. Memo to self: when exercising cache flush scenarios, must disable LookupOpclassInfo's internal cache too.
* Support type modifiers for user-defined types, and pull most knowledgeTom Lane2006-12-30
| | | | | | about typmod representation for standard types out into type-specific typmod I/O functions. Teodor Sigaev, with some editorialization by Tom Lane.
* Fix multiple breakages in last XML patch.Tom Lane2006-12-29
|
* De-escape XML names when reverse-compiling XML expressions.Peter Eisentraut2006-12-29
|
* Fix up btree's initial scankey processing to be able to detect redundantTom Lane2006-12-28
| | | | | | or contradictory keys even in cross-data-type scenarios. This is another benefit of the opfamily rewrite: we can find the needed comparison operators now.
* Enable btree_predicate_proof() to make proofs involving cross-data-typeTom Lane2006-12-28
| | | | | predicate operators. The hard stuff turns out to be already done in the previous commit, we need merely open the floodgates...
* Add send and recv functions for xml type.Peter Eisentraut2006-12-28
|
* Handle content and document options in xmlparse() correctly.Peter Eisentraut2006-12-28
|
* Modify local buffer management to request memory for local buffers in blocksTom Lane2006-12-27
| | | | | | | | | | | of increasing size, instead of one at a time. This reduces the memory management overhead when num_temp_buffers is large: in the previous coding we would actually waste 50% of the space used for temp buffers, because aset.c would round the individual requests up to 16K. Problem noted while studying a performance issue reported by Steven Flatt. Back-patch as far as 8.1 --- older versions used few enough local buffers that the issue isn't significant for them.
* Improve memory management code to avoid inefficient behavior when a contextTom Lane2006-12-27
| | | | | | | | | | | | | | | has a small maxBlockSize: the maximum request size that we will treat as a "chunk" needs to be limited to fit in maxBlockSize. Otherwise we will round up the request size to the next power of 2, wasting space, which is a bit pointless if we aren't going to make the blocks big enough to fit additional stuff in them. The example motivating this is local buffer management, which makes repeated allocations of 8K (one BLCKSZ buffer) in TopMemoryContext, which has maxBlockSize = 8K because for the most part allocations there are small. This leads to each local buffer actually eating 16K of space, which adds up when there are thousands of them. I intend to change localbuf.c to aggregate its requests, which will prevent this particular misbehavior, but it seems likely that similar scenarios could arise elsewhere, so fixing the core problem seems wise as well.
* Fix failure due to accessing an already-freed tuple descriptor in a planTom Lane2006-12-26
| | | | | | | | | | | | involving HashAggregate over SubqueryScan (this is the known case, there may well be more). The bug is only latent in releases before 8.2 since they didn't try to access tupletable slots' descriptors during ExecDropTupleTable. The least bogus fix seems to be to make subqueries share the parent query's memory context, so that tupdescs they create will have the same lifespan as those of the parent query. There are comments in the code envisioning going even further by not having a separate child EState at all, but that will require rethinking executor access to range tables, which I don't want to tackle right now. Per bug report from Jean-Pierre Pelletier.
* Repair bug #2839: the various ExecReScan functions need to resetTom Lane2006-12-26
| | | | | | | | | ps_TupFromTlist in plan nodes that make use of it. This was being done correctly in join nodes and Result nodes but not in any relation-scan nodes. Bug would lead to bogus results if a set-returning function appeared in the targetlist of a subquery that could be rescanned after partial execution, for example a subquery within EXISTS(). Bug has been around forever :-( ... surprising it wasn't reported before.
* Repair bug #2836: SPI_execute_plan returned zero if none of the querytreesTom Lane2006-12-26
| | | | | | | | | were marked canSetTag. While it's certainly correct to return the result of the last one that is marked canSetTag, it's less clear what to do when none of them are. Since plpgsql will complain if zero is returned, the 8.2.0 behavior isn't good. I've fixed it to restore the prior behavior of returning the physically last query's result code when there are no canSetTag queries.
* Bring some order and sanity to error handling in the xml patch.Tom Lane2006-12-24
| | | | | | | | | | | Use a TRY block instead of (inadequate) ad-hoc coding to ensure that libxml is cleaned up after a failure. Report the intended SQLCODE instead of defaulting to XX000. Avoid risking use of a dangling pointer by keeping the persistent error buffer in TopMemoryContext. Be less trusting that error messages don't contain %. This patch doesn't do anything about changing the way the messages are put together --- this is just about mechanism.
* Fix machine-dependent crash in sqlchar_to_unicode(). Get rid ofTom Lane2006-12-24
| | | | | | | bletcherous and unsafe manipulation of global encoding setting. Clean up libxml reporting mechanism a bit (it still looks like a dangling-pointer crash waiting to happen, though, not to mention being far less than sane from a localization standpoint).
* Code review for XML patch. Instill a bit of sanity in the location ofTom Lane2006-12-24
| | | | | | | the XmlExpr code in various lists, use a representation that has some hope of reverse-listing correctly (though it's still a de-escaping function shy of correctness), generally try to make it look more like Postgres coding conventions.
* Suppress various compiler warnings in new xml code.Tom Lane2006-12-23
|