aboutsummaryrefslogtreecommitdiff
path: root/contrib
Commit message (Collapse)AuthorAge
...
* Use separate output dirs for test_decoding's two runs.Andrew Dunstan2014-03-30
| | | | | | | contrib/test_decoding's "make check" runs two sets of tests. Unless we specify separate output directories for each set the isolation tests will overwrite the output from the normal regression set. Doing this will help the buildfarm collect complete logs.
* psql: display "Replica Identity" only for FULL and NOTHINGBruce Momjian2014-03-29
| | | | | INDEX is already displayed on the index, and we now exclude pg_catalog. DEFAULT is not displayed.
* Revert "Secure Unix-domain sockets of "make check" temporary clusters."Noah Misch2014-03-29
| | | | | About half of the buildfarm members use too-long directory names, strongly suggesting that this approach is a dead end.
* Secure Unix-domain sockets of "make check" temporary clusters.Noah Misch2014-03-29
| | | | | | | | | | | | | | | | | | | | | Any OS user able to access the socket can connect as the bootstrap superuser and in turn execute arbitrary code as the OS user running the test. Protect against that by placing the socket in the temporary data directory, which has mode 0700 thanks to initdb. Back-patch to 8.4 (all supported versions). The hazard remains wherever the temporary cluster accepts TCP connections, notably on Windows. Attempts to run "make check" from a directory with a long name will now fail. An alternative not sharing that problem was to place the socket in a subdirectory of /tmp, but that is only secure if /tmp is sticky. The PG_REGRESS_SOCK_DIR environment variable is available as a workaround when testing from long directory paths. As a convenient side effect, this lets testing proceed smoothly in builds that override DEFAULT_PGSOCKET_DIR. Popular non-default values like /var/run/postgresql are often unwritable to the build user. Security: CVE-2014-0067
* Force consistent row order in contrib/test_decoding regression test.Noah Misch2014-03-29
|
* contrib/test_decoding: adjust expected outputBruce Momjian2014-03-27
| | | | | | | Expected output has changed because of psql replica identity output changes. Reported by Christoph Berg
* pg_upgrade: use pg_usleep(); remove Windows workaroundBruce Momjian2014-03-26
|
* Use pg_usleep() instead of plain sleep(), to fix Windows buildHeikki Linnakangas2014-03-26
| | | | Per buildfarm.
* Add -f/--follow option to pg_xlogdump.Heikki Linnakangas2014-03-26
| | | | | This is useful for seeing what WAL records are inserted in real-time, by pointing pg_xlogdump to a live server.
* Introduce jsonb, a structured format for storing json.Andrew Dunstan2014-03-23
| | | | | | | | | | | | | | | | | | | | | | The new format accepts exactly the same data as the json type. However, it is stored in a format that does not require reparsing the orgiginal text in order to process it, making it much more suitable for indexing and other operations. Insignificant whitespace is discarded, and the order of object keys is not preserved. Neither are duplicate object keys kept - the later value for a given key is the only one stored. The new type has all the functions and operators that the json type has, with the exception of the json generation functions (to_json, json_agg etc.) and with identical semantics. In addition, there are operator classes for hash and btree indexing, and two classes for GIN indexing, that have no equivalent in the json type. This feature grew out of previous work by Oleg Bartunov and Teodor Sigaev, which was intended to provide similar facilities to a nested hstore type, but which in the end proved to have some significant compatibility issues. Authors: Oleg Bartunov, Teodor Sigaev, Peter Geoghegan and Andrew Dunstan. Review: Andres Freund
* Don't test xmin/xmax columns of a postgres_fdw foreign table.Noah Misch2014-03-23
| | | | | | Their values are unspecified and system-dependent. Per buildfarm member kouprey.
* Offer triggers on foreign tables.Noah Misch2014-03-23
| | | | | | | | | | | | | | | | | This covers all the SQL-standard trigger types supported for regular tables; it does not cover constraint triggers. The approach for acquiring the old row mirrors that for view INSTEAD OF triggers. For AFTER ROW triggers, we spool the foreign tuples to a tuplestore. This changes the FDW API contract; when deciding which columns to populate in the slot returned from data modification callbacks, writable FDWs will need to check for AFTER ROW triggers in addition to checking for a RETURNING clause. In support of the feature addition, refactor the TriggerFlags bits and the assembly of old tuples in ModifyTable. Ronan Dunklau, reviewed by KaiGai Kohei; some additional hacking by me.
* Remove MinGW readdir/errno bug workaround fixed on 2003-10-10Bruce Momjian2014-03-21
|
* Properly check for readdir/closedir() failuresBruce Momjian2014-03-21
| | | | | | | Clear errno before calling readdir() and handle old MinGW errno bug while adding full test coverage for readdir/closedir failures. Backpatch through 8.4.
* test_shm_mq: Improve regression tests.Robert Haas2014-03-20
| | | | Per discussion with Tom Lane.
* Fix compilation of pg_xlogdump, now that rm_safe_restartpoint is no more.Heikki Linnakangas2014-03-18
| | | | Oops. Pointed out by Andres Freund.
* Fix some remaining int64 vestiges in contrib/test_shm_mq.Tom Lane2014-03-18
| | | | Andres Freund and Tom Lane
* test_shm_mq: Use Size rather than uint64.Robert Haas2014-03-18
| | | | | | | Commit 3bd261ca18c67eafe18088e58fab511e3b965418 updated the API but neglected to make the corresponding edits here. Per Tom Lane and the buildfarm.
* Fix typos in comments.Fujii Masao2014-03-17
| | | | Thom Brown
* Fix unportable shell-script syntax in pg_upgrade's test.sh.Tom Lane2014-03-16
| | | | | | | | | | | | | I discovered the hard way that on some old shells, the locution FOO="" unset FOO does not behave the same as FOO=""; unset FOO and in fact leaves FOO set to an empty string. test.sh was inconsistently spelling it different ways on adjacent lines. This got broken relatively recently, in commit c737a2e56, so the lack of field reports to date doesn't represent a lot of evidence that the problem is rare.
* Comment fixes related to logical decoding.Robert Haas2014-03-12
| | | | Andres Freund, per complaints by Peter Eisentraut.
* Remove unportable use of anonymous unions from reorderbuffer.h.Tom Lane2014-03-07
| | | | | | | | | | | | | In b89e151054a I had assumed it was ok to use anonymous unions as struct members, but while a longstanding extension in many compilers, it's only been standardized in C11. To fix, remove one of the anonymous unions which tried to hide some implementation specific enum values and give the other a name. The latter unfortunately requires changes in output plugins, but since the feature has only been added a few days ago... Andres Freund
* Fix contrib/postgres_fdw to handle multiple join conditions properly.Tom Lane2014-03-07
| | | | | | | | | | | | | | | | | | | | | | | | The previous coding supposed that it could consider just a single join condition in any one parameterized path for the foreign table. But in reality, the parameterized-path machinery forces all join clauses that are "movable to" the foreign table to be evaluated at that node; including clauses that we might not consider safe to send across. Such cases would result in an Assert failure in an assert-enabled build, and otherwise in sending an unsafe clause to the foreign server, which might result in errors or silently-wrong answers. A lesser problem was that the cost/rowcount estimates generated for the parameterized path failed to account for any additional join quals that get assigned to the scan. To fix, rewrite postgresGetForeignPaths so that it correctly collects all the movable quals for any one outer relation when generating parameterized paths; we'll now generate just one path per outer relation not one per join qual. Also fix bogus assumptions in postgresGetForeignPlan and estimate_path_cost_size that only safe-to-send join quals will be presented. Based on complaint from Etsuro Fujita that the path costs were being miscalculated, though this is significantly different from his proposed patch.
* Fix test_decoding regression test outputs.Robert Haas2014-03-05
| | | | | | | Commit 6f37c08057685ee3c6c63222dba0dac012760dde removed whitespace from the SQL file but not the expected-output file, and commit 7e8db2dc420099df3fa73987cf2d2d6d1a609d86 changed the error message without updating the expected outputs.
* pg_upgrade: improve C comment about what old/new oids matchBruce Momjian2014-03-05
|
* Fix whitespacePeter Eisentraut2014-03-04
|
* Provide a FORCE NULL option to COPY in CSV mode.Andrew Dunstan2014-03-04
| | | | | | | | | | | | This forces an input field containing the quoted null string to be returned as a NULL. Without this option, only unquoted null strings behave this way. This helps where some CSV producers insist on quoting every field, whether or not it is needed. The option takes a list of fields, and only applies to those columns. There is an equivalent column-level option added to file_fdw. Ian Barwick, with some tweaking by Andrew Dunstan, reviewed by Payal Singh.
* auto_explain: Add logging of trigger executionAlvaro Herrera2014-03-04
| | | | | Author: Kyotaro HORIGUCHI Reviewed-by: Jaime Casanova
* Introduce logical decoding.Robert Haas2014-03-03
| | | | | | | | | | | | | | | | | | | | | | This feature, building on previous commits, allows the write-ahead log stream to be decoded into a series of logical changes; that is, inserts, updates, and deletes and the transactions which contain them. It is capable of handling decoding even across changes to the schema of the effected tables. The output format is controlled by a so-called "output plugin"; an example is included. To make use of this in a real replication system, the output plugin will need to be modified to produce output in the format appropriate to that system, and to perform filtering. Currently, information can be extracted from the logical decoding system only via SQL; future commits will add the ability to stream changes via walsender. Andres Freund, with review and other contributions from many other people, including Álvaro Herrera, Abhijit Menon-Sen, Peter Gheogegan, Kevin Grittner, Robert Haas, Heikki Linnakangas, Fujii Masao, Abhijit Menon-Sen, Michael Paquier, Simon Riggs, Craig Ringer, and Steve Singer.
* pageinspect: Use new pg_lsn datatype.Robert Haas2014-03-03
| | | | Michael Paquier, with slight comment changes by me
* pgbench: Fix help messagePeter Eisentraut2014-02-27
| | | | | | | Add NUM placeholder to -t option in help message. It got lost in 79cddb18419778be3202c971b3f21cdd90f7b719. Author: Fabien COELHO <coelho@cri.ensmp.fr>
* Remove dependency on database encoding in citext regression test.Tom Lane2014-02-27
| | | | | | | | | | | | | | Testing convert_to(..., 'ISO-8859-1') fails if there isn't a conversion function available from the database encoding to ISO-8859-1. This has been broken since day one, but the breakage was hidden by pg_do_encoding_conversion's failure to complain, up till commit 49c817eab78c6f0ce8c3bf46766b73d6cf3190b7. Since the data being converted in this test is plain ASCII, no actual conversion need happen (and if it did, it would prove little about citext anyway). So that we still have some code coverage of the convert() family of functions, let's switch to using convert_from, with SQL_ASCII as the specified source encoding. Per buildfarm.
* Prefer pg_any_to_server/pg_server_to_any over pg_do_encoding_conversion.Tom Lane2014-02-23
| | | | | | | | | | | | | | | | | | | | A large majority of the callers of pg_do_encoding_conversion were specifying the database encoding as either source or target of the conversion, meaning that we can use the less general functions pg_any_to_server/pg_server_to_any instead. The main advantage of using the latter functions is that they can make use of a cached conversion-function lookup in the common case that the other encoding is the current client_encoding. It's notationally cleaner too in most cases, not least because of the historical artifact that the latter functions use "char *" rather than "unsigned char *" in their APIs. Note that pg_any_to_server will apply an encoding verification step in some cases where pg_do_encoding_conversion would have just done nothing. This seems to me to be a good idea at most of these call sites, though it partially negates the performance benefit. Per discussion of bug #9210.
* Avoid integer overflow in hstore_to_json().Heikki Linnakangas2014-02-21
| | | | | | | | | The length of the output buffer was calculated based on the size of the argument hstore. On a sizeof(int) == 4 platform and a huge argument, it could overflow, causing a too small buffer to be allocated. Refactor the function to use a StringInfo instead of pre-allocating the buffer. Makes it shorter and more readable, too.
* Prevent potential overruns of fixed-size buffers.Tom Lane2014-02-17
| | | | | | | | | | | | | | | | | | | | | | | Coverity identified a number of places in which it couldn't prove that a string being copied into a fixed-size buffer would fit. We believe that most, perhaps all of these are in fact safe, or are copying data that is coming from a trusted source so that any overrun is not really a security issue. Nonetheless it seems prudent to forestall any risk by using strlcpy() and similar functions. Fixes by Peter Eisentraut and Jozef Mlich based on Coverity reports. In addition, fix a potential null-pointer-dereference crash in contrib/chkpass. The crypt(3) function is defined to return NULL on failure, but chkpass.c didn't check for that before using the result. The main practical case in which this could be an issue is if libc is configured to refuse to execute unapproved hashing algorithms (e.g., "FIPS mode"). This ideally should've been a separate commit, but since it touches code adjacent to one of the buffer overrun changes, I included it in this commit to avoid last-minute merge issues. This issue was reported by Honza Horak. Security: CVE-2014-0065 for buffer overruns, CVE-2014-0066 for crypt()
* Predict integer overflow to avoid buffer overruns.Noah Misch2014-02-17
| | | | | | | | | | | | | | | | | Several functions, mostly type input functions, calculated an allocation size such that the calculation wrapped to a small positive value when arguments implied a sufficiently-large requirement. Writes past the end of the inadvertent small allocation followed shortly thereafter. Coverity identified the path_in() vulnerability; code inspection led to the rest. In passing, add check_stack_depth() to prevent stack overflow in related functions. Back-patch to 8.4 (all supported versions). The non-comment hstore changes touch code that did not exist in 8.4, so that part stops at 9.0. Noah Misch and Heikki Linnakangas, reviewed by Tom Lane. Security: CVE-2014-0064
* Centralize getopt-related declarations in a new header file pg_getopt.h.Tom Lane2014-02-15
| | | | | | | | | | | | We used to have externs for getopt() and its API variables scattered all over the place. Now that we find we're going to need to tweak the variable declarations for Cygwin, it seems like a good idea to have just one place to tweak. In this commit, the variables are declared "#ifndef HAVE_GETOPT_H". That may or may not work everywhere, but we'll soon find out. Andres Freund
* Remove use of sscanf in pg_upgrade, and add C comment to pg_dumpBruce Momjian2014-02-15
| | | | Per report from Jackie Chang
* Rename 'gmake' to 'make' in docs and recommended commandsBruce Momjian2014-02-12
| | | | This simplifies the docs and makes it easier to cut/paste command lines.
* pg_upgrade: dramatically reduce memory consumptionBruce Momjian2014-02-12
| | | | Report from Jeff Janes
* pg_test_fsync: add C comment about direct I/O and write size failureBruce Momjian2014-02-12
| | | | Report from Marti Raudsepp
* Improve connection-failure error handling in contrib/postgres_fdw.Tom Lane2014-02-03
| | | | | | | | | | | | | | | | | | | postgres_fdw tended to say "unknown error" if it tried to execute a command on an already-dead connection, because some paths in libpq just return a null PGresult for such cases. Out-of-memory might result in that, too. To fix, pass the PGconn to pgfdw_report_error, and look at its PQerrorMessage() string if we can't get anything out of the PGresult. Also, fix the transaction-exit logic to reliably drop a dead connection. It was attempting to do that already, but it assumed that only connection cache entries with xact_depth > 0 needed to be examined. The folly in that is that if we fail while issuing START TRANSACTION, we'll not have bumped xact_depth. (At least for the case I was testing, this fix masks the other problem; but it still seems like a good idea to have the PGconn fallback logic.) Per investigation of bug #9087 from Craig Lucas. Backpatch to 9.3 where this code was introduced.
* Make pg_basebackup skip temporary statistics files.Fujii Masao2014-02-03
| | | | | | | | The temporary statistics files don't need to be included in the backup because they are always reset at the beginning of the archive recovery. This patch changes pg_basebackup so that it skips all files located in $PGDATA/pg_stat_tmp or the directory specified by stats_temp_directory parameter.
* Fix some more bugs in signal handlers and process shutdown logic.Tom Lane2014-02-01
| | | | | | | | | | | | | WalSndKill was doing things exactly backwards: it should first clear MyWalSnd (to stop signal handlers from touching MyWalSnd->latch), then disown the latch, and only then mark the WalSnd struct unused by clearing its pid field. Also, WalRcvSigUsr1Handler and worker_spi_sighup failed to preserve errno, which is surely a requirement for any signal handler. Per discussion of recent buildfarm failures. Back-patch as far as the relevant code exists.
* chkpass: check for NULL return value from crypt()Bruce Momjian2014-01-31
| | | | Report from Jozef Mlich using Coverity
* Allow unrecognized encoding names in locales, as long as they're the same.Tom Lane2014-01-31
| | | | | | | | | The buildfarm says commit 58274728fb8e087049df67c0eee903d9743fdeda doesn't work so well on Windows. This is because the encoding part of Windows locale names can be just a code page number, eg "1252", which we don't consider to be a valid encoding name. Add a check to accept encoding parts that are case-insensitively string equal; this at least ensures that the new code doesn't reject any cases that the old code allowed.
* Be forgiving of variant spellings of locale names in pg_upgrade.Tom Lane2014-01-30
| | | | | | | | | | | | | | | | Even though the server tries to canonicalize stored locale names, the platform often doesn't cooperate, so it's entirely possible that one DB thinks its locale is, say, "en_US.UTF-8" while the other has "en_US.utf8". Rather than failing, we should try to allow this where it's clearly OK. There is already pretty robust encoding lookup in encnames.c, so make use of that to compare the encoding parts of the names. The locale identifier parts are just compared case-insensitively, which we were already doing. The major problem known to exist in the field is variant encoding-name spellings, so hopefully this will be Good Enough. If not, we can try being even laxer. Pavel Raiskup, reviewed by Rushabh Lathia
* Fix potential coredump on bad locale value in pg_upgrade.Tom Lane2014-01-30
| | | | | | Thinko in error report (and a typo in the message text, too). We're failing anyway, but it would be good to print something useful first. Noted while reviewing a patch to make pg_upgrade's locale code laxer.
* Update comment.Tom Lane2014-01-28
| | | | | generate_normalized_query() no longer needs to truncate text, but this one comment didn't get the memo. Per Peter Geoghegan.
* Keep pg_stat_statements' query texts in a file, not in shared memory.Tom Lane2014-01-27
| | | | | | | | | | | | | | | | | | | | | | | | This change allows us to eliminate the previous limit on stored query length, and it makes the shared-memory hash table very much smaller, allowing more statements to be tracked. (The default value of pg_stat_statements.max is therefore increased from 1000 to 5000.) In typical scenarios, the hash table can be large enough to hold all the statements commonly issued by an application, so that there is little "churn" in the set of tracked statements, and thus little need to do I/O to the file. To further reduce the need for I/O to the query-texts file, add a way to retrieve all the columns of the pg_stat_statements view except for the query text column. This is probably not of much interest for human use but it could be exploited by programs, which will prefer using the queryid anyway. Ordinarily, we'd need to bump the extension version number for the latter change. But since we already advanced pg_stat_statements' version number from 1.1 to 1.2 in the 9.4 development cycle, it seems all right to just redefine what 1.2 means. Peter Geoghegan, reviewed by Pavel Stehule