7.3 Supported PGQL Features and Limitations for SQL Property Graphs

Learn about the supported PGQL features and limitations for SQL property graphs.

The following table provides the complete list of supported and unsupported PGQL functionalities for SQL property graphs:

Table 7-1 Supported PGQL Functionalities and Limitations for SQL Property Graphs

Features PGQL on SQL Property Graphs
CREATE PROPERTY GRAPH Supported
DROP PROPERTY GRAPH Supported
Fixed-length pattern matching Supported
Variable-length pattern matching goals Not Supported
Variable-length pattern matching quantifiers Not Supported
Variable-length path unnesting Not Supported
GROUP BY Supported
HAVING Supported
Aggregations Supported:
  • COUNT
  • MIN, MAX, AVG, SUM
  • LISTAGG
Not supported:
  • ARRAY_AGG
  • JSON_ARRAYAGG
DISTINCT
  • SELECT DISTINCT
  • Aggregation with DISTINCT (such as, COUNT(DISTINCT e.prop))
Supported
SELECT v.* Not Supported
ORDER BY (+ASC/DESC), LIMIT, OFFSET Supported
Data Types All available Oracle RDBMS data types supported
JSON Supported:
  • JSON storage:
    • JSON strings (VARCHAR2)
    • JSON objects
  • JSON functions:

    Any JSON function call that follows the syntax, json_function_name(arg1, arg2,…). For example:

    json_value(department_data, '$.department')

Limitations:
  • Simple Dot Notation
  • Any optional clause in a JSON function call (such as RETURNING, ERROR, and so on) is not supported. For example:

    json_value(department_data, '$.employees[1].hireDate' RETURNING DATE)

Operators Supported:
  • Relational: +, -, *, /, %, - (unary minus)
  • Arithmetic: =, <>, <, >, <=, >=
  • Logical: AND, OR, NOT
  • String: || (concat)
Functions and predicates

Supported are all available functions in the Oracle RDBMS that take the form function_name(arg1, arg2, ...) with optional schema and package qualifiers.

Supported PGQL functions/predicates:

  • IS NULL, IS NOT NULL
  • LOWER, UPPER
  • SUBSTRING
  • ABS, CEIL/CEILING, FLOOR, ROUND
  • EXTRACT
  • CAST
  • CASE
  • IN and NOT IN

Unsupported PGQL functions/predicates are all vertex/edge functions

User-defined functions Supported:
  • PL/SQL functions
  • Functions created via the Oracle Database Multilingual Engine (MLE)
Subqueries:
  • Scalar subqueries
  • EXISTS and NOT EXISTS subqueries
  • LATERAL subquery
Supported subqueries:
  • EXISTS
  • NOT EXISTS
Not supported:
  • Scalar subqueries
  • LATERAL subquery
GRAPH_TABLE operator Not supported
INSERT/UPDATE/DELETE Not supported
INTERVAL literals and operations Not supported