E.1. Release 9.2rc

Release Date: 2014-05-13

E.1.1. Overview

Postgres-XL 9.2 is a symetric multi-headed, read and write-scalable shared-nothing massively parallel processing cluster based on PostgreSQL. This release version is based on PostgreSQL 9.2.4.

Currently the only architectures supported are 64 bit Linux operating systems.

This release of Postgres-XL is the first major release and contains the following features, characteristics and enhancements:

The above items are explained in more detail in the sections below.

Postgres-XL builds off another project called Postgres-XC. 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. More recent long time contributors include Ashutosh Bapat, Abbas Butt, and Amit Khandekar.

Postgres-XL modifies the architecture to more tightly bond the components together and add massively parallel processing with direct Datanode to Datanode communication for fast performance. In addition, a plan is determined one time, serialized and sent down to the Datanodes instead of sending down SQL statements and reparsing. Also, there have been some changes made to support multi-tenancy, locking down access to pg_catalog tables and providing better pooler management. The key architects and developers are Andrei Martsinchyk, Mason Sharp, Nikhil Sontakke, and Jim Mlodgenski, with Mason Sharp the project lead.

E.1.2. Details

E.1.2.1. Existing standard features supported and related extensions

This is an exhaustive list of all the features included in PostgreSQL and currently supported in Postgres-XL.

E.1.2.2. SQL extensions for Postgres-XL

This section lists all the new SQL functionalities and system functions that and can be used to manage a cluster environment.

  • CREATE NODE, ALTER NODE, DROP NODE

    These SQL commands are used to manage cluster node information in catalog pgxc_node.

    These commands run only on the local node where they are run, and running them on Datanodes make no sense as this catalog data is used only by Coordinator to identify remote nodes and by connection pooling to get necessary remote connection information.

  • CREATE NODE GROUP, DROP NODE GROUP

    CREATE NODE GROUP and DROP NODE GROUP manage the node groups that can be used when creating a table with the extension TO GROUP of CREATE TABLE.

  • CREATE BARRIER

    When specified with an ID, this command allows to register in all of the nodes of the cluster a common and consistent time point to be able to recover all the nodes consistently back to this point. Internally, a barrier is written in the WAL file of all of the nodes.

    recovery_target_barrier in recovery.conf can be used to recover a node to a given barrier ID.

  • CLEAN CONNECTION

    CLEAN CONNECTION is a connection pooling utility able to drop connections on chosen node(s) for a given database or/and user.

  • pgxc_pool_check(), pgxc_pool_reload()

    Those system functions can be used to check or update the data cached in pooler with pgxc_node. pgxc_pool_check() checks if the connection information is consistent between pooler cache and catalogs. pgxc_pool_reload() updates the connection information cached in pool.

  • EXECUTE DIRECT

    EXECUTE DIRECT can be used to launch a query directly to a given node. Only a single node can be targetted at the same time.

    INSERT, UPDATE and DELETE are not authorized.

    Utilities are basically forbidden but some are authorized for cluster management purposes.

  • PAUSE CLUSTER UNPAUSE CLUSTER

    PAUSE CLUSTER and UNPAUSE CLUSTER can be used to halt other cluster activity except for the session that invoked it. Client sessions are not disconnected, they just are paused until brief maintenance is done, like restarting or moving a Datanode.

E.1.2.3. Restrictions