PGX 20.1.1
Documentation

What is New in PGX 20.1.0

Support for Authentication and Authorization

PGX allows you now to configure your data security by following the best practices in this regard. Please see security page for more details.

Graphs Optimized for Updates in Single-machine Execution Mode

PGX now provides a new graph storage representation tuned for low-latency graph updates. Please to the documentation for graphs optimized for updates for more information.

Support for Pre-loading Graphs When the Server Starts up in Distributed Execution Mode

In the distributed execution mode, users can now specify a list of graph configuration files to be loaded by the server when it initializes. This is done by specifying the preload_graphs option in the configuration. For more details, please see the corresponding page.

Passing invalid graph configuration files or setting unsupported flags (see below) will cause the graph pre-loading to fail, and the server to halt. It is possible to have the server ignore invalid configurations and start regardless by setting the strict_mode flag to false in the configuration.

  • Currently, pre-loaded unpublished graphs are not supported, and setting both publish and publish_with_snapshots flags to false will cause the graph to be rejected.

Support for Graph Versioning in Distributed Execution Mode

In the distributed execution mode, users can now checkout, refresh and publish multiple snapshots of the graph. Please refer to the graph operations page for more information.

Extended Filtering Support in Distributed Execution Mode

In the distributed execution mode, users can now:

  • Create subgraphs from filters backed by vertex/edge collections.
  • Create vertex/edge set from expression-based subgraph filters, and also from collection-backed subgraph filters.

Extended PGQL Support in Distributed Execution Mode

LIMIT and OFFSET without ORDER BY

In the distributed execution mode, users can now use use LIMIT and OFFSET without ORDER BY in PGQL queries.

For example,

SELECT *
MATCH (n) -[e]-> (m)
LIMIT 100
OFFSET 10

keeps 100 rows (if enough available), skipping the 10 first.

Note that OFFSET without ORDER BY does not have some specific semantic meaning.

DISTINCT Projections without Aggregations

In the distributed execution mode, users can now perform DISTINCT projections in PGQL queries.

For example,

SELECT DISTINCT n.age, m.salary
MATCH (n) -[e]-> (m)

keeps distinct {n.age, m.salary} rows.

Note that all projected columns are used to quantify the uniqueness of a row.

Filtering of Groups (HAVING)

In the distributed execution mode, users can now perform filtering of groups (HAVING) in PGQL queries.

For example,

SELECT SUM(a.income)
MATCH (a)
GROUP BY a
HAVING SUM(a.income) > 1000

keeps only rows where the sum of incomes is strictly greater than 1000.

Constant Literals in GROUP BY, HAVING, and ORDER BY

In the distributed execution mode, users can now use constants in GROUP BY, HAVING, and ORDER BY in PGQL queries.

For example,

SELECT 1
MATCH (a)
GROUP BY 11
HAVING true
ORDER BY 111

is now supported.

PGQL 1.3 Query Syntax and Case Insensitivity

PGQL 1.3 introduced case-insensitive matching for unquoted or uppercase graph names, labels and property names. The distributed execution mode now supports the PGQL 1.3 query syntax, as well as case-insensitive matching.

For example,

SELECT x, x.NaME, label(x) 
FROM MATCH (X:PerSon)

is now supported and matches x.NaMe and the label PerSon in a case-insensitive manner.

Support explainPgql

In the distributed execution mode, users can now use explainPgql. For example:

ex = session.explainPgql("SELECT * FROM movies MATCH (a)-[e]->(b) ORDER BY id(a) LIMIT 10");
ex.getCardinalityEstimate();
ex.getCostEstimate();

is now supported and gives the query plan for the given PGQL query.

AlterGraph Mutation to Add/remove Vertex or Edge Providers in a Partitioned Graph

It is now possible to add or remove vertex and edge providers in a partitioned graph, either as a new graph or as a snapshot. Please refer to the alter graph mutation documentation for more information.

Support for Admin API to Trigger Memory Cleanup

PGX API provide ServerInstance.freeCachedMemory() to run graph garbage collection

Added PGX Python Client

Added Python package pypgx, a Python client for PGX. This package is in a beta release state. The API may change in the next releases. The API currently supports the following functionalities and classes: PgxGraph and BipartiteGraph, with support for reading from files and oracle databases, and writing to files. PgxFrame GraphBuilder EdgeSequence, EdgeSet, VertexSequence and VertexSet The MLLib models Pg2Vec and DeepWalk CompiledProgram Support for PGQL queries and a PgqlResultSet class Support for authentication and authorization