Release Notes

TigerGraph Server 3.9.3-3 LTS was released on February 15th, 2024.

TigerGraph Server 3.9.3-2 LTS was released on January 16th, 2024.

TigerGraph Server 3.9.3-1 LTS was released on December 5th, 2023.

TigerGraph Server 3.9.3 LTS was released on November 7th, 2023.

TigerGraph Server 3.9.2-1 LTS was released on October 10, 2023.

TigerGraph Server 3.9.2 LTS was released on June 29, 2023.

TigerGraph Server 3.9.1 LTS was released on March 22, 2023.

TigerGraph Server 3.9.0 LTS was released on February 28th, 2023.

LTS versions are supported for 24 months from their initial release (X.X.0) and should be the choice for production deployments.

Key New Features



  • Real-time data Ingestion Monitoring - Improved stability and performance of real-time loading job status updates for high speed and volume data.

  • Workload Management — Automatically assigns query tasks to the least-busy resources to maximize productivity by adding parameters based on CPU usage

  • Support for Kubernetes — Enables simple, automated deployment and scaling of software components to meet dynamic needs, lowering operational costs.

  • Integrates OpenCypher - Adds a language familiar to many developers, to speed up creating and migrating graph queries, before leaning into GSQL for advanced and high-performance graph analytics.

Detailed List of New and Modified Features

TigerGraph Server

  • Data Loading Overview:

    • Added support for the Parquet file format, widely used for big data.

    • Moved data connector setup from gadmin to GSQL commmands, to better align with user personas and privileges.

    • Added auto-detection of new files when in Stream mode.

    • Significantly improved CPU usage after connector finishes data loading.

    • Documented additional S3 authentication configuration parameters.

    • /library is a set of endpoints for showing and running template queries.

    • /showdelayedlistall shows how many queries are in the Workflow Manager’s delay queue.

    • :14240/informant/metrics replaces :9167/metrics

    • /informant/metrics/get/{metrics_category} provides filterable JSON formatted system performance metrics.

    • [3.9.2] The filter for /informant/metrics/get/cpu-memory now accepts a list of ServiceDescriptors instead of a single ServiceDescriptor.

    • [3.9.2] /gsqlserver/gsql/clear-store is equivalent to GSQL CLEAR GRAPH STORE -HARD

    • [3.9.3] Added MirrorMaker (external Kafka) as a new type of GSQL data source.

    • [3.9.3] Added new REST parameter /allowExisting to the POST /requestoken endpoint.

  • Added or changed configuration parameters:

    • KafkaConnect.AllowedTaskPerCPU limits the number of concurrent kafka loading tasks.

    • The GSQL environment variable GPE_DSC_APPLY_TIMEOUT_MINUTE is the maximum allowed time for dynamic schema changes (DSC).

    • [3.9.3] Added parameters System.Backup.DecompressProcessNumber and System.Backup.CompressionLevel to adjust the compression level of backups.

  • Added a new command for gadmin backup to control the number of backups, for better storage space management.

  • Expanded the list of system response codes to include one for an invalid vertex ID.

  • Improved the backend security infrastructure for the Kafka loader.

  • [3.9.2] Changed the default retention times for the Informant.RetentionPeriodDay and TS3.RetentionPeriodDay configuration parameters from 30 days to 7 days, to reduce disk consumption and improve system history query performanace.

  • [3.9.3] Real-time data Ingestion monitors the progress and integrity for high-speed data loading up to terabytes.

  • [3.9.3] Simplified the cross-cluster restore process by including metadata with the backup files.

GSQL Command and Querying Language


  • Moved data connector setup from gadmin to GSQL. Streamlined the user experience for creating loading jobs for data stored in AWS, GCP, and Azure, directly integrating the data streaming connector with GSQL and reducing the steps needed to load data.

    • Introduced a new STREAM data loading type that simplifies the data loading process from remote data storage.

  • Added a new set of loading job token functions for string manipulation.

  • [3.9.2] Added configuration parameter KafkaConnect.AllowedTaskPerCPU to set a maximum number of concurrent connector tasks.

  • [3.9.2] The default mode for the Kafka Connector is EOF="true"

  • [3.9.3] Added -max_percent_error option to RUN LOADING JOB to automatically abort the job if the number of invalid data lines exceeds the given threshold.


