README.md
1This directory contains `spannertest`, an in-memory fake Cloud Spanner. A sibling
2directory, `spansql`, contains types and parser for the Cloud Spanner SQL dialect.
3
4`spansql` is reusable for anything that interacts with Cloud Spanner on a
5syntactic basis, such as tools for handling Spanner schema (DDL).
6
7`spannertest` builds on `spansql` for testing code that uses Cloud Spanner client
8libraries.
9
10Neither of these packages aims to be performant nor exact replicas of the
11production Cloud Spanner. They are reasonable for building tools, or writing
12unit or integration tests. Full-scale performance testing or serious workloads
13should use the production Cloud Spanner instead.
14
15See [INTERNALS.md](INTERNALS.md) for an explanation of the implementation.
16
17Here's a list of features that are missing or incomplete. It is roughly ordered
18by ascending esotericism:
19
20- expression functions
21- NUMERIC
22- more aggregation functions
23- SELECT HAVING
24- more literal types
25- generated columns
26- expression type casting, coercion
27- multiple joins
28- subselects
29- case insensitivity of table and column names and query aliases
30- transaction simulation
31- FOREIGN KEY and CHECK constraints
32- INSERT DML statements
33- set operations (UNION, INTERSECT, EXCEPT)
34- STRUCT types
35- partition support
36- conditional expressions
37- table sampling (implementation)
38