Release Notes

TigerGraph Server 3.4.0 was released on Dec 21st, 2021.

Security patch for Log4j CVE-2021-45105

TigerGraph 3.4.0 includes a security patch for Log4j CVE-2021-45105. See Fixed issues for details.

New - TigerGraph GraphQL Service

Along with TigerGraph Server 3.4.0, we are proudly introducing TigerGraph GraphQL Service.

TigerGraph GraphQL Service allows you to make GraphQL requests to access graph data in TigerGraph. To learn more, please see TigerGraph GraphQL Service.

New Features

Below is a list of new features and improvements in TigerGraph 3.4.0:

Manageability

  • Added the -leader option to gsql to display the current cluster leader.

  • Added Oracle Linux 8 (OEL 8) to the list of certified operating systems.

  • Improved query installation process. Failure in installing a subset of the queries in a single INSTALL QUERY command will no longer cause all installations to abort.

Observability

Reliability

  • Added Kafka protection to GSE to prevent message loss during high-volume data loading.

Security

  • Masked AWS S3 secret from GSQL logs

Usability - GSQL

  • Added support for local container variables in the GSQL Query Language.

  • Relaxed GSQL local variable declaration rules. Local base type variables can now be declared at a lower level to override the value of a variable with the same name.

  • Added support for declaring a HeapAccum without specifying size.

  • Removed the requirement of LIMIT clauses when using ORDER BY in SQL-like SELECT statements.

  • Removed the limitations on the following functions in Distributed Query Mode:

    • edgeAttribute()

    • neighborAttribute()

    • neighbor()

    • size()

  • Added removal methods to ListAccum andMapAccum:

    • ListAccum

      • .remove()

      • .removeOne()

      • .removeAll()

    • MapAccum

      • .removeKey()

Usability - GraphStudio and Admin Portal

  • Added support for Pattern View in Visual Query Builder (VQB) that allows outputting a specified subset of a visual pattern’s match results.

  • Added support for using a vertex or edge’s primary ID in expressions if primary ID is marked as an attribute.

  • Added support for formatting number attributes.

  • Added support for search in GSQL query list.

  • Added support for search in visual pattern list.

  • Added a removal tool tip and a checkbox to select all privileges in the user-defined roles interface

  • Removed the deprecated STRING COMPRESS data type from schema design options

Fixed issues

Fixed in 3.4.0

  • Upgraded log4j to 2.17.0 to resolve potential security vulnerability

  • Reduced system minimum free memory requirement for transactions

  • Increased the timeout limit for downloading, updating, and deleting the graph catalog

  • Fixed a bug that allowed non-privileged users being able to access GSQL output files through the Admin Portal

  • Increased timeout limit for file operations

  • Fixed an issue that led to GSE crash when a subquery uses file variables

  • Fixed issue where SmartContainer collects hardware-info more than once

  • Fixed an issue that led to cluster shrinking failure when instance as over 1000 queries

  • Increased timeout limit for checking Kafka broker ID

  • Fixed an issue that caused certain queries to use more memory than expected

  • Fixed an issue that in rare cases caused RESTPP memory leak

  • Fixed an issue that occasionally caused GPE to hang when interpreter raises an exception

  • Disabled proxy buffering for /gsqlserver endpoints

  • Fixed an issue that led to backup and restore failures on Kubernetes deployments

  • Fixed an issue with query-request memory tracking that in rare cases led to GPE segmentation fault

  • Fixed an issue that caused unexpected early query return when getAttr() has an invalid attribute

  • Fixed an issue that caused local base type variable to lose type inference after being overridden

  • Fixed an issue that caused PER clause to return unexpected results

  • Fixed an issue that produced unexpected output when a WHERE clause uses parentheses

  • Fixed an issue that caused v.outdegree() to return unexpected results

  • Fixed an issue that cause errors in accumulator conjunctive functions calls

  • Fixed an issue in GraphStudio that led to browser crash when dealing with huge map data columns

  • Fixed an issue where services don’t automatically restart after updating license

  • Fixed an issue with GSQL syntax checker that threw an unexpected error when a SQL-like query uses built-in functions with multiple arguments

Known Issues

Cluster expansion

If you have ever deleted a vertex or edge attribute before conducting an expansion, cluster expansion may lead to issues reading attributes of that vertex or edge type.

For details, see Cluster Expansion.

Applications

