From 8a2c5808c21fccae0f9d1faa253e0d2da78d4907 Mon Sep 17 00:00:00 2001 From: krishvishal Date: Sun, 26 Jan 2025 18:35:49 +0530 Subject: [PATCH] Add TCL tests for delete --- testing/all.test | 1 + testing/delete.test | 52 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 testing/delete.test diff --git a/testing/all.test b/testing/all.test index f750534be..b2f71f243 100755 --- a/testing/all.test +++ b/testing/all.test @@ -5,6 +5,7 @@ set testdir [file dirname $argv0] source $testdir/cmdlineshell.test source $testdir/agg-functions.test source $testdir/coalesce.test +source $testdir/delete.test source $testdir/glob.test source $testdir/join.test source $testdir/insert.test diff --git a/testing/delete.test b/testing/delete.test new file mode 100644 index 000000000..2f865710f --- /dev/null +++ b/testing/delete.test @@ -0,0 +1,52 @@ +#!/usr/bin/env tclsh + +set testdir [file dirname $argv0] +source $testdir/tester.tcl + +# Basic single row delete test +do_execsql_test_on_specific_db {:memory:} delete-single-1 { + CREATE TABLE t1(x INTEGER PRIMARY KEY); + INSERT INTO t1 VALUES (1); + INSERT INTO t1 VALUES (2); + INSERT INTO t1 VALUES (3); + DELETE FROM t1 WHERE x = 2; + SELECT * FROM t1 ORDER BY x; +} {1 3} + +# Test alternating delete-insert pattern to stress freelist +do_execsql_test_on_specific_db {:memory:} delete-insert-alternate-1 { + CREATE TABLE t4(x INTEGER PRIMARY KEY); + INSERT INTO t4 VALUES (1); + INSERT INTO t4 VALUES (2); + INSERT INTO t4 VALUES (3); + DELETE FROM t4 WHERE x = 2; + INSERT INTO t4 VALUES (4); + DELETE FROM t4 WHERE x = 1; + INSERT INTO t4 VALUES (5); + SELECT * FROM t4 ORDER BY x; +} {3 4 5} + +# Test deleting from both ends +do_execsql_test_on_specific_db {:memory:} delete-ends-1 { + CREATE TABLE t5(x INTEGER PRIMARY KEY); + INSERT INTO t5 VALUES (1); + INSERT INTO t5 VALUES (2); + INSERT INTO t5 VALUES (3); + INSERT INTO t5 VALUES (4); + INSERT INTO t5 VALUES (5); + -- Delete from both ends + DELETE FROM t5 WHERE x = 1; + DELETE FROM t5 WHERE x = 5; + SELECT * FROM t5 ORDER BY x; +} {2 3 4} + +# Test delete-insert cycles with value reuse +do_execsql_test_on_specific_db {:memory:} delete-reuse-1 { + CREATE TABLE t6(x INTEGER PRIMARY KEY); + INSERT INTO t6 VALUES (1); + INSERT INTO t6 VALUES (2); + INSERT INTO t6 VALUES (3); + DELETE FROM t6 WHERE x = 2; + INSERT INTO t6 VALUES (2); -- Reuse same value + SELECT * FROM t6 ORDER BY x; +} {1 2 3}