summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-03-20pg_upgrade: Add new generated file to .gitignorePeter Eisentraut
2012-03-20pg_dump: Remove undocumented "files" output formatPeter Eisentraut
This was for demonstration only, and now it was creating compiler warnings from zlib without an obvious fix (see also d923125b77c5d698bb8107a533a21627582baa43), let's just remove it. The "directory" format is presumably similar enough anyway.
2012-03-19Restructure SELECT INTO's parsetree representation into CreateTableAsStmt.Tom Lane
Making this operation look like a utility statement seems generally a good idea, and particularly so in light of the desire to provide command triggers for utility statements. The original choice of representing it as SELECT with an IntoClause appendage had metastasized into rather a lot of places, unfortunately, so that this patch is a great deal more complicated than one might at first expect. In particular, keeping EXPLAIN working for SELECT INTO and CREATE TABLE AS subcommands required restructuring some EXPLAIN-related APIs. Add-on code that calls ExplainOnePlan or ExplainOneUtility, or uses ExplainOneQuery_hook, will need adjustment. Also, the cases PREPARE ... SELECT INTO and CREATE RULE ... SELECT INTO, which formerly were accepted though undocumented, are no longer accepted. The PREPARE case can be replaced with use of CREATE TABLE AS EXECUTE. The CREATE RULE case doesn't seem to have much real-world use (since the rule would work only once before failing with "table already exists"), so we'll not bother with that one. Both SELECT INTO and CREATE TABLE AS still return a command tag of "SELECT nnnn". There was some discussion of returning "CREATE TABLE nnnn", but for the moment backwards compatibility wins the day. Andres Freund and Tom Lane
2012-03-19pg_dump: fix double free of query resultsAlvaro Herrera
This bug was introduced while refactoring in commit 1631598e --- no need to back-patch. Bug report and fix from Joachim Wieland.
2012-03-19plperl: Package-qualify _TDAlvaro Herrera
Failing to do so causes trigger invocation to fail when they are nested within a function invocation that changes the current package. Backpatch to 9.1; previous releases used a different method to obtain _TD. Per bug report from Mark Murawski (bug #6511) Author: Alex Hunsaker
2012-03-19In pg_upgrade, remove dependency on pg_config, as that might not be inBruce Momjian
the non-development install. Instead, use the LOAD mechanism to check for the pg_upgrade_support shared object, like we do for other shared object checks. Backpatch to 9.1. Report from Àlvaro
2012-03-17Honor inputdir and outputdir when converting regression files.Andrew Dunstan
When converting source files, pg_regress' inputdir and outputdir options were ignored when computing the locations of the destination files. In consequence, these options were effectively unusable when the regression inputs need to be adjusted by pg_regress. This patch makes pg_regress put the converted files in the same place that these options specify non-converted input or results files are to be found. Backpatched to all live branches.
2012-03-17In pg_upgrade, move new echo quote define into include file.Bruce Momjian
2012-03-17Add note about column privilege behavior to REVOKE reference pagePeter Eisentraut
suggested by Josh Berkus
2012-03-16In pg_upgrade, create a script to incrementally generate more accurateBruce Momjian
optimizer statistics so the cluster can be made available sooner.
2012-03-16libpq: Fix minor memory leaksPeter Eisentraut
When using connection info arrays with a conninfo string in the dbname slot, some memory would be leaked if an error occurred while processing the following array slots. found by Coverity
2012-03-16psql: Remove inappropriate const qualifiersPeter Eisentraut
Since mbvalidate() can alter the string it validates, having the callers claim that the strings they accept are const is inappropriate.
2012-03-16pg_dump: Fix crash with invalid pg_cast rowPeter Eisentraut
An invalid combination of pg_cast.castfunc and pg_cast.castmethod would result in a segmentation fault. Now it prints a warning. found by Coverity
2012-03-16pg_restore: Fix memory and file descriptor leak with directory formatPeter Eisentraut
found by Coverity
2012-03-16backend: Fix minor memory leak in configuration file processingPeter Eisentraut
Just for consistency with the other code paths. found by Coverity
2012-03-16Improve commentary in match_pathkeys_to_index().Tom Lane
For a little while there I thought match_pathkeys_to_index() was broken because it wasn't trying to match index columns to pathkeys in order. Actually that's correct, because GiST can support ordering operators on any random collection of index columns, but it sure needs a comment.
2012-03-16Revisit handling of UNION ALL subqueries with non-Var output columns.Tom Lane
In commit 57664ed25e5dea117158a2e663c29e60b3546e1c I tried to fix a bug reported by Teodor Sigaev by making non-simple-Var output columns distinct (by wrapping their expressions with dummy PlaceHolderVar nodes). This did not work too well. Commit b28ffd0fcc583c1811e5295279e7d4366c3cae6c fixed some ensuing problems with matching to child indexes, but per a recent report from Claus Stadler, constraint exclusion of UNION ALL subqueries was still broken, because constant-simplification didn't handle the injected PlaceHolderVars well either. On reflection, the original patch was quite misguided: there is no reason to expect that EquivalenceClass child members will be distinct. So instead of trying to make them so, we should ensure that we can cope with the situation when they're not. Accordingly, this patch reverts the code changes in the above-mentioned commits (though the regression test cases they added stay). Instead, I've added assorted defenses to make sure that duplicate EC child members don't cause any problems. Teodor's original problem ("MergeAppend child's targetlist doesn't match MergeAppend") is addressed more directly by revising prepare_sort_from_pathkeys to let the parent MergeAppend's sort list guide creation of each child's sort list. In passing, get rid of add_sort_column; as far as I can tell, testing for duplicate sort keys at this stage is dead code. Certainly it doesn't trigger often enough to be worth expending cycles on in ordinary queries. And keeping the test would've greatly complicated the new logic in prepare_sort_from_pathkeys, because comparing pathkey list entries against a previous output array requires that we not skip any entries in the list. Back-patch to 9.1, like the previous patches. The only known issue in this area that wasn't caused by the ill-advised previous patches was the MergeAppend planning failure, which of course is not relevant before 9.1. It's possible that we need some of the new defenses against duplicate child EC entries in older branches, but until there's some clear evidence of that I'm going to refrain from back-patching further.
2012-03-16Add comments explaining why our Itanium spinlock implementation is safe.Heikki Linnakangas
2012-03-15A couple more fixes for the sepgsql documentation.Robert Haas
2012-03-15Copy editing of sepgsql documentation.Robert Haas
2012-03-15sepgsql_setcon().Robert Haas
This is intended as infrastructure to allow sepgsql to cooperate with connection pooling software, by allowing the effective security label to be set for each new connection. KaiGai Kohei, reviewed by Yeb Havinga.
2012-03-15Add const qualifier to tzn returned by timestamp2tm()Peter Eisentraut
The tzn value might come from tm->tm_zone, which libc declares as const, so it's prudent that the upper layers know about this as well.
2012-03-15Remove unused tzn arguments for timestamp2tm()Peter Eisentraut
2012-03-14Uppercase pg_upgrade status output title.Bruce Momjian
2012-03-14Improve EncodeDateTime and EncodeTimeOnly APIsPeter Eisentraut
Use an explicit argument to tell whether to include the time zone in the output, rather than using some undocumented pointer magic.
2012-03-14Add missing va_end() callsPeter Eisentraut
found by Coverity
2012-03-14COPY: Add an assertionPeter Eisentraut
This is for tools such as Coverity that don't know that the grammar enforces that the case of not having a relation (but instead a query) cannot happen in the FROM case.
2012-03-14Add additional safety check against invalid backup label filePeter Eisentraut
It was already checking for invalid data after "BACKUP FROM", but would possibly crash if "BACKUP FROM" was missing altogether. found by Coverity
2012-03-13pg_dump: Fix some minor memory leaksPeter Eisentraut
Although we often don't care about freeing all memory in pg_dump, these functions already freed the same memory in other code paths, so we might as well do it consistently. found by Coverity
2012-03-13Patch some corner-case bugs in pl/python.Tom Lane
Dave Malcolm of Red Hat is working on a static code analysis tool for Python-related C code. It reported a number of problems in plpython, most of which were failures to check for NULL results from object-creation functions, so would only be an issue in very-low-memory situations. Patch in HEAD and 9.1. We could go further back but it's not clear that these issues are important enough to justify the work. Jan Urbański
2012-03-13Fix minor memory leak in PLy_typeinfo_dealloc().Tom Lane
We forgot to free the per-attribute array element descriptors. Jan Urbański
2012-03-13Create a stack of pl/python "execution contexts".Tom Lane
This replaces the former global variable PLy_curr_procedure, and provides a place to stash per-call-level information. In particular we create a per-call-level scratch memory context. For the moment, the scratch context is just used to avoid leaking memory from datatype output function calls in PLyDict_FromTuple. There probably will be more use-cases in future. Although this is a fix for a pre-existing memory leakage bug, it seems sufficiently invasive to not want to back-patch; it feels better as part of the major rearrangement of plpython code that we've already done as part of 9.2. Jan Urbański
2012-03-13pgstattuple: Use a BufferAccessStrategy object to avoid cache-trashing.Robert Haas
Jaime Casanova, reviewed by Noah Misch, slightly modified by me.
2012-03-13pgstattuple: Add new error case for spgist indexes.Robert Haas
Extracted from a larger patch by Jaime Casanova, reviewed by Noah Misch. I think this error message could use some more extensive revision, but this at least makes the handling of spgist consistent with what we do for other types of indexes that this code doesn't know how to handle.
2012-03-12In pg_upgrade, add various logging improvements:Bruce Momjian
add ability to control permissions of created files have psql echo its queries for easier debugging output four separate log files, and delete them on success add -r/--retain option to keep log files after success make logs file append-only remove -g/-G/-l logging options sugggest tailing appropriate log file on failure enhance -v/--verbose behavior
2012-03-12Fix SPGiST vacuum algorithm to handle concurrent tuple motion properly.Tom Lane
A leaf tuple that we need to delete could get moved as a consequence of an insertion happening concurrently with the VACUUM scan. If it moves from a page past the current scan point to a page before, we'll miss it, which is not acceptable. Hence, when we see a leaf-page REDIRECT that could have been made since our scan started, chase down the redirection pointer much as if we were doing a normal index search, and be sure to vacuum every page it leads to. This fixes the issue because, if the tuple was on page N at the instant we start our scan, we will surely find it as a consequence of chasing the redirect from page N, no matter how much it moves around in between. Problem noted by Takashi Yamamoto.
2012-03-12Use correct sizeof operand in qsort callPeter Eisentraut
Probably no practical impact, since all pointers ought to have the same size, but it was wrong nonetheless. Found by Coverity.
2012-03-12Add comment for missing break in switchPeter Eisentraut
For clarity, following other sites, and to silence Coverity.
2012-03-12Remove tabs in SGML filesBruce Momjian
2012-03-11Make INSERT/UPDATE queries depend on their specific target columns.Tom Lane
We have always created a whole-table dependency for the target relation, but that's not really good enough, as it doesn't prevent scenarios such as dropping an individual target column or altering its type. So we have to create an individual dependency for each target column, as well. Per report from Bill MacArthur of a rule containing UPDATE breaking after such an alteration. Note that this patch doesn't try to make such cases work, only to ensure that the attempted ALTER TABLE throws an error telling you it can't cope with adjusting the rule. This is a long-standing bug, but given the lack of prior reports I'm not going to risk back-patching it. A back-patch wouldn't do anything to fix existing rules' dependency lists, anyway.
2012-03-11Make parameter name consistent with syntax summary.Tom Lane
Thomas Hunger
2012-03-11Fix documented type of t_infomask2.Tom Lane
Per Koizumi Satoru
2012-03-11Teach SPGiST to store nulls and do whole-index scans.Tom Lane
This patch fixes the other major compatibility-breaking limitation of SPGiST, that it didn't store anything for null values of the indexed column, and so could not support whole-index scans or "x IS NULL" tests. The approach is to create a wholly separate search tree for the null entries, and use fixed "allTheSame" insertion and search rules when processing this tree, instead of calling the index opclass methods. This way the opclass methods do not need to worry about dealing with nulls. Catversion bump is for pg_am updates as well as the change in on-disk format of SPGiST indexes; there are some tweaks in SPGiST WAL records as well. Heavily rewritten version of a patch by Oleg Bartunov and Teodor Sigaev. (The original also stored nulls separately, but it reused GIN code to do so; which required undesirable compromises in the on-disk format, and would likely lead to bugs due to the GIN code being required to work in two very different contexts.)
2012-03-11Removed redundant "the" from ecpg's docs.Michael Meskes
Typo spotted by Erik Rijkers.
2012-03-11Add description for --no-locale and --text-search-config.Tatsuo Ishii
2012-03-11Add more detail to error message for invalid arguments for server processPeter Eisentraut
It now prints the argument that was at fault. Also fix a small misbehavior where the error message issued by getopt() would complain about a program named "--single", because that's what argv[0] is in the server process.
2012-03-10Restructure SPGiST opclass interface API to support whole-index scans.Tom Lane
The original API definition was incapable of supporting whole-index scans because there was no way to invoke leaf-value reconstruction without checking any qual conditions. Also, it was inefficient for multiple-qual-condition scans because value reconstruction got done over again for each qual condition, and because other internal work in the consistent functions likewise had to be done for each qual. To fix these issues, pass the whole scankey array to the opclass consistent functions, instead of only letting them see one item at a time. (Essentially, the loop over scankey entries is now inside the consistent functions not outside them. This makes the consistent functions a bit more complicated, but not unreasonably so.) In itself this commit does nothing except save a few cycles in multiple-qual-condition index scans, since we can't support whole-index scans on SPGiST indexes until nulls are included in the index. However, I consider this a must-fix for 9.2 because once we release it will get very much harder to change the opclass API definition.
2012-03-10Add support for renaming constraintsPeter Eisentraut
reviewed by Josh Berkus and Dimitri Fontaine
2012-03-09sepgsql DROP support.Robert Haas
KaiGai Kohei
2012-03-09Extend object access hook framework to support arguments, and DROP.Robert Haas
This allows loadable modules to get control at drop time, perhaps for the purpose of performing additional security checks or to log the event. The initial purpose of this code is to support sepgsql, but other applications should be possible as well. KaiGai Kohei, reviewed by me.