{"push_id":1259667088,"size":26,"distinct_size":26,"ref":"refs/heads/support_replication_protocol","head":"e641767068c5c1680261a5227a5054230e90aec2","before":"9bff16a023f407cd50946cf19636b84ffa51dcce","commits":[{"sha":"4019ed63f27a17c9f381e784fb3e72b2ad64d6fe","author":{"name":"Vladimir Sitnikov","email":"c511ca259824c185379b5b2cbb7545002f1fa331@gmail.com"},"message":"chore: update to 1.1.0 version of parent pom to upgrade bndlib 2.3.0 -> 2.4.0\n\nIt solves the following:\nCaused by: java.lang.ClassNotFoundException: aQute.bnd.osgi.Analyzer\n\tat org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)\n\tat org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)\n\tat org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)\n\tat org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)\n\t... 54 more","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/4019ed63f27a17c9f381e784fb3e72b2ad64d6fe"},{"sha":"0452e79c42ca6fb493b21956b43a37ae93fbcda0","author":{"name":"Vladimir Sitnikov","email":"c511ca259824c185379b5b2cbb7545002f1fa331@gmail.com"},"message":"chore: use latest java version for one of Java 8 Travis jobs","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/0452e79c42ca6fb493b21956b43a37ae93fbcda0"},{"sha":"edcdccd658cbf3f2bfd677901f7bebac13a6259b","author":{"name":"Vladimir Sitnikov","email":"c511ca259824c185379b5b2cbb7545002f1fa331@gmail.com"},"message":"refactor: introduce ResultHandlerBase to factor out common error processing logic","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/edcdccd658cbf3f2bfd677901f7bebac13a6259b"},{"sha":"adc08d57d2a9726309ea80d574b1db835396c1c8","author":{"name":"Vladimir Sitnikov","email":"c511ca259824c185379b5b2cbb7545002f1fa331@gmail.com"},"message":"feat: reset server-prepared statements on deallocate/discard, ability to autorollback on sqlexception from executing a query\n\nBug report: http://stackoverflow.com/questions/34180932/error-cached-plan-must-not-change-result-type-when-mixing-ddl-with-select-via\n\n1) If \"DEALLOCATE\" or \"DISCARD\" command status is observed, the driver would invalidate cached statements,\nand subsequent executions would go through parse, describe, etc.\n\nThis feature is enabled by deafault.\n\n2) If fails with \"cached plan must not change result type\", then re-parse might solve the problem.\nHowever, if there a pending transaction, then the error would kill the transaction.\nFor that purpose, the driver sets a savepoint before each statement.\n\nAutomatic savepoint is configured via autosave property that can take the following values:\n * conservative (default) -- rollback to savepoint only in case of \"prepared statement does not exist\" and\n   \"cached plan must not change result type\". Then the driver would re-execute the statement ant it would pass through\n * never -- never set automatic safepoint. Note: in this mode statements might still fail with \"cached plan must not change result type\"\n   in autoCommit=FALSE mode\n * always -- always rollback to \"before statement execution\" state in case of failure. This mode prevents \"current transaction aborted\" errors.\n   It is similar to psql's ON_ERROR_ROLLBACK.\n\nThe overhead of additional savepoint is like 3us (see #477).\n\nfixes #451\ncloses #423\nfixes #617\ncloses #477","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/adc08d57d2a9726309ea80d574b1db835396c1c8"},{"sha":"aa53fbae604ade36b84ad22393b800e11e030829","author":{"name":"Vladimir Sitnikov","email":"c511ca259824c185379b5b2cbb7545002f1fa331@gmail.com"},"message":"fix: add a test case when \"deallocate all\" detector is turned off","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/aa53fbae604ade36b84ad22393b800e11e030829"},{"sha":"17c8afb11c319255aeffc93617545181d20400a3","author":{"name":"Vladimir Sitnikov","email":"c511ca259824c185379b5b2cbb7545002f1fa331@gmail.com"},"message":"fix: invalidate prepared statement cache when \"set search_path=...\" query is detected\n\nfixes #496","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/17c8afb11c319255aeffc93617545181d20400a3"},{"sha":"191ccf2ceca2e4159027de0ff5eaed4a4b4f1fe1","author":{"name":"Vladimir Sitnikov","email":"c511ca259824c185379b5b2cbb7545002f1fa331@gmail.com"},"message":"fix: properly account cache size when duplicate entries returned to the cache\n\nThis might happen for cases like\nString sql = ...;\na = con.prepareStatement(sql);\nb = con.prepareStatement(sql);\na.execute();\na.close();\nb.execute();\nb.close(); // <-- here an entry with the same key is returned to the cache","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/191ccf2ceca2e4159027de0ff5eaed4a4b4f1fe1"},{"sha":"07c790234496b4b36fe9dbdffdb33b75f0989036","author":{"name":"AlexElin","email":"aa2e9b45459c68ff1c56d407971f423be5d7ffd7@list.ru"},"message":"refactor: use varargs in Gt.tr (#629)","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/07c790234496b4b36fe9dbdffdb33b75f0989036"},{"sha":"54a0d18ff10c535786602579181b38b0bd8e3be6","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"Add ability ignore test if sever version too old\n\nAdd HaveMinimalServerVersion annotation with ServerVersionRule that allow\nvia annotations ignore test if current version too old.\n\nExample\n@HaveMinimalServerVersion(\"8.4\")\npublic class CopyAPITest {\n    @Rule\n    private ServerVersionRule versionRule = new ServerVersionRule();\n\n    @Test\n    public void testCopyFromFile() throws Exception {\n        // test copy api introduce in 8.4 version\n    }\n}\n\npublic class LogicalReplicationTest {\n    @Rule\n    private ServerVersionRule versionRule = new ServerVersionRule();\n\n    @Test\n    @HaveMinimalServerVersion(\"9.4\")\n    public void testStartLogicalReplication() throws Exception {\n        // test logical replication introduced in 9.4\n    }\n}","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/54a0d18ff10c535786602579181b38b0bd8e3be6"},{"sha":"a118e4e83cc12e80656116b3af5884d4afa59a8f","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"feat: Add replication settings for Travis CI\n\nNow user in tests should have replication privilege and also postgres should be configure for accept replication connection, it necessary for test replication protocol","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/a118e4e83cc12e80656116b3af5884d4afa59a8f"},{"sha":"290596adda10068a9c6b1b0b38f807eaa12ce32f","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"feat: Add support CopyBothResponse('W') package for Copy API\n\nReplication protocol use CopyBothResponce package for initial bidirectional copy protocol.\nThen WAL data is sent as a series of CopyData messages. With periodical exchange KeepAlive package.","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/290596adda10068a9c6b1b0b38f807eaa12ce32f"},{"sha":"51966b0d413d0354152a68926daa293e6b4be124","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"feat: Add support Logical/Physical replication protocol\n\nReplication for protocol version 3 work via CopyAPI. For protocol version 2 replication protocol not supports.\nMain class for work with replication protocol it PGReplicationStream. It class hide low level\nreplication protocol and prediodical update status messages allow work only with payload.\n\nCurrent implementation faced with logical replication protocol bug:\nAfter close ReplicationStream backend not send CommandCompleate and ReadyForQuery packages.\nAs result it bug broke scenario when from replication stream fetches wals and send to another system for example elasticsearch asynchonize\n- after get first problem during asynchronize message send, replication protocol close and restart replication from last success send wal record.\n\nExample logical API:\n\n    PGReplicationStream stream =\n        pgConnection\n            .replicationStream()\n            .logical()\n            .withSlotName(\"test_decoding\")\n            .withSlotOption(\"include-xids\", false)\n            .withSlotOption(\"skip-empty-xacts\", true)\n            .start();\n    while (true) {\n      ByteBuffer buffer = stream.read();\n      //process logical changes\n    }\n\nExample physical API:\n    LogSequenceNumber lsn = getCurrentLSN();\n\n    PGReplicationStream stream =\n        pgConnection\n            .replicationStream()\n            .physical()\n            .withStartPosition(lsn)\n            .start();\n\n    while (true) {\n      ByteBuffer read = stream.read();\n      //process binary WAL logs\n    }","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/51966b0d413d0354152a68926daa293e6b4be124"},{"sha":"c3c17a334773a79d97e7446330717168c2381a82","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"Move all test on replication to separate suite","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/c3c17a334773a79d97e7446330717168c2381a82"},{"sha":"5f57c908c4a108e4db7e1c10a9f9e2884eb17bd5","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"Add information about PGReplicationStream#close overhead and workaround","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/5f57c908c4a108e4db7e1c10a9f9e2884eb17bd5"},{"sha":"b2cdbdd14e2619d59425a359b8d3969209c6b2c8","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"Add ability receive chenges from replication stream without blocking\n\nPeriodical check replication stream allow for example process asynchronize\nfeedback from external system that accept changes from logical replication\nstream more faster, because waiting new changes may take a lot of time that\nnot allow get feedback messages from external system where message can contain\nfail and we should restart replication from fail position but we can't because\nnew changes absent in replication stream.\n\nExample use:\n\n    PGReplicationStream stream =\n        pgConnection\n            .replicationStream()\n            .logical()\n            .withSlotName(SLOT_NAME)\n            .withStartPosition(getCurrentLSN())\n            .start();\n\n    while (true) {\n      ByteBuffer result = stream.readPending();\n      if(result == null) {\n        TimeUnit.MILLISECONDS.sleep(10);\n        continue;\n      }\n\n      //process message\n    }","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/b2cdbdd14e2619d59425a359b8d3969209c6b2c8"},{"sha":"61ddeb0d646c49ddae7f0d887acf62de739884df","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"Add more test for replication status","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/61ddeb0d646c49ddae7f0d887acf62de739884df"},{"sha":"adbb894fc00e3815baf264fe5d9830a839c4ef93","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"Update javadocs","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/adbb894fc00e3815baf264fe5d9830a839c4ef93"},{"sha":"b7670e812726e7dfeb6d7517c5e26ab9c559b6b0","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"Run replication tests on postgresql 9.4","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/b7670e812726e7dfeb6d7517c5e26ab9c559b6b0"},{"sha":"abcf2f7a4e447efcefbb1c67acec48045703d3d4","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"Add skip for 2 test only for postgres 9.4.5\n\nIt test fails because some bug was in postgres that also was fix\nin version between 9.4.5 - 9.4.8.","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/abcf2f7a4e447efcefbb1c67acec48045703d3d4"},{"sha":"a9c13e9614c2049c4ad5110267d612e7768e959a","author":{"name":"Vladimir Gordiychuk","email":"bea27daf8a56f969d5d24d08019170ca98ad2ff3@gmail.com"},"message":"bug: Fix floating because replication with have delay on update\n\nThis commit fix 2 bugs:\n\n1) Some times tests fail because replication slot still active, even if for\nreplication connection was send terminate package. That why now catching exception\nterminate backend and try drop replication slot again.\n\n2) pg_stat_replication updates with some delay, so, sometimes tests fail\nbecause from view gets null instead some LNS, now if we get null LSN we will wait some\ntime and try again.","distinct":true,"url":"https://api.github.com/repos/Gordiychuk/pgjdbc/commits/a9c13e9614c2049c4ad5110267d612e7768e959a"}]}
{"actor":{"display_login":"Gordiychuk"}}