aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
* Recent changes to allow hash join to exit early given empty input fromTom Lane2005-11-28
| | | | | | | one child or the other had a problem: they did not leave the node in a state that ExecReScanHashJoin would understand. In particular it would tend to fail to reset the child plans when needed. Per report from Mario Weilguni.
* Set a snapshot before running analyze on a single table, to avoid aAlvaro Herrera2005-11-28
| | | | | | crash when analyzing tables with expressional indexes. Per report from Frank van Vugt.
* Install pg_regress where PGXS' "make installcheck" can find it.Alvaro Herrera2005-11-28
|
* Change the parser to translate "foo [NOT] IN (expression-list)" toTom Lane2005-11-28
| | | | | | | | | | | ScalarArrayOpExpr when possible, that is, whenever there is an array type for the values of the expression list. This completes the project I've been working on to improve the speed of index searches with long IN lists, as per discussion back in mid-October. I did not force initdb, but until you do one you will see failures in the "rules" regression test, because some of the standard system views use IN and their compiled formats have changed.
* Teach predtest.c how to reason about ScalarArrayOpExpr clauses as thoughTom Lane2005-11-27
| | | | | | | | they were broken-out AND or OR lists. The least grotty way to do this seemed to be to set up a general mechanism for handling nodes as though they were ANDs or ORs. There's no other immediate use for it, but perhaps we might want to use the mechanism someday for things like BETWEEN SYMMETRIC.
* Add missing semicolon. Recent versions of bison seem to choke on this,Tom Lane2005-11-27
| | | | per buildfarm report from platypus, even though older versions let it pass.
* Teach tid-scan code to make use of "ctid = ANY (array)" clauses, so thatTom Lane2005-11-26
| | | | | | | "ctid IN (list)" will still work after we convert IN to ScalarArrayOpExpr. Make some minor efficiency improvements while at it, such as ensuring that multiple TIDs are fetched in physical heap order. And fix EXPLAIN so that it shows what's really going on for a TID scan.
* Teach push_nots() how to negate a ScalarArrayOpExpr. In passing, saveTom Lane2005-11-26
| | | | a palloc or two in the OpExpr case.
* Some marginal additional hacking to shave a few more cycles offTom Lane2005-11-26
| | | | heapgettup.
* Change seqscan logic so that we check visibility of all tuples on a pageTom Lane2005-11-26
| | | | | | | | | | | | | | when we first read the page, rather than checking them one at a time. This allows us to take and release the buffer content lock just once per page, instead of once per tuple. Since it's a shared lock the contention penalty for holding the lock longer shouldn't be too bad. We can safely do this only when using an MVCC snapshot; else the assumption that visibility won't change over time is uncool. Therefore there are now two code paths depending on the snapshot type. I also made the same change in nodeBitmapHeapscan.c, where it can be done always because we only support MVCC snapshots for bitmap scans anyway. Also make some incidental cleanups in the APIs of these functions. Per a suggestion from Qingqing Zhou.
* Teach planner and executor to handle ScalarArrayOpExpr as an indexableTom Lane2005-11-25
| | | | | | | | | | | qualification when the underlying operator is indexable and useOr is true. That is, indexkey op ANY (ARRAY[...]) is effectively translated into an OR combination of one indexscan for each array element. This only works for bitmap index scans, of course, since regular indexscans no longer support OR'ing of scans. There are still some loose ends to clean up before changing 'x IN (list)' to translate as a ScalarArrayOpExpr; for instance predtest.c ought to be taught about it. But this gets the basic functionality in place.
* Improve ExecStoreTuple to be smarter about replacing the contents ofTom Lane2005-11-25
| | | | | | | | | | | | | | a TupleTableSlot: instead of calling ExecClearTuple, inline the needed operations, so that we can avoid redundant steps. In particular, when the old and new tuples are both on the same disk page, avoid releasing and re-acquiring the buffer pin --- this saves work in both the bufmgr and ResourceOwner modules. To make this improvement actually useful, partially revert a change I made on 2004-04-21 that caused SeqNext et al to call ExecClearTuple before ExecStoreTuple. The motivation for that, to avoid grabbing the BufMgrLock separately for releasing the old buffer and grabbing the new one, no longer applies. My profiling says that this saves about 5% of the CPU time for an all-in-memory seqscan.
* Get rid of ExecAssignResultTypeFromOuterPlan() and make all plan node typesTom Lane2005-11-23
| | | | | | | | | | | generate their output tuple descriptors from their target lists (ie, using ExecAssignResultTypeFromTL()). We long ago fixed things so that all node types have minimally valid tlists, so there's no longer any good reason to have two different ways of doing it. This change is needed to fix bug reported by Hayden James: the fix of 2005-11-03 to emit the correct column names after optimizing away a SubqueryScan node didn't work if the new top-level plan node used ExecAssignResultTypeFromOuterPlan to generate its tupdesc, since the next plan node down won't have the correct column labels.
* Fix problems with rewriter failing to set Query.hasSubLinks when insertingTom Lane2005-11-23
| | | | | | | a SubLink expression into a rule query. Pre-8.1 we essentially did this unconditionally; 8.1 tries to do it only when needed, but was missing a couple of cases. Per report from Kyle Bateman. Add some regression test cases covering this area.
* Fix pgindent of libpq-fe.h by hacking pgindent script.Bruce Momjian2005-11-23
| | | | Remove pgbench comment that was causing problems.
* Fix up comment munged by pg_indent. (Not pg_indent's fault; should haveTom Lane2005-11-22
| | | | protected comment with dashes the first time round.)
* Re-run pgindent, fixing a problem where comment lines after a blankBruce Momjian2005-11-22
| | | | | | | | | comment line where output as too long, and update typedefs for /lib directory. Also fix case where identifiers were used as variable names in the backend, but as typedefs in ecpg (favor the backend for indenting). Backpatch to 8.1.X.
* DROP DATABASE IF EXISTS variantAndrew Dunstan2005-11-22
|
* Implement DROP OWNED and REASSIGN OWNED. These new commands facilitate theAlvaro Herrera2005-11-21
| | | | | | | | | | | | | | | process of dropping roles by dropping objects owned by them and privileges granted to them, or giving the owned objects to someone else, through the use of the data stored in the new pg_shdepend catalog. Some refactoring of the GRANT/REVOKE code was needed, as well as ALTER OWNER code. Further cleanup of code duplication in the GRANT code seems necessary. Implemented by me after an idea from Tom Lane, who also provided various kind of implementation advice. Regression tests pass. Some tests for the new functionality are also added, as well as rudimentary documentation.
* Clean up after DROP IF EXISTS patch.Tom Lane2005-11-20
|
* Remove the t_datamcxt field of HeapTupleData. This was introduced forTom Lane2005-11-20
| | | | | the convenience of tuptoaster.c and is no longer needed, so may as well get rid of some small amount of overhead.
* Modify tuptoaster's API so that it does not try to modify the passedTom Lane2005-11-20
| | | | | | | | | tuple in-place, but instead passes back an all-new tuple structure if any changes are needed. This is a much cleaner and more robust solution for the bug discovered by Alexey Beschiokov; accordingly, revert the quick hack I installed yesterday. With this change, HeapTupleData.t_datamcxt is no longer needed; will remove it in a separate commit in HEAD only.
* Stopgap solution for problem reported by Alexey Beschiokov: afterTom Lane2005-11-19
| | | | | | | doing heap_insert or heap_update, wipe out any extracted fields in the TupleTableSlot containing the tuple, because they might not be valid anymore if tuptoaster.c changed the tuple. Safe because slot must be in the materialized state, but mighty ugly --- find a better answer!
* Change array comparison rules to consider dimensionality information,Tom Lane2005-11-19
| | | | | not only the array contents, before claiming two arrays are equal. Per recent discussion.
* DROP objecttype IF EXISTS for the following objects:Andrew Dunstan2005-11-19
| | | | table view index sequence schema type domain conversion
* Change array_push and array_cat so that they retain the lower bound ofTom Lane2005-11-19
| | | | | | | | | | | the array (for array_push) or higher-dimensional array (for array_cat) rather than decrementing it as before. This avoids generating lower bounds other than one for any array operation within the SQL spec. Per recent discussion. Interestingly, this seems to have been the original behavior, because while updating the docs I noticed that a large fraction of relevant examples were *wrong* for the old behavior and are now right. Is it worth correcting this in the back-branch docs?
* Fix performance issue in exprTypmod(): for a COALESCE expression, itTom Lane2005-11-18
| | | | | | recursed twice on its first argument, leading to exponential time spent on a deep nest of COALESCEs ... such as a deeply nested FULL JOIN would produce. Per report from Matt Carter.
* translate undef to NULL for result arrayref, now that we allow NULLs in ↵Andrew Dunstan2005-11-18
| | | | arrays. Update plperl regression test accordingly.
* Add tab completion for RESET SESSION AUTHORIZATION.Alvaro Herrera2005-11-18
|
* Update obsolete comment describing ExecDelete(), per Simon Riggs.Neil Conway2005-11-18
|
* Mop-up for nulls-in-arrays patch: fix some places that access arrayTom Lane2005-11-18
| | | | contents directly.
* make psql honor explicit database parameter in -l mode, in case "postgres" ↵Andrew Dunstan2005-11-17
| | | | database is missing - per complaint from Philip Yarra.
* Make SQL arrays support null elements. This commit fixes the core arrayTom Lane2005-11-17
| | | | | | | | functionality, but I still need to make another pass looking at places that incidentally use arrays (such as ACL manipulation) to make sure they are null-safe. Contrib needs work too. I have not changed the behaviors that are still under discussion about array comparison and what to do with lower bounds.
* DropRelFileNodeBuffers failed to fix the state of the lookup hash tableTom Lane2005-11-17
| | | | | | | | that was added to localbuf.c in 8.1; therefore, applying it to a temp table left corrupt lookup state in memory. The only case where this had a significant chance of causing problems was an ON COMMIT DELETE ROWS temp table; the other possible paths left bogus state that was unlikely to be used again. Per report from Csaba Nagy.
* make_restrictinfo() failed to attach the specified required_relids toTom Lane2005-11-16
| | | | | its result when the clause was an OR clause. Brain fade exposed by example from Sebastian BÎck.
* Update error message and documentation for fsync test.Bruce Momjian2005-11-16
|
* Have test_fsync honor -f filename argument.Bruce Momjian2005-11-16
|
* Prevent certain symbols that are used for both typedefs and variableBruce Momjian2005-11-15
| | | | | | | names from being added to pgindent's typedef list. The existance of them caused weird formatting in the date/type files, and in keywords.c. Backpatch to 8.1.X.
* Fix recent problems with BSD indent, including indenting past 80Bruce Momjian2005-11-15
| | | | | | | columns, shifting comment to the right when more than 150 'else if' clauses were used, and update typedefs for 8.1.X. NetBSD patched updated, with documentation.
* Restore the former RestrictInfo field valid_everywhere (but invert the flagTom Lane2005-11-14
| | | | | | | | | | sense and rename to "outerjoin_delayed" to more clearly reflect what it means). I had decided that it was redundant in 8.1, but the folly of this is exposed by a bug report from Sebastian Böck. The place where it's needed is to prevent orindxpath.c from cherry-picking arms of an outer-join OR clause to form a relation restriction that isn't actually legal to push down to the relation scan level. There may be some legal cases that this forbids optimizing, but we'd need much closer analysis to determine it.
* Translation typo fixAlvaro Herrera2005-11-14
|
* Re-run pgindent to fix breakage when exceeding 150 'else if' clauses.Bruce Momjian2005-11-14
| | | | Cosmetic fix only.
* Prevent ExecInsert() and ExecUpdate() from scribbling on the result tupleTom Lane2005-11-14
| | | | | | | slot of the topmost plan node when a trigger returns a modified tuple. These appear to be the only places where a plan node's caller did not treat the result slot as read-only, which is an assumption that nodeUnique makes as of 8.1. Fixes trigger-vs-DISTINCT bug reported by Frank van Vugt.
* Force the second argument of SUBSTRING(foo FOR bar) to be int4, to avoidTom Lane2005-11-13
| | | | | | | surprising results when it's some other numeric type. This doesn't solve the generic problem of surprising implicit casts to text, but it's a low-impact way of making sure this particular case behaves sanely. Per gripe from Harald Fuchs and subsequent discussion.
* Revert pgindent length back to 79 because we are going to fix the BSDBruce Momjian2005-11-13
| | | | indent bug.
* add missing quote mark to ident_file sample line - per Hiroshi SaitoAndrew Dunstan2005-11-10
|
* When in transaction-aborted state, reject Bind message for portals containingTom Lane2005-11-10
| | | | | | | | | | anything but transaction-exiting commands (ROLLBACK etc). We already rejected Parse and Execute in such cases, so there seems little point in allowing Bind. This prevents at least an Assert failure, and probably worse things, since there's a lot of infrastructure that doesn't work when not in a live transaction. We can also simplify the Bind logic a bit by rejecting messages with a nonzero number of parameters, instead of the former kluge to silently substitute NULL for each parameter. Per bug #2033 from Joel Stevenson.
* Fix misspelling of 'listen_addresses', per Devrim.Tom Lane2005-11-09
|
* Lower pgident length to 77, document BSD indent bug.Bruce Momjian2005-11-07
|
* Change maximum pgindent length from 79 to 78, per Tom.Bruce Momjian2005-11-07
|