cosmium/docs/COMPATIBILITY.md

7.0 KiB

Cosmium Compatibility with Cosmos DB

Introduction

Cosmium is designed to emulate the functionality of Cosmos DB, providing developers with a local development environment that closely mimics the behavior of Cosmos DB. While Cosmium aims to be compatible with Cosmos DB, there are certain differences and limitations to be aware of. This document provides an overview of Cosmium's compatibility with Cosmos DB and highlights areas where deviations may occur.

Supported Features

Cosmium strives to support the core features of Cosmos DB, including:

  • REST API
  • SQL-like query language
  • Document-based data model

Compatibility Matrix

Features

Feature Implemented
Subqueries No
Joins No
Computed properties No
Coalesce operators No
Bitwise operators No
GeoJSON location data No
Parameterized queries Yes
Stored procedures No
Triggers No
User-defined functions (UDFs) No

Clauses

Clause Implemented
SELECT Yes
FROM Yes
WHERE Yes
ORDER BY Yes
GROUP BY Yes
OFFSET LIMIT Yes

Keywords

Keyword Implemented
BETWEEN No
DISTINCT Yes
LIKE No
IN Yes
TOP Yes

Aggregate Functions

Function Implemented
AVG Yes
COUNT Yes
MAX Yes
MIN Yes
SUM Yes

Array Functions

Function Implemented
ARRAY_CONCAT Yes
ARRAY_CONTAINS No
ARRAY_LENGTH Yes
ARRAY_SLICE Yes
CHOOSE No
ObjectToArray No
SetIntersect Yes
SetUnion Yes

Conditional Functions

Function Implemented
IIF No

Date and time Functions

Function Implemented
DateTimeAdd No
DateTimeBin No
DateTimeDiff No
DateTimeFromParts No
DateTimePart No
DateTimeToTicks No
DateTimeToTimestamp No
GetCurrentDateTime No
GetCurrentDateTimeStatic No
GetCurrentTicks No
GetCurrentTicksStatic No
GetCurrentTimestamp No
GetCurrentTimestampStatic No
TicksToDateTime No
TimestampToDateTime No

Item Functions

Function Implemented
DocumentId No

Mathematical Functions

Function Implemented
ABS No
ACOS No
ASIN No
ATAN No
ATN2 No
CEILING No
COS No
COT No
DEGREES No
EXP No
FLOOR No
IntAdd No
IntBitAnd No
IntBitLeftShift No
IntBitNot No
IntBitOr No
IntBitRightShift No
IntBitXor No
IntDiv No
IntMod No
IntMul No
IntSub No
LOG No
LOG10 No
NumberBin No
PI No
POWER No
RADIANS No
RAND No
ROUND No
SIGN No
SIN No
SQRT No
SQUARE No
TAN No
TRUNC No

Spatial Functions

Function Implemented
ST_AREA No
ST_DISTANCE No
ST_WITHIN No
ST_INTERSECTS No
ST_ISVALID No
ST_ISVALIDDETAILED No

String Functions

Function Implemented
CONCAT Yes
CONTAINS Yes
ENDSWITH Yes
INDEX_OF Yes
LEFT Yes
LENGTH Yes
LOWER Yes
LTRIM Yes
REGEXMATCH No
REPLACE Yes
REPLICATE Yes
REVERSE Yes
RIGHT Yes
RTRIM Yes
STARTSWITH Yes
STRINGEQUALS Yes
StringToArray No
StringToBoolean No
StringToNull No
StringToNumber No
StringToObject No
SUBSTRING Yes
ToString Yes
TRIM Yes
UPPER Yes

Type checking Functions

Function Implemented
IS_ARRAY Yes
IS_BOOL Yes
IS_DEFINED Yes
IS_FINITE_NUMBER Yes
IS_INTEGER Yes
IS_NULL Yes
IS_NUMBER Yes
IS_OBJECT Yes
IS_PRIMITIVE Yes
IS_STRING Yes

Known Differences

While Cosmium aims to replicate the behavior of Cosmos DB as closely as possible, there are certain differences and limitations to be aware of:

  1. Performance: Cosmium may exhibit different performance characteristics compared to Cosmos DB, especially under heavy load or large datasets.
  2. Consistency Levels: The consistency model in Cosmium may differ slightly from Cosmos DB.
  3. Features: Some advanced features or functionalities of Cosmos DB may not be fully supported or available in Cosmium.

Future Development

Cosmium is actively developed and maintained, with ongoing efforts to improve compatibility with Cosmos DB and enhance its features and capabilities. Future updates may address known differences and limitations, as well as introduce new functionality to bring Cosmium closer to feature parity with Cosmos DB.