aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* Put documentation of options and commands in more alphabetical orderPeter Eisentraut2017-06-14
|
* Fix no-longer-valid shortcuts in expression_returns_set().Tom Lane2017-06-14
| | | | | | | | | | | | | | | expression_returns_set() used to short-circuit its recursion upon seeing certain node types, such as DistinctExpr, that it knew the executor did not support set-valued arguments for. That was never inherent, though, just a reflection of laziness in execQual.c. With the new implementation of SRFs there is no reason to think that any scalar-valued expression node could not have a set-valued subexpression, except for AggRefs and WindowFuncs where we know there is a parser check rejecting it. And indeed, the shortcut causes unexpected failures for cases such as a SRF underneath DistinctExpr, because the planner stops looking for SRFs too soon. Discussion: https://postgr.es/m/5259.1497044025@sss.pgh.pa.us
* Fix violations of CatalogTupleInsert/Update/Delete abstraction.Tom Lane2017-06-14
| | | | | | | | | | | | | | | In commits 2f5c9d9c9 and ab0289651 we invented an abstraction layer to insulate catalog manipulations from direct heap update calls. But evidently some patches that hadn't landed in-tree at that point didn't get the memo completely. Fix a couple of direct calls to simple_heap_delete to use CatalogTupleDelete instead; these appear to have been added in commits 7c4f52409 and 7b504eb28. This change is purely cosmetic ATM, but there's no point in having an abstraction layer if we allow random code to break it. Masahiko Sawada and Tom Lane Discussion: https://postgr.es/m/CAD21AoDOPRSVcwbnCN3Y1n_68ATyTspsU6=ygtHz_uY0VcdZ8A@mail.gmail.com
* Teach PL/pgSQL about partitioned tables.Dean Rasheed2017-06-14
| | | | | | | | | | | | Table partitioning, introduced in commit f0e44751d7, added a new relkind - RELKIND_PARTITIONED_TABLE. Update a couple of places in PL/pgSQL to handle it. Specifically plpgsql_parse_cwordtype() and build_row_from_class() needed updating in order to make table%ROWTYPE and table.col%TYPE work for partitioned tables. Dean Rasheed, reviewed by Amit Langote. Discussion: https://postgr.es/m/CAEZATCUnNOKN8sLML9jUzxecALWpEXK3a3W7y0PgFR4%2Buhgc%3Dg%40mail.gmail.com
* Teach RemoveRoleFromObjectPolicy() about partitioned tables.Dean Rasheed2017-06-14
| | | | | | | | | | | | Table partitioning, introduced in commit f0e44751d7, added a new relkind - RELKIND_PARTITIONED_TABLE. Update RemoveRoleFromObjectPolicy() to handle it, otherwise DROP OWNED BY will fail if the role has any RLS policies referring to partitioned tables. Dean Rasheed, reviewed by Amit Langote. Discussion: https://postgr.es/m/CAEZATCUnNOKN8sLML9jUzxecALWpEXK3a3W7y0PgFR4%2Buhgc%3Dg%40mail.gmail.com
* Disallow set-returning functions inside CASE or COALESCE.Tom Lane2017-06-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we reimplemented SRFs in commit 69f4b9c85, our initial choice was to allow the behavior to vary from historical practice in cases where a SRF call appeared within a conditional-execution construct (currently, only CASE or COALESCE). But that was controversial to begin with, and subsequent discussion has resulted in a consensus that it's better to throw an error instead of executing the query differently from before, so long as we can provide a reasonably clear error message and a way to rewrite the query. Hence, add a parser mechanism to allow detection of such cases during parse analysis. The mechanism just requires storing, in the ParseState, a pointer to the set-returning FuncExpr or OpExpr most recently emitted by parse analysis. Then the parsing functions for CASE and COALESCE can detect the presence of a SRF in their arguments by noting whether this pointer changes while analyzing their arguments. Furthermore, if it does, it provides a suitable error cursor location for the complaint. (This means that if there's more than one SRF in the arguments, the error will point at the last one to be analyzed not the first. While connoisseurs of parsing behavior might find that odd, it's unlikely the average user would ever notice.) While at it, we can also provide more specific error messages than before about some pre-existing restrictions, such as no-SRFs-within-aggregates. Also, reject at parse time cases where a NULLIF or IS DISTINCT FROM construct would need to return a set. We've never supported that, but the restriction is depended on in more subtle ways now, so it seems wise to detect it at the start. Also, provide some documentation about how to rewrite a SRF-within-CASE query using a custom wrapper SRF. It turns out that the information_schema.user_mapping_options view contained an instance of exactly the behavior we're now forbidding; but rewriting it makes it more clear and safer too. initdb forced because of user_mapping_options change. Patch by me, with error message suggestions from Alvaro Herrera and Andres Freund, pursuant to a complaint from Regina Obe. Discussion: https://postgr.es/m/000001d2d5de$d8d66170$8a832450$@pcorp.us
* doc: Update example version numbers in pg_upgrade documentationPeter Eisentraut2017-06-13
| | | | | | | | | The exact numbers don't matter, since they are examples, but it was looking quite dated. For the target version, we now automatically substitute the current major version. The updated example source version should be good for a couple of years.
* psql: Use more consistent capitalization of some output headingsPeter Eisentraut2017-06-13
|
* Re-run pgindent.Tom Lane2017-06-13
| | | | | | | | This is just to have a clean base state for testing of Piotr Stefaniak's latest version of FreeBSD indent. I fixed up a couple of places where pgindent would have changed format not-nicely. perltidy not included. Discussion: https://postgr.es/m/VI1PR03MB119959F4B65F000CA7CD9F6BF2CC0@VI1PR03MB1199.eurprd03.prod.outlook.com
* Always initialize PartitionBoundInfoData's null_index.Robert Haas2017-06-13
| | | | | | | | | | This doesn't actually matter at present, because the current code never consults null_index for range partitions. However, leaving it uninitialized is still a bad idea, so let's not do that. Amul Sul, reviewed by Ashutosh Bapat Discussion: http://postgr.es/m/CAAJ_b94AkEzcx+12ySCnbMDX7=UdF4BjnoBGfMQbB0RNSTo3Ng@mail.gmail.com
* Teach relation_is_updatable() about partitioned tables.Dean Rasheed2017-06-13
| | | | | | | | | | | | | | | Table partitioning, introduced in commit f0e44751d7, added a new relkind - RELKIND_PARTITIONED_TABLE. Update relation_is_updatable() to handle it. Specifically, partitioned tables and simple views built on top of them are updatable. This affects the SQL-callable functions pg_relation_is_updatable() and pg_column_is_updatable(), and the views information_schema.views and information_schema.columns. Dean Rasheed, reviewed by Ashutosh Bapat. Discussion: https://postgr.es/m/CAEZATCXnbiFkMXgF4Ez1pmM2c-tS1z33bSq7OGbw7QQhHov%2B6Q%40mail.gmail.com
* libpq: Message style improvementsPeter Eisentraut2017-06-13
|
* Fix failure to remove dependencies when a partition is detached.Robert Haas2017-06-13
| | | | | | | | | Otherwise, dropping the partitioned table will automatically drop any previously-detached children, which would be unfortunate. Ashutosh Bapat and Rahila Syed, reviewed by Amit Langote and by me. Discussion: http://postgr.es/m/CAFjFpRdOwHuGj45i25iLQ4QituA0uH6RuLX1h5deD4KBZJ25yg@mail.gmail.com
* doc: Fix typoPeter Eisentraut2017-06-13
| | | | Author: Julien Rouhaud <julien.rouhaud@dalibo.com>
* In initdb, defend against assignment of NULL values to not-null columns.Tom Lane2017-06-13
| | | | | | | | Previously, you could write _null_ in a BKI DATA line for a column that's supposed to be NOT NULL and initdb would let it pass, probably breaking subsequent accesses to the row. No doubt the original coding overlooked this simple sanity check because in the beginning we didn't have any way to mark catalog columns NOT NULL at initdb time.
* Fix typoPeter Eisentraut2017-06-13
| | | | Author: Masahiko Sawada <sawada.mshk@gmail.com>
* Improve code commentsPeter Eisentraut2017-06-13
| | | | Author: Erik Rijkers <er@xs4all.nl>
* Use correct ICU path for Windows 32 vs. 64 bitPeter Eisentraut2017-06-13
| | | | Author: Ashutosh Sharma <ashu.coek88@gmail.com>
* Fix collprovider of predefined collationsPeter Eisentraut2017-06-13
| | | | | An earlier version of the patch had collprovider as an integer and thus set these to 0, but the correct setting is now null.
* pg_dump: Allow dumping default collationPeter Eisentraut2017-06-13
| | | | | | | | This will not work on restore, but it will allow dumping out pg_catalog for research and documentation. Reported-by: Neil Anderson <neil.t.anderson@gmail.com> Bug: #14701
* Prevent copying default collationPeter Eisentraut2017-06-13
| | | | | | | This will not have the desired effect and might lead to crashes when the copied collation is used. Reported-by: Tom Lane <tgl@sss.pgh.pa.us>
* Fix confusion about number of subplans in partitioned INSERT setup.Tom Lane2017-06-12
| | | | | | | | | | | | | | ExecInitModifyTable() thought there was a plan per partition, but no, there's only one. The problem had escaped detection so far because there would only be visible misbehavior if there were a SubPlan (not an InitPlan) in the quals being duplicated for each partition. However, valgrind detected a bogus memory access in test cases added by commit 4f7a95be2, and investigation of that led to discovery of the bug. The additional test case added here crashes without the patch. Patch by Amit Langote, test case by me. Discussion: https://postgr.es/m/10974.1497227727@sss.pgh.pa.us
* pg_dump: Fix harmless type mixupPeter Eisentraut2017-06-12
|
* doc: Update external PL listPeter Eisentraut2017-06-12
| | | | | | | | Add PL/Lua, PL/v8. Remove stale/unmaintained PL/PHP, PL/Py, PL/Ruby, PL/Scheme. Reported-by: Adam Sah <asah@midgard.net>
* Assert that we don't invent relfilenodes or type OIDs in binary upgrade.Tom Lane2017-06-12
| | | | | | | | | | | | | | | | | | | | | | | | | | During pg_upgrade's restore run, all relfilenode choices should be overridden by commands in the dump script. If we ever find ourselves choosing a relfilenode in the ordinary way, someone blew it. Likewise for pg_type OIDs. Since pg_upgrade might well succeed anyway, if there happens not to be a conflict during the regression test run, we need assertions here to keep us on the straight and narrow. We might someday be able to remove the assertion in GetNewRelFileNode, if pg_upgrade is rewritten to remove its assumption that old and new relfilenodes always match. But it's hard to see how to get rid of the pg_type OID constraint, since those OIDs are embedded in user tables in some cases. Back-patch as far as 9.5, because of the risk of back-patches breaking something here even if it works in HEAD. I'd prefer to go back further, but 9.4 fails both assertions due to get_rel_infos()'s use of a temporary table. We can't use the later-branch solution of a CTE for compatibility reasons (cf commit 5d16332e9), and it doesn't seem worth inventing some other way to do the query. (I did check, by dint of changing the Asserts to elog(WARNING), that there are no other cases of unwanted OID assignments during 9.4's regression test run.) Discussion: https://postgr.es/m/19785.1497215827@sss.pgh.pa.us
* Fix ALTER SEQUENCE OWNED BY to not rewrite the sequence relation.Tom Lane2017-06-12
| | | | | | | | | | | It's not necessary for it to do that, since OWNED BY requires only ordinary catalog updates and doesn't affect future sequence values. And pg_upgrade needs to use OWNED BY without having it change the sequence's relfilenode. Commit 3d79013b9 broke this by making all forms of ALTER SEQUENCE change the relfilenode; that seems to be the explanation for the hard-to-reproduce buildfarm failures we've been seeing since then. Discussion: https://postgr.es/m/19785.1497215827@sss.pgh.pa.us
* doc: Update information_schema documentation for identity columnsPeter Eisentraut2017-06-12
| | | | This was apparently forgotten in the original patch.
* Add ICU_CFLAGS to global CPPFLAGSPeter Eisentraut2017-06-12
| | | | | | | The original code only added ICU_CFLAGS to the backend build. But it is also needed for building external modules that include pg_locale.h. So add it to the global CPPFLAGS. (This is only relevant if ICU is not in a compiler default path, so it apparently hasn't bitten many.)
* Remove "synchronized table states" notice messagePeter Eisentraut2017-06-12
| | | | | | It appears to be more confusing than useful. Reported-by: Jeff Janes <jeff.janes@gmail.com>
* Add MSVC build system support for ICUPeter Eisentraut2017-06-12
| | | | | Author: Ashutosh Sharma <ashu.coek88@gmail.com> Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
* Fix build of ICU support in WindowsPeter Eisentraut2017-06-12
| | | | | | and also any platform that does not have locale_t but enabled ICU. Author: Ashutosh Sharma <ashu.coek88@gmail.com>
* Trim trailing whitespacePeter Eisentraut2017-06-12
|
* Stop table sync workers when subscription relation entry is removedPeter Eisentraut2017-06-12
| | | | | | | | | When a table sync worker is in waiting state and the subscription table entry is removed because of a concurrent subscription refresh, the worker could be left orphaned. To avoid that, explicitly stop the worker when the pg_subscription_rel entry is removed. Reported-by: Masahiko Sawada <sawada.mshk@gmail.com>
* Fix ALTER TABLE doc examples.Tatsuo Ishii2017-06-12
| | | | | Patch by Yugo Nagata <nagata@sraoss.co.jp>. Confirmed by Amit Langote, who is the original author of the document part.
* Handle unqualified SEQUENCE NAME options properly in parse_utilcmd.c.Tom Lane2017-06-11
| | | | | | | | | | | | | | | | | | | | | generateSerialExtraStmts() was sloppy about handling the case where SEQUENCE NAME is given with a not-schema-qualified name. It was generating a CreateSeqStmt with an unqualified sequence name, and an AlterSeqStmt whose "owned_by" DefElem contained a T_String Value with a null string pointer in the schema-name position. The generated nextval() argument was also underqualified. This accidentally failed to fail at runtime, but only so long as the current default creation namespace at runtime is the right namespace. That's bogus; the parse-time transformation is supposed to be inserting the right schema name in all cases, so as to avoid any possible skew in that selection. I'm not sure this could fail in pg_dump's usage, but it's still wrong; we have had real bugs in this area before adopting the policy that parse_utilcmd.c should generate only fully-qualified auxiliary commands. A slightly lesser problem, which is what led me to notice this in the first place, is that pprint() dumped core on the AlterSeqStmt because of the bogus T_String. Noted while poking into the open problem with ALTER SEQUENCE breaking pg_upgrade.
* Apply RLS policies to partitioned tables.Joe Conway2017-06-11
| | | | | | | | | | | | | The new partitioned table capability added a new relkind, namely RELKIND_PARTITIONED_TABLE. Update fireRIRrules() to apply RLS policies on RELKIND_PARTITIONED_TABLE as it does RELKIND_RELATION. In addition, add RLS regression test coverage for partitioned tables. Issue raised by Fakhroutdinov Evgenievich and patch by Mike Palmiotto. Regression test editorializing by me. Discussion: https://postgr.es/m/flat/20170601065959.1486.69906@wrigleys.postgresql.org
* Take PROVE_FLAGS from the command line but not the environmentAndrew Dunstan2017-06-10
| | | | | | | | | | | This reverts commit 56b6ef893fee9e9bf47d927a02f4d1ea911f4d9c and instead makes vcregress.pl parse out PROVE_FLAGS from a command line argument when doing a TAP test, thus making it consistent with the makefile treatment. Discussion: https://postgr.es/m/c26a7416-2fb9-34ab-7991-618c922f896e%402ndquadrant.com Backpatch to 9.4 like previous patch.
* doc: Add Node.js and Go drivers to client interfacesPeter Eisentraut2017-06-09
| | | | | | Also, fix client interface JDBC language name to Java. Author: Sehrope Sarkuni <sehrope@jackdb.com>
* doc: Improve types in examplePeter Eisentraut2017-06-09
| | | | Reported-by: Nikolaus Thiel <klt@fsfe.org>
* doc: Document that subscriptions to same server might hangPeter Eisentraut2017-06-09
|
* Silence warning about uninitialized 'ret' variable on some compilers.Heikki Linnakangas2017-06-09
| | | | | | | | If the compiler doesn't notice that the switch-statement handles all possible values of the enum, it might complain that 'ret' is being used without initialization. Jeff Janes reported that on gcc 4.4.7. Discussion: https://www.postgresql.org/message-id/CAMkU=1x31RvP+cpooFbmc8K8nt-gNO8woGFhXcgQYYZ5ozYpFA@mail.gmail.com
* Formatting improvements in config file samplesPeter Eisentraut2017-06-09
|
* Update code commentsPeter Eisentraut2017-06-09
| | | | Author: Neha Khatri <nehakhatri5@gmail.com>
* Fix typoPeter Eisentraut2017-06-09
| | | | Author: Masahiko Sawada <sawada.mshk@gmail.com>
* psql: Update tab completion for ALTER SUBSCRIPTIONPeter Eisentraut2017-06-09
| | | | Author: Masahiko Sawada <sawada.mshk@gmail.com>
* Improve tablesync behavior with concurrent changesPeter Eisentraut2017-06-09
| | | | | | | | When a table is removed from a subscription before the tablesync worker could start, this would previously result in an error when reading pg_subscription_rel. Now we just ignore this. Author: Masahiko Sawada <sawada.mshk@gmail.com>
* Give a better error message on invalid hostaddr option.Heikki Linnakangas2017-06-09
| | | | | | | | | | | | | | | If you accidentally pass a host name in the hostaddr option, e.g. hostaddr=localhost, you get an error like: psql: could not translate host name "localhost" to address: Name or service not known That's a bit confusing, because it implies that we tried to look up "localhost" in DNS, but it failed. To make it more clear that we tried to parse "localhost" as a numeric network address, change the message to: psql: could not parse network address "localhost": Name or service not known Discussion: https://www.postgresql.org/message-id/10badbc6-4d5a-a769-623a-f7ada43e14dd@iki.fi
* Fix script name in README.Heikki Linnakangas2017-06-09
| | | | | The script was rewritten in Perl, and renamed from regress.sh to regress.pl, back in 2012.
* Use standard interrupt handling in logical replication launcher.Andres Freund2017-06-08
| | | | | | | | | | | | | | | Previously the exit handling was only able to exit from within the main loop, and not from within the backend code it calls. Fix that by using the standard die() SIGTERM handler, and adding the necessary CHECK_FOR_INTERRUPTS() call. This requires adding yet another process-type-specific branch to ProcessInterrupts(), which hints that we probably should generalize that handling. But that's work for another day. Author: Petr Jelinek Reviewed-By: Andres Freund Discussion: https://postgr.es/m/fe072153-babd-3b5d-8052-73527a6eb657@2ndquadrant.com
* Again report a useful error message when walreceiver's connection closes.Andres Freund2017-06-08
| | | | | | | | | | | | | | | | | | | | | | Since 7c4f52409a8c (merged in v10), a shutdown master is reported as FATAL: unexpected result after CommandComplete: server closed the connection unexpectedly by walsender. It used to be LOG: replication terminated by primary server FATAL: could not send end-of-streaming message to primary: no COPY in progress while the old message clearly is not perfect, it's definitely better than what's reported now. The change comes from the attempt to handle finished COPYs without erroring out, needed for the new logical replication, which wasn't needed before. There's probably better ways to handle this, but for now just explicitly check for a closed connection. Author: Petr Jelinek Reviewed-By: Andres Freund Discussion: https://postgr.es/m/f7c7dd08-855c-e4ed-41f4-d064a6c0665a@2ndquadrant.com Backpatch: -