Postgres-XC 1.2.1 Documentation | ||||
---|---|---|---|---|
Prev | Fast Backward | Appendix E. Release Notes | Fast Forward | Next |
Release Date: 2013-08-22
This release contains new feature in and a variety of fixes in 1.1.
A dump/restore is not required for those running 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.2.
Currently the only architectures supported are 64 bit Linux operating systems.
This release of Postgres-XC is the second 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 Version 1.1 is released is Koichi Suzuki, Ashutosh Bapat, Ababs Butt, Amit Khandaker, Ahsan Hadi, Takayuki Suto, Tetsuo Sakata, Masaki Hisada and Hitoshi Hemmi.
Node addition and removal while Postgres-XC cluster is in operation.
Added --restoremode option to pg_ctl to import catalog information from other coordinator/datanode, used when adding new node. By Koichi Suzuki and Abbas Butt
Added --include-nodes option to pg_dump and pg_dumpall to export node information as well. Mainly for node addition. By Abbas Butt.
Done by improving initdb, pg_dump/pg_dumpall and new function pgxc_lock_for_backup(), by Abbas Butt and Amit Khandekar.
pgxc_lock_for_backup() function to disable DDLs while new node is going to be added and catalog is exported to the new node. By Abbas Butt.
Row TRIGGER support. By Amit Khandelar and Ashutosh Bapat
RETURNING support. By Abbas Butt and Ashutosh Bapat
pgxc_ctl tool for Postgres-XC cluster configuration and operation (contrib module). By Koichi Suzuki
Added -U and -d option in pgxc_monitor, by Koichi Suzuki
Added \d+ to print table distribution info in psql, by Ashutosh Bapat and Benny.
Added -C option to gtm_ctl to specify selected gtm control file at the start. By Koichi Suzuki.
pgxc_monitor (contrib module), by Koichi Suzuki.
Improve error handling of statements which runs outside a transaction block. By Amit Khandekar.
Push down sorting operation to the datanodes by using ORDER BY clause in queries to sent to the datanodes. With this push-down, sort keys should be shippable. By Ashutosh Bapat.
Push down LIMIT clause to datanodes, by Ashutosh Bapat.
Pushdown outer joins to datanodes, by Ashutosh Bapat.
Improve fast query shipping to ship queries containing subqueries, by Ashutosh Bapat
ALTER TABLE statement to redistribute tables. By Michael Paquier and Ashutosh Bapat
Push GROUP BY clause to the datanodes when there is ORDER BY, LIMIT and other clauses in the query. By Ashutosh Bapat.
Initdb improved so that created coordinator or datanode can start with any value of GXID. Needed for node addition. By Amit Khandekar.
Backup gtm restart point when CREATE BARRIER is issued. By Koichi Suzuki. Reviewd by Pavan Deolasee and Nikhin Sontakke.
Refactoring GTM message level to optimize the amount of log lines. By Koichi Suzuki
Merge and hash join at coordinators, by Ashutosh Bapat.
Use distributed sorting for merge join and grouping at coordinator, by Ashutosh Bapat
Now GTM headers are in installation directory, by Michael Paquier.
Merge with PostgreSQL 9.2. By Michael Paquier, Satoshi Nagayasu, Koichi Suzuki, Takayuki Suto, Abbas Butt, Ashutosh Bapat and Amit Khandekar.
Refactor Postgres-XC planner to use RemoteQuery paths for scanning relations (joins or plain) at the datanodes. Move Postgres-xc specific planner files to the corresponding directory with other planner related files in PostgreSQL.
Many many code refactoring and tweaks in coordinator/datanode. By Michael Paquier, Amit Khandaker and Abbas Butt.
Refactoring pgbench, by Michael Paquier.
Execute Direct statement syntax changed as EXECUTE DIRECT ON (nodename ...)
postgres startup option -X and -C are now --datanode and --coordinator respectively.
REPLICATION, MODULO, HASH, ROUND and ROBIN were removed from keywords.
Sequence removal on GTM when database is dropped, by Michael Paquier.
ORDER BY query plan correction, by Michael Paquier.
Fix INSERT SELECT for replicated tables, by Michael Paquier.
Push -l option from gtm_ctl to gtm, by Michael Paquier.
Fix for regressions, by Michael Paquier, Takayuki Suto, Koichi Suzuki, Abbas Butt, Ashutosh Bapat and Amit Khandaker.
pgxc_ctl status fix, by Michael Paquier.
COPY for partially distributed tables, by Michael Paquier.
Fix wrong reference in GTM standby, by Andrei Martsinchyk.
Fix GTM thread to manage thread backup, by Andrei Martsinchyk.
Release GTM thread lock before exit, by Andrei Martsinchyk.
Block GXID generation on standbys, by Andrei Martsinchyk.
Change gtm.control file format into text, by Michael Paquier.
Fix command ID handling/communication to datanode, by Michael Paquier and Abbas Butt.
Block write operations on Datanode when not accessed from Coordinator, by Michael Paquier.
Block EXECUTE DIRECT from datanodes, by Michael Paquier.
Correct query generation of COPY with quoted table names, by Nikhil Sontakke.
Fix race condition in GXID generation for autovacuum wraparound, by Michael Paquier.
Fix parameter building in SPI calls, by Michael Paquier.
Get consistent sequence dump value with pg_dump, by Michael Paquier.
Fix current value of sequence to be consistent with vanilla PostgreSQL, by Nikhil Sontakke.
Fix race condition in GXID generation for autovacuum wraparound, by Michael Paquier.
Allow primary node data modification with ALTER NODE, by Michael Paquier.
Fix crash when COPY involves relation with no locator data, by Nikhil Sontakke and Michael Paquier.
Fix COPY query expression with quoted column names, by Nikhil Sontakke.
Fix coordinator/datanode slave crash at long run, by Koichi Suzuki.
Fix default value of port for both gtm and gtm_proxy, by Koichi Suzuki.
Fix --status option for gtm_ctl, by Koichi Suzuki.
Fix DMLs on replicated tables, by Abbas Butt.
Fix the case gtm_proxy does not reconnect or crash, by Koichi Suzuki
Fix to restart promoted gtm as the master, by Nikhill Sontakke.
Improve node registration to gtm, by Koichi Suzuki.
Improve gtm_ctl belavior with -l option, by Koichi Suzuki
Allow xc_maintenance_mode to use DML in execute direct and direct connection to datanodes, by Koichi Suzuki
Fix gtm_ctl start behavior with -w option, by Nikhil Sontakke.
Fix of occasional gtm slave crash, by Nikhil Sontakke.
Fix memory context usage in gtm, by Nikhill Sontakke.
Fix copy command with table name qualified by a schema name, by Nikhil Sontakke.
Fix pgxc_advisory_lock to succeed when the lock can be acquired or it is already held by the same transaction.
Fix get_next of the sequence, by Nikhil Sontakke.
Fix sequence backup to gtm slave, by Andrei Martsinchyk.
Fix incorrect disconnect handling in GTM Proxy, by Andrei Martsinchyk.
Fix message level related to BARRIER, by Koichi Suzuki. Reviewd by Michael Paquier and Nikhil Sontakke.
Fix potential memory leak at coordinator part of GTM, by Andrei Martsinchyk.
Fix calculation of gxid range in MSG_TXN_BEGIN_GETGXID_MULTI message handling in GTM, by Nikhil Sontakke.
Fix 1024 limitation of sequence defined in GTM. By Andrei Martsinchyk.
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.
The following regression fails: int4, point, create_index, inherit, constraints, join, aggregates, privileges, window and plpgsql.
These failusres are not Postgres-XC bugs. They are caused by the difference of the nature of Postgres-XC from PostgreSQL, for example, order of the selected rows, difference in planners (PGXC plan is based upon distributed query processing planning), and so on.
They will be fixed in the beta period.