Files
turso/docs/sqlite-compat.md
2024-07-08 09:13:37 +03:00

312 lines
11 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SQLite Compatibility
This document describes the SQLite compatibility status of Limbo:
* [SQL statements](#sql-statements)
* [SQL functions](#sql-functions)
* [SQLite API](#sqlite-api)
## SQL statements
| Statement | Status | Comment |
|------------------------------|---------|---------|
| ALTER TABLE | No | |
| ANALYZE | No | |
| ATTACH DATABASE | No | |
| BEGIN TRANSACTION | No | |
| COMMIT TRANSACTION | No | |
| CREATE INDEX | No | |
| CREATE TABLE | No | |
| CREATE TRIGGER | No | |
| CREATE VIEW | No | |
| CREATE VIRTUAL TABLE | No | |
| DELETE | No | |
| DETACH DATABASE | No | |
| DROP INDEX | No | |
| DROP TABLE | No | |
| DROP TRIGGER | No | |
| DROP VIEW | No | |
| END TRANSACTION | No | |
| EXPLAIN | No | |
| INDEXED BY | No | |
| INSERT | No | |
| ON CONFLICT clause | No | |
| PRAGMA | Partial | |
| PRAGMA cache_size   | Yes | |
| REINDEX | No | |
| RELEASE SAVEPOINT | No | |
| REPLACE | No | |
| RETURNING clause | No | |
| ROLLBACK TRANSACTION | No | |
| SAVEPOINT | No | |
| SELECT | Partial | |
| SELECT ... WHERE | No | |
| SELECT ... LIMIT | Yes | |
| SELECT ... ORDER BY | No | |
| SELECT ... GROUP BY | No | |
| SELECT ... JOIN | No | |
| UPDATE | No | |
| UPSERT | No | |
| VACUUM | No | |
| WITH clause | No | |
## SQL functions
### Scalar functions
| Function | Status | Comment |
|------------------------------|---------|---------|
| abs(X) | No | |
| changes() | No | |
| char(X1,X2,...,XN) | No | |
| coalesce(X,Y,...) | No | |
| concat(X,...) | No | |
| concat_ws(SEP,X,...) | No | |
| format(FORMAT,...) | No | |
| glob(X,Y) | No | |
| hex(X) | No | |
| ifnull(X,Y) | No | |
| iif(X,Y,Z) | No | |
| instr(X,Y) | No | |
| last_insert_rowid() | No | |
| length(X) | No | |
| like(X,Y) | No | |
| like(X,Y,Z) | No | |
| likelihood(X,Y) | No | |
| likely(X) | No | |
| load_extension(X) | No | |
| load_extension(X,Y) | No | |
| lower(X) | No | |
| ltrim(X) | No | |
| ltrim(X,Y) | No | |
| max(X,Y,...) | No | |
| min(X,Y,...) | No | |
| nullif(X,Y) | No | |
| octet_length(X) | No | |
| printf(FORMAT,...) | No | |
| quote(X) | No | |
| random() | No | |
| randomblob(N) | No | |
| replace(X,Y,Z) | No | |
| round(X) | No | |
| round(X,Y) | No | |
| rtrim(X) | No | |
| rtrim(X,Y) | No | |
| sign(X) | No | |
| soundex(X) | No | |
| sqlite_compileoption_get(N) | No | |
| sqlite_compileoption_used(X) | No | |
| sqlite_offset(X) | No | |
| sqlite_source_id() | No | |
| sqlite_version() | No | |
| substr(X,Y,Z) | No | |
| substr(X,Y) | No | |
| substring(X,Y,Z) | No | |
| substring(X,Y) | No | |
| total_changes() | No | |
| trim(X) | No | |
| trim(X,Y) | No | |
| typeof(X) | No | |
| unhex(X) | No | |
| unhex(X,Y) | No | |
| unicode(X) | No | |
| unlikely(X) | No | |
| upper(X) | No | |
| zeroblob(N) | No | |
### Aggregate functions
| Function | Status | Comment |
|------------------------------|---------|---------|
| avg(X) | Yes | |
| count() | No | |
| count(*) | No | |
| group_concat(X) | No | |
| group_concat(X,Y) | No | |
| string_agg(X,Y) | No | |
| max(X) | No | |
| min(X) | No | |
| sum(X) | Yes | |
| total(X) | No | |
### Date and time functions
| Function | Status | Comment |
|------------------------------|---------|---------|
| date() | No | |
| time() | No | |
| datetime() | No | |
| julianday() | No | |
| unixepoch() | No | |
| strftime() | No | |
| timediff() | No | |
## SQLite API
| Interface | Status | Comment |
|------------------------------|---------|---------|
| sqlite3_open | Partial | |
| sqlite3_close | Yes | |
| sqlite3_prepare | Partial | |
| sqlite3_finalize | Yes | |
| sqlite3_step | Yes | |
| sqlite3_column_text | Yes | |
## SQLite VDBE opcodes
| Opcode | Status |
|---------------|--------|
| Add | No |
| AddImm | No |
| Affinity | No |
| AggFinal | Yes |
| AggStep | Yes |
| And | No |
| AutoCommit | No |
| BitAnd | No |
| BitNot | No |
| BitOr | No |
| Blob | No |
| Checkpoint | No |
| Clear | No |
| Close | No |
| CollSeq | No |
| Column | Yes |
| Compare | No |
| Concat | No |
| Copy | No |
| Count | No |
| CreateIndex | No |
| CreateTable | No |
| Delete | No |
| Destroy | No |
| Divide | No |
| DropIndex | No |
| DropTable | No |
| DropTrigger | No |
| Eq | No |
| Expire | No |
| Explain | No |
| FkCounter | No |
| FkIfZero | No |
| Found | No |
| Function | No |
| Ge | No |
| Gosub | No |
| Goto | Yes |
| Gt | No |
| Halt | Yes |
| HaltIfNull | No |
| IdxDelete | No |
| IdxGE | No |
| IdxInsert | No |
| IdxLT | No |
| IdxRowid | No |
| If | No |
| IfNeg | No |
| IfNot | No |
| IfPos | No |
| IfZero | No |
| IncrVacuum | No |
| Insert | No |
| InsertInt | No |
| Int64 | No |
| Integer | Yes |
| IntegrityCk | No |
| IsNull | No |
| IsUnique | No |
| JournalMode | No |
| Jump | No |
| Last | No |
| Le | No |
| LoadAnalysis | No |
| Lt | No |
| MakeRecord | Yes |
| MaxPgcnt | No |
| MemMax | No |
| Move | No |
| Multiply | No |
| MustBeInt | No |
| Ne | No |
| NewRowid | No |
| Next | No |
| Noop | No |
| Not | No |
| NotExists | No |
| NotFound | No |
| NotNull | No |
| Null | No |
| NullRow | No |
| Once | No |
| OpenAutoindex | No |
| OpenEphemeral | No |
| OpenPseudo | Yes |
| OpenRead | Yes |
| OpenWrite | No |
| Or | No |
| Pagecount | No |
| Param | No |
| ParseSchema | No |
| Permutation | No |
| Prev | No |
| Program | No |
| ReadCookie | No |
| Real | Yes |
| RealAffinity | No |
| Remainder | No |
| ResetCount | No |
| ResultRow | Yes |
| Return | No |
| Rewind | Yes |
| RowData | No |
| RowKey | No |
| RowSetAdd | No |
| RowSetRead | No |
| RowSetTest | No |
| Rowid | Yes |
| SCopy | No |
| Savepoint | No |
| Seek | No |
| SeekGe | No |
| SeekGt | No |
| SeekLe | No |
| SeekLt | No |
| Sequence | No |
| SetCookie | No |
| ShiftLeft | No |
| ShiftRight | No |
| Sort | No |
| SorterCompare | No |
| SorterData | Yes |
| SorterInsert | Yes |
| SorterNext | Yes |
| SorterOpen | Yes |
| SorterSort | Yes |
| String | No |
| String8 | Yes |
| Subtract | No |
| TableLock | No |
| ToBlob | No |
| ToInt | No |
| ToNumeric | No |
| ToReal | No |
| ToText | No |
| Trace | No |
| Transaction | No |
| VBegin | No |
| VColumn | No |
| VCreate | No |
| VDestroy | No |
| VFilter | No |
| VNext | No |
| VOpen | No |
| VRename | No |
| VUpdate | No |
| Vacuum | No |
| Variable | No |
| VerifyCookie | No |
| Yield | No |