aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
* Improve recovery.conf.sample comments.Robert Haas2011-01-07
| | | | Jehan-Guillaume de Rorthais, with some additional wordsmithing by me.
* New system view pg_stat_replication displays activity of wal sender processes.Itagaki Takahiro2011-01-07
| | | | Itagaki Takahiro and Simon Riggs.
* Improve C comments about backend variables set by pg_upgrade_supportBruce Momjian2011-01-06
| | | | functions.
* Give superusers REPLIACTION permission by defaultMagnus Hagander2011-01-05
| | | | | | | This can be overriden by using NOREPLICATION on the CREATE ROLE statement, but by default they will have it, making it backwards compatible and "less surprising" (given that superusers normally override all checks).
* Fix crash in ALTER OPERATOR CLASS/FAMILY .. SET SCHEMA.Robert Haas2011-01-03
| | | | | | | In the previous coding, the parser emitted a List containing a C string, which is no good, because copyObject() can't handle it. Dimitri Fontaine
* Update comments in RecordTransactionCommit() to mention unlogged tables.Robert Haas2011-01-03
|
* Add views and functions to monitor hot standby query conflictsMagnus Hagander2011-01-03
| | | | | Add the view pg_stat_database_conflicts and a column to pg_stat_database, and the underlying functions to provide the information.
* Implement remaining fields of information_schema.sequences viewPeter Eisentraut2011-01-02
| | | | | | | | | Add new function pg_sequence_parameters that returns a sequence's start, minimum, maximum, increment, and cycle values, and use that in the view. (bug #5662; design suggestion by Tom Lane) Also slightly adjust the view's column order and permissions after review of SQL standard.
* Fix typo.Robert Haas2011-01-02
| | | | Noted by Magnus Hagander.
* Basic foreign table support.Robert Haas2011-01-01
| | | | | | | | | | | Foreign tables are a core component of SQL/MED. This commit does not provide a working SQL/MED infrastructure, because foreign tables cannot yet be queried. Support for foreign table scans will need to be added in a future patch. However, this patch creates the necessary system catalog structure, syntax support, and support for ancillary operations such as COMMENT and SECURITY LABEL. Shigeru Hanada, heavily revised by Robert Haas
* Allow casting a table's row type to the table's supertype if it's a typed tablePeter Eisentraut2011-01-01
| | | | | This is analogous to the existing facility that allows casting a row type to a supertable's row type.
* Stamp copyrights for year 2011.Bruce Momjian2011-01-01
|
* Include the first valid listen address in pg_ctl to improve server startBruce Momjian2010-12-31
| | | | | "wait" detection and add postmaster start time to help determine if the postmaster is actually using the specified data directory.
* Invert and rename flag variable to improve code readability.Tom Lane2010-12-31
| | | | No change in functionality. Per discussion with Robert.
* Move symbols for ExecMergeJoin's state machine into nodeMergejoin.c.Tom Lane2010-12-30
| | | | | There's no reason for these values to be known anywhere else. After doing this, executor/execdefs.h is vestigial and can be removed.
* Support RIGHT and FULL OUTER JOIN in hash joins.Tom Lane2010-12-30
| | | | | | | | | | | | | | | | | | | | | | This is advantageous first because it allows us to hash the smaller table regardless of the outer-join type, and second because hash join can be more flexible than merge join in dealing with arbitrary join quals in a FULL join. For merge join all the join quals have to be mergejoinable, but hash join will work so long as there's at least one hashjoinable qual --- the others can be any condition. (This is true essentially because we don't keep per-inner-tuple match flags in merge join, while hash join can do so.) To do this, we need a has-it-been-matched flag for each tuple in the hashtable, not just one for the current outer tuple. The key idea that makes this practical is that we can store the match flag in the tuple's infomask, since there are lots of bits there that are of no interest for a MinimalTuple. So we aren't increasing the size of the hashtable at all for the feature. To write this without turning the hash code into even more of a pile of spaghetti than it already was, I rewrote ExecHashJoin in a state-machine style, similar to ExecMergeJoin. Other than that decision, it was pretty straightforward.
* Avoid unnecessary public struct declaration in slru.hAlvaro Herrera2010-12-30
| | | | | | | | Instead, declare a public wrapper of the sole function using it for external callers, so that they don't have to always pass a NULL argument. Author: Kevin Grittner
* Support unlogged tables.Robert Haas2010-12-29
| | | | | | | The contents of an unlogged table are WAL-logged; thus, they are not available on standby servers and are truncated whenever the database system enters recovery. Indexes on unlogged tables are also unlogged. Unlogged GiST indexes are not currently supported.
* Add REPLICATION privilege for ROLEsMagnus Hagander2010-12-29
| | | | | | | | | | | This privilege is required to do Streaming Replication, instead of superuser, making it possible to set up a SR slave that doesn't have write permissions on the master. Superuser privileges do NOT override this check, so in order to use the default superuser account for replication it must be explicitly granted the REPLICATION permissions. This is backwards incompatible change, in the interest of higher default security.
* Avoid unexpected conversion overflow in planner for distant date values.Tom Lane2010-12-28
| | | | | | | | | | | | | | The "date" type supports a wider range of dates than int64 timestamps do. However, there is pre-int64-timestamp code in the planner that assumes that all date values can be converted to timestamp with impunity. Fortunately, what we really need out of the conversion is always a double (float8) value; so even when the date is out of timestamp's range it's possible to produce a sane answer. All we need is a code path that doesn't try to force the result into int64. Per trouble report from David Rericha. Back-patch to all supported versions. Although this is surely a corner case, there's not much point in advertising a date range wider than timestamp's if we will choke on such values in unexpected places.
* Another fix for larger postmaster.pid files.Bruce Momjian2010-12-28
|
* Fix code to properly pull out shared memory key now that theBruce Momjian2010-12-27
| | | | | postmaster.pid file is larger than in previous major versions. This is a bug introduced when I added lines to the file recently.
* Rename the C functions bitand(), bitor() to bit_and(), bit_or().Tom Lane2010-12-27
| | | | | | | | | This is to avoid use of the C++ keywords "bitand" and "bitor" in the header file utils/varbit.h. Note the functions' SQL-level names are not changed, only their C-level names. In passing, make some comments in varbit.c conform to project-standard layout.
* Fix ill-chosen use of "private" as an argument and struct field name.Tom Lane2010-12-27
| | | | | | "private" is a keyword in C++, so this breaks the poorly-enforced policy that header files should be include-able in C++ code. Per report from Craig Ringer and some investigation with cpluspluscheck.
* Only build in crashdump support on Windows if there's a working dbghelp.h.Andrew Dunstan2010-12-26
|
* Remove quotes from boolean recovery.conf.sample parameters, now that theBruce Momjian2010-12-24
| | | | | quotes are not required. This now matches postgresql.conf's specification of booleans.
* Improve "pg_ctl -w start" server detection by writing the postmasterBruce Momjian2010-12-24
| | | | | port and socket directory into postmaster.pid, and have pg_ctl read from that file, for use by PQping().
* Rewrite the GiST insertion logic so that we don't need the post-recoveryHeikki Linnakangas2010-12-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | cleanup stage to finish incomplete inserts or splits anymore. There was two reasons for the cleanup step: 1. When a new tuple was inserted to a leaf page, the downlink in the parent needed to be updated to contain (ie. to be consistent with) the new key. Updating the parent in turn might require recursively updating the parent of the parent. We now handle that by updating the parent while traversing down the tree, so that when we insert the leaf tuple, all the parents are already consistent with the new key, and the tree is consistent at every step. 2. When a page is split, we need to insert the downlink for the new right page(s), and update the downlink for the original page to not include keys that moved to the right page(s). We now handle that by setting a new flag, F_FOLLOW_RIGHT, on the non-rightmost pages in the split. When that flag is set, scans always follow the rightlink, regardless of the NSN mechanism used to detect concurrent page splits. That way the tree is consistent right after split, even though the downlink is still missing. This is very similar to the way B-tree splits are handled. When the downlink is inserted in the parent, the flag is cleared. To keep the insertion algorithm simple, when an insertion sees an incomplete split, indicated by the F_FOLLOW_RIGHT flag, it finishes the split before doing anything else. These changes allow removing the whole "invalid tuple" mechanism, but I retained the scan code to still follow invalid tuples correctly. While we don't create any such tuples anymore, we want to handle them gracefully in case you pg_upgrade a GiST index that has them. If we encounter any on an insert, though, we just throw an error saying that you need to REINDEX. The issue that got me into doing this is that if you did a checkpoint while an insert or split was in progress, and the checkpoint finishes quickly so that there is no WAL record related to the insert between RedoRecPtr and the checkpoint record, recovery from that checkpoint would not know to finish the incomplete insert. IOW, we have the same issue we solved with the rm_safe_restartpoint mechanism during normal operation too. It's highly unlikely to happen in practice, and this fix is far too large to backpatch, so we're just going to live with in previous versions, but this refactoring fixes it going forward. With this patch, you don't get the annoying 'index "FOO" needs VACUUM or REINDEX to finish crash recovery' notices anymore if you crash at an unfortunate moment.
* Use memcmp() rather than strncmp() when shorter string length is known.Robert Haas2010-12-21
| | | | | | | It appears that this will be faster for all but the shortest strings; at least one some platforms, memcmp() can use word-at-a-time comparisons. Noah Misch, somewhat pared down.
* Fix typos.Robert Haas2010-12-21
| | | | Andreas Karlsson
* Work around unfortunate getppid() behavior on BSD-ish systems.Robert Haas2010-12-21
| | | | | | | | | | | | | | | | | On MacOS X, and apparently also on other BSD-derived systems, attaching a debugger causes getppid() to return the pid of the debugging process rather than the actual parent PID. As a result, debugging the autovacuum launcher, startup process, or WAL sender on such systems causes it to exit, because the previous coding of PostmasterIsAlive() detects postmaster death by testing whether getppid() == PostmasterPid. Work around that behavior by checking the return value of getppid() more carefully. If it's PostmasterPid, the postmaster must be alive; if it's 1, assume the postmaster is dead. If it's any other value, assume we've been debugged and fall through to the less-reliable kill() test. Review by Tom Lane.
* Allow transactions that don't write WAL to commit asynchronously.Robert Haas2010-12-20
| | | | | | | | This case can arise if a transaction has written data, but only to temporary tables. Loss of the commit record in case of a crash won't matter, because the temporary tables will be lost anyway. Reviewed by Heikki Linnakangas and Simon Riggs.
* Remove thread dumping constant that requires newer Platform SDKMagnus Hagander2010-12-19
| | | | | | | Since we're not multithreaded it only provides marginally useful information, and it does require a newer version of the Platform SDK than we target. We may want to reconsider this in the future along with a fix for MinGW.
* Fix up handling of simple-form CASE with constant test expression.Tom Lane2010-12-19
| | | | | | | | | | | | | | | | | | | | | | | | | eval_const_expressions() can replace CaseTestExprs with constants when the surrounding CASE's test expression is a constant. This confuses ruleutils.c's heuristic for deparsing simple-form CASEs, leading to Assert failures or "unexpected CASE WHEN clause" errors. I had put in a hack solution for that years ago (see commit 514ce7a331c5bea8e55b106d624e55732a002295 of 2006-10-01), but bug #5794 from Peter Speck shows that that solution failed to cover all cases. Fortunately, there's a much better way, which came to me upon reflecting that Peter's "CASE TRUE WHEN" seemed pretty redundant: we can "simplify" the simple-form CASE to the general form of CASE, by simply omitting the constant test expression from the rebuilt CASE construct. This is intuitively valid because there is no need for the executor to evaluate the test expression at runtime; it will never be referenced, because any CaseTestExprs that would have referenced it are now replaced by constants. This won't save a whole lot of cycles, since evaluating a Const is pretty cheap, but a cycle saved is a cycle earned. In any case it beats kluging ruleutils.c still further. So this patch improves const-simplification and reverts the previous change in ruleutils.c. Back-patch to all supported branches. The bug exists in 8.1 too, but it's out of warranty.
* Fix erroneous parsing of tsquery input "... & !(subexpression) | ..."Tom Lane2010-12-19
| | | | | | | | | | | After parsing a parenthesized subexpression, we must pop all pending ANDs and NOTs off the stack, just like the case for a simple operand. Per bug #5793. Also fix clones of this routine in contrib/intarray and contrib/ltree, where input of types query_int and ltxtquery had the same problem. Back-patch to all supported versions.
* Support for collecting crash dumps on WindowsMagnus Hagander2010-12-19
| | | | | | | | | | Add support for collecting "minidump" style crash dumps on Windows, by setting up an exception handling filter. Crash dumps will be generated in PGDATA/crashdumps if the directory is created (the existance of the directory is used as on/off switch for the generation of the dumps). Craig Ringer and Magnus Hagander
* Make GUC variables for syslog and SSL always visibleMagnus Hagander2010-12-18
| | | | | Make the variables visible (but not used) even when support is not compiled in.
* set_ps_display when calling functions via fastpathAlvaro Herrera2010-12-17
| | | | This improves tag output by log_line_prefix
* Remove unnecessary definition for autovacuum in SignalSomeChildren.Alvaro Herrera2010-12-17
|
* Try to save a kernel call in ResolveRecoveryConflictWithVirtualXIDs.Robert Haas2010-12-17
| | | | If there's no work to be done, just exit quickly, before initialization.
* Reset 'ps' display just once when resolving VXID conflicts.Robert Haas2010-12-17
| | | | | | | | | | | This prevents the word "waiting" from briefly disappearing from the ps status line when ResolveRecoveryConflictWithVirtualXIDs begins a new iteration of the outer loop. Along the way, remove some useless pgstat_report_waiting() calls; the startup process doesn't appear in pg_stat_activity. Fujii Masao
* Improve comments around startup_hacks() code.Tom Lane2010-12-16
| | | | | | | These comments were not updated when we added the EXEC_BACKEND mechanism for Windows, even though it rendered them inaccurate. Also unify two unnecessarily-separate #ifdef __alpha code blocks.
* Remove optreset from src/port/ implementations of getopt and getopt_long.Tom Lane2010-12-16
| | | | | | | | | | We don't actually need optreset, because we can easily fix the code to ensure that it's cleanly restartable after having completed a scan over the argv array; which is the only case we need to restart in. Getting rid of it avoids a class of interactions with the system libraries and allows reversion of my change of yesterday in postmaster.c and postgres.c. Back-patch to 8.4. Before that the getopt code was a bit different anyway.
* Simplify SignalSomeChildren(BACKEND_TYPE_ALL) to SignalChildren()Alvaro Herrera2010-12-16
|
* Fix up getopt() reset management so it works on recent mingw.Tom Lane2010-12-15
| | | | | | | | | The mingw people don't appear to care about compatibility with non-GNU versions of getopt, so force use of our own copy of getopt on Windows. Also, ensure that we make use of optreset when using our own copy. Per report from Andrew Dunstan. Back-patch to all versions supported on Windows.
* Some copy editing of pg_read_binary_file() patch.Robert Haas2010-12-15
|
* Add pg_read_binary_file() and whole-file-at-once versions of pg_read_file().Itagaki Takahiro2010-12-16
| | | | | | | One of the usages of the binary version is to read files in a different encoding from the server encoding. Dimitri Fontaine and Itagaki Takahiro.
* Instrument checkpoint sync calls.Robert Haas2010-12-14
| | | | Greg Smith, reviewed by Jeff Janes
* Allow plugins to suppress inlining and hook function entry/exit/abort.Robert Haas2010-12-13
| | | | | | | This is intended as infrastructure to allow an eventual SE-Linux plugin to support trusted procedures. KaiGai Kohei
* Generalize concept of temporary relations to "relation persistence".Robert Haas2010-12-13
| | | | | | | | | | | | | | | This commit replaces pg_class.relistemp with pg_class.relpersistence; and also modifies the RangeVar node type to carry relpersistence rather than istemp. It also removes removes rd_istemp from RelationData and instead performs the correct computation based on relpersistence. For clarity, we add three new macros: RelationNeedsWAL(), RelationUsesLocalBuffers(), and RelationUsesTempNamespace(), so that we can clarify the purpose of each check that previous depended on rd_istemp. This is intended as infrastructure for the upcoming unlogged tables patch, as well as for future possible work on global temporary tables.