summaryrefslogtreecommitdiff
path: root/src/backend/storage
AgeCommit message (Collapse)Author
2002-08-31Code review for pg_locks feature. Make shmemoffset of PROCLOCK structsTom Lane
available (else there's no way to interpret the list links). Change pg_locks view to show transaction ID locks separately from ordinary relation locks. Avoid showing N duplicate rows when the same lock is held multiple times (seems unlikely that users care about exact hold count). Improve documentation.
2002-08-29This patch reserves the last superuser_reserved_connections slots forBruce Momjian
connections by the superuser only. This patch replaces the last patch I sent a couple of days ago. It closes a connection that has not been authorised by a superuser if it would leave less than the GUC variable ReservedBackends (superuser_reserved_connections in postgres.conf) backend process slots free in the SISeg. This differs to the first patch which only reserved the last ReservedBackends slots in the procState array. This has made the free slot test more expensive due to the use of a lock. After thinking about a comment on the first patch I've also made it a fatal error if the number of reserved slots is not less than the maximum number of connections. Nigel J. Andrews
2002-08-27This patches replaces a few more usages of strcpy() and sprintf() whenBruce Momjian
copying into a fixed-size buffer (in this case, a buffer of NAMEDATALEN bytes). AFAICT nothing to worry about here, but worth fixing anyway... Neil Conway
2002-08-25Clean up comments to be careful about the distinction between variable-Tom Lane
width types and varlena types, since with the introduction of CSTRING as a more-or-less-real type, these concepts aren't identical. I've tried to use varlena consistently to denote datatypes with typlen = -1, ie, they have a length word and are potentially TOASTable; while the term variable width covers both varlena and cstring (and, perhaps, someday other types with other rules for computing the actual width). No code changes in this commit except for renaming a couple macros.
2002-08-17[ Newest version of patch applied.]Bruce Momjian
This patch is an updated version of the lock listing patch. I've made the following changes: - write documentation - wrap the SRF in a view called 'pg_locks': all user-level access should be done through this view - re-diff against latest CVS One thing I chose not to do is adapt the SRF to use the anonymous composite type code from Joe Conway. I'll probably do that eventually, but I'm not really convinced it's a significantly cleaner way to bootstrap SRF builtins than the method this patch uses (of course, it has other uses...) Neil Conway
2002-08-15Tom Lane wrote:Bruce Momjian
> There's no longer a separate call to heap_storage_create in that routine > --- the right place to make the test is now in the storage_create > boolean parameter being passed to heap_create. A simple change, but > it passeth patch's understanding ... Thanks. Attached is a patch against cvs tip as of 8:30 PM PST or so. Turned out that even after fixing the failed hunks, there was a new spot in bufmgr.c which needed to be fixed (related to temp relations; RelationUpdateNumberOfBlocks). But thankfully the regression test code caught it :-) Joe Conway
2002-08-11Code review of CLUSTER patch. Clean up problems with relcache gettingTom Lane
confused, toasted data getting lost, etc.
2002-08-10Fix failure to relink postmaster executable in the first make run if only aPeter Eisentraut
single source file a few directories deep in the backend tree has changed.
2002-08-06Still more paranoia in PageAddItem: disallow specification of an itemTom Lane
offset past the last-used-item-plus-one, since that would result in leaving uninitialized holes in the item pointer array. AFAICT the only place that was depending on this was btree index build, which was being cavalier about when to fill in the P_HIKEY pointer; easily fixed. Also a small performance improvement: shuffle itemid's by means of memmove, not a one-at-a-time loop.
2002-08-06Restructure local-buffer handling per recent pghackers discussion.Tom Lane
The local buffer manager is no longer used for newly-created relations (unless they are TEMP); a new non-TEMP relation goes through the shared bufmgr and thus will participate normally in checkpoints. But TEMP relations use the local buffer manager throughout their lifespan. Also, operations in TEMP relations are not logged in WAL, thus improving performance. Since it's no longer necessary to fsync relations as they move out of the local buffers into shared buffers, quite a lot of smgr.c/md.c/fd.c code is no longer needed and has been removed: there's no concept of a dirty relation anymore in md.c/fd.c, and we never fsync anything but WAL. Still TODO: improve local buffer management algorithms so that it would be reasonable to increase NLocBuffer.
2002-08-05Restructure system-catalog index updating logic. Instead of havingTom Lane
hardwired lists of index names for each catalog, use the relcache's mechanism for caching lists of OIDs of indexes of any table. This reduces the common case of updating system catalog indexes to a single line, makes it much easier to add a new system index (in fact, you can now do so on-the-fly if you want to), and as a nice side benefit improves performance a little. Per recent pghackers discussion.
2002-08-01* -Remove LockMethodTable.prio field, not used (Bruce)Bruce Momjian
2002-07-19Complete TODO item:Bruce Momjian
* -HOLDER/HOLDERTAB rename to PROCLOCK/PROCLOCKTAG
2002-07-18Complete TODO item:Bruce Momjian
* Merge LockMethodCtl and LockMethodTable into one shared structure (Bruce)
2002-07-13Add SET statement_timeout capability. Timeout is in ms. A value ofBruce Momjian
zero turns off the timer.
2002-07-02There already was a macro PageGetItemId; this is now used in (almost)Bruce Momjian
all places, where pd_linp is accessed. Also introduce new macros SizeOfPageHeaderData and BTMaxItemSize. This is just source code cosmetic, no behaviour changed. Manfred Koizar
2002-07-02Minor code cleanup in bufmgr.c and bufmgr.h, mainly by moving repeatedBruce Momjian
lines of code into internal routines (drop_relfilenode_buffers, release_buffer) and by hiding unused routines (PrintBufferDescs, PrintPinnedBufs) behind #ifdef NOT_USED. Remove AbortBufferIO() declaration from bufmgr.c (already declared in bufmgr.h) Manfred Koizar
2002-06-20Update copyright to 2002.Bruce Momjian
2002-06-15WriteBuffer return value:Bruce Momjian
>I'd vote for changing WriteBuffer to >return void, and have it elog() on bad argument. Manfred Koizar
2002-06-15Remove some pre-WAL relics:Bruce Momjian
SharedBufferChanged BufferRelidLastDirtied BufferTagLastDirtied BufferDirtiedByMe Manfred Koizar
2002-06-11Katherine Ward wrote:Jan Wieck
> Changes to avoid collisions with WIN32 & MFC names... > 1. Renamed: > a. PROC => PGPROC > b. GetUserName() => GetUserNameFromId() > c. GetCurrentTime() => GetCurrentDateTime() > d. IGNORE => IGNORE_DTF in include/utils/datetime.h & utils/adt/datetim > > 2. Added _P to some lex/yacc tokens: > CONST, CHAR, DELETE, FLOAT, GROUP, IN, OUT Jan
2002-05-24Mark index entries "killed" when they are no longer visible to anyTom Lane
transaction, so as to avoid returning them out of the index AM. Saves repeated heap_fetch operations on frequently-updated rows. Also detect queries on unique keys (equality to all columns of a unique index), and don't bother continuing scan once we have found first match. Killing is implemented in the btree and hash AMs, but not yet in rtree or gist, because there isn't an equally convenient place to do it in those AMs (the outer amgetnext routine can't do it without re-pinning the index page). Did some small cleanup on APIs of HeapTupleSatisfies, heap_fetch, and index_insert to make this a little easier.
2002-05-21Remove global variable scanCommandId in favor of storing a command IDTom Lane
in snapshots, per my proposal of a few days ago. Also, tweak heapam.c routines (heap_insert, heap_update, heap_delete, heap_mark4update) to be passed the command ID to use, instead of doing GetCurrentCommandID. For catalog updates they'll still get passed current command ID, but for updates generated from the main executor they'll get passed the command ID saved in the snapshot the query is using. This should fix some corner cases associated with functions and triggers that advance current command ID while an outer query is still in progress.
2002-05-20Restructure indexscan API (index_beginscan, index_getnext) perTom Lane
yesterday's proposal to pghackers. Also remove unnecessary parameters to heap_beginscan, heap_rescan. I modified pg_proc.h to reflect the new numbers of parameters for the AM interface routines, but did not force an initdb because nothing actually looks at those fields.
2002-05-05Create an internal semaphore API that is not tied to SysV semaphores.Tom Lane
As proof of concept, provide an alternate implementation based on POSIX semaphores. Also push the SysV shared-memory implementation into a separate file so that it can be replaced conveniently.
2002-05-03Fix obsolete comments.Tom Lane
2002-05-02Fix backslash-n typo, per Joe Conway.Tom Lane
2002-04-15The patch I sent to -patches a little while ago wasn't applied: itBruce Momjian
was in the thread "make BufferGetBlockNumber() a macro". Tom objected to the original patch, so I prepared a new one which doesn't change BufferGetBlockNumber() into a macro, it just cleans up some comments and fixes an assertion. The patch is attached. Neil Conway
2002-04-15The attached patch corrects an inaccuracy in src/backend/catalog/READMEBruce Momjian
and fixes a few spelling mistakes in src/bakckend/lmgr/README. Neil Conway
2002-04-13Patch against 7.2.1 sources. Uses Solaris Intimate Shared MemoryBruce Momjian
for Solaris on SPARC. Scott Brunza ([email protected]) gets credit for identifying the issue, making the change, and doing the regression tests. Earlier testing on 7.2rc2 and 7.2 showed performance gains of 1% to 10% on pgbench, osdb-pg, and some locally developed apps. Solaris Intimate Shared Memory is described in "SOLARIS INTERNALS Core Kernel Components" by Jim Mauro and Richard McDougall, Copyright 2001 Sun Microsystem, Inc. ISBN 0-13-022496-0 P.J. "Josh" Rovero
2002-04-05Looks like a small patch is needed as well to do the right thing on Linux.Bruce Momjian
The patch enables the mips2 ISA for the ll/sc operations, and then restores it when done. The kernel/libc emulation code will take over on CPUs without ll/sc, and on CPUs with it, it'll use the operations provided by the CPU. Combined with the earlier fix (removing -mips2), postgresql builds again on mips and mipsel. The patch is against 7.2-7. Oliver Elphick
2002-03-06Change made to elog:Bruce Momjian
o Change all current CVS messages of NOTICE to WARNING. We were going to do this just before 7.3 beta but it has to be done now, as you will see below. o Change current INFO messages that should be controlled by client_min_messages to NOTICE. o Force remaining INFO messages, like from EXPLAIN, VACUUM VERBOSE, etc. to always go to the client. o Remove INFO from the client_min_messages options and add NOTICE. Seems we do need three non-ERROR elog levels to handle the various behaviors we need for these messages. Regression passed.
2002-03-02Some kibitzing about appropriate elog levels for sinval messages.Tom Lane
2002-03-02Commit to match discussed elog() changes. Only update is that LOG isBruce Momjian
now just below FATAL in server_min_messages. Added more text to highlight ordering difference between it and client_min_messages. --------------------------------------------------------------------------- REALLYFATAL => PANIC STOP => PANIC New INFO level the prints to client by default New LOG level the prints to server log by default Cause VACUUM information to print only to the client NOTICE => INFO where purely information messages are sent DEBUG => LOG for purely server status messages DEBUG removed, kept as backward compatible DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1 added DebugLvl removed in favor of new DEBUG[1-5] symbols New server_min_messages GUC parameter with values: DEBUG[5-1], INFO, NOTICE, ERROR, LOG, FATAL, PANIC New client_min_messages GUC parameter with values: DEBUG[5-1], LOG, INFO, NOTICE, ERROR, FATAL, PANIC Server startup now logged with LOG instead of DEBUG Remove debug_level GUC parameter elog() numbers now start at 10 Add test to print error message if older elog() values are passed to elog() Bootstrap mode now has a -d that requires an argument, like postmaster
2002-02-10Don't Assert() that fsync() and close() never fail; I have seen thisTom Lane
crash on Solaris when over disk quota. Instead, report such failures via elog(DEBUG).
2002-01-30Add cast to suppress gcc warning on Darwin platform.Tom Lane
2002-01-24Fix logic error in insert_fsm_page_entry: because compact_fsm_page_listTom Lane
removes any empty chunks, the chunk previously added won't be there anymore, so it's possible there is zero free space in the rel's page list afterwards. Must loop back and rerun the part that adds a chunk to the list.
2002-01-15Add more sanity-checking to PageAddItem and PageIndexTupleDelete,Tom Lane
to prevent spreading of corruption when page header pointers are bad. Merge PageZero into PageInit, since it was never used separately, and remove separate memset calls used at most other PageInit call points. Remove IndexPageCleanup, which wasn't used at all.
2002-01-07Tweak LWLock algorithms so that an awakened waiter for a lock is notTom Lane
granted the lock when awakened; the signal now only means that the lock is potentially available. The waiting process must retry its attempt to get the lock when it gets to run. This allows the lock releasing process to re-acquire the lock later in its timeslice. Since LWLocks are usually held for short periods, it is possible for a process to acquire and release the same lock many times in a timeslice. The old spinlock-based implementation of these locks allowed for that; but the original coding of LWLock would force a process swap for each acquisition if there was any contention. Although this approach reopens the door to process starvation (a waiter might repeatedly fail to get the lock), the odds of that being a big problem seem low, and the performance cost of the previous approach is considerable.
2001-12-29Oops, only wanted datetime.c changes in there. lock stuff reversed out.Bruce Momjian
2001-12-29Fix newly introduced datetime.c compile failure; not enough parens.Bruce Momjian
2001-12-28Improve LOCK_DEBUG logging code for LWLocks.Tom Lane
2001-12-28Ensure that all direct uses of spinlock-protected data structures useTom Lane
'volatile' pointers to access those structures, so that optimizing compilers will not decide to move the structure accesses outside of the spinlock-acquire-to-spinlock-release sequence. There are no known bugs in these uses at present, but based on bad experience with lwlock.c, it seems prudent to ensure that we protect these other uses too. Per pghackers discussion around 12-Dec. (Note: it should not be necessary to worry about structures protected by LWLocks, since the LWLock acquire and release operations are not inline macros.)
2001-12-10Declare LWLock pointers as volatile to prevent AIX compiler fromTom Lane
reordering operations at its whim. Releasing TAS lock before we've finished updating proc structure is uncool.
2001-11-10Clean up usage-statistics display code (ShowUsage and friends). StatFpTom Lane
is gone, usage messages now go through elog(DEBUG).
2001-11-08Fix indenting for 'extern "C"' cases.Bruce Momjian
2001-11-08Add casts to suppress compiler warnings observed on Darwin platformTom Lane
(surprised no one has reported these yet...)
2001-11-06The extra semaphore that proc.c now allocates for checkpoint processesTom Lane
should be accounted for in the PROC_SEM_MAP_ENTRIES() macro. Otherwise the ports that rely on this macro to size data structures are broken. Mea culpa.
2001-11-05New pgindent run with fixes suggested by Tom. Patch manually reviewed,Bruce Momjian
initdb/regression tests pass.
2001-11-05Remove ill-considered Assert.Tom Lane