summaryrefslogtreecommitdiff
path: root/src/backend/access/transam/xlog.c
AgeCommit message (Collapse)Author
2003-06-26Add comment pointing out that XLByteToPrevSeg macro is not broken.Tom Lane
2003-05-22Repair sometimes-incorrect computation of StartUpID after a crash, perTom Lane
example from Rao Kumar. This is a very corner corner-case, requiring a minimum of three closely-spaced database crashes and an unlucky positioning of the second recovery's checkpoint record before you'd notice any problem. But the consequences are dire enough that it's a must-fix.
2003-05-10Adjust CreateCheckpoint so that buffer dumping activities and cleanup ofTom Lane
dead xlog segments are not considered part of a critical section. It is not necessary to force a database-wide panic if we get a failure in these operations. Per recent trouble reports.
2003-04-25In the continuing saga of FE/BE protocol revisions, add reporting ofTom Lane
initial values and runtime changes in selected parameters. This gets rid of the need for an initial 'select pg_client_encoding()' query in libpq, bringing us back to one message transmitted in each direction for a standard connection startup. To allow server version to be sent using the same GUC mechanism that handles other parameters, invent the concept of a never-settable GUC parameter: you can 'show server_version' but it's not settable by any GUC input source. Create 'lc_collate' and 'lc_ctype' never-settable parameters so that people can find out these settings without need for pg_controldata. (These side ideas were all discussed some time ago in pgsql-hackers, but not yet implemented.)
2003-04-18Make Win32 tests to match existing Cygwin tests, where appropriate.Bruce Momjian
2003-02-21Make btree index structure adjustments and WAL logging changes needed toTom Lane
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.
2003-01-25Use stat(2) to probe for existing xlog segments in InstallXLogFileSegment,Tom Lane
rather than actually opening the files. This eliminates some corner cases where the file indeed exists but open() fails for another reason, such as being out of file descriptors. The net reliability gain is probably tiny, since xlog.c is full of other file open calls that will elog(PANIC) if they fail for any reason; but this specific failure mode has been observed in the field, so we may as well fix it.
2002-11-08This patch removes a bunch of superfluous #include directives: ifBruce Momjian
postgres.h or c.h includes a system header (such as stdio.h or stdlib.h), there's no need to specifically include it in any of the .c files in the backend. Neil Conway
2002-11-02Clean up a few fprintf(stderr)'s that should be elog's.Tom Lane
2002-10-07Change order of operations during XLogFlush so that we try to includeTom Lane
in our write/flush operation any WAL entries that got queued while we were waiting to get the WALWriteLock. This improves throughput when transactions are small enough that several can be committed per WAL write (ie, per disk revolution).
2002-09-26Ensure that before truncating CLOG, we force a checkpoint even if noTom Lane
recent WAL activity has occurred. Without this, it's possible that a later crash might leave tuples on disk with un-updated commit status bits.
2002-09-04pgindent run.Bruce Momjian
2002-09-02Remove sys/types.h in files that include postgres.h, and hence c.h,Bruce Momjian
because c.h has sys/types.h.
2002-09-01Remove code that suggested increasing wal_files.Bruce Momjian
2002-08-30Complete TODO item:Bruce Momjian
* Remove wal_files postgresql.conf option because WAL files are now recycled
2002-08-17Reverse out XLogDir/-X write-ahead log handling, per discussion.Bruce Momjian
Original patch from Thomas.
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-05Fix compilation problem with assert checking enabled for recent xlogThomas G. Lockhart
location feature.
2002-08-04Implement WAL log location control using "-X" or PGXLOG.Thomas G. Lockhart
2002-06-20Update copyright to 2002.Bruce Momjian
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-06-07The attached patch fixes a problem with InstallXLogFileSegment()'s useBruce Momjian
of link() under Cygwin: http://archives.postgresql.org/pgsql-cygwin/2002-04/msg00072.php Note that it appears that BeOS and Netware also have the above or similar problem. I have only verified that PostgreSQL builds under Cygwin with this patch. Since I cannot reproduce the problem, I cannot verify that the proposed patch solves it. Nevertheless, both Barry Pederson and David P. Caldwell attest that this patch solves the problem. See the following for details: http://archives.postgresql.org/pgsql-cygwin/2002-05/msg00043.php http://archives.postgresql.org/pgsql-cygwin/2002-05/msg00040.php Jason Tishler
2002-05-17Merge the last few variable.c configuration variables into the genericTom Lane
GUC support. It's now possible to set datestyle, timezone, and client_encoding from postgresql.conf and per-database or per-user settings. Also, implement rollback of SET commands that occur in a transaction that later fails. Create a SET LOCAL var = value syntax that sets the variable only for the duration of the current transaction. All per previous discussions in pghackers.
2002-05-09Make initdb print a message about which locale it is about to use.Peter Eisentraut
Re-add warning if the locale prevents LIKE-optimization. Done within initdb now.
2002-04-24xlog.c: If possible please add the following patch to better support NetWare.Bruce Momjian
Ulrich Neumann
2002-04-21Add fields in the control file to check for whether the backend wasThomas G. Lockhart
compiled for integer date/time storage and to check the length of storage for the locale fields in the same data structure. Slightly reword some of the error messages to be more accurate on possible recovery options (e.g. recompile *or* re-initdb). Bump version number on this file.
2002-04-03Locale support is on by default. The choice of locale is done in initdbPeter Eisentraut
and/or with GUC variables.
2002-03-15Repair two problems with WAL logging of sequence nextvalI() ops, asTom Lane
per recent pghackers discussion: force a new WAL record at first nextval after a checkpoint, and ensure that xlog is flushed to disk if a nextval record is the only thing emitted by a transaction.
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-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-18Add better error text:Bruce Momjian
elog(LOG, "XLogWrite: new log file created - " "consider increasing 'wal_files' in postgresql.conf.");
2002-01-14Reduce severity of 'XLogFlush: request is not satisfied' error condition,Tom Lane
per my proposal of a couple days ago. This will eliminate the unable- to-restart-database class of problem that we have seen reported half a dozen times with 7.1.*.
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-23Fix mispeling ...Tom Lane
2001-12-19Temporarily dike out GetUndoRecPtr() in checkpoint generation, since weTom Lane
do not use the undo pointer anyway. This is a quick-hack solution for the three-way deadlock condition discussed in pghackers 17-Dec-01. Need to find a better way of doing it.
2001-11-05New pgindent run with fixes suggested by Tom. Patch manually reviewed,Bruce Momjian
initdb/regression tests pass.
2001-11-04Merge three existing ways of signaling postmaster from child processes,Tom Lane
so that only one signal number is used not three. Flags in shared memory tell the reason(s) for the current signal. This method is extensible to handle more signal reasons without chewing up even more signal numbers, but the immediate reason is to keep pg_pwd reloads separate from SIGHUP processing in the postmaster. Also clean up some problems in the postmaster with delayed response to checkpoint status changes --- basically, it wouldn't schedule a checkpoint if it wasn't getting connection requests on a regular basis.
2001-10-28Another pgindent run. Fixes enum indenting, and improves #endifBruce Momjian
spacing. Also adds space for one-line comments.
2001-10-25pgindent run on all C files. Java run to follow. initdb/regressionBruce Momjian
tests pass.
2001-09-29Implement new 'lightweight lock manager' that's intermediate betweenTom Lane
existing lock manager and spinlocks: it understands exclusive vs shared lock but has few other fancy features. Replace most uses of spinlocks with lightweight locks. All remaining uses of spinlocks have very short lock hold times (a few dozen instructions), so tweak spinlock backoff code to work efficiently given this assumption. All per my proposal on pghackers 26-Sep-01.
2001-09-26Remove useless test for time field in pg_control being > 0. We don'tTom Lane
need this, and it will create a Y2038 failure. Per report from David Wheeler, who is evidently running on a platform where time_t is already negative.
2001-09-06Add some debugging details to some of the elog(STOP) conditions for WAL.Tom Lane
Standardize on %X/%X as the formatting for XLOG position display --- we had a couple of different formats before, and none of 'em were as useful as hex offsets IMHO.
2001-08-25Replace implementation of pg_log as a relation accessed through theTom Lane
buffer manager with 'pg_clog', a specialized access method modeled on pg_xlog. This simplifies startup (don't need to play games to open pg_log; among other things, OverrideTransactionSystem goes away), should improve performance a little, and opens the door to recycling commit log space by removing no-longer-needed segments of the commit log. Actual recycling is not there yet, but I felt I should commit this part separately since it'd still be useful if we chose not to do transaction ID wraparound.
2001-08-23Ensure that all TransactionId comparisons are encapsulated in macrosTom Lane
(TransactionIdPrecedes, TransactionIdFollows, etc). First step on the way to transaction ID wrap solution ...
2001-08-10Make OIDs optional, per discussions in pghackers. WITH OIDS is still theTom Lane
default, but OIDS are removed from many system catalogs that don't need them. Some interesting side effects: TOAST pointers are 20 bytes not 32 now; pg_description has a three-column key instead of one. Bugs fixed in passing: BINARY cursors work again; pg_class.relhaspkey has some usefulness; pg_dump dumps comments on indexes, rules, and triggers in a valid order. initdb forced.
2001-07-22Suppress gcc warning in USE_LOCALE case.Tom Lane
2001-07-19Arrange to recycle old XLOG log segment files as new segment files,Tom Lane
rather than deleting them only to have to create more. Steady state is 2*CHECKPOINT_SEGMENTS + WAL_FILES + 1 segment files, which will simply be renamed rather than constantly deleted and recreated. To make this safe, added current XLOG file/offset number to page header of XLOG pages, so that an un-overwritten page from an old incarnation of a logfile can be reliably told from a valid page. This change means that if you try to restart postmaster in a CVS-tip database after installing the change, you'll get a complaint about bad XLOG page magic number. If you don't want to initdb, run contrib/pg_resetxlog (and be sure you shut down the old postmaster cleanly).
2001-06-21Tweak error message.Tom Lane
2001-06-06Adjust WAL code so that checkpoints truncate the xlog at the previousTom Lane
checkpoint's redo pointer, not its undo pointer, per discussion in pghackers a few days ago. No point in hanging onto undo information until we have the ability to do something with it --- and this solves a rather large problem with log space for long-running transactions. Also, change all calls of write() to detect the case where write returned a count less than requested, but failed to set errno. Presume that this situation indicates ENOSPC, and give the appropriate error message, rather than a random message associated with the previous value of errno.
2001-06-03Mark many strings in backend not covered by elog for translation. Also,Peter Eisentraut
make strings in xlog.c look more like English and less like binary noise.