Skip to content

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

HeliosDB Full’s Oracle compatibility module covers a large part of Oracle’s SQL and PL/SQL feature surface, at the maturity levels shown below. Through the Oracle listener today, table definitions, INSERT/UPDATE/DELETE and common queries run unchanged, while Oracle-specific syntax, most built-in functions and PL/SQL need rewriting; see Oracle compatibility for in-house applications for results by usage area and how to assess your own application. It is not a drop-in replacement.

CategoryMaturityHardened
Core SQLSupportedYes
DDL StatementsSupportedYes
DML StatementsSupportedYes
PL/SQL CoreBetaLimited
PL/SQL PackagesBetaNo
DBMS PackagesPartialLimited
Hierarchical QueriesSupportedYes
Analytic FunctionsSupportedYes
JSON FunctionsSupportedYes
XML FunctionsAlphaNo
Object TypesAlphaNo
CollectionsBetaLimited
TriggersBetaLimited
Large ObjectsBetaLimited

SQL Language Support

Data Definition Language (DDL)

StatementResultNotes
CREATE TABLESupportedMost options supported
CREATE TABLE AS SELECTSupportedBasic CTAS
ALTER TABLESupportedCommon alterations
DROP TABLESupportedCASCADE, PURGE
TRUNCATE TABLESupportedREUSE STORAGE partial
CREATE INDEXSupportedB-tree, basic bitmap
CREATE UNIQUE INDEXSupported
DROP INDEXSupported
CREATE VIEWSupportedWITH CHECK OPTION
CREATE OR REPLACE VIEWSupported
DROP VIEWSupported
CREATE MATERIALIZED VIEWPartialBasic refresh only
CREATE SEQUENCESupportedCACHE, NOCACHE
ALTER SEQUENCESupportedBasic modifications
DROP SEQUENCESupported
CREATE SYNONYMSupportedPUBLIC, PRIVATE
DROP SYNONYMSupported
CREATE TYPEPartialSimple object types
CREATE PROCEDURESupportedSee PL/SQL section
CREATE FUNCTIONSupportedSee PL/SQL section
CREATE PACKAGEPartialSee PL/SQL section
CREATE TRIGGERPartialRow-level triggers
CREATE CLUSTERNot Supported
CREATE CONTEXTNot Supported
CREATE DATABASE LINKNot Supported
CREATE DIRECTORYPartialLimited I/O
COMMENT ONSupported
GRANTSupportedBasic privileges
REVOKESupportedBasic privileges

Data Manipulation Language (DML)

StatementResultNotes
SELECTSupportedSee query features
INSERTSupportedSingle and multi-row
INSERT ALLPartialConditional limited
INSERT FIRSTPartial
UPDATESupported
DELETESupported
MERGESupportedBasic merge operations
SELECT FOR UPDATESupportedNOWAIT, WAIT n
LOCK TABLEPartialBasic modes

Query Features

FeatureResultNotes
Basic SELECTSupported
WHERE clauseSupported
ORDER BYSupportedNULLS FIRST/LAST
GROUP BYSupported
GROUP BY ROLLUPSupported
GROUP BY CUBEPartial
GROUP BY GROUPING SETSPartial
HAVINGSupported
DISTINCTSupported
Table aliasesSupported
Column aliasesSupported
SubqueriesSupportedCorrelated supported
Scalar subqueriesSupported
WITH clause (CTEs)Supported
Recursive CTEsPartialBasic recursion
UNIONSupported
UNION ALLSupported
INTERSECTSupported
MINUSSupported
INNER JOINSupported
LEFT/RIGHT OUTER JOINSupported
FULL OUTER JOINSupported
CROSS JOINSupported
NATURAL JOINPartial
USING clauseSupported
Oracle (+) syntaxPartialPrefer ANSI joins
FETCH FIRST n ROWSSupportedOracle 12c+
OFFSET n ROWSSupported
ROWNUMSupportedSee limitations

Hierarchical Query Features

FeatureResultNotes
CONNECT BYSupported
START WITHSupported
PRIORSupported
LEVELSupported
CONNECT_BY_ROOTSupported
SYS_CONNECT_BY_PATHSupported
CONNECT_BY_ISLEAFSupported
CONNECT_BY_ISCYCLEPartial
NOCYCLESupported
ORDER SIBLINGS BYPartial

Advanced Query Features

FeatureResultNotes
PIVOTPartialStatic pivot
UNPIVOTPartial
MODEL clauseNot SupportedPlanned
MATCH_RECOGNIZENot Supported
Flashback queriesPartialAS OF timestamp
SAMPLE clausePartial
XMLTABLEPartial
JSON_TABLESupported
Lateral inline viewsPartial
CROSS APPLYPartial
OUTER APPLYPartial

