summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2012-06-20Increase MAX_SYSCACHE_CALLBACKS from 20 to 32.Tom Lane
By my count there are 18 callers of CacheRegisterSyscacheCallback in the core code in HEAD, so we are potentially leaving as few as 2 slots for any add-on code to use (though possibly not all these callers would actually activate in any particular session). That doesn't seem like a lot of headroom, so let's pump it up a little.
2012-06-20Cache the results of ri_FetchConstraintInfo in a backend-local cache.Tom Lane
Extracting data from pg_constraint turned out to take as much as 10% of the runtime in a bulk-update case where the foreign key column wasn't changing, because we did it over again for each tuple. Fix that by maintaining a backend-local cache of the results. This is really a pretty small patch, but converting the trigger functions to work with pointers rather than local struct variables requires a lot of mechanical changes.
2012-06-19Improve tests for whether we can skip queueing RI enforcement triggers.Tom Lane
During an update of a PK row, we can skip firing the RI trigger if any old key value is NULL, because then the row could not have had any matching rows in the FK table. Conversely, during an update of an FK row, the outcome is determined if any new key value is NULL. In either case it becomes unnecessary to compare individual key values. This patch was inspired by discussion of Vik Reykja's patch to use IS NOT DISTINCT semantics for the key comparisons. In the event there is no need for that and so this patch looks nothing like his, but he should still get credit for having re-opened consideration of the trigger skip logic.
2012-06-19pg_dump: Fix verbosity level in LO progress messagesAlvaro Herrera
In passing, reword another instance of the same message that was gratuitously different. Author: Josh Kupershmidt after a bug report by Bosco Rama
2012-06-19Share RI trigger code between NO ACTION and RESTRICT cases.Tom Lane
These triggers are identical except for whether ri_Check_Pk_Match is to be called, so factor out the common code to save a couple hundred lines. Also, eliminate null-column checks in ri_Check_Pk_Match, since they're duplicate with the calling functions and require unnecessary complication in its API statement. Simplify the way code is shared between RI_FKey_check_ins and RI_FKey_check_upd, too.
2012-06-18Improve comments about why SET DEFAULT triggers must recheck for matches.Tom Lane
I was confused about this, so try to make it clearer for the next person. (This seems like a fairly inefficient way of dealing with a corner case, but I don't have a better idea offhand. Maybe if there were a way to turn off the RI_FKey_keyequal_upd_fk event filter temporarily?)
2012-06-18Allow ON UPDATE/DELETE SET DEFAULT plans to be cached.Tom Lane
Once upon a time, somebody was worried that cached RI plans wouldn't get remade with new default values after ALTER TABLE ... SET DEFAULT, so they didn't allow caching of plans for ON UPDATE/DELETE SET DEFAULT actions. That time is long gone, though (and even at the time I doubt this was the greatest hazard posed by ALTER TABLE...). So allow these triggers to cache their plans just like the others. The cache_plan argument to ri_PlanCheck is now vestigial, since there are no callers that don't pass "true"; but I left it alone in case there is any future need for it.
2012-06-18Remove derived fields from RI_QueryKey, and do a bit of other cleanup.Tom Lane
We really only need the foreign key constraint's OID and the query type code to uniquely identify each plan we are caching for FK checks. The other stuff that was in the struct had no business being used as part of a hash key, and was all just being copied from struct RI_ConstraintInfo anyway. Get rid of the unnecessary fields, and readjust various function APIs to make them use RI_ConstraintInfo not RI_QueryKey as info source. I'd be surprised if this makes any measurable performance difference, but it certainly feels cleaner.
2012-06-18pg_dump: Add missing newlines at end of messagesPeter Eisentraut
2012-06-18Update SQL spec references in ri_triggers code to match SQL:2008.Tom Lane
Now that what we're implementing isn't SQL92, we probably shouldn't cite chapter and verse in that spec anymore. Also fix some comments that talked about MATCH FULL but in fact were in code that's also used for MATCH SIMPLE. No code changes in this commit, just comments.
2012-06-18Change ON UPDATE SET NULL/SET DEFAULT referential actions to meet SQL spec.Tom Lane
Previously, when executing an ON UPDATE SET NULL or SET DEFAULT action for a multicolumn MATCH SIMPLE foreign key constraint, we would set only those referencing columns corresponding to referenced columns that were changed. This is what the SQL92 standard said to do --- but more recent versions of the standard say that all referencing columns should be set to null or their default values, no matter exactly which referenced columns changed. At least for SET DEFAULT, that is clearly saner behavior. It's somewhat debatable whether it's an improvement for SET NULL, but it appears that other RDBMS systems read the spec this way. So let's do it like that. This is a release-notable behavioral change, although considering that our documentation already implied it was done this way, the lack of complaints suggests few people use such cases.
2012-06-17Refer to the default foreign key match style as MATCH SIMPLE internally.Tom Lane
Previously we followed the SQL92 wording, "MATCH <unspecified>", but since SQL99 there's been a less awkward way to refer to the default style. In addition to the code changes, pg_constraint.confmatchtype now stores this match style as 's' (SIMPLE) rather than 'u' (UNSPECIFIED). This doesn't affect pg_dump or psql because they use pg_get_constraintdef() to reconstruct foreign key definitions. But other client-side code might examine that column directly, so this change will have to be marked as an incompatibility in the 9.3 release notes.
2012-06-18Make documentation of --help and --version options more consistentPeter Eisentraut
Before, some places didn't document the short options (-? and -V), some documented both, some documented nothing, and they were listed in various orders. Now this is hopefully more consistent and complete.
2012-06-17Fix stats collector to recover nicely when system clock goes backwards.Tom Lane
Formerly, if the system clock went backwards, the stats collector would fail to update the stats file any more until the clock reading again exceeds whatever timestamp was last written into the stats file. Such glitches in the clock's behavior are not terribly unlikely on machines not using NTP. Such a scenario has been observed to cause regression test failures in the buildfarm, and it could have bad effects on the behavior of autovacuum, so it seems prudent to install some defenses. We could directly detect the clock going backwards by adding GetCurrentTimestamp calls in the stats collector's main loop, but that would hurt performance on platforms where GetCurrentTimestamp is expensive. To minimize the performance hit in normal cases, adopt a more complicated scheme wherein backends check for clock skew when reading the stats file, and if they see it, signal the stats collector by sending an extra stats inquiry message. The stats collector does an extra GetCurrentTimestamp only when it receives an inquiry with an apparently out-of-order timestamp. To avoid unnecessary GetCurrentTimestamp calls, expand the inquiry messages to carry the backend's current clock reading as well as its stats cutoff time. The latter, being intentionally slightly in-the-past, would trigger more clock rechecks than we need if it were used for this purpose. We might want to backpatch this change at some point, but let's let it shake out in the buildfarm for awhile first.
2012-06-16Remove 'for' loop perltidy argument, and move args to perltidyrc file.Bruce Momjian
Backpatch to 9.2. Per suggestion from Noah Misch
2012-06-15In pgindent, suppress reading the perltidy RC file using --noprofile.Bruce Momjian
2012-06-15Update pgindent Perl indentation instructions based on feedback fromBruce Momjian
Àlvaro and Noah Misch. Backpatch to 9.2.
2012-06-15Improve reporting of permission errors for array typesPeter Eisentraut
Because permissions are assigned to element types, not array types, complaining about permission denied on an array type would be misleading to users. So adjust the reporting to refer to the element type instead. In order not to duplicate the required logic in two dozen places, refactor the permission denied reporting for types a bit. pointed out by Yeb Havinga during the review of the type privilege feature
2012-06-15Add more message pluralizationPeter Eisentraut
Even though we can't do much about the case with multiple plurals in one sentence, we can fix the other cases.
2012-06-14Improve readability and error messages in pg_backup_start_time.Robert Haas
Gurjeet Singh, with corrections by me.
2012-06-14New SQL functons pg_backup_in_progress() and pg_backup_start_time()Robert Haas
Darold Gilles, reviewed by Gabriele Bartolini and others, rebased by Marco Nenciarini. Stylistic cleanup and OID fixes by me.
2012-06-14During transaction cleanup, release locks before deleting files.Robert Haas
There's no need to hold onto the locks until the files are needed, and by doing it this way, we reduce the impact on other backends who may be awaiting locks we hold. Noah Misch
2012-06-14Add new function log_newpage_buffer.Robert Haas
When I implemented the ginbuildempty() function as part of implementing unlogged tables, I falsified the note in the header comment for log_newpage. Although we could fix that up by changing the comment, it seems cleaner to add a new function which is specifically intended to handle this case. So do that.
2012-06-14Remove misplaced sanity check from heap_create().Robert Haas
Even when allow_system_table_mods is not set, we allow creation of any type of SQL object in pg_catalog, except for relations. And you can get relations into pg_catalog, too, by initially creating them in some other schema and then moving them with ALTER .. SET SCHEMA. So this restriction, which prevents relations (only) from being created in pg_catalog directly, is fairly pointless. If we need a safety mechanism for this, it should be placed further upstream, so that it affects all SQL objects uniformly, and picks up both CREATE and SET SCHEMA. For now, just rip it out, per discussion with Tom Lane.
2012-06-14Remove RELKIND_UNCATALOGED.Robert Haas
This may have been important at some point in the past, but it no longer does anything useful. Review by Tom Lane.
2012-06-14Make \conninfo print SSL information.Robert Haas
Alastair Turner, per suggestion from Bruce Momjian.
2012-06-13Add 9.2 branch to git_changelog's list.Tom Lane
2012-06-13Flesh out RELEASE_CHANGES instructions for branching in git.Tom Lane
We have this info in the wiki, but it should be here too.
2012-06-13Stamp library minor versions for 9.3.Tom Lane
This includes fixing the MSVC copy of ecpg/preproc's version info, which seems to have been overlooked repeatedly. Can't we fix that so there are not two copies??
2012-06-13Stamp HEAD as 9.3devel.Tom Lane
Let the hacking begin ...
2012-06-13Revisit error message details for JSON input parsing.Tom Lane
Instead of identifying error locations only by line number (which could be entirely unhelpful with long input lines), provide a fragment of the input text too, placing this info in a new CONTEXT entry. Make the error detail messages conform more closely to style guidelines, fix failure to expose some of them for translation, ensure compiler can check formats against supplied parameters.
2012-06-13Revert "Reduce checkpoints and WAL traffic on low activity database server"Tom Lane
This reverts commit 18fb9d8d21a28caddb72c7ffbdd7b96d52ff9724. Per discussion, it does not seem like a good idea to allow committed changes to go un-checkpointed indefinitely, as could happen in a low-traffic server; that makes us entirely reliant on the WAL stream with no redundancy that might aid data recovery in case of disk failure. This re-introduces the original problem of hot-standby setups generating a small continuing stream of WAL traffic even when idle, but there are other ways to address that without compromising crash recovery, so we'll revisit that issue in a future release cycle.
2012-06-13Deprecate use of GLOBAL and LOCAL in temp table creation.Tom Lane
Aside from adjusting the documentation to say that these are deprecated, we now report a warning (not an error) for use of GLOBAL, since it seems fairly likely that we might change that to request SQL-spec-compliant temp table behavior in the foreseeable future. Although our handling of LOCAL is equally nonstandard, there is no evident interest in ever implementing SQL modules, and furthermore some other products interpret LOCAL as behaving the same way we do. So no expectation of change and no warning for LOCAL; but it still seems a good idea to deprecate writing it. Noah Misch
2012-06-13Support Linux's oom_score_adj API as well as the older oom_adj API.Tom Lane
The simplest way to handle this is just to copy-and-paste the relevant code block in fork_process.c, so that's what I did. (It's possible that something more complicated would be useful to packagers who want to work with either the old or the new API; but at this point the number of such people is rapidly approaching zero, so let's just get the minimal thing done.) Update relevant documentation as well.
2012-06-13Improve documentation of postgres -C optionPeter Eisentraut
Clarify help (s/return/print/), and explain that this option is for use by other programs, not for user-facing use (it does not print units).
2012-06-12Minor code review for json.c.Tom Lane
Improve commenting, conform to project style for use of ++ etc. No functional changes.
2012-06-12Mark JSON error detail messages for translation.Robert Haas
Per gripe from Tom Lane.
2012-06-11Ensure pg_ctl behaves sanely when data directory is not specified.Tom Lane
Commit aaa6e1def292cdacb6b27088898793b1b879fedf introduced multiple hazards in the case where pg_ctl is executed with neither a -D switch nor any PGDATA environment variable. It would dump core on machines which are unforgiving about printf("%s", NULL), or failing that possibly give a rather unhelpful complaint about being unable to execute "postgres -C", rather than the logically prior complaint about not being told where the data directory is. Edmund Horner's report suggests that there is another, Windows-specific hazard here, but I'm not the person to fix that; it would in any case only be significant when trying to use a config-only PGDATA pointer.
2012-06-11Fix pg_dump output to a named tar-file archive.Tom Lane
"pg_dump -Ft -f filename ..." got broken by my recent commit 4317e0246c645f60c39e6572644cff1cb03b4c65, which I fear I only tested in the output-to-stdout variant. Report and fix by Muhammad Asif Naeem.
2012-06-12pg_receivexlog: Rename option --dir to --directoryPeter Eisentraut
getopt_long() allows abbreviating long options, so we might as well give the option the full name, and users can abbreviate it how they like. Do some general polishing of the --help output at the same time.
2012-06-11Prevent non-streaming replication connections from being selected sync slaveMagnus Hagander
This prevents a pg_basebackup backup session that just does a base backup (no xlog involved at all) from becoming the synchronous slave and thus blocking all access while it runs. Also fixes the problem when a higher priority slave shows up it would become the sync standby before it has reached the STREAMING state, by making sure we can only switch to a walsender that's actually STREAMING. Fujii Masao
2012-06-11Revert behaviour of -x/--xlog to 9.1 semanticsMagnus Hagander
To replace it, add -X/--xlog-method that allows the specification of fetch or stream. Do this to avoid unnecessary backwards-incompatiblity. Spotted and suggested by Peter Eisentraut.
2012-06-10Run pgindent on 9.2 source tree in preparation for first 9.3Bruce Momjian
commit-fest.
2012-06-10Update pgindent install instructions and update typedef list.Bruce Momjian
2012-06-10Fix pg_basebackup/pg_receivexlog for floating point timestampsMagnus Hagander
Since the replication protocol deals with TimestampTz, we need to care for the floating point case as well in the frontend tools. Fujii Masao, with changes from Magnus Hagander
2012-06-10Error message capitalization fixMagnus Hagander
2012-06-10Make include files work without having to include other ones firstPeter Eisentraut
2012-06-10Revert error message on GLOBAL/LOCAL pending further discussionSimon Riggs
2012-06-09Add ERROR msg for GLOBAL/LOCAL TEMP is not yet implementedSimon Riggs
2012-06-08Fix bug in early startup of Hot Standby with subtransactions.Simon Riggs
When HS startup is deferred because of overflowed subtransactions, ensure that we re-initialize KnownAssignedXids for when both existing and incoming snapshots have non-zero qualifying xids. Fixes bug #6661 reported by Valentine Gogichashvili. Analysis and fix by Andres Freund