Release Notes

TigerGraph Server 3.7.0 was released on Sep 15th, 2022.

New Features

The following is a list of new features and improvements:

Developer tools

  • Introduced TigerGraph Insights (Preview), a no-code visual graph analyzer that makes building data analytics dashboards intuitive.

  • Introduced GSQL Shell, a web-based version of the GSQL client that allows you to run GSQL commands from your browser with keyboard shortcuts and autocomplete.

  • Introduced TigerGraph Suite, a family of applications including GraphStudio, Admin Portal, TigerGraph Insights, GSQL Shell, and GraphQL Service to empower your graph journey.

Manageability

Security

  • Enhanced the role-based access control system to allow data CRUD privileges to be granted at the type and attribute level (Preview).

    • Local roles are deprecated as of the 3.7 release and will be dropped in a future version.

  • Added the ability to enable a password policy to mandate the minimal complexity of passwords.

  • TigerGraph Server download packages are now signed with our PGP key.

Stability

Ecosystem integration

Observability

Query Language Enhancement

Fixed issues

  • Fixed a number of security vulnerabilities from package dependencies.

  • Improved error messaging when a query uses TYPEDEF TUPLE with an unsupported data type.

  • Fixed an issue where unauthorized users could access certain local files on the server through a REST endpoint.

  • Fixed an issue where running multiple resource-intensive queries simultaneously would cause GPE dysfunction due to critical memory level handling.

  • Improved error messaging when query installation fails because certain services are not in ready state.

  • Fixed an issue that caused users to be unable to terminal an S3 loading job if the loading job did not use end-of-file mode.

  • Made folder permissions more restrictive after cluster expansion and shrinking.

  • Fixed an issue where creating a secret in a primary cluster could cause sync to stop.

  • Fixed an issue that caused restoring a cluster to fail when the backup file is on S3.

  • Fixed an issue where a heap accumulators (HeapAccum) might not be sorted when output in a group-by accumulator (GroupByAccum).

  • Fixed an issue that caused file permissions to be incorrect after cluster resizing.

  • Fixed an issue that caused imbalanced distribution of Kafka data when a cluster has a replication factor of two.

  • Fixed an issue where the POST /requesttoken endpoint did not return Content-Type.

  • Fixed an issue that caused RESTPP dysfunction when it received a bearer token that was too short.

  • Fixed an issue where the database did not properly authorize requests made from JDBC driver.

  • Fixed an issue where GraphStudio data mapping would not detect disallowed data mapping to user-defined tuple (UDT) types.

  • Fixed an issue where SumAccum in GroupByAccum cannot be converted to a MaxAccum directly

  • Fixed an issue where loading large files through Data Streaming Connector might cause out-of-memory issues.

  • Fixed an issue where loading jobs created with the Kafka loader could not show accurate progress in GraphStudio data loading.

  • Fixed an issue where query installation in GraphStudio failed entirely if one of the queries being installed contains errors, instead of allowing valid queries to continue installation.

  • Fixed an issue where the function instr() could not accept certain special characters as substring arguments.

Dropped feature

  • The -OPTIMIZE flag for INSTALL QUERY was deprecated in 3.5 and is dropped in this 3.7 release.

Known Issues

In version Description Status

3.7.0

Running a query that returns results that are too large in size may cause GraphStudio to become unresponsive.

Unresolved

3.7.0

Running a query that calls the setAttr() function could cause GPE dysfunction in rare cases.

Unresolved

3.7.0

When a solution is exported, the key and secret used to authenticate a connector to AWS S3 are not encrypted in the exported file.

Unresolved

3.7.0

Creating a query that has too many hops and requires intensive semantic checking could cause the GSQL client to become unresponsive.

Unresolved

3.7.0

Renaming a vertex type revokes privileges granted on the vertex type.

Unresolved

3.7.0

Query user-defined functions cannot be synced to a DR cluster in cross-region replication.

Unresolved

3.7.0

Frequent backups of large volumes of data could lead to failure during a backup.

Unresolved

3.7.0

If a graph on an instance contains a loading job that uses gsql_split_by_space() token function, exporting the graph might lead to GPE dysfunction.

Unresolved

3.7.0

Calling vertex.edgeAttribute() function with STRING COMPRESS data type causes GPE crash

Unresolved

3.7.0

When vertices are automatically created during edge loading, the primary key of the vertices created are not written to vertex attributes.

Unresolved

3.7.0

Calling the setAttr() function in an interpreted query causes GPE dysfunction.

Unresolved

For a list of known issues for GraphStudio and Admin Portal, please see Known issues for GraphStudio and Known issues for Admin Portal.

Compatibility with TigerGraph 3.4

  • A single POST-ACCUM clause can no longer reference more than one vertex alias in Syntax V1.

  • GET /requesttoken endpoint is dropped. Please use POST /requesttoken to request authentication tokens instead.

    • Using request body to store credentials is more secure than using query string. If you have a create a token request that puts the credentials in the query string, all you need to do is use the POST endpoint and move your credentials to the request body.

  • GET /gsqlserver/gsql/queryinfo endpoint on port 14240 now returns the query input parameters in the same order as they are in the query instead of an unordered list.

  • Deploying TigerGraph in Kubernetes now requires more service account permissions than previous versions. For details, see Prerequisites section in Quickstart with GKE, Quickstart with AKS, and Quickstart with EKS.

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 and above 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

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 Header 2

CREATE JOB

Job types need to be specified:

  • CREATE LOADING JOB

  • CREATE SCHEMA_CHANGE JOB

  • CREATE GLOBAL SCHEMA_CHANGE JOB

RUN JOB

Job types need to be specified:

  • 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 …​

  • SELECT approx_count(*) FROM …​

    • May not include all the latest data updates

  • SELECT count(*) FROM …​

    • exact, but slower than approx_count(*)