GSQL

  • Multiple (Conjunctive) Path Patterns:

    • There are no known functional problems, but the performance has not been optimized. Your feedback would be appreciated.

  • DML type check error in V2 Syntax:

    • GSQL will report a wrong type check error for Query block with multiple POST-ACCUM clauses and Delete/Update attribute operation.

  • Turn on GSQL HA manually when upgrading from 3.0.x

  • Stale data visible after Deletes using index

    • Queries that use secondary index may still see the vertices being deleted until after the snapshots are fully rebuilt.

Compatibility with TigerGraph 3.1

The following changes were made to the built-in roles in TigerGraph’s Role-based Access Control

  • The built-in role queryreader can no longer run queries that include updates to the database.

    • To emulate the old queryreader role, create a role with all queryreader privileges, and also grant the WRITE_DATA privilege to the new role.

  • The built-in role admin can no longer create users

    • To emulate the old admin role, create a global role with all admin privileges, and also grant the WRITE_USER privilege to the new role.

  • To learn more about role management and the privileges of built-in roles, see:

Compatibility with TigerGraph 2

Major revisions (e.g., from TigerGraph 2 to TigerGraph 3) are the opportunity to deliver significant improvements. While we make every effort to maintain backward compatibility, in selected cases APIs have changed or deprecated features have been dropped, in order to advance the overall product.

Data migration: A tool is available to migrate the data in TigerGraph 2.6 to TigerGraph 3.0. Please contact TigerGraph Support for assistance.

Query and API compatibility:

V3.0 Removal of Previously Deprecated Features

TigerGraph 2.x contained some features which were labeled as deprecated. These features are no longer necessary because they have been superseded already by improved approaches for using the TigerGraph platform. The new approaches were developed because they use more consistent grammar, are more extensible, or offer higher performance. Therefore, TigerGraph 3.0 has streamlined the product by removing support for some of these deprecated features, listed below:

Data Types

Deprecated Type Alternate Approach

REAL

Use FLOAT or DOUBLE

INT_SET

Use SET<INT>

INT_LIST

Use LIST<INT>

STRING_SET_COMPRESS

Use SET<STRING COMPRESS>

STRING_LIST_CONPRESS

Use LIST<STRING COMPRESS>

UINT_SET

Use SET<INT>

UINT32_UINT32_KV_LIST

Use MAP<UINT, UINT>

INT32_INT32_KV_LIST

Use MAP<INT, INT>

UINT32_UDT_KV_LIST

Use MAP<UINT, UDT_type>, where UDT_type is a user-defined tuple type

INT32_UDT_KV_LIST

Use MAP<INT, UDT_type>, where UDT_type is a user-defined tuple type

Syntax for Control Flow Statements

See Control Flow Statements in GSQL Language Reference

Deprecated Statement Alternate Statement
FOREACH ... DO ... DONE FOREACH... DO... END
FOREACH (condition) {

body

}

FOREACH condition DO

body

END

IF (condition) {

body1

} else {

body2

}

IF condition THEN

body1

ELSE

body2

END

WHILE (condition) {

body

}

WHILE condition DO

body

END

Vertex Set Variable Declaration

If a vertex type is specified, the vertex type must be within parentheses.

Deprecated Statement Alternate Statement

MySet Person = …​

MySet (Person) = …​

Query, Job, and Token Management

Deprecated Operation Alternate Operation
CREATE JOB CREATE LOADING JOB
RUN JOB

Specify the job type:

RUN LOADING JOB

RUN SCHEMA_CHANGE JOB

RUN GLOBAL SCHEMA_CHANGE JOB

CREATE / SHOW/ REFRESH TOKEN To create a token, use the REST endpoint GET /requesttoken
offline2online The offline loading job mode was discontinued in v2.0. Do not write loading jobs using this syntax.

Output

Deprecated Syntax Alternate Syntax

JSON API v1

v2 has been the default JSON format since TigerGraph 1.1. No alternate JSON version will be available.

PRINT …​ TO_CSV [filepath]

Define a file object, then PRINT …​ TO_CSV [file_object]

Built-in Queries

Deprecated Statement Alternate Statement

SELECT count() FROM ...

// count may be out of date

SELECT approx_count(*) FROM ...

// same behavior as count(); may not include all the latest data updates

SELECT count(*) FROM ...

// exact, but slower than approx_count(*)