aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access
Commit message (Collapse)AuthorAge
* Fix getDatumCopy(): don't use store_att_byval to copy into a DatumTom Lane2006-07-16
| | | | | | variable (this accounts for regression failures on PPC64, and in fact won't work on any big-endian machine). Get rid of hardwired knowledge about datum size rules; make it look just like datumCopy().
* Improve error message wording.Tom Lane2006-07-16
|
* Fix misguided removal of access/tuptoaster.h inclusion, per Kris Jurka.Tom Lane2006-07-14
| | | | | | I'm going to insist on reversion of this entire patch unless pgrminclude is upgraded to a less broken state, but in the meantime let's get contrib passing regression again.
* Remove 576 references of include files that were not needed.Bruce Momjian2006-07-14
|
* Allow include files to compile own their own.Bruce Momjian2006-07-13
| | | | | | | Strip unused include files out unused include files, and add needed includes to C files. The next step is to remove unused include files in C files.
* Tweak fillfactor code as per my recent proposal. Fix nbtsort.c so thatTom Lane2006-07-11
| | | | | | it can handle small fillfactors for ordinary-sized index entries without failing on large ones; fix nbtinsert.c to distinguish leaf and nonleaf pages; change the minimum fillfactor to 10% for all index types.
* Add support to GIN for =(anyarray,anyarray) operationTeodor Sigaev2006-07-11
|
* Alphabetically order reference to include files, "S"-"Z".Bruce Momjian2006-07-11
|
* Alphabetically order reference to include files, "N" - "S".Bruce Momjian2006-07-11
|
* Alphabetically order reference to include files, "G" - "M".Bruce Momjian2006-07-11
|
* GIN improvementsTeodor Sigaev2006-07-11
| | | | | | | | - Replace sorted array of entries in maintenance_work_mem to binary tree, this should improve create performance. - More precisely calculate allocated memory, eliminate leaks with user-defined extractValue() - Improve wordings in tsearch2
* Improve vacuum code to track minimum Xids per table instead of per database.Alvaro Herrera2006-07-10
| | | | | | | | | | | | | | | | | | | | | | | | | | To this end, add a couple of columns to pg_class, relminxid and relvacuumxid, based on which we calculate the pg_database columns after each vacuum. We now force all databases to be vacuumed, even template ones. A backend noticing too old a database (meaning pg_database.datminxid is in danger of falling behind Xid wraparound) will signal the postmaster, which in turn will start an autovacuum iteration to process the offending database. In principle this is only there to cope with frozen (non-connectable) databases without forcing users to set them to connectable, but it could force regular user database to go through a database-wide vacuum at any time. Maybe we should warn users about this somehow. Of course the real solution will be to use autovacuum all the time ;-) There are some additional improvements we could have in this area: for example the vacuum code could be smarter about not updating pg_database for each table when called by autovacuum, and do it only once the whole autovacuum iteration is done. I updated the system catalogs documentation, but I didn't modify the maintenance section. Also having some regression tests for this would be nice but it's not really a very straightforward thing to do. Catalog version bumped due to system catalog changes.
* Code review for FILLFACTOR patch. Change WITH grammar as per earlierTom Lane2006-07-03
| | | | | | | | | | | | | | | | discussion (including making def_arg allow reserved words), add missed opt_definition for UNIQUE case. Put the reloptions support code in a less random place (I chose to make a new file access/common/reloptions.c). Eliminate header inclusion creep. Make the index options functions safely user-callable (seems like client apps might like to be able to test validity of options before trying to make an index). Reduce overhead for normal case with no options by allowing rd_options to be NULL. Fix some unmaintainably klugy code, including getting rid of Natts_pg_class_fixed at long last. Some stylistic cleanup too, and pay attention to keeping comments in sync with code. Documentation still needs work, though I did fix the omissions in catalogs.sgml and indexam.sgml.
* Add FILLFACTOR to CREATE INDEX.Bruce Momjian2006-07-02
| | | | ITAGAKI Takahiro
* Forget to add new file :((Teodor Sigaev2006-06-28
|
* ChangesTeodor Sigaev2006-06-28
| | | | | | | | | | | | | | | | | | | | * new split algorithm (as proposed in http://archives.postgresql.org/pgsql-hackers/2006-06/msg00254.php) * possible call pickSplit() for second and below columns * add spl_(l|r)datum_exists to GIST_SPLITVEC - pickSplit should check its values to use already defined spl_(l|r)datum for splitting. pickSplit should set spl_(l|r)datum_exists to 'false' (if they was 'true') to signal to caller about using spl_(l|r)datum. * support for old pickSplit(): not very optimal but correct split * remove 'bytes' field from GISTENTRY: in any case size of value is defined by it's type. * split GIST_SPLITVEC to two structures: one for using in picksplit and second - for internal use. * some code refactoring * support of subsplit to rtree opclasses TODO: add support of subsplit to contrib modules
* Put #ifdef NOT_USED around posix_fadvise call. We may want to resurrectTom Lane2006-06-27
| | | | | | this someday, but right now it seems that posix_fadvise is immature to the point of being broken on many platforms ... and we don't have any benchmark evidence proving it's worth spending time on.
* Extend the MinimalTuple concept to tuplesort.c, thereby reducing theTom Lane2006-06-27
| | | | | | | | | per-tuple space overhead for sorts in memory. I chose to replace the previous patch that tried to write out the bare minimum amount of data when sorting on disk; instead, just dump the MinimalTuples as-is. This wastes 3 to 10 bytes per tuple depending on architecture and null-bitmap length, but the simplification in the writetup/readtup routines seems worth it.
* Create infrastructure for 'MinimalTuple' representation of in-memoryTom Lane2006-06-27
| | | | | | | | tuples with less header overhead than a regular HeapTuple, per my recent proposal. Teach TupleTableSlot code how to deal with these. As proof of concept, change tuplestore.c to store MinimalTuples instead of HeapTuples. Future patches will expand the concept to other places where it is useful.
* pg_stop_backup was calling XLogArchiveNotify() twice for the newly createdTom Lane2006-06-22
| | | | | backup history file. Bug introduced by the 8.1 change to make pg_stop_backup delete older history files. Per report from Masao Fujii.
* Remove redundant gettimeofday() calls to the extent practical withoutTom Lane2006-06-20
| | | | | | | | | | | changing semantics too much. statement_timestamp is now set immediately upon receipt of a client command message, and the various places that used to do their own gettimeofday() calls to mark command startup are referenced to that instead. I have also made stats_command_string use that same value for pg_stat_activity.query_start for both the command itself and its eventual replacement by <IDLE> or <idle in transaction>. There was some debate about that, but no argument that seemed convincing enough to justify an extra gettimeofday() call.
* Don't try to call posix_fadvise() unless <fcntl.h> supplies a declarationTom Lane2006-06-18
| | | | | | | | for it. Hopefully will fix core dump evidenced by some buildfarm members since fadvise patch went in. The actual definition of the function is not ABI-compatible with compiler's default assumption in the absence of any declaration, so it's clearly unsafe to try to call it without seeing a declaration.
* Fix problems with cached tuple descriptors disappearing while still in useTom Lane2006-06-16
| | | | | | | | | | by creating a reference-count mechanism, similar to what we did a long time ago for catcache entries. The back branches have an ugly solution involving lots of extra copies, but this way is more efficient. Reference counting is only applied to tupdescs that are actually in caches --- there seems no need to use it for tupdescs that are generated in the executor, since they'll go away during plan shutdown by virtue of being in the per-query memory context. Neil Conway and Tom Lane
* Test for POSIX_FADV_DONTNEED to use posix_fadvise().Bruce Momjian2006-06-16
|
* Use posix_fadvise() to avoid kernel caching of WAL contents on WAL fileBruce Momjian2006-06-15
| | | | | | close. ITAGAKI Takahiro
* Som improve page split in multicolumn GiST index.Teodor Sigaev2006-05-29
| | | | | | If user picksplit on n-th column generate equals left and right unions then it calls picksplit on n+1-th column.
* Correct cheking in findParents(). iTeodor Sigaev2006-05-29
| | | | From Andreas Seltenreich <andreas+pg@gate450.dyndns.org>
* Remove traces of otherwise unused RELKIND_SPECIAL symbol. Leave the psql bitsAlvaro Herrera2006-05-28
| | | | | | in place though, so that it plays nicely with older servers. Per discussion.
* Fix findParents() in case of multiple levels to find.Teodor Sigaev2006-05-26
| | | | By Andreas Seltenreich <andreas+pg@gate450.dyndns.org>
* * Add support NULL to GiST.Teodor Sigaev2006-05-24
| | | | | | | | * some refactoring and simplify code int gistutil.c and gist.c * now in some cases it can be called used-defined picksplit method for non-first column in index, but here is a place to do more. * small fix of docs related to support NULL.
* Call MarkBufferDirty() before XLogInsert() during completion of insertTeodor Sigaev2006-05-19
|
* Simplify gistSplit() and some refactoring related code.Teodor Sigaev2006-05-19
|
* Rework completion of incomplete inserts. Now it writesTeodor Sigaev2006-05-19
| | | | WAL log during inserts.
* Reduce size of critial section during vacuum full, criticalTeodor Sigaev2006-05-17
| | | | | | | | sections now isn't nested. All user-defined functions now is called outside critsections. Small improvements in WAL protocol. TODO: improve XLOG replay
* Clean up code associated with updating pg_class statistics columnsTom Lane2006-05-10
| | | | | | | | | | | (relpages/reltuples). To do this, create formal support in heapam.c for "overwrite" tuple updates (including xlog replay capability) and use that instead of the ad-hoc overwrites we'd been using in VACUUM and CREATE INDEX. Take the responsibility for updating stats during CREATE INDEX out of the individual index AMs, and do it where it belongs, in catalog/index.c. Aside from being more modular, this avoids having to update the same tuple twice in some paths through CREATE INDEX. It's probably not measurably faster, but for sure it's a lot cleaner than before.
* Reduce size of critical section and remove call of user-defined functions inTeodor Sigaev2006-05-10
| | | | | | insertion and deletion, modify gistSplit() to do not use buffers. TODO: gistvacuumcleanup and XLOG
* Rewrite btree vacuuming to fold the former bulkdelete and cleanup operationsTom Lane2006-05-08
| | | | | | | | | | | | | into a single mostly-physical-order scan of the index. This requires some ticklish interlocking considerations, but should create no material performance impact on normal index operations (at least given the already-committed changes to make scans work a page at a time). VACUUM itself should get significantly faster in any index that's degenerated to a very nonlinear page order. Also, we save one pass over the index entirely, except in the case where there were no deletions to do and so only one pass happened anyway. Original patch by Heikki Linnakangas, rework by Tom Lane.
* Rewrite btree index scans to work a page at a time in all cases (bothTom Lane2006-05-07
| | | | | | | | | | | | | | | | btgettuple and btgetmulti). This eliminates the problem of "re-finding" the exact stopping point, since the stopping point is effectively always a page boundary, and index items are never moved across pre-existing page boundaries. A small penalty is that the keys_are_unique optimization is effectively disabled (and, therefore, is removed in this patch), causing us to apply _bt_checkkeys() to at least one more tuple than necessary when looking up a unique key. However, the advantages for non-unique cases seem great enough to accept this tradeoff. Aside from simplifying and (sometimes) speeding up the indexscan code, this will allow us to reimplement btbulkdelete as a largely sequential scan instead of index-order traversal, thereby significantly reducing the cost of VACUUM. Those changes will come in a separate patch. Original patch by Heikki Linnakangas, rework by Tom Lane.
* Fix typo noticed by Alvaro HerreraTeodor Sigaev2006-05-03
|
* Clean up API for ambulkdelete/amvacuumcleanup as per today's discussion.Tom Lane2006-05-02
| | | | | | This formulation requires every AM to provide amvacuumcleanup, unlike before, but it's surely a whole lot cleaner. Also, add an 'amstorage' column to pg_am so that we can get rid of hardwired knowledge in DefineOpClass().
* Suppress some gcc warnings.Tom Lane2006-05-02
|
* GIN: Generalized Inverted iNdex.Teodor Sigaev2006-05-02
| | | | text[], int4[], Tsearch2 support for GIN.
* Arrange to cache btree metapage data in the relcache entry for the index,Tom Lane2006-04-25
| | | | | | | thereby saving a visit to the metapage in most index searches/updates. This wouldn't actually save any I/O (since in the old regime the metapage generally stayed in cache anyway), but it does provide a useful decrease in bufmgr traffic in high-contention scenarios. Per my recent proposal.
* Add statement_timestamp(), clock_timestamp(), andBruce Momjian2006-04-25
| | | | | | | | | transaction_timestamp() (just like now()). Also update statement_timeout() to mention it is statement arrival time that is measured. Catalog version updated.
* Ensure that we validate the page header of the first page of a WAL fileTom Lane2006-04-20
| | | | | | | | | whenever we start to read within that file. The first page carries extra identification information that really ought to be checked, but as the code stood, this was only checked when we switched sequentially into a new WAL file, or if by chance the starting checkpoint record was within the first page. This patch ensures that we will detect bogus 'long header' information before we start replaying the WAL sequence.
* Fix the torn-page hazard for PITR base backups by forcing full page writesTom Lane2006-04-17
| | | | | | | | | to occur between pg_start_backup() and pg_stop_backup(), even if the GUC setting full_page_writes is OFF. Per discussion, doing this in combination with the already-existing checkpoint during pg_start_backup() should ensure safety against partial page updates being included in the backup. We do not have to force full page writes to occur during normal PITR operation, as I had first feared.
* Make the world safe for full_page_writes. Allow XLOG records that try toTom Lane2006-04-14
| | | | | | | | | update no-longer-existing pages to fall through as no-ops, but make a note of each page number referenced by such records. If we don't see a later XLOG entry dropping the table or truncating away the page, complain at the end of XLOG replay. Since this fixes the known failure mode for full_page_writes = off, revert my previous band-aid patch that disabled that GUC variable.
* Fix an ancient oversight in btree xlog replay. When trying to determine if anTom Lane2006-04-13
| | | | | | | | | | | | | | | | | upper-level insertion completes a previously-seen split, we cannot simply grab the downlink block number out of the buffer, because the buffer could contain a later state of the page --- or perhaps the page doesn't even exist at all any more, due to relation truncation. These possibilities have been masked up to now because the use of full_page_writes effectively ensured that no xlog replay routine ever actually saw a page state newer than its own change. Since we're deprecating full_page_writes in 8.1.*, there's no need to fix this in existing release branches, but we need a fix in HEAD if we want to have any hope of re-allowing full_page_writes. Accordingly, adjust the contents of btree WAL records so that we can always get the downlink block number from the WAL record rather than having to depend on buffer contents. Per report from Kevin Grittner and Peter Brant. Improve a few comments in related code while at it.
* Fix a bunch of problems with domains by making them use special input functionsTom Lane2006-04-05
| | | | | | | | | | | that apply the necessary domain constraint checks immediately. This fixes cases where domain constraints went unchecked for statement parameters, PL function local variables and results, etc. We can also eliminate existing special cases for domains in places that had gotten it right, eg COPY. Also, allow domains over domains (base of a domain is another domain type). This almost worked before, but was disallowed because the original patch hadn't gotten it quite right.
* Add a field to the first page of each WAL file to indicate theTom Lane2006-04-05
| | | | | | XLOG_BLCKSZ. This ought to help in preventing configuration mismatch problems if anyone tries to ship PITR files between servers compiled with different XLOG_BLCKSZ settings. Simon Riggs