summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2001-01-17attached is a patch that makes SysV semaphore emulationBruce Momjian
using POSIX semaphores more robust on Darwin 1.2/Mac OS X Public Beta. this is for the version of 7.1 available via anon cvs as of Jan 14 2001 14:00 PST. since the semaphores and shared memory created by this emulator are shared with the backends via fork(), their persistent names are not necessary. removing their names with shm_unlink() and sem_unlink() after creation obviates the need for any "ipcclean" function. further, without these changes, the shared memory (and, therefore, the semaphores) will not be re-initialized/re-created after the first execution of the postmaster, until reboot or until some (non-existent) ipcclean function is executed. this patch does the following: 1) if the shared memory segment "SysV_Sem_Info" already existed, it is cleaned up. it shouldn't be there anyways. 2) the real indicator for whether the shared memory/semaphore emulator has been initialized is if "SemInfo" has been initialized. the shared memory and semaphores must be initialized regardless of whether there was a garbage shared memory segment lying around. 3) the shared memory segment "SysV_Sem_Info" is created with "O_EXCL" to catch the case where two postmasters might be starting simultaneously, so they don't both end up with the same shared memory (one will fail). note that this can't be done with the semaphores because Darwin 1.2 has a bug where attempting to open an existing semaphore with "O_EXCL" set will ruin the semaphore until the next reboot. 4) the shared memory segment "SysV_Sem_Info" is unlinked after it is created. it will then exist without a name until the postmaster and all backend children exit. 5) all semaphores are unlinked after they are created. they'll then exist without names until the postmaster and all backend children exit. -michael thornburgh, zenomt@armory.com
2001-01-17Change lcons(x, NIL) to makeList(x) where appropriate.Bruce Momjian
2001-01-17Change comparisons of tm->tm_isdst from "nonzero" to "greater than zero".Thomas G. Lockhart
Not sure why some were this way, and others were already correct, but it seems to have been like this for several years. This caused problems on a few damaged platforms like AIX and IRIX which do not support DST calculations for years before 1970. Thanks to Andreas Zeugswetter <ZeugswetterA@wien.spardat.at> for finding the problem.
2001-01-17Move structure comments from the top block down to the line entries forBruce Momjian
this file to match all the other files, and to be clearer.
2001-01-16Remove bogus backslashes in sed command.Tom Lane
2001-01-16Oops, I had managed to break query-cancel-while-waiting-for-lock.Tom Lane
2001-01-16Rename fields of lock and lockholder structures to something a tad lessTom Lane
confusing, and clean up documentation.
2001-01-15Fix problems with parentheses around sub-SELECT --- for the last time,Tom Lane
I hope. I finally realized that we were going at it backwards: when there are excess parentheses, they need to be treated as part of the sub-SELECT, not as part of the surrounding expression. Although either choice yields an unambiguous grammar, only this way produces a grammar that is LALR(1). With the old approach we were guaranteed to fail on either 'SELECT (((SELECT 2)) + 3)' or 'SELECT (((SELECT 2)) UNION SELECT 2)' depending on which way we resolve the initial shift/reduce conflict. With the new way, the same reduction track can be followed in both cases until we have advanced far enough to know whether we are done with the sub-SELECT or not.
2001-01-15Tweak heap_update/delete so that we do not hold the buffer context lockTom Lane
on the old tuple's page while we are doing TOAST pushups.
2001-01-14Minor coding cleanups.Tom Lane
2001-01-14Another go-round on making GetRawDatabaseInfo behave as well as it can,Tom Lane
given the fundamental restriction of not looking at transaction commit data in pg_log. Use code that is actually based on tqual.c rather than ad-hoc tests. Also write the tuple fetch loop using standard access macros rather than ad-hoc code.
2001-01-14pg_database's datpath column must not be marked toastable, becauseTom Lane
GetRawDatabaseInfo() won't cope with a compressed path spec (much less a moved-off one). I'm not going to force an initdb for this change, because it's noncritical --- we're not actually using datpath at all right now. But it seems a good idea to apply the fix while I'm thinking about it.
2001-01-14Need to do BufferSync at end of DROP DATABASE as well as CREATE DATABASE.Tom Lane
Otherwise, newly connecting backends will still think the deleted DB is valid, and will generate unexpected error messages.
2001-01-14Make aclcontains() do something that's at least vaguely reasonable:Tom Lane
it now returns true if the aclitem argument exactly matches any one of the elements of the aclitem[] argument. Per complaint from Wolff 1/10/01.
2001-01-14Restructure backend SIGINT/SIGTERM handling so that 'die' interruptsTom Lane
are treated more like 'cancel' interrupts: the signal handler sets a flag that is examined at well-defined spots, rather than trying to cope with an interrupt that might happen anywhere. See pghackers discussion of 1/12/01.
2001-01-13Backed out:Bruce Momjian
--------------------------------------------------------------------------- Attached is a set of patches for a couple of bugs dealing with timestamps in JDBC. Bug#1) Incorrect timestamp stored in DB if client timezone different than DB.
2001-01-13Attached is a set of patches for a couple of bugs dealing withBruce Momjian
timestamps in JDBC. Bug#1) Incorrect timestamp stored in DB if client timezone different than DB. The buggy implementation of setTimestamp() in PreparedStatement simply used the toString() method of the java.sql.Timestamp object to convert to a string to send to the database. The format of this is yyyy-MM-dd hh:mm:ss.SSS which doesn't include any timezone information. Therefore the DB assumes its timezone since none is specified. That is OK if the timezone of the client and server are the same, however if they are different the wrong timestamp is received by the server. For example if the client is running in timezone GMT and wants to send the timestamp for noon to a server running in PST (GMT-8 hours), then the server will receive 2000-01-12 12:00:00.0 and interprete it as 2000-01-12 12:00:00-08 which is 2000-01-12 04:00:00 in GMT. The fix is to send a format to the server that includes the timezone offset. For simplicity sake the fix uses a SimpleDateFormat object with its timezone set to GMT so that '+00' can be used as the timezone for postgresql. This is done as SimpleDateFormat doesn't support formating timezones in the way postgresql expects. Bug#2) Incorrect handling of partial seconds in getting timestamps from the DB When the SimpleDateFormat object parses a string with a format like yyyy-MM-dd hh:mm:ss.SS it expects the fractional seconds to be three decimal places (time precision in java is miliseconds = three decimal places). This seems like a bug in java to me, but it is unlikely to be fixed anytime soon, so the postgresql code needed modification to support the java behaviour. So for example a string of '2000-01-12 12:00:00.12-08' coming from the database was being converted to a timestamp object with a value of 2000-01-12 12:00:00.012GMT-08:00. The fix was to check for a '.' in the string and if one is found append on an extra zero to the fractional seconds part. Bug#3) Performance problems In fixing the above two bugs, I noticed some things that could be improved. In PreparedStatement.setTimestamp(), PreparedStatement.setDate(), ResultSet.getTimestamp(), and ResultSet.getDate() these methods were creating a new SimpleDateFormat object everytime they were called. To avoid this unnecessary object creation overhead, I changed the code to use static variables for keeping a single instance of the needed formating objects. Also the code used the + operator for string concatenation. As everyone should know this is very inefficient and the use of StringBuffers is prefered. I also did some cleanup in ResultSet.getTimestamp(). This method has had multiple patches applied some of which resulted in code that was no longer needed. For example the ISO timestamp format that postgresql uses specifies the timezone as an offset like '-08'. Code was added at one point to convert the postgresql format to the java one which is GMT-08:00, however the old code was left around which did nothing. So there was code that looked for yyyy-MM-dd hh:mm:sszzzzzzzzz and yyyy-MM-dd hh:mm:sszzz. This second format would never be encountered because zzz (i.e. -08) would be converted into the former (also note that the SimpleDateFormat object treats zzzzzzzzz and zzz the same, the number of z's does not matter). There was another problem/fix mentioned on the email lists today by mcannon@internet.com which is also fixed by this patch: Bug#4) Fractional seconds lost when getting timestamp from the DB A patch by Jan Thomea handled the case of yyyy-MM-dd hh:mm:sszzzzzzzzz but not the fractional seconds version yyyy-MM-dd hh:mm:ss.SSzzzzzzzzz. The code is fixed to handle this case as well. Barry Lind
2001-01-13More cleanup.Bruce Momjian
2001-01-13Relax test on typmod matching between a table and its proposed ON SELECTTom Lane
rule. Needed to avoid failure when reloading a 7.0 pg_dump of a view that has a NUMERIC column.
2001-01-13Windows wants shared libraries in PATH.Peter Eisentraut
2001-01-13Update pgcvslog to fix problem with duplicate narratives.Bruce Momjian
2001-01-12Add more critical-section calls: all code sections that hold spinlocksTom Lane
are now critical sections, so as to ensure die() won't interrupt us while we are munging shared-memory data structures. Avoid insecure intermediate states in some code that proc_exit will call, like palloc/pfree. Rename START/END_CRIT_CODE to START/END_CRIT_SECTION, since that seems to be what people tend to call them anyway, and make them be called with () like a function call, in hopes of not confusing pg_indent. I doubt that this is sufficient to make SIGTERM safe anywhere; there's just too much code that could get invoked during proc_exit().
2001-01-12Fixed handling of renamed columns in PK constraintsPhilip Warner
2001-01-12- Check ntuples == 1 for various SELECT statements.Philip Warner
- Fix handling of --tables=* (multiple tables never worked properly, AFAICT) - strdup() the current user in DB routines - Check results of IO routines more carefully. - Check results of PQ routines more carefully. Have not fixed index output yet.
2001-01-12Preserve constraints and column defaults during CLUSTER.Tom Lane
Wish they were all this easy ...
2001-01-12New feature:Marc G. Fournier
1. Support of variable size keys - new algorithm of insertion to tree (GLI - gist layrered insertion). Previous algorithm was implemented as described in paper by Joseph M. Hellerstein et.al "Generalized Search Trees for Database Systems". This (old) algorithm was not suitable for variable size keys and could be not effective ( walking up-down ) in case of multiple levels split Bug fixed: 1. fixed bug in gistPageAddItem - key values were written to disk uncompressed. This caused failure if decompression function does real job. 2. NULLs handling - we keep NULLs in tree. Right way is to remove them, but we don't know how to inform vacuum about index statistics. This is just cosmetic warning message (like in case with R-Tree), but I'm not sure how to recognize real problem if we remove NULLs and suppress this warning as Tom suggested. 3. various memory leaks This work was done by Teodor Sigaev (teodor@stack.net) and Oleg Bartunov (oleg@sai.msu.su).
2001-01-11#ifdef out entire file for newer Cygwin versions.Peter Eisentraut
2001-01-11Add DLLIMPORT to TransactionCommandContext.Peter Eisentraut
2001-01-11Remove useless DLLIMPORT (only needed in header files).Peter Eisentraut
2001-01-10Removed a no longer needed SetWaitingForLock() call inHiroshi Inoue
DeadLockCheck().
2001-01-10Do The Right Thing (tm) if asked to cluster a temp table. PreviousTom Lane
code would cluster, but table would magically lose its tempness.
2001-01-09Synced preproc.y with gram.y.Michael Meskes
2001-01-09Remove -L$(libdir) from DLLLIBS to prevent linking with an old versionPeter Eisentraut
(i.e., 7.0.3) of libpostgres.a. From Jason Tishler <jt@dothill.com>.
2001-01-09Add configure check for sys_nerr, to end all discussions.Peter Eisentraut
2001-01-09The KAME files md5.* and sha1.* have the following changelogBruce Momjian
entry: ---------------------------- revision 1.2 date: 2000/12/04 01:20:38; author: tgl; state: Exp; lines: +18 -18 Eliminate some of the more blatant platform-dependencies ... it builds here now, anyway ... ---------------------------- Which basically changes u_int*_t -> uint*_t, so now it does not compile neither under Debian 2.2 nor under NetBSD 1.5 which is platform independent<B8> all right. Also it replaces $KAME$ with $Id$ which is Bad Thing. PostgreSQL Id should be added as a separate line so the file history could be seen. So here is patch: * changes uint*_t -> uint*. I guess that was the original intention * adds uint64 type to include/c.h because its needed [somebody should check if I did it right] * adds back KAME Id, because KAME is the master repository * removes stupid c++ comments in pgcrypto.c * removes <sys/types.h> from the code, its not needed -- marko Marko Kreen
2001-01-09Disable query cancel during HandleDeadLock().Hiroshi Inoue
2001-01-091. Checkpoint.undo may be after checkpoint itself:Vadim B. Mikheev
- no more elog(STOP) in StartupXLOG(); - both checkpoint' undo & redo are used to define oldest on-line log file. 2. Ability to pre-allocate a few log files at checkpoint time (wal_files option). Off by default.
2001-01-09Fix oversight in planning of GROUP queries: when an expression is usedTom Lane
as both a GROUP BY item and an output expression, the top-level Group node should just copy up the evaluated expression value from its input, rather than re-evaluating the expression. Aside from any performance benefit this might offer, this avoids a crash when there is a sub-SELECT in said expression.
2001-01-09Fix small but critical typo ...Tom Lane
2001-01-08Prevent vacuumdb from trying to vacuum template0.Tom Lane
2001-01-08Remove compiler warning about uninitialized warnings.Bruce Momjian
2001-01-08check for failure after vacuuming each DB, not only the last one.Tom Lane
2001-01-08Add some debugging support code (ifdef'd out in normal use).Tom Lane
2001-01-08LockBuffer should not elog while holding buffer's cntx_lock.Tom Lane
2001-01-08Keep relations open until they are no longer needed.Hiroshi Inoue
2001-01-08Make outfuncs/readfuncs treat OIDs properly as unsigned values. Clean upTom Lane
inconsistent coding practices for handling Index values and booleans, too.
2001-01-07Correct nasty error in heap_update: it was releasing the buffer refcountTom Lane
before calling RelationInvalidateHeapTuple(), which is bad because the latter needs to look at the tuple data, which is in the shared disk buffer. If another backend manages to recycle the buffer while this is going on, we will compute the wrong hashindex for the tuple or maybe even crash outright. Must hold buffer refcount until afterwards. (This bug is not in 7.0.*; seems to be have introduced during WAL changes.)
2001-01-07Clear QueryCancel and ProcDiePending at start of proc_exit, to ensureTom Lane
that leftover cancel/die requests cannot interfere with exit activities.
2001-01-07Fix recent breakage of query-cancel logic, see my pghackers messageTom Lane
of 6 Jan 2001 21:55.
2001-01-07Resultmap updates for OpenBSD, per report from bpalmer@crimelabs.net.Tom Lane