{"action":"created","issue":{"url":"https://api.github.com/repos/debezium/debezium/issues/144","repository_url":"https://api.github.com/repos/debezium/debezium","labels_url":"https://api.github.com/repos/debezium/debezium/issues/144/labels{/name}","comments_url":"https://api.github.com/repos/debezium/debezium/issues/144/comments","events_url":"https://api.github.com/repos/debezium/debezium/issues/144/events","html_url":"https://github.com/debezium/debezium/pull/144","id":191658505,"number":144,"title":"DBZ-3 Implements a Debezium Connector for ingesting Postgresql changes via logical decoding","user":{"login":"hchiorean","id":995683,"avatar_url":"https://avatars.githubusercontent.com/u/995683?v=3","gravatar_id":"","url":"https://api.github.com/users/hchiorean","html_url":"https://github.com/hchiorean","followers_url":"https://api.github.com/users/hchiorean/followers","following_url":"https://api.github.com/users/hchiorean/following{/other_user}","gists_url":"https://api.github.com/users/hchiorean/gists{/gist_id}","starred_url":"https://api.github.com/users/hchiorean/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hchiorean/subscriptions","organizations_url":"https://api.github.com/users/hchiorean/orgs","repos_url":"https://api.github.com/users/hchiorean/repos","events_url":"https://api.github.com/users/hchiorean/events{/privacy}","received_events_url":"https://api.github.com/users/hchiorean/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-11-25T09:29:29Z","updated_at":"2016-11-25T09:40:11Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/debezium/debezium/pulls/144","html_url":"https://github.com/debezium/debezium/pull/144","diff_url":"https://github.com/debezium/debezium/pull/144.diff","patch_url":"https://github.com/debezium/debezium/pull/144.patch"},"body":"## Prerequisites\r\n- PostgreSQL >= 9.4 configured to allow logical replication\r\n- Debezium [postgres-decoderbufs plugin](https://github.com/debezium/postgres-decoderbufs) installed in the server\r\n\r\n## Known issues and limitations\r\n- no DDL support - this is a limitation of Postgres' logical decoding feature, which does not provide this information\r\n- no automatic failover support - neither `warm` nor `hot` standby replicas support logical decoding slots. In other words, logical decoding can only be done from the `master` server. In case of a cluster failure, after a new `master` has been promoted, the connector has to be pointed to the new node and restarted\r\n- current implementation has only been tested on `UX` OSes. When dealing with Windows, the plugin has to be(most likely) natively complied on Windows and installed in the Windows Postgres server\r\n\r\n## Features and description\r\nTo be able to perform logical replication, the connector relies on a feature of the [Postgres JDBC Driver](https://github.com/pgjdbc/pgjdbc/pull/550) *which has not yet been released*. As such, the current PR *incorporates and uses a version of the JDBC driver where this feature is present*. Once this is finally released, we'll want to update the connector and use the official driver.\r\n\r\nSimilar to the MySQL connector, this connector supports both taking snapshots and streaming incoming changes. With the exception of the DDL related parts, the PostgreSQL connector supports pretty much the same configuration options as the MySQL connector. It also generates events using the same structure and topics as the MySQL connector.\r\n\r\nOne significant difference from the MySQL connector is about how \"multiple databases\" are handled: in MySQL one can actually have different database instances and the MySQL connector reflects this for example when it comes to filters. In PostgreSQL however, the preferred way of doing this is *using different schemas* within the same server and physical database. As such, this connector reflects this distinction and updates some of the `debezium-core` classes to handle multiple schemas.\r\n\r\nAlso, since PostgreSQL has different custom datatypes than MySQL, this PR adds some more semantic types to Debezium which are used to represent this information: `io.debezium.data.geometry.Point`, `io.debezium.data.Xml` and `io.debezium.data.Uuid`\r\n\r\nThe testing and development for this connector has been done using [Debezium's PostgreSQL docker image](https://github.com/debezium/docker-images/tree/master/postgres/9.6) which is a vanilla Postgres 9.6 Debian installation with the previously mentioned plugin installed."},"comment":{"url":"https://api.github.com/repos/debezium/debezium/issues/comments/262917056","html_url":"https://github.com/debezium/debezium/pull/144#issuecomment-262917056","issue_url":"https://api.github.com/repos/debezium/debezium/issues/144","id":262917056,"user":{"login":"hchiorean","id":995683,"avatar_url":"https://avatars.githubusercontent.com/u/995683?v=3","gravatar_id":"","url":"https://api.github.com/users/hchiorean","html_url":"https://github.com/hchiorean","followers_url":"https://api.github.com/users/hchiorean/followers","following_url":"https://api.github.com/users/hchiorean/following{/other_user}","gists_url":"https://api.github.com/users/hchiorean/gists{/gist_id}","starred_url":"https://api.github.com/users/hchiorean/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hchiorean/subscriptions","organizations_url":"https://api.github.com/users/hchiorean/orgs","repos_url":"https://api.github.com/users/hchiorean/repos","events_url":"https://api.github.com/users/hchiorean/events{/privacy}","received_events_url":"https://api.github.com/users/hchiorean/received_events","type":"User","site_admin":false},"created_at":"2016-11-25T09:40:11Z","updated_at":"2016-11-25T09:40:11Z","body":"@rhauch : Travis fails atm before even getting to the Postgresql connector with:\r\n\r\n`[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.18.1:start (start) on project debezium-connector-mysql: I/O Error: Unable to create container for [debezium/mysql-server-test-database]: Conflict. The name \"/database\" is already in use by container 23791d3d4a129b7054d44c4929f4b40c529ef7234f6fa11565f9d1f91622c421. You have to remove (or rename) that container to be able to reuse that name. (Conflict: 409) -> [Help 1]`\r\n\r\nNot sure why that is....."}}
{"actor":{"display_login":"hchiorean"}}