Comment

Comment by simonw

It looks like this check-in from yesterday contains the implementation and tests: https://sqlite.org/src/info/f9c1d3441b87ee29

As always the TCL tests are worth admiring:

    # STRICT tables have on a limited number of allowed datatypes.
    #
    do_catchsql_test strict1-1.1 {
    CREATE TABLE t1(a) STRICT;
    } {1 {unknown datatype for t1.a: ""}}
    do_catchsql_test strict1-1.2 {
    CREATE TABLE t1(a PRIMARY KEY) STRICT, WITHOUT ROWID;
    } {1 {unknown datatype for t1.a: ""}}
    do_catchsql_test strict1-1.3 {
    CREATE TABLE t1(a PRIMARY KEY) WITHOUT ROWID, STRICT;
    } {1 {unknown datatype for t1.a: ""}}
    do_catchsql_test strict1-1.4 {
    CREATE TABLE t1(a BANJO PRIMARY KEY) WITHOUT ROWID, STRICT;
    } {1 {unknown datatype for t1.a: "BANJO"}}
    do_catchsql_test strict1-1.5 {
    CREATE TABLE t1(a TEXT PRIMARY KEY, b INT, c INTEGER, d REAL, e BLOB, f DATE) strict;
    } {1 {unknown datatype for t1.f: "DATE"}}
    do_catchsql_test strict1-1.6 {
    CREATE TABLE t1(a TEXT PRIMARY KEY, b INT, c INTEGER, d REAL, e BLOB, f TEXT(50)) WITHOUT ROWID, STRICT;
    } {1 {unknown datatype for t1.f: "TEXT(50)"}}

    do_execsql_test strict1-2.0 {
    CREATE TABLE t1(
        a INT,
        b INTEGER,
        c BLOB,
        d TEXT,
        e REAL
    ) STRICT;
    } {}
    do_catchsql_test strict1-2.1 {
    INSERT INTO t1(a) VALUES('xyz');
    } {1 {cannot store TEXT value in INT column t1.a}}
parent simonw 5 years ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton