aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access
Commit message (Collapse)AuthorAge
* Bug: backend crashes in btbeginscan()->btrescan()->_bt_orderkeys()Vadim B. Mikheev1997-05-05
| | | | | | | | | when btree used in innerscan with run-time key which value passed by pointer. Fix: keys ordering stuff moved to _bt_first(). Pointed by Thomas Lockhart.
* Fix old bug in _hash_first() for scan without keys:Vadim B. Mikheev1997-04-30
| | | | if 1st bucket chain is empty then need to continue scan in the rest buckets.
* _bt_endpoint fixed: set currentItemData to Invalid if no result.Vadim B. Mikheev1997-04-24
|
* Major patch from Thomas Lockhart <Thomas.G.Lockhart@jpl.nasa.gov>Marc G. Fournier1997-04-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OK, here are a passel of patches for the geometric data types. These add a "circle" data type, new operators and functions for the existing data types, and change the default formats for some of the existing types to make them consistant with each other. Current formatting conventions (e.g. compatible with v6.0 to allow dump/reload) are supported, but the new conventions should be an improvement and we can eventually drop the old conventions entirely. For example, there are two kinds of paths (connected line segments), open and closed, and the old format was '(1,2,1,2,3,4)' for a closed path with two points (1,2) and (3,4) '(0,2,1,2,3,4)' for an open path with two points (1,2) and (3,4) Pretty arcane, huh? The new format for paths is '((1,2),(3,4))' for a closed path with two points (1,2) and (3,4) '[(1,2),(3,4)]' for an open path with two points (1,2) and (3,4) For polygons, the old convention is '(0,4,2,0,4,3)' for a triangle with points at (0,0),(4,4), and (2,3) and the new convention is '((0,0),(4,4),(2,3))' for a triangle with points at (0,0),(4,4), and (2,3) Other data types which are also represented as lists of points (e.g. boxes, line segments, and polygons) have similar representations (they surround each point with parens). For v6.1, any format which can be interpreted as the old style format is decoded as such; we can remove that backwards compatibility but ugly convention for v7.0. This will allow dump/reloads from v6.0. These include some updates to the regression test files to change the test for creating a data type from "circle" to "widget" to keep the test from trashing the new builtin circle type.
* #ifdef BTREE_BUILD_STATS enables to get executor stats for btreeVadim B. Mikheev1997-04-18
| | | | building.
* Fix bttextcmp() to use unsigned char*.Vadim B. Mikheev1997-04-18
| | | | #ifdef USE_LOCALE added.
* 1. BTREE_VERSION_1: using bti_itup->t_tid as unique identifier for a givenVadim B. Mikheev1997-04-16
| | | | | | | | | | | | index tuple (logical position within A LEVEL). bti_oid & bti_dummy taken off from BTItemData. 2. Fix for multi-column indices (nbtsearch.c): _bt_binsrch() - for searches on internal pages having keysize < number of attrs we point at the last item < the scankey, not at the first item = the scankey; _bt_moveright() - if keysize < number of attrs we compare scankey with _last_ item on current page to decide should we move right or not.
* Fix btabstimecmp ().Vadim B. Mikheev1997-04-07
|
* CloseSequences () at xact commit/abort.Vadim B. Mikheev1997-04-02
|
* From: Dan McGuirk <mcguirk@indirect.com>Marc G. Fournier1997-03-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reply-To: hackers@hub.org, Dan McGuirk <mcguirk@indirect.com> To: hackers@hub.org Subject: [HACKERS] tmin writeback optimization I was doing some profiling of the backend, and noticed that during a certain benchmark I was running somewhere between 30% and 75% of the backend's CPU time was being spent in calls to TransactionIdDidCommit() from HeapTupleSatisfiesNow() or HeapTupleSatisfiesItself() to determine that changed rows' transactions had in fact been committed even though the rows' tmin values had not yet been set. When a query looks at a given row, it needs to figure out whether the transaction that changed the row has been committed and hence it should pay attention to the row, or whether on the other hand the transaction is still in progress or has been aborted and hence the row should be ignored. If a tmin value is set, it is known definitively that the row's transaction has been committed. However, if tmin is not set, the transaction referred to in xmin must be looked up in pg_log, and this is what the backend was spending a lot of time doing during my benchmark. So, implementing a method suggested by Vadim, I created the following patch that, the first time a query finds a committed row whose tmin value is not set, sets it, and marks the buffer where the row is stored as dirty. (It works for tmax, too.) This doesn't result in the boost in real time performance I was hoping for, however it does decrease backend CPU usage by up to two-thirds in certain situations, so it could be rather beneficial in high-concurrency settings.
* Someone forgot about 'case sizeof(int32)' forVadim B. Mikheev1997-03-26
| | | | tupleDesc->attrs[i]->attlen in fastgetiattr.
* Free memory allocated by command in the BlankPortal' HeapMemory contextVadim B. Mikheev1997-03-25
| | | | (#ifdef-ed).
* + NULLs handlingVadim B. Mikheev1997-03-24
| | | | | | | | | | | Actually required by multi-column indices support. We still don't use btree for 'A is (not) null', but now btree keep items with NULL attrs using single rule for placing/finding items on pages: NULLs greater NOT_NULLs and NULL = NULL. + Bulkload code (nbtsort.c) support for multi-column indices building and NULLs. + Fix for btendscan()->pfree(scanopaque) from Chris Dunlop.
* Patches for Vadim's multikey indexing...Marc G. Fournier1997-03-18
|
* Date/Time updates from Thomas...Marc G. Fournier1997-03-14
|
* From: Dan McGuirk <mcguirk@indirect.com>Marc G. Fournier1997-03-12
| | | | | | | | | | Subject: [HACKERS] linux/alpha patches These patches lay the groundwork for a Linux/Alpha port. The port doesn't actually work unless you tweak the linker to put all the pointers in the first 32 bits of the address space, but it's at least a start. It implements the test-and-set instruction in Alpha assembly, and also fixes a lot of pointer-to-integer conversions, which is probably good anyway.
* From: Dan McGuirk <mcguirk@indirect.com>Marc G. Fournier1997-03-12
| | | | | | | | | Subject: [HACKERS] abort failed transaction patch This patch allows you to end a transaction that has failed on an error using the 'ABORT' statement without generating another error message. (By default you get an error unless you use 'END' to terminate the transaction, which has already been aborted anyway.)
* Change "WARN" message generated if a unique index is attempted on a table/keyMarc G. Fournier1997-02-25
| | | | containing non-unique data
* Added: UNIQUE feature to bulkload code.Vadim B. Mikheev1997-02-22
|
* Update btree patches that were missed.Bruce Momjian1997-02-18
|
* Add prototypes and remove unused variables from btree Fastbuild patch.Bruce Momjian1997-02-14
|
* What looks like some *major* improvements to btree indexing...Marc G. Fournier1997-02-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patches from: aoki@CS.Berkeley.EDU (Paul M. Aoki) i gave jolly my btree bulkload code a long, long time ago but never gave him a bunch of my bugfixes. here's a diff against the 6.0 baseline. for some reason, this code has slowed down somewhat relative to the insertion-build code on very small tables. don't know why -- it used to be within about 10%. anyway, here are some (highly unscientific!) timings on a dec 3000/300 for synthetic tables with 10k, 100k and 1000k tuples (basically, 1mb, 10mb and 100mb heaps). 'c' means clustered (pre-sorted) inputs and 'u' means unclustered (randomly ordered) inputs. the 10k table basically fits in the buffer pool, but the 100k and 1000k tables don't. as you can see, insertion build is fine if you've sorted your heaps on your index key or if your heap fits in core, but is absolutely horrible on unordered data (yes, that's 7.5 hours to index 100mb of data...) because of the zillions of random i/os. if it doesn't work for you for whatever reason, you can always turn it back off by flipping the FastBuild flag in nbtree.c. i don't have time to maintain it. good luck! baseline code: time psql -c 'create index c10 on k10 using btree (c int4_ops)' bttest real 8.6 time psql -c 'create index u10 on k10 using btree (b int4_ops)' bttest real 9.1 time psql -c 'create index c100 on k100 using btree (c int4_ops)' bttest real 59.2 time psql -c 'create index u100 on k100 using btree (b int4_ops)' bttest real 652.4 time psql -c 'create index c1000 on k1000 using btree (c int4_ops)' bttest real 636.1 time psql -c 'create index u1000 on k1000 using btree (b int4_ops)' bttest real 26772.9 bulkloading code: time psql -c 'create index c10 on k10 using btree (c int4_ops)' bttest real 11.3 time psql -c 'create index u10 on k10 using btree (b int4_ops)' bttest real 10.4 time psql -c 'create index c100 on k100 using btree (c int4_ops)' bttest real 59.5 time psql -c 'create index u100 on k100 using btree (b int4_ops)' bttest real 63.5 time psql -c 'create index c1000 on k1000 using btree (c int4_ops)' bttest real 636.9 time psql -c 'create index u1000 on k1000 using btree (b int4_ops)' bttest real 701.0
* would you mind committing the following changes for me? (the firstBruce Momjian1997-01-25
| | | | | bug causes compilation to fail on alpha, the second causes a compiler in this environment
* Removed unlinked patch that is not neede now that Vadim has properly fixed it.Bruce Momjian1997-01-23
|
* VariableRelationPutNextXid () now flushes variable relationVadim B. Mikheev1997-01-16
| | | | after writing next free XID.
* include sem.h added, include string.h neede, from Erik Bertelsen for UltrixBruce Momjian1997-01-10
|
* Fixed (I hope) unique btree index implementation.Vadim B. Mikheev1997-01-10
|
* index_insert has now HeapRelation as last param (for unique indexVadim B. Mikheev1997-01-10
| | | | implementation).
* index_insert has now HeapRelation as last param (forVadim B. Mikheev1997-01-10
| | | | unique index implementation).
* Releasing empty root page in _bt_endpoint () to avoidVadim B. Mikheev1997-01-05
| | | | buffer leak.
* Fix for SELECT INTO ... GROUP/ORDER BY where table already exists unlink error.Bruce Momjian1997-01-01
|
* Removal of CppConcat from indexam.c.Bruce Momjian1996-12-26
| | | | | | | | | | As an example I sent a bug-report on 26 Nov to tell that the fix included below is necessary to compile pg95-current on Ultrix with Digital's standard C compiler c89. In fact I think that this fix is needed for any C compiler sticking very close the standard, see my discussion in the original bug report. Erik Bertelsen
* Make compile on AIX, Alpha OSF. Thanks Darren King, Igor Notanzon.Bryan Henderson1996-12-15
|
* AvoidingVadim B. Mikheev1996-12-14
| | | | | | | | cc1: warnings being treated as errors transsup.c: In function `TransBlockGetLastTransactionIdStatus': transsup.c:122: warning: unsigned value >= 0 is always 1 gmake[3]: *** [transsup.o] Error 1 ...
* Add comments describing interface to heap_getattr().Bryan Henderson1996-12-09
|
* _bt_updateitem is returned in code, but works only if sizes of keysVadim B. Mikheev1996-12-06
| | | | are equal.
* 1. _bt_compare fixed to work properly with new code in _bt_insertonpgVadim B. Mikheev1996-12-06
| | | | | | | | (old _bt_compare always returned >= 0 while comparing with P_HIKEY on root page - it breaks root page when _bt_insertonpg tries insert new minimal key into root page). 2. Fixed bug concerns "empty" pages: non-rightmost pages with only P_HIKEY present on it. Such pages appear after vacuum.
* Change portname "sparc" to "sunos4" and change some portname dependencies toBryan Henderson1996-12-04
| | | | feature dependencies. Thanks Kurt J. Lidl.
* TransactionIdIsInProgress is commented outVadim B. Mikheev1996-11-27
|
* Setting MyProc->xid to current transaction' id in StartTransactionVadim B. Mikheev1996-11-27
| | | | | and to InvalidTransactionId in CommitTransaction & AbortTransaction (it's for new TransactionIdIsInProgress func).
* TransactionIdIsInProgress moved to shmem.cVadim B. Mikheev1996-11-27
|
* Fix memory overhelding while forming index' result:Vadim B. Mikheev1996-11-21
| | | | | memory allocation for ItemPointerData of heap' tuple is useless because of FormRetrieveIndexResult makes neccessary palloc.
* Fix memory overhelding while forming index' result:Vadim B. Mikheev1996-11-21
| | | | | | memory allocation for ItemPointerData of heap' tuple is useless because of FormRetrieveIndexResult makes neccessary palloc.
* Fix memory overhelding while forming index' result:Vadim B. Mikheev1996-11-21
| | | | | memory allocation for ItemPointerData of heap' tuple is useless because of FormRetrieveIndexResult makes neccessary palloc.
* Remove PERFECT_MEMBruce Momjian1996-11-15
| | | | Unallocate opaque.
* Unallocate opaque.Bruce Momjian1996-11-15
|
* Commit of a *MAJOR* patch from Dan McGuirk <djm@indirect.com>Marc G. Fournier1996-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes: * Unique index capability works using the syntax 'create unique index'. * Duplicate OID's in the system tables are removed. I put little scripts called 'duplicate_oids' and 'find_oid' in include/catalog that help to find and remove duplicate OID's. I also moved 'unused_oids' from backend/catalog to include/catalog, since it has to be in the same directory as the include files in order to work. * The backend tries converting the name of a function or aggregate to all lowercase if the original name given doesn't work (mostly for compatibility with ODBC). * You can 'SELECT NULL' to your heart's content. * I put my _bt_updateitem fix in instead, which uses _bt_insertonpg so that even if the new key is so big that the page has to be split, everything still works. * All literal references to system catalog OID's have been replaced with references to define'd constants from the catalog header files. * I added a couple of node copy functions. I think this was a preliminary attempt to get rules to work.
* Recognize dependencies more reliably.Bryan Henderson1996-11-10
|
* All external function definitions now have prototypes that are checked.Bruce Momjian1996-11-10
|
* Makefile cleanup after reorganizationBruce Momjian1996-11-09
|