Querying and Query Management

  • to_string() is now a built-in GSQL function, supporting all primitive and scalar accumulator data types. This means user-defined functions in Exprfunctions.hpp may no longer use the name to_string() (case-insensitive).

  • Added support for batch deletion of multiple edges between vertices, both with GSQL DELETE and as a REST endpoint.

  • Standardized SHOW PACKAGE for packaged queries to follow the same behavior as other SHOW catalog commands.

  • [3.9.2] outdegree vertex function vertex function can also be used with vertex input parameters in the query-body statements, not only with SELECT block vertex aliases.

  • [3.9.3] Added parameters for GPE query routing based on CPU usage

Kubernetes Operator


TigerGraph Suite Updates

Admin Portal


  • [3.9.2] Enabled GraphStudio to run on any node in a cluster, whether or not the node hosts a GUI server.

  • [3.9.2] Removed the All Paths option from the Explore Graph page, as this feature is not practical for large graphs.

  • [3.9.3] Added an openCypher option to the Add New Query dialog, to simplify writing and running openCypher in GraphStudio.

  • [3.9.3] Users can now share Insights widgets and applications to third-party websites and users without a TigerGraph login via a URL token.

GDS Library and ML Workbench

TigerGraph Insights

  • Added support for multi-user editing and sharing of the same applications.

  • Added the ability for users to save a widget independently instead of tying it to an application.

  • Added a mini-map to the graph widgets for easier navigation.

Fixed issues

Fixed and Improved in 3.9.3-3

  • Improved slowness when a loading job is loading map type data from a large file (TP-4790).

  • Fixed delay when printing the loader status monitoring table in the GSQL console (GLE-6577).

Fixed and Improved in 3.9.3-2


  • Fixed issue where an external Kafka loading records, 7 days or older, would fall short of the topic offset (TP-4604).

  • Fixed issue when a deleted vertex type would make policy_filter_index very large (GLE-6290).

  • Fixed issue where gsql --precompile encountered an Authentication failed error during an upgrade if the TigerGraph password was not the default (GLE-6371).

  • Fixed issue where GSQL APIs would encounter occasional slowness due to initSession in BaseInternalHandler not synchronizing (GLE-6347).

Fixed and Improved in 3.9.3-1


  • Fixed issue where after a gbar/gadmin restore the query would return an error response if GSE was not restarted (CORE-3148).

  • Fixed issue where deleted attribute would store the original value (CORE-3154).

  • Fixed issue where GSE may reuse segments in the cases where the GSE leader switches (CORE-3161).

Fixed and Improved in 3.9.3

Crashes and Deadlocks

  • Fixed crash when query thread would keep running after JobListener is shutdown (CORE-1730).

  • Fixed GPE crash when using INSERT with an UNKNOWN accumulator (GLE-5038).

  • Fixed crash when running interpret query with dynamic value (GLE-5600).

  • Fixed JSON Viewer crash on browser when displaying a large response (TOOLS-2283).


  • Fixed issue where DISTINCT for aggregation functions wasn’t working (GLE-5678).

  • Fixed issue of missing files in AdminPortal when downloading an output (TOOLS-2499).

  • Fixed issue primary id could not set a color config for a vertex (TOOLS-2478).

  • Fixed issue where administrator could not set a privilege to vertex primary_id in Role Management page of Admin Portal (TOOLS-2430).

  • Fixed issue where error messages of abort requests created large file sizes (CORE-2705).

  • Fixed issue where user could download query results from the label “View Table Result” without proper privilege (TOOLS-2404).

  • Fixed issue where multiple vertex types return when selecting one vertex type (GLE-5325).

  • Fixed issue of SHOW statement parser error for catalog object created using CREATE statement (GLE-5719).

  • Fixed support for outdegree() with a collection of edge types in INTERPRET mode (GLE-5476).

  • Fixed issue where delete or edit vertex attributes were incorrect in GraphStudio (TOOLS-2258).

  • Fixed issue in GraphStudio when "=” appeared as a missing parameter in an INTERPRET query (TOOLS-2298).

  • Fixed argument error when passing a negative float parameter in GSQL cli in a {key: value} format. (GLE-6004).

  • Fixed GSE crash when lease_expire_time_ms_ was not updating (CORE-2693).

  • Fixed issue where AWS credential user with access permission failed to create data_source to specified bucket (TP-4049).

  • Fixed issue where there was a failure to backup during upgrading from a free tier (TP-3922).

  • Fixed the case when the configured backup’s s3 service, such as ceph s3, only supported bucket path style (TP-3931).

  • Fixed issue to avoid cloning cluster again when restore had already succeeded (TP-3948).

  • Fixed TG container PostStart Handler script error handling problem (TP-3914).

  • Fixed restpp status refresh issue (CORE-1905).

  • Fixed GSQL jobs getting stuck when a related service is down (GLE-5365).

  • Fixed expansion getting stuck at importing to GSQL/GUI (TOOLS-2306).


  • Improved Restore when aborting all loading and the connect-offset will also clear (TP-3670).

  • Improved Kubernetes Operator by upgrading the Golang version to a higher to resolve previous version vulnerabilities (TP-3711).

  • Improved Insights table widget to be more consistent with GraphStudio (TOOLS-2375).

  • Improved insights search for two replicas when generating a pattern (TOOLS-2443).

  • Improved logs to show sso username and login related information (GLE-5970).

  • Improved error message details when during a failure to find a request record when deleting (CORE-2686).

  • Improved when a default user is deleted and the leader API would do a user check when permission is not needed (GLE-5678).

  • Added memory check in DistrbutedTopologyStore (CORE-2496).

  • LDAP now has more detailed error messages (GLE-5559).

  • Implemented a new connector fail status to show error messages in GSQL console (TP-3465).

  • Improved Insights tables by adding overflow (TOOLS-2312).

  • Updated aws-sdk-go version to fix CVE scan vulnerability (TP-2879).

Fixed and Improved in 3.9.2-1

Crashes and Deadlocks

  • Fixed GPE crash caused by aborted query still being used by running thread.

  • Fixed crash issue after RESTPP auth refresh.

  • Fixed GSE crash due to check failure when refreshing leader info after 60 minute timeout.

  • Fixed GPE crash and non-recovery due to Kafka and GPE offset when adjacent vertices were deleted.


  • Fixed data inconsistency when GSE consumed deletion requests from Kafka on update of committed_next_id_map

  • Fixed GRAPH scope command failure due to missing privilege check in v3.9.2.

  • Fixed failure to compile query when using edge variables in DML-sub delete statement.

  • Fixed subtypeid error message inconsistency.

  • Fixed /deleted_vertex_check false alert when GSE doesn’t have a segment.


  • Security: Updated JDK to 11.0.20 to address vulnerability scan issues.


  • Improved performance of GPE abort function.

Fixed and Improved in 3.9.2

Crashes and Deadlocks

  • Fixed a GPE crash caused by GetVertexTypeId failing to get the type from a vertex.

  • Fixed a RESTPP/WorkloadManager deadlock when multiple queries are waiting to execute.

  • Fixed a deadlock-like state when free disk space became very low during data loading.

  • Fixed a problem with GSQL not responding because no GSQL leader was elected.


  • Fixed importing pre-3.7 user-defined tuple (UDT) data which uses default-width INT or UINT fields. The import process will set pre-3.7 default-width fields to be 4 bytes. 3.7+ default-width fields are explicitly

  • Fixed GSQL not installing queries with certain collection accumulator expressions.

  • Restored the functionality of the --ssl option of the GSQL Client.

  • Fixed a situation that can result in different cluster nodes having differently compiled versions of the same query, resulting in an MD5 check error.

  • Fixed a situation where a request to install one query results in several other queries also being installed.

  • Removed an exclusive lock when Interpret Query is running, which had been preventing concurrent GSQL operations

  • Fixed a null pointer error when attempting to import into GraphStudio a Solution tarball of a tag-based graph.

  • Fixed a case where a schema change did not run because not all files had been cleared out.

  • Fixed an internal classification error for FIXED_BINARY data, which caused a schema_check test failure.

  • Fixed a bug where if a loading job used TEMP_TABLE and VERTEX_MUST_EXIST, then the VERTEX_MUST_EXIST option would not be displayed (by LS or SHOW JOB), nor would it included in a database export.

  • Fixed a GSQL query bug where it did not handle string parameters properly if they contained “&”.

  • Fixed a bug when upgrading to 3.9 that caused the old installation’s default QueryUDF files to be copied and overwrite the new 3.9 default QueryUDF files, so that queries using UDFs could not be installed.

  • Fixed a GSQL log bug where the function was logging a stale Command Type rather than the current Command Type.

  • Restored limited ability to run subqueries having a SET<VERTEX> parameter.

  • Modified the /deleted_vertex_check and /data_consistency_check endpoints to be global, not associated with any particular graph.

  • Fix a SET type attribute bug in which the set’s values were not being deduplicated.

  • Patched a user authorization issue that prevented a user registered on a primary cluster from running a query on the secondary cluster.

  • Provided a more comprehensive fix to a node sorting issue when upgrading a cluster with 10 or more nodes to v3.9.

  • Removed a restriction when load data into an edge defined for multiple FROM-TO vertex type pairs. The load statement no longer must have a USING clause.

  • Fixed a signed integer overflow error in loader status report messages, if more than 2^31 lines of data were loaded. set to 8 bytes.

  • Improved the display of FLOAT and DOUBLE numbers so they have the correct number of digits of precision (max. 7 or 16, respectively).

  • Fixed a GraphStudio bug in which a vertex attribute which had been deleted was still showing until the browserpage was refreshed.

  • When adding a UDF with PUT, check that the UDF is defined as an inline function, as required.


  • Security: Updated JDK to 11.9.18-10 to address some vulnerability scan issues.

  • Security: Updated JSON to 20230227 to address some vulnerability scan issues.

  • Improved system security by applying more restrictive file permissions to several files.

  • No longer include examples of the data being loading in the Kafka loader log file, for better data security.


  • Added lazy initialization of vertex data, for large graphs with more that 20K segments in the gstore.

  • Improved query installation memory usage and speed by optimizing gcc9 options.

  • Fixed a GraphStudio slowness issue when creating or editing vertices with hundreds of attributes.

  • Removed the 5-minute wait that the streaming loader used to decide if all the input data had been consumed.

