Files
joshua-spacetime 047dac9745 Remove legacy SQL code (#4628)
# Description of Changes

This patch removes the dead legacy SQL query engine and the remaining
code that only existed to support it.

Removed:

- Old SQL compiler/type-checker and VM-based execution path in
spacetimedb-core
- `spacetimedb-vm` crate
- Dead vm specific error variants and compatibility code
- Obsolete tests, benchmarks, and config paths that still referenced the
legacy engine

Small pieces still used by the current engine were moved to their proper
homes instead of keeping the `vm` crate around. In particular,
`RelValue` was moved to `spacetimedb-execution`.

The `sqltest` crate was also updated to use the current engine. Notably
though these tests are not run in CI, however I've kept them around as
they may be beneficial as we look to expand our SQL support in the
future.

Requires codeowner review from @cloutiertyler due to the removal of the
`LICENSE` file in the (now removed) `vm` crate.

# API and ABI breaking changes

None

# Expected complexity level and risk

1

# Testing

None

---------

Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com>
2026-03-19 17:47:00 +00:00
..
2026-03-19 17:47:00 +00:00
2025-06-04 16:33:32 +00:00
2025-06-04 16:33:32 +00:00
2026-03-19 17:47:00 +00:00
2025-08-12 18:20:58 +00:00
2023-08-01 23:16:37 +02:00
2023-08-01 23:16:37 +02:00
2023-08-01 23:16:37 +02:00

This crate check the conformance of SpacetimeDB to SQL:2016

⚠️ Internal Crate ⚠️

This crate is intended for internal use only. It is not stable and may change without notice.

Setup PG

Create a database called TestSpace

Issues

List of issues in the execution of the conformance test

UNSUPPORTED: issue 1

CHARACTERS/OCTETS is not implemented by neither PG nor Sqlite

CREATE TABLE TABLE_E021_01_01_02 ( A CHAR ( 8 CHARACTERS ) )
CREATE TABLE TABLE_E021_01_01_02 ( A CHAR ( 8 OCTETS ) )

UNSUPPORTED: issue 2

CHAR VARING is not implemented by neither PG nor Sqlite

CREATE TABLE TABLE_E021_02_01_02 ( A CHAR VARING ( 8 CHARACTERS ) )

UNSUPPORTED: issue 3

AS ( C , D ) is a syntax error on PG and Sqlite

SELECT * AS ( C , D ) FROM TABLE_E051_07_01_01

REPLACED: issue 4

CURRENT_TIME and timetz type is marked as "Don't use EVER" by PG: https://wiki.postgresql.org/wiki/Don%27t_Do_This#Don.27t_use_timetz

SELECT CURRENT_TIME

UNSUPPORTED: issue 5

CASE 0 WHEN 2 , 2 is a syntax error on PG and Sqlite

SELECT CASE 0 WHEN 2 , 2 THEN 1 END

WRONG: issue 6

This expression fail in PG by the lack of a timezone and Sqlite spit out a nonsensical value (1)

SELECT CAST ( CAST ( '01:02:03' AS TIME ) AS TIMESTAMP )