PL/SQL Support

Language Constructs

ConstructResultNotes
Anonymous blocksSupportedDECLARE/BEGIN/END
VariablesSupportedMost scalar types
ConstantsSupported
%TYPESupported
%ROWTYPESupported
IF-THEN-ELSESupported
CASE statementSupportedSimple and searched
Simple LOOPSupported
WHILE LOOPSupported
FOR LOOPSupportedNumeric ranges
Cursor FOR LOOPSupported
EXIT/EXIT WHENSupported
CONTINUESupported
GOTOPartialLimited support
NULL statementSupported
RETURNSupported
Nested blocksSupported
LabelsPartial

Procedures and Functions

FeatureResultNotes
CREATE PROCEDURESupported
CREATE FUNCTIONSupported
CREATE OR REPLACESupported
IN parametersSupported
OUT parametersSupported
IN OUT parametersPartial
DEFAULT valuesSupported
NOCOPY hintIgnoredSyntax accepted
DETERMINISTICPartialHint only
RESULT_CACHENot Supported
AUTHID CURRENT_USERPartial
AUTHID DEFINERPartial
Named notationSupported
Positional notationSupported
Mixed notationPartial

Packages

FeatureResultNotes
Package specificationPartial
Package bodyPartial
Package variablesPartialSession state limited
Package constantsPartial
Package typesPartial
Package cursorsPartial
Package initializationPartial
OverloadingPartial
PRAGMA SERIALLY_REUSABLENot Supported
Package stateLimitedPer-session state

Cursors

FeatureResultNotes
Explicit cursorsSupported
OPENSupported
FETCHSupported
CLOSESupported
%FOUNDSupported
%NOTFOUNDSupported
%ROWCOUNTSupported
%ISOPENSupported
Cursor parametersPartial
REF CURSORPartialWeak cursors
SYS_REFCURSORPartial
Cursor variablesPartial
Cursor expressionsPartial
Implicit cursorsSupportedSQL%* attributes

Exception Handling

FeatureResultNotes
EXCEPTION blockSupported
WHEN…THENSupported
WHEN OTHERSSupported
NO_DATA_FOUNDSupported
TOO_MANY_ROWSSupported
DUP_VAL_ON_INDEXSupported
INVALID_CURSORSupported
CURSOR_ALREADY_OPENSupported
VALUE_ERRORSupported
ZERO_DIVIDESupported
INVALID_NUMBERSupported
LOGIN_DENIEDPartial
PROGRAM_ERRORPartial
SQLCODESupported
SQLERRMSupported
RAISESupported
RAISE_APPLICATION_ERRORSupported
User-defined exceptionsSupported
EXCEPTION_INITPartial

Bulk Operations

FeatureResultNotes
BULK COLLECTPartialSimple cases
BULK COLLECT LIMITPartial
FORALLPartial
FORALL INDICES OFPartial
FORALL VALUES OFPartial
SAVE EXCEPTIONSPartial
SQL%BULK_EXCEPTIONSPartial
SQL%BULK_ROWCOUNTPartial

Collections

FeatureResultNotes
Nested tablesPartial
VARRAYsPartial
Associative arraysPartial
INDEX BY PLS_INTEGERSupported
INDEX BY VARCHAR2Partial
Collection methodsPartialCOUNT, FIRST, LAST
EXISTSPartial
COUNTPartial
FIRST/LASTPartial
NEXT/PRIORPartial
EXTENDPartial
TRIMPartial
DELETEPartial
Nested table operatorsNot Supported

Triggers

FeatureResultNotes
BEFORE INSERTSupported
AFTER INSERTSupported
BEFORE UPDATESupported
AFTER UPDATESupported
BEFORE DELETESupported
AFTER DELETESupported
FOR EACH ROWSupported
Statement-levelPartial
:new/:oldSupported
WHEN clausePartial
INSTEAD OFPartialViews only
COMPOUND triggersNot Supported
System triggersNot Supported
DDL triggersNot Supported

Advanced PL/SQL

FeatureResultNotes
Autonomous transactionsNot SupportedPlanned
Pipelined functionsNot Supported
Parallel enableNot Supported
PRAGMA RESTRICT_REFERENCESIgnored
PRAGMA INLINEIgnored
Native compilationNot Supported
Conditional compilationPartial
Object types in PL/SQLPartial
Dynamic SQL (EXECUTE IMMEDIATE)Partial
DBMS_SQLPartialSee package section