Fixed and Improved in 3.9.1

  • Fixed sorting issue in a script for upgrading a cluster with more than 9 nodes.

  • If a user runs gadmin and the ~/.tg.cfg link is missing, display an error message with guidance on how to recreate the link.

  • Fixed: GraphStudio not displaying queries for users with the QueryReader role.

  • Removed extraneous automatic backup at 12:00am UTC if the user sets System.Backup.Local.Enable to true.

  • Fixed accidental erasure of the UserCatalog.yaml file, which caused users to lose access to the database.

  • Added support for DATETIME datatype in PRINT … TO_CSV statements.

  • Added error handling in the case of a name conflict or use of reserved query names among UDF functions.

  • Fixed an issue with nested group access in LDAP.

  • Fixed an issue with perceived "schema error", which then causes an upgrade to abort.

  • Fixed issue with DISTRIBUTED QUERY not able to insert on edge.

  • Removed C++ headers not on the allowlist from default UDF files.

  • Fixed a GSE crash in rare synchronization circumstances in HA clusters.

  • Fixed an issue with a query syntax error not being detected at the root cause stage where a clear error message could be issued.

  • Added options to configure the frequency of checking for license key violations

  • Fixed: GSE does not start or restart after upgrading to 3.9.0 due to change in log synchronization.

  • Fixed an issue with lost attribute of a local vertex having PRIMARY_ID_AS_ATTRIBUTE =true.

  • Fixed inability to enable SSL in an HA cluster via the AdminPortal.

  • Fixed issue with GPE crashing during heavy workload of a backup restore operation.

Fixed in 3.9.0

  • Improved stability and security across all components.

  • Fixed an issue with the GSQL SELECT * FROM and PRINT functions converting some special characters from UTF-8 to UTF-16. Previously affected character sets included the Unicode range 0080 to 00A0 and 2000 to 2100 (Near Eastern scripts and some special typographical marks).

  • The SELECT * FROM and PRINT functions no longer convert large integers to strings before printing, which had resulted in quotation marks printed along with the number.

  • Cluster resizing no longer requires a graph schema.

  • Extended the timeout length for queries in the wait queue so that they are not timed out early.

