summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-09-26Run check_keywords.pl anytime gram.c is rebuilt.Tom Lane
This script is a bit slow, but still it only takes a fraction of the time the bison run does, so the overhead doesn't seem intolerable. And we definitely need some mechanical aid here, because people keep missing the need to add new keywords to the appropriate keyword-list production. While at it, I moved check_keywords.pl from src/tools into src/backend/parser where it's actually used, and did some very minor cleanup on the script.
2012-09-26pg_upgrade test: Disable fsync in initdb and postgres callsPeter Eisentraut
This mirrors the behavior of pg_regress and makes the test run much faster.
2012-09-26Make plpgsql's unreserved keywords more unreserved.Tom Lane
There were assorted places where unreserved keywords were not treated the same as T_WORD (that is, a random unrecognized identifier). Fix them. It might not always be possible to allow this, but it is in all these places, so I don't see any downside. Per gripe from Jim Wilson. Arguably this is a bug fix, but given the lack of other complaints and the ease of working around it (just quote the word), I won't risk back-patching.
2012-09-26Add new EVENT keyword to unreserved_keyword production.Tom Lane
Once again, somebody who ought to know better forgot this. We really need some automated cross-check on the keyword-list productions, I think. Per report from Brian Weaver.
2012-09-25Fix examples of how to use "su" while starting the server.Tom Lane
The syntax "su -c 'command' username" is not accepted by all versions of su, for example not OpenBSD's. More portable is "su username -c 'command'". So change runtime.sgml to recommend that syntax. Also, add a -D switch to the OpenBSD example script, for consistency with other examples. Per Denis Lapshin and Gábor Hidvégi.
2012-09-24Add support for include_dir in config file.Heikki Linnakangas
This allows easily splitting configuration into many files, deployed in a directory. Magnus Hagander, Greg Smith, Selena Deckelmann, reviewed by Noah Misch.
2012-09-24Prevent emitting "ALTER VIEW foo SET ()".Tom Lane
Small oversight in commit 0f524ea0cf388a149f362e48a33c01662eeddc04 ... per report from Grazvydas Valeika.
2012-09-23RELEASE_NOTES: Fix typoAlvaro Herrera
Jan Urbański
2012-09-22Update translation updates instructionsPeter Eisentraut
2012-09-22Minor corrections for ALTER TYPE ADD VALUE IF NOT EXISTS patch.Tom Lane
Produce a NOTICE when the label already exists, for consistency with other CREATE IF NOT EXISTS commands. Also, fix the code so it produces something more user-friendly than an index violation when the label already exists. This not incidentally enables making a regression test that the previous patch didn't make for fear of exposing an unpredictable OID in the results. Also some wordsmithing on the documentation.
2012-09-22Fix docs typoAndrew Dunstan
2012-09-22Allow IF NOT EXISTS when add a new enum label.Andrew Dunstan
If the label is already in the enum the statement becomes a no-op. This will reduce the pain that comes from our not allowing this operation inside a transaction block. Andrew Dunstan, reviewed by Tom Lane and Magnus Hagander.
2012-09-21Improve ruleutils.c's heuristics for dealing with rangetable aliases.Tom Lane
The previous scheme had bugs in some corner cases involving tables that had been renamed since a view was made. This could result in dumped views that failed to reload or reloaded incorrectly, as seen in bug #7553 from Lloyd Albin, as well as in some pgsql-hackers discussion back in January. Also, its behavior for printing EXPLAIN plans was sometimes confusing because of willingness to use the same alias for multiple RTEs (it was Ashutosh Bapat's complaint about that aspect that started the January thread). To fix, ensure that each RTE in the query has a unique unqualified alias, by modifying the alias if necessary (we add "_" and digits as needed to create a non-conflicting name). Then we can just print its variables with that alias, avoiding the confusing and bug-prone scheme of sometimes schema-qualifying variable names. In EXPLAIN, it proves to be expedient to take the further step of only assigning such aliases to RTEs that are actually referenced in the query, since the planner has a habit of generating extra RTEs with the same alias in situations such as inheritance-tree expansion. Although this fixes a bug of very long standing, I'm hesitant to back-patch such a noticeable behavioral change. My experiments while creating a regression test convinced me that actually incorrect output (as opposed to confusing output) occurs only in very narrow cases, which is backed up by the lack of previous complaints from the field. So we may be better off living with it in released branches; and in any case it'd be smart to let this ripen awhile in HEAD before we consider back-patching it.
2012-09-21Parse pg_ident.conf when it's loaded, keeping it in memory in parsed format.Heikki Linnakangas
Similar changes were done to pg_hba.conf earlier already, this commit makes pg_ident.conf to behave the same as pg_hba.conf. This has two user-visible effects. First, if pg_ident.conf contains multiple errors, the whole file is parsed at postmaster startup time and all the errors are immediately reported. Before this patch, the file was parsed and the errors were reported only when someone tries to connect using an authentication method that uses the file, and the parsing stopped on first error. Second, if you SIGHUP to reload the config files, and the new pg_ident.conf file contains an error, the error is logged but the old file stays in effect. Also, regular expressions in pg_ident.conf are now compiled only once when the file is loaded, rather than every time the a user is authenticated. That should speed up authentication if you have a lot of regexps in the file. Amit Kapila
2012-09-21Fix obsolete comment.Heikki Linnakangas
load_hba and load_ident load stuff in a separate memory context nowadays, not in the current memory context.
2012-09-20Remove execdesc.h inclusion from tcopprot.hAlvaro Herrera
2012-09-19Update release notes for 9.2.1, 9.1.6, 9.0.10, 8.4.14, 8.3.21.Tom Lane
2012-09-19Put back AcceptInvalidationMessages calls in heap_openrv(_extended).Tom Lane
These calls were removed in commit 4240e429d0c2d889d0cda23c618f94e12c13ade7 as part of a general refactoring and improvement of DDL locking. However, there's a problem not solved by the rewrite, which is that GRANT/REVOKE update pg_class.relacl without taking any particular lock on the target table as such. If another backend fails to do AcceptInvalidationMessages, it won't notice a recently-committed change in ACLs. Bug #7557 from Piotr Czachur demonstrates that there's at least one code path in 9.2.0 in which a command fails to do any AcceptInvalidationMessages calls at all, if the current transaction already holds all the locks it will need. Since we're hard up against the release deadline for 9.2.1, fix this by putting back the AcceptInvalidationMessages calls in heap_openrv and heap_openrv_extended, thereby restoring the historical behavior in this area. We ought to look for a more elegant and perhaps more bulletproof solution, but there's no time for that right now.
2012-09-19Update time zone data files to tzdata release 2012f.Tom Lane
DST law changes in Fiji.
2012-09-18pg_upgrade: Remove check for pg_configPeter Eisentraut
It is no longer used, but was still being checked for. bug #7548 from Reinhard Max
2012-09-18Fix planning of btree index scans using ScalarArrayOpExpr quals.Tom Lane
In commit 9e8da0f75731aaa7605cf4656c21ea09e84d2eb1, I improved btree to handle ScalarArrayOpExpr quals natively, so that constructs like "indexedcol IN (list)" could be supported by index-only scans. Using such a qual results in multiple scans of the index, under-the-hood. I went to some lengths to ensure that this still produces rows in index order ... but I failed to recognize that if a higher-order index column is lacking an equality constraint, rescans can produce out-of-order data from that column. Tweak the planner to not expect sorted output in that case. Per trouble report from Robert McGehee.
2012-09-18Fix array_typanalyze to work for domains over arrays.Tom Lane
Not sure how we missed this case, but we did. Per bug #7551 from Diego de Lima.
2012-09-17libpq: Add missing directory to installdirs targetPeter Eisentraut
It prevented the libpq directory from being installable by itself.
2012-09-17Provide adequate documentation of the "table_name *" notation.Tom Lane
Somewhere along the line, somebody decided to remove all trace of this notation from the documentation text. It was still in the command syntax synopses, or at least some of them, but with no indication what it meant. This will not do, as evidenced by the confusion apparent in bug #7543; even if the notation is now unnecessary, people will find it in legacy SQL code and need to know what it does.
2012-09-16PL/Python: Improve Python 3 regression test setupPeter Eisentraut
Currently, we are making mangled copies of plpython/{expected,sql} to plpython/python3/{expected,sql}, and run the tests in plpython/python3. This has the disadvantage that the regression.diffs file, if any, ends up in plpython/python3, which is not the normal location. If we instead make the mangled copies in plpython/{expected,sql}/python3/, we can run the tests from the normal directory, regression.diffs ends up the normal place, and the pg_regress invocation also becomes a lot simpler. It's also more obvious at run time what's going on, because the tests end up being named "python3/something" in the test output.
2012-09-16Rethink heuristics for choosing index quals for parameterized paths.Tom Lane
Some experimentation with examples similar to bug #7539 has convinced me that indxpath.c's original implementation of parameterized-path generation was several bricks shy of a load. In general, if we are relying on a particular outer rel or set of outer rels for a parameterized path, the path should use every indexable join clause that's available from that rel or rels. Any join clauses that get left out of the indexqual will end up getting applied as plain filter quals (qpquals), and that's generally a significant loser compared to having the index AM enforce them. (This is particularly true with btree, which can skip the index scan entirely if it can see that the given indexquals are mutually contradictory.) The original heuristics failed to ensure this, though, and were overly complicated anyway. Rewrite to make the code explicitly identify each useful set of outer rels and then select all applicable join clauses for each one. The one plan that changes in the regression tests is in fact for the better according to the planner's cost estimates. (Note: this is not a correctness issue but just a matter of plan quality. I don't yet know what is going on in bug #7539, but I don't expect this change to fix that.)
2012-09-16Fix bufmgr so CHECKPOINT_END_OF_RECOVERY behaves as a shutdown checkpoint.Simon Riggs
Recovery code documents clearly that a shutdown checkpoint is executed at end of recovery - a shutdown checkpoint WAL record is written but the buffer manager had been altered to treat end of recovery as a normal checkpoint. This bug exacerbates the bufmgr relpersistence bug. Bug spotted by Andres Freund, patch by me.
2012-09-16Fix documentation reference to maximum allowed for autovacuum_freeze_max_age.Kevin Grittner
The documentation mentioned setting autovacuum_freeze_max_age to "its maximum allowed value of a little less than two billion". This led to a post asking about the exact maximum allowed value, which is precisely two billion, not "a little less". Based on question by Radovan Jablonovsky. Backpatch to 8.3.
2012-09-15Adjust largeobject_1.source per buildfarm.Tom Lane
Looks like the correct size of DOS-ified tenk.data is 680800 not 680801. (I got the latter from a version of unix2dos that appends a trailing ^Z, which evidently is not git's practice.)
2012-09-14psql: Add more constraint completionPeter Eisentraut
- ALTER DOMAIN ... DROP/RENAME/VALIDATE CONSTRAINT - ALTER TABLE ... RENAME/VALIDATE CONSTRAINT - COMMENT ON CONSTRAINT - SET CONSTRAINTS
2012-09-14Improve largeobject regression test to show size of object read from file.Tom Lane
The idea here is to provide a more easily diagnosable failure diff when the problem is that tenk.data has been DOS-ified, as I believe to be happening currently on buildfarm member hamerkop. Per suggestion from Magnus Hagander. Also, sync output/largeobject_1.source with current regression test. Failure to do that in commit 3a0e4d36ebd7f477822d5bae41ba121a40d22ccc turns out to be the real reason that hamerkop has been complaining.
2012-09-14Add a regression test case based on bug #7516.Tom Lane
Given what we now know about the cause of this bug, it seems like it'd be a real good idea to include it in the plperl regression tests, so as to catch any platform-specific cases where the code gets misoptimized.
2012-09-14Properly set relpersistence for fake relcache entries.Robert Haas
This can result in buffers failing to be properly flushed at checkpoint time, leading to data loss. Report, diagnosis, and patch by Jeff Davis.
2012-09-13Keep plperl's current_call_data record on the stack, instead of palloc'ing.Tom Lane
This at least saves some palloc overhead, and should furthermore reduce the risk of anything going wrong, eg somebody resetting the context the current_call_data record was in.
2012-09-13Fix case of window function + aggregate + GROUP BY expression.Tom Lane
In commit 1bc16a946008a7cbb33a9a06a7c6765a807d7f59 I added a minor optimization to drop the component variables of a GROUP BY expression from the target list computed at the aggregation level of a query, if those Vars weren't referenced elsewhere in the tlist. However, I overlooked that the window-function planning code would deconstruct such expressions and thus need to have access to their component variables. Fix it to not do that. While at it, I removed the distinction between volatile and nonvolatile window partition/order expressions: the code now computes all of them at the aggregation level. This saves a relatively expensive check for volatility, and it's unclear that the resulting plan isn't better anyway. Per bug #7535 from Louis-David Mitterrand. Back-patch to 9.2.
2012-09-12Fix typo in comment for pclose_check() function.Kevin Grittner
Backpatch to 9.2. Etsuro Fujit
2012-09-12Fix a couple other leftover uses of 'conisonly' terminology.Tom Lane
2012-09-12Fix catalog docs to reflect connoinherit change in 09ff76f.Andrew Dunstan
Backpatch to 9.2.
2012-09-11Fix logical errors in tsquery selectivity estimation for prefix queries.Tom Lane
I made multiple errors in commit 97532f7c29468010b87e40a04f8daa3eb097f654, stemming mostly from failure to think about the available frequency data as being element frequencies not value frequencies (so that occurrences of different elements are not mutually exclusive). This led to sillinesses such as estimating that "word" would match more rows than "word:*". The choice to clamp to a minimum estimate of DEFAULT_TS_MATCH_SEL also seems pretty ill-considered in hindsight, as it would frequently result in an estimate much larger than the available data suggests. We do need some sort of clamp, since a pattern not matching any of the MCELEMs probably still needs a selectivity estimate of more than zero. I chose instead to clamp to at least what a non-MCELEM word would be estimated as, preserving the property that "word:*" doesn't get an estimate less than plain "word", whether or not the word appears in MCELEM. Per investigation of a gripe from Bill Martin, though I suspect that his example case actually isn't even reaching the erroneous code. Back-patch to 9.1 where this code was introduced.
2012-09-11Fix typo: lexemes misspelled in full text search docs.Kevin Grittner
Dan Scott
2012-09-10Add vcregress.pl target for checking pg_upgrade.Andrew Dunstan
This follows recent addition of Windows/Mingw testing. Backpatch to Release 9.2 so we can get some buildfarm testing going.
2012-09-09Make plperl safe against functions that are redefined while running.Tom Lane
validate_plperl_function() supposed that it could free an old plperl_proc_desc struct immediately upon detecting that it was stale. However, if a plperl function is called recursively, this could result in deleting the struct out from under an outer invocation, leading to misbehavior or crashes. Add a simple reference-count mechanism to ensure that such structs are freed only when the last reference goes away. Per investigation of bug #7516 from Marko Tiikkaja. I am not certain that this error explains his report, because he says he didn't have any recursive calls --- but it's hard to see how else it could have crashed right there. In any case, this definitely fixes some problems in the area. Back-patch to all active branches.
2012-09-09Use .NOTPARALLEL in ecpg/Makefile to avoid a gmake parallelism bug.Tom Lane
Investigation shows that some intermittent build failures in ecpg are the result of a gmake bug that was reported quite some time ago: http://savannah.gnu.org/bugs/?30653 Preventing parallel builds of the ecpg subdirectories seems to dodge the bug. Per yesterday's pgsql-hackers discussion, there are some other things in the subdirectory makefiles that seem rather unsafe for parallel builds too, but there's little point in fixing them as long as we have to work around a make bug. Back-patch to 9.1; parallel builds weren't very well supported before that anyway.
2012-09-08Adjust PL/Python regression tests some more for Python 3.3.Tom Lane
Commit 2cfb1c6f77734db81b6e74bcae630f93b94f69be fixed some issues caused by Python 3.3 choosing to iterate through dict entries in a different order than before. But here's another one: the test cases adjusted here made two bad entries in a dict and expected the one complained of would always be the same. Possibly this should be back-patched further than 9.2, but there seems little point unless the earlier fix is too.
2012-09-07Centralize libpq's low-level code for dropping a connection.Tom Lane
Create an internal function pqDropConnection that does the physical socket close and cleans up closely-associated state. This removes a bunch of ad hoc, not always consistent closure code. The ulterior motive is to have a single place to wait for a spawned child backend to exit, but this seems like good cleanup even if that never happens. I went back and forth on whether to include "conn->status = CONNECTION_BAD" in pqDropConnection's actions, but for the moment decided not to. Only a minority of the call sites actually want that, and in any case it's arguable that conn->status is slightly higher-level state, and thus not part of this function's purview.
2012-09-06Update syntax shown for \copy to match new syntax for COPY.Robert Haas
Etsuro Fujita
2012-09-06Fix "too many arguments" messages not to index off the end of argv[].Robert Haas
This affects initdb, clusterdb, reindexdb, and vacuumdb in master and 9.2; in earlier branches, only initdb is affected.
2012-09-06Allow embedded spaces without quoting in unix_socket_directories entries.Tom Lane
This fix removes an unnecessary incompatibility with the old behavior of the unix_socket_directory parameter. Since pathnames with embedded spaces are fairly popular on some platforms, the incompatibility could be significant in practice. We'll still strip unquoted leading/trailing spaces, however. No docs update since the documentation already implied that it worked like this. Per bug #7514 from Murray Cumming.
2012-09-05Fix typo in information_schema documentation.Tom Lane
Shigeru Hanada
2012-09-05In pg_upgrade, try a few times to open a log file.Andrew Dunstan
If we call pg_ctl stop, the server might continue and thus hold a log file for a short time after it has deleted its pid file, (which is when pg_ctl will exit), and so a subsequent attempt to open the log file might fail. We therefore try to open it a few times, sleeping one second between tries, to give the server time to exit. This corrects an error that was observed on the buildfarm. Backpatched to 9.2,