Dear all,
I'm trying to check whether can I use "atomic write" feature with 4KB page
size on my device.
To do that, I'd used crash3.test on TCL test by doing like as follows.

"./testfixture test/crash3.test"

To check it correctly, testfixture is compiled with
"-DSQLITE_ENABLE_ATOMIC_WRITE".
All of this was passed without any errors as I expected.

But, "crash3-1" test case only checks for 1KB page size of sqlite.
To clarify this issue, I'd changed some values from "page_size = 1024" to
"page_size = 4096" and added "-blocksize 4096".

foreach {sql res2} [list \

  {INSERT INTO abc VALUES(4, 5, 6)}                    {1 2 3 4 5 6} \

  {DELETE FROM abc}                                    {}    \

  {INSERT INTO abc SELECT * FROM abc}                  {1 2 3 1 2 3} \

  {UPDATE abc SET a = 2}                               {2 2 3}       \

  {INSERT INTO abc VALUES(4, 5, randstr(1000,1000))}   {n/a} \

  {CREATE TABLE def(d, e, f)}                          {n/a} \

] {

  for {set ii 0} {$ii < 10} {incr ii} {



    db close

    forcedelete test.db test.db-journal

    sqlite3 db test.db

    do_test crash3-1.$tn.1 {

      execsql {

        *PRAGMA page_size = 4096;*

        BEGIN;

        CREATE TABLE abc(a, b, c);

        INSERT INTO abc VALUES(1, 2, 3);

        COMMIT;

      }

    } {}

    db close



    set crashfile test.db

    if {($ii%2)==0} { append crashfile -journal }

    set rand "SELECT randstr($tn,$tn);"

    do_test crash3-1.$tn.2 [subst {

      crashsql -file $crashfile *-blocksize 4096* -char atomic {$rand $sql}

      sqlite3 db test.db

      execsql { PRAGMA integrity_check; }

    }] {ok}



    do_test2 crash3-1.$tn.3 {

      execsql { SELECT * FROM abc }

    } {1 2 3} $res2



    incr tn

  }

}

But, unfortunately, I got following failures.

crash3-1.41.3...
Expected: [{1 2 3} or {n/a}]
     Got: [1 2 3 4 5 {/pB9kEkQw
kEpYISEjN0q<:fT8comPoMZ9UdXVu_e86bCqrc8LPXIZ<8m!oln/4Z*4d9S3lIvAD6Ef>Q79Xs6n^LR<eaQDG
YfC*feJ
G9I^It?>tTdWVN5Ttoc<YbQyv4C2h6hK-Z47rqfUcmle*b7>962blIqn7uWx9d2xv/EiQ|61AZ-n|FOXjYrWc_^InVxJ:d/cEg7j32qdJf0GCSsnoUXN=GuER^_r4bc!R//GnRBmIgTj7aL18Bf/?4NPlF|-:YoveCRikCj2Aj:e1PgdwHytrZQc8G7c5_6=dsKkuui<KiB,C1bUWkE=aNS
zb8TN+tE_,ec=M8/2pbtrdRwh53F>jk93guxHO:J<use>6aHDKbGyom7W3ZO-.vjrIe_wq4lQPjjqTurZ5OamMCl+n|jf680X*IsmGL,d<9>3btX22cb2wjDRGL>shIs0WQkWJeKXLVneKZ!Pna56+iK-Y
*Qsrrh0:.d+R4MxiezaDVue2LsF
E3u-KwVqKScNOaJO>,TriK_S,t_Qb*bjco0Mg.feUlD8eLjqtpWDd?kgx0
*n<SOu7/lKbGaRkEP|Vd6/FfO,
H.?_Y_a/I,K=5>P=d|.AakNc_/jq,e+9!06AGgrIYBzfhoemyj.r!MDZsg3T>y>R:1mc_|ysDpZwVs
LHa9hNexhLc.9DLirYBHRR:rbMyJedJ_vN7/|vLQIJ8RBMqlj1<qqmkZKRiCpbolb9Zi,j2o!3q0qcVZO-|yZm8=o35Bjqu2f0n.YBR73|Eu5?-xzjG1K/Y2veXBfy^2VkI?l<v_i6e
yum6Pe>G0c1X,_GG8Zx9j
9f|sQtfGhcbftpnP214GGWW1Fz8Z5k5AZ!-OC<Psg+nlYdp9Tsdq.WfVx?KUhjUg
mki8<WN4K^s*!.Y_u,4s/CW3n,29d4zTN:=5Y3:8.25_10pwE<HIU7KuE/<e.ZGL+w=uwbxGhCg9ZpK3QJz!4v66tD-<Wy1G3mjJfoK?}]

Am I wrong?
Or, This test case is not for safety check of "atomic write"?

Best regards,
YongIl Jang.
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to