aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
...
* Suppress an integer-overflow warning.Tom Lane2007-07-12
|
* Some of our port-specific dynloader implementations are careful toTom Lane2007-07-12
| | | | | | | define pg_dlsym() as returning a PGFunction pointer, not just any pointer-to-function. But many are not. Suppress compiler warnings on platforms that aren't careful by inserting explicit casts at the two call sites that didn't have a cast already. Per Stefan.
* Compute max and min int8 values using unsigned arithmetic, in hopes ofTom Lane2007-07-12
| | | | suppressing Sun Studio compiler warnings. Per Stefan.
* Fix some warnings (probably actual bugs) generated by new GSSAPI codeTom Lane2007-07-12
| | | | when built on a 64-bit machine. Per buildfarm results extracted by Stefan.
* Fix mistaken Assert in adjust_appendrel_attr_needed, per Greg Stark.Tom Lane2007-07-12
|
* Enable GSSAPI to build using MSVC. Always build GSSAPI when Kerberos isMagnus Hagander2007-07-12
| | | | enabled, because the only Kerberos library supported always contains it.
* Support GSSAPI builds where the header is <gssapi.h> and not <gssapi/gssapi.h>,Magnus Hagander2007-07-12
| | | | | | such as OpenBSD (possibly all Heimdal). Stefan Kaltenbrunner
* A bunch of GSSAPI fixes per comments from Tom:Magnus Hagander2007-07-11
| | | | | | * use elog not ereport for debug * fix debug levels for some output * properly check for memory allocation errors in a couple of missed places
* Add support for GSSAPI authentication.Magnus Hagander2007-07-10
| | | | | | Documentation still being written, will be committed later. Henry B. Hotz and Magnus Hagander
* Fix stddev_pop(numeric) and var_pop(numeric), which were incorrectly producingTom Lane2007-07-09
| | | | the same outputs as stddev_samp() and var_samp() respectively.
* Fix single-user mode so that interrupts (particularly SIGTERM andTom Lane2007-07-09
| | | | | | | | | | SIGQUIT) will be recognized and processed while waiting for input, rather than only after something has been typed. Also make SIGQUIT do the same thing as SIGTERM in single-user mode, ie, do a normal shutdown and exit. Since it's relatively easy to provoke SIGQUIT from the keyboard, people may try that instead of control-D, and we'd rather this leads to orderly shutdown. Per report from Leon Mergen and subsequent discussion.
* Remove the pgstat_drop_relation() call from smgr_internal_unlink(), becauseTom Lane2007-07-08
| | | | | | | | | | we don't know at that point which relation OID to tell pgstat to forget. The code was passing the relfilenode, which is incorrect, and could possibly cause some other relation's stats to be zeroed out. While we could try to clean this up, it seems much simpler and more reliable to let the next invocation of pgstat_vacuum_tabstat() fix things; which indeed is how it worked before I introduced the buggy code into 8.1.3 and later :-(. Problem noticed by Itagaki Takahiro, fix is per subsequent discussion.
* Fix a couple of planner bugs introduced by the new ability to discardTom Lane2007-07-07
| | | | | | | | | | ORDER BY <constant> as redundant. One is that this means query_planner() has to canonicalize pathkeys even when the query jointree is empty; the canonicalization was always a no-op in such cases before, but no more. Also, we have to guard against thinking that a set-returning function is "constant" for this purpose. Add a couple of regression tests for these evidently under-tested cases. Per report from Greg Stark and subsequent experimentation.
* Fix up hash functions for datetime datatypes so that they don't takeTom Lane2007-07-06
| | | | | | unwarranted liberties with int8 vs float8 values for these types. Specifically, be sure to apply either hashint8 or hashfloat8 depending on HAVE_INT64_TIMESTAMP. Per my gripe of even date.
* Fix incorrect comment about the timing of AbsorbFsyncRequests() duringTom Lane2007-07-03
| | | | | | | checkpoint. The comment claimed that we could do this anytime after setting the checkpoint REDO point, but actually BufferSync is relying on the assumption that buffers dumped by other backends will be fsync'd too. So we really could not do it any sooner than we are doing it.
* Add ALTER VIEW ... RENAME TO, and a RENAME TO clause to ALTER SEQUENCE.Neil Conway2007-07-03
| | | | | | | Sequences and views could previously be renamed using ALTER TABLE, but this was a repeated source of confusion for users. Update the docs, and psql tab completion. Patch from David Fetter; various minor fixes by myself.
* Fix failure to restart Postgres when Linux kernel returns EIDRM for shmctl().Tom Lane2007-07-02
| | | | | | | | | | | | | This is a Linux kernel bug that apparently exists in every extant kernel version: sometimes shmctl() will fail with EIDRM when EINVAL is correct. We were assuming that EIDRM indicates a possible conflict with pre-existing backends, and refusing to start the postmaster when this happens. Fortunately, there does not seem to be any case where Linux can legitimately return EIDRM (it doesn't track shmem segments in a way that would allow that), so we can get away with just assuming that EIDRM means EINVAL on this platform. Per reports from Michael Fuhr and Jon Lapham --- it's a bit surprising we have not seen more reports, actually.
* Reduce the maximum sleep interval in the autovac launcher to 1 second,Tom Lane2007-07-01
| | | | | | | so that it responds to SIGQUIT reasonably promptly even on machines where SA_RESTART signals restart a sleep from scratch. (This whole area could stand some rethinking, but for now make it work like the other processes do.) Also some marginal stylistic cleanups.
* Treat the autovac launcher more like a regular backend, in that we waitTom Lane2007-07-01
| | | | | | | for it to die before telling the bgwriter to initiate shutdown checkpoint. Since it's connected to shared memory, this seems more prudent than the alternative of letting it quit asynchronously. Resolves my complaint of yesterday about repeated shutdown checkpoints in CVS HEAD.
* Avoid memory leakage when a series of subtransactions invoke AFTER triggersTom Lane2007-07-01
| | | | | | | | | | | | | that are fired at end-of-statement (as is the normal case for foreign keys, for example). In this situation the per-subxact deferred trigger context is always empty when subtransaction exit is reached; so we could free it, but were not doing so, leading to an intratransaction leak of 8K or more per subtransaction. Per off-list example from Viatcheslav Kalinin subsequent to bug #3418 (his original bug report omitted a foreign key constraint needed to cause this leak). Back-patch to 8.2; prior versions were not using per-subxact contexts for deferred triggers, so did not have this leak.
* Fix comments not updated in recent patch.Tom Lane2007-07-01
|
* Add 'volatile' to suppress 'variable might be clobbered by longjmp'Tom Lane2007-07-01
| | | | warning emitted by some versions of gcc.
* Improve logging of checkpoints. Patch by Greg Smith, worked overTom Lane2007-06-30
| | | | by Heikki and a little bit by me.
* Avoid crash in interrupted autovacuum worker, caused by leaving the currentAlvaro Herrera2007-06-30
| | | | | | | memory context pointing at a context not long lived enough. Also, create a fake PortalContext where to store the vac_context, if only to avoid having it be a top-level memory context.
* Arrange for SIGINT in autovacuum workers to cancel the current table andAlvaro Herrera2007-06-29
| | | | | | | continue with the schedule. Change current uses of SIGINT to abort a worker into SIGTERM, which keeps the old behaviour of terminating the process. Patch from ITAGAKI Takahiro, with some editorializing of my own.
* Fix a passel of ancient bugs in to_char(), including two distinct bufferTom Lane2007-06-29
| | | | | | | | | | | overruns (neither of which seem likely to be exploitable as security holes, fortunately, since the provoker can't control the data written). One of these is due to choosing to stomp on the output of a called function, which is bad news in any case; make it treat the called functions' results as read-only. Avoid some unnecessary palloc/pfree traffic too; it's not really helpful to free small temporary objects, and again this is presuming more than it ought to about the nature of the results of called functions. Per report from Patrick Welche and additional code-reading by Imad.
* Implement "distributed" checkpoints in which the checkpoint I/O is spreadTom Lane2007-06-28
| | | | | | | | | | | | | over a fairly long period of time, rather than being spat out in a burst. This happens only for background checkpoints carried out by the bgwriter; other cases, such as a shutdown checkpoint, are still done at full speed. Remove the "all buffers" scan in the bgwriter, and associated stats infrastructure, since this seems no longer very useful when the checkpoint itself is properly throttled. Original patch by Itagaki Takahiro, reworked by Heikki Linnakangas, and some minor API editorialization by me.
* Remove unused "caller" argument from stringToQualifiedNameList.Alvaro Herrera2007-06-26
|
* Improve autovacuum launcher's ability to detect a problem in worker startup,Alvaro Herrera2007-06-25
| | | | | | | | | by having the postmaster signal it when certain failures occur. This requires the postmaster setting a flag in shared memory, but should be as safe as the pmsignal.c code is. Also make sure the launcher honor's a postgresql.conf change turning it off on SIGHUP.
* Separate parse-analysis for utility commands out of parser/analyze.cTom Lane2007-06-23
| | | | | | | | | | | | | | | | | (which now deals only in optimizable statements), and put that code into a new file parser/parse_utilcmd.c. This helps clarify and enforce the design rule that utility statements shouldn't be processed during the regular parse analysis phase; all interpretation of their meaning should happen after they are given to ProcessUtility to execute. (We need this because we don't retain any locks for a utility statement that's in a plan cache, nor have any way to detect that it's stale.) We are also able to simplify the API for parse_analyze() and related routines, because they will now always return exactly one Query structure. In passing, fix bug #3403 concerning trying to add a serial column to an existing temp table (this is largely Heikki's work, but we needed all that restructuring to make it safe).
* Allow trailing whitespace in parse_real(), for consistency withTom Lane2007-06-21
| | | | | | | parse_int() and with itself (strtod allows leading whitespace, so it seems odd not to allow trailing whitespace). parse_bool remains not-whitespace-friendly, but this is generically true for non-numeric GUC variables, so I'll desist from changing it.
* Provide a HINT listing the allowed unit names when a GUC variable seems toTom Lane2007-06-21
| | | | | | contain a wrong unit specification, per discussion. In passing, fix the code to avoid unnecessary integer overflows when converting units, and to detect overflows when they do occur.
* Restrict deadlock_timeout to the range for which the implementationTom Lane2007-06-20
| | | | | | | actually works sanely, viz not 0 and not more than INT_MAX/1000 (else TimestampTzPlusMilliseconds can overflow). Per discussion with Greg Stark. Since this is a superuser-only setting and there was not previously any big reason to change it, not worth back-patching.
* transformColumnDefinition failed to complain aboutTom Lane2007-06-20
| | | | | | create table foo (bar int default null default 3); due to not thinking about the special-case handling of DEFAULT NULL. Problem noticed while investigating bug #3396.
* CREATE DOMAIN ... DEFAULT NULL failed because gram.y special-cases DEFAULTTom Lane2007-06-20
| | | | | NULL and DefineDomain didn't. Bug goes all the way back to original coding of domains. Per bug #3396 from Sergey Burladyan.
* Minor code cleanup: calling FreeFile() before ereport(ERROR) is notNeil Conway2007-06-20
| | | | | necessary, since files opened via AllocateFile() are closed automatically as part of error recovery.
* Only log 'process acquired lock' if we actually did get the lock. ThisTom Lane2007-06-19
| | | | | | | test seems inessential right now since the only control path for not getting the lock is via CHECK_FOR_INTERRUPTS which won't return control to ProcSleep, but it would be important if we ever allow the deadlock code to kill someone else's transaction instead of our own.
* Remove duplicate #include.Neil Conway2007-06-19
|
* Code review for log_lock_waits patch. Don't try to issue log messages fromTom Lane2007-06-19
| | | | | | | within a signal handler (this might be safe given the relatively narrow code range in which the interrupt is enabled, but it seems awfully risky); do issue more informative log messages that tell what is being waited for and the exact length of the wait; minor other code cleanup. Greg Stark and Tom Lane
* Arrange for quote_identifier() and pg_dump to not quote keywords that areTom Lane2007-06-18
| | | | | | | | | | | | | unreserved according to the grammar. The list of unreserved words has gotten extensive enough that the unnecessary quoting is becoming a bit of an eyesore. To do this, add knowledge of the keyword category to keywords.c's table. (Someday we might be able to generate keywords.c's table and the keyword lists in gram.y from a common source.) For the moment, lie about WITH's status in the table so it will still get quoted --- this is because of the expectation that WITH will become reserved when the SQL recursive-queries patch gets done. I didn't force initdb because this affects nothing on-disk; but note that a few regression tests have changed expected output.
* Remove comment about modifying tab-complete.c for userset GUC.Magnus Hagander2007-06-18
| | | | Simon Riggs
* Update obsolete comment: it's no longer the case that mdread() will allowTom Lane2007-06-18
| | | | reads beyond EOF, except by special coercion.
* Marginal hacking to improve the speed of COPY OUT. I had found in a bit ofTom Lane2007-06-17
| | | | | | | | | | | | | profiling that CopyAttributeOutText was taking an unreasonable fraction of the backend run time (like 66%!) on the following trivial test case: $ time psql -c "copy (select repeat('xyzzy',50) from generate_series(1,10000000)) to stdout" regression >/dev/null The time is all being spent on scanning the string for characters to be escaped, which most of the time there aren't any of. Some tweaking to take as many tests as possible out of the inner loop reduced the runtime of this example by more than 10%. In a real-world case it wouldn't be as useful a speedup, but it still seems worth adding a few lines here.
* Revert an ill-considered portion of my patch of 12-Mar, which tried to save aTom Lane2007-06-17
| | | | | | | | | few lines in sql_exec_error_callback() by using the function source string field that the patch added to SQL function cache entries. This doesn't work because the fn_extra field isn't filled in yet during init_sql_fcache(). Probably it could be made to work, but it doesn't seem appropriate to contort the main code paths to make an error-reporting path a tad faster. Per report from Pavel Stehule.
* Tweak the API for per-datatype typmodin functions so that they are passedTom Lane2007-06-15
| | | | | | | | | | | | an array of strings rather than an array of integers, and allow any simple constant or identifier to be used in typmods; for example create table foo (f1 widget(42,'23skidoo',point)); Of course the typmodin function has still got to pack this info into a non-negative int32 for storage, but it's still a useful improvement in flexibility, especially considering that you can do nearly anything if you are willing to keep the info in a side table. We can get away with this change since we have not yet released a version providing user-definable typmods. Per discussion.
* Avoid having autovacuum run multiple ANALYZE commands in a single transaction,Alvaro Herrera2007-06-14
| | | | to prevent possible deadlock problems. Per request from Tom Lane.
* Implement a chunking protocol for writes to the syslogger pipe, with messagesAndrew Dunstan2007-06-14
| | | | | | | | | reassembled in the syslogger before writing to the log file. This prevents partial messages from being written, which mucks up log rotation, and messages from different backends being interleaved, which causes garbled logs. Backport as far as 8.0, where the syslogger was introduced. Tom Lane and Andrew Dunstan
* Avoid integer overflow issues in autovacuum.Alvaro Herrera2007-06-13
|
* Add some simple defenses against null fields in pg_largeobject, and addTom Lane2007-06-12
| | | | | comments noting that there's an alignment assumption now that the data field could be in 1-byte-header format. Per discussion with Greg Stark.
* Add some comments about the safety of accessing rolpassword without usingTom Lane2007-06-12
| | | | the normal heap_getattr() machinery. Per Greg Stark.