DBMS Packages

DBMS_OUTPUT

Function/ProcedureResultNotes
PUT_LINESupportedFull
PUTSupportedFull
NEW_LINESupportedFull
GET_LINESupported
GET_LINESPartial
ENABLESupported
DISABLESupported

DBMS_LOB

Function/ProcedureResultNotes
GETLENGTHSupported
SUBSTRSupported
INSTRSupported
APPENDSupported
COPYPartial
ERASEPartial
TRIMPartial
WRITEPartial
READPartial
COMPAREPartial
CREATETEMPORARYPartial
FREETEMPORARYPartial
ISTEMPORARYPartial
LOADFROMFILENot Supported
LOADBLOBFROMFILENot Supported
LOADCLOBFROMFILENot Supported
CONVERTTOBLOBPartial
CONVERTTOCLOBPartial

DBMS_SQL

Function/ProcedureResultNotes
OPEN_CURSORSupported
PARSESupported
BIND_VARIABLEPartialScalar types
BIND_ARRAYNot Supported
DEFINE_COLUMNPartial
EXECUTESupported
EXECUTE_AND_FETCHPartial
FETCH_ROWSPartial
COLUMN_VALUEPartial
VARIABLE_VALUEPartial
CLOSE_CURSORSupported
IS_OPENSupported
LAST_ROW_COUNTPartial
LAST_ERROR_POSITIONPartial
DESCRIBE_COLUMNSNot Supported
DESCRIBE_COLUMNS2Not Supported
TO_REFCURSORNot Supported
TO_CURSOR_NUMBERNot Supported

DBMS_UTILITY

Function/ProcedureResultNotes
FORMAT_ERROR_BACKTRACESupported
FORMAT_ERROR_STACKSupported
FORMAT_CALL_STACKPartial
GET_TIMESupportedCentiseconds
GET_CPU_TIMEPartial
COMMA_TO_TABLESupported
TABLE_TO_COMMASupported
NAME_RESOLVEPartial
NAME_TOKENIZEPartial
DB_VERSIONPartial
CURRENT_INSTANCEPartial
EXEC_DDL_STATEMENTPartial
COMPILE_SCHEMANot Supported
ANALYZE_SCHEMANot Supported

DBMS_METADATA

Function/ProcedureResultNotes
GET_DDLPartialTables, indexes
GET_DEPENDENT_DDLPartial
SET_TRANSFORM_PARAMPartial
OPENPartial
SET_FILTERPartial
SET_COUNTPartial
FETCH_DDLPartial
CLOSEPartial

DBMS_SCHEDULER

Function/ProcedureResultNotes
CREATE_JOBPartialBasic jobs
DROP_JOBSupported
ENABLESupported
DISABLESupported
RUN_JOBSupported
STOP_JOBSupported
CREATE_SCHEDULEPartial
DROP_SCHEDULEPartial
CREATE_PROGRAMPartial
DROP_PROGRAMPartial
CREATE_CHAINNot Supported
CREATE_WINDOWNot Supported
SET_ATTRIBUTEPartial

DBMS_STATS

Function/ProcedureResultNotes
GATHER_TABLE_STATSPartialBasic statistics
GATHER_INDEX_STATSPartial
GATHER_SCHEMA_STATSPartial
GATHER_DATABASE_STATSNot Supported
DELETE_TABLE_STATSPartial
DELETE_INDEX_STATSPartial
SET_TABLE_STATSPartial
GET_TABLE_STATSPartial
CREATE_STAT_TABLENot Supported
EXPORT_TABLE_STATSNot Supported
IMPORT_TABLE_STATSNot Supported

UTL_FILE

Function/ProcedureResultNotes
FOPENPartialLimited modes
FCLOSESupported
FCLOSE_ALLSupported
GET_LINESupported
PUTSupported
PUT_LINESupported
NEW_LINESupported
FFLUSHSupported
FSEEKNot Supported
FGETPOSNot Supported
IS_OPENPartial
FCOPYNot Supported
FGETATTRNot Supported
FREMOVEPartial
FRENAMEPartial

DBMS_RANDOM

Function/ProcedureResultNotes
INITIALIZESupported
SEEDPartial
RANDOMPartial
VALUESupported
VALUE (range)Supported
STRINGSupported
NORMALPartial
TERMINATESupported

Other Packages

