aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
...
* Release proclock immediately in RemoveFromWaitQueue() if it representsTom Lane2005-03-01
| | | | | | no held locks. This maintains the invariant that proclocks are present only for procs that are holding or awaiting a lock; when this is not true, LockRelease will fail. Per report from Stephen Clouse.
* Allow Trace_lock_oidmin to be set to zero; this is a reasonableTom Lane2005-03-01
| | | | representation of not wanting tracing to be limited by object OID.
* Adjust OR indexscan logic to not generate redundant condition-free ORTom Lane2005-03-01
| | | | | | indexscans involving partial indexes. These would always be dominated by a simple indexscan on such an index, so there's no point in considering them. Fixes overoptimism in a patch I applied last October.
* Revert the logic for expanding AND/OR conditions in pred_test() to whatTom Lane2005-03-01
| | | | | | it was in 7.4, and add some comments explaining why it has to be this way. I broke it for OR'd index predicates in a fit of code cleanup last summer. Per example from Sergey Koshcheyev.
* Implement max() and min() aggregates for array types. Patch from KojuNeil Conway2005-02-28
| | | | | Iijima, reviewed by Neil Conway. Catalog version number bumped, regression tests updated.
* Add explicit casts between int4 and boolean. Patch from Sean Chittenden,Neil Conway2005-02-27
| | | | editorializing by Neil Conway. Catalog version bumped.
* Cause Win32 to output to the event log rather than stderr by default.Bruce Momjian2005-02-27
| | | | Magnus Hagander
* Finish up the flat-files project: get rid of GetRawDatabaseInfo() hackTom Lane2005-02-26
| | | | | | | | | | | in favor of looking at the flat file copy of pg_database during backend startup. This should finally eliminate the various corner cases in which backend startup fails unexpectedly because it isn't able to distinguish live and dead tuples in pg_database. Simplify locking on pg_database to be similar to the rules used with pg_shadow and pg_group, and eliminate FlushRelationBuffers operations that were used only to reduce the odds of failure of GetRawDatabaseInfo. initdb forced due to addition of a trigger to pg_database.
* Minor code cleanup: remove a variable that was assigned to but neverNeil Conway2005-02-23
| | | | | | | subsequently referenced. Found by: Coverity Fixed by: Sean Chittenden
* This patch optimizes the md5_text() function (which is used toNeil Conway2005-02-23
| | | | | | | | | | | | | | | | | | | | | | | | implement the md5() SQL-level function). The old code did the following: 1. de-toast the datum 2. convert it to a cstring via textout() 3. get the length of the cstring via strlen() Since we are treating the datum context as a blob of binary data, the latter two steps are unnecessary. Once the data has been detoasted, we can just use it as-is, and derive its length from the varlena metadata. This patch improves some run-of-the-mill md5() computations by just under 10% in my limited tests, and passes the regression tests. I also noticed that md5_text() wasn't checking the return value of md5_hash(); encountering OOM at precisely the right moment could result in returning a random md5 hash. This patch corrects that. A better fix would be to make md5_hash() only return on success (and/or allocate via palloc()), but since it's used in the frontend as well I don't see an easy way to do that.
* Use _() macro consistently rather than gettext(). Add translationBruce Momjian2005-02-22
| | | | macros around strings that were missing them.
* Use SnapshotNow instead of SnapshotSelf for reading the catalogsTom Lane2005-02-20
| | | | | | | | during flat-file writing. The only difference is that SnapshotSelf would consider tuples of the 'current command' within the current transaction as valid, where SnapshotNow wouldn't. We can eliminate the need for this with one extra CommandCounterIncrement call before we start reading the catalogs.
* Remove some no-longer-needed kluges for bootstrapping, in particularTom Lane2005-02-20
| | | | | | | | the AMI_OVERRIDE flag. The fact that TransactionLogFetch treats BootstrapTransactionId as always committed is sufficient to make bootstrap work, and getting rid of extra tests in heavily used code paths seems like a win. The files produced by initdb are demonstrably the same after this change.
* Rename macro to MAKE_EXPIRED_TUPLES_VISIBLE.Bruce Momjian2005-02-20
|
* Fix MAKE_ALL_TUPLES_VISIBLE define.Bruce Momjian2005-02-20
|
* Move define MAKE_ALL_TUPLES_VISIBLE to a more logical place.Bruce Momjian2005-02-20
|
* I have added a define, MAKE_ALL_TUPLES_VISIBLE, to help people recoverBruce Momjian2005-02-20
| | | | deleted tuples. Of course it is only to be used for disaster recovery.
* Flat file cleanup phase 2: make it work for pg_group. The flat groupTom Lane2005-02-20
| | | | | | | | | | | file now identifies group members by usesysid not name; this avoids needing to depend on SearchSysCache which we can't use during startup. (The old representation was entirely broken anyway, since we did not regenerate the file following RENAME USER.) It's only a 95% solution because if the group membership list is big enough to be toasted out of line, we cannot read it during startup. I think this will do for the moment, until we have time to implement the planned pg_role replacement for pg_group.
* Add code to prevent transaction ID wraparound by enforcing a safe limitTom Lane2005-02-20
| | | | | | | | | | | | | | in GetNewTransactionId(). Since the limit value has to be computed before we run any real transactions, this requires adding code to database startup to scan pg_database and determine the oldest datfrozenxid. This can conveniently be combined with the first stage of an attack on the problem that the 'flat file' copies of pg_shadow and pg_group are not properly updated during WAL recovery. The code I've added to startup resides in a new file src/backend/utils/init/flatfiles.c, and it is responsible for rewriting the flat files as well as initializing the XID wraparound limit value. This will eventually allow us to get rid of GetRawDatabaseInfo too, but we'll need an initdb so we can add a trigger to pg_database.
* New arrangement to always let the bgwriter do checkpoints brokeTom Lane2005-02-19
| | | | | CHECKPOINT and some other commands in the context of a standalone backend. Allow a standalone backend to do its own checkpoints.
* Ensure that the resolved datatype of any unknown Param is propagatedTom Lane2005-02-19
| | | | | into the sub-SELECT targetlist when it appears in the context INSERT INTO foo SELECT $1 ... Per report from Abhijit Menon-Sen.
* Convert MemoryContextSwitchTo() into an inline function when using GCC.Tom Lane2005-02-18
|
* Update comment on VACUUM FULL.Bruce Momjian2005-02-15
| | | | Manfred Koizar
* Improve documentation of signal usage for HAVE_SIGPROCMASK andBruce Momjian2005-02-14
| | | | non-HAVE_SIGPROCMASK cases in pqinitmask().
* Improve documentation of signal usage for HAVE_SIGPROCMASK andBruce Momjian2005-02-14
| | | | non-HAVE_SIGPROCMASK cases in pqinitmask().
* ALTER LANGUAGE RENAME has never worked. Per Sergey Yatskevich.Tom Lane2005-02-14
|
* Move plpgsql DEBUG from DEBUG2 to DEBUG1 because it is a user-requestedBruce Momjian2005-02-12
| | | | | | DEBUG. Fix a few places where DEBUG1 crept in that should have been DEBUG2.
* Adjust input routines for float4, float8 and oid to reject the empty stringNeil Conway2005-02-11
| | | | | as valid input (it was previously treated as 0). This input was deprecated in 8.0 (and a warning was emitted). Regression tests updated.
* Fix ANALYZE to accumulate some minimal statistics for an all-null column.Tom Lane2005-02-11
| | | | Per gripes from Mike Mascari and Bernd Heller.
* Fix SPI cursor support to allow scanning the results of utility commandsTom Lane2005-02-10
| | | | | | that return tuples (such as EXPLAIN). Per gripe from Michael Fuhr. Side effect: fix an old bug that unintentionally disabled backward scans for all SPI-created cursors.
* ALTER TABLE ADD COLUMN exhibits a significant memory leak when adding aNeil Conway2005-02-09
| | | | | | | | | | | | | | | | | | | | column with a default expression. In that situation, we need to rewrite the heap relation. To evaluate the new default expression, we use ExecEvalExpr(); however, this can allocate memory in the current memory context, and ATRewriteTable() does not switch out of the active portal's heap memory context. The end result is a rather large memory leak (on the order of gigabytes for a reasonably sized table). This patch changes ATRewriteTable() to switch to the per-tuple memory context before beginning the per-tuple loop. It also removes an explicit heap_freetuple() in the loop, since that is no longer needed. In an unrelated change, I noticed the code was scanning through the attributes of the new tuple descriptor for each tuple of the old table. I changed this to use precomputation, which should slightly speed up the loop. Thanks to steve@deefs.net for reporting the leak.
* Repair CLUSTER failure after ALTER TABLE SET WITHOUT OIDS. Turns outTom Lane2005-02-06
| | | | | | | there are corner cases involving dropping toasted columns in which the previous coding would fail, too: the new version of the table might not have any TOAST table, but we'd still propagate possibly-wide values of dropped columns forward.
* Fix bit-rot in ipc_test.c; it didn't include some stuff that pg_shmem.cTom Lane2005-02-05
| | | | now depends on.
* Marginal hack to merge adjacent ReleaseBuffer/ReadBuffer calls intoTom Lane2005-02-05
| | | | | ReleaseAndReadBuffer during GIST index searches. We already did this in btree and rtree, might as well do it here too.
* Refactor some duplicated code in lock.c: create UnGrantLock(), move codeNeil Conway2005-02-04
| | | | from LockRelease() and LockReleaseAll() into it. From Heikki Linnakangas.
* Ensure that all details of the ARC algorithm are hidden within freelist.c.Tom Lane2005-02-03
| | | | | This refactoring does not change any algorithms or data structures, just remove visibility of the ARC datastructures from other source files.
* Improve performance of fmgr.c calling routines for cases with more thanTom Lane2005-02-02
| | | | two arguments. Per suggestions from A. Ogawa.
* Adjust constant-folding of CASE expressions so that the simple comparisonTom Lane2005-02-02
| | | | | | | | form of CASE (eg, CASE 0 WHEN 1 THEN ...) can be constant-folded as it was in 7.4. Also, avoid constant-folding result expressions that are certainly unreachable --- the former coding was a bit cavalier about this and could generate unexpected results for all-constant CASE expressions. Add regression test cases. Per report from Vlad Marchenko.
* Add support for temporary views, including documentation and regressionNeil Conway2005-02-02
| | | | | | | | tests. Contributed by Koju Iijima, review from Neil Conway, Gavin Sherry and Tom Lane. Also, fix error in description of WITH CHECK OPTION clause in the CREATE VIEW reference page: it should be "CASCADED", not "CASCADE".
* Fix a bug induced by the list-rewrite that resulted in incrementing theNeil Conway2005-02-01
| | | | command counter more than necessary. Per report from Michael Fuhr.
* Adjust estimate_num_groups() to not clamp per-relation group countTom Lane2005-02-01
| | | | | | | estimate to less than the number of values estimated for any one grouping Var, as suggested by Manfred. This is intuitively right, and what's more it puts the plan choices in the subselect regression test back the way they were before ...
* Sync inet formatting code with recent BIND releases. In particular,Tom Lane2005-02-01
| | | | | fix bug with inconsistent selection of default mask length for "class D" addresses. Per report from Steve Atkins.
* When dealing with multiple grouping columns coming from the same table,Tom Lane2005-01-28
| | | | | | | | | clamp the estimated number of groups to table row count over 10, instead of table row count; this reflects a heuristic that people probably won't group over a near-unique set of columns, and the knowledge that we don't currently have any way to estimate the correlation of the columns better than guessing. This change creates a trivial plan change in one of the regression tests.
* Improve planner's estimation of the space needed for HashAgg plans:Tom Lane2005-01-28
| | | | | | look at the actual aggregate transition datatypes and the actual overhead needed by nodeAgg.c, instead of using pessimistic round numbers. Per a discussion with Michael Tiemann.
* Check that aggregate creator has the right to execute the transitionTom Lane2005-01-27
| | | | functions of the aggregate, at both aggregate creation and execution times.
* Small patch to move get_grosysid() from catalog/aclchk.c toNeil Conway2005-01-27
| | | | | | utils/cache/lsyscache.c where it can be used by other things. Also cleans up both get_usesysid() and get_grosysid() a bit. From Stephen Frost.
* Change heap_modifytuple() to require a TupleDesc rather than aNeil Conway2005-01-27
| | | | | Relation. Patch from Alvaro Herrera, minor editorializing by Neil Conway.
* Provide a more descriptive error message when the return type of an SRFNeil Conway2005-01-27
| | | | | does not match what the query expected. From Brendan Jurd, minor editorializing by Neil Conway.
* Generalize TRUNCATE to support truncating multiple tables in oneTom Lane2005-01-27
| | | | | | | | command. This is useful because we can allow truncation of tables referenced by foreign keys, so long as the referencing table is truncated in the same command. Alvaro Herrera
* Close all cursors created during a failed subtransaction. This is neededTom Lane2005-01-26
| | | | | | to avoid problems when a cursor depends on objects created or changed in the same subtransaction. We'd like to do better someday, but this seems the only workable answer for 8.0.1.