Skip to content

Snowflake Protocol Compatibility

Snowflake Protocol Compatibility

Detailed feature compatibility matrix for Snowflake protocol support in HeliosDB.

Feature Coverage: 90%+

Core Features

FeatureStatusNotes
SQL APISupportedFull statement execution
AuthenticationSupportedKey pair, password
SessionsSupportedSession management
ContextsSupportedWarehouse/DB/Schema
Query HistorySupportedFull history access

Time Travel

FeatureStatusNotes
AT (TIMESTAMP)SupportedQuery at specific time
AT (OFFSET)SupportedQuery at relative offset
AT (STATEMENT)SupportedQuery at statement ID
BEFORE (STATEMENT)SupportedQuery before statement
CHANGES()SupportedTrack changes
UNDROPSupportedRestore dropped objects
-- Time travel examples
SELECT * FROM orders AT(TIMESTAMP => '2024-01-01 00:00:00');
SELECT * FROM orders AT(OFFSET => -3600); -- 1 hour ago
SELECT * FROM orders BEFORE(STATEMENT => 'statement-id');

VARIANT Data Type

FeatureStatusNotes
VARIANT storageSupportedSemi-structured data
Path notationSupporteddata:field:subfield
Array indexingSupporteddata:items[0]
Type castingSupported::STRING, ::NUMBER
PARSE_JSONSupportedJSON to VARIANT
TO_VARIANTSupportedConvert to VARIANT
GET/GET_PATHSupportedField access
-- VARIANT examples
SELECT data:name::STRING as name FROM json_table;
SELECT data:items[0].price::NUMBER as price FROM orders;

FLATTEN Function

FeatureStatusNotes
Basic FLATTENSupportedUnnest arrays
LATERAL FLATTENSupportedCorrelated unnesting
RecursiveSupportedNested structures
OUTERSupportedPreserve NULLs
PATHSupportedSpecify path
MODESupportedARRAY, OBJECT, BOTH
-- FLATTEN examples
SELECT f.value:id, f.value:name
FROM orders, LATERAL FLATTEN(input => items) f;
SELECT f.value
FROM data, LATERAL FLATTEN(input => nested:array, recursive => true) f;

Virtual Warehouses

FeatureStatusNotes
CREATE WAREHOUSESupportedAll sizes
ALTER WAREHOUSESupportedResize, suspend/resume
DROP WAREHOUSESupported-
AUTO_SUSPENDSupportedConfigurable timeout
AUTO_RESUMESupportedOn query submission
MULTI_CLUSTERSupportedScaling policies
USE WAREHOUSESupportedContext switching
-- Warehouse management
CREATE WAREHOUSE analytics_wh WITH
WAREHOUSE_SIZE = 'LARGE'
AUTO_SUSPEND = 300
AUTO_RESUME = TRUE
MIN_CLUSTER_COUNT = 1
MAX_CLUSTER_COUNT = 4;
ALTER WAREHOUSE analytics_wh SET WAREHOUSE_SIZE = 'XLARGE';
ALTER WAREHOUSE analytics_wh SUSPEND;
ALTER WAREHOUSE analytics_wh RESUME;

COPY INTO

FeatureStatusNotes
From stageSupportedInternal/external
File formatsSupportedCSV, JSON, Parquet, Avro, ORC
Cloud storageSupportedS3, Azure, GCS
Pattern matchingSupportedFile patterns
ON_ERRORSupportedError handling
CompressionSupportedGZIP, Snappy, ZSTD
-- COPY INTO examples
COPY INTO my_table
FROM @my_stage/data/
FILE_FORMAT = (TYPE = 'JSON')
ON_ERROR = 'CONTINUE';
COPY INTO my_table
FROM 's3://bucket/path/'
CREDENTIALS = (AWS_KEY_ID = '...' AWS_SECRET_KEY = '...')
FILE_FORMAT = (TYPE = 'PARQUET');

SQL Functions

Semi-Structured Functions

FunctionStatusDescription
PARSE_JSONSupportedParse JSON string
TO_JSONSupportedConvert to JSON
TO_VARIANTSupportedConvert to VARIANT
TRY_PARSE_JSONSupportedSafe JSON parse
OBJECT_CONSTRUCTSupportedBuild objects
ARRAY_CONSTRUCTSupportedBuild arrays
ARRAY_AGGSupportedAggregate to array
OBJECT_AGGSupportedAggregate to object
GETSupportedGet by key
GET_PATHSupportedGet by path

String Functions

FunctionStatusDescription
CONTAINSSupportedString contains
STARTSWITHSupportedString starts with
ENDSWITHSupportedString ends with
SPLITSupportedSplit string
SPLIT_PARTSupportedGet split part
LISTAGGSupportedConcatenate with delimiter

Utility Functions

FunctionStatusDescription
GENERATE_UUIDSupportedGenerate UUID
RANDOMSupportedRandom number
TRY_CASTSupportedSafe type cast
COALESCESupportedFirst non-null
NVL/NVL2SupportedNull handling
IFFSupportedConditional

Data Types

TypeStatusNotes
NUMBERSupportedNumeric
FLOATSupportedFloating point
VARCHARSupportedVariable string
BINARYSupportedBinary data
BOOLEANSupportedBoolean
DATESupportedDate only
TIMESupportedTime only
TIMESTAMP_NTZSupportedNo timezone
TIMESTAMP_LTZSupportedLocal timezone
TIMESTAMP_TZSupportedWith timezone
VARIANTSupportedSemi-structured
OBJECTSupportedJSON object
ARRAYSupportedJSON array
GEOGRAPHYSupportedGeospatial

Session Parameters

ParameterStatusDescription
QUERY_TAGSupportedTag queries
TIMEZONESupportedSession timezone
DATE_OUTPUT_FORMATSupportedDate format
TIMESTAMP_OUTPUT_FORMATSupportedTimestamp format
BINARY_OUTPUT_FORMATSupportedBinary format

Known Limitations

  1. Streams: Not yet supported
  2. Tasks: Not yet supported
  3. Pipes: Not yet supported
  4. Dynamic Tables: Not yet supported
  5. Snowpark: Not supported (Python UDFs)

Migration Notes

When migrating from Snowflake to HeliosDB:

  1. Connection: Update connection string
  2. Warehouses: Virtual warehouses work similarly
  3. SQL: Most Snowflake SQL is compatible
  4. VARIANT: Full support for semi-structured data
  5. Time Travel: Same syntax supported

Last Updated: January 2026