1212# 5. Edge cases: empty table, 1000+ rows, sequential ALTERs, add+update
1313#
1414# NOTE: Schema differences between implementations:
15- # - Rust uses "key" column, Zig uses "pk " column in clock table
15+ # - Both use "key" column in clock table
1616# - Clock backfill behavior may differ
1717set -uo pipefail
1818
@@ -76,15 +76,15 @@ run_rust() {
7676 $SQLITE_CR " $RUST_DB " < " $SQL_FILE " 2> /dev/null || true
7777}
7878
79- # Helper: run SQL on Zig DB (uses "pk " column in clock table)
79+ # Helper: run SQL on Zig DB (uses "key " column in clock table)
8080run_zig () {
8181 local sql=" $1 "
8282 echo " $sql " > " $SQL_FILE "
8383 $SQLITE_ZIG " $ZIG_DB " -cmd " .load $ZIG_EXT " < " $SQL_FILE " 2> /dev/null || true
8484}
8585
8686# Helper: compare clock table states (normalized)
87- # Note: Rust uses "key", Zig uses "pk" ; we normalize both to "pk" for comparison
87+ # Note: Both use "key" column ; we alias to "pk" for output readability
8888# Also filters out sentinel (-1) entries since they may differ
8989compare_clocks () {
9090 local table=" $1 "
@@ -93,8 +93,8 @@ compare_clocks() {
9393 # Get clock state from Rust (uses "key" column) - filter out sentinel
9494 run_rust " SELECT key AS pk, col_name, col_version, db_version FROM ${table} __crsql_clock WHERE col_name != '-1' ORDER BY key, col_name;" > " $RUST_OUT "
9595
96- # Get clock state from Zig (uses "pk " column) - filter out sentinel
97- run_zig " SELECT pk, col_name, col_version, db_version FROM ${table} __crsql_clock WHERE col_name != '-1' ORDER BY pk , col_name;" > " $ZIG_OUT "
96+ # Get clock state from Zig (uses "key " column) - filter out sentinel
97+ run_zig " SELECT key AS pk, col_name, col_version, db_version FROM ${table} __crsql_clock WHERE col_name != '-1' ORDER BY key , col_name;" > " $ZIG_OUT "
9898
9999 if diff -q " $RUST_OUT " " $ZIG_OUT " > /dev/null 2>&1 ; then
100100 echo " PASS: $test_name - clock states match"
@@ -557,15 +557,15 @@ UPDATE t9 SET data = 'third' WHERE id = 1;
557557
558558# Record pre-alter clock state
559559run_rust " SELECT key AS pk, col_name, col_version, db_version FROM t9__crsql_clock WHERE col_name = 'data' ORDER BY key;" > " $RUST_OUT .pre"
560- run_zig " SELECT pk, col_name, col_version, db_version FROM t9__crsql_clock WHERE col_name = 'data' ORDER BY pk ;" > " $ZIG_OUT .pre"
560+ run_zig " SELECT key AS pk, col_name, col_version, db_version FROM t9__crsql_clock WHERE col_name = 'data' ORDER BY key ;" > " $ZIG_OUT .pre"
561561
562562# ALTER (should NOT change existing entries)
563563run_rust " SELECT crsql_begin_alter('t9'); ALTER TABLE t9 ADD COLUMN extra TEXT; SELECT crsql_commit_alter('t9');"
564564run_zig " SELECT crsql_begin_alter('t9'); ALTER TABLE t9 ADD COLUMN extra TEXT; SELECT crsql_commit_alter('t9');"
565565
566566# Record post-alter clock state for existing column
567567run_rust " SELECT key AS pk, col_name, col_version, db_version FROM t9__crsql_clock WHERE col_name = 'data' ORDER BY key;" > " $RUST_OUT .post"
568- run_zig " SELECT pk, col_name, col_version, db_version FROM t9__crsql_clock WHERE col_name = 'data' ORDER BY pk ;" > " $ZIG_OUT .post"
568+ run_zig " SELECT key AS pk, col_name, col_version, db_version FROM t9__crsql_clock WHERE col_name = 'data' ORDER BY key ;" > " $ZIG_OUT .post"
569569
570570# Verify existing clock entries unchanged
571571if diff -q " $RUST_OUT .pre" " $RUST_OUT .post" > /dev/null 2>&1 ; then
0 commit comments