PackageResultNotes
DBMS_SESSIONPartialSET_IDENTIFIER only
DBMS_APPLICATION_INFOPartialSET_MODULE, SET_ACTION
DBMS_CRYPTOPartialBasic encryption
DBMS_LOCKNot Supported
DBMS_PIPENot Supported
DBMS_ALERTNot Supported
DBMS_AQNot Supported
DBMS_AQADMNot Supported
DBMS_JOBDeprecatedUse DBMS_SCHEDULER
DBMS_PARALLEL_EXECUTENot Supported
DBMS_FLASHBACKNot SupportedUse MVCC
DBMS_REDEFINITIONNot Supported
DBMS_XANot Supported
UTL_HTTPNot Supported
UTL_SMTPNot Supported
UTL_TCPNot Supported
UTL_RAWPartial
UTL_ENCODEPartial

Data Types

Scalar Data Types

TypeResultNotes
NUMBERSupportedFull precision
NUMBER(p)Supported
NUMBER(p,s)Supported
INTEGERSupportedMaps to NUMBER(38)
SMALLINTSupported
DECIMALSupported
FLOATSupported
BINARY_FLOATSupportedIEEE 754
BINARY_DOUBLESupportedIEEE 754
VARCHAR2(n)SupportedUp to 32767
NVARCHAR2(n)SupportedUnicode
CHAR(n)SupportedFixed length
NCHAR(n)SupportedUnicode
CLOBSupported
NCLOBSupportedUnicode
BLOBSupported
BFILEPartialRead-only
RAW(n)Supported
LONGSupportedDeprecated
LONG RAWSupportedDeprecated
DATESupported
TIMESTAMPSupported
TIMESTAMP WITH TIME ZONESupported
TIMESTAMP WITH LOCAL TIME ZONEPartial
INTERVAL YEAR TO MONTHSupported
INTERVAL DAY TO SECONDSupported
ROWIDSupportedDifferent format
UROWIDPartial
BOOLEAN (PL/SQL)Supported
PLS_INTEGERSupported
BINARY_INTEGERSupported
SIMPLE_INTEGERPartial
SIMPLE_FLOATPartial
SIMPLE_DOUBLEPartial

Complex Types

TypeResultNotes
Object typesPartialSimple structures
Nested tablesPartial
VARRAYsPartial
REF typesNot Supported
Opaque typesNot Supported

XML Types

TypeResultNotes
XMLTypePartialBasic operations
createXMLPartial
extractPartialXPath
extractValuePartial
existsNodePartial
XMLQueryPartial
XMLTablePartial
XMLELEMENTPartial
XMLFORESTPartial
XMLAGGPartial

JSON Types

TypeResultNotes
JSONSupportedNative JSON type
JSON_VALUESupported
JSON_QUERYSupported
JSON_TABLESupported
JSON_EXISTSSupported
JSON_OBJECTSupported
JSON_ARRAYSupported
JSON_OBJECTAGGSupported
JSON_ARRAYAGGSupported
IS JSONSupported
JSON_SERIALIZEPartial
JSON_MERGEPATCHPartial
JSON_TRANSFORMNot Supported

Built-in Functions

String Functions

FunctionResultOracle Behavior Preserved
CONCATSupportedYes
SUBSTRSupportedYes (negative position)
LENGTHSupportedYes
INSTRSupportedYes (nth occurrence)
UPPERSupportedYes
LOWERSupportedYes
INITCAPSupportedYes
LPADSupportedYes
RPADSupportedYes
LTRIMSupportedYes (trim set)
RTRIMSupportedYes (trim set)
TRIMSupportedYes
REPLACESupportedYes
TRANSLATESupportedYes
REVERSESupportedYes
ASCIISupportedYes
CHRSupportedYes
SOUNDEXPartialApproximate
REGEXP_LIKESupportedMost patterns
REGEXP_REPLACESupportedMost patterns
REGEXP_SUBSTRSupportedMost patterns
REGEXP_INSTRPartialBasic patterns
REGEXP_COUNTPartialBasic patterns
NVLSupportedYes
NVL2SupportedYes
DECODESupportedYes
COALESCESupportedYes
NULLIFSupportedYes
LNNVLPartial
NANVLPartial

Numeric Functions

FunctionResultNotes
ABSSupported
CEILSupported
FLOORSupported
ROUNDSupported
TRUNCSupported
MODSupported
POWERSupported
SQRTSupported
EXPSupported
LNSupported
LOGSupported
SIGNSupported
SIN, COS, TANSupported
ASIN, ACOS, ATANSupported
SINH, COSH, TANHSupported
GREATESTSupportedNULL propagation
LEASTSupportedNULL propagation
WIDTH_BUCKETPartial
REMAINDERSupported
BITANDSupported

Date/Time Functions

