aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
* Make eval_const_expressions simplify FieldSelect from a whole-row VarTom Lane2003-03-14
| | | | into an ordinary one-field Var. Per example from Chris Mungall.
* Prevent infinite loop in ln_var() due to roundoff error.Tom Lane2003-03-14
| | | | Per report from Dave Marin.
* GROUP BY got confused if there were multiple equal() GROUP BY items.Tom Lane2003-03-13
| | | | | | This bug has been latent since 7.0 or maybe even further back, but it was only exposed when parse_clause.c stopped suppressing duplicate items (see its rev 1.96 of 18-Aug-02).
* Add explicit tests for division by zero to all user-accessible integerTom Lane2003-03-11
| | | | | | | | division and modulo functions, to avoid problems on OS X (which fails to trap 0 divide at all) and Windows (which traps it in some bizarre nonstandard fashion). Standardize on 'division by zero' as the one true spelling of this error message. Add regression tests as suggested by Neil Conway.
* Implement SQL92-compatible FIRST, LAST, ABSOLUTE n, RELATIVE n optionsTom Lane2003-03-11
| | | | for FETCH and MOVE.
* This patch fixes a bunch of spelling mistakes in comments throughout theTom Lane2003-03-10
| | | | | | PostgreSQL source code. Neil Conway
* Restructure parsetree representation of DECLARE CURSOR: now it's aTom Lane2003-03-10
| | | | | | | | | | | | utility statement (DeclareCursorStmt) with a SELECT query dangling from it, rather than a SELECT query with a few unusual fields in it. Add code to determine whether a planned query can safely be run backwards. If DECLARE CURSOR specifies SCROLL, ensure that the plan can be run backwards by adding a Materialize plan node if it can't. Without SCROLL, you get an error if you try to fetch backwards from a cursor that can't handle it. (There is still some discussion about what the exact behavior should be, but this is necessary infrastructure in any case.) Along the way, make EXPLAIN DECLARE CURSOR work.
* Revise tuplestore and nodeMaterial so that we don't have to read theTom Lane2003-03-09
| | | | | | | | | | entire contents of the subplan into the tuplestore before we can return any tuples. Instead, the tuplestore holds what we've already read, and we fetch additional rows from the subplan as needed. Random access to the previously-read rows works with the tuplestore, and doesn't affect the state of the partially-read subplan. This is a step towards fixing the problems with cursors over complex queries --- we don't want to stick in Materialize nodes if they'll prevent quick startup for a cursor.
* Tweak dependency code to suppress NOTICEs generated by new method forTom Lane2003-03-06
| | | | | | cleaning out temp namespaces. We don't really want the server log to be cluttered with 'Drop cascades to table foo' every time someone uses a temp table...
* Add code to dump contents of free space map into $PGDATA/global/pg_fsm.cacheTom Lane2003-03-06
| | | | | | at database shutdown, and then load it again at database startup. This preserves our hard-won knowledge of free space across restarts (given an orderly shutdown, that is).
* Turns out new IN implementation has got some problems in an UPDATE orTom Lane2003-03-05
| | | | | DELETE with inherited target table. Fix it; add a regression test. Also, correct ancient misspelling of 'inherited'.
* Repair bug reported by Laurent Perez: bad plan generated when UPDATE orTom Lane2003-03-05
| | | | | | DELETE of an inheritance tree references another inherited relation. This bug has been latent since 7.1; I'm still not quite sure why 7.1 and 7.2 don't manifest it (at least, they don't crash on a simple test case).
* Reimplement free-space-map management as per recent discussions.Tom Lane2003-03-04
| | | | | | | | | | | | Adjustable threshold is gone in favor of keeping track of total requested page storage and doling out proportional fractions to each relation (with a minimum amount per relation, and some quantization of the results to avoid thrashing with small changes in page counts). Provide special- case code for indexes so as not to waste space storing useless page free space counts. Restructure internal data storage to be a flat array instead of list-of-chunks; this may cost a little more work in data copying when reorganizing, but allows binary search to be used during lookup_fsm_page_entry().
* Prevent clustering on incomplete indexes: partial indexes are verboten,Tom Lane2003-03-03
| | | | as are non-amindexnulls AMs unless first column is attnotnull.
* Be smart about outer-join qualifications that mention only one side ofTom Lane2003-03-02
| | | | | | the join, per recent discussion on pgsql-sql. Not clear that this will come up often in real queries, but it's not any more expensive to do it right, so we may as well do it right.
* Change EXTRACT(EPOCH FROM timestamp) so that a timestamp without time zoneTom Lane2003-02-27
| | | | | | is assumed to be in local time, not GMT. This improves consistency with other operations, which all assume local timezone when it matters. Per bug #897.
* Remove REWRITE_INVOKE_MAX in favor of making an accurate check forTom Lane2003-02-25
| | | | | | recursion in RewriteQuery(); also, detect recursion in fireRIRrules(), so as to catch self-referential views per example from Ryan VanderBijl. Minor code restructuring to make it easier to catch recursive case.
* During VACUUM FULL, truncate off any deletable pages that are at theTom Lane2003-02-24
| | | | | | end of a btree index. This isn't super-effective, since we won't move nondeletable pages, but it's better than nothing. Also, improve stats displayed during VACUUM VERBOSE.
* Remove no-longer-used FixBTree GUC variable.Tom Lane2003-02-23
|
* btree page recycling can be done as soon as page's next-xact label isTom Lane2003-02-23
| | | | | older than current Xmin; we don't have to wait till it's older than GlobalXmin.
* Adjust btbulkdelete logic so that only one WAL record is issued whileTom Lane2003-02-23
| | | | | | deleting multiple index entries on a single index page. This makes for a very substantial reduction in the amount of WAL traffic during a large delete operation.
* Improve coding of log_heap_clean() and heap_xlog_clean().Tom Lane2003-02-23
|
* First cut at recycling space in btree indexes. Still some rough edgesTom Lane2003-02-23
| | | | to fix, but it seems to basically work...
* If a shutdown request comes in while we're still starting up, don'tTom Lane2003-02-23
| | | | | | | service it until after we execute SetThisStartUpID(). Else shutdown process will write the wrong SUI into the shutdown checkpoint, which seems likely to be trouble --- although I've not quite figured out how significant it really is.
* Simplify timezone-handling code per proposal to pghackers: get rid ofTom Lane2003-02-22
| | | | | | | | setting timezone-related variables during transaction start. They were not used anyway in platforms that HAVE_TM_ZONE or HAVE_INT_TIMEZONE, which it appears is *all* the platforms we are currently supporting. For platforms that have neither, we now only support UTC or numeric- offset-from-UTC timezones.
* More infrastructure for btree compaction project. Tree-traversal codeTom Lane2003-02-22
| | | | | | | | now knows what to do upon hitting a dead page (in theory anyway, it's untested...). Add a post-VACUUM-cleanup entry point for index AMs, to provide a place for dead-page scavenging to happen. Also, fix oversight that broke btpo_prev links in temporary indexes. initdb forced due to additions in pg_am.
* Make btree index structure adjustments and WAL logging changes needed toTom Lane2003-02-21
| | | | | | | | | | | support btree compaction, as per proposal of a few days ago. btree index pages no longer store parent links, instead they have a level indicator (counting up from zero for leaf pages). The FixBTree recovery logic is removed, and replaced by code that detects missing parent-level insertions during WAL replay. Also, generate appropriate WAL entries when updating btree metapage and when building a btree index from scratch. I believe btree indexes are now completely WAL-legal for the first time. initdb forced due to index and WAL changes.
* Fix timestamptz_in so that parsing of 'now'::timestamptz gives rightTom Lane2003-02-20
| | | | | | | answer when SET TIMEZONE has been done since the start of the current transaction. Per bug report from Robert Haas. I plan some futher cleanup in HEAD, but this is a low-risk patch for the immediate issue in 7.3.
* Back out LOCKTAG changes by Rod Taylor, pending code review. Sorry.Bruce Momjian2003-02-19
|
* Fix for GUC client_encoding variable not being handledTatsuo Ishii2003-02-19
| | | | | | | | correctly. See following thread for more details. Subject: [HACKERS] client_encoding directive is ignored in postgresql.conf From: Tatsuo Ishii <t-ishii@sra.co.jp> Date: Wed, 29 Jan 2003 22:24:04 +0900 (JST)
* This patch makes the following changes to the documentation:Bruce Momjian2003-02-19
| | | | | | | | | | | | | - more work from the SGML police - some grammar improvements: rewriting a paragraph or two, replacing contractions where (IMHO) appropriate - fix missing utility commands in lock mode docs - improve CLUSTER, REINDEX, SET SESSION AUTHORIZATION ref pages Neil Conway
* - Modifies LOCKTAG to include a 'classId'. Relation receive a classId ofBruce Momjian2003-02-19
| | | | | | | | | | | | | | | | | RelOid_pg_class, and transaction locks XactLockTableId. RelId is renamed to objId. - LockObject() and UnlockObject() functions created, and their use sprinkled throughout the code to do descent locking for domains and types. They accept lock modes AccessShare and AccessExclusive, as we only really need a 'read' and 'write' lock at the moment. Most locking cases are held until the end of the transaction. This fixes the cases Tom mentioned earlier in regards to locking with Domains. If the patch is good, I'll work on cleaning up issues with other database objects that have this problem (most of them). Rod Taylor
* Allow PQcmdTuples to return row counts for MOVE and FETCH.Bruce Momjian2003-02-19
| | | | Neil Conway
* The following patches eliminate the overflows in the j2date() and date2j()Bruce Momjian2003-02-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | functions which limited the maximum date for a timestamp to AD 1465001. The new limit is AD 5874897. The files affected are: doc/src/sgml/datatype.sgml: Documentation change due to patch. Included is a notice about the reduced range when using an eight-byte integer for timestamps. src/backend/utils/adt/datetime.c: Replacement functions for j2date() and date2j() functions. src/include/utils/datetime.h: Corrected a bug with the limit on the earliest possible date, Nov 23,-4713 has a Julian day count of -1. The earliest possible date should be Nov 24, -4713 with a day count of 0. src/test/regress/expected/horology-no-DST-before-1970.out: src/test/regress/expected/horology-solaris-1947.out: src/test/regress/expected/horology.out: Copies of expected output for regression testing. Note: Only horology.out has been physically tested. I do not have access to a Solaris box and I don't know how to provoke the "pre-1970" test. src/test/regress/sql/horology.sql: Added some test cases to check extended range. John Cochran
* Update README.Bruce Momjian2003-02-18
|
* Async_NotifyHandler must save and restore ImmediateInterruptOK. FixesTom Lane2003-02-18
| | | | | | known problem with failure to respond to 'pg_ctl stop -m fast', and probable problems if SIGINT or SIGTERM arrives while processing a SIGUSR2 interrupt that arrived while waiting for a new client query.
* Rename 'holder' references to 'proclock' for PROCLOCK references, forBruce Momjian2003-02-18
| | | | consistency.
* Back off previous patch to skip projection step in scan plan nodes,Tom Lane2003-02-16
| | | | | | | in the case where the node immediately above the scan is a Hash, Sort, or Material node. In these cases it's better to do the projection so that we don't store unneeded columns in the hash/sort/materialize table. Per discussion a few days ago with Anagh Lal.
* COALESCE() and NULLIF() are now first-class expressions, not macrosTom Lane2003-02-16
| | | | | that turn into CASE expressions. They evaluate their arguments at most once. Patch by Kris Jurka, review and (very light) editorializing by me.
* Marginal tweaks to make sure that roundoff error won't cause us to makeTom Lane2003-02-15
| | | | a bad choice between sorted and hashed aggregation.
* Teach planner how to propagate pathkeys from sub-SELECTs in FROM up toTom Lane2003-02-15
| | | | | | | | | the outer query. (The implementation is a bit klugy, but it would take nontrivial restructuring to make it nicer, which this is probably not worth.) This avoids unnecessary sort steps in examples like SELECT foo,count(*) FROM (SELECT ... ORDER BY foo,bar) sub GROUP BY foo which means there is now a reasonable technique for controlling the order of inputs to custom aggregates, even in the grouping case.
* Fix SPI result logic for case where there are multiple statements of theTom Lane2003-02-14
| | | | same type in a rule. Per bug report from Pavel Hanak.
* Update FAQ's in head and 7.3.X.Bruce Momjian2003-02-14
|
* Remove bogus manipulation of SIGPIPE; the backend already runs withTom Lane2003-02-14
| | | | SIGPIPE disabled, and does not need to waste two syscalls per I/O on it.
* Parser was dropping foreign-key constraints on the floor if present inTom Lane2003-02-13
| | | | an ALTER TABLE ADD COLUMN command. Per bug #896.
* Repair rule permissions-checking bug reported by Tim Burgess 10-Feb-02:Tom Lane2003-02-13
| | | | | the table(s) modified by the original query would get checked for the type of write permission needed by a rule query.
* Arrange to give error when a SetOp member statement refers to a variableTom Lane2003-02-13
| | | | | | | | of the containing query (which really can only happen in a rule context). Per example from Brandon Craig Rhodes. Also, make the error message more specific for the similar case with sub-select in FROM. The revised coding should be easier to adapt to SQL99's LATERAL(), when we get around to supporting that.
* transformExpr() was missing some cases it ought to allow; per reportTom Lane2003-02-13
| | | | | | | from Greg Stark. Also, twiddle the FuncCall case to not scribble on the input structure, which was the proximate cause of the problem. Someday we ought to fix things so that transformExpr() isn't called on already-transformed trees ...
* Prevent timetz2tm() from scribbling on its input in HAVE_INT64_TIMESTAMP case.Tom Lane2003-02-13
|
* [ Revert patch ]Bruce Momjian2003-02-13
| | | | | | | | | | | | | | | | | > ================================================================= > User interface proposal for multi-row function targetlist entries > ================================================================= > 1. Only one targetlist entry may return a set. > 2. Each targetlist item (other than the set returning one) is > repeated for each item in the returned set. > Having gotten no objections (actually, no response at all), I can only assume no one had heartburn with this change. The attached patch covers the first of the two proposals, i.e. restricting the target list to only one set returning function. Joe Conway