- 12 Oct, 2012 1 commit
-
-
Tom Lane authored
This change ensures that the planner will see implicit and explicit casts as equivalent for all purposes, except in the minority of cases where there's actually a semantic difference (as reflected by having a 3-argument cast function). In particular, this fixes cases where the EquivalenceClass machinery failed to consider two references to a varchar column as equivalent if one was implicitly cast to text but the other was explicitly cast to text, as seen in bug #7598 from Vaclav Juza. We have had similar bugs before in other parts of the planner, so I think it's time to fix this problem at the core instead of continuing to band-aid around it. Remove set_coercionform_dontcare(), which represents the band-aid previously in use for allowing matching of index and constraint expressions with inconsistent cast labeling. (We can probably get rid of COERCE_DONTCARE altogether, but I don't think removing that enum value in back branches would be wise; it's possible there's third party code referring to it.) Back-patch to 9.2. We could go back further, and might want to once this has been tested more; but for the moment I won't risk destabilizing plan choices in long-since-stable branches.
-
- 11 Oct, 2012 6 commits
-
-
Andrew Dunstan authored
Based on a suggestion by Peter Eisentraut.
-
Tom Lane authored
When hashing a subplan like "WHERE (a, b) NOT IN (SELECT x, y FROM ...)", findPartialMatch() attempted to match rows using the hashtable's internal equality operators, which of course are for x and y's datatypes. What we need to use are the potentially cross-type operators for a=x, b=y, etc. Failure to do that leads to wrong answers or even crashes. The scope for problems is limited to cases where we have different types with compatible hash functions (else we'd not be using a hashed subplan), but for example int4 vs int8 can cause the problem. Per bug #7597 from Bo Jensen. This has been wrong since the hashed-subplan code was written, so patch all the way back.
-
Heikki Linnakangas authored
Rename replication_timeout to wal_sender_timeout, and add a new setting called wal_receiver_timeout that does the same at the walreceiver side. There was previously no timeout in walreceiver, so if the network went down, for example, the walreceiver could take a long time to notice that the connection was lost. Now with the two settings, both sides of a replication connection will detect a broken connection similarly. It is no longer necessary to manually set wal_receiver_status_interval to a value smaller than the timeout. Both wal sender and receiver now automatically send a "ping" message if more than 1/2 of the configured timeout has elapsed, and it hasn't received any messages from the other end. Amit Kapila, heavily edited by me.
-
Peter Eisentraut authored
Numerous flex and bison make rules have appeared in the source tree over time, and they are all virtually identical, so we can replace them by pattern rules with some variables for customization. Users of pgxs will also be able to benefit from this.
-
Peter Eisentraut authored
Apparently, on some glibc versions this causes warnings when optimization is not enabled. Altogether, there appear to be too many incompatibilities surrounding this.
-
Tom Lane authored
The HINTs generated for these error cases vary across builds. We could try to work around that, but the test cases aren't really useful enough to justify taking any trouble. Per buildfarm.
-
- 10 Oct, 2012 6 commits
-
-
Tom Lane authored
We no longer use GetNewOidWithIndex on pg_largeobject; rather, pg_largeobject_metadata's regular OID column is considered the repository of OIDs for large objects. The special functionality is still needed for TOAST tables however.
-
Tom Lane authored
dblink now has its own validator function dblink_fdw_validator(), which is better than the core function postgresql_fdw_validator() because it gets the list of legal options from libpq instead of having a hard-wired list. Make the dblink extension module provide a standard foreign data wrapper dblink_fdw that encapsulates use of this validator, and recommend use of that wrapper instead of making up wrappers on the fly. Unfortunately, because ad-hoc wrappers *were* recommended practice previously, it's not clear when we can get rid of postgresql_fdw_validator without causing upgrade problems. But this is a step in the right direction. Shigeru Hanada, reviewed by KaiGai Kohei
-
Tom Lane authored
Etsuro Fujita, with some wording adjustment by me.
-
Bruce Momjian authored
Backpatch to 9.2.
-
Tom Lane authored
The idea here is to make sure the planner will evaluate these functions last not first among the filter conditions in psql pattern search and tab-completion queries. We've discussed this several times, and there was consensus to do it back in August, but we didn't want to do it just before a release. Now seems like a safer time. No catversion bump, since this catalog change doesn't create a backend incompatibility nor any regression test result changes.
-
Tom Lane authored
Building a shlib on AIX requires use of the mkldexport.sh script, but we failed to install that, preventing its use from non-source-tree contexts. Also, Makefile.aix had the wrong idea about where to find the installed copy of the postgres.imp symbol file used by AIX. Per report from John Pierce. Patch all the way back, since this has been broken since the beginning of PGXS.
-
- 09 Oct, 2012 12 commits
-
-
Tom Lane authored
Do read/write permissions checks at most once per large object descriptor, not once per lo_read or lo_write call as before. The repeated tests were quite useless in the read case since the snapshot-based tests were guaranteed to produce the same answer every time. In the write case, the extra tests could in principle detect revocation of write privileges after a series of writes has started --- but there's a race condition there anyway, since we'd check privileges before performing and certainly before committing the write. So there's no real advantage to checking every single time, and we might as well redefine it as "only check the first time". On the same reasoning, remove the LargeObjectExists checks in inv_write and inv_truncate. We already checked existence when the descriptor was opened, and checking again doesn't provide any real increment of safety that would justify the cost.
-
Heikki Linnakangas authored
I extracted the refactoring patch from a larger patch that contained other changes too, but missed one unintentional change and didn't test enough...
-
Heikki Linnakangas authored
This is just refactoring with no user-visible effect, to make the code more readable.
-
Alvaro Herrera authored
-
Alvaro Herrera authored
The former name was too likely to conflict with symbols from external headers; and, as seen in recent buildfarm failures in member spoonbill, it has now happened at least in plpython.
-
Heikki Linnakangas authored
-
Simon Riggs authored
Fujii Masao
-
Simon Riggs authored
e.g. fsync 2103.613 ops/sec ( 475 microsecs/op) Peter Geoghegan
-
Tom Lane authored
I found that these functions tend to return -1 while leaving an empty error message string in the PGconn, if they suffer some kind of I/O error on the file. The reason is that lo_close, which thinks it's executed a perfectly fine SQL command, clears the errorMessage. The minimum-change workaround is to reorder operations here so that we don't fill the errorMessage until after lo_close.
-
Tom Lane authored
lo_export returns -1, not zero, on failure.
-
Tom Lane authored
libpq defines these functions as accepting "size_t" lengths ... but the underlying backend functions expect signed int32 length parameters, and so will misinterpret any value exceeding INT_MAX. Fix the libpq side to throw error rather than possibly doing something unexpected. This is a bug of long standing, but I doubt it's worth back-patching. The problem is really pretty academic anyway with lo_read/lo_write, since any caller expecting sane behavior would have to have provided a multi-gigabyte buffer. It's slightly more pressing with lo_truncate, but still we haven't supported large objects over 2GB until now.
-
Peter Eisentraut authored
It was apparently never necessary.
-
- 08 Oct, 2012 7 commits
-
-
Tom Lane authored
Fix broken-on-bigendian-machines byte-swapping functions, add missed update of alternate regression expected file, improve error reporting, remove some unnecessary code, sync testlo64.c with current testlo.c (it seems to have been cloned from a very old copy of that), assorted cosmetic improvements.
-
Alvaro Herrera authored
Since postgres.h includes palloc.h, definitions that affect the latter must be present before the former is included. Per buildfarm results
-
Alvaro Herrera authored
We already had those, but they forced modules to spell out the function bodies twice. Eliminate some duplicates we had already grown. Extracted from a somewhat larger patch from Andres Freund.
-
Robert Haas authored
Phil Sorber and Thom Brown. Reviewed by Albe Laurenz.
-
Heikki Linnakangas authored
Tomonaru Katsumata
-
Heikki Linnakangas authored
This bug was introduced by my patch to use the regular die/quickdie signal handlers in walsender processes. I tried to make walsender exit at next CHECK_FOR_INTERRUPTS() by setting ProcDiePending, but that's not enough, you need to set InterruptPending too. On second thoght, it was not a very good way to make walsender exit anyway, so use proc_exit(0) instead. Also, send a CommandComplete message before exiting; that's what we did before, and you get a nicer error message in the standby that way. Reported by Thom Brown.
-
Tom Lane authored
Get rid of the fundamentally indefensible assumption that "long long int" exists and is exactly 64 bits wide on every platform Postgres runs on. Instead let the configure script select the type to use for "pg_int64". This is a bit of a pain in the rear since we do not want to pollute client namespace with all the random symbols that pg_config.h defines; instead we have to create a separate generated header file, "pg_config_ext.h". But now that the infrastructure is there, we might have the ability to add some other stuff that's long been wanting in this area.
-
- 07 Oct, 2012 5 commits
-
-
Andrew Dunstan authored
-
Tom Lane authored
Copy-editing for previous patch, plus fixing some longstanding markup issues and oversights (like not mentioning that failures will set the PQerrorMessage string).
-
Andrew Dunstan authored
-
Tatsuo Ishii authored
INT64CONST macro. Fix lo_hton64 and lo_ntoh64 not to use int32_t and uint32_t.
-
Tatsuo Ishii authored
addition.
-
- 06 Oct, 2012 2 commits
-
-
Tatsuo Ishii authored
4TB large objects (standard 8KB BLCKSZ case). For this purpose new libpq API lo_lseek64, lo_tell64 and lo_truncate64 are added. Also corresponding new backend functions lo_lseek64, lo_tell64 and lo_truncate64 are added. inv_api.c is changed to handle 64-bit offsets. Patch contributed by Nozomi Anzai (backend side) and Yugo Nagata (frontend side, docs, regression tests and example program). Reviewed by Kohei Kaigai. Committed by Tatsuo Ishii with minor editings.
-
Peter Eisentraut authored
Use the terms "simple bind" and "search+bind" consistently do distinguish the two modes (better than first mode and second mode in any case). They were already used in some places, now it's just more prominent. Split up the list of options into one for common options and one for each mode, for clarity. Add configuration examples for either mode.
-
- 05 Oct, 2012 1 commit
-
-
Michael Meskes authored
because it is not correct.
-