Oracle 23ai Compatibility Matrix
Comprehensive compatibility reference for HeliosDB’s Oracle 23ai implementation. This document provides detailed feature-by-feature compatibility information.
Table of Contents
Overall Compatibility Summary
Compatibility Level: 40-45%
HeliosDB implements foundational Oracle 23ai compatibility, focusing on the most commonly used features. The compatibility percentage represents features that work without code modification.
| Category | Coverage | Status | Production Ready |
|---|
| Core SQL | 65% | Production | Yes |
| DDL Statements | 55% | Production | Yes |
| DML Statements | 70% | Production | Yes |
| PL/SQL Core | 40% | Beta | Limited |
| PL/SQL Packages | 25% | Beta | No |
| DBMS Packages | 30% | Partial | Limited |
| Hierarchical Queries | 70% | Production | Yes |
| Analytic Functions | 55% | Production | Yes |
| JSON Functions | 50% | Production | Yes |
| XML Functions | 20% | Alpha | No |
| Object Types | 15% | Alpha | No |
| Collections | 30% | Beta | Limited |
| Triggers | 40% | Beta | Limited |
| Large Objects | 45% | Beta | Limited |
SQL Language Support
Data Definition Language (DDL)
| Statement | Status | Coverage | Notes |
|---|
| CREATE TABLE | Supported | 80% | Most options supported |
| CREATE TABLE AS SELECT | Supported | 75% | Basic CTAS |
| ALTER TABLE | Supported | 60% | Common alterations |
| DROP TABLE | Supported | 90% | CASCADE, PURGE |
| TRUNCATE TABLE | Supported | 85% | REUSE STORAGE partial |
| CREATE INDEX | Supported | 65% | B-tree, basic bitmap |
| CREATE UNIQUE INDEX | Supported | 70% | |
| DROP INDEX | Supported | 90% | |
| CREATE VIEW | Supported | 70% | WITH CHECK OPTION |
| CREATE OR REPLACE VIEW | Supported | 70% | |
| DROP VIEW | Supported | 90% | |
| CREATE MATERIALIZED VIEW | Partial | 35% | Basic refresh only |
| CREATE SEQUENCE | Supported | 75% | CACHE, NOCACHE |
| ALTER SEQUENCE | Supported | 60% | Basic modifications |
| DROP SEQUENCE | Supported | 90% | |
| CREATE SYNONYM | Supported | 60% | PUBLIC, PRIVATE |
| DROP SYNONYM | Supported | 90% | |
| CREATE TYPE | Partial | 20% | Simple object types |
| CREATE PROCEDURE | Supported | 50% | See PL/SQL section |
| CREATE FUNCTION | Supported | 50% | See PL/SQL section |
| CREATE PACKAGE | Partial | 30% | See PL/SQL section |
| CREATE TRIGGER | Partial | 40% | Row-level triggers |
| CREATE CLUSTER | Not Supported | 0% | |
| CREATE CONTEXT | Not Supported | 0% | |
| CREATE DATABASE LINK | Not Supported | 0% | |
| CREATE DIRECTORY | Partial | 30% | Limited I/O |
| COMMENT ON | Supported | 80% | |
| GRANT | Supported | 55% | Basic privileges |
| REVOKE | Supported | 55% | Basic privileges |
Data Manipulation Language (DML)
| Statement | Status | Coverage | Notes |
|---|
| SELECT | Supported | 75% | See query features |
| INSERT | Supported | 80% | Single and multi-row |
| INSERT ALL | Partial | 40% | Conditional limited |
| INSERT FIRST | Partial | 35% | |
| UPDATE | Supported | 80% | |
| DELETE | Supported | 85% | |
| MERGE | Supported | 60% | Basic merge operations |
| SELECT FOR UPDATE | Supported | 65% | NOWAIT, WAIT n |
| LOCK TABLE | Partial | 40% | Basic modes |
Query Features
| Feature | Status | Coverage | Notes |
|---|
| Basic SELECT | Supported | 90% | |
| WHERE clause | Supported | 85% | |
| ORDER BY | Supported | 90% | NULLS FIRST/LAST |
| GROUP BY | Supported | 85% | |
| GROUP BY ROLLUP | Supported | 60% | |
| GROUP BY CUBE | Partial | 45% | |
| GROUP BY GROUPING SETS | Partial | 40% | |
| HAVING | Supported | 85% | |
| DISTINCT | Supported | 90% | |
| Table aliases | Supported | 95% | |
| Column aliases | Supported | 95% | |
| Subqueries | Supported | 75% | Correlated supported |
| Scalar subqueries | Supported | 70% | |
| WITH clause (CTEs) | Supported | 70% | |
| Recursive CTEs | Partial | 40% | Basic recursion |
| UNION | Supported | 90% | |
| UNION ALL | Supported | 90% | |
| INTERSECT | Supported | 85% | |
| MINUS | Supported | 85% | |
| INNER JOIN | Supported | 90% | |
| LEFT/RIGHT OUTER JOIN | Supported | 90% | |
| FULL OUTER JOIN | Supported | 85% | |
| CROSS JOIN | Supported | 90% | |
| NATURAL JOIN | Partial | 50% | |
| USING clause | Supported | 80% | |
| Oracle (+) syntax | Partial | 60% | Prefer ANSI joins |
| FETCH FIRST n ROWS | Supported | 85% | Oracle 12c+ |
| OFFSET n ROWS | Supported | 85% | |
| ROWNUM | Supported | 70% | See limitations |
Hierarchical Query Features
| Feature | Status | Coverage | Notes |
|---|
| CONNECT BY | Supported | 75% | |
| START WITH | Supported | 80% | |
| PRIOR | Supported | 80% | |
| LEVEL | Supported | 80% | |
| CONNECT_BY_ROOT | Supported | 70% | |
| SYS_CONNECT_BY_PATH | Supported | 70% | |
| CONNECT_BY_ISLEAF | Supported | 65% | |
| CONNECT_BY_ISCYCLE | Partial | 50% | |
| NOCYCLE | Supported | 60% | |
| ORDER SIBLINGS BY | Partial | 45% | |
Advanced Query Features
| Feature | Status | Coverage | Notes |
|---|
| PIVOT | Partial | 45% | Static pivot |
| UNPIVOT | Partial | 45% | |
| MODEL clause | Not Supported | 5% | Planned |
| MATCH_RECOGNIZE | Not Supported | 0% | |
| Flashback queries | Partial | 30% | AS OF timestamp |
| SAMPLE clause | Partial | 35% | |
| XMLTABLE | Partial | 25% | |
| JSON_TABLE | Supported | 55% | |
| Lateral inline views | Partial | 40% | |
| CROSS APPLY | Partial | 35% | |
| OUTER APPLY | Partial | 35% | |
PL/SQL Support
Language Constructs
| Construct | Status | Coverage | Notes |
|---|
| Anonymous blocks | Supported | 65% | DECLARE/BEGIN/END |
| Variables | Supported | 70% | Most scalar types |
| Constants | Supported | 75% | |
| %TYPE | Supported | 60% | |
| %ROWTYPE | Supported | 55% | |
| IF-THEN-ELSE | Supported | 80% | |
| CASE statement | Supported | 75% | Simple and searched |
| Simple LOOP | Supported | 75% | |
| WHILE LOOP | Supported | 75% | |
| FOR LOOP | Supported | 70% | Numeric ranges |
| Cursor FOR LOOP | Supported | 60% | |
| EXIT/EXIT WHEN | Supported | 80% | |
| CONTINUE | Supported | 75% | |
| GOTO | Partial | 40% | Limited support |
| NULL statement | Supported | 90% | |
| RETURN | Supported | 75% | |
| Nested blocks | Supported | 65% | |
| Labels | Partial | 50% | |
Procedures and Functions
| Feature | Status | Coverage | Notes |
|---|
| CREATE PROCEDURE | Supported | 55% | |
| CREATE FUNCTION | Supported | 55% | |
| CREATE OR REPLACE | Supported | 55% | |
| IN parameters | Supported | 75% | |
| OUT parameters | Supported | 60% | |
| IN OUT parameters | Partial | 50% | |
| DEFAULT values | Supported | 60% | |
| NOCOPY hint | Ignored | 0% | Syntax accepted |
| DETERMINISTIC | Partial | 30% | Hint only |
| RESULT_CACHE | Not Supported | 0% | |
| AUTHID CURRENT_USER | Partial | 25% | |
| AUTHID DEFINER | Partial | 30% | |
| Named notation | Supported | 60% | |
| Positional notation | Supported | 80% | |
| Mixed notation | Partial | 45% | |
Packages
| Feature | Status | Coverage | Notes |
|---|
| Package specification | Partial | 35% | |
| Package body | Partial | 30% | |
| Package variables | Partial | 25% | Session state limited |
| Package constants | Partial | 35% | |
| Package types | Partial | 20% | |
| Package cursors | Partial | 25% | |
| Package initialization | Partial | 20% | |
| Overloading | Partial | 25% | |
| PRAGMA SERIALLY_REUSABLE | Not Supported | 0% | |
| Package state | Limited | 15% | Per-session state |
Cursors
| Feature | Status | Coverage | Notes |
|---|
| Explicit cursors | Supported | 60% | |
| OPEN | Supported | 65% | |
| FETCH | Supported | 65% | |
| CLOSE | Supported | 70% | |
| %FOUND | Supported | 65% | |
| %NOTFOUND | Supported | 65% | |
| %ROWCOUNT | Supported | 60% | |
| %ISOPEN | Supported | 60% | |
| Cursor parameters | Partial | 45% | |
| REF CURSOR | Partial | 35% | Weak cursors |
| SYS_REFCURSOR | Partial | 35% | |
| Cursor variables | Partial | 30% | |
| Cursor expressions | Partial | 25% | |
| Implicit cursors | Supported | 55% | SQL%* attributes |
Exception Handling
| Feature | Status | Coverage | Notes |
|---|
| EXCEPTION block | Supported | 65% | |
| WHEN…THEN | Supported | 70% | |
| WHEN OTHERS | Supported | 70% | |
| NO_DATA_FOUND | Supported | 75% | |
| TOO_MANY_ROWS | Supported | 70% | |
| DUP_VAL_ON_INDEX | Supported | 65% | |
| INVALID_CURSOR | Supported | 60% | |
| CURSOR_ALREADY_OPEN | Supported | 60% | |
| VALUE_ERROR | Supported | 65% | |
| ZERO_DIVIDE | Supported | 70% | |
| INVALID_NUMBER | Supported | 60% | |
| LOGIN_DENIED | Partial | 40% | |
| PROGRAM_ERROR | Partial | 45% | |
| SQLCODE | Supported | 65% | |
| SQLERRM | Supported | 65% | |
| RAISE | Supported | 60% | |
| RAISE_APPLICATION_ERROR | Supported | 55% | |
| User-defined exceptions | Supported | 55% | |
| EXCEPTION_INIT | Partial | 40% | |
Bulk Operations
| Feature | Status | Coverage | Notes |
|---|
| BULK COLLECT | Partial | 40% | Simple cases |
| BULK COLLECT LIMIT | Partial | 35% | |
| FORALL | Partial | 35% | |
| FORALL INDICES OF | Partial | 25% | |
| FORALL VALUES OF | Partial | 25% | |
| SAVE EXCEPTIONS | Partial | 20% | |
| SQL%BULK_EXCEPTIONS | Partial | 20% | |
| SQL%BULK_ROWCOUNT | Partial | 25% | |
Collections
| Feature | Status | Coverage | Notes |
|---|
| Nested tables | Partial | 35% | |
| VARRAYs | Partial | 30% | |
| Associative arrays | Partial | 40% | |
| INDEX BY PLS_INTEGER | Supported | 45% | |
| INDEX BY VARCHAR2 | Partial | 30% | |
| Collection methods | Partial | 35% | COUNT, FIRST, LAST |
| EXISTS | Partial | 40% | |
| COUNT | Partial | 45% | |
| FIRST/LAST | Partial | 40% | |
| NEXT/PRIOR | Partial | 35% | |
| EXTEND | Partial | 30% | |
| TRIM | Partial | 25% | |
| DELETE | Partial | 30% | |
| Nested table operators | Not Supported | 5% | |
Triggers
| Feature | Status | Coverage | Notes |
|---|
| BEFORE INSERT | Supported | 55% | |
| AFTER INSERT | Supported | 55% | |
| BEFORE UPDATE | Supported | 55% | |
| AFTER UPDATE | Supported | 55% | |
| BEFORE DELETE | Supported | 55% | |
| AFTER DELETE | Supported | 55% | |
| FOR EACH ROW | Supported | 55% | |
| Statement-level | Partial | 40% | |
| :NEW/:OLD | Supported | 55% | |
| WHEN clause | Partial | 40% | |
| INSTEAD OF | Partial | 30% | Views only |
| COMPOUND triggers | Not Supported | 5% | |
| System triggers | Not Supported | 0% | |
| DDL triggers | Not Supported | 0% | |
Advanced PL/SQL
| Feature | Status | Coverage | Notes |
|---|
| Autonomous transactions | Not Supported | 0% | Planned |
| Pipelined functions | Not Supported | 5% | |
| Parallel enable | Not Supported | 0% | |
| PRAGMA RESTRICT_REFERENCES | Ignored | 0% | |
| PRAGMA INLINE | Ignored | 0% | |
| Native compilation | Not Supported | 0% | |
| Conditional compilation | Partial | 20% | |
| Object types in PL/SQL | Partial | 15% | |
| Dynamic SQL (EXECUTE IMMEDIATE) | Partial | 40% | |
| DBMS_SQL | Partial | 35% | See package section |
DBMS Packages
DBMS_OUTPUT
| Function/Procedure | Status | Notes |
|---|
| PUT_LINE | Supported | Full |
| PUT | Supported | Full |
| NEW_LINE | Supported | Full |
| GET_LINE | Supported | |
| GET_LINES | Partial | |
| ENABLE | Supported | |
| DISABLE | Supported | |
DBMS_LOB
| Function/Procedure | Status | Notes |
|---|
| GETLENGTH | Supported | |
| SUBSTR | Supported | |
| INSTR | Supported | |
| APPEND | Supported | |
| COPY | Partial | |
| ERASE | Partial | |
| TRIM | Partial | |
| WRITE | Partial | |
| READ | Partial | |
| COMPARE | Partial | |
| CREATETEMPORARY | Partial | |
| FREETEMPORARY | Partial | |
| ISTEMPORARY | Partial | |
| LOADFROMFILE | Not Supported | |
| LOADBLOBFROMFILE | Not Supported | |
| LOADCLOBFROMFILE | Not Supported | |
| CONVERTTOBLOB | Partial | |
| CONVERTTOCLOB | Partial | |
DBMS_SQL
| Function/Procedure | Status | Notes |
|---|
| OPEN_CURSOR | Supported | |
| PARSE | Supported | |
| BIND_VARIABLE | Partial | Scalar types |
| BIND_ARRAY | Not Supported | |
| DEFINE_COLUMN | Partial | |
| EXECUTE | Supported | |
| EXECUTE_AND_FETCH | Partial | |
| FETCH_ROWS | Partial | |
| COLUMN_VALUE | Partial | |
| VARIABLE_VALUE | Partial | |
| CLOSE_CURSOR | Supported | |
| IS_OPEN | Supported | |
| LAST_ROW_COUNT | Partial | |
| LAST_ERROR_POSITION | Partial | |
| DESCRIBE_COLUMNS | Not Supported | |
| DESCRIBE_COLUMNS2 | Not Supported | |
| TO_REFCURSOR | Not Supported | |
| TO_CURSOR_NUMBER | Not Supported | |
DBMS_UTILITY
| Function/Procedure | Status | Notes |
|---|
| FORMAT_ERROR_BACKTRACE | Supported | |
| FORMAT_ERROR_STACK | Supported | |
| FORMAT_CALL_STACK | Partial | |
| GET_TIME | Supported | Centiseconds |
| GET_CPU_TIME | Partial | |
| COMMA_TO_TABLE | Supported | |
| TABLE_TO_COMMA | Supported | |
| NAME_RESOLVE | Partial | |
| NAME_TOKENIZE | Partial | |
| DB_VERSION | Partial | |
| CURRENT_INSTANCE | Partial | |
| EXEC_DDL_STATEMENT | Partial | |
| COMPILE_SCHEMA | Not Supported | |
| ANALYZE_SCHEMA | Not Supported | |
| Function/Procedure | Status | Notes |
|---|
| GET_DDL | Partial | Tables, indexes |
| GET_DEPENDENT_DDL | Partial | |
| SET_TRANSFORM_PARAM | Partial | |
| OPEN | Partial | |
| SET_FILTER | Partial | |
| SET_COUNT | Partial | |
| FETCH_DDL | Partial | |
| CLOSE | Partial | |
DBMS_SCHEDULER
| Function/Procedure | Status | Notes |
|---|
| CREATE_JOB | Partial | Basic jobs |
| DROP_JOB | Supported | |
| ENABLE | Supported | |
| DISABLE | Supported | |
| RUN_JOB | Supported | |
| STOP_JOB | Supported | |
| CREATE_SCHEDULE | Partial | |
| DROP_SCHEDULE | Partial | |
| CREATE_PROGRAM | Partial | |
| DROP_PROGRAM | Partial | |
| CREATE_CHAIN | Not Supported | |
| CREATE_WINDOW | Not Supported | |
| SET_ATTRIBUTE | Partial | |
DBMS_STATS
| Function/Procedure | Status | Notes |
|---|
| GATHER_TABLE_STATS | Partial | Basic statistics |
| GATHER_INDEX_STATS | Partial | |
| GATHER_SCHEMA_STATS | Partial | |
| GATHER_DATABASE_STATS | Not Supported | |
| DELETE_TABLE_STATS | Partial | |
| DELETE_INDEX_STATS | Partial | |
| SET_TABLE_STATS | Partial | |
| GET_TABLE_STATS | Partial | |
| CREATE_STAT_TABLE | Not Supported | |
| EXPORT_TABLE_STATS | Not Supported | |
| IMPORT_TABLE_STATS | Not Supported | |
UTL_FILE
| Function/Procedure | Status | Notes |
|---|
| FOPEN | Partial | Limited modes |
| FCLOSE | Supported | |
| FCLOSE_ALL | Supported | |
| GET_LINE | Supported | |
| PUT | Supported | |
| PUT_LINE | Supported | |
| NEW_LINE | Supported | |
| FFLUSH | Supported | |
| FSEEK | Not Supported | |
| FGETPOS | Not Supported | |
| IS_OPEN | Partial | |
| FCOPY | Not Supported | |
| FGETATTR | Not Supported | |
| FREMOVE | Partial | |
| FRENAME | Partial | |
DBMS_RANDOM
| Function/Procedure | Status | Notes |
|---|
| INITIALIZE | Supported | |
| SEED | Partial | |
| RANDOM | Partial | |
| VALUE | Supported | |
| VALUE (range) | Supported | |
| STRING | Supported | |
| NORMAL | Partial | |
| TERMINATE | Supported | |
Other Packages
| Package | Status | Coverage | Notes |
|---|
| DBMS_SESSION | Partial | 20% | SET_IDENTIFIER only |
| DBMS_APPLICATION_INFO | Partial | 40% | SET_MODULE, SET_ACTION |
| DBMS_CRYPTO | Partial | 15% | Basic encryption |
| DBMS_LOCK | Not Supported | 0% | |
| DBMS_PIPE | Not Supported | 0% | |
| DBMS_ALERT | Not Supported | 0% | |
| DBMS_AQ | Not Supported | 0% | |
| DBMS_AQADM | Not Supported | 0% | |
| DBMS_JOB | Deprecated | 10% | Use DBMS_SCHEDULER |
| DBMS_PARALLEL_EXECUTE | Not Supported | 0% | |
| DBMS_FLASHBACK | Not Supported | 0% | Use MVCC |
| DBMS_REDEFINITION | Not Supported | 0% | |
| DBMS_XA | Not Supported | 0% | |
| UTL_HTTP | Not Supported | 0% | |
| UTL_SMTP | Not Supported | 0% | |
| UTL_TCP | Not Supported | 0% | |
| UTL_RAW | Partial | 30% | |
| UTL_ENCODE | Partial | 25% | |
Data Types
Scalar Data Types
| Type | Status | Coverage | Notes |
|---|
| NUMBER | Supported | 90% | Full precision |
| NUMBER(p) | Supported | 90% | |
| NUMBER(p,s) | Supported | 90% | |
| INTEGER | Supported | 90% | Maps to NUMBER(38) |
| SMALLINT | Supported | 90% | |
| DECIMAL | Supported | 85% | |
| FLOAT | Supported | 85% | |
| BINARY_FLOAT | Supported | 80% | IEEE 754 |
| BINARY_DOUBLE | Supported | 80% | IEEE 754 |
| VARCHAR2(n) | Supported | 90% | Up to 32767 |
| NVARCHAR2(n) | Supported | 80% | Unicode |
| CHAR(n) | Supported | 85% | Fixed length |
| NCHAR(n) | Supported | 80% | Unicode |
| CLOB | Supported | 65% | |
| NCLOB | Supported | 60% | Unicode |
| BLOB | Supported | 65% | |
| BFILE | Partial | 20% | Read-only |
| RAW(n) | Supported | 70% | |
| LONG | Supported | 50% | Deprecated |
| LONG RAW | Supported | 45% | Deprecated |
| DATE | Supported | 85% | |
| TIMESTAMP | Supported | 85% | |
| TIMESTAMP WITH TIME ZONE | Supported | 80% | |
| TIMESTAMP WITH LOCAL TIME ZONE | Partial | 60% | |
| INTERVAL YEAR TO MONTH | Supported | 70% | |
| INTERVAL DAY TO SECOND | Supported | 70% | |
| ROWID | Supported | 60% | Different format |
| UROWID | Partial | 40% | |
| BOOLEAN (PL/SQL) | Supported | 75% | |
| PLS_INTEGER | Supported | 75% | |
| BINARY_INTEGER | Supported | 75% | |
| SIMPLE_INTEGER | Partial | 50% | |
| SIMPLE_FLOAT | Partial | 50% | |
| SIMPLE_DOUBLE | Partial | 50% | |
Complex Types
| Type | Status | Coverage | Notes |
|---|
| Object types | Partial | 15% | Simple structures |
| Nested tables | Partial | 30% | |
| VARRAYs | Partial | 30% | |
| REF types | Not Supported | 0% | |
| Opaque types | Not Supported | 0% | |
XML Types
| Type | Status | Coverage | Notes |
|---|
| XMLType | Partial | 25% | Basic operations |
| createXML | Partial | 30% | |
| extract | Partial | 35% | XPath |
| extractValue | Partial | 30% | |
| existsNode | Partial | 30% | |
| XMLQuery | Partial | 25% | |
| XMLTable | Partial | 25% | |
| XMLELEMENT | Partial | 25% | |
| XMLFOREST | Partial | 20% | |
| XMLAGG | Partial | 25% | |
JSON Types
| Type | Status | Coverage | Notes |
|---|
| JSON | Supported | 60% | Native JSON type |
| JSON_VALUE | Supported | 65% | |
| JSON_QUERY | Supported | 60% | |
| JSON_TABLE | Supported | 55% | |
| JSON_EXISTS | Supported | 60% | |
| JSON_OBJECT | Supported | 60% | |
| JSON_ARRAY | Supported | 60% | |
| JSON_OBJECTAGG | Supported | 55% | |
| JSON_ARRAYAGG | Supported | 55% | |
| IS JSON | Supported | 65% | |
| JSON_SERIALIZE | Partial | 45% | |
| JSON_MERGEPATCH | Partial | 35% | |
| JSON_TRANSFORM | Not Supported | 10% | |
Built-in Functions
String Functions
| Function | Status | Oracle Behavior Preserved |
|---|
| CONCAT | Supported | Yes |
| SUBSTR | Supported | Yes (negative position) |
| LENGTH | Supported | Yes |
| INSTR | Supported | Yes (nth occurrence) |
| UPPER | Supported | Yes |
| LOWER | Supported | Yes |
| INITCAP | Supported | Yes |
| LPAD | Supported | Yes |
| RPAD | Supported | Yes |
| LTRIM | Supported | Yes (trim set) |
| RTRIM | Supported | Yes (trim set) |
| TRIM | Supported | Yes |
| REPLACE | Supported | Yes |
| TRANSLATE | Supported | Yes |
| REVERSE | Supported | Yes |
| ASCII | Supported | Yes |
| CHR | Supported | Yes |
| SOUNDEX | Partial | Approximate |
| REGEXP_LIKE | Supported | Most patterns |
| REGEXP_REPLACE | Supported | Most patterns |
| REGEXP_SUBSTR | Supported | Most patterns |
| REGEXP_INSTR | Partial | Basic patterns |
| REGEXP_COUNT | Partial | Basic patterns |
| NVL | Supported | Yes |
| NVL2 | Supported | Yes |
| DECODE | Supported | Yes |
| COALESCE | Supported | Yes |
| NULLIF | Supported | Yes |
| LNNVL | Partial | |
| NANVL | Partial | |
Numeric Functions
| Function | Status | Notes |
|---|
| ABS | Supported | |
| CEIL | Supported | |
| FLOOR | Supported | |
| ROUND | Supported | |
| TRUNC | Supported | |
| MOD | Supported | |
| POWER | Supported | |
| SQRT | Supported | |
| EXP | Supported | |
| LN | Supported | |
| LOG | Supported | |
| SIGN | Supported | |
| SIN, COS, TAN | Supported | |
| ASIN, ACOS, ATAN | Supported | |
| SINH, COSH, TANH | Supported | |
| GREATEST | Supported | NULL propagation |
| LEAST | Supported | NULL propagation |
| WIDTH_BUCKET | Partial | |
| REMAINDER | Supported | |
| BITAND | Supported | |
Date/Time Functions
| Function | Status | Notes |
|---|
| SYSDATE | Supported | |
| SYSTIMESTAMP | Supported | |
| CURRENT_DATE | Supported | Session TZ |
| CURRENT_TIMESTAMP | Supported | Session TZ |
| LOCALTIMESTAMP | Supported | |
| DBTIMEZONE | Partial | |
| SESSIONTIMEZONE | Supported | |
| ADD_MONTHS | Supported | Month-end handling |
| MONTHS_BETWEEN | Supported | Fractional |
| LAST_DAY | Supported | |
| NEXT_DAY | Supported | |
| ROUND (date) | Supported | Format models |
| TRUNC (date) | Supported | Format models |
| EXTRACT | Supported | |
| TO_DATE | Supported | Format models |
| TO_CHAR | Supported | Format models |
| TO_TIMESTAMP | Supported | |
| TO_TIMESTAMP_TZ | Partial | |
| TO_DSINTERVAL | Partial | |
| TO_YMINTERVAL | Partial | |
| FROM_TZ | Partial | |
| NEW_TIME | Partial | |
| TZ_OFFSET | Partial | |
Aggregate Functions
| Function | Status | Notes |
|---|
| COUNT | Supported | Including DISTINCT |
| SUM | Supported | |
| AVG | Supported | |
| MIN | Supported | |
| MAX | Supported | |
| LISTAGG | Supported | |
| MEDIAN | Partial | |
| PERCENTILE_CONT | Partial | |
| PERCENTILE_DISC | Partial | |
| STDDEV | Supported | |
| STDDEV_POP | Supported | |
| STDDEV_SAMP | Supported | |
| VARIANCE | Supported | |
| VAR_POP | Supported | |
| VAR_SAMP | Supported | |
| COVAR_POP | Partial | |
| COVAR_SAMP | Partial | |
| CORR | Partial | |
| REGR_* | Partial | Basic regression |
| STATS_* | Not Supported | |
| COLLECT | Partial | |
| XMLAGG | Partial | |
Analytic Functions
| Function | Status | Notes |
|---|
| ROW_NUMBER | Supported | |
| RANK | Supported | |
| DENSE_RANK | Supported | |
| NTILE | Supported | |
| LAG | Supported | |
| LEAD | Supported | |
| FIRST_VALUE | Supported | |
| LAST_VALUE | Supported | |
| NTH_VALUE | Partial | |
| CUME_DIST | Partial | |
| PERCENT_RANK | Partial | |
| RATIO_TO_REPORT | Partial | |
| FIRST/LAST | Partial | |
| KEEP | Partial | FIRST/LAST only |
| OVER clause | Supported | |
| PARTITION BY | Supported | |
| ORDER BY | Supported | |
| ROWS/RANGE | Supported | |
| UNBOUNDED | Supported | |
| CURRENT ROW | Supported | |
Conversion Functions
| Function | Status | Notes |
|---|
| TO_CHAR | Supported | Most formats |
| TO_NUMBER | Supported | |
| TO_DATE | Supported | Most formats |
| TO_TIMESTAMP | Supported | |
| TO_CLOB | Partial | |
| TO_BLOB | Partial | |
| TO_LOB | Partial | |
| CAST | Supported | Most conversions |
| CONVERT | Partial | Character sets |
| HEXTORAW | Supported | |
| RAWTOHEX | Supported | |
| ROWIDTOCHAR | Partial | |
| CHARTOROWID | Partial | |
Advanced Features
Flashback Support
| Feature | Status | Notes |
|---|
| AS OF TIMESTAMP | Partial | Uses MVCC |
| AS OF SCN | Not Supported | |
| VERSIONS BETWEEN | Not Supported | |
| Flashback Table | Not Supported | |
| Flashback Drop | Not Supported | |
| Flashback Database | Not Supported | |
Partitioning
| Feature | Status | Notes |
|---|
| Range partitioning | Partial | Basic |
| List partitioning | Partial | Basic |
| Hash partitioning | Partial | Basic |
| Composite partitioning | Not Supported | |
| Interval partitioning | Not Supported | |
| Reference partitioning | Not Supported | |
| Partition pruning | Partial | |
Advanced Security
| Feature | Status | Notes |
|---|
| Virtual Private Database | Not Supported | |
| Label Security | Not Supported | |
| Transparent Data Encryption | Not Supported | Use HeliosDB encryption |
| Data Masking | Not Supported | |
| Database Vault | Not Supported | |
| Audit Vault | Not Supported | |
Known Limitations
Not Supported Features
| Feature | Alternative |
|---|
| Oracle RAC | HeliosDB native clustering |
| Data Guard | HeliosDB replication |
| ASM | Standard filesystem storage |
| Streams/GoldenGate | HeliosDB CDC |
| Oracle Spatial (SDO_*) | Not available |
| Oracle Text | HeliosDB full-text search |
| Java stored procedures | Use PL/SQL or external |
| APEX | Web UI alternatives |
| Oracle Forms | Web UI alternatives |
SQL Limitations
- ROWNUM: Works in simple cases but complex ROWNUM usage may behave differently
- MODEL clause: Not supported; use application logic
- MATCH_RECOGNIZE: Pattern matching not available
- CONNECT BY: Limited to 1000 levels by default
- Recursive CTEs: Basic recursion only
PL/SQL Limitations
- Autonomous transactions: Not supported
- Pipelined functions: Not supported
- Package state: Limited session state management
- Native compilation: Interpreted only
- Complex object types: Basic structures only
Behavioral Differences
NULL Handling
- Oracle empty strings are treated as NULL; HeliosDB distinguishes empty strings from NULL
- Use NVL() or COALESCE() for consistent behavior
- HeliosDB uses a different internal ROWID format
- ROWID values are not portable between systems
Sequence Behavior
- Caching behavior may differ slightly
- CURRVAL requires NEXTVAL to be called first in the same session
Transaction Isolation
- Uses HeliosDB’s MVCC implementation
- Snapshot isolation is the default
Date Arithmetic
- Oracle allows direct date + number operations
- Some edge cases with month-end dates may differ
Last Updated: January 2026
Compatibility Version: HeliosDB 7.0+ / Oracle 23ai