| #!sqlite3 |
| # |
| # 2026-01-30 |
| # |
| # The author disclaims copyright to this source code. In place of |
| # a legal notice, here is a blessing: |
| # |
| # May you do good and not evil. |
| # May you find forgiveness for yourself and forgive others. |
| # May you share freely, never taking more than you give. |
| # |
| #*********************************************************************** |
| # |
| # Miscellaneous tests for dot-commands |
| # |
| # ./sqlite3 test/dotcmd01.sql |
| # |
| |
| .testcase setup |
| .open :memory: |
| .mode tty |
| .check '' |
| |
| # The ".eqp on" setting does not affect the output from .fullschema |
| # and similar. |
| # |
| .testctrl opt -Stat4 |
| .testcase 100 |
| CREATE TABLE t1(a,b,c); |
| WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n+1 FROM c WHERE n<300) |
| INSERT INTO t1(a,b,c) |
| SELECT n%10, n%30, n%100 FROM c; |
| CREATE INDEX t1a ON t1(a); |
| CREATE INDEX t1b ON t1(b); |
| ANALYZE; |
| .eqp on |
| .fullschema |
| .check <<END |
| CREATE TABLE t1(a,b,c); |
| CREATE INDEX t1a ON t1(a); |
| CREATE INDEX t1b ON t1(b); |
| ANALYZE sqlite_schema; |
| INSERT INTO sqlite_stat1 VALUES('t1','t1b','300 10'), |
| ('t1','t1a','300 30'); |
| ANALYZE sqlite_schema; |
| END |
| |
| .testcase 110 |
| .schema |
| .check <<END |
| CREATE TABLE t1(a,b,c); |
| CREATE INDEX t1a ON t1(a); |
| CREATE INDEX t1b ON t1(b); |
| CREATE TABLE sqlite_stat1(tbl,idx,stat); |
| END |
| |
| .testcase 120 |
| .tables |
| .check --glob "t1" |
| |
| .testcase 130 |
| .indexes |
| .check --glob t1a*t1b |