Release Date: 2014-02-12
This release contains new feature in and a variety of fixes in 1.2.
A dump/restore is not required for those running 1.1.X or 1.0.x.
Postgres-XC is a symmetric (multi-master, read and write-scalable) shared-nothing cluster based on PostgreSQL. This release version is based on PostgreSQL 9.3.
Currently the only architectures supported are 64 bit Linux operating systems.
This release of Postgres-XC is the third major release and contains the following features, characteristics and enhancements.
Support and extensions for existing features of PostgreSQL in a cluster-wide environment.
SQL extensions and functionalities exclusive to Postgres-XC for management and operations related to a cluster, which add a node-level granularity for cluster operations.
Creation of Global Transaction Manager (GTM), which is a centralized component providing cluster-wide Multi-version Concurrency Control (MVCC).
Creation of mechanisms exclusive to Postgres-XC and enhancements of existing internal mechanisms of PostgreSQL, which are related to connection pooling, global transaction management, query planning, rewriting, analyzing and execution.
Add/remove nodes while Postgres-XC cluster is in operation.
Basic Postgres-XC configuration and operation tool.
Restrictions related to existing features in PostgreSQL and currently not supported by Postgres-XC.
The above items are explained in more detail in the sections below.
The original overall architecture and design of Postgres-XC is by Koichi Suzuki, Mason Sharp, Pavan Deolasee, Andrei Martsinchyk and Michael Paquier. Koichi Suzuki is the original project lead.
Core member at the time of Version 1.2 released is Koichi Suzuki, Ashutosh Bapat, Ababs Butt, Ahsan Hadi, Masataka Saito, Tetsuo Sakata, Masaki Hisada and Hitoshi Hemmi.
New planner feature to handle sub-queries, by Ashutosh Bapat.
Materialized view was ported to XC, done by Ashutosh Bapat
Event Trigger was ported to XC, done by Koichi Suzuki
Automatic updatable views was ported to XC, done by Abbas But
LATERAL was ported to XC, done by Ashutosh Bapat
Additonal tests in xc_FQL regression. by Ashutosh Bapat.
There are no interface changes except for new features.
Fix false report of partition column updation. By Abbas But.
Fix for alias problem in returning list of INSERT statements. By Abbas But.
Fix a problem in RETURNING support when all the items of the list and ont shipable. By Abbas But.
Change the way UPDATEs are handeled, by updating all the columns of the result relation instead of updating only the columns that were in the target list. Needed to support automatic updatable views. By Abbas But.
Fix for all problems emerging because the query deparsing system now generates unique rtable names by appending digits. By Abbas But.
apn issue that GTM Proxy doesn't send status in response of COMMIT and ROLLBACK. By Masataka Saito.
Fix an issue that a GTM Proxy sends MSG_BACKEND_DISCONNECT command with wrong proxy connection ID. by Masataka Saito.
Fix the issue that a GTM Proxy sends error responses via unrelated connection. By Masataka Saito.
Fix the bug 440, gtmProxySpecificExtraConfig does not work with pgxc_ctl, by Koichi Suzuki
Fix makesgml to run at Solaris 10, by Michael Paquier.
Correct GTM-Proxy code to build at Solaris 10, by Matt Warner.
Correct pgxc_ctl to build and run on more platforms including Mas OS-X, by Koichi Suzuki.
Change the level of some mesasge from GTM standby, by Koichi Suzuki.
Fix potential memory leak at GTM, by Nikhil Sontakke.
Allow GTM to create more than 1024 sequences, by Koichi Suzuki.
Fix initdb usage and error message bug, by Masataka Saito.
Fix GTM issue associated with multiple GXID request frm GTM Proxy, by Nikhil Sontakke.
Fix GTM proxy disconnect handling, by Andrei Martinchyk.
Fix of GTM proxy potential memory leak, by Andrei Martinchyk.
Fix of message level for BARRIER, by Koichi Suzuki.
GTM Slave configuration printout fix, by Mason Sharp.
Fix pgxc_ctl to elminate extra character generated by datanode_cmd.c (pgxc_ctl), by Mason Sharp.
Fix invalid gtm_ctl option generaged by gtm_cmd.c (pgxc_ctl), by Mason Sharp.
Fix incorrect gtm_proxy selection by datanode_cmd.c (pgxc_ctl), by Mason Sharp.
Fix of fast query shipping at pgxc_is_join_shippable(), by Ashutosh Bapat.
Fix GTM to close the control file, by Stefan Himpich.
Fix int4 regression by removing int4_1.out and add ORDER BY to some statements, by Koichi Suzuki.
Fix copy command buffere overflow, by Koichi Suzuki.
UPDATE is performed based on CTID of each tuple. This may affect replicated tables. This should be fixed by GA.
PostgreSQL 9.3 fixed a bug to check row update during firing of BEFORE ROW triggers. This bug is still open in Postgres-XC.
SERIALIZABLE and REPEATABLE READ transaction isolation modes are not supported.
Only constraints which can be enforced only locally to a datanode are supported. For example, UNIQUE constraints for non-distribute column is not supported in distributed tables.
Using complicated statement in PREPARE steatement may not be supported (depends upon specific statement).
Row triggers do not work with COPY.
Privilege to views may not work correctly.
COPY TO from replicated table does not work.
Quoted cast may not work. For example, select "my table".*::"my table" from "my table"; does not work. Use select row("my table".*) from "my table"; instead.
SQL functions containing utility statement may not work.
DML cannot be used in plpgsql functions.
CREATE TABLE AS EXECUTE is not supported.
WHERE CURRENT OF is not supported.
In cursors, MOVE BACKWARD works only if SCROLL is used in the cursor.
WITH HOLD cursors are not supported.
Foreign Data Wrapper is not supported. Following related SQL statements are not supported.
CREATE FOREIGN DATA WRAPPER, ALTER FOREIGN DATA WRAPPER, DROP FOREIGN DATA WRAPPER, CREATE FOREIGN TABLE, ALTER FOREIGN TABLE, DROP FOREING TABLE, CREATE SERVER, ALTER SERVER, DROP SERVER, CREATE USER MAPPING, ALTER USER MAPPING, DROP USER MAPPING.
Savepoint is not supported. Following related SQL statements are not supported.
SAVEPOINT, RELEASE SAVEPOINT and ROLLBACK TO SAVEPOINT.
LISTEN, UNLISTEN and NOTIFY work only locally at a coordinator.
SECURITY LABEL is not supported.
Exception block in plpgsql is not available because SAVEPOINT is not supported.
Distribution key of a table cannot be updated.
Statistics are not collected globally. These statistic data are maintained locally to each node.
BARRIERs do not have timeout, meaning if a 2PC transaction is stuck forever, barrier will be stuck too.
CREATE TABLE SELECT statement will cause error if SELECT statement involves aggregate functions such that its transition function returns different type of row from the final row.
Regression test may have random failure. You can run the regression again to see if the test is successful.