https://wiki.postgresql.org/api.php?action=feedcontributions&user=Simon&feedformat=atomPostgreSQL wiki - User contributions [en]2024-03-29T13:49:56ZUser contributionsMediaWiki 1.35.13https://wiki.postgresql.org/index.php?title=Clustering&diff=36629Clustering2021-12-30T17:20:33Z<p>Simon: Retire some more projects</p>
<hr />
<div>== Projects ==<br />
<br />
(alphabetical order)<br />
<br />
* [[Bucardo]]<br />
* [https://www.enterprisedb.com/products/bidirectional-replication-bdr-postgresql-database BDR (Bi-Directional Replication for PostgreSQL)]<br />
* [https://www.citusdata.com/product/citus Citus]<br />
* [[Pgpool-II]]<br />
* [[PL/Proxy]]<br />
* [https://postgrespro.com Postgres Pro Multimaster], part of Postgres Pro Enterprise DBMS<br />
* [[Postgres-XC|Postgres-XC]]<br />
* [http://www.postgres-xl.org/ Postgres-XL], a Postgres-XC derivative/enhancement.<br />
* [[Londiste]]/[[PgQ]] (Originally part of [[SkyTools]])<br />
* [[Slony]]<br />
<br />
Work in progress is being tracked at [[Clustering Development Projects]]<br />
<br />
== Stalled ==<br />
Projects which seem to have stalled and have not had updates in 1+ year.<br />
<br />
* [[Mammoth]]<br />
* [[PgCluster]]<br />
* [[Postgres-R]]<br />
* [[rubyrep]]<br />
* [https://www.citusdata.com/citus-products/pg-shard pg_shard]<br />
* [[Stado]]<br />
* [[GridSQL]]<br />
* [[HadoopDB]]<br />
* [[Tungsten]]<br />
* [[PostgresForest]]<br />
<br />
== Existing Overview Docs ==<br />
* [[Replication, Clustering, and Connection Pooling]]<br />
<br />
== Template for information ==<br />
<br />
To include information about a clustering project, please create a new page with the project's name as the page title, and use the template '''[[Template:ClusteringProject]]''' to describe the project.<br />
<br />
[[Category:Replication]]<br />
[[Category:Clustering]]</div>Simonhttps://wiki.postgresql.org/index.php?title=Clustering&diff=36628Clustering2021-12-30T17:13:44Z<p>Simon: </p>
<hr />
<div>== Projects ==<br />
<br />
(alphabetical order)<br />
<br />
* [[Bucardo]]<br />
* [https://www.2ndquadrant.com/en/resources/postgres-bdr-2ndquadrant/ BDR (Bi-Directional Replication for PostgreSQL)]<br />
* [https://www.citusdata.com/product/citus Citus]<br />
* [[GridSQL]]<br />
* [[HadoopDB]]<br />
<br />
* [[Pgpool-II]]<br />
* [[PL/Proxy]]<br />
* [https://postgrespro.com Postgres Pro Multimaster], part of Postgres Pro Enterprise DBMS<br />
* [[Postgres-XC|Postgres-XC]]<br />
* [http://www.postgres-xl.org/ Postgres-XL], a Postgres-XC derivative/enhancement.<br />
* [[PostgresForest]]<br />
* [[Londiste]]/[[PgQ]] ([[SkyTools]])<br />
* [[Slony]]<br />
* [[Tungsten]]<br />
<br />
Work in progress is being tracked at [[Clustering Development Projects]]<br />
<br />
== Stalled ==<br />
Projects which seem to have stalled and have not had updates in 1+ year.<br />
<br />
* [[Mammoth]]<br />
* [[PgCluster]]<br />
* [[Postgres-R]]<br />
* [[rubyrep]]<br />
* [https://www.citusdata.com/citus-products/pg-shard pg_shard]<br />
* [[Stado]]<br />
<br />
== Existing Overview Docs ==<br />
* [[Replication, Clustering, and Connection Pooling]]<br />
<br />
== Template for information ==<br />
<br />
To include information about a clustering project, please create a new page with the project's name as the page title, and use the template '''[[Template:ClusteringProject]]''' to describe the project.<br />
<br />
[[Category:Replication]]<br />
[[Category:Clustering]]</div>Simonhttps://wiki.postgresql.org/index.php?title=Clustering&diff=36627Clustering2021-12-30T17:12:34Z<p>Simon: </p>
<hr />
<div>== Projects ==<br />
<br />
(alphabetical order)<br />
<br />
* [[Bucardo]]<br />
* [https://www.2ndquadrant.com/en/resources/postgres-bdr-2ndquadrant/ BDR (Bi-Directional Replication for PostgreSQL)]<br />
* [https://www.citusdata.com/product/citus Citus]<br />
* [[GridSQL]]<br />
* [[HadoopDB]]<br />
<br />
* [[Pgpool-II]]<br />
* [[PL/Proxy]]<br />
* [https://postgrespro.com Postgres Pro Multimaster], part of Postgres Pro Enterprise DBMS<br />
* [[Postgres-XC|Postgres-XC]]<br />
* [http://www.postgres-xl.org/ Postgres-XL], a Postgres-XC derivative/enhancement.<br />
* [[PostgresForest]]<br />
* [[Londiste]]/[[Pgq]] ([[SkyTools]])<br />
* [[Slony]]<br />
* [[Tungsten]]<br />
<br />
Work in progress is being tracked at [[Clustering Development Projects]]<br />
<br />
== Stalled ==<br />
Projects which seem to have stalled and have not had updates in 1+ year.<br />
<br />
* [[Mammoth]]<br />
* [[PgCluster]]<br />
* [[Postgres-R]]<br />
* [[rubyrep]]<br />
* [https://www.citusdata.com/citus-products/pg-shard pg_shard]<br />
* [[Stado]]<br />
<br />
== Existing Overview Docs ==<br />
* [[Replication, Clustering, and Connection Pooling]]<br />
<br />
== Template for information ==<br />
<br />
To include information about a clustering project, please create a new page with the project's name as the page title, and use the template '''[[Template:ClusteringProject]]''' to describe the project.<br />
<br />
[[Category:Replication]]<br />
[[Category:Clustering]]</div>Simonhttps://wiki.postgresql.org/index.php?title=SkyTools&diff=36626SkyTools2021-12-30T17:11:13Z<p>Simon: Add link to repo</p>
<hr />
<div>This is a package of tools in use in Skype for replication and failover. It includes a generic queuing mechanism, PgQ and utility library for Python scripts.<br />
<br />
The source code was hosted on [[Pgfoundry]] ([https://www.postgresql.org/ftp/projects/pgFoundry/skytools/ archived]) and later on [https://github.com/pgq GitHub], tech lead is [https://github.com/markokr Marko Kreen].<br />
<br />
A general overview presentation can be found here: [[Image:Moskva DB Tools.v3.pdf]], and a PGQ detailed presentation is at http://www.pgcon.org/2008/schedule/events/79.en.html.<br />
<br />
== PgQ ==<br />
<br />
This is the queue mechanism we use. It consists of PL/pgsql, and C code in database, with Python framework on top of it. It is derived from snapshot-based event handling ideas from Slony-I, re-written for more general use.<br />
<br />
=== Features ===<br />
* A database can have many queues. <br />
* Producers can insert into any queue. <br />
* There can be several consumers for any given queue and all consumers see all events. <br />
<br />
=== Documentation ===<br />
<br />
* [[PGQ Tutorial]]<br />
* [http://skytools.projects.postgresql.org/doc/pgq-admin.html PgQ admin tool] (pgqadm)<br />
* [http://skytools.projects.postgresql.org/doc/pgq-sql.html PgQ SQL API overview]<br />
* [http://skytools.projects.postgresql.org/pgq/ PgQ SQL reference]<br />
<br />
=== Monitoring ===<br />
<br />
A [[PGQ Munin Plugin]] is available.<br />
<br />
=== See Also ===<br />
<br />
PGQ can be the base solution to implement a [http://queue.acm.org/detail.cfm?id=1394128 BASE] solution (basically available, soft state, eventually consistent), or more generally to implement an [http://www.allthingsdistributed.com/2007/12/eventually_consistent.html Eventually Consistent] system.<br />
<br />
Kristo's blog host a detailed example of a python PGQ consumer which sends confirmation emails after user inscription: http://kaiv.wordpress.com/2007/10/19/skytools-database-scripting-framework-pgq/<br />
<br />
== Londiste ==<br />
<br />
Replication tool written in Python, using PgQ as event transport, available on Github. [https://github.com/londiste GitHub]<br />
<br />
=== Features ===<br />
<br />
* Tables can be added one-by-one into the replication set. <br />
* The initial COPY for one table does not block event replay for other tables. <br />
* Can compare tables on both sides. <br />
<br />
=== Documentation ===<br />
<br />
* [[Londiste Tutorial]]<br />
* Skytools docs are no longer available<br />
<br />
=== Monitoring ===<br />
<br />
Londiste is "just" a PGQ Consumer, so see about how to monitor the queue itself, with the [[PGQ_Munin_Plugin]] e.g.<br />
<br />
== walmgr ==<br />
<br />
This script sets up WAL archiving, does initial backup and runtime WAL archive and restore.<br />
<br />
See its [http://skytools.projects.postgresql.org/doc/walmgr.html documentation].<br />
<br />
== Provided specific consumers ==<br />
<br />
Some more tools based on Skytools Framework are available for handling specific jobs :<br />
* [http://skytools.projects.postgresql.org/doc/bulk_loader.html Bulk Loader]<br />
* [http://skytools.projects.postgresql.org/doc/cube_dispatcher.html Cube Dispatcher]<br />
* [http://skytools.projects.postgresql.org/doc/queue_mover.html Queue Mover]<br />
* [http://skytools.projects.postgresql.org/doc/queue_splitter.html Queue Splitter]<br />
* [http://skytools.projects.postgresql.org/doc/table_dispatcher.html Table Dispatcher]<br />
<br />
Each documentation page begins with a description section, but to ease your browsing experience, they are all in the same page here: [[Skytools Specific Consumers]].<br />
<br />
[[Category:Replication]]<br />
[[Category:Middleware]]</div>Simonhttps://wiki.postgresql.org/index.php?title=Clustering&diff=36625Clustering2021-12-30T17:02:07Z<p>Simon: Move some projects to Stalled list</p>
<hr />
<div>== Projects ==<br />
<br />
(alphabetical order)<br />
<br />
* [[Bucardo]]<br />
* [https://www.2ndquadrant.com/en/resources/postgres-bdr-2ndquadrant/ BDR (Bi-Directional Replication for PostgreSQL)]<br />
* [https://www.citusdata.com/product/citus Citus]<br />
* [[GridSQL]]<br />
* [[HadoopDB]]<br />
<br />
* [[Pgpool-II]]<br />
* [[PL/Proxy]]<br />
* [https://postgrespro.com Postgres Pro Multimaster], part of Postgres Pro Enterprise DBMS<br />
* [[Postgres-XC|Postgres-XC]]<br />
* [http://www.postgres-xl.org/ Postgres-XL], a Postgres-XC derivative/enhancement.<br />
* [[PostgresForest]]<br />
* [[SkyTools]] ([[Londiste]])<br />
* [[Slony]]<br />
* [[Tungsten]]<br />
<br />
Work in progress is being tracked at [[Clustering Development Projects]]<br />
<br />
== Stalled ==<br />
Projects which seem to have stalled and have not had updates in 1+ year.<br />
<br />
* [[Mammoth]]<br />
* [[PgCluster]]<br />
* [[Postgres-R]]<br />
* [[rubyrep]]<br />
* [https://www.citusdata.com/citus-products/pg-shard pg_shard]<br />
* [[Stado]]<br />
<br />
== Existing Overview Docs ==<br />
* [[Replication, Clustering, and Connection Pooling]]<br />
<br />
== Template for information ==<br />
<br />
To include information about a clustering project, please create a new page with the project's name as the page title, and use the template '''[[Template:ClusteringProject]]''' to describe the project.<br />
<br />
[[Category:Replication]]<br />
[[Category:Clustering]]</div>Simonhttps://wiki.postgresql.org/index.php?title=Ecosystem:PostgreSQL_only:Clustering&diff=35108Ecosystem:PostgreSQL only:Clustering2020-07-06T17:41:03Z<p>Simon: Avoid use of "slave"</p>
<hr />
<div>== EDB Postgres Failover Manager ==<br />
<br />
* Provider -- EnterpriseDB Corporation<br />
* Website -- https://www.enterprisedb.com/products/edb-postgres-platform/edb-postgres-failover-manager<br />
* License -- proprietary<br />
* Interoperability level -- explicitly supports PostgreSQL 9.5 or higher<br />
* Verified PostgreSQL versions -- See: https://www.enterprisedb.com/services/edb-supported-products-and-platforms#EFM<br />
* Last update (YYYY-MM-DD) -- 2017-6-7<br />
* Description -- Failover Manager creates highly available fault tolerant clusters minimizing database downtime with health monitoring, failure detection/notification, and automatic failover required in stringent 9s based high availability solutions. A simple and lightweight architecture without a single point of failure protects against a variety of failure scenarios that can be customized to specific application needs.<br />
* Additional info -- [[Ecosystem:EDB Postgres Failover Manager|click here]]<br />
<br />
== Postgres-BDR ==<br />
<br />
* Provider -- 2ndQuadrant<br />
* Website -- https://www.2ndquadrant.com/<br />
* License -- Proprietary<br />
* Interoperability level -- explicitly supports PostgreSQL 9.4 or higher<br />
* Verified PostgreSQL versions -- https://www.2ndquadrant.com/en/resources/bdr/<br />
* Last update (YYYY-MM-DD) -- 2018-03-16<br />
* Description --Postgres-BDR (Bi-Directional Replication for PostgreSQL) is a ground-breaking multi-master replication tool for PostgreSQL databases that has been in full production status since 2014. In the complex environment of replication, BDR achieves efficiency and accuracy, ensuring very high availability of all nodes in a geographically distributed cluster.<br />
* Additional info -- [[Ecosystem:Postgres-BDR|click here]]<br />
<br />
== repmgr ==<br />
<br />
* Provider -- 2ndQuadrant<br />
* Website -- https://www.2ndquadrant.com/<br />
* License -- GPL v3<br />
* Interoperability level -- explicitly supports PostgreSQL 9.1 or higher<br />
* Verified PostgreSQL versions -- https://www.2ndquadrant.com/en/resources/repmgr/<br />
* Last update (YYYY-MM-DD) -- 2018-03-09<br />
* Description -- repmgr helps DBAs and System Administrators manage a cluster of PostgreSQL databases. It simplifies administration and daily management, enhances productivity and reduces the overall costs of a PostgreSQL cluster.<br />
* Additional info -- [[Ecosystem:repmgr|click here]]<br />
<br />
== Pgpool-II ==<br />
<br />
* Provider -- Pgpool-II Global Development Group<br />
* Website -- https://pgpool.net<br />
* License -- PostgreSQL License<br />
* Interoperability level -- PostgreSQL 7.3 or higher<br />
* Verified PostgreSQL versions -- PostgreSQL 7.3 or higher<br />
* Last update (YYYY-MM-DD) -- 2018-04-26<br />
* Description -- Pgpool-II is a cluster management tool for PostgreSQL. It provides features currently lacking in PostgreSQL: automatic failover, automatic query dispatching to master (primary) server and standby servers, load balancing for SELECTs, session level connection pooling, in memory query cache and more. Pgpool-II is mostly transparent to non-cluster-aware PostgreSQL applications. Also Pgpool-II provides built-in High Availability feature to protect Pgpool-II itself.<br />
* Additional info -- [[Ecosystem:Pgpool-II|click here]]<br />
<br />
[[Category:Ecosystem]]</div>Simonhttps://wiki.postgresql.org/index.php?title=Streaming_Replication&diff=35107Streaming Replication2020-07-06T17:39:12Z<p>Simon: Avoid use of "slave"</p>
<hr />
<div>'''Streaming Replication''' (SR) provides the capability to continuously ship and<br />
apply the [http://www.postgresql.org/docs/current/static/wal.html WAL XLOG] records to some number of standby servers in order to keep them current.<br />
<br />
This feature was added to PostgreSQL 9.0. The discussion below is a developer oriented one that contains some out of date information. Users of this feature should use the documentation for the feature or a setup tutorial instead:<br />
<br />
* [http://www.postgresql.org/docs/current/static/warm-standby.html PostgreSQL Streaming Replication Documentation] - this documentation is for the latest version, but provides links you can use to look up the docs for your version.<br />
<br />
* [[Binary Replication Tutorial]] provides an introduction to using this replication feature.<br />
<br />
* The related but independent [[Hot Standby]] feature.<br />
<br />
<br />
= Developer and historical details on the project =<br />
SR was developed for inclusion in PostgreSQL 9.0 by NTT OSS Center. The lead developer is [mailto:masao.fujii@gmail.com Masao Fujii]. [http://www.pgcon.org/2008/schedule/events/76.en.html Synchronous Log Shipping Replication Presentation] introduces the early design of the feature.<br />
<br />
= Usage =<br />
== Users Overview ==<br />
* '''Log-shipping'''<br />
** XLOG records generated in the primary are periodically shipped to the standby via the network.<br />
** In the existing warm standby, only records in a filled file are shipped, what's referred to as file-based log-shipping. In SR, XLOG records in partially-filled XLOG file are shipped too, implementing record-based log-shipping. This means the window for data loss in SR is usually smaller than in warm standby, unless the warm standby was also configured for record-based shipping (which is complicated to setup).<br />
** The content of XLOG files written to the standby are exactly the same as those on the primary. XLOG files shipped can be used for a normal recovery and PITR.<br />
* '''Multiple standbys'''<br />
** More than one standby can establish a connection to the primary for SR. XLOG records are concurrently shipped to all these standbys. The delay/death of a standby does not harm log-shipping to other standbys.<br />
** The maximum number of standbys can be specified as a GUC variable.<br />
* '''Continuous recovery'''<br />
** The standby continuously replays XLOG records shipped without using pg_standby.<br />
** XLOG records shipped are replayed as soon as possible without waiting until XLOG file has been filled. The combination of [[Hot Standby]] and SR would make the latest data inserted into the primary visible in the standby almost immediately.<br />
** The standby periodically removes old XLOG files which are no longer needed for recovery, to prevent excessive disk usage.<br />
* '''Setup'''<br />
** The start of log-shipping does not interfere with any query processing on the primary.<br />
** The standby can be started in various conditions.<br />
*** If there are XLOG files in archive directory and restore_command is supplied, at first those files are replayed. Then the standby requests XLOG records following the last applied one to the primary. This prevents XLOG files already present in the standby from being shipped again. Similarly, XLOG files in pg_xlog are also replayed before starting log-shipping.<br />
*** If there is no XLOG files on the standby, the standby requests XLOG records following the starting XLOG location of recovery (the redo starting location).<br />
* '''Connection settings and authentication'''<br />
** A user can configure the same settings as a normal connection to a connection for SR (e.g., keepalive, pg_hba.conf).<br />
* '''Activation'''<br />
** The standby can keep waiting for activation as long as a user likes. This prevents the standby from being automatically brought up by failure of recovery or network outage.<br />
* '''Progress report'''<br />
** The primary and standby report the progress of log-shipping in PS display.<br />
* '''Graceful shutdown'''<br />
** When smart/fast shutdown is requested, the primary waits to exit until XLOG records have been sent to the standby, up to the shutdown checkpoint record.<br />
<br />
== Restrictions ==<br />
* '''Synchronous log-shipping'''<br />
** By default, SR supports operates in asynchronous manner, so the commit command might return a "success" to a client before the corresponding XLOG records are shipped to the standby. To enable synchronous replication, see [http://www.postgresql.org/docs/current/static/warm-standby.html#SYNCHRONOUS-REPLICATION Synchronous Replication]<br />
* '''Replication beyond timeline'''<br />
** A user has to get a fresh backup whenever making the old standby catch up.<br />
* '''Clustering'''<br />
** Postgres doesn't provide any clustering feature.<br />
<br />
== How to Use ==<br />
<br />
NB: there is overlap between this section and [[Binary Replication Tutorial]]<br />
<br />
* '''1.''' Install postgres in the primary and standby server as usual. This requires only ''configure'', ''make'' and ''make install''.<br />
* '''2.''' Create the initial database cluster in the primary server as usual, using ''initdb''.<br />
* '''3.''' Create an user named replication with REPLICATION privileges.<br />
$ CREATE ROLE replication WITH REPLICATION PASSWORD 'password' LOGIN<br />
* '''4.''' Set up connections and authentication on the primary so that the standby server can successfully connect to the ''replication'' pseudo-database on the primary.<br />
<br />
$ $EDITOR postgresql.conf<br />
<br />
listen_addresses = '192.168.0.10'<br />
<br />
$ $EDITOR pg_hba.conf<br />
<br />
# The standby server must connect with a user that has replication privileges.<br />
# TYPE DATABASE USER ADDRESS METHOD<br />
host replication replication 192.168.0.20/32 md5<br />
<br />
* '''5.''' Set up the streaming replication related parameters on the primary server.<br />
$ $EDITOR postgresql.conf<br />
<br />
# To enable read-only queries on a standby server, wal_level must be set to<br />
# "hot_standby". But you can choose "archive" if you never connect to the<br />
# server in standby mode.<br />
wal_level = hot_standby<br />
<br />
# Set the maximum number of concurrent connections from the standby servers.<br />
max_wal_senders = 5<br />
<br />
# To prevent the primary server from removing the WAL segments required for<br />
# the standby server before shipping them, set the minimum number of segments<br />
# retained in the pg_xlog directory. At least wal_keep_segments should be<br />
# larger than the number of segments generated between the beginning of<br />
# online-backup and the startup of streaming replication. If you enable WAL<br />
# archiving to an archive directory accessible from the standby, this may<br />
# not be necessary.<br />
wal_keep_segments = 32<br />
<br />
# Enable WAL archiving on the primary to an archive directory accessible from<br />
# the standby. If wal_keep_segments is a high enough number to retain the WAL<br />
# segments required for the standby server, this is not necessary.<br />
archive_mode = on<br />
archive_command = 'cp %p /path_to/archive/%f'<br />
* '''6.''' Start postgres on the primary server.<br />
* '''7.''' Make a base backup by copying the primary server's data directory to the standby server.<br />
<br />
** '''7.1.''' Do it with pg_(start|stop)_backup and rsync on the primary<br />
<br />
$ psql -c "SELECT pg_start_backup('label', true)"<br />
$ rsync -ac ${PGDATA}/ standby:/srv/pgsql/standby/ --exclude postmaster.pid<br />
$ psql -c "SELECT pg_stop_backup()"<br />
<br />
** '''7.2.''' Do it with pg_basebackup on the standby<br />
<br />
In version 9.1+, pg_basebackup can do the dirty work of fetching the entire data directory of your PostgreSQL installation from the primary and placing it onto the standby server.<br />
<br />
The prerequisite is that you make sure the standby's data directory is empty.<br />
<br />
Make sure to remove any tablespace directories as well. You can find those directories with:<br />
<br />
$ psql -c '\db'<br />
<br />
If you keep your postgresql.conf and other config files in PGDATA, you need a backup of postgresql.conf, to restore after pg_basebackup.<br />
<br />
After you've cleared all the directories, you can use the following command to directly stream the data from the primary onto your standby server.<br />
Run it as the database superuser, typically 'postgres', to make sure the permissions are preserved (use su, sudo or whatever other tool to make sure you're not root).<br />
<br />
$ pg_basebackup -h 192.168.0.10 -D /srv/pgsql/standby -P -U replication --xlog-method=stream<br />
<br />
In version 9.3+, you can also add the -R option so it creates a minimal recovery command file for step 9 below.<br />
<br />
If you backed up postgresql.conf, now restore it.<br />
<br />
* '''8.''' Set up replication-related parameters, connections and authentication in the standby server like the primary, so that the standby might work as a primary after failover.<br />
* '''9.''' Enable read-only queries on the standby server. But if wal_level is ''archive'' on the primary, leave hot_standby unchanged (i.e., off).<br />
$ $EDITOR postgresql.conf<br />
<br />
hot_standby = on<br />
* '''10.''' Create a recovery command file in the standby server; the following parameters are required for streaming replication.<br />
$ $EDITOR recovery.conf<br />
# Note that recovery.conf must be in $PGDATA directory.<br />
# It should NOT be located in the same directory as postgresql.conf<br />
<br />
# Specifies whether to start the server as a standby. In streaming replication,<br />
# this parameter must to be set to on.<br />
standby_mode = 'on'<br />
<br />
# Specifies a connection string which is used for the standby server to connect<br />
# with the primary.<br />
primary_conninfo = 'host=192.168.0.10 port=5432 user=replication password=password'<br />
<br />
# Specifies a trigger file whose presence should cause streaming replication to<br />
# end (i.e., failover).<br />
trigger_file = '/path_to/trigger'<br />
<br />
# Specifies a command to load archive segments from the WAL archive. If<br />
# wal_keep_segments is a high enough number to retain the WAL segments<br />
# required for the standby server, this may not be necessary. But<br />
# a large workload can cause segments to be recycled before the standby<br />
# is fully synchronized, requiring you to start again from a new base backup.<br />
restore_command = 'cp /path_to/archive/%f "%p"'<br />
* '''11.''' Start postgres in the standby server. It will start streaming replication.<br />
* '''12.''' You can calculate the replication lag by comparing the current WAL write location on the primary with the last WAL location received/replayed by the standby. They can be retrieved using ''pg_current_xlog_location'' on the primary and the ''pg_last_xlog_receive_location''/''pg_last_xlog_replay_location'' on the standby, respectively.<br />
$ psql -c "SELECT pg_current_xlog_location()" -h192.168.0.10 (primary host)<br />
pg_current_xlog_location <br />
--------------------------<br />
0/2000000<br />
(1 row)<br />
<br />
$ psql -c "select pg_last_xlog_receive_location()" -h192.168.0.20 (standby host)<br />
pg_last_xlog_receive_location <br />
-------------------------------<br />
0/2000000<br />
(1 row)<br />
<br />
$ psql -c "select pg_last_xlog_replay_location()" -h192.168.0.20 (standby host)<br />
pg_last_xlog_replay_location <br />
------------------------------<br />
0/2000000<br />
(1 row)<br />
* '''13.''' You can also check the progress of streaming replication by using ''ps'' command.<br />
# The displayed LSNs indicate the byte position that the standby server has<br />
# written up to in the xlogs.<br />
[primary] $ ps -ef | grep sender<br />
postgres 6879 6831 0 10:31 ? 00:00:00 postgres: wal sender process postgres 127.0.0.1(44663) streaming 0/2000000<br />
<br />
[standby] $ ps -ef | grep receiver<br />
postgres 6878 6872 1 10:31 ? 00:00:01 postgres: wal receiver process streaming 0/2000000<br />
* How to do failover<br />
** Create the trigger file in the standby after the primary fails.<br />
* How to stop the primary or the standby server<br />
** Shut down it as usual (''pg_ctl stop'').<br />
* How to restart streaming replication after failover<br />
** Repeat the operations from '''6th'''; making a fresh backup, some configurations and starting the original primary as the standby. The primary server doesn't need to be stopped during these operations.<br />
* How to restart streaming replication after the standby fails<br />
** Restart postgres in the standby server after eliminating the cause of failure.<br />
* How to disconnect the standby from the primary<br />
** Create the trigger file in the standby while the primary is running. Then the standby would be brought up.<br />
* How to re-synchronize the stand-alone standby after isolation<br />
** Shut down the standby as usual. And repeat the operations from '''6th'''.<br />
* If you have more than one standby, promoting one will break the other(s). Update their recovery.conf settings to point to the new master, set recovery_target_timeline to 'latest', scp/rsync the pg_xlog directory, and restart the standby.<br />
<br />
= Todo =<br />
== v9.0 ==<br />
<br />
Moved to [[PostgreSQL_9.0_Open_Items]]<br />
<br />
=== Committed ===<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01455.php Retrying from archive and some refactoring around Read/FetchRecord().] - [http://archives.postgresql.org/pgsql-committers/2010-01/msg00395.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg02601.php SR wrongly treats the WAL-boundary.] - [http://archives.postgresql.org/pgsql-committers/2010-01/msg00396.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01715.php Adjust SR for some later changes about wal-skipping.] - [http://archives.postgresql.org/pgsql-committers/2010-01/msg00399.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg00024.php VACUUM FULL unexpectedly writes an XLOG UNLOGGED record.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00038.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01754.php Add a message type header.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00037.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01536.php Documentation: Add a new "Replication" chapter.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00115.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg00350.php Failed assertion during recovery of partial WAL file.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00124.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg00712.php A PANIC error might occur in the standby because of a partially-filled archived WAL file.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00137.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg00330.php Improve the standby messages.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00140.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01672.php pq_getbyte_if_available() is not working because the win32 socket emulation layer simply wasn't designed to deal with non-blocking sockets.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00198.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01488.php Walsender might emit unfit messages.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00239.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01236.php Streaming replication on win32, still broken.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00270.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg00992.php Create new section for recovery.conf.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00295.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01824.php Assertion failure in walreceiver.] - [http://archives.postgresql.org/pgsql-committers/2010-02/msg00356.php commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01717.php Forbid a startup of walsender during recovery, and emit a suitable message? Or allow walsender to be started also during recovery?] - [http://archives.postgresql.org/message-id/20100316090955.9A5107541D0@cvs.postgresql.org commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01003.php How do we clean down the archive without using pg_standby?] - [http://archives.postgresql.org/message-id/20100318091718.BC14D7541D0@cvs.postgresql.org commit]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01510.php File-based log shipping without pg_standby doesn't replay the WAL files in pg_xlog.] - [http://archives.postgresql.org/pgsql-committers/2010-03/msg00356.php commit]<br />
<br />
== v9.1 ==<br />
=== Synchronization capability ===<br />
* Introduce the replication mode which can control how long transaction commit waits for replication before the commit command returns a "success" to a client. The valid modes are ''async'', ''recv'' and ''fsync''.<br />
** ''async'' doesn't make transaction commit wait for replication, i.e., asynchronous replication.<br />
** ''recv'' or ''fsync'' makes transaction commit wait for XLOG to be received or fsynced by the standby, respectively.<br />
** (''apply'' makes transaction commit wait for XLOG to be replayed by the standby. This mode will be supported in v9.2 or later)<br />
** The replication mode is specified in recovery.conf of the standby as well as other parameters for replication.<br />
*** The startup process reads the replication mode from recovery.conf and shares it to walreceiver via new shared-memory variable.<br />
*** Walreceiver also shares it to walsender by using the replication handshake message (existing protocol needs to be extended).<br />
** Based on the replication mode, walreceiver sends the reply meaning that replication is done up to the specified location to the primary.<br />
*** In async, walreceiver doesn't need to send any reply other than end-of-replication message.<br />
*** In recv or fsync, walreceiver sends the reply just after receiving or flushing XLOG, respectively.<br />
*** New message type for the reply needs to be defined. The reply is sent as CopyData message.<br />
** Walreceiver writes all the outstanding XLOG to disk before shutting down.<br />
** Walsender receives the reply from the standby, updates the location of the last record replicated, and announces completion of replication.<br />
*** New shared-memory variable to keep that location is required.<br />
** When processing the commit command, backend waits for XLOG to be replicated to only the standbys which are in the recv or fsync replication mode.<br />
*** Also smart shutdown waits for XLOG of shutdown checkpoint to be replicated.<br />
* Required optimization<br />
** Walsender should send outstanding XLOG without waiting wal_sender_delay.<br />
*** When processing the commit command, backend signals walsender to send outstanding XLOG immediately.<br />
** Backend should exit the wait loop as soon as the reply arrives at the primary.<br />
*** When receiving the reply, walsender signals backends to get up from the sleep and determine whether to exit the wait loop by checking the location of the last XLOG replicated.<br />
*** Only backends waiting for XLOG to be replicated up to the location contained in the reply are sent the signal.<br />
** Walsender waits for the signal from backends and the reply from the standby at the same time, by using select/poll.<br />
** Walsender reads XLOG from not only disk but also shared memory (wal buffers).<br />
** Walreceiver should flush XLOG file only when XLOG file is switched or the related page is flushed.<br />
*** When startup process or bgwriter flushes the buffer page, it checks whether the related XLOG has already been flushed via shared memory (location of the last XLOG flushed).<br />
*** It flushes the buffer page, if XLOG file has already been flushed.<br />
*** It signals walreceiver to flush XLOG file immediately and waits for the flush to complete, if XLOG file has not been flushed yet.<br />
** While the standby is catching up with the primary, those servers should ignore the replication mode and perform asynchronous replication.<br />
*** After those servers have almost gotten into synchronization, they perform replication based on the specified replication mode.<br />
*** New replication states like 'catching-up', 'sync', etc need to be defined, and the state machine for them is required on both servers.<br />
*** Current replication state can be monitored on both servers via SQL.<br />
* Required timeout<br />
** Add new parameter replication_timeout which is the maximum time to wait until XLOG is replicated to the standby. (does this match http://www.postgresql.org/docs/current/interactive/runtime-config-replication.html ?)<br />
** Add new parameter (replication_timeout_action) to specify the reaction to replication_timeout.<br />
<br />
== Future release ==<br />
* '''Synchronization capability'''<br />
** Introduce the synchronization mode which can control how long transaction commit waits for replication before the commit command returns a "success" to a client. The valid modes are ''async'', ''recv'', ''fsync'' and ''apply''.<br />
*** ''async'' doesn't make transaction commit wait for replication, i.e., asynchronous replication.<br />
*** ''recv'', ''fsync'' and ''apply'' makes transaction commit wait for XLOG records to be received, fsynced and applied on the standby, respectively.<br />
** Change walsender to be able to read XLOG from not only the disk but also shared memory.<br />
** Add new parameter replication_timeout which is the maximum time to wait until XLOG records are replicated to the standby. (does this match http://www.postgresql.org/docs/current/interactive/runtime-config-replication.html ?)<br />
** Add new parameter (replication_timeout_action) to specify the reaction to replication_timeout.<br />
* '''Monitoring'''<br />
** Provide the capability to check the progress and gap of streaming replication via one query. A collaboration of HS and SR is necessary to provide that capability on the standby side.<br />
** Provide the capability to check if the specified repliation is in progress via a query. Also more detailed status information might be necessary, e.g, the standby is catching up now, has already gotten into sync, and so on.<br />
** Change the stats collector to collect the statistics information about replication, e.g., average delay of replication time.<br />
** Develop the tool to calculate the latest XLOG position from XLOG files. This is necessary to check the gap of replication after the server fails.<br />
** Also develop the tool to extract the user-readable contents from XLOG files. This is necessary to see the contents of the gap, and manually restore them.<br />
* '''Easy to Use'''<br />
** Introduce the parameters like:<br />
*** replication_halt_timeout - replication will halt if no data has been sent for this much time.<br />
*** replication_halt_segments - replication will halt if number of WAL files in pg_xlog exceeds this threshold.<br />
*** These parameters allow us to avoid disk overflow.<br />
** Add new feature which transfers also base backup via the direct connection between the primary and the standby.<br />
** Add new hooks like walsender_hook and walreceiver_hook to cooperate with the add-on program for compression like pglesslog.<br />
** Provide a graceful termination of replication via a query on the primary. On the standby, a trigger file mechanism already provides that capability.<br />
** Support replication beyond timeline. The timeline history files need to be shipped from the primary to the standby.<br />
* '''Robustness'''<br />
** Support keepalive in libpq. This is useful for a client and the standby to detect a failure of the primary immediately.<br />
* '''Miscellaneous'''<br />
** Standalone walreceiver tool, which connects to the primary, continuously receives and writes XLOG records, independently from postgres server.<br />
** Cascade streaming replication. Allow walsender to send XLOG to another standby during recovery.<br />
** WAL archiving during recovery.<br />
<br />
[[Category:Replication]]</div>Simonhttps://wiki.postgresql.org/index.php?title=Multimaster&diff=33290Multimaster2019-04-11T00:23:23Z<p>Simon: </p>
<hr />
<div><br />
PostgreSQL supports unidirectional master-slave replication. Moreover it supports ''hot standby'' mode in which it is possible to execute read only queries at replicas. Replication can be either asynchronous either synchronous, but even in case of synchronous replication there is a time gap between master and replica, so client executing read-only query at replica may not see changes it has performed in previous transaction at master. Also, prior to [https://www.postgresql.org/docs/current/static/release-9-6.html PostgreSQL 9.6] only one synchronous replica was supported, so it was practically not possible to use synchronous replication for load balancing. As a result, current streaming replication in PostgreSQL provides only fault tolerance (HA), but not scaling performance.<br />
<br />
[https://www.2ndquadrant.com/en/ 2ndQuadrant] provides [http://bdr-project.org/docs/stable/ Bidirectional Replication for PostgreSQL (BDR)]. In this case updates can be performed at any node of the cluster and then propagated to other nodes. BDR is essentially asynchronous: changes are applied at nodes some time later after committing transaction at master and various ways of resolving conflicts are proposed. BDR is really fast (provides almost the same speed as hot standby), but certainly there is no global consistency in such model.<br />
<br />
BDR is based on new PostgreSQL feature named [https://www.postgresql.org/docs/current/static/logicaldecoding-explanation.html logical decoding]. Changes are extracted from WAL and are proceeded by logical output plugin.<br />
In can then apply this changes to some other database, save in log or do whatever else it likes. BDR uses logical replication to deliver changes to other nodes. Logical replication is now part of PostgreSQL 9.5. Our multimaster is based on pglogical_output plugin provided by 2ndQuadrant. We have implemented receiver part for this plugin, which is also partly based on BDR code. At receiver side we have a pool of background workers which concurrently apply changes received from remote walsender. <br />
<br />
From client's point of view it works just with set of identical PostgreSQL instances. It can login and send queries to any of them. It doesn't mean whether it is read-only or update query. But certainly, as far as updates has to be applied to all nodes, multimaster is able to provide scaling only for read-only queries.<br />
<br />
The diagram below shows performance results of multimaster installed at three nodes cluster. We run our dtmbench benchmark, varying percent of updates. We compare results of multimaster with performance of standalone PostgreSQL. Providing ACID properties for distributed transactions adds essential overhead: multimaster is about 2 times slower on updates than single node. In case of asynchronous replication it is possible to get much better results but without global consistency. At mostly read-only workloads multimaster provides much better performance, but still there is on linear scalability.<br />
<br />
<br />
[[File:rw_ratio.png]]<br />
<br />
[[File:reads.png]]<br />
<br />
[[File:updates.png]]<br />
<br />
Vertical axis: TPS, thouthands<br />
<br />
Horizontal axis: number of client connections</div>Simonhttps://wiki.postgresql.org/index.php?title=FOSDEM/PGDay_2019_Developer_Meeting&diff=32741FOSDEM/PGDay 2019 Developer Meeting2018-11-22T09:57:17Z<p>Simon: /* RSVPs */</p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for Thursday 31st January, 2019 at the Brussels Marriott Hotel, prior to FOSDEM/PGDay 2019. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 10 and 11 release cycles. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Review the progress of the 12.0 schedule, and formulate plans to address any issues<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
* Commitfest Triage<br />
<br />
== Time & Location ==<br />
<br />
The meeting will be:<br />
<br />
* 9:00AM to 5:00PM<br />
* Brussels Marriott Hotel<br />
<br />
Coffee, tea and snacks will be served starting at 8:45am. Lunch will be provided.<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname) and will be attending:<br />
<br />
* Dave Page<br />
<br />
The following people have sent their apologies:<br />
<br />
* Simon Riggs, on holiday that week<br />
<br />
==Agenda Items==<br />
<br />
Please add agenda items here!<br />
<br />
* <br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:10<br />
|Welcome and introductions<br />
|Dave<br />
<br />
|- <br />
|09:10 - 09:20<br />
|12.0 Release Review<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 11:00<br />
|Coffee break<br />
|All<br />
<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:30 - 13:30<br />
|Lunch<br />
|All<br />
<br />
|- <br />
|13:30 - 15:00<br />
|Commitfest Triage<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|15:00 - 15:30<br />
|Tea break<br />
|All<br />
<br />
|- <br />
|15:30 - 16:45<br />
|Commitfest Triage<br />
|All<br />
<br />
<br />
|- <br />
|16:45 - 17:00<br />
|Any other business<br />
|Dave<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|17:00<br />
|Finish<br />
|<br />
|}<br />
<br />
== Minutes ==</div>Simonhttps://wiki.postgresql.org/index.php?title=PgCon_2018_Developer_Meeting&diff=31992PgCon 2018 Developer Meeting2018-05-29T14:32:16Z<p>Simon: /* RSVPs */</p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for Tuesday 29 May, 2018 at the University of Ottawa, prior to pgCon 2018. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 11/10 release cycles. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
As at last years event, an Unconference will be held on Wednesday for in-depth discussion of technical topics.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Define the schedule for the 12.0 release cycle<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
<br />
== Time & Location ==<br />
<br />
The meeting will be:<br />
<br />
* 9:00AM to 12PM<br />
* DMS 3105<br />
* University of Ottawa.<br />
<br />
Coffee, tea and snacks will be served starting at 8:45am. Lunch will be after the meeting.<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname). Note that we can accommodate a '''maximum of 30'''!<br />
<br />
# Ashutosh Bapat<br />
# Joe Conway<br />
# Jeff Davis<br />
# Andrew Dunstan<br />
# Peter Eisentraut<br />
# Andres Freund<br />
# Stephen Frost<br />
# Etsuro Fujita<br />
# Robert Haas<br />
# Magnus Hagander<br />
# Kyotaro Horiguchi<br />
# Tatsuo Ishii<br />
# Amit Kapila<br />
# Jonathan Katz<br />
# Tom Lane<br />
# Amit Langote<br />
# Heikki Linnakangas<br />
# Noah Misch<br />
# Bruce Momjian<br />
# Thomas Munro<br />
# Dave Page<br />
# Michael Paquier<br />
# Masahiko Sawada<br />
# Teodor Sigaev<br />
# David Steele<br />
# Tomas Vondra<br />
# Gregory Stark<br />
<br />
Apologies<br />
* Simon Riggs<br />
<br />
== Agenda Items ==<br />
<br />
* 12.0 release and commitfest schedule (Dave)<br />
* Heavier filtering for patches in last CF (Andres Freund)<br />
* How can CFs/development process put more focus on long pending patches (Andres Freund, Jonathan Katz)<br />
<br />
* ''Please add suggestions for agenda items here. (with your name)''<br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:30<br />
|Welcome and introductions<br />
|Dave Page<br />
<br />
|- <br />
|09:30 - 09:45<br />
|12.0 release and commitfest schedule<br />
|Dave Page<br />
<br />
|- <br />
|09:45 - 10:10<br />
|Heavier filtering for patches in last CF<br />
|Andres Freund<br />
<br />
|- <br />
|10:10- 10:30<br />
|Keeping track of features / context of features<br />
|Jonathan Katz<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 11:00<br />
|Coffee break<br />
|All<br />
<br />
|- <br />
|11:00 - 11:30<br />
|How can CFs/development process put more focus on long pending patches<br />
|Andres Freund, Jonathan Katz<br />
<br />
|- <br />
|11:30 - 11:50<br />
|GDPR and how it affects us<br />
|Magnus Hagander<br />
<br />
|- <br />
|11:50 - 12:00<br />
|Any other business<br />
|Dave Page<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:00<br />
|Lunch<br />
|<br />
<br />
|}<br />
<br />
Note: This timetable is a rough guide only. Items will start as soon as the previous discussion is complete (breaks will not move however). Any remaining time before lunch may be used for Commitfest item triage or other activities.<br />
<br />
== Minutes ==<br />
<br />
=== Welcome and introductions ===<br />
<br />
Attendees:<br />
<br />
=== 12.0 release and commitfest schedule ===<br />
<br />
=== Any other business ===</div>Simonhttps://wiki.postgresql.org/index.php?title=PgCon_2017_Developer_Meeting&diff=31991PgCon 2017 Developer Meeting2018-05-29T14:30:23Z<p>Simon: /* RSVPs */</p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for Tuesday 23 May, 2017 at the University of Ottawa, prior to pgCon 2017. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 10.0/9.6 release cycles. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
As at last years event, an Unconference will be held on Wednesday for in-depth discussion of technical topics.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Define the schedule for the 11.0 release cycle<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
<br />
== Time & Location ==<br />
<br />
The meeting will be:<br />
<br />
* 9:00AM to 12PM<br />
* DMS 3105<br />
* University of Ottawa.<br />
<br />
Coffee, tea and snacks will be served starting at 8:45am. Lunch will be after the meeting.<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname):<br />
<br />
* Aleksander Alekseev<br />
* Oleg Bartunov<br />
* Joe Conway<br />
* Jeff Davis<br />
* Andrew Dunstan<br />
* Peter Eisentraut<br />
* Andres Freund<br />
* Stephen Frost<br />
* Etsuro Fujita<br />
* Peter Geoghegan<br />
* Kevin Grittner<br />
* Robert Haas<br />
* Magnus Hagander<br />
* Álvaro Herrera<br />
* Kyotaro Horiguchi<br />
* Amit Kapila<br />
* Haribabu Kommi<br />
* Alexander Korotkov<br />
* Tom Lane<br />
* Amit Langote<br />
* Heikki Linnakangas<br />
* Noah Misch<br />
* Bruce Momjian<br />
* Thomas Munro<br />
* Dave Page<br />
* Michael Paquier<br />
* Masahiko Sawada<br />
* Teodor Sigaev<br />
<br />
Apologies<br />
* Simon Riggs<br />
<br />
== Agenda Items ==<br />
<br />
* Upgrading PostgreSQL without a downtime. (Aleksander Alekseev)<br />
* Commit fest management (Michael)<br />
* Intellectual Property Issues (Andres)<br />
* Recognizing Contributors (Stephen)<br />
* Release notes scope, and giving credit (Peter E.)<br />
* Web site design (Peter E.)<br />
* 64-bit xids (Alexander Korotkov)<br />
* Adopting an indent fork (Álvaro Herrera)<br />
* ''Please add suggestions for agenda items here. (with your name)''<br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:10<br />
|Welcome and introductions<br />
|Dave Page<br />
<br />
|-<br />
|09:10 - 09:20<br />
|PG 11 release and commitfest schedule<br />
|Dave Page<br />
<br />
|-<br />
|09:20 - 09:40<br />
|Commit fest management<br />
|Michael<br />
<br />
|-<br />
|09:40 - 10:00<br />
|Upgrading PostgreSQL without a downtime<br />
|Aleksander Alekseev<br />
<br />
|-<br />
|10:00 - 10:05<br />
|Intellectual property issues<br />
|Andres<br />
<br />
|-<br />
|10:15 - 10:30<br />
|Web site design<br />
|Peter Eisentraut<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 10:45<br />
|Coffee break<br />
|All<br />
<br />
|-<br />
|10:45 - 11:00<br />
|Release notes scope, and giving credit<br />
|Peter Eisentraut<br />
<br />
|-<br />
|11:00 - 11:20<br />
|Recognising contributors<br />
|Stephen<br />
<br />
|-<br />
|11:20 - 11:40<br />
|64-bit xids<br />
|Alexander Korotkov<br />
<br />
|-<br />
|11:40 - 11:50<br />
|Adopting an indent fork<br />
|Álvaro Herrera<br />
<br />
|- <br />
|11:50 - 12:00<br />
|Any other business<br />
|Dave Page<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:00<br />
|Lunch<br />
|<br />
<br />
|}<br />
<br />
== Minutes ==<br />
<br />
=== Welcome and introductions ===<br />
<br />
Attendees:<br />
<br />
* Aleksander Alekseev<br />
* Joe Conway<br />
* Jeff Davis<br />
* Andrew Dunstan<br />
* Peter Eisentraut<br />
* Andres Freund<br />
* Stephen Frost<br />
* Etsuro Fujita<br />
* Peter Geoghegan<br />
* Kevin Grittner<br />
* Robert Haas<br />
* Magnus Hagander<br />
* Álvaro Herrera<br />
* Kyotaro Horiguchi<br />
* Amit Kapila<br />
* Haribabu Kommi<br />
* Alexander Korotkov<br />
* Tom Lane<br />
* Amit Langote<br />
* Heikki Linnakangas<br />
* Noah Misch<br />
* Bruce Momjian<br />
* Thomas Munro<br />
* Dave Page<br />
* Michael Paquier<br />
* Masahiko Sawada<br />
* Teodor Sigaev<br />
<br />
=== PG 11 release and commitfest schedule ===<br />
<br />
Haas proposed using the '''same schedule as last year''', only shifting the<br />
dates forward by one year. Measure passed unanimously.<br />
<br />
Timing of the release branch is not yet clear.<br />
<br />
=== Commit fest management ===<br />
<br />
(Paquier) I seek feedback on recent CF management. At the end of each CF, I<br />
classify each patch's status and send a short email to the patch's thread. Is<br />
that spam? (Haas) No, it's good; some authors read their threads only. Don't<br />
decide the fate of a patch on an additional thread that doesn't include the<br />
author. CF manager does need to push other CF participants.<br />
<br />
(Freund) Don't always move patches to the next CF; use Returned with Feedback<br />
instead. Patches have traversed 4+ CFs without changing. (Haas) If something<br />
is or should be Waiting on Author at CF end, use Returned with Feedback. When<br />
authors have submitted an updated patch at the end of a CF, Paquier has moved it<br />
to the next CF. That is a good move. (Lane) I worry about patch authors not<br />
familiar with the CF process, who may not know to resubmit after Returned with<br />
Feedback. I propose moving the patch at the end of one CF, then closing it if<br />
the next CF starts with no state change.<br />
<br />
(Freund) Returned with Feedback breaks up the history, because the next<br />
submission will create a new entry. (Eisentraut) That is a tooling problem.<br />
<br />
(Paquier) CFs used to have 100 patches max, but they now see 250. Process<br />
struggles to keep up. (Haas) If we ever kept up with patch flow, we don't now.<br />
<br />
(Grittner) Patch repeatedly moving from one CF to the next can mean nobody was<br />
interested, or nobody competent had the time. (Freund) We're bad at giving<br />
early feedback that a change is not wanted. (Lane) For every patch, at least<br />
one person (the author) found it interesting. (Geoghegan, Lane) We don't<br />
outright reject very much. (Kapila) Each case is controversial. (Misch) Most<br />
almost-rejections are due to implementation, which we can't foresee early.<br />
<br />
(Eisentraut) When we move a patch to the next CF, the reviewer may not be aware.<br />
Should we clear the reviewer slot on move? (Haas) Reviewer list in CF app is<br />
often very wrong. (Paquier) Eliminate CF app tracking of reviewer? (Kapila)<br />
Reviewer field is helpful as a target for CF manager nagging. (Haas) Don't<br />
remove it, but don't trust it. (Lane) Should the CF manager aggressively remove<br />
an inactive reviewer? (Haas) I support clearing the field at CF end.<br />
(Grittner) When removing a reviewer, notify that person by email. (Linnakangas)<br />
The open items process, with Misch emails, has worked perfectly. (Eisentraut) I<br />
don't care about nag emails. Patches get stalled ~6 weeks because the listed<br />
reviewer is idle; other reviewers focus on entries with blank reviewer.<br />
<br />
(Paquier) The wiki's CF checklist is very outdated. I propose to rewrite it.<br />
Will add useful CF app links to that page or to the patch submission page.<br />
After doing those updates, I will request feedback from -hackers.<br />
<br />
=== Upgrading PostgreSQL without a downtime ===<br />
<br />
(Haas) As a technical topic, this is out of scope for this meeting. Save it for<br />
the unconference. (Page) Okay to discuss technical decisions such as openness<br />
to on-disk format changes. Technical discussion did work well in Brussels.<br />
<br />
(Korotkov, Alekseev) The community is conservative. For example, it uses Perl.<br />
We plan to allow v10->v11 upgrades but not direct v10->v12 upgrades. Is that<br />
okay? (Misch) I don't see a problem with this one-version upgrade window.<br />
(Hagander) Agreed; it's okay to need five upgrades to cross five versions.<br />
<br />
(Haas) Biggest thing that won't work is system catalog changes. (Geoghegan)<br />
Logical replication solves many of the problems.<br />
<br />
(Page) With SQL Server, you can just upgrade the binaries and restart.<br />
<br />
(Alekseev) I'm defining "zero downtime" as "indistinguishable from failover to a<br />
standby". (Grittner) Not proposing to preserve TCP connections? (Alekseev)<br />
Correct, not proposing that. (Geoghegan) Suggest starting with minor release<br />
updates. (Haas, Grittner) Under this definition of zero downtime, that's<br />
already possible.<br />
<br />
(Haas) I posted a pie-in-the-sky design for major releases. Lane found flaws.<br />
<br />
(Linnakangas) This will differ from the multiple-page-versions approaches, which<br />
still assumed use of pg_upgrade.<br />
<br />
(Page) Is it acceptable to require replication and a second server?<br />
<br />
(Herrera) Will every catalog change require code to support this? (Alekseev)<br />
No. For example, we just won't drop old catalog columns. (Davis) Challenging<br />
thanks to our use of C structures and offsets to access catalogs.<br />
<br />
(Haas) It will never work to perform physical replications across major<br />
versions. Could have v11 binaries recognize and convert a v10 cluster, but<br />
cannot have a v10 replica with a v11 master. (Freund, Momjian) Yes; the<br />
protocol is compatible, but the payload is not. (Linnakangas) It's possible but<br />
far more complicated and hard to test.<br />
<br />
(Misch) Propose conclusion that the group has no objections to this proceeding.<br />
We've provided various challenges to cover in the design.<br />
<br />
(Lane) Possible alternative is to spend time making pg_upgrade faster. (Freund)<br />
ANALYZE statistics are the hard part. (Haas, Eisentraut) pg_upgrade fails for<br />
hard-to-predict reasons.<br />
<br />
=== Intellectual property issues ===<br />
<br />
The group voted to exclude this topic from the minutes.<br />
<br />
=== Web site design ===<br />
<br />
(Eisentraut) Site is stuck in the past. We have occasional pushes to hire<br />
someone or otherwise fix it. (Frost) We did a bunch of work that didn't get<br />
merged. Showed it off at pgconf.eu 1.5 years ago. Sarah Conway of Crunchy Data<br />
is leading the design effort. Someone needs to reimplement that on a different<br />
Django version. (Momjian, Haas) This lacks project management. Who, if anyone,<br />
will do the remaining work? (Frost) I am targeting completion this fall.<br />
(Eisentraut) If I email pgsql-www every two weeks, is that annoying enough?<br />
<br />
(Misch) What's actually wrong with the current site? (Eisentraut) Looks bad on<br />
small devices. (Geoghegan) It creates a bad impression for new users.<br />
<br />
(Page) Incremental changes can be hard; changing the font size could lead to<br />
months of bikeshedding. (Hagander) Partial migration is undesirable, because it<br />
would leave the site with a blend of different designs.<br />
<br />
(Hagander) Updating the wiki is more urgent. (Eisentraut) Is there a backlog of<br />
infrastructure issues? (Hagander) Just the wiki and the mailing lists.<br />
<br />
=== Release notes scope, and giving credit ===<br />
<br />
(Eisentraut) Some items attributed to me warrant credit to important reviewers.<br />
<br />
(Linnakangas, Eisentraut) How should we treat performance improvements in the<br />
release notes? (Momjian) I can easily recognize significant feature additions,<br />
but it's harder to tell the significance of a performance improvement. I want<br />
to include changes that are actionable, that allow new uses of PostgreSQL. From<br />
1200 commits I wrote 200 release note entries, some of those associated with<br />
more than one commit. Adding commit hashes as SGML comments has been a big win.<br />
I expect changes to initial notes; for v10, the editing thread was shorter than<br />
usual. (Freund) I was dissatisfied with the original treatment of performance<br />
patches and the general statement about their value. "Will it run faster?" is<br />
the #1 thing for my users. However, I'm content with the release notes as they<br />
stand today. (Haas) Committers have an action item to write commit messages<br />
that explain the change's significance. (Momjian) Commit messages were really<br />
good. (Haas) Hard to write notes for Lane improvements that address rare query<br />
shapes. (Linnakangas) Should consciously include an end-user-visible example.<br />
<br />
(Grittner) Most releases improve two kinds of performance. First, they improve<br />
concurrency: they move the performance "knee" to the right (more clients) and<br />
make its decline shallower. Second, they make certain workloads suffer less<br />
bloat.<br />
<br />
(Conway, Haas) Including mailing list links in commit messages has been useful.<br />
<br />
(Haas) Do we keep including author names in release notes? (Freund) Linking to<br />
the commit would suffice for credit. (Eisentraut) Should we move all names to<br />
the end? (Momjian) Names at the end is okay if we do link to commits. (Haas)<br />
Linking to commits would be useful. (Momjian) Use javascript to show/hide all<br />
commit references, and/or show them on mouseover. (Dunstan) PDF docs won't<br />
handle that as well. (Eisentraut) Implementing dynamic behavior in every doc<br />
format is a lot of work.<br />
<br />
(Momjian) v10 has 10-20% fewer release note items than recent releases, but it<br />
has big items. (Andres) That will change next release.<br />
<br />
(Momjian) For 9.2 and 9.3, Josh Berkus and others gave feedback that listing<br />
reviewers was too much. (Eisentraut) Nonetheless, we should list them in the<br />
release notes. (Misch) I realize it's not the community consensus, but I remain<br />
supportive of listing reviewers at the bottom of the release notes. (Dunstan,<br />
Haas) We wouldn't mind that. (Dunstan, Misch) We don't credit one-line<br />
reviewers in our commits, so they'd be appropriately excluded from release<br />
notes. (Linnakangas) We could even credit everyone who send a mailing list<br />
post. (Geoghegan) I favor inclusion: not one-line reviewers, but almost<br />
anything else. People don't read notes end-to-end, anyway. (Eisentraut)<br />
Propose we<br />
'''collect all names mentioned in commit messages and stick them at the end of the v10 release notes'''.<br />
I will do the work. Measure passed unanimously.<br />
<br />
=== Recognising contributors ===<br />
<br />
(Frost) We have competing proposals for updating the web site contributor list.<br />
Need to define criteria. Could even just use the list Eisentraut makes for the<br />
release notes. (Haas) Don't want to add that many. When I proposed a list, I<br />
had forgotten that last year's meeting had commissioned another effort.<br />
Committed CF entries dominated the Frost proposal, and that's a problem.<br />
(Frost) I looked at email size as a way to recognize non-code contributions.<br />
(Haas) We do want to recognize non-code contributions.<br />
<br />
(Freund) We're letting perfect be the enemy of good. (Page) We should vote<br />
yea/nay on a list presented so far, and move on. (Haas) Analyzing 2016 commits<br />
took ~8hr. Fine to automate if we can, but automation is inessential. I'm<br />
willing to spend 24hr analyzing satellite projects. Frost has blocked each of<br />
my proposals. (Page) Your time is better spent on code. (Haas) I thought that<br />
for five years, too. (Page) Propose taking Conway's list, discussing anything<br />
needed, and adopting it.<br />
<br />
(Page, Haas, Geoghegan) Numbers should be a starting point; they should not<br />
dictate the final answer. (Haas) Best to remove CF data from the pile.<br />
<br />
Poll: ~40% of this room is not on the contributors list.<br />
<br />
(Geoghegan) We'd be unanimous on recognizing 10-20 people.<br />
<br />
(Linnakangas) Who will physically update the site? (Conway, Lane) Suggest<br />
converting Haas list to a web site diff and sending it to<br />
pgsql-private-committers@ for approval. (Haas) Expect more cycles of update.<br />
For example, I only classified people as past contributors when 100% confident.<br />
Complaints are inevitable.<br />
<br />
(Haas) Propose having Frost and myself sit down after this meeting and agree on<br />
something. (Momjian) I want the site updated by Thursday. (group conclusion)<br />
'''Haas and Frost may proceed to update the list''', letting let this happen<br />
quickly.<br />
<br />
=== 64-bit xids ===<br />
<br />
(Korotkov) Postgres Pro has a patch for this. Some customers have problems not<br />
fixed by 9.6 freeze work. No access to production systems for seeing details.<br />
<br />
(Misch) Community would need to see the good-case and worst-case benchmarks.<br />
<br />
(Grittner) This won't fix vacuuming to reclaim space.<br />
<br />
(Lane) Eliminating freezes is attractive.<br />
<br />
(Geoghegan) What happened to the Linnakangas version of this? (Linnakangas)<br />
It's unfinished.<br />
<br />
(Haas) We know there's more to improve here, but we don't know what exactly<br />
remains.<br />
<br />
(Haas) I will vote against widening xmin/xmax on disk. The Linnakangas approach<br />
didn't have that problem. (Linnakangas) Don't want on-disk format changes.<br />
<br />
(Linnakangas) Do problems remain despite free space map and freeze map?<br />
(Freund, Geoghegan) Yes. (Freund) I see anti-wraparound vacuum problems in 9.6<br />
three times per week, in response to configuration changes. Spending 1.8B XIDs<br />
in two days is not the worst I've seen. (Geoghegan, Freund) Nobody cares about<br />
clog size. (Haas) People do care, but not the same people who care about<br />
anti-wraparound vacuum.<br />
<br />
=== Adopting an indent fork ===<br />
<br />
(Lane) Considering adoption of Piotr Stefaniak indent fork. I studied the diff<br />
it causes and liked nearly everything. Should we embed it in the PostgreSQL<br />
tree, or should we give it a standalone repository? In-tree lets us correlate<br />
changes, and out-of-tree lets us use the latest version on all branches. (Haas)<br />
Weird to cram a standalone tool into the main tree. (Misch) Similar to TAP<br />
support modules. (Lane) Similar to much of src/tools.<br />
<br />
(Freund) Great if every contributor can easily run indent. (Eisentraut)<br />
Developers will figure it out easily, relative to other challenges of starting<br />
development like installing dependencies and configuring one's editor. (Freund)<br />
Mainstream OSs package all dependencies, so that part is easy.<br />
<br />
(Haas) We should reindent every week or every day. By end of cycle, the tree<br />
has accrued lots of divergence. It's hard to commit indent-clean code to a file<br />
that is already not indent-clean. "make indent" would be great.<br />
<br />
(Eisentraut) If we switch indent implementations, I want one with upstream<br />
maintenance. (Freund) Author of proposed replacement is a FreeBSD committer and<br />
plans to submit indent code to FreeBSD. (Misch) We won't pull from upstream<br />
automatically; syncs will be more like timezone code syncs. (Freund) The<br />
replacement is already more-maintained than pgindent. (Lane) I vote not to wait<br />
for better maintenance. (Haas) If Lane will cover any problems, let it happen.<br />
Proposed tool does improve things.<br />
<br />
(Eisentraut) Happy leaving v10 as-is (pgindent).<br />
<br />
(Lane) Distinct issues (1) whether to switch indent tools and (2) how to<br />
distribute indent tool code. (Misch) Also (3) how often to reindent.<br />
<br />
=== Any other business ===<br />
<br />
(Misch) Congested agenda today. Should we meet longer next year? (Haas)<br />
Schedule was based on an unconference starting after the meeting, which we no<br />
longer do. But we wouldn't survive a 09:00-17:00 meeting. (Hagander) Perhaps<br />
09:00-14:00?<br />
<br />
(Page) How should the other developer meetings compare to this one? Brussels<br />
has been heavy on technical topics. (Haas) Unconference is better for technical<br />
topics. We used to have lots of narrow-interest technical topics that boiled<br />
down to the presenter speaking at a non-participating group.<br />
<br />
(Linnakangas) When linking to mailing list posts in commit messages, I use a<br />
postgresql.org URL, but most use postgr.es. (Eisentraut) Should we link to the<br />
whole thread or to a single message?</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31475SQL MERGE Patch Status2018-02-03T22:30:42Z<p>Simon: /* Not planned for PG11 */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
Next patch v15 due mid-Feb 2018<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
Peter Geoghegan [https://www.postgresql.org/message-id/CAH2-WzmMpW97m_uAiVfTF1swA06KREbEkKftX6WBcYoAVi867g@mail.gmail.com disagrees with the current characterization of both of these bugs as "incorrect wording" issues].<br />
<br />
* EXPLAIN ANALYZE reports number of rows inserted incorrectly, not taking into account rows skipped by NOT MATCHED WHEN AND conditions (calculation error, reports number of rows processed - updates - deletes) (Reported by PeterG)<br />
<br />
* 3 Assertion failures reported by sqlsmith (Reported by Andreas Seltenreich)<br />
<br />
-- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_SubLink))", File: "clauses.c", Line: 440)<br />
MERGE INTO public.brin_test as target_0<br />
USING pg_catalog.pg_database as ref_0<br />
left join pg_catalog.pg_user_mapping as sample_0 tablesample system (2.3)<br />
on (pg_catalog.mul_d_interval(<br />
cast(pg_catalog.pi() as float8),<br />
cast(case when sample_0.umoptions is not NULL then (select write_lag from pg_catalog.pg_stat_replication limit 1 offset 2)<br />
else (select write_lag from pg_catalog.pg_stat_replication limit 1 offset 2)<br />
end<br />
as "interval")) = (select intervalcol from public.brintest limit 1 offset 2)<br />
)<br />
ON target_0.a = ref_0.encoding<br />
WHEN NOT MATCHED AND cast(null as "timestamp") < cast(null as date)<br />
THEN INSERT VALUES ( 62, 6)<br />
WHEN NOT MATCHED<br />
AND false<br />
THEN DO NOTHING;<br />
<br />
-- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_SubLink))", File: "prepunion.c", Line: 2246)<br />
MERGE INTO public.onek2 as target_0<br />
USING public.prt1 as ref_0<br />
inner join public.tenk1 as ref_1<br />
on ((select t from public.btree_tall_tbl limit 1 offset 63)<br />
is not NULL)<br />
ON target_0.stringu1 = ref_1.stringu1<br />
WHEN NOT MATCHED THEN DO NOTHING;<br />
<br />
-- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_Query))", File: "var.c", Line: 248)<br />
MERGE INTO public.clstr_tst_inh as target_0<br />
USING pg_catalog.pg_statio_sys_tables as ref_0<br />
left join public.rule_and_refint_t3 as ref_1<br />
on (((ref_0.heap_blks_hit is not NULL)<br />
or (((select f1 from public.path_tbl limit 1 offset 5)<br />
>= (select thepath from public.shighway limit 1 offset 33)<br />
)<br />
or (cast(null as tsvector) <> cast(null as tsvector))))<br />
and (ref_0.toast_blks_read is not NULL))<br />
ON target_0.d = ref_1.data<br />
WHEN NOT MATCHED<br />
AND cast(null as int2) = pg_catalog.lastval()<br />
THEN DO NOTHING;<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon, fix committed, due in v15)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
PLEASE MAKE ALL REQUESTED CHANGES TO CONCURRENCY IN TERMS OF THE CURRENT PATCH. i.e. state clearly which test needs to change? what is the change in user visible behavior? That allows us to comment on specific issues and to use that test as a target for development.<br />
<br />
Explanatory text added to concurrency chapter by request of Stephen Frost at Dev meeting. Summary here:<br />
<br />
The SQl Standard says "The extent to which an SQL-implementation may disallow independent changes that are not significant is<br />
implementation-defined.", SQL-2016 Foundation, p.1178, 4)<br />
"not significant" is undefined.<br />
The following concurrency rules are included within v14.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently updated,<br />
then MERGE will behave the same as the UPDATE or DELETE commands and perform<br />
its action on the latest version of the row, using standard EvalPlanQual.<br />
MERGE actions can be conditional, so conditions must be re-evaluated on the latest row.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently deleted<br />
we currently throw an ERROR. We now agree it is possible and desirable to attempt<br />
an INSERT in this case, but haven't yet worked out how. (*)<br />
<br />
If MERGE attempts an INSERT and a unique index is present and the new row is a duplicate then a<br />
uniqueness violation is raised. MERGE does not attempt to avoid the ERROR by<br />
attempting an UPDATE. It woud be possible to avoid the errors by using speculative inserts but that has been argued against by some. (*)<br />
<br />
The full guarantee of always either insert or update that is available with INSERT ON CONFLICT UPDATE is not always possible because of the conditional rules of the MERGE statement, so we would be able to make only one attempt at UPDATE if INSERT fails or INSERT if UPDATE fails. This is to ensure consistent behavior of the command.<br />
<br />
(*) It is understood that other DBMS throw errors in these case (fact check needed). Some DBMS cope with this by routing such errors to an Error Table that is created on first error.<br />
<br />
= Planned for PG11 =<br />
* Partitioning (WIP due v15) - likely to require multiple different plans for various use cases<br />
* Tab completion (WIP due v15) - likely unable to have full syntax, too complex<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* Whole row vars in MERGE UPDATE targetlists<br />
* Subselects in WHEN AND conditions (supported by Oracle and SQLServer, but non-standard)<br />
* INSERT OVERRIDING<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31474SQL MERGE Patch Status2018-02-03T22:29:37Z<p>Simon: </p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
Next patch v15 due mid-Feb 2018<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
Peter Geoghegan [https://www.postgresql.org/message-id/CAH2-WzmMpW97m_uAiVfTF1swA06KREbEkKftX6WBcYoAVi867g@mail.gmail.com disagrees with the current characterization of both of these bugs as "incorrect wording" issues].<br />
<br />
* EXPLAIN ANALYZE reports number of rows inserted incorrectly, not taking into account rows skipped by NOT MATCHED WHEN AND conditions (calculation error, reports number of rows processed - updates - deletes) (Reported by PeterG)<br />
<br />
* 3 Assertion failures reported by sqlsmith (Reported by Andreas Seltenreich)<br />
<br />
-- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_SubLink))", File: "clauses.c", Line: 440)<br />
MERGE INTO public.brin_test as target_0<br />
USING pg_catalog.pg_database as ref_0<br />
left join pg_catalog.pg_user_mapping as sample_0 tablesample system (2.3)<br />
on (pg_catalog.mul_d_interval(<br />
cast(pg_catalog.pi() as float8),<br />
cast(case when sample_0.umoptions is not NULL then (select write_lag from pg_catalog.pg_stat_replication limit 1 offset 2)<br />
else (select write_lag from pg_catalog.pg_stat_replication limit 1 offset 2)<br />
end<br />
as "interval")) = (select intervalcol from public.brintest limit 1 offset 2)<br />
)<br />
ON target_0.a = ref_0.encoding<br />
WHEN NOT MATCHED AND cast(null as "timestamp") < cast(null as date)<br />
THEN INSERT VALUES ( 62, 6)<br />
WHEN NOT MATCHED<br />
AND false<br />
THEN DO NOTHING;<br />
<br />
-- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_SubLink))", File: "prepunion.c", Line: 2246)<br />
MERGE INTO public.onek2 as target_0<br />
USING public.prt1 as ref_0<br />
inner join public.tenk1 as ref_1<br />
on ((select t from public.btree_tall_tbl limit 1 offset 63)<br />
is not NULL)<br />
ON target_0.stringu1 = ref_1.stringu1<br />
WHEN NOT MATCHED THEN DO NOTHING;<br />
<br />
-- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_Query))", File: "var.c", Line: 248)<br />
MERGE INTO public.clstr_tst_inh as target_0<br />
USING pg_catalog.pg_statio_sys_tables as ref_0<br />
left join public.rule_and_refint_t3 as ref_1<br />
on (((ref_0.heap_blks_hit is not NULL)<br />
or (((select f1 from public.path_tbl limit 1 offset 5)<br />
>= (select thepath from public.shighway limit 1 offset 33)<br />
)<br />
or (cast(null as tsvector) <> cast(null as tsvector))))<br />
and (ref_0.toast_blks_read is not NULL))<br />
ON target_0.d = ref_1.data<br />
WHEN NOT MATCHED<br />
AND cast(null as int2) = pg_catalog.lastval()<br />
THEN DO NOTHING;<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon, fix committed, due in v15)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
PLEASE MAKE ALL REQUESTED CHANGES TO CONCURRENCY IN TERMS OF THE CURRENT PATCH. i.e. state clearly which test needs to change? what is the change in user visible behavior? That allows us to comment on specific issues and to use that test as a target for development.<br />
<br />
Explanatory text added to concurrency chapter by request of Stephen Frost at Dev meeting. Summary here:<br />
<br />
The SQl Standard says "The extent to which an SQL-implementation may disallow independent changes that are not significant is<br />
implementation-defined.", SQL-2016 Foundation, p.1178, 4)<br />
"not significant" is undefined.<br />
The following concurrency rules are included within v14.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently updated,<br />
then MERGE will behave the same as the UPDATE or DELETE commands and perform<br />
its action on the latest version of the row, using standard EvalPlanQual.<br />
MERGE actions can be conditional, so conditions must be re-evaluated on the latest row.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently deleted<br />
we currently throw an ERROR. We now agree it is possible and desirable to attempt<br />
an INSERT in this case, but haven't yet worked out how. (*)<br />
<br />
If MERGE attempts an INSERT and a unique index is present and the new row is a duplicate then a<br />
uniqueness violation is raised. MERGE does not attempt to avoid the ERROR by<br />
attempting an UPDATE. It woud be possible to avoid the errors by using speculative inserts but that has been argued against by some. (*)<br />
<br />
The full guarantee of always either insert or update that is available with INSERT ON CONFLICT UPDATE is not always possible because of the conditional rules of the MERGE statement, so we would be able to make only one attempt at UPDATE if INSERT fails or INSERT if UPDATE fails. This is to ensure consistent behavior of the command.<br />
<br />
(*) It is understood that other DBMS throw errors in these case (fact check needed). Some DBMS cope with this by routing such errors to an Error Table that is created on first error.<br />
<br />
= Planned for PG11 =<br />
* Partitioning (WIP due v15) - likely to require multiple different plans for various use cases<br />
* Tab completion (WIP due v15) - likely unable to have full syntax, too complex<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* Subselects in WHEN AND conditions (supported by Oracle and SQLServer, but non-standard)<br />
* INSERT OVERRIDING<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31473SQL MERGE Patch Status2018-02-03T22:27:29Z<p>Simon: /* Bugs */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
Next patch v15 due mid-Feb 2018<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
Peter Geoghegan [https://www.postgresql.org/message-id/CAH2-WzmMpW97m_uAiVfTF1swA06KREbEkKftX6WBcYoAVi867g@mail.gmail.com disagrees with the current characterization of both of these bugs as "incorrect wording" issues].<br />
<br />
* EXPLAIN ANALYZE reports number of rows inserted incorrectly, not taking into account rows skipped by NOT MATCHED WHEN AND conditions (calculation error, reports number of rows processed - updates - deletes) (Reported by PeterG)<br />
<br />
* 3 Assertion failures reported by sqlsmith (Reported by Andreas Seltenreich)<br />
<br />
-- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_SubLink))", File: "clauses.c", Line: 440)<br />
MERGE INTO public.brin_test as target_0<br />
USING pg_catalog.pg_database as ref_0<br />
left join pg_catalog.pg_user_mapping as sample_0 tablesample system (2.3)<br />
on (pg_catalog.mul_d_interval(<br />
cast(pg_catalog.pi() as float8),<br />
cast(case when sample_0.umoptions is not NULL then (select write_lag from pg_catalog.pg_stat_replication limit 1 offset 2)<br />
else (select write_lag from pg_catalog.pg_stat_replication limit 1 offset 2)<br />
end<br />
as "interval")) = (select intervalcol from public.brintest limit 1 offset 2)<br />
)<br />
ON target_0.a = ref_0.encoding<br />
WHEN NOT MATCHED AND cast(null as "timestamp") < cast(null as date)<br />
THEN INSERT VALUES ( 62, 6)<br />
WHEN NOT MATCHED<br />
AND false<br />
THEN DO NOTHING;<br />
<br />
-- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_SubLink))", File: "prepunion.c", Line: 2246)<br />
MERGE INTO public.onek2 as target_0<br />
USING public.prt1 as ref_0<br />
inner join public.tenk1 as ref_1<br />
on ((select t from public.btree_tall_tbl limit 1 offset 63)<br />
is not NULL)<br />
ON target_0.stringu1 = ref_1.stringu1<br />
WHEN NOT MATCHED THEN DO NOTHING;<br />
<br />
-- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_Query))", File: "var.c", Line: 248)<br />
MERGE INTO public.clstr_tst_inh as target_0<br />
USING pg_catalog.pg_statio_sys_tables as ref_0<br />
left join public.rule_and_refint_t3 as ref_1<br />
on (((ref_0.heap_blks_hit is not NULL)<br />
or (((select f1 from public.path_tbl limit 1 offset 5)<br />
>= (select thepath from public.shighway limit 1 offset 33)<br />
)<br />
or (cast(null as tsvector) <> cast(null as tsvector))))<br />
and (ref_0.toast_blks_read is not NULL))<br />
ON target_0.d = ref_1.data<br />
WHEN NOT MATCHED<br />
AND cast(null as int2) = pg_catalog.lastval()<br />
THEN DO NOTHING;<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon, fix committed, due in v15)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
PLEASE MAKE ALL REQUESTED CHANGES TO CONCURRENCY IN TERMS OF THE CURRENT PATCH. i.e. state clearly which test needs to change? what is the change in user visible behavior? That allows us to comment on specific issues and to use that test as a target for development.<br />
<br />
Explanatory text added to concurrency chapter by request of Stephen Frost at Dev meeting. Summary here:<br />
<br />
The SQl Standard says "The extent to which an SQL-implementation may disallow independent changes that are not significant is<br />
implementation-defined.", SQL-2016 Foundation, p.1178, 4)<br />
"not significant" is undefined.<br />
The following concurrency rules are included within v14.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently updated,<br />
then MERGE will behave the same as the UPDATE or DELETE commands and perform<br />
its action on the latest version of the row, using standard EvalPlanQual.<br />
MERGE actions can be conditional, so conditions must be re-evaluated on the latest row.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently deleted<br />
we currently throw an ERROR. We now agree it is possible and desirable to attempt<br />
an INSERT in this case, but haven't yet worked out how. (*)<br />
<br />
If MERGE attempts an INSERT and a unique index is present and the new row is a duplicate then a<br />
uniqueness violation is raised. MERGE does not attempt to avoid the ERROR by<br />
attempting an UPDATE. It woud be possible to avoid the errors by using speculative inserts but that has been argued against by some. (*)<br />
<br />
The full guarantee of always either insert or update that is available with INSERT ON CONFLICT UPDATE is not always possible because of the conditional rules of the MERGE statement, so we would be able to make only one attempt at UPDATE if INSERT fails or INSERT if UPDATE fails. This is to ensure consistent behavior of the command.<br />
<br />
(*) It is understood that other DBMS throw errors in these case (fact check needed). Some DBMS cope with this by routing such errors to an Error Table that is created on first error.<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP due v15) - likely to require multiple different plans for various use cases<br />
* Tab completion (WIP due v15) - likely unable to have full syntax, too complex<br />
* INSERT OVERRIDING<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31472SQL MERGE Patch Status2018-02-03T21:55:09Z<p>Simon: /* Major */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
Next patch v15 due mid-Feb 2018<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
Peter Geoghegan [https://www.postgresql.org/message-id/CAH2-WzmMpW97m_uAiVfTF1swA06KREbEkKftX6WBcYoAVi867g@mail.gmail.com disagrees with the current characterization of both of these bugs as "incorrect wording" issues].<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon, fix committed, due in v15)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
PLEASE MAKE ALL REQUESTED CHANGES TO CONCURRENCY IN TERMS OF THE CURRENT PATCH. i.e. state clearly which test needs to change? what is the change in user visible behavior? That allows us to comment on specific issues and to use that test as a target for development.<br />
<br />
Explanatory text added to concurrency chapter by request of Stephen Frost at Dev meeting. Summary here:<br />
<br />
The SQl Standard says "The extent to which an SQL-implementation may disallow independent changes that are not significant is<br />
implementation-defined.", SQL-2016 Foundation, p.1178, 4)<br />
"not significant" is undefined.<br />
The following concurrency rules are included within v14.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently updated,<br />
then MERGE will behave the same as the UPDATE or DELETE commands and perform<br />
its action on the latest version of the row, using standard EvalPlanQual.<br />
MERGE actions can be conditional, so conditions must be re-evaluated on the latest row.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently deleted<br />
we currently throw an ERROR. We now agree it is possible and desirable to attempt<br />
an INSERT in this case, but haven't yet worked out how. (*)<br />
<br />
If MERGE attempts an INSERT and a unique index is present and the new row is a duplicate then a<br />
uniqueness violation is raised. MERGE does not attempt to avoid the ERROR by<br />
attempting an UPDATE. It woud be possible to avoid the errors by using speculative inserts but that has been argued against by some. (*)<br />
<br />
The full guarantee of always either insert or update that is available with INSERT ON CONFLICT UPDATE is not always possible because of the conditional rules of the MERGE statement, so we would be able to make only one attempt at UPDATE if INSERT fails or INSERT if UPDATE fails. This is to ensure consistent behavior of the command.<br />
<br />
(*) It is understood that other DBMS throw errors in these case (fact check needed). Some DBMS cope with this by routing such errors to an Error Table that is created on first error.<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP due v15) - likely to require multiple different plans for various use cases<br />
* Tab completion (WIP due v15) - likely unable to have full syntax, too complex<br />
* INSERT OVERRIDING<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31471SQL MERGE Patch Status2018-02-03T18:23:29Z<p>Simon: /* Major */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
Next patch v15 due mid-Feb 2018<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
Peter Geoghegan [https://www.postgresql.org/message-id/CAH2-WzmMpW97m_uAiVfTF1swA06KREbEkKftX6WBcYoAVi867g@mail.gmail.com disagrees with the current characterization of both of these bugs as "incorrect wording" issues].<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon, fix committed, due in v15)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
PLEASE MAKE ALL REQUESTED CHANGES TO CONCURRENCY IN TERMS OF THE CURRENT PATCH. i.e. state clearly which test needs to change? what is the change in user visible behavior? That allows us to comment on specific issues and to use that test as a target for development.<br />
<br />
Explanatory text added to concurrency chapter by request of Stephen Frost at Dev meeting. Summary here:<br />
<br />
The SQl Standard says "The extent to which an SQL-implementation may disallow independent changes that are not significant is<br />
implementation-defined.", SQL-2016 Foundation, p.1178, 4)<br />
"not significant" is undefined.<br />
The following concurrency rules are included within v14.<br />
<br />
If MERGE attempts an INSERT and a unique index exists then a<br />
uniqueness violation is raised. MERGE does not attempt to avoid the ERROR by<br />
attempting an UPDATE, though we could choose to do that if we wished.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently updated,<br />
then MERGE will behave the same as the UPDATE or DELETE commands and perform<br />
its action on the latest version of the row, using standard EvalPlanQual.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently deleted<br />
we currently throw an ERROR. We agree it is possible and desirable to attempt<br />
an INSERT in this case, but haven't yet worked out how.<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP due v15) - likely to require multiple different plans for various use cases<br />
* Tab completion (WIP due v15) - likely unable to have full syntax, too complex<br />
* INSERT OVERRIDING<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31470SQL MERGE Patch Status2018-02-03T18:08:38Z<p>Simon: /* Major */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
Next patch v15 due mid-Feb 2018<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
Peter Geoghegan [https://www.postgresql.org/message-id/CAH2-WzmMpW97m_uAiVfTF1swA06KREbEkKftX6WBcYoAVi867g@mail.gmail.com disagrees with the current characterization of both of these bugs as "incorrect wording" issues].<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon, fix committed, due in v15)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
PLEASE MAKE ALL REQUESTED CHANGES TO CONCURRENCY IN TERMS OF THE CURRENT PATCH. i.e. state clearly which test needs to change? what is the change in user visible behavior? That allows us to comment on specific issues and to use that test as a target for development.<br />
<br />
Explanatory text added to concurrency chapter by request of Stephen Frost at Dev meeting. Summary here:<br />
<br />
If MERGE attempts an INSERT and a unique index exists then a<br />
uniqueness violation is raised. MERGE does not attempt to avoid the ERROR by<br />
attempting an UPDATE, even though we could do if we wanted it to.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently updated,<br />
then MERGE will behave the same as the UPDATE or DELETE commands and perform<br />
its action on the latest version of the row, using standard EvalPlanQual.<br />
<br />
If MERGE attempts an UPDATE or DELETE and the row is concurrently deleted<br />
we currently throw an ERROR. We think it is possible and desirable to attempt<br />
an INSERT in this case, but haven't yet worked out how.<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP due v15) - likely to require multiple different plans for various use cases<br />
* Tab completion (WIP due v15) - likely unable to have full syntax, too complex<br />
* INSERT OVERRIDING<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31463SQL MERGE Patch Status2018-02-01T15:47:07Z<p>Simon: /* Unsupported features */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
Next patch v15 due mid-Feb 2018<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon, fix committed, due in v15)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
PLEASE MAKE ALL REQUESTED CHANGES TO CONCURRENCY IN TERMS OF THE CURRENT PATCH. i.e. state clearly which test needs to change? what is the change in user visible behavior? That allows us to comment on specific issues and to use that test as a target for development.<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP due v15) - likely to require multiple different plans for various use cases<br />
* Tab completion (WIP due v15) - likely unable to have full syntax, too complex<br />
* INSERT OVERRIDING<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31461SQL MERGE Patch Status2018-02-01T12:49:26Z<p>Simon: /* Major */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
Next patch v15 due mid-Feb 2018<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon, fix committed, due in v15)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
PLEASE MAKE ALL REQUESTED CHANGES TO CONCURRENCY IN TERMS OF THE CURRENT PATCH. i.e. state clearly which test needs to change? what is the change in user visible behavior? That allows us to comment on specific issues and to use that test as a target for development.<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP due v15)<br />
* Tab completion (WIP due v15)<br />
* INSERT OVERRIDING<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31458SQL MERGE Patch Status2018-02-01T08:37:00Z<p>Simon: /* Minor */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
Next patch v15 due mid-Feb 2018<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon, fix committed, due in v15)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP due v15)<br />
* Tab completion (WIP due v15)<br />
* INSERT OVERRIDING<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31457SQL MERGE Patch Status2018-02-01T08:36:15Z<p>Simon: /* Unsupported features */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
Next patch v15 due mid-Feb 2018<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP due v15)<br />
* Tab completion (WIP due v15)<br />
* INSERT OVERRIDING<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31456SQL MERGE Patch Status2018-02-01T08:35:35Z<p>Simon: /* Overview */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
Next patch v15 due mid-Feb 2018<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERRIDING<br />
* Tab completion<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31454SQL MERGE Patch Status2018-01-30T13:36:00Z<p>Simon: /* Not planned for PG11 */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERRIDING<br />
* Tab completion<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (blocked at v15)<br />
* CTE support - not part of standard - would throw syntax ERROR (blocked at v15)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31453SQL MERGE Patch Status2018-01-30T12:55:59Z<p>Simon: /* Unsupported features */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERRIDING<br />
* Tab completion<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (as yet untested)<br />
* CTE support - not part of standard - would throw syntax ERROR (as yet untested)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31452SQL MERGE Patch Status2018-01-30T12:32:03Z<p>Simon: /* Minor */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs (Reported by Simon)<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERIDING<br />
* Tab completion<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (as yet untested)<br />
* CTE support - not part of standard - would throw syntax ERROR (as yet untested)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31451SQL MERGE Patch Status2018-01-30T12:31:51Z<p>Simon: /* Bugs */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE (Reported by PeterG)<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERIDING<br />
* Tab completion<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (as yet untested)<br />
* CTE support - not part of standard - would throw syntax ERROR (as yet untested)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31450SQL MERGE Patch Status2018-01-30T12:31:11Z<p>Simon: /* Overview */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant.<br />
Substantial review input from Peter Geoghegan of vmWare.<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE:<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERIDING<br />
* Tab completion<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (as yet untested)<br />
* CTE support - not part of standard - would throw syntax ERROR (as yet untested)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31449SQL MERGE Patch Status2018-01-30T12:30:37Z<p>Simon: /* Overview */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core - authored by Simon Riggs and Pavan Deolasee of 2ndQuadrant<br />
Substantial review input from Peter Geoghegan of vmWare<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE:<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERIDING<br />
* Tab completion<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (as yet untested)<br />
* CTE support - not part of standard - would throw syntax ERROR (as yet untested)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31448SQL MERGE Patch Status2018-01-30T12:29:07Z<p>Simon: /* Not planned for PG11 */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE:<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERIDING<br />
* Tab completion<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk - would throw ERROR on table with POLICYs (already blocked)<br />
* Transition tables for Statement Triggers - would throw ERROR on use against a table with transition tables defined (already blocked)<br />
* RETURNING - not part of standard - would throw syntax ERROR (as yet untested)<br />
* CTE support - not part of standard - would throw syntax ERROR (as yet untested)<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31447SQL MERGE Patch Status2018-01-30T12:26:24Z<p>Simon: /* Unsupported features */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE:<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERIDING<br />
* Tab completion<br />
* get_query_def() in ruleutils.c<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk<br />
* Transition tables for Statement Triggers<br />
* RETURNING - not part of standard<br />
* CTE support - not part of standard<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31446SQL MERGE Patch Status2018-01-30T12:24:33Z<p>Simon: /* Minor */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE:<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* Mention DO NOTHING is an extension to the SQL Standard in docs<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERIDING<br />
* Tab completion<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk<br />
* Transition tables for Statement Triggers<br />
* RETURNING - not part of standard<br />
* CTE support - not part of standard<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31445SQL MERGE Patch Status2018-01-30T12:23:37Z<p>Simon: /* Closed since v13 */</p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE:<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* None<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERIDING<br />
* Tab completion<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk<br />
* Transition tables for Statement Triggers<br />
* RETURNING - not part of standard<br />
* CTE support - not part of standard<br />
<br />
= Closed since v13 =<br />
<br />
v14 - 18/1/29<br />
* Add xref docs between INSERT ON CONFLICT and MERGE<br />
* Add: New direct self-referencing test case, no bugs found<br />
* Add: EXPLAIN ANALYZE in the same style as INSERT .. ON CONFLICT<br />
* Add: Allow Oid system column to be used in WHEN AND conditions<br />
* Add: Prevent WHEN AND clause from writing data to db, per SQL spec</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31444SQL MERGE Patch Status2018-01-30T12:20:09Z<p>Simon: </p>
<hr />
<div>=== Previous History ===<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE SQL MERGE]<br />
<br />
=== Overview ===<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
=== Open Items ===<br />
<br />
== Bugs ==<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE:<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor ==<br />
<br />
* None<br />
<br />
== Major ==<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features =<br />
* Partitioning (WIP)<br />
* INSERT OVERIDING<br />
* Tab completion<br />
<br />
= Not planned for PG11 =<br />
* RLS - Requested not to be supported for PG11, on basis of risk<br />
* Transition tables for Statement Triggers<br />
* RETURNING - not part of standard<br />
* CTE support - not part of standard<br />
<br />
= Closed since v13 =<br />
<br />
* Add xref docs between INSERT ON CONFLICT and MERGE (18/1/29)</div>Simonhttps://wiki.postgresql.org/index.php?title=SQL_MERGE_Patch_Status&diff=31443SQL MERGE Patch Status2018-01-30T12:17:37Z<p>Simon: Created page with "= Previous History [https://wiki.postgresql.org/wiki/SQL_MERGE] = Overview Patch for SQL Standard MERGE statement submitted to PostgreSQL core Current patch is v14 [https:/..."</p>
<hr />
<div>= Previous History<br />
[https://wiki.postgresql.org/wiki/SQL_MERGE]<br />
<br />
= Overview<br />
<br />
Patch for SQL Standard MERGE statement submitted to PostgreSQL core<br />
<br />
Current patch is v14<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BYDPtO9KsMX2ztXLxHjpmjef3ytfmhRfvK48db0o4btg%40mail.gmail.com]<br />
<br />
= Open Items<br />
<br />
== Bugs<br />
* Incorrect wording on ERROR when using subselect in the SET clause of MERGE UPDATE:<br />
Unrecognized node type 114<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
* Incorrect wording on ERROR when using a whole row reference in the SET clause of MERGE UPDATE<br />
ERROR: XX000: variable not found in subplan target lists<br />
[https://www.postgresql.org/message-id/CAH2-WznPcu-7gDhWB-AG9BMamZ0sVKrwrHyoy%3DGLYy4-z01Emg%40mail.gmail.com]<br />
<br />
== Minor<br />
<br />
* None<br />
<br />
== Major<br />
<br />
* Discussion around concurrency. Should we throw ERROR if concurrent update/delete makes row unavailable after EvalPlanQual?<br />
Unresolved request for change to earlier consensus on how to proceed<br />
[https://www.postgresql.org/message-id/CANP8%2Bj%2BrO5jnDATve3gokRf6Jhfss5DquFxgz74rhJero8sAGQ%40mail.gmail.com]<br />
<br />
= Unsupported features<br />
* Partitioning (WIP)<br />
* INSERT OVERIDING<br />
* Tab completion<br />
<br />
= Not planned for PG11<br />
* RLS - Requested not to be supported for PG11, on basis of risk<br />
* Transition tables for Statement Triggers<br />
* RETURNING - not part of standard<br />
* CTE support - not part of standard<br />
<br />
= Closed<br />
<br />
* Add xref docs between INSERT ON CONFLICT and MERGE (18/1/29)<br />
*</div>Simonhttps://wiki.postgresql.org/index.php?title=FOSDEM/PGDay_2018_Developer_Meeting&diff=31433FOSDEM/PGDay 2018 Developer Meeting2018-01-25T13:34:08Z<p>Simon: /* Agenda Items */</p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for Thursday 1st February, 2018 at the Brussels Marriott Hotel, prior to FOSDEM/PGDay 2018. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 10 and 11 release cycles. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Review the progress of the 11.0 schedule, and formulate plans to address any issues<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
<br />
== Time & Location ==<br />
<br />
The meeting will be:<br />
<br />
* 9:00AM to 5:00PM<br />
* Brussels Marriott Hotel<br />
<br />
Coffee, tea and snacks will be served starting at 8:45am. Lunch will be provided.<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname) and will be attending:<br />
<br />
* Oleg Bartunov<br />
* Joe Conway<br />
* Andres Freund<br />
* Stephen Frost<br />
* Magnus Hagander<br />
* Petr Jelinek<br />
* Bruce Momjian<br />
* Alexander Korotkov<br />
* Dave Page<br />
* Simon Riggs<br />
* Andreas Seltenreich<br />
* Tomas Vondra<br />
<br />
The following people have sent their apologies:<br />
<br />
* Andrew Dunstanv<br />
* Peter Eisentraut<br />
* Etsuro Fujita<br />
* Andrew Gierth<br />
* Peter Geoghegan<br />
* Robert Haas<br />
* Alvaro Herrera<br />
* Kyotaro Horiguchi<br />
* Amit Kapila<br />
* KaiGai Kohei<br />
* Tom Lane<br />
* Fujii Masao<br />
* Noah Misch<br />
* Thomas Munro<br />
* Michael Paquier<br />
* Dean Rasheed<br />
* Craig Ringer<br />
* David Rowley<br />
* Masahiko Sawada<br />
* Pavel Stehule<br />
<br />
==Agenda Items==<br />
<br />
Please add agenda items here!<br />
<br />
* Tools for Commitfest process management - changes and future requests (Simon Riggs)<br />
* 11.0 Release Review<br />
* Commitfest item review<br />
* Pluggable storages (Alexander Korotkov)<br />
* CSN & 64-bit xids (Alexander Korotkov)<br />
* Built-in sharding (Bruce Momjian)<br />
* MERGE syntax, sqlsmith and concurrency (Simon Riggs)<br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:10<br />
|Welcome and introductions<br />
|Dave<br />
<br />
|- <br />
|09:10 - 09:20<br />
|10.0 Release Review<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 11:00<br />
|Coffee break<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:45 - 13:45<br />
|Lunch<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|15:00 - 15:30<br />
|Tea break<br />
|All<br />
<br />
|- <br />
|15:30 - 17:00<br />
|Open CommitFest Item Review<br />
|All<br />
<br />
|- <br />
|16:45 - 17:00<br />
|Any other business<br />
|Dave<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|17:00<br />
|Finish<br />
|<br />
|}<br />
<br />
== Minutes ==<br />
<br />
<pre><br />
Welcome<br />
--------<br />
<br />
Present: <br />
<br />
Apologies:<br />
<br />
11.0 Release Review<br />
-------------------<br />
<br />
<br />
None.<br />
</pre></div>Simonhttps://wiki.postgresql.org/index.php?title=FOSDEM/PGDay_2018_Developer_Meeting&diff=31432FOSDEM/PGDay 2018 Developer Meeting2018-01-25T13:33:04Z<p>Simon: /* Agenda Items */</p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for Thursday 1st February, 2018 at the Brussels Marriott Hotel, prior to FOSDEM/PGDay 2018. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 10 and 11 release cycles. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Review the progress of the 11.0 schedule, and formulate plans to address any issues<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
<br />
== Time & Location ==<br />
<br />
The meeting will be:<br />
<br />
* 9:00AM to 5:00PM<br />
* Brussels Marriott Hotel<br />
<br />
Coffee, tea and snacks will be served starting at 8:45am. Lunch will be provided.<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname) and will be attending:<br />
<br />
* Oleg Bartunov<br />
* Joe Conway<br />
* Andres Freund<br />
* Stephen Frost<br />
* Magnus Hagander<br />
* Petr Jelinek<br />
* Bruce Momjian<br />
* Alexander Korotkov<br />
* Dave Page<br />
* Simon Riggs<br />
* Andreas Seltenreich<br />
* Tomas Vondra<br />
<br />
The following people have sent their apologies:<br />
<br />
* Andrew Dunstanv<br />
* Peter Eisentraut<br />
* Etsuro Fujita<br />
* Andrew Gierth<br />
* Peter Geoghegan<br />
* Robert Haas<br />
* Alvaro Herrera<br />
* Kyotaro Horiguchi<br />
* Amit Kapila<br />
* KaiGai Kohei<br />
* Tom Lane<br />
* Fujii Masao<br />
* Noah Misch<br />
* Thomas Munro<br />
* Michael Paquier<br />
* Dean Rasheed<br />
* Craig Ringer<br />
* David Rowley<br />
* Masahiko Sawada<br />
* Pavel Stehule<br />
<br />
==Agenda Items==<br />
<br />
Please add agenda items here!<br />
<br />
* Tools for Commitfest process management - changes and future requests (Simon Riggs)<br />
* 11.0 Release Review<br />
* Commitfest item review<br />
* Pluggable storages (Alexander Korotkov)<br />
* CSN & 64-bit xids (Alexander Korotkov)<br />
* Built-in sharding (Bruce Momjian)<br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:10<br />
|Welcome and introductions<br />
|Dave<br />
<br />
|- <br />
|09:10 - 09:20<br />
|10.0 Release Review<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 11:00<br />
|Coffee break<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:45 - 13:45<br />
|Lunch<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|15:00 - 15:30<br />
|Tea break<br />
|All<br />
<br />
|- <br />
|15:30 - 17:00<br />
|Open CommitFest Item Review<br />
|All<br />
<br />
|- <br />
|16:45 - 17:00<br />
|Any other business<br />
|Dave<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|17:00<br />
|Finish<br />
|<br />
|}<br />
<br />
== Minutes ==<br />
<br />
<pre><br />
Welcome<br />
--------<br />
<br />
Present: <br />
<br />
Apologies:<br />
<br />
11.0 Release Review<br />
-------------------<br />
<br />
<br />
None.<br />
</pre></div>Simonhttps://wiki.postgresql.org/index.php?title=FOSDEM/PGDay_2018_Developer_Meeting&diff=31390FOSDEM/PGDay 2018 Developer Meeting2018-01-08T10:25:34Z<p>Simon: /* RSVPs */</p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for Thursday 1st February, 2018 at the Brussels Marriott Hotel, prior to FOSDEM/PGDay 2018. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 10 and 11 release cycles. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Review the progress of the 11.0 schedule, and formulate plans to address any issues<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
<br />
== Time & Location ==<br />
<br />
The meeting will be:<br />
<br />
* 9:00AM to 5:00PM<br />
* Brussels Marriott Hotel<br />
<br />
Coffee, tea and snacks will be served starting at 8:45am. Lunch will be provided.<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname) and will be attending:<br />
<br />
* Oleg Bartunov<br />
* Joe Conway<br />
* Andres Freund<br />
* Stephen Frost<br />
* Magnus Hagander<br />
* Petr Jelinek<br />
* Bruce Momjian<br />
* Alexander Korotkov<br />
* Dave Page<br />
* Simon Riggs<br />
* Andreas Seltenreich<br />
* Tomas Vondra<br />
<br />
The following people have sent their apologies:<br />
<br />
* Andrew Dunstan<br />
* Peter Eisentraut<br />
* Etsuro Fujita<br />
* Peter Geoghegan<br />
* Robert Haas<br />
* Alvaro Herrera<br />
* Kyotaro Horiguchi<br />
* Amit Kapila<br />
* KaiGai Kohei<br />
* Tom Lane<br />
* Fujii Masao<br />
* Noah Misch<br />
* Thomas Munro<br />
* Michael Paquier<br />
* Dean Rasheed<br />
* Craig Ringer<br />
* David Rowley<br />
* Masahiko Sawada<br />
* Pavel Stehule<br />
<br />
==Agenda Items==<br />
<br />
Please add agenda items here!<br />
<br />
* 11.0 Release Review<br />
* Commitfest item review<br />
* Pluggable storages (Alexander Korotkov)<br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:10<br />
|Welcome and introductions<br />
|Dave<br />
<br />
|- <br />
|09:10 - 09:20<br />
|10.0 Release Review<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 11:00<br />
|Coffee break<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:45 - 13:45<br />
|Lunch<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|15:00 - 15:30<br />
|Tea break<br />
|All<br />
<br />
|- <br />
|15:30 - 17:00<br />
|Open CommitFest Item Review<br />
|All<br />
<br />
|- <br />
|16:45 - 17:00<br />
|Any other business<br />
|Dave<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|17:00<br />
|Finish<br />
|<br />
|}<br />
<br />
== Minutes ==<br />
<br />
<pre><br />
Welcome<br />
--------<br />
<br />
Present: <br />
<br />
Apologies:<br />
<br />
11.0 Release Review<br />
-------------------<br />
<br />
<br />
None.<br />
</pre></div>Simonhttps://wiki.postgresql.org/index.php?title=Audit_trigger_91plus&diff=31140Audit trigger 91plus2017-11-04T13:19:49Z<p>Simon: </p>
<hr />
<div>{{SnippetInfo|Generic audit trigger function (enhanced)|version=9.1+|lang=PL/pgSQL|category=Library|depends=hstore}}<br />
<br />
Here is an example of a generic trigger function used for recording changes to tables into an audit log table. It records quite a bit more detail than the older [[Audit trigger]] and does so in a more structured manner.<br />
<br />
Row values are recorded as <tt>hstore</tt> fields rather than as flat text. This allows much more sophisticated querying against the audit history and allows the audit system to record only changed fields for updates.<br />
<br />
Auditing can be done coarsely at a statement level or finely at a row level. Control is per-audited-table.<br />
<br />
The information recorded is:<br />
<br />
* Change type - '''I'''nsert, '''U'''pdate, '''D'''elete or '''T'''runcate.<br />
* client IP/port if not a UNIX socket<br />
* Session user name ("real" user name, not effective username from <tt>SET ROLE</tt> or <tt>SECURITY DEFINER</tt>)<br />
* transaction, statement, and wall clock timestamps<br />
* Top-level statement that caused the change<br />
* The row value before the change (or after in the case of <tt>INSERT</tt>)<br />
* In the case of <tt>UPDATE</tt>, the new values of any changed columns. The new value can be reconstructed using <tt>row_value || changed_fields</tt> <br />
* The transaction ID of the tx that made the change<br />
* The <tt>application_name</tt><br />
* Target schema and table, by OID and name.<br />
<br />
This trigger ''can not'' track:<br />
<br />
* <tt>SELECT</tt>s<br />
* DDL like <tt>ALTER TABLE</tt><br />
* Changes to system catalogs<br />
<br />
Changes by the table owner and superusers are tracked, but can be trivially tampered with.<br />
<br />
If you want this audit log to be trustworthy, your app should run with a role that has at most <tt>USAGE</tt> to the <tt>audit</tt> schema and <tt>SELECT</tt> rights to <tt>audit.logged_actions</tt>. Most importantly, ''your app must not connect with a superuser role and must not own the tables it uses''. Create your app's schema with a different user to the one your app runs as, and <tt>GRANT</tt> your app the minimum rights it needs.<br />
<br />
=== The trigger ===<br />
<br />
You can obtain the latest version of the audit trigger [https://github.com/2ndQuadrant/audit-trigger 2ndQuadrant/audit-trigger from GitHub].<br />
<br />
=== Basic usage ===<br />
<br />
<source lang='sql'><br />
SELECT audit.audit_table('target_table_name');<br />
</source><br />
<br />
The table will now have audit events recorded at a row level for every insert/update/delete, and at a statement level for truncate. Query text will always be logged.<br />
<br />
To later cancel the auditing:<br />
<br />
<source lang='sql'><br />
DROP TRIGGER audit_trigger_row on target_table_name;<br />
DROP TRIGGER audit_trigger_stm on target_table_name;<br />
</source><br />
<br />
If you want finer control use <tt>audit.audit_table(target_table regclass, audit_rows boolean, audit_query_text boolean, excluded_cols text[])</tt> or <tt>CREATE TRIGGER</tt> the audit trigger yourself. For example:<br />
<br />
<source lang='sql'><br />
SELECT audit.audit_table('target_table_name', 'true', 'false', '{version_col, changed_by, changed_timestamp}'::text[]);<br />
</source><br />
<br />
... would create audit triggers on <tt>target_table_name</tt> that record each row change but omit the query text (the 'false' argument) and omit the <tt>version_col</tt>, <tt>changed_by</tt> and <tt>changed_timestamp</tt> columns from logged rows. An <tt>UPDATE</tt> that only changes ignored columns won't result in an audit record being created at all.<br />
<br />
=== Ignoring some changes ===<br />
<br />
In PostgreSQL 9.0 and above, you can add an optional <tt>WHEN</tt> clause to invocations of the trigger. This is great for auditing, as it lets you exclude some changes without even paying the cost of invoking the trigger.<br />
<br />
A common case is to ignore a frequently updated field that isn't worth auditing. Unfortunately, you have to test for a change in all the fields you ARE interested in, there isn't an easy way to say "if anything except fields <x> and <y> have changed between OLD and NEW":<br />
<br />
<source lang='sql'><br />
CREATE TRIGGER tablename_audit_insert_delete<br />
AFTER INSERT OR DELETE ON sometable FOR EACH ROW<br />
EXECUTE PROCEDURE audit.if_modified_func();<br />
<br />
CREATE TRIGGER tablename_audit_update_selective<br />
AFTER UPDATE ON sometable FOR EACH ROW<br />
WHEN ( (OLD.col1, OLD.col2, OLD.col3) IS DISTINCT FROM (NEW.col1, NEW.col2, NEW.col3) )<br />
EXECUTE PROCEDURE audit.if_modified_func();<br />
</source><br />
<br />
... but of course, you can do a lot more. You'll often need to separate your <tt>INSERT</tt>, <tt>DELETE</tt> and <tt>UPDATE</tt> trigger definitions rather than doing them all in one trigger definition, though.<br />
<br />
Note the use of <tt>IS DISTINCT FROM</tt> rather than <tt>=</tt>. Think about the effect of <tt>NULL</tt>.<br />
<br />
=== Time zone concerns ===<br />
<br />
<tt>TIMESTAMP WITH TIME ZONE</tt> fields are always stored in UTC and are displayed in local time by default. You can control display using <tt>AT TIME ZONE</tt> in queries, or with <tt>SET timezone = 'UTC'</tt> as a per-session GUC. See [http://www.postgresql.org/docs/9.1/static/datatype-datetime.html#DATATYPE-TIMEZONES the Pg docs].<br />
<br />
''Loosely based on [[Audit trigger]] by bricklen, completely rewritten by ringerc for more audit detail, hstore logging, and more.''<br />
<br />
[[Category:PL/pgSQL]]</div>Simonhttps://wiki.postgresql.org/index.php?title=PostgreSQL_10_Open_Items&diff=29911PostgreSQL 10 Open Items2017-04-18T11:09:47Z<p>Simon: /* resolved before 10beta1 */</p>
<hr />
<div>== Open Issues ==<br />
<br />
=== Partitioning ===<br />
<br />
* pg_dump and partitioned tables<br />
** {{messageLink|20170409235057.GA2842536@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/7682253a-6f79-6a92-00aa-267c4c412870%40lab.ntt.co.jp pg_dump should not emit ALTER TABLE ONLY for a partitioned table in case of attribute changes and inheritable constraints]<br />
*** patch exists<br />
** [https://www.postgresql.org/message-id/20170217133251.GK9812%40tamriel.snowman.net pg_dump TAP tests around partitioning]<br />
** original commit: {{PgCommitURL|f0e4475}} (principal author: Amit Langote; owner: Stephen Frost, [http://postgr.es/m/20170413150540.GQ9812@tamriel.snowman.net previously Robert Haas])<br />
<br />
=== Logical Replication ===<br />
<br />
unless otherwise marked, original commit: {{PgCommitURL|665d1fa}} (principal author: Petr Jelinek; owner: Peter Eisentraut)<br />
<br />
* [https://www.postgresql.org/message-id/51f65289-54f8-2256-d107-937d662d69f1%402ndquadrant.com snapshot builder has bugs]<br />
** owner: Andres Freund {{messageLink|20170413045812.GA2917375@tornado.leadboat.com|notified}}<br />
** some issues go back to 9.4; some are new in v10<br />
** patches for individual issues exist<br />
<br />
* [https://www.postgresql.org/message-id/CAD21AoDCnyRJDUY%3DESVVe68AukvOP2dFomTeBFpAd1TiFbjsGg%40mail.gmail.com Interval for launching the table sync worker]<br />
** original commit: {{PgCommitURL|7c4f524}} (principal author: Petr Jelinek; owner: Peter Eisentraut {{messageLink|20170416060841.GH2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwGhhJyNDEb+GDbJ2iHQvyOqcdgqoH9wqvLt7VAGAnE3WA@mail.gmail.com tablesync patch broke the assumption that logical rep depends on?]<br />
** original commit: {{PgCommitURL|7c4f524}} (principal author: Petr Jelinek; owner: Peter Eisentraut {{messageLink|20170413045605.GD2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEsttg9P9LOOavoc9d6VB1zVmYgfBk=Ljsk-UL9cEf-eA@mail.gmail.com logical replication and PANIC during shutdown checkpoint in publisher]<br />
** {{messageLink|20170416061258.GI2870454@tornado.leadboat.com|notified}}<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwFDWh_Qr-q_GEMpD+qH=vYPMdVqw=ZOSY3kX_Pna9R9SA@mail.gmail.com some review comments on logical rep code]<br />
** {{messageLink|20170416061449.GJ2870454@tornado.leadboat.com|notified}}<br />
<br />
=== SCRAM-SHA-256 Authentication ===<br />
<br />
unless otherwise marked, original commit: {{PgCommitURL|818fd4a}} (principal author: Michael Paquier; owner: Heikki Linnakangas)<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1wfBgFPbfAMYZQE78p=VhZX7nN86aWkp0QcCp=+KxZ=bg@mail.gmail.com \password and PQencryptPassword]<br />
** {{messageLink|20170410035323.GA2846583@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/CAB7nPqSbsCBCxy8-DtwzRxYgTnbGUtY4uFEkLQhG%3DR%3Duo%3Dg8Fw%40mail.gmail.com patch exists]<br />
<br />
* {{messageLink|b081887e-1712-3aa4-7dbe-e012333d50e4@iki.fi|pg_hba.conf syntax}}<br />
** {{messageLink|20170412063327.GA2894486@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/CAB7nPqTo6_mk-qNfNMvr96pLi13PrxyR-UJXVP3xxdSkynjVnA%40mail.gmail.com proposal of patch exists]<br />
<br />
=== Other ===<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com Improve the docs and comments for quorum-based sync replication]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao {{messageLink|20170405064544.GA2702716@tornado.leadboat.com|notified}})<br />
** There will be still many source comments and documentations that we7c030783a5bd07cadffc2a1018bc33119a4c7505 need to update, for example, in high-availability.sgml. We need to check and update them throughly.<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com synchronous_standby_names shows unused priority values]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao {{messageLink|20170405064544.GA2702716@tornado.leadboat.com|notified}})<br />
** The priority value is assigned to each standby listed in s_s_names even in quorum commit though those priority values are not used at all. Users can see those priority values in pg_stat_replication. Isn't this confusing? If yes, it might be better to always assign 1 as the priority, for example.<br />
<br />
* [https://postgr.es/m/CAGPqQf3joLrjmR2FmQzYURb-_TxhW78tXhgYm+C66wXNjWH9ww@mail.gmail.com Query fails when SRFs are part of FROM clause]<br />
** original commit: {{PgCommitURL|69f4b9c}} (principal author: Tom Lane; owner: Andres Freund {{messageLink|20170405064755.GA2702846@tornado.leadboat.com|notified}})<br />
** owner [https://www.postgresql.org/message-id/20170412225855.oklyfkbwj2dmbrpu@alap3.anarazel.de proposes] classifying this as a non-bug<br />
<br />
* [https://www.postgresql.org/message-id/7064.1492022469@sss.pgh.pa.us Inadequate parallel-safety check for SubPlans]<br />
** original commit: {{PgCommitURL|5e6d8d2}} (principal author: Amit Kapila; owner: Robert Haas {{messageLink|20170416061825.GK2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAKOSWN=hUQWwyCJS8a3gTTUkvMkeg2iwSCCs=df0OYxJ_6H0kA@mail.gmail.com Removing ADD GENERATED for identity columns]<br />
** original commit: {{PgCommitURL|3217327}} (principal author: Peter Eisentraut; owner: Peter Eisentraut {{messageLink|20170414055644.GF2870454@tornado.leadboat.com|notified}})<br />
** Patch exists.<br />
<br />
== Design Decisions to Recheck Mid-Beta ==<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com Which synchronous replication method, priority or quorum, should be chosen when neither FIRST nor ANY is specified in synchronous_standby_names?]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao)<br />
** Right now, a priority-based sync replication is chosen for keeping backward compatibility. However some hackers argued to change this decision so that a quorum commit is chosen because they think that most users prefer to a quorum.<br />
<br />
== Older Bugs ==<br />
<br />
* [https://www.postgresql.org/message-id/c2c7191b-5ca0-b37a-9e9d-4df15ffb554b%40lab.ntt.co.jp Oddity in EXPLAIN for foreign/custom join pushdown plans]<br />
** postgres_fdw produces incorrect aliases for joining relations shown in EXPLAIN for some join pushdown queries<br />
** [https://www.postgresql.org/message-id/b4b04e83-5eb4-7dd6-2951-32acadea4e7b@lab.ntt.co.jp low-priority issue; let's leave this for v10]<br />
** regression in v9.6, nothing changed from v9.6 beta to v10 beta<br />
<br />
* [https://www.postgresql.org/message-id/20170117.193645.160386781.horiguchi.kyotaro@lab.ntt.co.jp standby can fail to reconnect even with replication slots]<br />
** patch exists<br />
** present in 9.4 and later<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1wXkKUKBHWBYzET3D9OViyDg8DcVL-wKEqk2uyoMrzr_A@mail.gmail.com Crash recovery can leave everlasting empty pages]<br />
** The pages are actually empty but FSM says that they have no room for new data and ALL_FROZEN. ALL_FROZEN prevents autovacuum from fixing FSM.<br />
** regression in v9.6, nothing new in v10<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqR82_57C8O1+z-bUChhHpdjMec_omLfKwYdjAFjjcrBWg@mail.gmail.com Switch use of "encrypted" to "hash" for passwords in documentation]<br />
<br />
== Non-bugs ==<br />
<br />
* [https://www.postgresql.org/message-id/20170321135742.GB23103@e733.localdomain Errors with valgrind]<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqSP+MHqg=dKoNOZu75j2mGAEW622GYz45Mv2V_XOao-9g@mail.gmail.com CREATE/ALTER ROLE PASSWORD ('value' USING 'method')], extension of this DDL to enforce type of password without changing password_encryption.<br />
** Not Open-Item worthy, let's do this in v11 if it still feels worthwhile then.<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoYrA8SK=KjkVbvKt8hG3Cqsjr-Hnmwa3WXqbziRuwKBLg@mail.gmail.com Declarative partitioning vs. information_schema, etc.]<br />
** include partitions in information_schema.tables, pg_tables, and psql's \d listing, etc?<br />
** firm support for status quo, lack of firm support for alternatives<br />
<br />
* [https://www.postgresql.org/message-id/071086d7-6462-f0e7-54ca-b633062e317c%40lab.ntt.co.jp Document that foreign table's partition constraint is not enforced locally]<br />
** Patch exists<br />
** documentation is correct, but this would add emphasis to a point<br />
<br />
== Resolved Issues ==<br />
<br />
=== resolved before 10beta1 ===<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1zMLnH_i1-PVQ-biZzvNx7VcuatriquEnh7HNk6K8Ss3Q@mail.gmail.com PANIC in pg_commit_ts slru after crashes, 2PC restore code at fault]<br />
** Fixed by commit aa203e76004daaee3d70b19cc727ed17b87b3d3a<br />
** Fixed by commit ee01f7092fb6430ad9bb9bb1f42f19d22bcb9329<br />
<br />
* [https://www.postgresql.org/message-id/8a1d4662-9665-59d5-518d-45616b75f06a%40lab.ntt.co.jp COMMENT ON COLUMN fails for partitioned tables]<br />
** Fixed by commit 51175f3638524231405e674e40bde159b0b76727<br />
<br />
* [http://postgr.es/m/CAKJS1f-BmGo410bh5RSPZUvOO0LhmHL2NYmdrC_Jm8pk_FfyCA@mail.gmail.com Allowing extended stats on foreign and partitioned tables]<br />
** original commit: {{PgCommitURL|7b504eb}} (principal author: Tomas Vondra; owner: Alvaro Herrera {{messageLink|20170414055310.GE2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit 8c5cdb7f4f6e1d6a6104cb58ce4f23453891651b<br />
<br />
* [https://www.postgresql.org/message-id/12642.1491513976@sss.pgh.pa.us Partitioning optimization broke ConvertRowtypeExpr]<br />
** Fixed by commit 3f902354b08ac788600f0ae54fcbfc1d4e3ea765.<br />
<br />
* Integer overflow in enlargeStringInfo<br />
** {{messageLink|1706e85e-60d2-494e-8a64-9af1e1b2186e@manitou-mail.org|thinko in overflow logic}}<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1yURZZONoeLXhPsp2AkqR5MNAXiCiTVnrt2LGd6qD1b8w@mail.gmail.com pg_upgrade is broken because of renaming of pg_resetxlog to pg_resetwal]<br />
** Fixed by commit b877761.<br />
<br />
* [https://www.postgresql.org/message-id/flat/1803D792815FC24D871C00D17AE95905AC5FAE@g01jpexmbkw24#1803D792815FC24D871C00D17AE95905AC5FAE@g01jpexmbkw24 PQsendQuery fails when it should not if target_session_attrs is set to read-write]<br />
** Fixed by commit 1de0a4e.<br />
<br />
* [https://www.postgresql.org/message-id/CAM2+6=U72y2_Jni2p+meqTvvk=r_=Wd4orvzz5YL0b3WFx+gcA@mail.gmail.com Substantial bloat in postgres_fdw regression test runtime]<br />
** Fixed by commit aa7f593b1ffa9717bd5570174944c06c482d1c1f.<br />
<br />
* [https://www.postgresql.org/message-id/9f9dc7ae-14f0-4a25-5485-964d9bfc19bd%40lab.ntt.co.jp Error detail shown when partition not found]<br />
** Fixed by commit 5a73e17317e91912b2755f7960d5bf31d374cf31.<br />
<br />
* [https://www.postgresql.org/message-id/CAD21AoD%2BVO93zZ4ZQtZQb-jZ_wMko3OgGdx1MXO4T%2B8q_zHDDA%40mail.gmail.com DROP SUBSCRIPTION and ROLLBACK]<br />
** Fixed by commit 272adf4f9cd67df323ae57ff3dee238b649d3b73.<br />
<br />
* [https://www.postgresql.org/message-id/6c420206-45d7-3f56-8325-4bd7b76483ba%40lab.ntt.co.jp Dropping partitioned tables without CASCADE]<br />
** Fixed by commit 8b4d582d279d784616c228be58af1e39aa430402.<br />
<br />
* [https://www.postgresql.org/message-id/CAEepm=15e9L695yVCO-_OkBVbsPupyXqzYWzzDmj-bdJ6o2+Pw@mail.gmail.com pg_recvlogical.c doesn't build with --disable-integer-datetimes]<br />
** Fixed by commit b6aa17e0ae367afdcea07118e016111af4fa6bc3 and c29aff959dc64f7321062e7f33d8c6ec23db53d3<br />
<br />
* [https://www.postgresql.org/message-id/20170207201932.GH9812@tamriel.snowman.net pg_dump and PUBLICATIONS]<br />
** Fixed by commit 05227e0c345247c9e9ff91445850f414e2b0bb70<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoYpwN0AkaCqhAEVuxtHqGkz=yJzgQxbvucEQMPE-tLkEA@mail.gmail.com simplehash performance regressions]<br />
** Fixed by commit d4c62a6b623d6eef88218158e9fa3cf974c6c7e5<br />
<br />
* [https://www.postgresql.org/message-id/CAGz5QCLJJ1NhVQjQSreF-UoQyVoN6Krg54gZrr5-Ha5PqP2ksw@mail.gmail.com exposing wait events for non-backends]<br />
** Fixed by commit fc70a4b0df38bda6a13941f1581f25fbb643c7f3<br />
<br />
* [https://www.postgresql.org/message-id/b3d37313-acf0-d8fd-783f-c32f7c0667e6@lab.ntt.co.jp Partitioning vs INSERT ON CONFLICT]<br />
** Fixed by commit 8355a011a0124bdf7ccbada206a967d427039553<br />
** [https://www.postgresql.org/message-id/ff3dc21d-7204-c09c-50ac-cf11a8c45c81%40lab.ntt.co.jp Crash when leaf partition has an index]<br />
*** Reverted by commit f05230752d53c4aa74cffa9b699983bbb6bcb118<br />
<br />
* [https://www.postgresql.org/message-id/c72cbc58-9866-0622-86c1-f01cc4064e73%40lab.ntt.co.jp Bug in list partitioning tuple-routing]<br />
** Fixed by commit 7ecb7143589f38d679bb566311dfa9be1a650fd5<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU%3D1w-9Qe%3DFf1o6bSaXpNO9wqpo7_9GL8_CVhw4BoVVHasqg%40mail.gmail.com segfault in hot_standby for hash indexes]<br />
** Fixed by commit c4c51541e22bf7f2da8ecf6986271687b0d7a90e<br />
<br />
* [https://www.postgresql.org/message-id/CAEepm%3D23%3DvGz%3DCgVurPxBGV6SeOJ7YxSaAJKr_aH%2Bf2cV4zrow%40mail.gmail.com attaching to DSA area that was already destroyed]<br />
** Fixed by commit fddf45b38097d14301d249fbeebca32e40233bd2<br />
<br />
* postgres_fdw, partitioned tables and IMPORT SCHEMA<br />
** [https://postgr.es/m/20170309141531.GD9812@tamriel.snowman.net postgres_fdw IMPORT SCHEMA and partitioned tables]<br />
** Fixed by commit f49bcd4ef3e9a75de210357a4d9bbe3e004db956<br />
<br />
* [https://www.postgresql.org/message-id/2b0d42f2-3a53-763b-c9c2-47139e4b1c2e@lab.ntt.co.jp Partitioning tables create a file on-disk, which remains empty and has no purpose. Those relations don't need any storage]<br />
** Fixed by commit c94e6942cefe7d20c5feed856e27f672734b1e2b<br />
<br />
* [https://www.postgresql.org/message-id/a6f99cdb-21e7-1d65-1381-91f2cfa156e2%40lab.ntt.co.jp Documentation improvements for partitioning]<br />
** Fixed by commit 8f18a880a5f138d4da94173d15514142331f8de6<br />
<br />
* [https://www.postgresql.org/message-id/6ecd6f17-0dcf-1de7-ded8-0de7db1ddc88%402ndquadrant.com crashes due to setting max_parallel_workers=0]<br />
** Fixed by commit 25dc142a49c60c3107480c487cd8444dc83f9bdf<br />
<br />
* [https://www.postgresql.org/message-id/CAE9k0P%3DV2LhtyeMXd295fhisp%3DNWUhRVJ9EZQCDowWiY9rSohQ%40mail.gmail.com Failed assertion in _hash_kill_items/MarkBufferDirtyHint]<br />
** Fixed by commit 93cd7684ee2bba227fa371daa81b88f25456dcb2<br />
<br />
* [https://www.postgresql.org/message-id/CAE9k0PnmPDXfvf8HDObme7q_Ewc4E26ukHXUBPySoOs0ObqqaQ%40mail.gmail.com inconsistent page found on STANDBY server]<br />
** Fixed by commit 75a1cbdc3cfca1e815da6dfa5d7e96d82a6b0725<br />
<br />
* [https://www.postgresql.org/message-id/CAA4eK1%2BVE_TDRLWpyeOf%2B7%2B6if68kgPNwO4guKo060rm_t3O5w%40mail.gmail.com page inspect to show appropriate type of page]<br />
** Fixed by commit 633e15ea0f1bf2e1d70441fe9da8781befebd6e9<br />
<br />
* [https://www.postgresql.org/message-id/20170321.192419.96677899.horiguchi.kyotaro%40lab.ntt.co.jp Logical replication between differrent encodings fails]<br />
** Fixed by commit 6f1b9aaae35bfabe2654a8e44ce226c91e7d8bd9<br />
<br />
* [https://www.postgresql.org/message-id/20170331185540.zmsue4ndvqtnayqw@alap3.anarazel.de improve test coverage of parallel explain analyze]<br />
** Fixed by commit b2ff37d43cc81348fd8e9d9c5fcc9dfadf790763<br />
<br />
* [https://www.postgresql.org/message-id/20170331184603.qcp7t4md5bzxbx32@alap3.anarazel.de improve test coverage of parallel bitmap scan]<br />
** Fixed by commit 5a5931533edd2b70bde1f069609f58998dd26fef<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqSByyEmAVLtEf1KxTRh=PWNKiWKEKQR=e1yGehz=wbymQ@mail.gmail.com SASLprep]<br />
** Fixed by commit 60f11b87a2349985230c08616fa8a34ffde934c8<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoZfPOu62bR71bahf90ivOUxXpYOh0RqDiue0+dVVPNrWg@mail.gmail.com dsa.c needs a visit from the message style police]<br />
** Fixed by commit 5c4488478b182983f290a61fc8cf2ec83548622b<br />
<br />
* [https://www.postgresql.org/message-id/20170316085322.crffknkgee5s6air@alap3.anarazel.de Logical replication + EXEC_BACKEND + ASLR is broken]<br />
** Fixed by commit 0ef26bb394abedb2745bd838c26ecb3131682bda<br />
<br />
* [https://www.postgresql.org/message-id/b3a17254-6849-e542-2353-bde4e880b6a4%40lab.ntt.co.jp Reconsider the error detail shown when ExecConstraints() fails after tuple-routing]<br />
** original commit: {{PgCommitURL|f1b4c77}} (principal author: Amit Langote; owner: Robert Haas {{messageLink|20170409235426.GB2842536@tornado.leadboat.com|notified}})<br />
** Fixed by commit c0a8ae7be392aa09dd7e148ff662013e8e148893<br />
<br />
* [https://www.postgresql.org/message-id/13592.1490851519@sss.pgh.pa.us Broken locking design for accesses to pg_subscription_rel]<br />
** Fixed by commit 521fd4795e3ec3d0b263b62e5eb58e1557be9c86<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwHEs8jT_6DjYHYmsD2v-rOudstiBB_mtmZbR9Z2QfhCwQ@mail.gmail.com Both launcher and worker don't handle SIGHUP signal and cannot reload the configuration]<br />
** Fixed by commit 26ad194cb0a6b955e155d44fb52a74212ce85759<br />
<br />
* pg_dump and data durability, with addition of --no-sync option<br />
** original commit: {{PgCommitURL|96a7128}} (principal author: Michael Paquier; owner: Andrew Dunstan {{messageLink|20170405064941.GB2702846@tornado.leadboat.com|notified}})<br />
** [https://www.postgresql.org/message-id/CAB7nPqTUOpF792rDOnBkswZ%3DZgHwxdB01OQU2tAF1KU4iUuLrw%40mail.gmail.com Regression tests should use --no-sync as much as possible]<br />
** Fixed by commit 3820c63da8d0e59e2bd4476e91968f03be5dd041<br />
<br />
* [http://postgr.es/m/CAMkU=1zrQaPwBN+NcBd3pWCb=vWaiL=mmWfJjDJjh-a7eVr-Og@mail.gmail.com pgbench --progress-timestamp no longer works correctly]<br />
** original commit: {{PgCommitURL|1d63f7d}} (principal author: Tom Lane; owner: Tom Lane {{messageLink|20170411042352.GA2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit feffa0e0795a5a99324890a6dd548ba162ec104c<br />
<br />
* [https://www.postgresql.org/message-id/29588799-a8ce-b0a2-3dae-f39ff6d35922%40lab.ntt.co.jp Dropping a partition may cause deadlock]<br />
** {{PgCommitURL|f0e4475}} (principal author: Amit Langote; owner: Robert Haas {{messageLink|20170409235729.GA2842636@tornado.leadboat.com|notified}})<br />
** Fixed by commit 258cef12540fa1cb244881a0f019cefd698c809e<br />
<br />
* [https://www.postgresql.org/message-id/CAFiTN-suK%2BMod_noGy8LpmkSzgvzwhGfNZ0K6vf_gX6rkw2jxA%40mail.gmail.com Problem in Parallel Bitmap Heap Scan]<br />
** original commit: {{PgCommitURL|f35742c}} (principal author: Dilip Kumar; owner: Robert Haas {{messageLink|20170410031734.GB2845039@tornado.leadboat.com|notified}})<br />
** Fixed by commit 4c3b59abf4c476843bca23de7fb66d647627f30e<br />
<br />
* [https://www.postgresql.org/message-id/flat/24a143e0-c9bb-8f4f-1472-9d6faae4c92e%402ndquadrant.com#24a143e0-c9bb-8f4f-1472-9d6faae4c92e@2ndquadrant.com strange parallel query behavior after OOM crashes]<br />
** original commit: {{PgCommitURL|b460f5d}} (principal author: Julien Rouhaud; owner: Robert Haas {{messageLink|20170410031836.GC2845004@tornado.leadboat.com|notified}})<br />
** Fixed by commit 8ff518699f19dd0a5076f5090bac8400b8233f7f<br />
** See also commit 6599c9ac3340b6cd3d86a0a7f866b80a009fecab which attempts to catch other problems of this sort<br />
<br />
* [https://www.postgresql.org/message-id/52d9c443-ec78-5c8a-7a77-0f34aad12b82%40lab.ntt.co.jp RENAME RULE doesn't work with partitioned tables]<br />
** Fixed by commit 02af7857e5694b13c21401d1982ac21d31e27dee<br />
<br />
* [https://postgr.es/m/20170309144718.GE9812@tamriel.snowman.net sepgsql and partitioned tables]<br />
** {{messageLink|CA+TgmobTJnasxpRkJxGcHaz85LyqdXBKZRxP6pCCS-UkhcHUBQ@mail.gmail.com|feature request, not bug}}<br />
** implemented in {{PgCommitURL|25542d77dd549940468d1a932809feb9959d717d}}<br />
<br />
* [https://www.postgresql.org/message-id/b7578aaf-726e-61a1-0011-943e92ad08ee@2ndquadrant.com error handling in RegisterBackgroundWorker]<br />
** withdrawn<br />
<br />
* [https://www.postgresql.org/message-id/CA%2BTgmobYfFRtcXv1aoXD18%2BRkPU%3Duw39Ajqm1HWyh7V_8QYZ%3DA%40mail.gmail.com pgstathashindex() to handle unused pages in hash index]<br />
** original commit: {{PgCommitURL|e759854}} (principal author: Ashutosh Sharma; owner: Robert Haas {{messageLink|20170412062802.GB2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit 9cc27566c1a8d659c15b9eea2413dcc07a7a42c9<br />
<br />
* [https://www.postgresql.org/message-id/30972.1491937807@sss.pgh.pa.us Mishandling of non-parallel-safe initplans/subplans in a parallelized query]<br />
** original commit: {{PgCommitURL|5e6d8d2bb}}<br />
** Fixed by commit 16ebab68862bb5d3595b8c8df083f650d9d7cd20<br />
<br />
* [https://www.postgresql.org/message-id/20170217020415.GI9812@tamriel.snowman.net pg_dump and SUBSCRIPTIONS]<br />
** fixed by commits c31671f9b5f6eee9b6726baad2db1795c94839d1, a9254e675bde7dc2d976d207450c559d914c0dd6<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqS-aFg0iM3AQOJwKDv_0WkAedRjs1W2X8EixSz+sKBXCQ@mail.gmail.com Letting the client choose the protocol to use during a SASL exchange]<br />
** fixed by commit 4f3b87ab780b95c2cc8a591259baefaff4852037<br />
<br />
* [https://www.postgresql.org/message-id/E1cwSWo-0001hG-Rq@gemulon.postgresql.org Add overview of SCRAM to the FE/BE protocol documentation]. Mention that SASLprep is used on all passwords, UTF-8 or not.<br />
** fixed by commit 4f3b87ab780b95c2cc8a591259baefaff4852037<br />
<br />
* [https://www.postgresql.org/message-id/flat/CA%2BTgmoarXTa3F5ybQ98DtUDKVMUpg5JoDykPXUaEr9z_8OyYWQ%40mail.gmail.com add synchronous_commit control for logical apply]<br />
** fixed by commit 887227a1cc861d87ca0f175cf8bd1447554090eb<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwGA2tz-iQ90ofgX0Q1TuZLyr+GCX+T1=PE+ogUKVSRpZA@mail.gmail.com logical replication worker and statistics]<br />
** fixed by commit 139eb9673cb84c76f493af7e68301ae204199746<br />
<br />
* [https://www.postgresql.org/message-id/flat/alpine.DEB.2.20.1702161846410.29507@lancre/ web site CSS issues]<br />
** fixed in pgweb<br />
<br />
* [https://www.postgresql.org/message-id/flat/92ea7dd8-70b9-16c6-9327-e67e56209f33%40lab.ntt.co.jp publications vs inheritance]<br />
** fixed by commit 419a23b478ae760b797188341ddce5b41322684b<br />
<br />
* [https://www.postgresql.org/message-id/CAKJS1f9Kk0NF6Fg7TA%3DJUXsjpS9kX6NVu27pb5QDCpOYAvb-Og%40mail.gmail.com extended stats not friendly towards ANALYZE with subset of columns]<br />
** original commit: {{PgCommitURL|7b504eb}}<br />
** fixed by commit bf2a691e02d7766f185d9d8e0f092222a5c0a129<br />
<br />
* [https://www.postgresql.org/message-id/20170316085322.crffknkgee5s6air@alap3.anarazel.de Parallel Query + EXEC_BACKEND + ASLR is broken]<br />
** Problem in 9.6 and later<br />
** Fixed by commits 0ef26bb39 + 32470825d + a74740fbd<br />
<br />
* [https://www.postgresql.org/message-id/CAHE3wgj+2YpFyrg7SAV=-oqTpP2AggT-nRKbR3nkDAt0TA2V6A@mail.gmail.com Different table schema in logical replication crashes]<br />
** fixed by commit e6242c18a5bb08788e6c4cc773952fc8e2a6291a<br />
<br />
== Important Dates ==<br />
<br />
Current schedule:<br />
* feature freeze: April 7th<br />
* beta1: wrap May 15th, announce May 18th<br />
<br />
References:<br />
* [https://wiki.postgresql.org/wiki/PgCon_2016_Developer_Meeting#9:55_-_10:05_.09Next_Release_Schedule_.09All original schedule]<br />
* [https://www.postgresql.org/message-id/CA%2BTgmoZNLxizOkPy4WKdxwKo40Hz96v5jZ%3D07aLe93JW2dZmRA%40mail.gmail.com feature freeze moved]</div>Simonhttps://wiki.postgresql.org/index.php?title=PostgreSQL_10_Open_Items&diff=29910PostgreSQL 10 Open Items2017-04-18T11:08:48Z<p>Simon: /* Other */</p>
<hr />
<div>== Open Issues ==<br />
<br />
=== Partitioning ===<br />
<br />
* pg_dump and partitioned tables<br />
** {{messageLink|20170409235057.GA2842536@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/7682253a-6f79-6a92-00aa-267c4c412870%40lab.ntt.co.jp pg_dump should not emit ALTER TABLE ONLY for a partitioned table in case of attribute changes and inheritable constraints]<br />
*** patch exists<br />
** [https://www.postgresql.org/message-id/20170217133251.GK9812%40tamriel.snowman.net pg_dump TAP tests around partitioning]<br />
** original commit: {{PgCommitURL|f0e4475}} (principal author: Amit Langote; owner: Stephen Frost, [http://postgr.es/m/20170413150540.GQ9812@tamriel.snowman.net previously Robert Haas])<br />
<br />
=== Logical Replication ===<br />
<br />
unless otherwise marked, original commit: {{PgCommitURL|665d1fa}} (principal author: Petr Jelinek; owner: Peter Eisentraut)<br />
<br />
* [https://www.postgresql.org/message-id/51f65289-54f8-2256-d107-937d662d69f1%402ndquadrant.com snapshot builder has bugs]<br />
** owner: Andres Freund {{messageLink|20170413045812.GA2917375@tornado.leadboat.com|notified}}<br />
** some issues go back to 9.4; some are new in v10<br />
** patches for individual issues exist<br />
<br />
* [https://www.postgresql.org/message-id/CAD21AoDCnyRJDUY%3DESVVe68AukvOP2dFomTeBFpAd1TiFbjsGg%40mail.gmail.com Interval for launching the table sync worker]<br />
** original commit: {{PgCommitURL|7c4f524}} (principal author: Petr Jelinek; owner: Peter Eisentraut {{messageLink|20170416060841.GH2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwGhhJyNDEb+GDbJ2iHQvyOqcdgqoH9wqvLt7VAGAnE3WA@mail.gmail.com tablesync patch broke the assumption that logical rep depends on?]<br />
** original commit: {{PgCommitURL|7c4f524}} (principal author: Petr Jelinek; owner: Peter Eisentraut {{messageLink|20170413045605.GD2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEsttg9P9LOOavoc9d6VB1zVmYgfBk=Ljsk-UL9cEf-eA@mail.gmail.com logical replication and PANIC during shutdown checkpoint in publisher]<br />
** {{messageLink|20170416061258.GI2870454@tornado.leadboat.com|notified}}<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwFDWh_Qr-q_GEMpD+qH=vYPMdVqw=ZOSY3kX_Pna9R9SA@mail.gmail.com some review comments on logical rep code]<br />
** {{messageLink|20170416061449.GJ2870454@tornado.leadboat.com|notified}}<br />
<br />
=== SCRAM-SHA-256 Authentication ===<br />
<br />
unless otherwise marked, original commit: {{PgCommitURL|818fd4a}} (principal author: Michael Paquier; owner: Heikki Linnakangas)<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1wfBgFPbfAMYZQE78p=VhZX7nN86aWkp0QcCp=+KxZ=bg@mail.gmail.com \password and PQencryptPassword]<br />
** {{messageLink|20170410035323.GA2846583@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/CAB7nPqSbsCBCxy8-DtwzRxYgTnbGUtY4uFEkLQhG%3DR%3Duo%3Dg8Fw%40mail.gmail.com patch exists]<br />
<br />
* {{messageLink|b081887e-1712-3aa4-7dbe-e012333d50e4@iki.fi|pg_hba.conf syntax}}<br />
** {{messageLink|20170412063327.GA2894486@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/CAB7nPqTo6_mk-qNfNMvr96pLi13PrxyR-UJXVP3xxdSkynjVnA%40mail.gmail.com proposal of patch exists]<br />
<br />
=== Other ===<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com Improve the docs and comments for quorum-based sync replication]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao {{messageLink|20170405064544.GA2702716@tornado.leadboat.com|notified}})<br />
** There will be still many source comments and documentations that we7c030783a5bd07cadffc2a1018bc33119a4c7505 need to update, for example, in high-availability.sgml. We need to check and update them throughly.<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com synchronous_standby_names shows unused priority values]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao {{messageLink|20170405064544.GA2702716@tornado.leadboat.com|notified}})<br />
** The priority value is assigned to each standby listed in s_s_names even in quorum commit though those priority values are not used at all. Users can see those priority values in pg_stat_replication. Isn't this confusing? If yes, it might be better to always assign 1 as the priority, for example.<br />
<br />
* [https://postgr.es/m/CAGPqQf3joLrjmR2FmQzYURb-_TxhW78tXhgYm+C66wXNjWH9ww@mail.gmail.com Query fails when SRFs are part of FROM clause]<br />
** original commit: {{PgCommitURL|69f4b9c}} (principal author: Tom Lane; owner: Andres Freund {{messageLink|20170405064755.GA2702846@tornado.leadboat.com|notified}})<br />
** owner [https://www.postgresql.org/message-id/20170412225855.oklyfkbwj2dmbrpu@alap3.anarazel.de proposes] classifying this as a non-bug<br />
<br />
* [https://www.postgresql.org/message-id/7064.1492022469@sss.pgh.pa.us Inadequate parallel-safety check for SubPlans]<br />
** original commit: {{PgCommitURL|5e6d8d2}} (principal author: Amit Kapila; owner: Robert Haas {{messageLink|20170416061825.GK2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAKOSWN=hUQWwyCJS8a3gTTUkvMkeg2iwSCCs=df0OYxJ_6H0kA@mail.gmail.com Removing ADD GENERATED for identity columns]<br />
** original commit: {{PgCommitURL|3217327}} (principal author: Peter Eisentraut; owner: Peter Eisentraut {{messageLink|20170414055644.GF2870454@tornado.leadboat.com|notified}})<br />
** Patch exists.<br />
<br />
== Design Decisions to Recheck Mid-Beta ==<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com Which synchronous replication method, priority or quorum, should be chosen when neither FIRST nor ANY is specified in synchronous_standby_names?]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao)<br />
** Right now, a priority-based sync replication is chosen for keeping backward compatibility. However some hackers argued to change this decision so that a quorum commit is chosen because they think that most users prefer to a quorum.<br />
<br />
== Older Bugs ==<br />
<br />
* [https://www.postgresql.org/message-id/c2c7191b-5ca0-b37a-9e9d-4df15ffb554b%40lab.ntt.co.jp Oddity in EXPLAIN for foreign/custom join pushdown plans]<br />
** postgres_fdw produces incorrect aliases for joining relations shown in EXPLAIN for some join pushdown queries<br />
** [https://www.postgresql.org/message-id/b4b04e83-5eb4-7dd6-2951-32acadea4e7b@lab.ntt.co.jp low-priority issue; let's leave this for v10]<br />
** regression in v9.6, nothing changed from v9.6 beta to v10 beta<br />
<br />
* [https://www.postgresql.org/message-id/20170117.193645.160386781.horiguchi.kyotaro@lab.ntt.co.jp standby can fail to reconnect even with replication slots]<br />
** patch exists<br />
** present in 9.4 and later<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1wXkKUKBHWBYzET3D9OViyDg8DcVL-wKEqk2uyoMrzr_A@mail.gmail.com Crash recovery can leave everlasting empty pages]<br />
** The pages are actually empty but FSM says that they have no room for new data and ALL_FROZEN. ALL_FROZEN prevents autovacuum from fixing FSM.<br />
** regression in v9.6, nothing new in v10<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqR82_57C8O1+z-bUChhHpdjMec_omLfKwYdjAFjjcrBWg@mail.gmail.com Switch use of "encrypted" to "hash" for passwords in documentation]<br />
<br />
== Non-bugs ==<br />
<br />
* [https://www.postgresql.org/message-id/20170321135742.GB23103@e733.localdomain Errors with valgrind]<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqSP+MHqg=dKoNOZu75j2mGAEW622GYz45Mv2V_XOao-9g@mail.gmail.com CREATE/ALTER ROLE PASSWORD ('value' USING 'method')], extension of this DDL to enforce type of password without changing password_encryption.<br />
** Not Open-Item worthy, let's do this in v11 if it still feels worthwhile then.<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoYrA8SK=KjkVbvKt8hG3Cqsjr-Hnmwa3WXqbziRuwKBLg@mail.gmail.com Declarative partitioning vs. information_schema, etc.]<br />
** include partitions in information_schema.tables, pg_tables, and psql's \d listing, etc?<br />
** firm support for status quo, lack of firm support for alternatives<br />
<br />
* [https://www.postgresql.org/message-id/071086d7-6462-f0e7-54ca-b633062e317c%40lab.ntt.co.jp Document that foreign table's partition constraint is not enforced locally]<br />
** Patch exists<br />
** documentation is correct, but this would add emphasis to a point<br />
<br />
== Resolved Issues ==<br />
<br />
=== resolved before 10beta1 ===<br />
<br />
* [https://www.postgresql.org/message-id/8a1d4662-9665-59d5-518d-45616b75f06a%40lab.ntt.co.jp COMMENT ON COLUMN fails for partitioned tables]<br />
** Fixed by commit 51175f3638524231405e674e40bde159b0b76727<br />
<br />
* [http://postgr.es/m/CAKJS1f-BmGo410bh5RSPZUvOO0LhmHL2NYmdrC_Jm8pk_FfyCA@mail.gmail.com Allowing extended stats on foreign and partitioned tables]<br />
** original commit: {{PgCommitURL|7b504eb}} (principal author: Tomas Vondra; owner: Alvaro Herrera {{messageLink|20170414055310.GE2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit 8c5cdb7f4f6e1d6a6104cb58ce4f23453891651b<br />
<br />
* [https://www.postgresql.org/message-id/12642.1491513976@sss.pgh.pa.us Partitioning optimization broke ConvertRowtypeExpr]<br />
** Fixed by commit 3f902354b08ac788600f0ae54fcbfc1d4e3ea765.<br />
<br />
* Integer overflow in enlargeStringInfo<br />
** {{messageLink|1706e85e-60d2-494e-8a64-9af1e1b2186e@manitou-mail.org|thinko in overflow logic}}<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1yURZZONoeLXhPsp2AkqR5MNAXiCiTVnrt2LGd6qD1b8w@mail.gmail.com pg_upgrade is broken because of renaming of pg_resetxlog to pg_resetwal]<br />
** Fixed by commit b877761.<br />
<br />
* [https://www.postgresql.org/message-id/flat/1803D792815FC24D871C00D17AE95905AC5FAE@g01jpexmbkw24#1803D792815FC24D871C00D17AE95905AC5FAE@g01jpexmbkw24 PQsendQuery fails when it should not if target_session_attrs is set to read-write]<br />
** Fixed by commit 1de0a4e.<br />
<br />
* [https://www.postgresql.org/message-id/CAM2+6=U72y2_Jni2p+meqTvvk=r_=Wd4orvzz5YL0b3WFx+gcA@mail.gmail.com Substantial bloat in postgres_fdw regression test runtime]<br />
** Fixed by commit aa7f593b1ffa9717bd5570174944c06c482d1c1f.<br />
<br />
* [https://www.postgresql.org/message-id/9f9dc7ae-14f0-4a25-5485-964d9bfc19bd%40lab.ntt.co.jp Error detail shown when partition not found]<br />
** Fixed by commit 5a73e17317e91912b2755f7960d5bf31d374cf31.<br />
<br />
* [https://www.postgresql.org/message-id/CAD21AoD%2BVO93zZ4ZQtZQb-jZ_wMko3OgGdx1MXO4T%2B8q_zHDDA%40mail.gmail.com DROP SUBSCRIPTION and ROLLBACK]<br />
** Fixed by commit 272adf4f9cd67df323ae57ff3dee238b649d3b73.<br />
<br />
* [https://www.postgresql.org/message-id/6c420206-45d7-3f56-8325-4bd7b76483ba%40lab.ntt.co.jp Dropping partitioned tables without CASCADE]<br />
** Fixed by commit 8b4d582d279d784616c228be58af1e39aa430402.<br />
<br />
* [https://www.postgresql.org/message-id/CAEepm=15e9L695yVCO-_OkBVbsPupyXqzYWzzDmj-bdJ6o2+Pw@mail.gmail.com pg_recvlogical.c doesn't build with --disable-integer-datetimes]<br />
** Fixed by commit b6aa17e0ae367afdcea07118e016111af4fa6bc3 and c29aff959dc64f7321062e7f33d8c6ec23db53d3<br />
<br />
* [https://www.postgresql.org/message-id/20170207201932.GH9812@tamriel.snowman.net pg_dump and PUBLICATIONS]<br />
** Fixed by commit 05227e0c345247c9e9ff91445850f414e2b0bb70<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoYpwN0AkaCqhAEVuxtHqGkz=yJzgQxbvucEQMPE-tLkEA@mail.gmail.com simplehash performance regressions]<br />
** Fixed by commit d4c62a6b623d6eef88218158e9fa3cf974c6c7e5<br />
<br />
* [https://www.postgresql.org/message-id/CAGz5QCLJJ1NhVQjQSreF-UoQyVoN6Krg54gZrr5-Ha5PqP2ksw@mail.gmail.com exposing wait events for non-backends]<br />
** Fixed by commit fc70a4b0df38bda6a13941f1581f25fbb643c7f3<br />
<br />
* [https://www.postgresql.org/message-id/b3d37313-acf0-d8fd-783f-c32f7c0667e6@lab.ntt.co.jp Partitioning vs INSERT ON CONFLICT]<br />
** Fixed by commit 8355a011a0124bdf7ccbada206a967d427039553<br />
** [https://www.postgresql.org/message-id/ff3dc21d-7204-c09c-50ac-cf11a8c45c81%40lab.ntt.co.jp Crash when leaf partition has an index]<br />
*** Reverted by commit f05230752d53c4aa74cffa9b699983bbb6bcb118<br />
<br />
* [https://www.postgresql.org/message-id/c72cbc58-9866-0622-86c1-f01cc4064e73%40lab.ntt.co.jp Bug in list partitioning tuple-routing]<br />
** Fixed by commit 7ecb7143589f38d679bb566311dfa9be1a650fd5<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU%3D1w-9Qe%3DFf1o6bSaXpNO9wqpo7_9GL8_CVhw4BoVVHasqg%40mail.gmail.com segfault in hot_standby for hash indexes]<br />
** Fixed by commit c4c51541e22bf7f2da8ecf6986271687b0d7a90e<br />
<br />
* [https://www.postgresql.org/message-id/CAEepm%3D23%3DvGz%3DCgVurPxBGV6SeOJ7YxSaAJKr_aH%2Bf2cV4zrow%40mail.gmail.com attaching to DSA area that was already destroyed]<br />
** Fixed by commit fddf45b38097d14301d249fbeebca32e40233bd2<br />
<br />
* postgres_fdw, partitioned tables and IMPORT SCHEMA<br />
** [https://postgr.es/m/20170309141531.GD9812@tamriel.snowman.net postgres_fdw IMPORT SCHEMA and partitioned tables]<br />
** Fixed by commit f49bcd4ef3e9a75de210357a4d9bbe3e004db956<br />
<br />
* [https://www.postgresql.org/message-id/2b0d42f2-3a53-763b-c9c2-47139e4b1c2e@lab.ntt.co.jp Partitioning tables create a file on-disk, which remains empty and has no purpose. Those relations don't need any storage]<br />
** Fixed by commit c94e6942cefe7d20c5feed856e27f672734b1e2b<br />
<br />
* [https://www.postgresql.org/message-id/a6f99cdb-21e7-1d65-1381-91f2cfa156e2%40lab.ntt.co.jp Documentation improvements for partitioning]<br />
** Fixed by commit 8f18a880a5f138d4da94173d15514142331f8de6<br />
<br />
* [https://www.postgresql.org/message-id/6ecd6f17-0dcf-1de7-ded8-0de7db1ddc88%402ndquadrant.com crashes due to setting max_parallel_workers=0]<br />
** Fixed by commit 25dc142a49c60c3107480c487cd8444dc83f9bdf<br />
<br />
* [https://www.postgresql.org/message-id/CAE9k0P%3DV2LhtyeMXd295fhisp%3DNWUhRVJ9EZQCDowWiY9rSohQ%40mail.gmail.com Failed assertion in _hash_kill_items/MarkBufferDirtyHint]<br />
** Fixed by commit 93cd7684ee2bba227fa371daa81b88f25456dcb2<br />
<br />
* [https://www.postgresql.org/message-id/CAE9k0PnmPDXfvf8HDObme7q_Ewc4E26ukHXUBPySoOs0ObqqaQ%40mail.gmail.com inconsistent page found on STANDBY server]<br />
** Fixed by commit 75a1cbdc3cfca1e815da6dfa5d7e96d82a6b0725<br />
<br />
* [https://www.postgresql.org/message-id/CAA4eK1%2BVE_TDRLWpyeOf%2B7%2B6if68kgPNwO4guKo060rm_t3O5w%40mail.gmail.com page inspect to show appropriate type of page]<br />
** Fixed by commit 633e15ea0f1bf2e1d70441fe9da8781befebd6e9<br />
<br />
* [https://www.postgresql.org/message-id/20170321.192419.96677899.horiguchi.kyotaro%40lab.ntt.co.jp Logical replication between differrent encodings fails]<br />
** Fixed by commit 6f1b9aaae35bfabe2654a8e44ce226c91e7d8bd9<br />
<br />
* [https://www.postgresql.org/message-id/20170331185540.zmsue4ndvqtnayqw@alap3.anarazel.de improve test coverage of parallel explain analyze]<br />
** Fixed by commit b2ff37d43cc81348fd8e9d9c5fcc9dfadf790763<br />
<br />
* [https://www.postgresql.org/message-id/20170331184603.qcp7t4md5bzxbx32@alap3.anarazel.de improve test coverage of parallel bitmap scan]<br />
** Fixed by commit 5a5931533edd2b70bde1f069609f58998dd26fef<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqSByyEmAVLtEf1KxTRh=PWNKiWKEKQR=e1yGehz=wbymQ@mail.gmail.com SASLprep]<br />
** Fixed by commit 60f11b87a2349985230c08616fa8a34ffde934c8<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoZfPOu62bR71bahf90ivOUxXpYOh0RqDiue0+dVVPNrWg@mail.gmail.com dsa.c needs a visit from the message style police]<br />
** Fixed by commit 5c4488478b182983f290a61fc8cf2ec83548622b<br />
<br />
* [https://www.postgresql.org/message-id/20170316085322.crffknkgee5s6air@alap3.anarazel.de Logical replication + EXEC_BACKEND + ASLR is broken]<br />
** Fixed by commit 0ef26bb394abedb2745bd838c26ecb3131682bda<br />
<br />
* [https://www.postgresql.org/message-id/b3a17254-6849-e542-2353-bde4e880b6a4%40lab.ntt.co.jp Reconsider the error detail shown when ExecConstraints() fails after tuple-routing]<br />
** original commit: {{PgCommitURL|f1b4c77}} (principal author: Amit Langote; owner: Robert Haas {{messageLink|20170409235426.GB2842536@tornado.leadboat.com|notified}})<br />
** Fixed by commit c0a8ae7be392aa09dd7e148ff662013e8e148893<br />
<br />
* [https://www.postgresql.org/message-id/13592.1490851519@sss.pgh.pa.us Broken locking design for accesses to pg_subscription_rel]<br />
** Fixed by commit 521fd4795e3ec3d0b263b62e5eb58e1557be9c86<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwHEs8jT_6DjYHYmsD2v-rOudstiBB_mtmZbR9Z2QfhCwQ@mail.gmail.com Both launcher and worker don't handle SIGHUP signal and cannot reload the configuration]<br />
** Fixed by commit 26ad194cb0a6b955e155d44fb52a74212ce85759<br />
<br />
* pg_dump and data durability, with addition of --no-sync option<br />
** original commit: {{PgCommitURL|96a7128}} (principal author: Michael Paquier; owner: Andrew Dunstan {{messageLink|20170405064941.GB2702846@tornado.leadboat.com|notified}})<br />
** [https://www.postgresql.org/message-id/CAB7nPqTUOpF792rDOnBkswZ%3DZgHwxdB01OQU2tAF1KU4iUuLrw%40mail.gmail.com Regression tests should use --no-sync as much as possible]<br />
** Fixed by commit 3820c63da8d0e59e2bd4476e91968f03be5dd041<br />
<br />
* [http://postgr.es/m/CAMkU=1zrQaPwBN+NcBd3pWCb=vWaiL=mmWfJjDJjh-a7eVr-Og@mail.gmail.com pgbench --progress-timestamp no longer works correctly]<br />
** original commit: {{PgCommitURL|1d63f7d}} (principal author: Tom Lane; owner: Tom Lane {{messageLink|20170411042352.GA2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit feffa0e0795a5a99324890a6dd548ba162ec104c<br />
<br />
* [https://www.postgresql.org/message-id/29588799-a8ce-b0a2-3dae-f39ff6d35922%40lab.ntt.co.jp Dropping a partition may cause deadlock]<br />
** {{PgCommitURL|f0e4475}} (principal author: Amit Langote; owner: Robert Haas {{messageLink|20170409235729.GA2842636@tornado.leadboat.com|notified}})<br />
** Fixed by commit 258cef12540fa1cb244881a0f019cefd698c809e<br />
<br />
* [https://www.postgresql.org/message-id/CAFiTN-suK%2BMod_noGy8LpmkSzgvzwhGfNZ0K6vf_gX6rkw2jxA%40mail.gmail.com Problem in Parallel Bitmap Heap Scan]<br />
** original commit: {{PgCommitURL|f35742c}} (principal author: Dilip Kumar; owner: Robert Haas {{messageLink|20170410031734.GB2845039@tornado.leadboat.com|notified}})<br />
** Fixed by commit 4c3b59abf4c476843bca23de7fb66d647627f30e<br />
<br />
* [https://www.postgresql.org/message-id/flat/24a143e0-c9bb-8f4f-1472-9d6faae4c92e%402ndquadrant.com#24a143e0-c9bb-8f4f-1472-9d6faae4c92e@2ndquadrant.com strange parallel query behavior after OOM crashes]<br />
** original commit: {{PgCommitURL|b460f5d}} (principal author: Julien Rouhaud; owner: Robert Haas {{messageLink|20170410031836.GC2845004@tornado.leadboat.com|notified}})<br />
** Fixed by commit 8ff518699f19dd0a5076f5090bac8400b8233f7f<br />
** See also commit 6599c9ac3340b6cd3d86a0a7f866b80a009fecab which attempts to catch other problems of this sort<br />
<br />
* [https://www.postgresql.org/message-id/52d9c443-ec78-5c8a-7a77-0f34aad12b82%40lab.ntt.co.jp RENAME RULE doesn't work with partitioned tables]<br />
** Fixed by commit 02af7857e5694b13c21401d1982ac21d31e27dee<br />
<br />
* [https://postgr.es/m/20170309144718.GE9812@tamriel.snowman.net sepgsql and partitioned tables]<br />
** {{messageLink|CA+TgmobTJnasxpRkJxGcHaz85LyqdXBKZRxP6pCCS-UkhcHUBQ@mail.gmail.com|feature request, not bug}}<br />
** implemented in {{PgCommitURL|25542d77dd549940468d1a932809feb9959d717d}}<br />
<br />
* [https://www.postgresql.org/message-id/b7578aaf-726e-61a1-0011-943e92ad08ee@2ndquadrant.com error handling in RegisterBackgroundWorker]<br />
** withdrawn<br />
<br />
* [https://www.postgresql.org/message-id/CA%2BTgmobYfFRtcXv1aoXD18%2BRkPU%3Duw39Ajqm1HWyh7V_8QYZ%3DA%40mail.gmail.com pgstathashindex() to handle unused pages in hash index]<br />
** original commit: {{PgCommitURL|e759854}} (principal author: Ashutosh Sharma; owner: Robert Haas {{messageLink|20170412062802.GB2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit 9cc27566c1a8d659c15b9eea2413dcc07a7a42c9<br />
<br />
* [https://www.postgresql.org/message-id/30972.1491937807@sss.pgh.pa.us Mishandling of non-parallel-safe initplans/subplans in a parallelized query]<br />
** original commit: {{PgCommitURL|5e6d8d2bb}}<br />
** Fixed by commit 16ebab68862bb5d3595b8c8df083f650d9d7cd20<br />
<br />
* [https://www.postgresql.org/message-id/20170217020415.GI9812@tamriel.snowman.net pg_dump and SUBSCRIPTIONS]<br />
** fixed by commits c31671f9b5f6eee9b6726baad2db1795c94839d1, a9254e675bde7dc2d976d207450c559d914c0dd6<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqS-aFg0iM3AQOJwKDv_0WkAedRjs1W2X8EixSz+sKBXCQ@mail.gmail.com Letting the client choose the protocol to use during a SASL exchange]<br />
** fixed by commit 4f3b87ab780b95c2cc8a591259baefaff4852037<br />
<br />
* [https://www.postgresql.org/message-id/E1cwSWo-0001hG-Rq@gemulon.postgresql.org Add overview of SCRAM to the FE/BE protocol documentation]. Mention that SASLprep is used on all passwords, UTF-8 or not.<br />
** fixed by commit 4f3b87ab780b95c2cc8a591259baefaff4852037<br />
<br />
* [https://www.postgresql.org/message-id/flat/CA%2BTgmoarXTa3F5ybQ98DtUDKVMUpg5JoDykPXUaEr9z_8OyYWQ%40mail.gmail.com add synchronous_commit control for logical apply]<br />
** fixed by commit 887227a1cc861d87ca0f175cf8bd1447554090eb<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwGA2tz-iQ90ofgX0Q1TuZLyr+GCX+T1=PE+ogUKVSRpZA@mail.gmail.com logical replication worker and statistics]<br />
** fixed by commit 139eb9673cb84c76f493af7e68301ae204199746<br />
<br />
* [https://www.postgresql.org/message-id/flat/alpine.DEB.2.20.1702161846410.29507@lancre/ web site CSS issues]<br />
** fixed in pgweb<br />
<br />
* [https://www.postgresql.org/message-id/flat/92ea7dd8-70b9-16c6-9327-e67e56209f33%40lab.ntt.co.jp publications vs inheritance]<br />
** fixed by commit 419a23b478ae760b797188341ddce5b41322684b<br />
<br />
* [https://www.postgresql.org/message-id/CAKJS1f9Kk0NF6Fg7TA%3DJUXsjpS9kX6NVu27pb5QDCpOYAvb-Og%40mail.gmail.com extended stats not friendly towards ANALYZE with subset of columns]<br />
** original commit: {{PgCommitURL|7b504eb}}<br />
** fixed by commit bf2a691e02d7766f185d9d8e0f092222a5c0a129<br />
<br />
* [https://www.postgresql.org/message-id/20170316085322.crffknkgee5s6air@alap3.anarazel.de Parallel Query + EXEC_BACKEND + ASLR is broken]<br />
** Problem in 9.6 and later<br />
** Fixed by commits 0ef26bb39 + 32470825d + a74740fbd<br />
<br />
* [https://www.postgresql.org/message-id/CAHE3wgj+2YpFyrg7SAV=-oqTpP2AggT-nRKbR3nkDAt0TA2V6A@mail.gmail.com Different table schema in logical replication crashes]<br />
** fixed by commit e6242c18a5bb08788e6c4cc773952fc8e2a6291a<br />
<br />
== Important Dates ==<br />
<br />
Current schedule:<br />
* feature freeze: April 7th<br />
* beta1: wrap May 15th, announce May 18th<br />
<br />
References:<br />
* [https://wiki.postgresql.org/wiki/PgCon_2016_Developer_Meeting#9:55_-_10:05_.09Next_Release_Schedule_.09All original schedule]<br />
* [https://www.postgresql.org/message-id/CA%2BTgmoZNLxizOkPy4WKdxwKo40Hz96v5jZ%3D07aLe93JW2dZmRA%40mail.gmail.com feature freeze moved]</div>Simonhttps://wiki.postgresql.org/index.php?title=PostgreSQL_10_Open_Items&diff=29909PostgreSQL 10 Open Items2017-04-18T09:47:37Z<p>Simon: /* resolved before 10beta1 */</p>
<hr />
<div>== Open Issues ==<br />
<br />
=== Partitioning ===<br />
<br />
* pg_dump and partitioned tables<br />
** {{messageLink|20170409235057.GA2842536@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/7682253a-6f79-6a92-00aa-267c4c412870%40lab.ntt.co.jp pg_dump should not emit ALTER TABLE ONLY for a partitioned table in case of attribute changes and inheritable constraints]<br />
*** patch exists<br />
** [https://www.postgresql.org/message-id/20170217133251.GK9812%40tamriel.snowman.net pg_dump TAP tests around partitioning]<br />
** original commit: {{PgCommitURL|f0e4475}} (principal author: Amit Langote; owner: Stephen Frost, [http://postgr.es/m/20170413150540.GQ9812@tamriel.snowman.net previously Robert Haas])<br />
<br />
=== Logical Replication ===<br />
<br />
unless otherwise marked, original commit: {{PgCommitURL|665d1fa}} (principal author: Petr Jelinek; owner: Peter Eisentraut)<br />
<br />
* [https://www.postgresql.org/message-id/51f65289-54f8-2256-d107-937d662d69f1%402ndquadrant.com snapshot builder has bugs]<br />
** owner: Andres Freund {{messageLink|20170413045812.GA2917375@tornado.leadboat.com|notified}}<br />
** some issues go back to 9.4; some are new in v10<br />
** patches for individual issues exist<br />
<br />
* [https://www.postgresql.org/message-id/CAD21AoDCnyRJDUY%3DESVVe68AukvOP2dFomTeBFpAd1TiFbjsGg%40mail.gmail.com Interval for launching the table sync worker]<br />
** original commit: {{PgCommitURL|7c4f524}} (principal author: Petr Jelinek; owner: Peter Eisentraut {{messageLink|20170416060841.GH2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwGhhJyNDEb+GDbJ2iHQvyOqcdgqoH9wqvLt7VAGAnE3WA@mail.gmail.com tablesync patch broke the assumption that logical rep depends on?]<br />
** original commit: {{PgCommitURL|7c4f524}} (principal author: Petr Jelinek; owner: Peter Eisentraut {{messageLink|20170413045605.GD2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEsttg9P9LOOavoc9d6VB1zVmYgfBk=Ljsk-UL9cEf-eA@mail.gmail.com logical replication and PANIC during shutdown checkpoint in publisher]<br />
** {{messageLink|20170416061258.GI2870454@tornado.leadboat.com|notified}}<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwFDWh_Qr-q_GEMpD+qH=vYPMdVqw=ZOSY3kX_Pna9R9SA@mail.gmail.com some review comments on logical rep code]<br />
** {{messageLink|20170416061449.GJ2870454@tornado.leadboat.com|notified}}<br />
<br />
=== SCRAM-SHA-256 Authentication ===<br />
<br />
unless otherwise marked, original commit: {{PgCommitURL|818fd4a}} (principal author: Michael Paquier; owner: Heikki Linnakangas)<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1wfBgFPbfAMYZQE78p=VhZX7nN86aWkp0QcCp=+KxZ=bg@mail.gmail.com \password and PQencryptPassword]<br />
** {{messageLink|20170410035323.GA2846583@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/CAB7nPqSbsCBCxy8-DtwzRxYgTnbGUtY4uFEkLQhG%3DR%3Duo%3Dg8Fw%40mail.gmail.com patch exists]<br />
<br />
* {{messageLink|b081887e-1712-3aa4-7dbe-e012333d50e4@iki.fi|pg_hba.conf syntax}}<br />
** {{messageLink|20170412063327.GA2894486@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/CAB7nPqTo6_mk-qNfNMvr96pLi13PrxyR-UJXVP3xxdSkynjVnA%40mail.gmail.com proposal of patch exists]<br />
<br />
=== Other ===<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com Improve the docs and comments for quorum-based sync replication]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao {{messageLink|20170405064544.GA2702716@tornado.leadboat.com|notified}})<br />
** There will be still many source comments and documentations that we7c030783a5bd07cadffc2a1018bc33119a4c7505 need to update, for example, in high-availability.sgml. We need to check and update them throughly.<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com synchronous_standby_names shows unused priority values]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao {{messageLink|20170405064544.GA2702716@tornado.leadboat.com|notified}})<br />
** The priority value is assigned to each standby listed in s_s_names even in quorum commit though those priority values are not used at all. Users can see those priority values in pg_stat_replication. Isn't this confusing? If yes, it might be better to always assign 1 as the priority, for example.<br />
<br />
* [https://postgr.es/m/CAGPqQf3joLrjmR2FmQzYURb-_TxhW78tXhgYm+C66wXNjWH9ww@mail.gmail.com Query fails when SRFs are part of FROM clause]<br />
** original commit: {{PgCommitURL|69f4b9c}} (principal author: Tom Lane; owner: Andres Freund {{messageLink|20170405064755.GA2702846@tornado.leadboat.com|notified}})<br />
** owner [https://www.postgresql.org/message-id/20170412225855.oklyfkbwj2dmbrpu@alap3.anarazel.de proposes] classifying this as a non-bug<br />
<br />
* [https://www.postgresql.org/message-id/7064.1492022469@sss.pgh.pa.us Inadequate parallel-safety check for SubPlans]<br />
** original commit: {{PgCommitURL|5e6d8d2}} (principal author: Amit Kapila; owner: Robert Haas {{messageLink|20170416061825.GK2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAKOSWN=hUQWwyCJS8a3gTTUkvMkeg2iwSCCs=df0OYxJ_6H0kA@mail.gmail.com Removing ADD GENERATED for identity columns]<br />
** original commit: {{PgCommitURL|3217327}} (principal author: Peter Eisentraut; owner: Peter Eisentraut {{messageLink|20170414055644.GF2870454@tornado.leadboat.com|notified}})<br />
** Patch exists.<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1zMLnH_i1-PVQ-biZzvNx7VcuatriquEnh7HNk6K8Ss3Q@mail.gmail.com PANIC in pg_commit_ts slru after crashes, 2PC restore code at fault]<br />
** Patch(es) exist(s).<br />
<br />
== Design Decisions to Recheck Mid-Beta ==<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com Which synchronous replication method, priority or quorum, should be chosen when neither FIRST nor ANY is specified in synchronous_standby_names?]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao)<br />
** Right now, a priority-based sync replication is chosen for keeping backward compatibility. However some hackers argued to change this decision so that a quorum commit is chosen because they think that most users prefer to a quorum.<br />
<br />
== Older Bugs ==<br />
<br />
* [https://www.postgresql.org/message-id/c2c7191b-5ca0-b37a-9e9d-4df15ffb554b%40lab.ntt.co.jp Oddity in EXPLAIN for foreign/custom join pushdown plans]<br />
** postgres_fdw produces incorrect aliases for joining relations shown in EXPLAIN for some join pushdown queries<br />
** [https://www.postgresql.org/message-id/b4b04e83-5eb4-7dd6-2951-32acadea4e7b@lab.ntt.co.jp low-priority issue; let's leave this for v10]<br />
** regression in v9.6, nothing changed from v9.6 beta to v10 beta<br />
<br />
* [https://www.postgresql.org/message-id/20170117.193645.160386781.horiguchi.kyotaro@lab.ntt.co.jp standby can fail to reconnect even with replication slots]<br />
** patch exists<br />
** present in 9.4 and later<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1wXkKUKBHWBYzET3D9OViyDg8DcVL-wKEqk2uyoMrzr_A@mail.gmail.com Crash recovery can leave everlasting empty pages]<br />
** The pages are actually empty but FSM says that they have no room for new data and ALL_FROZEN. ALL_FROZEN prevents autovacuum from fixing FSM.<br />
** regression in v9.6, nothing new in v10<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqR82_57C8O1+z-bUChhHpdjMec_omLfKwYdjAFjjcrBWg@mail.gmail.com Switch use of "encrypted" to "hash" for passwords in documentation]<br />
<br />
== Non-bugs ==<br />
<br />
* [https://www.postgresql.org/message-id/20170321135742.GB23103@e733.localdomain Errors with valgrind]<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqSP+MHqg=dKoNOZu75j2mGAEW622GYz45Mv2V_XOao-9g@mail.gmail.com CREATE/ALTER ROLE PASSWORD ('value' USING 'method')], extension of this DDL to enforce type of password without changing password_encryption.<br />
** Not Open-Item worthy, let's do this in v11 if it still feels worthwhile then.<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoYrA8SK=KjkVbvKt8hG3Cqsjr-Hnmwa3WXqbziRuwKBLg@mail.gmail.com Declarative partitioning vs. information_schema, etc.]<br />
** include partitions in information_schema.tables, pg_tables, and psql's \d listing, etc?<br />
** firm support for status quo, lack of firm support for alternatives<br />
<br />
* [https://www.postgresql.org/message-id/071086d7-6462-f0e7-54ca-b633062e317c%40lab.ntt.co.jp Document that foreign table's partition constraint is not enforced locally]<br />
** Patch exists<br />
** documentation is correct, but this would add emphasis to a point<br />
<br />
== Resolved Issues ==<br />
<br />
=== resolved before 10beta1 ===<br />
<br />
* [https://www.postgresql.org/message-id/8a1d4662-9665-59d5-518d-45616b75f06a%40lab.ntt.co.jp COMMENT ON COLUMN fails for partitioned tables]<br />
** Fixed by commit 51175f3638524231405e674e40bde159b0b76727<br />
<br />
* [http://postgr.es/m/CAKJS1f-BmGo410bh5RSPZUvOO0LhmHL2NYmdrC_Jm8pk_FfyCA@mail.gmail.com Allowing extended stats on foreign and partitioned tables]<br />
** original commit: {{PgCommitURL|7b504eb}} (principal author: Tomas Vondra; owner: Alvaro Herrera {{messageLink|20170414055310.GE2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit 8c5cdb7f4f6e1d6a6104cb58ce4f23453891651b<br />
<br />
* [https://www.postgresql.org/message-id/12642.1491513976@sss.pgh.pa.us Partitioning optimization broke ConvertRowtypeExpr]<br />
** Fixed by commit 3f902354b08ac788600f0ae54fcbfc1d4e3ea765.<br />
<br />
* Integer overflow in enlargeStringInfo<br />
** {{messageLink|1706e85e-60d2-494e-8a64-9af1e1b2186e@manitou-mail.org|thinko in overflow logic}}<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1yURZZONoeLXhPsp2AkqR5MNAXiCiTVnrt2LGd6qD1b8w@mail.gmail.com pg_upgrade is broken because of renaming of pg_resetxlog to pg_resetwal]<br />
** Fixed by commit b877761.<br />
<br />
* [https://www.postgresql.org/message-id/flat/1803D792815FC24D871C00D17AE95905AC5FAE@g01jpexmbkw24#1803D792815FC24D871C00D17AE95905AC5FAE@g01jpexmbkw24 PQsendQuery fails when it should not if target_session_attrs is set to read-write]<br />
** Fixed by commit 1de0a4e.<br />
<br />
* [https://www.postgresql.org/message-id/CAM2+6=U72y2_Jni2p+meqTvvk=r_=Wd4orvzz5YL0b3WFx+gcA@mail.gmail.com Substantial bloat in postgres_fdw regression test runtime]<br />
** Fixed by commit aa7f593b1ffa9717bd5570174944c06c482d1c1f.<br />
<br />
* [https://www.postgresql.org/message-id/9f9dc7ae-14f0-4a25-5485-964d9bfc19bd%40lab.ntt.co.jp Error detail shown when partition not found]<br />
** Fixed by commit 5a73e17317e91912b2755f7960d5bf31d374cf31.<br />
<br />
* [https://www.postgresql.org/message-id/CAD21AoD%2BVO93zZ4ZQtZQb-jZ_wMko3OgGdx1MXO4T%2B8q_zHDDA%40mail.gmail.com DROP SUBSCRIPTION and ROLLBACK]<br />
** Fixed by commit 272adf4f9cd67df323ae57ff3dee238b649d3b73.<br />
<br />
* [https://www.postgresql.org/message-id/6c420206-45d7-3f56-8325-4bd7b76483ba%40lab.ntt.co.jp Dropping partitioned tables without CASCADE]<br />
** Fixed by commit 8b4d582d279d784616c228be58af1e39aa430402.<br />
<br />
* [https://www.postgresql.org/message-id/CAEepm=15e9L695yVCO-_OkBVbsPupyXqzYWzzDmj-bdJ6o2+Pw@mail.gmail.com pg_recvlogical.c doesn't build with --disable-integer-datetimes]<br />
** Fixed by commit b6aa17e0ae367afdcea07118e016111af4fa6bc3 and c29aff959dc64f7321062e7f33d8c6ec23db53d3<br />
<br />
* [https://www.postgresql.org/message-id/20170207201932.GH9812@tamriel.snowman.net pg_dump and PUBLICATIONS]<br />
** Fixed by commit 05227e0c345247c9e9ff91445850f414e2b0bb70<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoYpwN0AkaCqhAEVuxtHqGkz=yJzgQxbvucEQMPE-tLkEA@mail.gmail.com simplehash performance regressions]<br />
** Fixed by commit d4c62a6b623d6eef88218158e9fa3cf974c6c7e5<br />
<br />
* [https://www.postgresql.org/message-id/CAGz5QCLJJ1NhVQjQSreF-UoQyVoN6Krg54gZrr5-Ha5PqP2ksw@mail.gmail.com exposing wait events for non-backends]<br />
** Fixed by commit fc70a4b0df38bda6a13941f1581f25fbb643c7f3<br />
<br />
* [https://www.postgresql.org/message-id/b3d37313-acf0-d8fd-783f-c32f7c0667e6@lab.ntt.co.jp Partitioning vs INSERT ON CONFLICT]<br />
** Fixed by commit 8355a011a0124bdf7ccbada206a967d427039553<br />
** [https://www.postgresql.org/message-id/ff3dc21d-7204-c09c-50ac-cf11a8c45c81%40lab.ntt.co.jp Crash when leaf partition has an index]<br />
*** Reverted by commit f05230752d53c4aa74cffa9b699983bbb6bcb118<br />
<br />
* [https://www.postgresql.org/message-id/c72cbc58-9866-0622-86c1-f01cc4064e73%40lab.ntt.co.jp Bug in list partitioning tuple-routing]<br />
** Fixed by commit 7ecb7143589f38d679bb566311dfa9be1a650fd5<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU%3D1w-9Qe%3DFf1o6bSaXpNO9wqpo7_9GL8_CVhw4BoVVHasqg%40mail.gmail.com segfault in hot_standby for hash indexes]<br />
** Fixed by commit c4c51541e22bf7f2da8ecf6986271687b0d7a90e<br />
<br />
* [https://www.postgresql.org/message-id/CAEepm%3D23%3DvGz%3DCgVurPxBGV6SeOJ7YxSaAJKr_aH%2Bf2cV4zrow%40mail.gmail.com attaching to DSA area that was already destroyed]<br />
** Fixed by commit fddf45b38097d14301d249fbeebca32e40233bd2<br />
<br />
* postgres_fdw, partitioned tables and IMPORT SCHEMA<br />
** [https://postgr.es/m/20170309141531.GD9812@tamriel.snowman.net postgres_fdw IMPORT SCHEMA and partitioned tables]<br />
** Fixed by commit f49bcd4ef3e9a75de210357a4d9bbe3e004db956<br />
<br />
* [https://www.postgresql.org/message-id/2b0d42f2-3a53-763b-c9c2-47139e4b1c2e@lab.ntt.co.jp Partitioning tables create a file on-disk, which remains empty and has no purpose. Those relations don't need any storage]<br />
** Fixed by commit c94e6942cefe7d20c5feed856e27f672734b1e2b<br />
<br />
* [https://www.postgresql.org/message-id/a6f99cdb-21e7-1d65-1381-91f2cfa156e2%40lab.ntt.co.jp Documentation improvements for partitioning]<br />
** Fixed by commit 8f18a880a5f138d4da94173d15514142331f8de6<br />
<br />
* [https://www.postgresql.org/message-id/6ecd6f17-0dcf-1de7-ded8-0de7db1ddc88%402ndquadrant.com crashes due to setting max_parallel_workers=0]<br />
** Fixed by commit 25dc142a49c60c3107480c487cd8444dc83f9bdf<br />
<br />
* [https://www.postgresql.org/message-id/CAE9k0P%3DV2LhtyeMXd295fhisp%3DNWUhRVJ9EZQCDowWiY9rSohQ%40mail.gmail.com Failed assertion in _hash_kill_items/MarkBufferDirtyHint]<br />
** Fixed by commit 93cd7684ee2bba227fa371daa81b88f25456dcb2<br />
<br />
* [https://www.postgresql.org/message-id/CAE9k0PnmPDXfvf8HDObme7q_Ewc4E26ukHXUBPySoOs0ObqqaQ%40mail.gmail.com inconsistent page found on STANDBY server]<br />
** Fixed by commit 75a1cbdc3cfca1e815da6dfa5d7e96d82a6b0725<br />
<br />
* [https://www.postgresql.org/message-id/CAA4eK1%2BVE_TDRLWpyeOf%2B7%2B6if68kgPNwO4guKo060rm_t3O5w%40mail.gmail.com page inspect to show appropriate type of page]<br />
** Fixed by commit 633e15ea0f1bf2e1d70441fe9da8781befebd6e9<br />
<br />
* [https://www.postgresql.org/message-id/20170321.192419.96677899.horiguchi.kyotaro%40lab.ntt.co.jp Logical replication between differrent encodings fails]<br />
** Fixed by commit 6f1b9aaae35bfabe2654a8e44ce226c91e7d8bd9<br />
<br />
* [https://www.postgresql.org/message-id/20170331185540.zmsue4ndvqtnayqw@alap3.anarazel.de improve test coverage of parallel explain analyze]<br />
** Fixed by commit b2ff37d43cc81348fd8e9d9c5fcc9dfadf790763<br />
<br />
* [https://www.postgresql.org/message-id/20170331184603.qcp7t4md5bzxbx32@alap3.anarazel.de improve test coverage of parallel bitmap scan]<br />
** Fixed by commit 5a5931533edd2b70bde1f069609f58998dd26fef<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqSByyEmAVLtEf1KxTRh=PWNKiWKEKQR=e1yGehz=wbymQ@mail.gmail.com SASLprep]<br />
** Fixed by commit 60f11b87a2349985230c08616fa8a34ffde934c8<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoZfPOu62bR71bahf90ivOUxXpYOh0RqDiue0+dVVPNrWg@mail.gmail.com dsa.c needs a visit from the message style police]<br />
** Fixed by commit 5c4488478b182983f290a61fc8cf2ec83548622b<br />
<br />
* [https://www.postgresql.org/message-id/20170316085322.crffknkgee5s6air@alap3.anarazel.de Logical replication + EXEC_BACKEND + ASLR is broken]<br />
** Fixed by commit 0ef26bb394abedb2745bd838c26ecb3131682bda<br />
<br />
* [https://www.postgresql.org/message-id/b3a17254-6849-e542-2353-bde4e880b6a4%40lab.ntt.co.jp Reconsider the error detail shown when ExecConstraints() fails after tuple-routing]<br />
** original commit: {{PgCommitURL|f1b4c77}} (principal author: Amit Langote; owner: Robert Haas {{messageLink|20170409235426.GB2842536@tornado.leadboat.com|notified}})<br />
** Fixed by commit c0a8ae7be392aa09dd7e148ff662013e8e148893<br />
<br />
* [https://www.postgresql.org/message-id/13592.1490851519@sss.pgh.pa.us Broken locking design for accesses to pg_subscription_rel]<br />
** Fixed by commit 521fd4795e3ec3d0b263b62e5eb58e1557be9c86<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwHEs8jT_6DjYHYmsD2v-rOudstiBB_mtmZbR9Z2QfhCwQ@mail.gmail.com Both launcher and worker don't handle SIGHUP signal and cannot reload the configuration]<br />
** Fixed by commit 26ad194cb0a6b955e155d44fb52a74212ce85759<br />
<br />
* pg_dump and data durability, with addition of --no-sync option<br />
** original commit: {{PgCommitURL|96a7128}} (principal author: Michael Paquier; owner: Andrew Dunstan {{messageLink|20170405064941.GB2702846@tornado.leadboat.com|notified}})<br />
** [https://www.postgresql.org/message-id/CAB7nPqTUOpF792rDOnBkswZ%3DZgHwxdB01OQU2tAF1KU4iUuLrw%40mail.gmail.com Regression tests should use --no-sync as much as possible]<br />
** Fixed by commit 3820c63da8d0e59e2bd4476e91968f03be5dd041<br />
<br />
* [http://postgr.es/m/CAMkU=1zrQaPwBN+NcBd3pWCb=vWaiL=mmWfJjDJjh-a7eVr-Og@mail.gmail.com pgbench --progress-timestamp no longer works correctly]<br />
** original commit: {{PgCommitURL|1d63f7d}} (principal author: Tom Lane; owner: Tom Lane {{messageLink|20170411042352.GA2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit feffa0e0795a5a99324890a6dd548ba162ec104c<br />
<br />
* [https://www.postgresql.org/message-id/29588799-a8ce-b0a2-3dae-f39ff6d35922%40lab.ntt.co.jp Dropping a partition may cause deadlock]<br />
** {{PgCommitURL|f0e4475}} (principal author: Amit Langote; owner: Robert Haas {{messageLink|20170409235729.GA2842636@tornado.leadboat.com|notified}})<br />
** Fixed by commit 258cef12540fa1cb244881a0f019cefd698c809e<br />
<br />
* [https://www.postgresql.org/message-id/CAFiTN-suK%2BMod_noGy8LpmkSzgvzwhGfNZ0K6vf_gX6rkw2jxA%40mail.gmail.com Problem in Parallel Bitmap Heap Scan]<br />
** original commit: {{PgCommitURL|f35742c}} (principal author: Dilip Kumar; owner: Robert Haas {{messageLink|20170410031734.GB2845039@tornado.leadboat.com|notified}})<br />
** Fixed by commit 4c3b59abf4c476843bca23de7fb66d647627f30e<br />
<br />
* [https://www.postgresql.org/message-id/flat/24a143e0-c9bb-8f4f-1472-9d6faae4c92e%402ndquadrant.com#24a143e0-c9bb-8f4f-1472-9d6faae4c92e@2ndquadrant.com strange parallel query behavior after OOM crashes]<br />
** original commit: {{PgCommitURL|b460f5d}} (principal author: Julien Rouhaud; owner: Robert Haas {{messageLink|20170410031836.GC2845004@tornado.leadboat.com|notified}})<br />
** Fixed by commit 8ff518699f19dd0a5076f5090bac8400b8233f7f<br />
** See also commit 6599c9ac3340b6cd3d86a0a7f866b80a009fecab which attempts to catch other problems of this sort<br />
<br />
* [https://www.postgresql.org/message-id/52d9c443-ec78-5c8a-7a77-0f34aad12b82%40lab.ntt.co.jp RENAME RULE doesn't work with partitioned tables]<br />
** Fixed by commit 02af7857e5694b13c21401d1982ac21d31e27dee<br />
<br />
* [https://postgr.es/m/20170309144718.GE9812@tamriel.snowman.net sepgsql and partitioned tables]<br />
** {{messageLink|CA+TgmobTJnasxpRkJxGcHaz85LyqdXBKZRxP6pCCS-UkhcHUBQ@mail.gmail.com|feature request, not bug}}<br />
** implemented in {{PgCommitURL|25542d77dd549940468d1a932809feb9959d717d}}<br />
<br />
* [https://www.postgresql.org/message-id/b7578aaf-726e-61a1-0011-943e92ad08ee@2ndquadrant.com error handling in RegisterBackgroundWorker]<br />
** withdrawn<br />
<br />
* [https://www.postgresql.org/message-id/CA%2BTgmobYfFRtcXv1aoXD18%2BRkPU%3Duw39Ajqm1HWyh7V_8QYZ%3DA%40mail.gmail.com pgstathashindex() to handle unused pages in hash index]<br />
** original commit: {{PgCommitURL|e759854}} (principal author: Ashutosh Sharma; owner: Robert Haas {{messageLink|20170412062802.GB2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit 9cc27566c1a8d659c15b9eea2413dcc07a7a42c9<br />
<br />
* [https://www.postgresql.org/message-id/30972.1491937807@sss.pgh.pa.us Mishandling of non-parallel-safe initplans/subplans in a parallelized query]<br />
** original commit: {{PgCommitURL|5e6d8d2bb}}<br />
** Fixed by commit 16ebab68862bb5d3595b8c8df083f650d9d7cd20<br />
<br />
* [https://www.postgresql.org/message-id/20170217020415.GI9812@tamriel.snowman.net pg_dump and SUBSCRIPTIONS]<br />
** fixed by commits c31671f9b5f6eee9b6726baad2db1795c94839d1, a9254e675bde7dc2d976d207450c559d914c0dd6<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqS-aFg0iM3AQOJwKDv_0WkAedRjs1W2X8EixSz+sKBXCQ@mail.gmail.com Letting the client choose the protocol to use during a SASL exchange]<br />
** fixed by commit 4f3b87ab780b95c2cc8a591259baefaff4852037<br />
<br />
* [https://www.postgresql.org/message-id/E1cwSWo-0001hG-Rq@gemulon.postgresql.org Add overview of SCRAM to the FE/BE protocol documentation]. Mention that SASLprep is used on all passwords, UTF-8 or not.<br />
** fixed by commit 4f3b87ab780b95c2cc8a591259baefaff4852037<br />
<br />
* [https://www.postgresql.org/message-id/flat/CA%2BTgmoarXTa3F5ybQ98DtUDKVMUpg5JoDykPXUaEr9z_8OyYWQ%40mail.gmail.com add synchronous_commit control for logical apply]<br />
** fixed by commit 887227a1cc861d87ca0f175cf8bd1447554090eb<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwGA2tz-iQ90ofgX0Q1TuZLyr+GCX+T1=PE+ogUKVSRpZA@mail.gmail.com logical replication worker and statistics]<br />
** fixed by commit 139eb9673cb84c76f493af7e68301ae204199746<br />
<br />
* [https://www.postgresql.org/message-id/flat/alpine.DEB.2.20.1702161846410.29507@lancre/ web site CSS issues]<br />
** fixed in pgweb<br />
<br />
* [https://www.postgresql.org/message-id/flat/92ea7dd8-70b9-16c6-9327-e67e56209f33%40lab.ntt.co.jp publications vs inheritance]<br />
** fixed by commit 419a23b478ae760b797188341ddce5b41322684b<br />
<br />
* [https://www.postgresql.org/message-id/CAKJS1f9Kk0NF6Fg7TA%3DJUXsjpS9kX6NVu27pb5QDCpOYAvb-Og%40mail.gmail.com extended stats not friendly towards ANALYZE with subset of columns]<br />
** original commit: {{PgCommitURL|7b504eb}}<br />
** fixed by commit bf2a691e02d7766f185d9d8e0f092222a5c0a129<br />
<br />
* [https://www.postgresql.org/message-id/20170316085322.crffknkgee5s6air@alap3.anarazel.de Parallel Query + EXEC_BACKEND + ASLR is broken]<br />
** Problem in 9.6 and later<br />
** Fixed by commits 0ef26bb39 + 32470825d + a74740fbd<br />
<br />
* [https://www.postgresql.org/message-id/CAHE3wgj+2YpFyrg7SAV=-oqTpP2AggT-nRKbR3nkDAt0TA2V6A@mail.gmail.com Different table schema in logical replication crashes]<br />
** fixed by commit e6242c18a5bb08788e6c4cc773952fc8e2a6291a<br />
<br />
== Important Dates ==<br />
<br />
Current schedule:<br />
* feature freeze: April 7th<br />
* beta1: wrap May 15th, announce May 18th<br />
<br />
References:<br />
* [https://wiki.postgresql.org/wiki/PgCon_2016_Developer_Meeting#9:55_-_10:05_.09Next_Release_Schedule_.09All original schedule]<br />
* [https://www.postgresql.org/message-id/CA%2BTgmoZNLxizOkPy4WKdxwKo40Hz96v5jZ%3D07aLe93JW2dZmRA%40mail.gmail.com feature freeze moved]</div>Simonhttps://wiki.postgresql.org/index.php?title=PostgreSQL_10_Open_Items&diff=29908PostgreSQL 10 Open Items2017-04-18T09:46:41Z<p>Simon: /* Partitioning */</p>
<hr />
<div>== Open Issues ==<br />
<br />
=== Partitioning ===<br />
<br />
* pg_dump and partitioned tables<br />
** {{messageLink|20170409235057.GA2842536@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/7682253a-6f79-6a92-00aa-267c4c412870%40lab.ntt.co.jp pg_dump should not emit ALTER TABLE ONLY for a partitioned table in case of attribute changes and inheritable constraints]<br />
*** patch exists<br />
** [https://www.postgresql.org/message-id/20170217133251.GK9812%40tamriel.snowman.net pg_dump TAP tests around partitioning]<br />
** original commit: {{PgCommitURL|f0e4475}} (principal author: Amit Langote; owner: Stephen Frost, [http://postgr.es/m/20170413150540.GQ9812@tamriel.snowman.net previously Robert Haas])<br />
<br />
=== Logical Replication ===<br />
<br />
unless otherwise marked, original commit: {{PgCommitURL|665d1fa}} (principal author: Petr Jelinek; owner: Peter Eisentraut)<br />
<br />
* [https://www.postgresql.org/message-id/51f65289-54f8-2256-d107-937d662d69f1%402ndquadrant.com snapshot builder has bugs]<br />
** owner: Andres Freund {{messageLink|20170413045812.GA2917375@tornado.leadboat.com|notified}}<br />
** some issues go back to 9.4; some are new in v10<br />
** patches for individual issues exist<br />
<br />
* [https://www.postgresql.org/message-id/CAD21AoDCnyRJDUY%3DESVVe68AukvOP2dFomTeBFpAd1TiFbjsGg%40mail.gmail.com Interval for launching the table sync worker]<br />
** original commit: {{PgCommitURL|7c4f524}} (principal author: Petr Jelinek; owner: Peter Eisentraut {{messageLink|20170416060841.GH2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwGhhJyNDEb+GDbJ2iHQvyOqcdgqoH9wqvLt7VAGAnE3WA@mail.gmail.com tablesync patch broke the assumption that logical rep depends on?]<br />
** original commit: {{PgCommitURL|7c4f524}} (principal author: Petr Jelinek; owner: Peter Eisentraut {{messageLink|20170413045605.GD2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEsttg9P9LOOavoc9d6VB1zVmYgfBk=Ljsk-UL9cEf-eA@mail.gmail.com logical replication and PANIC during shutdown checkpoint in publisher]<br />
** {{messageLink|20170416061258.GI2870454@tornado.leadboat.com|notified}}<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwFDWh_Qr-q_GEMpD+qH=vYPMdVqw=ZOSY3kX_Pna9R9SA@mail.gmail.com some review comments on logical rep code]<br />
** {{messageLink|20170416061449.GJ2870454@tornado.leadboat.com|notified}}<br />
<br />
=== SCRAM-SHA-256 Authentication ===<br />
<br />
unless otherwise marked, original commit: {{PgCommitURL|818fd4a}} (principal author: Michael Paquier; owner: Heikki Linnakangas)<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1wfBgFPbfAMYZQE78p=VhZX7nN86aWkp0QcCp=+KxZ=bg@mail.gmail.com \password and PQencryptPassword]<br />
** {{messageLink|20170410035323.GA2846583@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/CAB7nPqSbsCBCxy8-DtwzRxYgTnbGUtY4uFEkLQhG%3DR%3Duo%3Dg8Fw%40mail.gmail.com patch exists]<br />
<br />
* {{messageLink|b081887e-1712-3aa4-7dbe-e012333d50e4@iki.fi|pg_hba.conf syntax}}<br />
** {{messageLink|20170412063327.GA2894486@tornado.leadboat.com|notified}}<br />
** [https://www.postgresql.org/message-id/CAB7nPqTo6_mk-qNfNMvr96pLi13PrxyR-UJXVP3xxdSkynjVnA%40mail.gmail.com proposal of patch exists]<br />
<br />
=== Other ===<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com Improve the docs and comments for quorum-based sync replication]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao {{messageLink|20170405064544.GA2702716@tornado.leadboat.com|notified}})<br />
** There will be still many source comments and documentations that we7c030783a5bd07cadffc2a1018bc33119a4c7505 need to update, for example, in high-availability.sgml. We need to check and update them throughly.<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com synchronous_standby_names shows unused priority values]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao {{messageLink|20170405064544.GA2702716@tornado.leadboat.com|notified}})<br />
** The priority value is assigned to each standby listed in s_s_names even in quorum commit though those priority values are not used at all. Users can see those priority values in pg_stat_replication. Isn't this confusing? If yes, it might be better to always assign 1 as the priority, for example.<br />
<br />
* [https://postgr.es/m/CAGPqQf3joLrjmR2FmQzYURb-_TxhW78tXhgYm+C66wXNjWH9ww@mail.gmail.com Query fails when SRFs are part of FROM clause]<br />
** original commit: {{PgCommitURL|69f4b9c}} (principal author: Tom Lane; owner: Andres Freund {{messageLink|20170405064755.GA2702846@tornado.leadboat.com|notified}})<br />
** owner [https://www.postgresql.org/message-id/20170412225855.oklyfkbwj2dmbrpu@alap3.anarazel.de proposes] classifying this as a non-bug<br />
<br />
* [https://www.postgresql.org/message-id/7064.1492022469@sss.pgh.pa.us Inadequate parallel-safety check for SubPlans]<br />
** original commit: {{PgCommitURL|5e6d8d2}} (principal author: Amit Kapila; owner: Robert Haas {{messageLink|20170416061825.GK2870454@tornado.leadboat.com|notified}})<br />
<br />
* [https://www.postgresql.org/message-id/CAKOSWN=hUQWwyCJS8a3gTTUkvMkeg2iwSCCs=df0OYxJ_6H0kA@mail.gmail.com Removing ADD GENERATED for identity columns]<br />
** original commit: {{PgCommitURL|3217327}} (principal author: Peter Eisentraut; owner: Peter Eisentraut {{messageLink|20170414055644.GF2870454@tornado.leadboat.com|notified}})<br />
** Patch exists.<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1zMLnH_i1-PVQ-biZzvNx7VcuatriquEnh7HNk6K8Ss3Q@mail.gmail.com PANIC in pg_commit_ts slru after crashes, 2PC restore code at fault]<br />
** Patch(es) exist(s).<br />
<br />
== Design Decisions to Recheck Mid-Beta ==<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com Which synchronous replication method, priority or quorum, should be chosen when neither FIRST nor ANY is specified in synchronous_standby_names?]<br />
** original commit: {{PgCommitURL|3901fd7}} (principal author: Masahiko Sawada; owner: Fujii Masao)<br />
** Right now, a priority-based sync replication is chosen for keeping backward compatibility. However some hackers argued to change this decision so that a quorum commit is chosen because they think that most users prefer to a quorum.<br />
<br />
== Older Bugs ==<br />
<br />
* [https://www.postgresql.org/message-id/c2c7191b-5ca0-b37a-9e9d-4df15ffb554b%40lab.ntt.co.jp Oddity in EXPLAIN for foreign/custom join pushdown plans]<br />
** postgres_fdw produces incorrect aliases for joining relations shown in EXPLAIN for some join pushdown queries<br />
** [https://www.postgresql.org/message-id/b4b04e83-5eb4-7dd6-2951-32acadea4e7b@lab.ntt.co.jp low-priority issue; let's leave this for v10]<br />
** regression in v9.6, nothing changed from v9.6 beta to v10 beta<br />
<br />
* [https://www.postgresql.org/message-id/20170117.193645.160386781.horiguchi.kyotaro@lab.ntt.co.jp standby can fail to reconnect even with replication slots]<br />
** patch exists<br />
** present in 9.4 and later<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1wXkKUKBHWBYzET3D9OViyDg8DcVL-wKEqk2uyoMrzr_A@mail.gmail.com Crash recovery can leave everlasting empty pages]<br />
** The pages are actually empty but FSM says that they have no room for new data and ALL_FROZEN. ALL_FROZEN prevents autovacuum from fixing FSM.<br />
** regression in v9.6, nothing new in v10<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqR82_57C8O1+z-bUChhHpdjMec_omLfKwYdjAFjjcrBWg@mail.gmail.com Switch use of "encrypted" to "hash" for passwords in documentation]<br />
<br />
== Non-bugs ==<br />
<br />
* [https://www.postgresql.org/message-id/20170321135742.GB23103@e733.localdomain Errors with valgrind]<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqSP+MHqg=dKoNOZu75j2mGAEW622GYz45Mv2V_XOao-9g@mail.gmail.com CREATE/ALTER ROLE PASSWORD ('value' USING 'method')], extension of this DDL to enforce type of password without changing password_encryption.<br />
** Not Open-Item worthy, let's do this in v11 if it still feels worthwhile then.<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoYrA8SK=KjkVbvKt8hG3Cqsjr-Hnmwa3WXqbziRuwKBLg@mail.gmail.com Declarative partitioning vs. information_schema, etc.]<br />
** include partitions in information_schema.tables, pg_tables, and psql's \d listing, etc?<br />
** firm support for status quo, lack of firm support for alternatives<br />
<br />
* [https://www.postgresql.org/message-id/071086d7-6462-f0e7-54ca-b633062e317c%40lab.ntt.co.jp Document that foreign table's partition constraint is not enforced locally]<br />
** Patch exists<br />
** documentation is correct, but this would add emphasis to a point<br />
<br />
== Resolved Issues ==<br />
<br />
=== resolved before 10beta1 ===<br />
<br />
* [http://postgr.es/m/CAKJS1f-BmGo410bh5RSPZUvOO0LhmHL2NYmdrC_Jm8pk_FfyCA@mail.gmail.com Allowing extended stats on foreign and partitioned tables]<br />
** original commit: {{PgCommitURL|7b504eb}} (principal author: Tomas Vondra; owner: Alvaro Herrera {{messageLink|20170414055310.GE2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit 8c5cdb7f4f6e1d6a6104cb58ce4f23453891651b<br />
<br />
* [https://www.postgresql.org/message-id/12642.1491513976@sss.pgh.pa.us Partitioning optimization broke ConvertRowtypeExpr]<br />
** Fixed by commit 3f902354b08ac788600f0ae54fcbfc1d4e3ea765.<br />
<br />
* Integer overflow in enlargeStringInfo<br />
** {{messageLink|1706e85e-60d2-494e-8a64-9af1e1b2186e@manitou-mail.org|thinko in overflow logic}}<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU=1yURZZONoeLXhPsp2AkqR5MNAXiCiTVnrt2LGd6qD1b8w@mail.gmail.com pg_upgrade is broken because of renaming of pg_resetxlog to pg_resetwal]<br />
** Fixed by commit b877761.<br />
<br />
* [https://www.postgresql.org/message-id/flat/1803D792815FC24D871C00D17AE95905AC5FAE@g01jpexmbkw24#1803D792815FC24D871C00D17AE95905AC5FAE@g01jpexmbkw24 PQsendQuery fails when it should not if target_session_attrs is set to read-write]<br />
** Fixed by commit 1de0a4e.<br />
<br />
* [https://www.postgresql.org/message-id/CAM2+6=U72y2_Jni2p+meqTvvk=r_=Wd4orvzz5YL0b3WFx+gcA@mail.gmail.com Substantial bloat in postgres_fdw regression test runtime]<br />
** Fixed by commit aa7f593b1ffa9717bd5570174944c06c482d1c1f.<br />
<br />
* [https://www.postgresql.org/message-id/9f9dc7ae-14f0-4a25-5485-964d9bfc19bd%40lab.ntt.co.jp Error detail shown when partition not found]<br />
** Fixed by commit 5a73e17317e91912b2755f7960d5bf31d374cf31.<br />
<br />
* [https://www.postgresql.org/message-id/CAD21AoD%2BVO93zZ4ZQtZQb-jZ_wMko3OgGdx1MXO4T%2B8q_zHDDA%40mail.gmail.com DROP SUBSCRIPTION and ROLLBACK]<br />
** Fixed by commit 272adf4f9cd67df323ae57ff3dee238b649d3b73.<br />
<br />
* [https://www.postgresql.org/message-id/6c420206-45d7-3f56-8325-4bd7b76483ba%40lab.ntt.co.jp Dropping partitioned tables without CASCADE]<br />
** Fixed by commit 8b4d582d279d784616c228be58af1e39aa430402.<br />
<br />
* [https://www.postgresql.org/message-id/CAEepm=15e9L695yVCO-_OkBVbsPupyXqzYWzzDmj-bdJ6o2+Pw@mail.gmail.com pg_recvlogical.c doesn't build with --disable-integer-datetimes]<br />
** Fixed by commit b6aa17e0ae367afdcea07118e016111af4fa6bc3 and c29aff959dc64f7321062e7f33d8c6ec23db53d3<br />
<br />
* [https://www.postgresql.org/message-id/20170207201932.GH9812@tamriel.snowman.net pg_dump and PUBLICATIONS]<br />
** Fixed by commit 05227e0c345247c9e9ff91445850f414e2b0bb70<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoYpwN0AkaCqhAEVuxtHqGkz=yJzgQxbvucEQMPE-tLkEA@mail.gmail.com simplehash performance regressions]<br />
** Fixed by commit d4c62a6b623d6eef88218158e9fa3cf974c6c7e5<br />
<br />
* [https://www.postgresql.org/message-id/CAGz5QCLJJ1NhVQjQSreF-UoQyVoN6Krg54gZrr5-Ha5PqP2ksw@mail.gmail.com exposing wait events for non-backends]<br />
** Fixed by commit fc70a4b0df38bda6a13941f1581f25fbb643c7f3<br />
<br />
* [https://www.postgresql.org/message-id/b3d37313-acf0-d8fd-783f-c32f7c0667e6@lab.ntt.co.jp Partitioning vs INSERT ON CONFLICT]<br />
** Fixed by commit 8355a011a0124bdf7ccbada206a967d427039553<br />
** [https://www.postgresql.org/message-id/ff3dc21d-7204-c09c-50ac-cf11a8c45c81%40lab.ntt.co.jp Crash when leaf partition has an index]<br />
*** Reverted by commit f05230752d53c4aa74cffa9b699983bbb6bcb118<br />
<br />
* [https://www.postgresql.org/message-id/c72cbc58-9866-0622-86c1-f01cc4064e73%40lab.ntt.co.jp Bug in list partitioning tuple-routing]<br />
** Fixed by commit 7ecb7143589f38d679bb566311dfa9be1a650fd5<br />
<br />
* [https://www.postgresql.org/message-id/CAMkU%3D1w-9Qe%3DFf1o6bSaXpNO9wqpo7_9GL8_CVhw4BoVVHasqg%40mail.gmail.com segfault in hot_standby for hash indexes]<br />
** Fixed by commit c4c51541e22bf7f2da8ecf6986271687b0d7a90e<br />
<br />
* [https://www.postgresql.org/message-id/CAEepm%3D23%3DvGz%3DCgVurPxBGV6SeOJ7YxSaAJKr_aH%2Bf2cV4zrow%40mail.gmail.com attaching to DSA area that was already destroyed]<br />
** Fixed by commit fddf45b38097d14301d249fbeebca32e40233bd2<br />
<br />
* postgres_fdw, partitioned tables and IMPORT SCHEMA<br />
** [https://postgr.es/m/20170309141531.GD9812@tamriel.snowman.net postgres_fdw IMPORT SCHEMA and partitioned tables]<br />
** Fixed by commit f49bcd4ef3e9a75de210357a4d9bbe3e004db956<br />
<br />
* [https://www.postgresql.org/message-id/2b0d42f2-3a53-763b-c9c2-47139e4b1c2e@lab.ntt.co.jp Partitioning tables create a file on-disk, which remains empty and has no purpose. Those relations don't need any storage]<br />
** Fixed by commit c94e6942cefe7d20c5feed856e27f672734b1e2b<br />
<br />
* [https://www.postgresql.org/message-id/a6f99cdb-21e7-1d65-1381-91f2cfa156e2%40lab.ntt.co.jp Documentation improvements for partitioning]<br />
** Fixed by commit 8f18a880a5f138d4da94173d15514142331f8de6<br />
<br />
* [https://www.postgresql.org/message-id/6ecd6f17-0dcf-1de7-ded8-0de7db1ddc88%402ndquadrant.com crashes due to setting max_parallel_workers=0]<br />
** Fixed by commit 25dc142a49c60c3107480c487cd8444dc83f9bdf<br />
<br />
* [https://www.postgresql.org/message-id/CAE9k0P%3DV2LhtyeMXd295fhisp%3DNWUhRVJ9EZQCDowWiY9rSohQ%40mail.gmail.com Failed assertion in _hash_kill_items/MarkBufferDirtyHint]<br />
** Fixed by commit 93cd7684ee2bba227fa371daa81b88f25456dcb2<br />
<br />
* [https://www.postgresql.org/message-id/CAE9k0PnmPDXfvf8HDObme7q_Ewc4E26ukHXUBPySoOs0ObqqaQ%40mail.gmail.com inconsistent page found on STANDBY server]<br />
** Fixed by commit 75a1cbdc3cfca1e815da6dfa5d7e96d82a6b0725<br />
<br />
* [https://www.postgresql.org/message-id/CAA4eK1%2BVE_TDRLWpyeOf%2B7%2B6if68kgPNwO4guKo060rm_t3O5w%40mail.gmail.com page inspect to show appropriate type of page]<br />
** Fixed by commit 633e15ea0f1bf2e1d70441fe9da8781befebd6e9<br />
<br />
* [https://www.postgresql.org/message-id/20170321.192419.96677899.horiguchi.kyotaro%40lab.ntt.co.jp Logical replication between differrent encodings fails]<br />
** Fixed by commit 6f1b9aaae35bfabe2654a8e44ce226c91e7d8bd9<br />
<br />
* [https://www.postgresql.org/message-id/20170331185540.zmsue4ndvqtnayqw@alap3.anarazel.de improve test coverage of parallel explain analyze]<br />
** Fixed by commit b2ff37d43cc81348fd8e9d9c5fcc9dfadf790763<br />
<br />
* [https://www.postgresql.org/message-id/20170331184603.qcp7t4md5bzxbx32@alap3.anarazel.de improve test coverage of parallel bitmap scan]<br />
** Fixed by commit 5a5931533edd2b70bde1f069609f58998dd26fef<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqSByyEmAVLtEf1KxTRh=PWNKiWKEKQR=e1yGehz=wbymQ@mail.gmail.com SASLprep]<br />
** Fixed by commit 60f11b87a2349985230c08616fa8a34ffde934c8<br />
<br />
* [https://www.postgresql.org/message-id/CA+TgmoZfPOu62bR71bahf90ivOUxXpYOh0RqDiue0+dVVPNrWg@mail.gmail.com dsa.c needs a visit from the message style police]<br />
** Fixed by commit 5c4488478b182983f290a61fc8cf2ec83548622b<br />
<br />
* [https://www.postgresql.org/message-id/20170316085322.crffknkgee5s6air@alap3.anarazel.de Logical replication + EXEC_BACKEND + ASLR is broken]<br />
** Fixed by commit 0ef26bb394abedb2745bd838c26ecb3131682bda<br />
<br />
* [https://www.postgresql.org/message-id/b3a17254-6849-e542-2353-bde4e880b6a4%40lab.ntt.co.jp Reconsider the error detail shown when ExecConstraints() fails after tuple-routing]<br />
** original commit: {{PgCommitURL|f1b4c77}} (principal author: Amit Langote; owner: Robert Haas {{messageLink|20170409235426.GB2842536@tornado.leadboat.com|notified}})<br />
** Fixed by commit c0a8ae7be392aa09dd7e148ff662013e8e148893<br />
<br />
* [https://www.postgresql.org/message-id/13592.1490851519@sss.pgh.pa.us Broken locking design for accesses to pg_subscription_rel]<br />
** Fixed by commit 521fd4795e3ec3d0b263b62e5eb58e1557be9c86<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwHEs8jT_6DjYHYmsD2v-rOudstiBB_mtmZbR9Z2QfhCwQ@mail.gmail.com Both launcher and worker don't handle SIGHUP signal and cannot reload the configuration]<br />
** Fixed by commit 26ad194cb0a6b955e155d44fb52a74212ce85759<br />
<br />
* pg_dump and data durability, with addition of --no-sync option<br />
** original commit: {{PgCommitURL|96a7128}} (principal author: Michael Paquier; owner: Andrew Dunstan {{messageLink|20170405064941.GB2702846@tornado.leadboat.com|notified}})<br />
** [https://www.postgresql.org/message-id/CAB7nPqTUOpF792rDOnBkswZ%3DZgHwxdB01OQU2tAF1KU4iUuLrw%40mail.gmail.com Regression tests should use --no-sync as much as possible]<br />
** Fixed by commit 3820c63da8d0e59e2bd4476e91968f03be5dd041<br />
<br />
* [http://postgr.es/m/CAMkU=1zrQaPwBN+NcBd3pWCb=vWaiL=mmWfJjDJjh-a7eVr-Og@mail.gmail.com pgbench --progress-timestamp no longer works correctly]<br />
** original commit: {{PgCommitURL|1d63f7d}} (principal author: Tom Lane; owner: Tom Lane {{messageLink|20170411042352.GA2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit feffa0e0795a5a99324890a6dd548ba162ec104c<br />
<br />
* [https://www.postgresql.org/message-id/29588799-a8ce-b0a2-3dae-f39ff6d35922%40lab.ntt.co.jp Dropping a partition may cause deadlock]<br />
** {{PgCommitURL|f0e4475}} (principal author: Amit Langote; owner: Robert Haas {{messageLink|20170409235729.GA2842636@tornado.leadboat.com|notified}})<br />
** Fixed by commit 258cef12540fa1cb244881a0f019cefd698c809e<br />
<br />
* [https://www.postgresql.org/message-id/CAFiTN-suK%2BMod_noGy8LpmkSzgvzwhGfNZ0K6vf_gX6rkw2jxA%40mail.gmail.com Problem in Parallel Bitmap Heap Scan]<br />
** original commit: {{PgCommitURL|f35742c}} (principal author: Dilip Kumar; owner: Robert Haas {{messageLink|20170410031734.GB2845039@tornado.leadboat.com|notified}})<br />
** Fixed by commit 4c3b59abf4c476843bca23de7fb66d647627f30e<br />
<br />
* [https://www.postgresql.org/message-id/flat/24a143e0-c9bb-8f4f-1472-9d6faae4c92e%402ndquadrant.com#24a143e0-c9bb-8f4f-1472-9d6faae4c92e@2ndquadrant.com strange parallel query behavior after OOM crashes]<br />
** original commit: {{PgCommitURL|b460f5d}} (principal author: Julien Rouhaud; owner: Robert Haas {{messageLink|20170410031836.GC2845004@tornado.leadboat.com|notified}})<br />
** Fixed by commit 8ff518699f19dd0a5076f5090bac8400b8233f7f<br />
** See also commit 6599c9ac3340b6cd3d86a0a7f866b80a009fecab which attempts to catch other problems of this sort<br />
<br />
* [https://www.postgresql.org/message-id/52d9c443-ec78-5c8a-7a77-0f34aad12b82%40lab.ntt.co.jp RENAME RULE doesn't work with partitioned tables]<br />
** Fixed by commit 02af7857e5694b13c21401d1982ac21d31e27dee<br />
<br />
* [https://postgr.es/m/20170309144718.GE9812@tamriel.snowman.net sepgsql and partitioned tables]<br />
** {{messageLink|CA+TgmobTJnasxpRkJxGcHaz85LyqdXBKZRxP6pCCS-UkhcHUBQ@mail.gmail.com|feature request, not bug}}<br />
** implemented in {{PgCommitURL|25542d77dd549940468d1a932809feb9959d717d}}<br />
<br />
* [https://www.postgresql.org/message-id/b7578aaf-726e-61a1-0011-943e92ad08ee@2ndquadrant.com error handling in RegisterBackgroundWorker]<br />
** withdrawn<br />
<br />
* [https://www.postgresql.org/message-id/CA%2BTgmobYfFRtcXv1aoXD18%2BRkPU%3Duw39Ajqm1HWyh7V_8QYZ%3DA%40mail.gmail.com pgstathashindex() to handle unused pages in hash index]<br />
** original commit: {{PgCommitURL|e759854}} (principal author: Ashutosh Sharma; owner: Robert Haas {{messageLink|20170412062802.GB2870454@tornado.leadboat.com|notified}})<br />
** Fixed by commit 9cc27566c1a8d659c15b9eea2413dcc07a7a42c9<br />
<br />
* [https://www.postgresql.org/message-id/30972.1491937807@sss.pgh.pa.us Mishandling of non-parallel-safe initplans/subplans in a parallelized query]<br />
** original commit: {{PgCommitURL|5e6d8d2bb}}<br />
** Fixed by commit 16ebab68862bb5d3595b8c8df083f650d9d7cd20<br />
<br />
* [https://www.postgresql.org/message-id/20170217020415.GI9812@tamriel.snowman.net pg_dump and SUBSCRIPTIONS]<br />
** fixed by commits c31671f9b5f6eee9b6726baad2db1795c94839d1, a9254e675bde7dc2d976d207450c559d914c0dd6<br />
<br />
* [https://www.postgresql.org/message-id/CAB7nPqS-aFg0iM3AQOJwKDv_0WkAedRjs1W2X8EixSz+sKBXCQ@mail.gmail.com Letting the client choose the protocol to use during a SASL exchange]<br />
** fixed by commit 4f3b87ab780b95c2cc8a591259baefaff4852037<br />
<br />
* [https://www.postgresql.org/message-id/E1cwSWo-0001hG-Rq@gemulon.postgresql.org Add overview of SCRAM to the FE/BE protocol documentation]. Mention that SASLprep is used on all passwords, UTF-8 or not.<br />
** fixed by commit 4f3b87ab780b95c2cc8a591259baefaff4852037<br />
<br />
* [https://www.postgresql.org/message-id/flat/CA%2BTgmoarXTa3F5ybQ98DtUDKVMUpg5JoDykPXUaEr9z_8OyYWQ%40mail.gmail.com add synchronous_commit control for logical apply]<br />
** fixed by commit 887227a1cc861d87ca0f175cf8bd1447554090eb<br />
<br />
* [https://www.postgresql.org/message-id/CAHGQGwGA2tz-iQ90ofgX0Q1TuZLyr+GCX+T1=PE+ogUKVSRpZA@mail.gmail.com logical replication worker and statistics]<br />
** fixed by commit 139eb9673cb84c76f493af7e68301ae204199746<br />
<br />
* [https://www.postgresql.org/message-id/flat/alpine.DEB.2.20.1702161846410.29507@lancre/ web site CSS issues]<br />
** fixed in pgweb<br />
<br />
* [https://www.postgresql.org/message-id/flat/92ea7dd8-70b9-16c6-9327-e67e56209f33%40lab.ntt.co.jp publications vs inheritance]<br />
** fixed by commit 419a23b478ae760b797188341ddce5b41322684b<br />
<br />
* [https://www.postgresql.org/message-id/CAKJS1f9Kk0NF6Fg7TA%3DJUXsjpS9kX6NVu27pb5QDCpOYAvb-Og%40mail.gmail.com extended stats not friendly towards ANALYZE with subset of columns]<br />
** original commit: {{PgCommitURL|7b504eb}}<br />
** fixed by commit bf2a691e02d7766f185d9d8e0f092222a5c0a129<br />
<br />
* [https://www.postgresql.org/message-id/20170316085322.crffknkgee5s6air@alap3.anarazel.de Parallel Query + EXEC_BACKEND + ASLR is broken]<br />
** Problem in 9.6 and later<br />
** Fixed by commits 0ef26bb39 + 32470825d + a74740fbd<br />
<br />
* [https://www.postgresql.org/message-id/CAHE3wgj+2YpFyrg7SAV=-oqTpP2AggT-nRKbR3nkDAt0TA2V6A@mail.gmail.com Different table schema in logical replication crashes]<br />
** fixed by commit e6242c18a5bb08788e6c4cc773952fc8e2a6291a<br />
<br />
== Important Dates ==<br />
<br />
Current schedule:<br />
* feature freeze: April 7th<br />
* beta1: wrap May 15th, announce May 18th<br />
<br />
References:<br />
* [https://wiki.postgresql.org/wiki/PgCon_2016_Developer_Meeting#9:55_-_10:05_.09Next_Release_Schedule_.09All original schedule]<br />
* [https://www.postgresql.org/message-id/CA%2BTgmoZNLxizOkPy4WKdxwKo40Hz96v5jZ%3D07aLe93JW2dZmRA%40mail.gmail.com feature freeze moved]</div>Simonhttps://wiki.postgresql.org/index.php?title=Audit_trigger_91plus&diff=29403Audit trigger 91plus2017-02-14T13:13:42Z<p>Simon: /* The trigger */ remove source code to allow people to use latest version from repo</p>
<hr />
<div>{{SnippetInfo|Generic audit trigger function (enhanced)|version=9.1+|lang=PL/pgSQL|category=Library|depends=hstore}}<br />
<br />
Here is an example of a generic trigger function used for recording changes to tables into an audit log table. It records quite a bit more detail than the older [[Audit trigger]] and does so in a more structured manner.<br />
<br />
Row values are recorded as <tt>hstore</tt> fields rather than as flat text. This allows much more sophisticated querying against the audit history and allows the audit system to record only changed fields for updates.<br />
<br />
Auditing can be done coarsely at a statement level or finely at a row level. Control is per-audited-table.<br />
<br />
The information recorded is:<br />
<br />
* Change type - '''I'''nsert, '''U'''pdate, '''D'''elete or '''T'''runcate.<br />
* client IP/port if not a UNIX socket<br />
* Session user name ("real" user name, not effective username from <tt>SET ROLE</tt> or <tt>SECURITY DEFINER</tt>)<br />
* transaction, statement, and wall clock timestamps<br />
* Top-level statement that caused the change<br />
* The row value before the change (or after in the case of <tt>INSERT</tt>)<br />
* In the case of <tt>UPDATE</tt>, the new values of any changed columns. The new value can be reconstructed using <tt>row_value || changed_fields</tt> <br />
* The transaction ID of the tx that made the change<br />
* The <tt>application_name</tt><br />
* Target schema and table, by OID and name.<br />
<br />
This trigger ''can not'' track:<br />
<br />
* <tt>SELECT</tt>s<br />
* DDL like <tt>ALTER TABLE</tt><br />
* Changes to system catalogs<br />
<br />
Changes by the table owner and superusers are tracked, but can be trivially tampered with.<br />
<br />
If you want this audit log to be trustworthy, your app should run with a role that has at most <tt>USAGE</tt> to the <tt>audit</tt> schema and <tt>SELECT</tt> rights to <tt>audit.logged_actions</tt>. Most importantly, ''your app must not connect with a superuser role and must not own the tables it uses''. Create your app's schema with a different user to the one your app runs as, and <tt>GRANT</tt> your app the minimum rights it needs.<br />
<br />
=== The trigger ===<br />
<br />
You can obtain the latest version of the audit trigger [https://github.com/2ndQuadrant/audit-trigger from GitHub].<br />
<br />
=== Basic usage ===<br />
<br />
<source lang='sql'><br />
SELECT audit.audit_table('target_table_name');<br />
</source><br />
<br />
The table will now have audit events recorded at a row level for every insert/update/delete, and at a statement level for truncate. Query text will always be logged.<br />
<br />
To later cancel the auditing:<br />
<br />
<source lang='sql'><br />
DROP TRIGGER audit_trigger_row on target_table_name;<br />
DROP TRIGGER audit_trigger_stm on target_table_name;<br />
</source><br />
<br />
If you want finer control use <tt>audit.audit_table(target_table regclass, audit_rows boolean, audit_query_text boolean, excluded_cols text[])</tt> or <tt>CREATE TRIGGER</tt> the audit trigger yourself. For example:<br />
<br />
<source lang='sql'><br />
SELECT audit.audit_table('target_table_name', 'true', 'false', '{version_col, changed_by, changed_timestamp}'::text[]);<br />
</source><br />
<br />
... would create audit triggers on <tt>target_table_name</tt> that record each row change but omit the query text (the 'false' argument) and omit the <tt>version_col</tt>, <tt>changed_by</tt> and <tt>changed_timestamp</tt> columns from logged rows. An <tt>UPDATE</tt> that only changes ignored columns won't result in an audit record being created at all.<br />
<br />
=== Ignoring some changes ===<br />
<br />
In PostgreSQL 9.0 and above, you can add an optional <tt>WHEN</tt> clause to invocations of the trigger. This is great for auditing, as it lets you exclude some changes without even paying the cost of invoking the trigger.<br />
<br />
A common case is to ignore a frequently updated field that isn't worth auditing. Unfortunately, you have to test for a change in all the fields you ARE interested in, there isn't an easy way to say "if anything except fields <x> and <y> have changed between OLD and NEW":<br />
<br />
<source lang='sql'><br />
CREATE TRIGGER tablename_audit_insert_delete<br />
AFTER INSERT OR DELETE ON sometable FOR EACH ROW<br />
EXECUTE PROCEDURE audit.if_modified_func();<br />
<br />
CREATE TRIGGER tablename_audit_update_selective<br />
AFTER UPDATE ON sometable FOR EACH ROW<br />
WHEN ( (OLD.col1, OLD.col2, OLD.col3) IS DISTINCT FROM (NEW.col1, NEW.col2, NEW.col3) )<br />
EXECUTE PROCEDURE audit.if_modified_func();<br />
</source><br />
<br />
... but of course, you can do a lot more. You'll often need to separate your <tt>INSERT</tt>, <tt>DELETE</tt> and <tt>UPDATE</tt> trigger definitions rather than doing them all in one trigger definition, though.<br />
<br />
Note the use of <tt>IS DISTINCT FROM</tt> rather than <tt>=</tt>. Think about the effect of <tt>NULL</tt>.<br />
<br />
=== Time zone concerns ===<br />
<br />
<tt>TIMESTAMP WITH TIME ZONE</tt> fields are always stored in UTC and are displayed in local time by default. You can control display using <tt>AT TIME ZONE</tt> in queries, or with <tt>SET timezone = 'UTC'</tt> as a per-session GUC. See [http://www.postgresql.org/docs/9.1/static/datatype-datetime.html#DATATYPE-TIMEZONES the Pg docs].<br />
<br />
''Loosely based on [[Audit trigger]] by bricklen, completely rewritten by ringerc for more audit detail, hstore logging, and more.''<br />
<br />
[[Category:PL/pgSQL]]</div>Simonhttps://wiki.postgresql.org/index.php?title=FOSDEM/PGDay_2017_Developer_Meeting&diff=29217FOSDEM/PGDay 2017 Developer Meeting2017-01-27T12:32:59Z<p>Simon: /* Agenda Items */</p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for Thursday 2nd February, 2017 at the Brussels Marriott Hotel, prior to FOSDEM/PGDay 2017. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 9.6 and 10 release cycles. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Review the progress of the 10.0 schedule, and formulate plans to address any issues<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
<br />
== Time & Location ==<br />
<br />
The meeting will be:<br />
<br />
* 9:00AM to 5:00PM<br />
* Brussels Marriott Hotel<br />
<br />
Coffee, tea and snacks will be served starting at 8:45am. Lunch will be provided.<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname) and will be attending:<br />
<br />
* Oleg Bartunov<br />
* Andrew Dunstan<br />
* Stephen Frost<br />
* Etsuro Fujita<br />
* Magnus Hagander<br />
* Petr Jelinek<br />
* Alexander Korotkov<br />
* Noah Misch<br />
* Bruce Momjian<br />
* Simon Riggs<br />
* Dave Page<br />
* Masahiko Sawada<br />
* Tomas Vondra<br />
<br />
The following people have sent their apologies:<br />
<br />
* Joe Conway<br />
* Dimitri Fontaine<br />
* Peter Geoghegan<br />
* Kyotaro Horiguchi<br />
* Shigeru Hanada<br />
* Amit Kapila<br />
* Tom Lane<br />
* Thomas Munro<br />
* Michael Paquier<br />
* Dean Rasheed<br />
* Craig Ringer<br />
* David Rowley<br />
* Teodor Sigaev<br />
* Heikki Linnakangas<br />
<br />
==Agenda Items==<br />
<br />
Please add agenda items here!<br />
<br />
* Sharding update<br />
<br />
* Setting up the Release Management Team for Postgres 10.0 (Simon)<br />
<br />
* Supporting management roles (aka: removing superuser checks) (Dave)<br />
<br />
* Adding DBA management roles (was Superowners) (Simon)<br />
<br />
* SQL/JSON in SQL-2016 Standard and our roadmap (Oleg)<br />
<br />
* Is it worth having loads of meetings if not everybody attends? (Simon)<br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:10<br />
|Welcome and introductions<br />
|Dave<br />
<br />
|- <br />
|09:10 - 09:30<br />
|10.0 Release Schedule<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 11:00<br />
|Coffee break<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:30 - 13:30<br />
|Lunch<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|15:00 - 15:30<br />
|Tea break<br />
|All<br />
<br />
|- <br />
|16:30 - 17:00<br />
|Any other business<br />
|Dave<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|17:00<br />
|Finish<br />
|<br />
|}<br />
<br />
== Minutes ==</div>Simonhttps://wiki.postgresql.org/index.php?title=FOSDEM/PGDay_2017_Developer_Meeting&diff=29215FOSDEM/PGDay 2017 Developer Meeting2017-01-27T11:16:12Z<p>Simon: /* Agenda Items */</p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for Thursday 2nd February, 2017 at the Brussels Marriott Hotel, prior to FOSDEM/PGDay 2017. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 9.6 and 10 release cycles. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Review the progress of the 10.0 schedule, and formulate plans to address any issues<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
<br />
== Time & Location ==<br />
<br />
The meeting will be:<br />
<br />
* 9:00AM to 5:00PM<br />
* Brussels Marriott Hotel<br />
<br />
Coffee, tea and snacks will be served starting at 8:45am. Lunch will be provided.<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname) and will be attending:<br />
<br />
* Oleg Bartunov<br />
* Andrew Dunstan<br />
* Stephen Frost<br />
* Etsuro Fujita<br />
* Magnus Hagander<br />
* Petr Jelinek<br />
* Alexander Korotkov<br />
* Noah Misch<br />
* Bruce Momjian<br />
* Simon Riggs<br />
* Dave Page<br />
* Masahiko Sawada<br />
* Tomas Vondra<br />
<br />
The following people have sent their apologies:<br />
<br />
* Joe Conway<br />
* Dimitri Fontaine<br />
* Peter Geoghegan<br />
* Kyotaro Horiguchi<br />
* Shigeru Hanada<br />
* Amit Kapila<br />
* Tom Lane<br />
* Thomas Munro<br />
* Michael Paquier<br />
* Dean Rasheed<br />
* Craig Ringer<br />
* David Rowley<br />
* Teodor Sigaev<br />
<br />
==Agenda Items==<br />
<br />
Please add agenda items here!<br />
<br />
* Sharding update<br />
<br />
* Setting up the Release Management Team for Postgres 10.0 (Simon)<br />
<br />
* Supporting management roles (aka: removing superuser checks) (Dave)<br />
<br />
* SQL/JSON in SQL-2016 Standard and our roadmap (Oleg)<br />
<br />
* Is it worth having loads of meetings if not everybody attends? (Simon)<br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:10<br />
|Welcome and introductions<br />
|Dave<br />
<br />
|- <br />
|09:10 - 09:30<br />
|10.0 Release Schedule<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 11:00<br />
|Coffee break<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:30 - 13:30<br />
|Lunch<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|15:00 - 15:30<br />
|Tea break<br />
|All<br />
<br />
|- <br />
|16:30 - 17:00<br />
|Any other business<br />
|Dave<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|17:00<br />
|Finish<br />
|<br />
|}<br />
<br />
== Minutes ==</div>Simonhttps://wiki.postgresql.org/index.php?title=Community_Guide_to_PostgreSQL_GUI_Tools&diff=29178Community Guide to PostgreSQL GUI Tools2017-01-13T12:26:40Z<p>Simon: JetBrains is not open source or free for most users, so moved down</p>
<hr />
<div>{{Languages}}<br />
<br />
== Alternate Guides ==<br />
<br />
Much of this page is somewhat out of date at this point. A more current and detailed summary is available at <br />
[http://www.postgresonline.com/journal/index.php?/archives/133-Database-Administration,-Reporting,-and-Light-application-development.html Database Administration, Reporting, and Light application development]<br />
<br />
== Open Source / Free Software ==<br />
<br />
<br />
=== pgAdmin III ===<br />
<br />
http://www.pgadmin.org/<br />
<br />
MS Windows, GNU/Linux, FreeBSD, Mac OS X, OpenBSD, Solaris<br />
<br />
Admin<br />
<br />
pgAdmin III is THE Open Source management tool for your PostgreSQL databases. Features full Unicode support, fast, multithreaded query and data editting tools and support for all PostgreSQL object types.<br />
<br />
pgAdmin III is bundled with the Windows installer, and you can use that such a client to administer a remote server on another OS. Note that binary packages for platforms like RPM don't show up in every point release, you currently have to go back to v1.8.0 to get the last full set of packages.<br />
<br />
Free Administration Centre for the PostgreSQL database. Includes a graphical administration interface, an SQL query tool, a procedural code editor and much more. pgAdmin III is designed to answer the needs of most users, from writing simple SQL queries to developing complex databases. The graphical interface supports all PostgreSQL features and makes administration easy. Available in more than 30 languages and for several operating systems. <br />
<br />
=== phpPgAdmin ===<br />
<br />
http://sourceforge.net/projects/phppgadmin<br />
<br />
browser-based, requires webserver<br />
<br />
Admin<br />
<br />
Similar to the ever-popular phpMyAdmin, enhanced for PostgreSQL, supports browsing and modification of most types of PostgreSQL database objects, plus execution of ad-hoc queries. Maintained by (who else?) the phpPgAdmin team. (JMB 11.2002).<br />
<br />
phpPgAdmin (and the required Apache and PHP packages) may be easily installed using Stack Builder if you are running a one-click-installer PostgreSQL distribution.<br />
<br />
=== TeamPostgreSQL ===<br />
<br />
http://www.teampostgresql.com<br />
<br />
browser-based, webserver included<br />
<br />
AJAX/JavaScript-powered web interface for PostgreSQL administration. Browse, maintain and create data and database objects from anywhere, in the web browser. Supports SSH for both the web interface and the database connections. Rich interface with tabbed SQL editor with auto-completion, inline row-editing widgets, click-through foreign key navigation between rows and tables, 'favorites' management for commonly used scripts, and more.<br />
<br />
Installers available for Windows, Mac and Linux, alternatively download a simple cross-platform archive that runs anywhere with simple script.<br />
<br />
=== Adminer ===<br />
<br />
http://www.adminer.org<br />
<br />
browser-based, requires webserver<br />
<br />
Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consist of a single file ready to deploy to the target server. Adminer is available for MySQL, PostgreSQL, SQLite, MS SQL and Oracle.<br />
<br />
=== Libre Office ===<br />
<br />
http://www.libreoffice.org/download/3-5-new-features-and-fixes/<br />
<br />
New native driver for PostgreSQL databases (for versions > 8.4 - support for version 8.4 will be included in LibreOffice 3.5.1). <br />
<br />
=== GNOME-DB ===<br />
<br />
http://www.gnome-db.org<br />
<br />
Linux, Unix<br />
<br />
Admin<br />
<br />
Database administration/user tool for GNOME, based on libgda/libgnomedb, which are a complete database-independent access layer for UNIX systems, with support for PostgreSQL, MySQL, Sybase, MS SQL Server, Oracle, Interbase/Firebird, MS Access files, xBase.<br />
<br />
=== TOra, an Oracle tool with some PostgreSQL support ===<br />
<br />
http://tora.sf.net/<br />
<br />
Linux & Windows<br />
<br />
Admin<br />
<br />
An Oracle database administration interface, with limited ability to browse PostgreSQL databases (tables, views, and functions only). I'm told that if you have the Oracle libraries, Tora's sophisticated function editor will work for PostgreSQL as well. Developed by Henrik Johnson as a Quest Toad clone. (JMB 11.2002)<br />
<br />
=== Kexi ===<br />
<br />
http://www.kexi-project.org/<br />
<br />
Kexi is part of the Calligra Suite and is released under the GNU General Public License (GPL) and LGPL. <br />
<br />
available for <br />
FreeBSD & Linux, Apple, Windows, (Android)<br />
<br />
=== AnySQL Maestro ===<br />
<br />
http://www.sqlmaestro.com/products/anysql/maestro/<br />
<br />
Windows<br />
<br />
AnySQL Maestro is a freeware tool for administering any database engine (PostgreSQL, SQL Server, Oracle, MySQL, MS Access, etc.), which is accessible via ODBC driver or OLE DB provider. Includes Database Designer, Visual Query Builder, BLOB Viewer/Editor, SQL Editor, Data export/import and other features.<br />
<br />
=== SQL Workbench/J ===<br />
<br />
http://www.sql-workbench.net<br />
<br />
Java (multi-platform)<br />
<br />
An OpenSource SQL GUI tool similar to Squirrel. Data can be edited directly in the result set. It has strong support for exporting and importing data between databases using its own SQL command extension. It can be used in GUI mode or as a console application. All SQL Workbench specific commands can also be run in batch mode to automate export and import task. It supports schema comparison ("diff") and copying data between databases.<br />
<br />
=== PostgreSQL PHP Generator ===<br />
<br />
http://www.sqlmaestro.com/products/postgresql/phpgenerator/<br />
<br />
Windows<br />
<br />
PostgreSQL PHP Generator is a freeware but powerful PostgreSQL GUI frontend that allows you to generate high-quality PHP scripts for the selected tables, views and queries for the further working with these objects through the web.<br />
<br />
=== WaveMaker Ajax GUI Design Tool ===<br />
<br />
http://www.wavemaker.com/<br />
<br />
Windows, Macintosh, Linux<br />
<br />
WaveMaker is an Ajax-based GUI design tool for Postgres. WaveMaker is built using itself! WaveMaker generates a standard Java WAR file based on Spring, Hibernate and Dojo. WaveMaker supports Postgres schema creation and import and includes a visual query editor.<br />
<br />
=== Druid III ===<br />
<br />
http://druid.sourceforge.net/<br />
<br />
Java (multi-platform)<br />
<br />
The druid is a tools that allows users to create databases in a graphical way. The user can add tables, fields, folders to group tables and can modify most of the database options that follow the SQL-92 standard. In addition to sql options, the user can document each table and each field with HTML information. Once the database is created, the druid can generate:<br />
<br />
* HTML documentation: for all tables, with browsing facilities<br />
* PDF documentation: for all tables<br />
* Java classes: (one class for each table) that contain tables' constants (such as fields size) plus java code added by the user<br />
* A data dictionarythat contains all tables and fields present in the database<br />
* SQL script which contains all table definitions that can be piped to the DBMS<br />
* And much more info...<br />
<br />
=== Power*Architect === <br />
<br />
http://www.sqlpower.ca/page/architect<br />
<br />
Java (multi-platform) <br />
<br />
Power*Architect is an ERD modelling tool that is based on Java and JDBC. Support for forward and reverse engineering PostgreSQL databases is supported. It's OpenSource with a GPL license.<br />
<br />
=== RISE - Model Driven Development using ERD / UML === <br />
<br />
http://www.risetobloome.com<br />
<br />
Windows<br />
<br />
RISE is a free software suite for model driven information system development. Use a single source RISE model to generate your entire information solution including database, web services and documentation. Boost development throughput and improve quality and maintainability!<br />
<br />
The RISE user experience is based on a project concept, similar to that of most integrated development environments. The user works with resources and drawings that are part of a single development project.<br />
<br />
RISE supports a fully graphical approach to information modeling and system engineering, using ERD (Entity Relationship Diagram) as well as UML (Unified Modeling Language). This includes drag-and-drop of entities, their attributes and relations, as well as of views and entire web services.<br />
<br />
RISE supports graphic editing of complex objects such as views and orchestrated methods. RISE automatically safeguards the combination process, thus, assuring a technically correct result. <br />
<br />
RISE provides several ways to generate code from the model; directly to file, via the RISE Server or as an Internet service. RISE provides code generators for the database layer (SQL/DDL) as well as for the server side application layer (web services and persistent classes). All database scripts are incremental allowing you to install and maintain any number of databases from a single model. <br />
<br />
Feature list<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1355<br />
<br />
=== RISE PostgreSQL code generator === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1889<br />
<br />
Windows<br />
<br />
The RISE PostgreSQL code generator generates native PL/pgSQL scripts. Model your information in the free RISE Editor and generate your database script. The script incrementally updates the tables, columns, indexes and constraints in the database to match the RISE model. Once the database model is updated, the views defined in the RISE model are created in the database and possible default data, entered in the model, is inserted. <br />
<br />
=== RISE PHP for PostgreSQL code generator === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1888<br />
<br />
Windows<br />
<br />
The RISE PHP for PostgreSQL code generator renders PHP source code for database access. Model your information and programming interfaces in the free RISE Editor and generate your code. The generated code implements the classes and methods corresponding to the information interfaces specified in the RISE model. This includes classes for database access and, optionally, classes implementing SOAP/JSON web services and proxy classes assisting the implementation of a PHP SOAP client. <br />
<br />
=== Marshal SQL Utility === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1756<br />
<br />
Windows<br />
<br />
The Marshal SQL Utility is a generic cross database utility with batch execution capabilities. It allows you to test ODBC connections, browse database schemas, discover tables, views and columns. <br />
<br />
Key features of Marshal SQL Utility:<br />
<br />
* Execute any query supported by your database server<br />
* Execute batches of queries<br />
* Discover tables and views in your database<br />
* Discover columns for a selected table or view<br />
* Supports BLOBS and CLOBS<br />
* Save your results to file<br />
* Use any ODBC compliant database such as PostgreSQL.<br />
<br />
=== EMS SQL Manager for PostgreSQL Freeware === <br />
<br />
http://www.sqlmanager.net/en/tools/free<br />
<br />
Windows<br />
<br />
EMS SQL Manager for PostgreSQL Freeware (EMS SQL Manager Lite for PostgreSQL) is an excellent and easy-to-use freeware graphical tool for PostgreSQL database administration. It has the minimal required set of tools for those users who are new to PostgreSQL server and need only its basic functionality.<br />
EMS SQL Manager for PostgreSQL Freeware allows you to work with servers, databases and schemas, view, edit, search, group, sort and filter any data stored in a database, create and execute SQL queries with powerful SQL editor, handle multiple selected objects at a time and much more.<br />
<br />
=== Open Source CMS === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=2017<br />
<br />
Windows<br />
<br />
The CMS is a free Visual Studio 2010 solution template with a set of projects providing a complete Content Management System (CMS) based on RISE Visual Modeling with model, full source, sample site and DB-scripts for PostgreSQL, MySQL and SQL Server.<br />
<br />
It’s a complete ready-to-run Visual Studio solution with model, source code and web clients. It illustrates how to use RISE, how to implement a SOA backend and how to build RIA frontends.<br />
<br />
=== PSequel ===<br />
<br />
http://www.psequel.com/<br />
<br />
OS X Yosemite only, free, "Sequel Pro" inspired.<br />
<br />
=== DBeaver ===<br />
<br />
http://dbeaver.jkiss.org/<br />
<br />
Eclipse/Java (multi-platform) <br />
<br />
Eclipse-based environment, supporting many SQL databases from different vendors, as well as few NoSQL ones (Cassandra, etc). <br />
Good query editor with syntax highlighting, completion and autosave. <br />
Editing of query results. SSH tunneling support. Tons of other cool features.<br />
Quite good, but not 100% perfect PostgreSQL support (yet?). Regularly updated, as of 2015.<br />
<br />
=== JustOne Loader ===<br />
<br />
https://free.justonedb.com/free-tools/<br />
<br />
Java (multi-platform) <br />
<br />
JustOne Loader provides the ability to bulk load huge volumes of data from files into your PostgreSQL database with flexibility and speed.<br />
<br />
The loader includes features for:<br />
<br />
* File globbing<br />
* Variable and fixed field length handling<br />
* Record and field delimiter recognition<br />
* Quotation mark handling<br />
* Discarding records and fields<br />
* Control character handling<br />
* Field formatting and trimming<br />
* Record filtering<br />
* Record validation<br />
* Record padding<br />
* Parsing composite and hierarchical record structures<br />
* Meta data field generation<br />
* Row post processing<br />
* Commit points<br />
* Parallel file loading<br />
* Distributed database loading<br />
<br />
=== Constraint Fix ===<br />
<br />
https://free.justonedb.com/free-tools/<br />
<br />
PL/pgSQL (Open source) <br />
<br />
This package both analyses and repairs any PRIMARY KEY and UNIQUE constraints in PostgreSQL that contain duplicate keys (PG bug #11141).<br />
Constraints are repaired by deleting rows with a duplicated constraint key and which are not accessible via the constraint index.<br />
<br />
=== JustOne HL7 Package ===<br />
<br />
https://free.justonedb.com/free-tools/<br />
<br />
PL/pgSQL (Creative Commons Attribution 4.0 International License) <br />
<br />
The HL7 Package is a pre-built set of database tables, views and functions to support the parsing, storage, retrieval and analysis of HL7 v2.x messages and may be used to store both HL7 message segments as defined by the Health Level 7 International organization and also non-standard message segments.<br />
<br />
=== JustOne X12 Package ===<br />
<br />
https://free.justonedb.com/free-tools/<br />
<br />
PL/pgSQL (Creative Commons Attribution 4.0 International License) <br />
<br />
The X12 Package is a pre-built set of database tables, views and functions to support the parsing, storage, retrieval and analysis of X12 exchanges.<br />
<br />
=== JustOne EDI Package ===<br />
<br />
https://free.justonedb.com/free-tools/<br />
<br />
PL/pgSQL (Creative Commons Attribution 4.0 International License) <br />
<br />
The EDI Package is a pre-built set of database tables, views and functions to support the parsing, storage, retrieval and analysis of EDIFACT exchanges.<br />
<br />
=== JustOne VCF Package ===<br />
<br />
https://free.justonedb.com/free-tools/<br />
<br />
PL/pgSQL (Creative Commons Attribution 4.0 International License) <br />
<br />
The VCF Package is a pre-built set of database tables, views and functions to support the parsing, storage, retrieval and analysis of VCF genomic data files.<br />
<br />
=== OmniDB ===<br />
<br />
https://github.com/OmniDB/OmniDB<br />
<br />
Mono/.NET (multi-platform), browser-based, requires webserver (Windows webserver included)<br />
<br />
Open source full-featured web tool for database management and conversion. Currently supports PostgreSQL, Oracle, MariaDB, MySQL, Firebird, SQLite, MS Access, MS SQL Server, MS SQL Compact. Exports query results to CSV, XLSX and DBF. OmniDB converts databases from any supported RDBMS to PostgreSQL and back.<br />
<br />
<br />
== Proprietary ==<br />
<br />
=== JetBrains IDEs - DataGrip, IntelliJ IDEA, PHPStorm, PyCharm, RubyMine, etc ... ===<br />
<br />
http://www.jetbrains.com/<br />
<br />
Windows, Mac OS X, Linux<br />
<br />
JetBrains has a dedicated SQL IDE — DataGrip which can connect to PostgreSQL as well. It provides code completion, multicursors, local query history, navigation, refactorings and language injection support. <br />
https://www.jetbrains.com/datagrip/<br />
<br />
Other JetBrains Products, for example PHPStorm, have built-in database plugin, and it has the same functionality as DataGrip.<br />
<br />
After you configured the data sources of your project, you can easily create tables, foreign keys, indexes much easier than usually, because the IDE is very smart; for example by foreign keys it automatically sets the name of the key, and the related columns. For me it is so far the best experience by creating a basic database schema. Even with editable EER models was it slower...<br />
By the settings of <span class="plainlinks">[http://goo.gl/TuqiPR<span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">pantun romantis terbaru]</span> your data source you can configure the SQL dialect of your database. After that if you want to add stored procedures or triggers, you will have code completion which is favorable too. So I think JetBrains products speed up your work if you exactly know what you want, and how can you make it.<br />
<br />
For any JetBrains IDE there is a free license for open source projects. For enterprise usage there is a 30 days trial, after that you can buy personal or commercial license which are very cheap compared to other products.<br />
<br />
For PyCharm (even the Community Edition) you can install the free JetBrains plugin [http://confluence.jetbrains.com/display/CONTEST/Database+Navigator Database Navigator] (Settings -> IDE Settings -> Plugins). It appears to deliver the same functionality described above for PHPStorm. You will get a new menu DB Navigator, left to the Help menu.<br />
<br />
=== Full Convert ===<br />
<br />
https://www.spectralcore.com/fullconvert<br />
<br />
Database conversion and synchronization between PostgreSQL and Microsoft Access, dBase, FoxPro, Microsoft Excel, Firebird, Interbase, MySQL, Oracle, Paradox, Microsoft SQL Server, SQL Server, SQL Server Azure, SQL Server Compact(SQLCE), SQLite, Delimited text files (CSV), XML and many more via ODBC.<br />
<br />
=== VSQL++ for PostgreSQL ===<br />
<br />
http://www.sqlpp.com/products/postgresql-management/<br />
<br />
A powerful Postgresql database management tool to help DBA sto manage the database objects easy and quickly.<br />
<br />
=== Nucleon Database Master for PostgreSQL and Others === <br />
<br />
Nucleon Database Master is a modern, powerful, intuitive, easy to use and all in one PostgreSQL MongoDB, Oracle, DB2, Informix, Ingres, SQL Server, SQL Azure, MySQL, FireBird, SQLite client application with a consistent interface that simplifies managing, querying, editing, visualizing, designing and <span class="plainlinks">[http://mitraharga.blogspot.co.uk/2014/09/harga-tablet-pc-axioo.html<span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">harga tablet axioo]</span> reporting relational and schema-free (NoSQL) database systems. You can connect any database system via ODBC and OleDB connections.Using Database Master, you can execute SQL, LINQ, JSON queries or you can create, edit and delete all database objects such as tables, views, procedures, columns, indexes, collections and triggers. You can execute SQL queries and scripts, view and edit table data including BLOBs (Image, Text or any file), represent tables and its relations as a ER(Entity Relationship) diagram.<br />
<br />
Info:<br />
http://www.nucleonsoftware.com/<br />
Windows, other platforms via WINE <br />
Admin<br />
<br />
=== DBTools Manager ===<br />
<br />
http://www.dbtools.com.br<br />
<br />
Windows<br />
<br />
Admin<br />
<br />
Freeware, available for PostgreSQL and MySQL, allows managing all aspects of the database: db, table, triggers, functions, etc. Includes import/export wizards to migrate data and structure to/from other database engines. Developed by DBTools Software.<br />
<br />
=== PgManager ===<br />
<br />
http://www.ems-hitech.com/pgmanager<br />
<br />
Windows, Linux version just released<br />
<br />
Admin<br />
<br />
Basically a proprietary, more powerful version of PGAdmin II or PGAccess. Adds support for trigger and constraint editing, metadata logging, and query monitoring. Also includes multiple-format data import/export tools, which are also available on their own for Linux. Developed by EMS Hitech. (JMB 4.2003).<br />
<br />
<br />
<br />
=== Rekall ===<br />
<br />
http://www.thekompany.com/products/rekall<br />
<br />
Linux<br />
<br />
ERD<br />
<br />
Designed by The Kompany as a Linux-based competitor to MS Access, this simple interface and database interface-builder is unfortunately designed for MySQL and <span class="plainlinks">[http://aurora-ndut.blogspot.mx/2014/09/kata-kata-cinta.html<span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">kata kata cinta]</span> has some problems with PostgreSQL. Was still buggy in May 2002, but may be improved by now. Supports limited browsing of database objects, creation of data entry forms and reports. (JMB 11.2002)<br />
<br />
=== Data Architect ===<br />
<br />
http://www.thekompany.com/products/dataarchitect<br />
<br />
Linux<br />
<br />
ERD<br />
<br />
I'm trying DataArchitect 2 from theKompany now for 6 month. Highly recommended if you want an easy to use DB-Design Tool, but generated SQL-Scripts needs some rework. PostgreSQL is supported, you easily can create Stored Procedures, Foreign Keys, Views and Triggers. (Bernd, 1.2003)<br />
<br />
=== SyBase Power Designer ===<br />
<br />
http://www.sybase.com/products/enterprisemodeling/powerdesigner<br />
<br />
Admin<br />
<br />
Sybase PowerDesigner is power tool with built in PostgreSQL support. It support tables, views, triggers, constraints and referential integrity. More advanced than Data Architect.<br />
<br />
=== Microsoft Access === <br />
<br />
http://office.microsoft.com<br />
<br />
Windows + ODBC only<br />
<br />
ERD, Admin<br />
<br />
Yes, you can use MS Access as a PostgreSQL database interface. Supports data access to PostgreSQL tables and views; many ODBC-based limitations and errors. I don't need to tell anyone what MS Access' other capabilities are. (JMB 11.2002)<br />
<br />
=== eRWin ===<br />
<br />
http://www.ca.com/products/alm/erwin.htm<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
Apparently a high-end tool by Computer Associates with PostgreSQL support as a downloadable addon for some version(s). Haven't tried this. JC<br />
<br />
=== DeZign for Databases ===<br />
<br />
http://www.datanamic.com<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
DeZign is a database development tool using an entity relationship diagram. It visually supports the lay out of the entities and relations and automatically generates SQL schemas for most leading databases including PostgreSQL.<br />
<br />
=== PGExplorer ===<br />
<br />
http://www.PGExplorer.com<br />
<br />
Windows (Shareware)<br />
<br />
Admin<br />
NOTE this software is not maintained and has not had a new release in many years. Because of it's age it does not support schemas on PGSQL versions 7.3 and up.<br />
<br />
Postgres Explorer is a full-featured GUI postgres development tool. Features include a tree view of your databases, and database objects. You can reverse engineer SQL statements from your database objects , modify the SQL and execute it. Wizards will guide you through the process to generate SQL for various objects and statements. The latest release includes a Graphical Select Query Designer (anonymous, 4.2003)<br />
<br />
=== Case Studio 2 ===<br />
<br />
http://www.casestudio.com<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
I just downloaded the trial version, so far it looks real promising and claims to support PostgreSQL. Handles reverse engineering of existing databases, and has a real nice interface for setting up tables, relationships etc. You can get a lite or full version. The description from the website... Professional database modeling tool for various databases. CASE Studio 2 includes following key features:<br />
<br />
LITE version features + Reverse Engineering from various database systems Version Manager Data Flow Diagrams Definition of user defined variables Large COM interface Users, User groups and User permission support and many more.<br />
<br />
=== pgEdit ===<br />
<br />
http://pgedit.com<br />
<br />
Macintosh<br />
pgEdit is a high performance SQL editor and development environment designed specifically for PostgreSQL relational databases. pgEdit features include SQL syntax coloring, direct source code execution, PHP support, integrated documentation, and extensive customizable editing facilities.<br />
<br />
pgEdit uses psql, the interactive terminal application included with every PostgreSQL installation. This makes it easy to develop with pgEdit and then transfer your work to any PostgreSQL installation for maintenance and production tasks.<br />
<br />
pgEdit is a native application for both Macintosh and Windows. It does not use Java or require installation of external libraries. You have the option of using the version of psql included with pgEdit or a different version installed anywhere on your hard drive.<br />
<br />
=== RazorSQL ===<br />
<br />
http://www.razorsql.com/<br />
<br />
Macintosh/Windows/Linux/Solaris<br />
<br />
RazorSQL is an SQL query tool, database browser, SQL editor, and database administration tool that supports PostgreSQL and any other JDBC or ODBC compliant database. Some of the major features are tools for creating, dropping, and altering objects such as tables, views, indexes, triggers, functions, users, and databases; a programming editor that supports 20 different programming languages; import and export tools; auto column and table lookup; and a query builder, query scheduler, and SQL formatter.<br />
<br />
<br />
=== MicroOLAP Database Designer ===<br />
<br />
http://www.microolap.com/products/database/postgresql-designer/<br />
<br />
Windows ODBC<br />
<br />
Database Designer for PostgreSQL is an easy CASE tool with intuitive graphical interface allowing you to build a clear and effective database structure visually, see the complete picture (diagram) representing all the tables, references between them, views, stored procedures and other objects. Then you can easily generate a physical database on a server, modify it according to any changes you made to the diagram using fast ALTER statements.<br />
<br />
<br />
=== Import / Export and synchronization tools for PostgreSQL ===<br />
<br />
http://convertdb.com/postgresql<br />
<br />
Microsoft Windows 8 / 7 / Vista / XP / 2000 / NT.<br />
Software is able to connect to remote PostgreSQL 9.x/7.4 located on Linux, Solaris, Mac OS X, and Windows.<br />
<br />
ConvertDB cross database migration tools assist in data conversion and synchronization among PostgreSQL, MySQL, MS SQL Server, MS Windows SQL Azure, and MS Access databases <br />
<br />
* 1 Million of records can be transferred in 5-10 minutes.<br />
* Bi-directional synchronization between PostgreSQL, MS SQL, MySQL and Oracle <br />
* Scheduling migration and synchronization jobs.<br />
<br />
<br />
=== dbForge Data Compare for PostgreSQL ===<br />
<br />
http://www.devart.com/dbforge/postgresql/datacompare/<br />
<br />
Microsoft Windows 2000/XP/2003/Vista and Windows 7<br />
<br />
'''dbForge Data Compare for PostgreSQL''' by '''Devart''' is a tool for table data comparison and synchronization. When using PostgreSQL data compare tool developer can detect data differences in compared PostgreSQL tables; generate data synchronization script and execute it to eliminate all these differences.<br />
<br />
'''Key features:'''<br />
<br />
* Identify the differences between two databases<br />
* Compare separate tables or table groups by table name mask<br />
* Compare tables with different structure<br />
* Generate a report embodying data diff and save it for further analysis<br />
* Sync data in tables and views in full or in part<br />
* Generate SQL script for database synchronization<br />
* Organize database synchronization according to the schedule<br />
<br />
=== dotConnect for PostgreSQL ===<br />
<br />
https://www.devart.com/dotconnect/postgresql/<br />
<br />
Windows<br />
<br />
'''dotConnect for PostgreSQL''', formerly known as PostgreSQLDirect .NET, is an enhanced ORM enabled data provider for PostgreSQL that builds on ADO.NET technology to present a complete solution for developing PostgreSQL-based database applications. It introduces new approaches for designing application architecture, boosts productivity, and leverages database applications.<br />
<br />
'''Key features:'''<br />
<br />
* Direct Mode<br />
* Database Application Development Extension<br />
* PostgreSQL Advanced Features Support<br />
* Optimized Code<br />
* ORM Support<br />
* BIS Support<br />
<br />
=== PostgreSQL Data Access Components ===<br />
<br />
Windows<br />
<br />
https://www.devart.com/pgdac/<br />
<br />
PostgreSQL Data Access Components (PgDAC) is a library of components that provides native connectivity to PostgreSQL from Delphi, C++Builder, Lazarus (and Free Pascal) on Windows, Mac OS X, iOS, Android, Linux, and FreeBSD for both 32-bit and 64-bit platforms. PgDAC is designed to help programmers develop really lightweight, faster and cleaner PostgreSQL database applications without deploying any additional libraries.<br />
<br />
Native Connectivity to PostgreSQL<br />
PgDAC is a complete replacement for standard PostgreSQL connectivity solutions and presents an efficient alternative to the Borland Database Engine (BDE) and standard dbExpress driver for access to PostgreSQL. It provides direct access to PostgreSQL without PostgreSQL Client.<br />
<br />
=== ODBC Driver for PostgreSQL ===<br />
<br />
https://www.devart.com/odbc/postgresql/<br />
<br />
Windows<br />
<br />
Devart ODBC Driver for PostgreSQL provides high-performance and feature-rich connectivity solution for ODBC-based applications to access PostgreSQL databases from Windows, both 32-bit and 64-bit. Full support for standard ODBC API functions and data types implemented in our driver makes interaction of your database applications with PostgreSQL fast, easy and extremely handy.<br />
<br />
=== Excel Add-in for PostgreSQL ===<br />
<br />
https://www.devart.com/excel-addins/postgresql.html<br />
<br />
Windows<br />
<br />
Devart Excel Add-in for PostgreSQL allows you to quickly and easily connect Microsoft Excel to PostgreSQL, load data from PostgreSQL to Excel, instantly refresh data in an Excel workbook from the database, edit these data, and save them back to PostgreSQL. It enables you to work with PostgreSQL data like with usual Excel worksheets, easily perform data cleansing and de-duplication, and apply all the Excel's powerful data processing and analysis capabilities to these data.<br />
<br />
=== Aqua Data Studio ===<br />
<br />
http://www.aquafold.com/index-postgresql.html<br />
<br />
Java: Windows/Linux/Macintosh OSX/Solaris<br />
<br />
Aqua Data Studio is a management tool for the PostgreSQL relational database w/ administration capabilities and a database query tool. The visual administration features provide users the ability to browse and modify database structures, including schema objects, database storage and maintain database security. An integrated query tool allows users to quickly create, edit and execute SQL queries and scripts. Aqua Data Studio also provides an import and export tool to allow users to easily move data in and out of the PostgreSQL database in and from different data formats.<br />
<br />
=== Tuples ===<br />
<br />
http://www.tuplesapp.com/<br />
<br />
Mac OSX<br />
<br />
Tuples is the first native client for PostgreSQL for Mac OSX. It supports connecting to several servers at the same time, exporting data in several formats and profiling queries. As a native client it is fast, lightweight and a good Mac citizen.<br />
<br />
=== EMS Database Management Tools for PostgreSQL ===<br />
<br />
http://www.sqlmanager.net/en/products/postgresql<br />
<br />
Windows<br />
<br />
PostgreSQL Tools Products Family:<br />
<br />
* [http://www.sqlmanager.net/en/products/studio/postgresql SQL Management Studio for PostgreSQL] - single workbench for administering PostgreSQL databases, managing database schema and objects as well as for database design, migration, extraction, query building, data import, export and database comparison. <br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/manager SQL Manager for PostgreSQL] - high performance graphical tool for PostgreSQL database administration and development. It makes creating and editing PostgreSQL database objects easy and fast, and allows you to run SQL scripts, visually design databases, build SQL queries, extract, print and search metadata, import and export PostgreSQL database data and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dataexport Data Export for PostgreSQL] - tool to export PostgreSQL database data quickly to any of 19 available formats, including MS Access, MS Excel, MS Word, RTF, HTML, TXT, ODF and more. Data Export for PostgreSQL has a <span class="plainlinks">[http://aurora-ndut.blogspot.fr/2013/10/kata-kata-lucu.html<span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">kata kata lucu]</span> friendly wizard, which allows you to set various options of PostgreSQL export process visually and a command-line utility to automate your PostgreSQL export jobs using the configuration file.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dataimport Data Import for PostgreSQL] - tool to import data to PostgreSQL tables from MS Excel 97-2007, MS Access, DBF, TXT, CSV, MS Word 2007, RTF, ODF and HTML files. This utility allows you to quickly import data to one or several PostgreSQL tables or views at once, save all PostgreSQL import parameters set on current wizard session, use special batch insert mode to import PostgreSQL data at the maximum possible speed and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datapump Data Pump for PostgreSQL] - migration tool for converting databases and importing table data from an ADO-compatible source (e.g. MS Access, MS SQL database or any other database with ADO support) to PostgreSQL databases.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datagenerator Data Generator for PostgreSQL] - tool for generating test data to PostgreSQL database tables. The utility can help you to simulate the database production environment and allows you to populate several PostgreSQL database tables with test data simultaneously, define tables for generating data, set value ranges, control a wide variety of generation parameters for each field type and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dbcomparer DB Comparer for PostgreSQL] - tool for comparing PostgreSQL database schemas and discovering differences in their structures. You can view all the differences in compared database objects and execute an automatically generated script to synchronize structure of PostgreSQL databases and eliminate these differences.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/extract DB Extract for PostgreSQL] - easy-to-use tool for creating PostgreSQL database backups in a form of SQL scripts. This database script utility allows you to save metadata of all PostgreSQL database objects as well as PostgreSQL table data as database snapshots.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/query SQL Query for PostgreSQL] - useful tool that lets you quickly and simply build SQL queries to PostgreSQL databases. Visual PostgreSQL query building as well as direct editing of a query text is available.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datacomparer Data Comparer for PostgreSQL] - tool for PostgreSQL data comparison and synchronization. Using this utility you can view all the differences in compared PostgreSQL tables and execute an automatically generated script to eliminate these differences.<br />
<br />
=== Navicat ===<br />
<br />
http://pgsql.navicat.com/<br />
<br />
Windows/Macintosh OSX<br />
<br />
Navicat is a powerful PostgreSQL Database Server administration and development tool. It works with PostgreSQL 8.0 version or above and supports most of the PostgreSQL features including Trigger, Function, View, Manage User, and so on. It is also not only sophisticated enough for professional developers, but also easy to learn for new users. With its well-designed GUI, Navicat lets you quickly and easily create, organize, access and share information in a secure and easy way.<br />
<br />
=== SEQUEL for PostgreSQL ===<br />
<br />
http://www.sequel.tech<br />
<br />
macOS<br />
<br />
SEQUEL for PostgreSQL is a professional DB administration and management tool, with extremely intuitive and feature rich GUI that makes it the best assistant tool for developers and admins. SEQUEL is lightweight, fast and powerful that it can significantly simplify the DB management process. For those who cannot live without a CLI, SEQUEL offers a powerful Query Editor with syntax highlight, autocomplete and a Console log view that is always visible, so you can monitor the communication with your databases. It includes:<br />
<br />
* Database management forms for Schema, Table, Index, Foreign key, Trigger, Rule, Sequence, Collation, Domain, Enum type, Tablespace and Language objects with full parameters support<br />
* Assistant info views for Object information, Actions, Help and Documentation<br />
* Jump bar for quick objects selection and navigation<br />
* Task bar with multi-task monitoring support<br />
* Console log view<br />
* Syntax highlight, autocomplete, current and selection query execution and explain, line numbering and working statement detection<br />
* Direct editing in the results view, query results explanation <br />
* Powerful Field editor<br />
* Transaction based database updates<br />
* Code preview and Content editing<br />
<br />
=== SQL Maestro Group products for PostgreSQL ===<br />
<br />
http://www.sqlmaestro.com/products/postgresql/<br />
<br />
Windows<br />
<br />
[http://www.sqlmaestro.com SQL Maestro Group] offers a number of tools for PostgreSQL.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/maestro/ PostgreSQL Maestro] allows you to create, edit, copy, drop and dump database objects easy and fast. You can also design your database as ER diagram, build queries visually, execute SQL queries and scripts, debug PL/pgSQL functions, view and edit data including BLOBs, represent data as diagrams, export and import data to/from most popular file formats, analyze your data summarized into multidimensional views and hierarchies (OLAP cubes), manage PostgreSQL roles, users, groups and privileges, and use a lot of other admin tools designed for making your work with PostgreSQL database server comfortable and efficient.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/datawizard/ PostgreSQL Data Wizard] provides you with a number of easy-to-use wizards to transfer any database to PostgreSQL, export data from PostgreSQL tables, views and queries to most popular formats, and import data from various sources into PostgreSQL tables.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/codefactory/ PostgreSQL Code Factory] is a GUI tool aimed at the SQL queries and scripts development.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/datasync/ PostgreSQL Data Sync] is a powerful and easy-to-use tool for database contents comparison and synchronization.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/phpgenerator/ PostgreSQL PHP Generator Professional] is a frontend that allows you to generate high-quality PHP applications for your database in a few mouse clicks.<br />
<br />
SQL Maestro Group also produces similar tools for MySQL, Oracle, MS SQL Server, SQLite, Firebird, DB2, SQL Anywhere, and MaxDB.<br />
<br />
=== Datanamic DataDiff for PostgreSQL ===<br />
<br />
http://www.datanamic.com/datadiff-for-postgresql/<br />
<br />
Windows<br />
<br />
Datanamic DataDiff for PostgreSQL is a utility for data comparison and synchronization. Compare data for selected tables in two databases, view differences and publish changes quickly and safely. Flexible comparison and synchronization settings will enable you to set up a customized comparison key and to select tables and fields for comparison and for synchronization.<br />
DB Data Difftective can be used for data migrations, verification of (corrupt) data, data auditing etc.<br />
<br />
=== Datanamic SchemaDiff for PostgreSQL ===<br />
<br />
http://www.datanamic.com/schemadiff-for-postgresql/index.html<br />
<br />
Windows<br />
<br />
Datanamic SchemaDiff for PostgreSQL is a tool for comparison and synchronization of database schemas. It allows you to compare and synchronize tables, views, functions, sequences (generators), stored procedures, triggers and constraints between two databases.<br />
<br />
=== DB MultiRun PostgreSQL Edition ===<br />
<br />
http://www.datanamic.com/multirun/index.html<br />
<br />
Windows<br />
<br />
DB MultiRun is a simple tool to execute multiple SQL scripts on multiple databases quickly.<br />
Define a list of databases, add SQL scripts to execute on these databases and click "execute" to run those scripts on the databases in the list. The multi-threaded execution of the SQL scripts makes it complete the task fast. After execution of the scripts you can examine the results of the executed scripts on each database.<br />
<br />
=== SQLPro ===<br />
<br />
http://www.vive.net/products/sqlpro.htm<br />
<br />
Windows<br />
<br />
SqlPro is an easy to use database GUI tool for six popular databases (Oracle, MySQL, PostgreSQL, SQL Server, SQLite and Access). One IDE makes database administration and development faster and error free. <br />
SQLPro Key Features: color-coding of the SQL, drag-and-drop of objects into the editor pane to save you from typing their names, retrieval of SQL code for things like stored procedures and triggers from the underlying database, and one-click creation of SELECT and INSERT statements. You can open, save and print SQL scripts.<br />
SQLPro uses native drivers to connect to the databases (no ODBS or third party engines to install).<br />
<br />
=== DB Doc ===<br />
<br />
http://www.yohz.com/dbdoc_details.htm<br />
<br />
Windows/Linux(Wine)<br />
<br />
DB Doc helps you document your database structure and objects. Documents can be generated as PDF reports, HTML pages, Microsoft Word (docx) file, or a single compiled HTML file. The layout is fully customizable, and you can quickly view inter-object dependencies using hyperlinks.<br />
<br />
DB Doc supports PostgreSQL 8.3 to 9.4.<br />
<br />
=== SQL Blob Export ===<br />
<br />
http://www.yohz.com/sbe_details.htm<br />
<br />
Windows<br />
<br />
SQL Blob Export exports unlimited images and files from your tables or queries in 5 simple steps.<br />
<br />
=== SQL Spreadsheets ===<br />
<br />
http://www.yohz.com/sxl_details.htm<br />
<br />
Windows<br />
<br />
SQL Spreadsheets lets you export images and binary files to an Excel spreadsheet. Images can be displayed directly in the spreadsheet itself, or saved to disk and displayed as a link in the spreadsheet.<br />
<br />
=== SQL File Import ===<br />
<br />
http://www.yohz.com/sfi_overview.htm<br />
<br />
Windows<br />
<br />
SQL File Import allows you to upload files, images, and other data into your database, without having to write any SQL statements. SQL File Import supports PostgreSQL, Firebird, MySQL, Oracle, SQLite, SQL Server, and various ODBC-supported databases (e.g. DB2 and PostgreSQL).<br />
<br />
A scripting engine allows you to transform data before importing them into your database. A command line version is also included to allow you to perform unattended upload/import tasks.<br />
<br />
=== SQL Image Viewer ===<br />
<br />
http://www.yohz.com/siv_details.htm<br />
<br />
Windows<br />
<br />
SQL Image Viewer allows you to retrieve, view, convert and export images stored in Firebird, MySQL, Oracle, SQLite, SQL Server, and various ODBC-supported databases (e.g. DB2 and PostgreSQL). It supports the following image formats: BMP, GIF, JPG, PNG, PSD, and TIFF.<br />
<br />
It also allows you to export binary data, and recognises the following binary file types: PDF, MP3, WAV, 7Z, BZ2, GZ, RAR, ZIP, and has experimental support for DOC, PPT and XLS file types.<br />
<br />
A command line version is also included to allow you to perform unattended scheduled exports of binary data.<br />
<br />
=== SQL Data Sets ===<br />
<br />
http://www.yohz.com/sds_details.htm<br />
<br />
Windows<br />
<br />
SQL Data Sets allows you to generate and save data sets retrieved from PostgreSQL, Oracle, SQL Server and ODBC-supported database engine. Saved data sets are compressed and can optionally be encrypted. Shared data sets can be opened by other users using the free SQL Data Sets Viewer. Saved data sets can also be queried further without the need to connect to any database engine, can be exported to HTML, Excel, XML and plain text files. The SQL Data Sets Viewer can also display images stored in binary fields, and identify PDF, MP3, WAV, 7Z, BZ2, GZ, RAR, ZIP, and unprotected Microsoft Office files.<br />
<br />
=== SQL Select ===<br />
<br />
http://www.yohz.com/ss_details.htm<br />
<br />
Windows<br />
<br />
SQL Select is a lightweight SQL IDE for PostgreSQL, Oracle, SQL Server, MySQL, Firebird, and ODBC-supported database engine. It also allows you to export result sets to a SQLite database.<br />
<br />
=== Online Web System ===<br />
<br />
[http://www.younicycle.com Younicycle, the Integrated Web System & Web Office]<br />
<br />
Any recent web browser with FlashPlayer<br />
<br />
Provides an integrated set of GUI tools designed to allow PostgreSQL non-experts to effectively collaborate with more advanced PG Users and Web developers. Includes a Table Editor (unlimited Tables), a graphical Query Builder and a Functions Editor, along with additional tools for Content Management, Print Management and Cloud Management. Designed initially to be an alternative to Filemaker, but has continued to advance beyond that goal. Additional, integrated tools include Php (Actions Editor), WYSIWYG Web site Design, Pdf - Report Design & creation tool(with variable data print (PdfLib)), internal chat, datasources, dynamic charts, hosting, publish to web, css/js editor, QRCode generator, CRON, ACL with Role based permissions + additional ancillary tools. Recently added integration with Google Drive (Docs, spreadsheets, Picasa & Calendar), allowing import of Google spreadsheets directly in to PG Tables. All created content can be 'bundled' with the internal SaaS Manager and installed in other accounts (or server installations) with a click. The end result is an online Web System and Web Office allowing 'Novices' to see and work with PG + web developers within an integrated environment. Free - 30 day trial account without credit card info. Also available as a server install (Debian only).<br />
<br />
=== SQLTool Pro Database Editor ===<br />
<br />
http://www.sqltoolpro.com<br />
<br />
Android<br />
<br />
SQLTool Pro is a professional Android SQL editor for MySQL, SQL Server, PostgreSQL, Sybase, and Oracle Databases.<br />
<br />
=== SSIS Data Flow Components for PostgreSQL ===<br />
<br />
https://www.devart.com/ssis/<br />
<br />
Windows<br />
<br />
'''Devart SSIS Data Flow Components for PostgreSQL''' allow you to integrate database and cloud data via SQL Server Integration Services (SSIS).<br />
<br />
Devart SSIS Data Flow Components provide easy to set up cost-effective data integration using SSIS ETL engine. They provide high performance data loading, convenient component editors, SQL support for cloud data sources and lots of data source specific features.<br />
<br />
=== DbVisualizer ===<br />
<br />
http://www.dbvis.com/<br />
<br />
Windows/OS X/Linux/UNIX<br />
<br />
DbVisualizer is a feature rich, intuitive multi-database tool for developers, database administrators, and increasingly for advanced analysts providing a single powerful interface across a wide variety of operating systems. With its easy-to-use and clean interface, DbVisualizer has proven to be one of the most cost effective database tools available, yet to mention that it runs on all major operating systems and supports all major RDBMS that are available. Users only need to learn and master one application. DbVisualizer integrates transparently with the operating system being used. <br />
<br />
[[Category:Tool]]<br />
[[Category:General articles and guides]]<br />
<br />
<br />
=== Valentina Studio (Free) ===<br />
<br />
http://www.valentina-db.com/valentina-studio-overview<br />
<br />
Windows/OS X/Linux/<br />
<br />
Valentina Studio is a powerful PostgreSQL Database Server administration and development tool. It offers for free many advanced editors:<br />
* Schema Editor with Tree and Column views<br />
* Diagram Editor with reverse engineering<br />
* SQL Editor with auto-completion, syntax-highlighting, recent and favorite queries, templates of commands, many result tab-panels, ...<br />
* Data Editor with easy sorting and filtering of records without SQL, in-cell editing.<br />
* Related Data Editor that allow s you to learn related records in different modes.<br />
* Import/Export<br />
* SQL dumps<br />
* and so on ...<br />
<br />
Valentina Studio PRO - adds additional advanced features as:<br />
* Report Editor to developer reports based on Valentina Report Engine with datasources from PostgreSQL and other databases.<br />
* Diagrams forward engineering<br />
* SQL DIFF<br />
* Data Transfer <br />
<br />
[[Category:Tool]]<br />
<br />
=== PG Commander ===<br />
<br />
http://eggerapps.at/pgcommander/<br />
<br />
Mac OS X<br />
<br />
PG Commander is a modern PostgreSQL client for developers and content editors. Great interface for browsing tables & editing records (especially tables with foreign keys). Has a very nice graphical SQL Terminal. Supports PostgreSQL 8.0 and up, including Amazon Redshift. Built-In support for connecting via SSH tunnels.<br />
<br />
=== JackDB ===<br />
<br />
http://www.jackdb.com/<br />
<br />
Html5 Web Browser (Linux/Mac OS X/Windows)<br />
<br />
JackDB is a database client that runs entirely in your web browser. There's no software to install locally so you can use it on Mac OS X, Linux, and Windows and it works on all major modern browsers (eg. Chrome, Firefox, IE, Safari, and Opera). It supports connecting to PostgreSQL, as well as MySQL, Oracle, and SQL Server databases.<br />
<br />
Features:<br />
* Html5 interface with no client installation<br />
* Query editor with syntax highlighting<br />
* Scrolling result sets<br />
* Schema/Object browser<br />
* SSL connections with certificate pinning<br />
* Eliminates password sharing<br />
* Two-factor authentication<br />
* BLOB display (images and Html5 audio/video)<br />
<br />
=== Tadpole DB Hub ===<br />
<br />
https://github.com/hangum/TadpoleForDBTools/wiki<br />
<br />
Tadpole DB Hub is Unified infrastructure tool, various environment based interface for managing Apache Hive, Amazon RDS, CUBRID, MariaDB, MySQL, Oracle, SQLite, MSSQL, PostgreSQL and MongoDB databases. It enables you to handle typical DB over the World Wide Web.<br />
<br />
Features:<br />
* Intuitive web interface (Safari, Chrome, IE 10, Firefox)<br />
* User Management (Admin, Manager, User)<br />
* Select, Insert, Update, Delete<br />
* Download query result<br />
* SQL Syntax Highlighting<br />
* SQL Formatting<br />
* SQL Statement <-> Java, PHP String Literal Each Convert<br />
* SQL Assist<br />
* Execute SQL Statement<br />
* SQL Result Set to CSV<br />
* SQL History And Export text<br />
* Generate SQL Statement (Select, Insert, Update, Delete, Table, View, Index, Procedure, Function, Trigger)<br />
* Generate ER Diagram (Auto Layout)<br />
<br />
=== Vertabelo ===<br />
<br />
http://www.vertabelo.com<br />
<br />
Vertabelo is an online database designer working under Chrome. It free to use for smaller projects and have commercial version for larger database projects.<br />
<br />
Features:<br />
* Intuitive HTML5 web interface (Chrome)<br />
* OS independent<br />
* Sharing DB model with team members<br />
* Support for PosgreSql, MySQL, Oracle, MS SQL Server, DB2, SQLite, HSQLDB, <br />
* Model versioning<br />
* Dynamic/Visual search<br />
* Live model validation<br />
* Reverse engineering<br />
<br />
=== pgModeler ===<br />
<br />
PostgreSQL Database Modeler<br />
<br />
http://pgmodeler.com.br<br />
<br />
PostgreSQL Database Modeler, or simply, pgModeler is an open source tool for modeling databases that merges the classical concepts of entity-relationship diagrams with specific features that only PostgreSQL implements. The pgModeler translates the models created by the user to SQL code and apply them onto database clusters from version 8.0 to 9.1. $3.50 per copy as of 2014/04/09.<br />
<br />
<br />
=== GenMyModel ===<br />
<br />
https://www.genmymodel.com<br />
<br />
GenMyModel is an online modeling tool supporting [http://www.genmymodel.com/database-diagram-online database modeling]. It is free to use for smaller projects and have commercial version for larger database projects.<br />
<br />
Features:<br />
* Intuitive HTML5 web interface (Chrome, Firefox, Safari, Internet Explorer)<br />
* OS independent<br />
* Instant sharing and collaboration<br />
* Customizable SQL generators<br />
* Model versioning<br />
* Live model validation<br />
<br />
=== SQLPro for Postgres ===<br />
<br />
http://www.hankinsoft.com/SQLProPostgres<br />
<br />
Mac OS X 10.8 and above<br />
<br />
Features:<br />
* 100% native OS X app with a clean and simple to use interface.<br />
* Query editor with syntax highlighting and autocomplete.<br />
* Support for multiple result set execution.<br />
* History feature, displaying your last ten executed queries.<br />
* Primary key detection for inline result set modifications.<br />
* Custom theme support allowing developers to work with style.<br />
<br />
=== DBHawk ===<br />
<br />
http://www.datasparc.com/<br />
<br />
Web Browser (Linux/Mac OS X/Windows)<br />
<br />
DBHawk is a web based SQL tool and reporting software designed for PostgreSQL, Oracle, SQL Server and other databases. Its easy to deploy and use.<br />
<br />
Features:<br />
* Web based interface with no client installation<br />
* Advanced Query editor with syntax highlighting and multi tabs results<br />
* Online visual query builder<br />
* Online SQL Report Builder<br />
* Online SQL Job Scheduler<br />
* Export results to html, csv, pdf, google docs, amazon s3<br />
* SQL Auditing and Security <br />
* Schema/Object browser<br />
* SQL and data snippet sharing<br />
* Blob data viewer and editor<br />
<br />
=== Postico ===<br />
<br />
https://eggerapps.at/postico/<br />
<br />
Mac OS X<br />
<br />
Postico is a fully native Mac app for connecting to your PostgreSQL server. It supports encrypted connections via SSL and SSH to PostgreSQL 8.0 and later, including Amazon Redshift.<br />
<br />
Postico has a powerful table content editor with in-cell editing and form-based row editing in a sidebar. You can quickly filter tables by keywords or even complex SQL expressions.<br />
<br />
There's also a table structure editor for editing columns, types, default values, foreign keys, check constraints etc.<br />
<br />
Finally, there's a convenient SQL Query Editor with support for query history and syntax highlighting. It also has convenience features like auto-indent and shortcuts for comment line etc.<br />
<br />
=== Datazenit ===<br />
<br />
https://datazenit.com/<br />
<br />
Windows, Mac OS X, Linux<br />
<br />
Datazenit is a cross-platform PostgreSQL and MySQL GUI with data grid, schema builder and interactive charts. <br />
It also has query builder, raw query editor with auto-complete, team collaboration features like connection, query and chart sharing among team members.<br />
<br />
=== EDB Postgres Enterprise Manager ===<br />
<br />
http://www.enterprisedb.com/products/postgres-enterprise-manager<br />
<br />
Windows, Mac OS X, Linux<br />
<br />
Postgres Enterprise Manager is the only solution available today that allows you to intelligently manage, monitor, and tune large scale Postgres installations from a single GUI console.<br />
<br />
Monitoring features include: server auto-discovery, over 225 pre-configured ready to run probes, custom probes, alert management, personalized alerts, remote monitoring, versatile charting, custom dashboards and web client.<br />
<br />
DBA tools include: database objects management, Postgres Expert (best practice configuration settings), Audit Manager, Log Manager, Log Analysis Expert, Capacity Manager and Team Support.<br />
<br />
Developer tools include: Query Tool, Data Grid, SQL Profiler, SQL Debugger and Import tools.<br />
<br />
Tuning tools include: At-A-Glance performance dashboards, Tuning Wizard, Performance Diagnostics and Index Advisor.<br />
<br />
== No longer Supported/Developed ==<br />
<br />
* OpenOffice postgresql SDBC Driver. no work on the project since 2010; last version was a beta. http://www.openoffice.org/dba/drivers/postgresql/index.html<br />
* RedHat: hasn't been refreshed since Pg 8.4. http://sources.redhat.com/rhdb<br />
* SQuirrel: website 404. http://squirrel-sql.sourceforge.net/</div>Simonhttps://wiki.postgresql.org/index.php?title=FOSDEM/PGDay_2017_Developer_Meeting&diff=29129FOSDEM/PGDay 2017 Developer Meeting2017-01-04T13:51:10Z<p>Simon: /* Agenda Items */</p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for Thursday 2nd February, 2017 at the Brussels Marriott Hotel, prior to FOSDEM/PGDay 2017. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 9.6 and 10 release cycles. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Review the progress of the 10.0 schedule, and formulate plans to address any issues<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
<br />
== Time & Location ==<br />
<br />
The meeting will be:<br />
<br />
* 9:00AM to 5:00PM<br />
* Brussels Marriott Hotel<br />
<br />
Coffee, tea and snacks will be served starting at 8:45am. Lunch will be provided.<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname) and will be attending:<br />
<br />
* Oleg Bartunov<br />
* Andrew Dunstan<br />
* Etsuro Fujita<br />
* Magnus Hagander<br />
* Petr Jelinek<br />
* Alexander Korotkov<br />
* Noah Misch<br />
* Bruce Momjian<br />
* Simon Riggs<br />
* Dave Page<br />
* Masahiko Sawada<br />
* Teodor Sigaev<br />
* Tomas Vondra<br />
<br />
The following people have sent their apologies:<br />
<br />
* Dimitri Fontaine<br />
* Kyotaro Horiguchi<br />
* Amit Kapila<br />
* Tom Lane<br />
* Thomas Munro<br />
* Michael Paquier<br />
* Craig Ringer<br />
<br />
==Agenda Items==<br />
<br />
Please add agenda items here!<br />
<br />
* Sharding update<br />
<br />
* Setting up the Release Management Team for Postgres 10.0 (Simon)<br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:10<br />
|Welcome and introductions<br />
|Dave<br />
<br />
|- <br />
|09:10 - 09:30<br />
|10.0 Release Schedule<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 11:00<br />
|Coffee break<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:30 - 13:30<br />
|Lunch<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|15:00 - 15:30<br />
|Tea break<br />
|All<br />
<br />
|- <br />
|16:30 - 17:00<br />
|Any other business<br />
|Dave<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|17:00<br />
|Finish<br />
|<br />
|}<br />
<br />
== Minutes ==</div>Simonhttps://wiki.postgresql.org/index.php?title=FOSDEM/PGDay_2017_Developer_Meeting&diff=29128FOSDEM/PGDay 2017 Developer Meeting2017-01-04T13:50:57Z<p>Simon: /* Agenda Items */</p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for Thursday 2nd February, 2017 at the Brussels Marriott Hotel, prior to FOSDEM/PGDay 2017. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 9.6 and 10 release cycles. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Review the progress of the 10.0 schedule, and formulate plans to address any issues<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
<br />
== Time & Location ==<br />
<br />
The meeting will be:<br />
<br />
* 9:00AM to 5:00PM<br />
* Brussels Marriott Hotel<br />
<br />
Coffee, tea and snacks will be served starting at 8:45am. Lunch will be provided.<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname) and will be attending:<br />
<br />
* Oleg Bartunov<br />
* Andrew Dunstan<br />
* Etsuro Fujita<br />
* Magnus Hagander<br />
* Petr Jelinek<br />
* Alexander Korotkov<br />
* Noah Misch<br />
* Bruce Momjian<br />
* Simon Riggs<br />
* Dave Page<br />
* Masahiko Sawada<br />
* Teodor Sigaev<br />
* Tomas Vondra<br />
<br />
The following people have sent their apologies:<br />
<br />
* Dimitri Fontaine<br />
* Kyotaro Horiguchi<br />
* Amit Kapila<br />
* Tom Lane<br />
* Thomas Munro<br />
* Michael Paquier<br />
* Craig Ringer<br />
<br />
==Agenda Items==<br />
<br />
Please add agenda items here!<br />
<br />
* Sharding update<br />
<br />
* Setting up the Release Management Team for Postgres 10.0<br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:10<br />
|Welcome and introductions<br />
|Dave<br />
<br />
|- <br />
|09:10 - 09:30<br />
|10.0 Release Schedule<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 11:00<br />
|Coffee break<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:30 - 13:30<br />
|Lunch<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|15:00 - 15:30<br />
|Tea break<br />
|All<br />
<br />
|- <br />
|16:30 - 17:00<br />
|Any other business<br />
|Dave<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|17:00<br />
|Finish<br />
|<br />
|}<br />
<br />
== Minutes ==</div>Simonhttps://wiki.postgresql.org/index.php?title=FOSDEM/PGDay_2017_Developer_Meeting&diff=29127FOSDEM/PGDay 2017 Developer Meeting2017-01-04T13:50:18Z<p>Simon: /* RSVPs */</p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for Thursday 2nd February, 2017 at the Brussels Marriott Hotel, prior to FOSDEM/PGDay 2017. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 9.6 and 10 release cycles. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Review the progress of the 10.0 schedule, and formulate plans to address any issues<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
<br />
== Time & Location ==<br />
<br />
The meeting will be:<br />
<br />
* 9:00AM to 5:00PM<br />
* Brussels Marriott Hotel<br />
<br />
Coffee, tea and snacks will be served starting at 8:45am. Lunch will be provided.<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname) and will be attending:<br />
<br />
* Oleg Bartunov<br />
* Andrew Dunstan<br />
* Etsuro Fujita<br />
* Magnus Hagander<br />
* Petr Jelinek<br />
* Alexander Korotkov<br />
* Noah Misch<br />
* Bruce Momjian<br />
* Simon Riggs<br />
* Dave Page<br />
* Masahiko Sawada<br />
* Teodor Sigaev<br />
* Tomas Vondra<br />
<br />
The following people have sent their apologies:<br />
<br />
* Dimitri Fontaine<br />
* Kyotaro Horiguchi<br />
* Amit Kapila<br />
* Tom Lane<br />
* Thomas Munro<br />
* Michael Paquier<br />
* Craig Ringer<br />
<br />
==Agenda Items==<br />
<br />
Please add agenda items here!<br />
<br />
Sharding update<br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:10<br />
|Welcome and introductions<br />
|Dave<br />
<br />
|- <br />
|09:10 - 09:30<br />
|10.0 Release Schedule<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 11:00<br />
|Coffee break<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:30 - 13:30<br />
|Lunch<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|15:00 - 15:30<br />
|Tea break<br />
|All<br />
<br />
|- <br />
|16:30 - 17:00<br />
|Any other business<br />
|Dave<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|17:00<br />
|Finish<br />
|<br />
|}<br />
<br />
== Minutes ==</div>Simonhttps://wiki.postgresql.org/index.php?title=PgConf.Asia_2016_Developer_Meeting&diff=28737PgConf.Asia 2016 Developer Meeting2016-12-01T06:52:59Z<p>Simon: </p>
<hr />
<div>A meeting of the interested PostgreSQL developers is being planned for the morning of Thursday 1st December, 2016 in Tokyo, prior to PGConf.Asia 2016. In order to keep the numbers manageable, this meeting is by '''invitation only'''. Unfortunately it is quite possible that we've overlooked important individuals during the planning of the event - if you feel you fall into this category and would like to attend, please contact Dave Page (dpage@pgadmin.org).<br />
<br />
Please note that the attendee numbers have been kept low in order to keep the meeting more productive. Invitations have been sent only to developers that have been highly active on the database server over the 9.6 release cycle. We have not invited any contributors based on their contributions to related projects, or seniority in regional user groups or sponsoring companies.<br />
<br />
The afternoon will be a Developer Unconference, open to a wider audience.<br />
<br />
This is a PostgreSQL Community event.<br />
<br />
== Meeting Goals ==<br />
<br />
* Review the progress of the 10.0 schedule, and formulate plans to address any issues<br />
* Address any proposed timing, policy, or procedure issues<br />
* Address any proposed [http://en.wikipedia.org/wiki/Wicked_problem Wicked problems]<br />
<br />
== Time & Location ==<br />
<br />
The event will be held on the fifth floor (using American/Japanese style counting) in room 5A at:<br />
<br />
Akihabara Convention Hall<br />
Akihabara Dai Bldig 4F 1-18-13 Sotokanda, <br />
Chiyoda-ku,<br />
Tokyo 101-0021, <br />
Japan<br />
<br />
Please see the [http://www.akibahall.jp/data/access_eng.html website] for details of how to reach the hall.<br />
<br />
The morning session (9AM - 12PM) will be used for a structured meeting, and the afternoon session (1PM - 5PM) will be used for a 2 track mini unconference for invitees to the morning session and other interested developers.<br />
<br />
[[PGConf.ASIA2016 Developer Unconference]]<br />
<br />
== RSVPs ==<br />
<br />
The following people have RSVPed to the meeting (in alphabetical order, by surname) and will be attending:<br />
<br />
* Joe Conway<br />
* Etsuro Fujita<br />
* Magnus Hagander<br />
* Kyotaro Horiguchi<br />
* Kohei KaiGai<br />
* Bruce Momjian<br />
* Dave Page<br />
* Michael Paquier<br />
* Simon Riggs<br />
* Masahiko Sawada<br />
* Teodor Sigaev<br />
* Tomas Vondra<br />
* Amit Kapila<br />
* Takayuki Tsunakawa<br />
<br />
==Agenda==<br />
<br />
{| border="1" cellpadding="4" cellspacing="0"<br />
!Time<br />
!Item<br />
!Presenter<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|09:00 - 09:10<br />
|Welcome and introductions<br />
|Dave<br />
<br />
|- <br />
|9:10 - 9:20<br />
|10.0 Release Schedule (ref: https://wiki.postgresql.org/wiki/PgCon_2016_Developer_Meeting#9:55_-_10:05_.09Next_Release_Schedule_.09All)<br />
|All<br />
<br />
|- <br />
|9:20 - 9:35<br />
|Status report of the first two commit fests already done for PG10 development cycle.<br />
|Michael<br />
<br />
|- <br />
|9:35 - 9:50<br />
|Reviewing unreviewed patches<br />
|Simon<br />
<br />
|- <br />
|9:50 - 10:00<br />
|Revoking Committer access for inactive committers (ref: https://wiki.postgresql.org/wiki/PgCon_2015_Developer_Meeting#Committers)<br />
|Simon<br />
<br />
|- <br />
|10:00 - 10:15<br />
|Providing information for applications which support PostgreSQL<br />
|KaiGai/MauMau<br />
<br />
|- <br />
|10:15 - 10:30<br />
|Revisit varlena for larger data support (>1GB)<br />
|KaiGai<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|10:30 - 10:45<br />
|Coffee break<br />
|All<br />
<br />
|- <br />
|10:45 - 11:05<br />
|Transaction control for statement-level rollback and stored procedures<br />
|MauMau<br />
<br />
|- <br />
|11:05 - 11:25<br />
|Multi-model database - beyond relational<br />
|MauMau<br />
<br />
|- <br />
|11:25 - 11:45<br />
|The future of built-in Postgres sharding<br />
|Bruce<br />
<br />
|- <br />
|11:45 - 11:55<br />
|Any other business<br />
|Dave<br />
<br />
|- <br />
|11:55 - 12:00<br />
|Group photo<br />
|All<br />
<br />
|- style="font-style:italic;background-color:lightgray;"<br />
|12:00<br />
|Lunch<br />
|<br />
|}<br />
<br />
==Agenda Items==<br />
<br />
Please list any agenda items below for inclusion on the schedule.<br />
* 10.0 Release Schedule (all) - see https://wiki.postgresql.org/wiki/PgCon_2016_Developer_Meeting#9:55_-_10:05_.09Next_Release_Schedule_.09All<br />
* Status report of the first two commit fests already done for PG10 development cycle. (Michael)<br />
* Providing information for applications which support PostgreSQL (KaiGai/MauMau)<br />
* The future of built-in Postgres sharding (Bruce)<br />
* Revisit varlena for larger data support (>1GB) (KaiGai)<br />
* Multi-model database - beyond relational (MauMau)<br />
* Transaction control for statement-level rollback and stored procedures (MauMau)<br />
* Reviewing unreviewed patches (Simon)<br />
* Revoking Committer access for inactive committers (not looking for a binding decision since not everybody is present) (Simon)<br />
<br />
==Minutes==<br />
<br />
'''Introductions:'''<br />
<br />
Anti-clockwise, starting with Dave: Dave, Magnus, Joe, Masahiko, Michael, Amit, KaiGai, Takayuki (MauMau), Simon, Tomas, Kyotaro, Etsuro <br />
<br />
<br />
'''10.0 Release Schedule:'''<br />
<br />
Dave: [Review of timeline discussed in Ottawa]<br />
<br />
Michael: We appear appear to be on track. Schedule looks to be in good shape:<br />
<br />
Amit: We need to look at the individual big patches - are we on time with them?<br />
<br />
Magnus: Do we want to push the release if we want some of the outstanding features?<br />
<br />
Dave: If we want to push the release for a specific feature, there will be strong push back.<br />
<br />
General opinion seems to be that we should not push the release - but if we want specific patches, we need to knuckle down.<br />
<br />
Bruce: Are there any specific patches? Multivariate stats<br />
<br />
Magnus: pg_logical<br />
<br />
Bruce: Is there a sense that stuff is languishing in the commitfests?<br />
<br />
Simon: MV stats is in that position.<br />
<br />
Michael: MV stats has been pushed 3 or 4 times now.<br />
<br />
''All agree schedule looks good, there should (as usual) be no pushing of the release, and that we should select a new RMT at/following the FOSDEM developer meeting.''<br />
<br />
<br />
'''Status report of the first two commit fests already done for PG10 development cycle:'''<br />
<br />
Michael: 1st commitfest was the largest ever, with 220 patches! Lots of new features submitted. At end of commitfest, noted that there were ~70 patches awaiting author. The 2nd commitfest finishes today. There are a lot of patches awaiting review, not so many waiting for author, and a couple waiting for committer. For the last couple of months, people have begun to use the CF app for tracking bug fix patches (which is good), but these are not receiving much attention. 12 patches are bug fixes ATM, only 5 are ready for committer.<br />
<br />
There are a lot of small patches which people seem to like reviewing, whilst bigger patches get less attention. For example, the cmake patch, or WAL logging for hash indexes which is a 130K patch, or MV stats which is 500K(!)<br />
<br />
Amit: Covering indexes is getting bounced from CF to CF. <br />
<br />
Magnus: That one is getting returned with feedback though - it's going through the process.<br />
<br />
Dave: Is it the norm that patches are getting bounced?<br />
<br />
Amit/Michael: Yes, for the large complex ones.<br />
<br />
Dave: So do commitfests still work?<br />
<br />
Joe: The tracking is very important<br />
<br />
Michael: Yes, the concept is very good. We can't stop people being uninterested in the reviewing, but it's great when it does work.<br />
<br />
Bruce: Some of this is just really hard, grungy work - and people don't always want to do it.<br />
<br />
<br />
'''Segway to: Reviewing unreviewed patches:'''<br />
<br />
Michael: Before the segway, we should consider large patches that won't make it - I suggest that cmake is in that position.<br />
<br />
Joe: We should have a way on the CF app to show if people actually want patches.<br />
<br />
[side discussion on Cmake]<br />
<br />
Magnus: One of the reasons for the FOSDEM meeting is that we can use that for final kicking out of patches.<br />
<br />
Simon: This does follow on. I would welcome a list of things that we all want to go into the release. That's why I wrote PITR - it was at the top of the TODO list. [To Amit]: I'm happy to review your WAL/Hash indexes patch, but it hasn't changed since September and now has failures so I can't review it. We should have a CI system for ongoing testing of large patches. We should track large changes in GIT rather than using patches.<br />
<br />
Magnus: Very few patches have git info on them in the CF app<br />
<br />
Dave: We had this discussion at lunch yesterday - essentially, a superset of committers and trusted folks could mark patches as non-malicious, at which point they can be added to a branch for daily CI builds.<br />
<br />
Simon: I just want to git-pull to get the latest version of your work, as some of these patches are huge. If we allow the patch author and committers to update a public branch, then others could submit patches to that - patch on patch.<br />
What I would like is nominate important/large patches and put them on a postgresql.org controlled git repo, which would allow them to be re-checked daily to avoid bit-rot. The author would be emailed if the patch fails, and would have access to that repo to correct bitrot. It is important that the first patch is submitted to the list, for all the normal reasons. After that we should be using the best modern tech to work collaboratively on important patches: git.<br />
<br />
Dave: This is complex - we're not going to fix it here.<br />
<br />
Joe: Let's discuss in the unconference.<br />
<br />
<br />
'''Revoking Committer access for inactive committers:'''<br />
<br />
Magnus: We have rules on this, passed at the 2015 meeting: "Dave proposed some rules on retiring inactive committers. 24 months zero commits, they get removed from the active lists. Passed."<br />
<br />
Simon: I raise this here, as it's the first dev meeting in Japan and rules would affect a Japanese developer. I propose to implement the previously discussed rule which would affect Itagaki Takahiro - and be clear that it is a general rule and nothing personal.<br />
<br />
Dave: Noted - this does need to be proposed through the private committers list.<br />
<br />
*'''ACTION ITEM''': Simon to email priv-committers.<br />
<br />
<br />
'''Providing information for applications which support PostgreSQL:'''<br />
<br />
KaiGai: Please see the wiki page for "Ecosystem:Business Intelligence (BI)". This is useful info for people who want to choose a database system. I think we need a good central point of information about what systems work with PostgreSQL.<br />
<br />
Dave: We have the Product Catalogue on the website. Why not use that?<br />
<br />
KaiGai: I think it makes sense to maintain the central point of information, not just for applications, but also for use cases/references.<br />
<br />
MauMau: Customers often ask if Postgres works with different software.<br />
<br />
Dave: So if I understand correctly, the issues are application compatibility for which we have the product catalogue, and users/case studies for which we have a page on the website that is largely unmaintained.<br />
<br />
Joe: It can be hard to get permission to release info like case studies from large companies.<br />
<br />
KaiGai: Simon, do 2ndQuadrant have case studies?<br />
<br />
Simon: My marketing people would be ecstatic if we put our case studies on postgresql.org<br />
<br />
Tomas: We could just have a form that companies can update their info on<br />
<br />
Dave: We have that, just without specific links for case studies. <br />
<br />
Magnus: We have a political decision - who should be able to publish? What about Amazon RDS or Aurora? Where do you draw the line?<br />
<br />
Simon: If it's on postgresql.org, we should copy the content to avoid abuse. Secondly - to be listed as a platinum sponsor, you must be able to provide 2 case studies (for example).<br />
<br />
<br />
'''Revisit varlena for larger data support (>1GB):'''<br />
<br />
KaiGai: Postpone to unconference, to get us back on time!<br />
<br />
<br />
'''Transaction control for statement-level rollback and stored procedures:'''<br />
<br />
MauMau: The motivation is to migrate users from other databases. We failed to aquire a particular customer following a benchmark - their legacy application used a legacy Cobol precompiler. We chose to use the Microfocus Cobol compiler. The application is essentially a batch application that issues many statements in a single transaction. The customer couldn't meet the performance requirements, one reason was that they needed statement level rollback. Both pgJDBC and ODBC emulate this using savepoints - but that has a high round-trip time. We want statement level rollback without using savepoints. What I want to ask here is, is it easy to implement statement level rollback? <br />
<br />
Amit: What is statement level rollback?<br />
<br />
Simon: He wants to use subtransactions around each statement. Use BeginInternalSubTransaction to do this, not Savepoints.<br />
<br />
MauMau: Is it difficult to implement this in PostgreSQL?<br />
<br />
Simon: I think it would be reasonable to have a parameter to allow the user to specify transaction behaviour.<br />
<br />
Michael: Can you use Craig Ringer's libpq batch handling work?<br />
<br />
Amit: It's better if you can propose a draft patch.<br />
<br />
Simon: I think we can deal with this server-side with some changes in tcop. I'm writing some notes about it now for later discussion.<br />
<br />
MauMau: Next is stored procedure support. Various people have tried to implement stored procedures<br />
<br />
Dave: You're looking for different transactional control, rather than the calling convention which is the only different in the SQL standard from stored functions?<br />
<br />
Joe: Right - the standard just differentiates on the calling convention, not the transactional side.<br />
<br />
Simon: It doesn't really matter what they're called - the point is that users should have the ability to deal with transactions. It shouldn't be a major problem - we should be able to read the definition in one snapshot, then use more snapshots as needed whilst runnning the code.<br />
<br />
''Everyone seems to agree this is useful, but noone is working on this right now.''<br />
<br />
Joe: I don't think there's 100% agreement on what a stored proceudre in Postgres actually is.<br />
<br />
<br />
'''Multi-model database - beyond relational:'''<br />
<br />
MauMau: We are seeing more use of non-relational technologies these days. Is PostgreSQL going into other areas in order to become more popular? At the moment the DB rankings show Postgres at number 4, but I'm worried. Should we do more in document storage, KV, graph etc? Does the Postgres community want to enter into the wider database war?<br />
<br />
Bruce: I think our community in general has done a poor job of adressing multi-modal, but we're so good at accepting ideas that we succeed. We've had people in the community who are visionary, and we;'ve been good at allowing them to expand. We've been successful, but we never really planned this.<br />
<br />
Tomas: We never get a use case for a multi-modal database. We're not oppposed to it though.<br />
<br />
KaiGai: People who have relational skills are more in demand. I think the key is the extendablility of PostgreSQL.<br />
<br />
Magnus: I think the issue is mostly having a good API<br />
<br />
MauMau: I heard in the past the PostgreSQL made a decision not to leave the relational world.<br />
<br />
Bruce: I think you're thinking transactional control<br />
<br />
Simon: Postgres is "beyond relational" so you're already there!<br />
<br />
Tomas: The docs still call us an ORDBMS<br />
<br />
<br />
'''The future of built-in Postgres sharding:'''<br />
<br />
Bruce: Because of various people I've talked to, I got on the bandwagon a couple of years ago that we should include built in sharding. I'm very happy with the progress we've made. A lot of work has happened in Japan, and I wanted to ask if anyone has any comments or feedback.<br />
<br />
Simon: I see a lot fo work happening, but I don't know why. If someone can explain why, then I might be able to back it. If I knew what you were doing, then I might help<br />
<br />
Etsuro: I don't have an idea of the overall picture of sharding, but my understanding is basically based on FDWs. For now, we are focussing on building such building blocks, and after improving such features, we can discuss the future of the overall architecture.<br />
<br />
Simon: If we have something to talk about now, I'd like to talk about it for 10.0. I'd like to discuss this this afternoon.<br />
<br />
Bruce: NTT maintained XC for 10 years for little gain - most of that problem was the forked code. NOW, we should be able to get the benefits with sharding.<br />
<br />
Joe: Is there a wiki page for this, listing all the building blocks and their status?<br />
<br />
Bruce: I have a file on my laptop, as I've experienced so much negativity.<br />
<br />
Simon: We need a clear statement on what people are trying to do, even if they're trying to do it in different ways. I want a detailed discussion on what we're trying to do.<br />
<br />
Dave: Is there anything on the wiki at all Bruce?<br />
<br />
Bruce: No<br />
<br />
Dave: How about creating a wiki page with your vision on it, listing the goals and how the building blocks will fit together to meet those goals. Put a disclaimer on it so people don't think it's official or an EDB roadmap.<br />
<br />
Tomas: I can't discuss it with you sensibly without a proposal. I'm concerned that we'll damage foreign data wrappers in a bid to make them more suitable for sharding.<br />
<br />
*'''ACTION ITEM:''' Bruce to document sharding ideas. [https://wiki.postgresql.org/wiki/Built-in_Sharding Wiki page created]</div>Simon