103 lines
4.3 KiB
Plaintext
103 lines
4.3 KiB
Plaintext
-- ============================================================================
|
||
-- ChuSQL DROP TABLE + 统计信息 手测脚本
|
||
-- 用法:
|
||
-- 1. 另开终端起 Rust server:cd chusql-storage && cargo run --bin chusql-storage
|
||
-- 2. GHCi 里执行::script ghci-scripts/drop-table-test.ghci
|
||
-- ============================================================================
|
||
|
||
:set -XOverloadedStrings
|
||
|
||
import ChuSQL.Storage
|
||
import ChuSQL.Storage.IPC
|
||
import ChuSQL.Model
|
||
import ChuSQL.Engine
|
||
import ChuSQL.Syntax.AST
|
||
import ChuSQL.Syntax.Parser
|
||
|
||
-- 辅助:把一条 SQL 字符串跑到底
|
||
let runSql sql = case parseQuery sql of { Left e -> putStrLn ("parse error: " ++ e); Right q -> runIPCStorage (runQueryM q) >>= print }
|
||
|
||
-- ============================================================================
|
||
-- 2. 清场:如果 demo3 存在就删掉
|
||
-- ============================================================================
|
||
putStrLn ">>> [2] cleanup"
|
||
runSql "DROP TABLE demo3"
|
||
|
||
-- ============================================================================
|
||
-- 3. 建表
|
||
-- ============================================================================
|
||
putStrLn ">>> [3] CREATE TABLE"
|
||
runSql "CREATE TABLE demo3 (id INT, name TEXT)"
|
||
|
||
-- ============================================================================
|
||
-- 4. describe:列应为 id/name,行数应为 0
|
||
-- ============================================================================
|
||
putStrLn ">>> [4] describe (row_count should be 0)"
|
||
doDescribeTable "demo3"
|
||
|
||
-- ============================================================================
|
||
-- 5. 空表能扫
|
||
-- ============================================================================
|
||
putStrLn ">>> [5] scan empty table"
|
||
runIPCStorage (scan "demo3")
|
||
|
||
-- ============================================================================
|
||
-- 6. 插 3 行
|
||
-- ============================================================================
|
||
putStrLn ">>> [6] INSERT 3 rows"
|
||
runSql "INSERT INTO demo3 (id, name) VALUES (1, 'Alice')"
|
||
runSql "INSERT INTO demo3 (id, name) VALUES (2, 'Bob')"
|
||
runSql "INSERT INTO demo3 (id, name) VALUES (3, 'Carol')"
|
||
|
||
-- ============================================================================
|
||
-- 7. describe:行数应为 3
|
||
-- ============================================================================
|
||
putStrLn ">>> [7] describe (row_count should be 3)"
|
||
doDescribeTable "demo3"
|
||
|
||
-- ============================================================================
|
||
-- 8. 扫回三行
|
||
-- ============================================================================
|
||
putStrLn ">>> [8] scan 3 rows"
|
||
runIPCStorage (scan "demo3")
|
||
|
||
-- ============================================================================
|
||
-- 9. SQL SELECT,走索引
|
||
-- ============================================================================
|
||
putStrLn ">>> [9] SELECT WHERE id = 2"
|
||
runSql "SELECT name FROM demo3 WHERE id = 2"
|
||
|
||
-- ============================================================================
|
||
-- 10. 重复建表应报错
|
||
-- ============================================================================
|
||
putStrLn ">>> [10] CREATE TABLE again (should fail)"
|
||
runSql "CREATE TABLE demo3 (x INT)"
|
||
|
||
-- ============================================================================
|
||
-- 11. 删表
|
||
-- ============================================================================
|
||
putStrLn ">>> [11] DROP TABLE"
|
||
runSql "DROP TABLE demo3"
|
||
|
||
-- ============================================================================
|
||
-- 12. 删后再查,应报 unknown table
|
||
-- ============================================================================
|
||
putStrLn ">>> [12a] scan after drop (should fail)"
|
||
runIPCStorage (scan "demo3")
|
||
putStrLn ">>> [12b] describe after drop (should fail)"
|
||
doDescribeTable "demo3"
|
||
|
||
-- ============================================================================
|
||
-- 13. 删不存在的表应报错
|
||
-- ============================================================================
|
||
putStrLn ">>> [13] DROP TABLE nope (should fail)"
|
||
runSql "DROP TABLE nope"
|
||
|
||
-- ============================================================================
|
||
-- 14. 列出所有表,不应含 demo3
|
||
-- ============================================================================
|
||
putStrLn ">>> [14] list_tables"
|
||
doListTables
|
||
|
||
putStrLn ">>> done. check chusql-storage/data/ for disk state"
|