FunctionResultNotes
SYSDATESupported
SYSTIMESTAMPSupported
CURRENT_DATESupportedSession TZ
CURRENT_TIMESTAMPSupportedSession TZ
LOCALTIMESTAMPSupported
DBTIMEZONEPartial
SESSIONTIMEZONESupported
ADD_MONTHSSupportedMonth-end handling
MONTHS_BETWEENSupportedFractional
LAST_DAYSupported
NEXT_DAYSupported
ROUND (date)SupportedFormat models
TRUNC (date)SupportedFormat models
EXTRACTSupported
TO_DATESupportedFormat models
TO_CHARSupportedFormat models
TO_TIMESTAMPSupported
TO_TIMESTAMP_TZPartial
TO_DSINTERVALPartial
TO_YMINTERVALPartial
FROM_TZPartial
NEW_TIMEPartial
TZ_OFFSETPartial

Aggregate Functions

FunctionResultNotes
COUNTSupportedIncluding DISTINCT
SUMSupported
AVGSupported
MINSupported
MAXSupported
LISTAGGSupported
MEDIANPartial
PERCENTILE_CONTPartial
PERCENTILE_DISCPartial
STDDEVSupported
STDDEV_POPSupported
STDDEV_SAMPSupported
VARIANCESupported
VAR_POPSupported
VAR_SAMPSupported
COVAR_POPPartial
COVAR_SAMPPartial
CORRPartial
REGR_*PartialBasic regression
STATS_*Not Supported
COLLECTPartial
XMLAGGPartial

Analytic Functions

FunctionResultNotes
ROW_NUMBERSupported
RANKSupported
DENSE_RANKSupported
NTILESupported
LAGSupported
LEADSupported
FIRST_VALUESupported
LAST_VALUESupported
NTH_VALUEPartial
CUME_DISTPartial
PERCENT_RANKPartial
RATIO_TO_REPORTPartial
FIRST/LASTPartial
KEEPPartialFIRST/LAST only
OVER clauseSupported
PARTITION BYSupported
ORDER BYSupported
ROWS/RANGESupported
UNBOUNDEDSupported
CURRENT ROWSupported

Conversion Functions

FunctionResultNotes
TO_CHARSupportedMost formats
TO_NUMBERSupported
TO_DATESupportedMost formats
TO_TIMESTAMPSupported
TO_CLOBPartial
TO_BLOBPartial
TO_LOBPartial
CASTSupportedMost conversions
CONVERTPartialCharacter sets
HEXTORAWSupported
RAWTOHEXSupported
ROWIDTOCHARPartial
CHARTOROWIDPartial

Advanced Features

Flashback Support

FeatureResultNotes
AS OF TIMESTAMPPartialUses MVCC
AS OF SCNNot Supported
VERSIONS BETWEENNot Supported
Flashback TableNot Supported
Flashback DropNot Supported
Flashback DatabaseNot Supported

Partitioning

FeatureResultNotes
Range partitioningPartialBasic
List partitioningPartialBasic
Hash partitioningPartialBasic
Composite partitioningNot Supported
Interval partitioningNot Supported
Reference partitioningNot Supported
Partition pruningPartial

Advanced Security

FeatureResultNotes
Virtual Private DatabaseNot Supported
Label SecurityNot Supported
Transparent Data EncryptionNot SupportedUse HeliosDB encryption
Data MaskingNot Supported
Database VaultNot Supported
Audit VaultNot Supported

Known Limitations

Not Supported Features

FeatureAlternative
Oracle RACHeliosDB native clustering
Data GuardHeliosDB replication
ASMStandard filesystem storage
Streams/GoldenGateHeliosDB CDC (connectors planned)
Oracle Spatial (SDO_*)Not available
Oracle TextHeliosDB full-text search
Java stored proceduresUse PL/pgSQL or external
APEXWeb UI alternatives
Oracle FormsWeb UI alternatives

SQL Limitations

  1. ROWNUM: Works in simple cases but complex ROWNUM usage may behave differently
  2. MODEL clause: Not supported; use application logic
  3. MATCH_RECOGNIZE: Pattern matching not available
  4. CONNECT BY: Limited to 1000 levels by default
  5. Recursive CTEs: Basic recursion only

PL/SQL Limitations

These apply to the planned PL/SQL support (see PL/SQL Support):

  1. Autonomous transactions: Not supported
  2. Pipelined functions: Not supported
  3. Package state: Limited session state management
  4. Native compilation: Interpreted only
  5. 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

ROWID Format

  • 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


Compatibility target: Oracle 23ai