Known Issues

  • Running either EXPORT GRAPH ALL or IMPORT GRAPH ALL resets the TigerGraph superuser’s password back to its default value. After running either command, change the superuser’s password to make it secure again.

  • EXPORT GRAPH ALL does not correctly handle some special cases: loading jobs containing DELETE statements, graph elements with composite keys, data including a UDT with a fixed string size.

  • If the FROM clause pattern is a multi-hop and the ACCUM clause reads both primitive and container type attributes or accumulators of a vertex, the internal query rewriting logic may generate an invalid rewritten output. Resulting in the error message: It is not allowed to mix primitive types and accumulator types in GroupByAccum.

  • Users may see a high CPU usage caused by Kafka prefetching when there is no query or posting request.

  • GSQL query compiler may report a false error for a valid query using a vertex set variable (e.g. Ent in reverse_traversal_syntax_err) to specify the midpoint or target vertex of a path in a FROM clause pattern.

  • In 3.9.3, if a loading job is expected to load from a large batch of files or Kafka queues (e.g. more than 500), the job’s status may not be updated for an extended period of time. In this case, users should check the loader log file as an additional reference for loading status.

  • In 3.9.3, when a GPE/GSE is turned off right after initiating a loading job, the loading job is terminated internally. However, users may still observe the loading job as running on their end. Please see Troubleshooting Loading Job Delays for additional details.

  • GSQL EXPORT GRAPH may fail and cause a GPE to crash when UDT type has a fixed STRING size.

  • After a global loading job is running for a while a fail can be encountered when getting the loading status due to KAFKASTRM-LL not being online, when actually the status is online. Then the global loading process will exit and fail the local job after timeout while waiting the global loading job to finish.

  • [FIXED 3.9.3] For v3.9.1 and v3.9.2 when inserting a new edge in GPR and INTERPRET mode, the GPE will print out a warning message because a discriminator string is not set for new-inserted edges. Creating an inconsistent problem in delta message for GPR and INTERPRET mode.

  • When the memory usage approaches 100%, the system may stall because the process to elect a new GSE leader did not complete correctly. This lockup can be cleared by restarting the GSE.

  • If the CPU and memory utilization remain high for an extended period during a schema change on a cluster, a GSE follower could crash, if it is requested to insert data belonging to the new schema before it has finished handling the schema update.

  • When available memory becomes very low in a cluster and there are a large number of vertex deletions to process, some remote servers might have difficulty receiving the metadata needed to be aware of all the deletions across the full cluster. The mismatched metadata will cause the GPE to go down.

  • Subqueries with SET<VERTEX> parameters cannot be run in Distributed or Interpreted mode. (Limited Distributed model support is added in 3.9.2.)

  • Upgrading a cluster with 10 or more nodes to v3.9.0 requires a patch. Please contact TigerGraph Support if you have a cluster this large. Clusters with nine or fewer nodes do not require the patch. (This issue is fixed in 3.9.1)

  • Downsizing a cluster to have fewer nodes requires a patch. Please contact TigerGraph Support.

  • During peak system load, loading jobs may sometimes display an inaccurate loading status. This issue can be remediated by continuing to run SHOW LOADING STATUS periodically to display the up-to-date status.

  • When managing many loading jobs, pausing a data loading job may result in longer-than-usual response time.

  • Schema change jobs may fail if the server is experiencing a heavy workload. To remedy this, avoid applying schema changes during peak load times.

  • User-defined Types (UDT) do not work if exceeding string size limit. Avoid using UDT for variable length strings that cannot be limited by size.

  • Unable to handle the tab character \t properly in AVRO or Parquet file loading. It will be loaded as \\t.

  • If System.Backup.Local.Enable is set to true, this also enables a daily full backup at 12:00am UTC (fixed in 3.9.1)

  • The data streaming connector does not handle NULL values; the connector may operate properly if a NULL value is submitted. Users should replace NULL with an alternate value, such as empty string "" for STRING data, 0 for INT data, etc. (NULL is not a valid value for the TigerGraph graph data store.)

  • Automatic message removal is an Alpha feature of the Kafka connector. It has several known issues.

  • The DATETIME data type is not supported by the PRINT … TO CSV statement (fixed in 3.9.1).

  • The LDAP keyword memberOf for declaring group hierarchy is case-sensitive.

  • In v3.9.1, when database backup is performed, the superuser password is reset back to the default. To maintain security, manually reset the superuser password after the export or import completes.

Compatibility Issues

  • v3.9.3

    • When a PRINT argument is an expression, the output uses the expression as the key (label) for that output value. To better support Antlr processing, PRINT now removes any spaces from that key. For example, count(DISTINCT @@ids) becomes count(DISTINCT@@ids).

  • v3.9.2+

    • Betweenness Centrality algorithm: reverse_edge_type (STRING) parameter changed to reverse_edge_type_set (SET<STRING>), to be consistent with edge_type_set and similar algorithms.

    • For vertices with string-type primary IDs, vertices whose ID is an empty string will now be rejected.

    • The default mode for the Kafka Connector changed from EOF="false" to EOF="true".

    • The default retention time for two monitoring services Informant.RetentionPeriodDays and TS3.RetentionPeriodDays has reduced from 30 to 7 days.

    • The filter for /informant/metrics/get/cpu-memory now accepts a list of ServiceDescriptors instead of a single ServiceDescriptor.

  • v3.9+:

    • Some user-defined functions (UDFs) may no longer be accepted due to increased security screening.

      • UDFs may no longer be called to_string(). This is now a built-in GSQL function.

      • UDF names may no longer use the tg_ prefix. Any user-defined function that began with tg_ must be renamed or removed in ExprFunctions.hpp.


  • As of 3.9.3, Build Graph Patterns is deprecated and will not be updated or supported and instead we are focusing on Insights as the tool of choice for building visual queries.

  • Kubernetes classic mode (non-operator) is deprecated, as of v3.9.

  • The WRITE_DATA RBAC privilege is deprecated, as of v3.7.