summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2010-01-27Fix bug in wasender's xlogid boundary handling, reported by Erik Rijkers.Heikki Linnakangas
LogwrtRqst.Write can be set to non-existent FF log segment, we mustn't try to send that in XLogSend(). Also fix similar bug in ReadRecord(), which I just introduced in the ReadRecord() refactoring patch.
2010-01-27Make standby server continuously retry restoring the next WAL segment withHeikki Linnakangas
restore_command, if the connection to the primary server is lost. This ensures that the standby can recover automatically, if the connection is lost for a long time and standby falls behind so much that the required WAL segments have been archived and deleted in the master. This also makes standby_mode useful without streaming replication; the server will keep retrying restore_command every few seconds until the trigger file is found. That's the same basic functionality pg_standby offers, but without the bells and whistles. To implement that, refactor the ReadRecord/FetchRecord functions. The FetchRecord() function introduced in the original streaming replication patch is removed, and all the retry logic is now in a new function called XLogReadPage(). XLogReadPage() is now responsible for executing restore_command, launching walreceiver, and waiting for new WAL to arrive from primary, as required. This also changes the life cycle of walreceiver. When launched, it now only tries to connect to the master once, and exits if the connection fails, or is lost during streaming for any reason. The startup process detects the death, and re-launches walreceiver if necessary.
2010-01-27Add support for RADIUS authentication.Magnus Hagander
2010-01-26Various small improvements and cleanups for PL/Perl.Andrew Dunstan
- Allow (ineffective) use of 'require' in plperl If the required module is not already loaded then it dies. So "use strict;" now works in plperl. - Pre-load the feature module if perl >= 5.10. So "use feature :5.10;" now works in plperl. - Stored procedure subs are now given names. The names are not visible in ordinary use, but they make tools like Devel::NYTProf and Devel::Cover much more useful. - Simplified and generalized the subroutine creation code. Now one code path for generating sub source code, not four. Can generate multiple 'use' statements with specific imports (which handles plperl.use_strict currently and can easily be extended to handle a plperl.use_feature=':5.12' in future). - Disallows use of Safe version 2.20 which is broken for PL/Perl. http://rt.perl.org/rt3/Ticket/Display.html?id=72068 - Assorted minor optimizations by pre-growing data structures. Patch from Tim Bunce, reviewed by Alex Hunsaker.
2010-01-26Remove the default_do_language parameter, instead making DO use a hardwiredTom Lane
default of "plpgsql". This is more reasonable than it was when the DO patch was written, because we have since decided that plpgsql should be installed by default. Per discussion, having a parameter for this doesn't seem useful enough to justify the risk of application breakage if the value is changed unexpectedly.
2010-01-26Un-break initdb logic for commenting out IPv6 pg_hba.conf line.Tom Lane
2010-01-26Added test case that was part of Zoltan's patch but apparently wasn't part ↵Michael Meskes
of my commit.
2010-01-26Applied patch by Boszormenyi Zoltan <zb@cybertec.at> to add out-of-scope ↵Michael Meskes
cursor support to native mode.
2010-01-26Reformat the comments in pg_hba.conf and pg_ident.confPeter Eisentraut
These files have apparently been edited over the years by a dozen people with as many different editor settings, which made the alignment of the paragraphs quite inconsistent and ugly. I made a pass of M-q with Emacs to straighten it out.
2010-01-26Make the default pg_hba.conf and pg_ident.conf align at 8-character boundariesPeter Eisentraut
to make it easier to use with tabs.
2010-01-26Fix longstanding gripe that we check for 0000000001.history at start ofSimon Riggs
archive recovery, even when we know it is never present.
2010-01-25Add get_bit/set_bit functions for bit strings, paralleling those for bytea,Tom Lane
and implement OVERLAY() for bit strings and bytea. In passing also convert text OVERLAY() to a true built-in, instead of relying on a SQL function. Leonardo F, reviewed by Kevin Grittner
2010-01-25Add note that PREPARE TRANSACTION is for transaction managers, notHeikki Linnakangas
regular applications. Also add a comment pointing out that tab-complition for PREPARE TRANSACTION is missing on purpose.
2010-01-25Apply Tcl_Init() to the "hold" interpreter created by pltcl.Tom Lane
You might think this is unnecessary since that interpreter is never used to run code --- but it turns out that's wrong. As of Tcl 8.5, the "clock" command (alone among builtin Tcl commands) is partially implemented by loaded-on-demand Tcl code, which means that it fails if there's not unknown-command support, and also that it's impossible to run it directly in a safe interpreter. The way they get around the latter is that Tcl_CreateSlave() automatically sets up an alias command that forwards any execution of "clock" in a safe slave interpreter to its parent interpreter. Thus, when attempting to execute "clock" in trusted pltcl, the command actually executes in the "hold" interpreter, where it will fail if unknown-command support hasn't been introduced by sourcing the standard init.tcl script, which is done by Tcl_Init(). (This is a pretty dubious design decision on the Tcl boys' part, if you ask me ... but they didn't.) Back-patch all the way. It's not clear that anyone would try to use ancient versions of pltcl with a recent Tcl, but it's not clear they wouldn't, either. Also add a regression test using "clock", in branches that have regression test support for pltcl. Per recent trouble report from Kyle Bateman.
2010-01-24Fix assorted core dumps and Assert failures that could occur duringTom Lane
AbortTransaction or AbortSubTransaction, when trying to clean up after an error that prevented (sub)transaction start from completing: * access to TopTransactionResourceOwner that might not exist * assert failure in AtEOXact_GUC, if AtStart_GUC not called yet * assert failure or core dump in AfterTriggerEndSubXact, if AfterTriggerBeginSubXact not called yet Per testing by injecting elog(ERROR) at successive steps in StartTransaction and StartSubTransaction. It's not clear whether all of these cases could really occur in the field, but at least one of them is easily exposed by simple stress testing, as per my accidental discovery yesterday.
2010-01-23Insert CHECK_FOR_INTERRUPTS calls into loops in dbsize.c, to ensure thatTom Lane
the various disk-size-reporting functions will respond to query cancel reasonably promptly even in very large databases. Per report from Kevin Grittner.
2010-01-23Add explanatory detail to Hot Standby cancelation error messagesSimon Riggs
with errdetail(). Add errhint() to suggest retry in certain cases.
2010-01-23In HS, Startup process sets SIGALRM when waiting for buffer pin. IfSimon Riggs
woken by alarm we send SIGUSR1 to all backends requesting that they check to see if they are blocking Startup process. If so, they throw ERROR/FATAL as for other conflict resolutions. Deadlock stop gap removed. max_standby_delay = -1 option removed to prevent deadlock.
2010-01-22Fix several oversights in previous commit - attribute options patch.Robert Haas
I failed to 'cvs add' the new files and also neglected to bump catversion.
2010-01-22Replace ALTER TABLE ... SET STATISTICS DISTINCT with a more general mechanism.Robert Haas
Attributes can now have options, just as relations and tablespaces do, and the reloptions code is used to parse, validate, and store them. For simplicity and because these options are not performance critical, we store them in a separate cache rather than the main relcache. Thanks to Alex Hunsaker for the review.
2010-01-22PL/Python DO handlerPeter Eisentraut
Also cleaned up some redundancies between the primary error messages and the error context in PL/Python. Hannu Valtonen
2010-01-22Make argument const char * as per Takahiro Itagaki's suggestion.Michael Meskes
2010-01-22Applied patch by Boszormenyi Zoltan <zb@cybertec.at> to fix problem in ↵Michael Meskes
auto-prepare mode if the connection is closed and re-opened and the previously prepared query is issued again.
2010-01-21Fix unsafe loop test, and declare as_ident as bool rather than int.Robert Haas
2010-01-21Add new escaping functions PQescapeLiteral and PQescapeIdentifier.Robert Haas
PQescapeLiteral is similar to PQescapeStringConn, but it relieves the caller of the need to know how large the output buffer should be, and it provides the appropriate quoting (in addition to escaping special characers within the string). PQescapeIdentifier provides similar functionality for escaping identifiers. Per recent discussion with Tom Lane.
2010-01-21Add missing flag reset to ensure subsequent manual cancelation gives correct ↵Simon Riggs
reason.
2010-01-21Fix bogus comments.Heikki Linnakangas
2010-01-21Adjust psql to use pg_get_triggerdef(pretty=true) to remove extra ()'sItagaki Takahiro
from description of triggers with WHEN clause. Thanks to Brad T. Sliger for the review.
2010-01-21Better internal documentation of locking for Hot Standby conflict resolution.Simon Riggs
Discuss the reasons for the lock type we hold on ProcArrayLock while deriving the conflict list. Cover the idea of false positive conflicts and seemingly strange effects on snapshot derivation.
2010-01-20Well, the systemtap guys moved the goalposts again: with the latest version,Tom Lane
we *must* generate probes.o or the dtrace probes don't work. Revert our workaround for their previous bug. Details at https://bugzilla.redhat.com/show_bug.cgi?id=557266
2010-01-20Add user-specific .pg_service.conf filePeter Eisentraut
This extends the existing pg_service.conf facility to first look for a service definition file in the user's home directory.
2010-01-20Fix bogus subdir setting. Again. I must've unfixed it by accident whileHeikki Linnakangas
moving files around.
2010-01-20Write a WAL record whenever we perform an operation without WAL-loggingHeikki Linnakangas
that would've been WAL-logged if archiving was enabled. If we encounter such records in archive recovery anyway, we know that some data is missing from the log. A WARNING is emitted in that case. Original patch by Fujii Masao, with changes by me.
2010-01-20Now that much of walreceiver has been pulled back into the postgresHeikki Linnakangas
binary, revert PGDLLIMPORT decoration of global variables. I'm not sure if there's any real harm from unnecessary PGDLLIMPORTs, but these are all internal variables that external modules really shouldn't be messing with. ThisTimeLineID still needs PGDLLIMPORT.
2010-01-20Add missing "!= NULL", for the sake of consistency.Heikki Linnakangas
Fujii Masao
2010-01-20Adjust windows makefiles too, now that the walreceiver dynamic moduleHeikki Linnakangas
has been renamed.
2010-01-20Adjust MSVC build script too, now that the walreceiver dynamic moduleHeikki Linnakangas
has been renamed.
2010-01-20Rethink the way walreceiver is linked into the backend. Instead than shovingHeikki Linnakangas
walreceiver as whole into a dynamically loaded module, split the libpq-specific parts of it into dynamically loaded module and keep the rest in the main backend binary. Although Tom fixed the Windows compilation problems with the old walreceiver module already, this is a cleaner division of labour and makes the code more readable. There's also the prospect of adding new transport methods as pluggable modules in the future, which this patch makes easier, though for now the API between libpqwalreceiver and walreceiver process should be considered private. The libpq-specific module is now in src/backend/replication/libpqwalreceiver, and the part linked with postgres binary is in src/backend/replication/walreceiver.c.
2010-01-20Before attempting to create a composite type, check whether a type of thatPeter Eisentraut
name already exists, so we'd get an error message about a "type" instead of about a "relation", because the composite type code shares code with relation creation.
2010-01-20Fix typo in Mkvcbuild.plAndrew Dunstan
2010-01-20Build plperl's new Util.xsAndrew Dunstan
2010-01-20Add utility functions to PLPerl:Andrew Dunstan
quote_literal, quote_nullable, quote_ident, encode_bytea, decode_bytea, looks_like_number, encode_array_literal, encode_array_constructor. Split SPI.xs into two - SPI.xs now contains only SPI functions. Remainder are in new Util.xs. Some more code and documentation cleanup along the way, as well as adding some CVS markers to files missing them. Original patch from Tim Bunce, with a little editing from me.
2010-01-19When doing a parallel restore, we must guard against out-of-range dependencyTom Lane
dump IDs, because the array we're using is sized according to the highest dump ID actually defined in the archive file. In a partial dump there could be references to higher dump IDs that weren't dumped. Treat these the same as references to in-range IDs that weren't dumped. (The whole thing is a bit scary because the missing objects might have been part of dependency chains, which we won't know about. Not much we can do though --- throwing an error is probably overreaction.) Also, reject parallel restore with pre-1.8 archive version (made by pre-8.0 pg_dump). In these old versions the dependency entries are OIDs, not dump IDs, and we don't have enough information to interpret them. Per bug #5288 from Jon Erdman.
2010-01-19Fix thinko in my recent change to put an explicit argisrow field in NullTest:Tom Lane
when the planner splits apart a ROW(...) IS NULL test, the argisrow values of the component tests have to be determined from the component field types, not copied from the original NullTest (in which argisrow is surely true).
2010-01-19Add pg_stat_reset_shared('bgwriter') to reset the cluster-wide sharedMagnus Hagander
statistics of the bgwriter. Greg Smith
2010-01-19Add pg_table_size() and pg_indexes_size() to provide more user-friendlyTom Lane
wrappers around the pg_relation_size() function. Bernd Helmle, reviewed by Greg Smith
2010-01-19Add "USING expressions" option to plpgsql's OPEN cursor FOR EXECUTE.Tom Lane
This is the last EXECUTE-like plpgsql statement that was missing the capability of inserting parameter values via USING. Pavel Stehule, reviewed by Itagaki Takahiro
2010-01-18Cast slightly abused enum to int, so that GCC 4.5 won't warn about switchPeter Eisentraut
cases that are not part of the enum's definition.
2010-01-18Fix an oversight in convert_EXISTS_sublink_to_join: we can't convert anTom Lane
EXISTS that contains a WITH clause. This would usually lead to a "could not find CTE" error later in planning, because the WITH wouldn't get processed at all. Noted while playing with an example from Ken Marshall.
2010-01-18Fix incorrect comparison of scan key in GIN. Per report fromTeodor Sigaev
Vyacheslav Kalinin <vka@mgcp.com>