Hello,

This simple script:

pragma journal_mode=wal;
CREATE TABLE IF NOT EXISTS sessions (
  sid varchar(32) primary key not null
);

begin;
INSERT OR REPLACE INTO sessions values('0123456789abcdef0123456789abcde1');
-- There it fails after insert or replace before commit

commit;

Fails on Cygwin and passess without problems using
windows builds.

With normal build the script reports

  unable to open database file


While building with -DSQLITE_DEBUG
it reports an assertion:

assertion "isExclusive==0 || isCreate" failed: file "sqlite3.c", line 34058, 
function: winOpen
(Version 3.7.8)

This does not happen on Windows builds of the same sources.


I've attached the script and VDBE traces under cygwin and windows builds.

Cygwin version: 1.7.9(0.237/5/3) 



Artyom Beilis
--------------
CppCMS - C++ Web Framework:   http://cppcms.sf.net/
CppDB - C++ SQL Connectivity: http://cppcms.sf.net/sql/cppdb/
VDBE Execution Trace:
   0 Expire           0    0    0      00 
   1 Halt             0    0    0      00 
VDBE Execution Trace:
   0 Trace            0    0    0      00 
   1 Noop             0    0    0      00 
   2 Goto             0   12    0      00 
  12 Transaction      0    0    0      00 
  13 TableLock        0    1    0 sqlite_master 00 
  14 Goto             0    3    0      00 
   3 OpenRead         0    1    0 5    00 sqlite_master
   4 Rewind           0   10    0      00 
  10 Close            0    0    0      00 
  11 Halt             0    0    0      00 
VDBE Execution Trace:
   0 JournalMode      0    1    5      00 
REG[1] =   t3[wal](8)
   1 ResultRow        1    1    0      00 
REG[1] =   t3[wal](8)
wal
   2 Halt             0    0    0      00 
VDBE Execution Trace:
   0 Trace            0    0    0      00 
   1 Goto             0   48    0      00 
  48 Transaction      0    1    0      00 
  49 VerifyCookie     0    0    0      00 
  50 TableLock        0    1    1 sqlite_master 00 
  51 Goto             0    2    0      00 
   2 ReadCookie       0    3    2      00 
REG[3] =  i:0
   3 If               3    8    0      00 
REG[3] =  i:0
   4 Integer          1    3    0      00 
REG[3] =  i:1
   5 SetCookie        0    2    3      00 
REG[3] =  i:1
   6 Integer          1    3    0      00 
REG[3] =  i:1
   7 SetCookie        0    5    3      00 
REG[3] =  i:1
   8 CreateTable      0    2    0      00 
REG[2] =  i:2
   9 OpenWrite        0    1    0 5    00 
  10 NewRowid         0    1    0      00 
REG[1] =  i:1
  11 Null             0    3    0      00 
REG[3] =  NULL
  12 Insert           0    3    1      08 
REG[3] =  NULL
REG[1] =  i:1
  13 Close            0    0    0      00 
  14 CreateIndex      0    4    0      00 
REG[4] =  i:3
  15 OpenWrite        1    1    0 5    00 sqlite_master
  16 NewRowid         1    5    0      00 
REG[5] =  i:2
  17 String8          0    6    0 index 00 
REG[6] =   t5[index](8)
  18 String8          0    7    0 sqlite_autoindex_sessions_1 00 
REG[7] =   t27[sqlite_autoinde](8)
  19 String8          0    8    0 sessions 00 
REG[8] =   t8[sessions](8)
  20 Copy             4    9    0      00 
REG[4] =  i:3
REG[9] =  i:3
REG[9] =  i:3
  21 Null             0   10    0      00 
REG[10] =  NULL
  22 MakeRecord       6    5   11 aaada 00 
REG[11] =  z47[0617431D0100696E64657873716C6974..C...indexsqlit](8)
  23 Insert           1   11    5      18 
REG[11] =  z47[0617431D0100696E64657873716C6974..C...indexsqlit](8)
REG[5] =  i:2
  24 Close            1    0    0      00 
  25 Close            0    0    0      00 
  26 Null             0   12    0      00 
REG[12] =  NULL
  27 OpenWrite        2    1    0 5    00 sqlite_master
  28 MustBeInt        1   31    0      00 
REG[1] =  i:1
  29 NotExists        2   31    1      00 pk
REG[1] =  i:1
  30 Rowid            2   12    0      00 
REG[12] =  i:1
  31 NotNull         12   33    0      00 
REG[12] =  i:1
  33 NotExists        2   32   12      00 
REG[12] =  i:1
  34 String8          0   13    0 table 00 
REG[13] =   t5[table](8)
  35 String8          0   14    0 sessions 00 
REG[14] =   t8[sessions](8)
  36 String8          0   15    0 sessions 00 
REG[15] =   t8[sessions](8)
  37 Copy             2   16    0      00 
REG[2] =  i:2
REG[16] =  i:2
REG[16] =  i:2
  38 String8          0   17    0 CREATE TABLE sessions (
  sid varchar(32) primary key not null
) 00 
REG[17] =   t64[CREATE TABLE se](8)
  39 NotExists        2   40   12      00 
REG[12] =  i:1
  40 MakeRecord      13    5   18 aaada 00 
REG[18] =  z93[07171D1D01810D7461626C6573657373.......tablesess](8)
  41 Insert           2   18   12      00 
REG[18] =  z93[07171D1D01810D7461626C6573657373.......tablesess](8)
REG[12] =  i:1
  42 Goto             0   32    0      00 
  32 Goto             0   43    0      00 
  43 Close            2    0    0      00 
  44 Integer          1   19    0      00 
REG[19] =  i:1
  45 SetCookie        0    1   19      00 
REG[19] =  i:1
  46 ParseSchema      0    0    0 tbl_name='sessions' 00 
VDBE Execution Trace:
   0 Trace            0    0    0      00 
   1 Noop             0    0    0      00 
   2 String8          0    1    0 sessions 00 
REG[1] =   t8[sessions](8)
   3 Goto             0   15    0      00 
  15 Transaction      0    0    0      00 
  16 TableLock        0    1    0 sqlite_master 00 
  17 Goto             0    4    0      00 
   4 OpenRead         0    1    0 5    00 sqlite_master
   5 Rewind           0   13    0      00 
   6 Column           0    2    2      00 sqlite_master.tbl_name
REG[2] =   s8[sessions](8)
   7 Ne               1   12    2 collseq(BINARY) 69 
REG[1] =   t8[sessions](8)
REG[2] =   s8[sessions](8)
   8 Column           0    1    4      00 sqlite_master.name
REG[4] =   s8[sessions](8)
   9 Column           0    3    5      00 sqlite_master.rootpage
REG[5] =  i:2
  10 Column           0    4    6      00 sqlite_master.sql
REG[6] =   s64[CREATE TABLE se](8)
  11 ResultRow        4    3    0      00 
REG[4] =   s8[sessions](8)
REG[5] =  i:2
REG[6] =   s64[CREATE TABLE se](8)
  12 Next             0    6    0      01 
   6 Column           0    2    2      00 sqlite_master.tbl_name
REG[2] =   s8[sessions](8)
   7 Ne               1   12    2 collseq(BINARY) 69 
REG[1] =   t8[sessions](8)
REG[2] =   s8[sessions](8)
   8 Column           0    1    4      00 sqlite_master.name
REG[4] =   s27[sqlite_autoinde](8)
   9 Column           0    3    5      00 sqlite_master.rootpage
REG[5] =  i:3
  10 Column           0    4    6      00 sqlite_master.sql
REG[6] =  NULL
  11 ResultRow        4    3    0      00 
REG[4] =   s27[sqlite_autoinde](8)
REG[5] =  i:3
REG[6] =  NULL
  12 Next             0    6    0      01 
  13 Close            0    0    0      00 
  14 Halt             0    0    0      00 
  47 Halt             0    0    0      00 
VDBE Execution Trace:
   0 Trace            0    0    0      00 
   1 AutoCommit       0    0    0      00 
VDBE Execution Trace:
   0 Trace            0    0    0      00 
   1 Goto             0   23    0      00 
  23 Transaction      0    1    0      00 
  24 VerifyCookie     0    1    0      00 
  25 TableLock        0    2    1 sessions 00 
  26 Goto             0    2    0      00 
   2 OpenWrite        0    2    0 1    00 sessions
   3 OpenWrite        1    3    0 keyinfo(1,BINARY) 00 
sqlite_autoindex_sessions_1
   4 NewRowid         0    2    0      00 
REG[2] =  i:1
   5 String8          0    3    0 0123456789abcdef0123456789abcde1 00 
REG[3] =   t32[0123456789abcde](8)
   6 HaltIfNull      19    2    3 sessions.sid may not be NULL 00 
REG[3] =   t32[0123456789abcde](8)
   7 SCopy            3    4    0      00 
REG[3] =   t32[0123456789abcde](8)
REG[4] =   t32[0123456789abcde](8)
REG[4] =   t32[0123456789abcde](8)
   8 SCopy            2    5    0      00 
REG[2] =  i:1
REG[5] =  i:1
REG[5] =  i:1
   9 MakeRecord       4    2    1 ab   00 
REG[1] =  z36[034D0130313233343536373839616263.M.0123456789abc](8)
  10 SCopy            2    6    0      00 
REG[2] =  i:1
REG[6] =  i:1
REG[6] =  i:1
  11 IsUnique         1   17    6 4    00 
REG[6] =  i:1
  17 IdxInsert        1    1    0      00 
assertion "isExclusive==0 || isCreate" failed: file "sqlite3.c", line 34058, 
function: winOpen
VDBE Execution Trace:
   0 Expire           0    0    0      00 
   1 Halt             0    0    0      00 
VDBE Execution Trace:
   0 Trace            0    0    0      00 
   1 Noop             0    0    0      00 
   2 Goto             0   12    0      00 
  12 Transaction      0    0    0      00 
  13 TableLock        0    1    0 sqlite_master 00 
  14 Goto             0    3    0      00 
   3 OpenRead         0    1    0 5    00 sqlite_master
   4 Rewind           0   10    0      00 
  10 Close            0    0    0      00 
  11 Halt             0    0    0      00 
VDBE Execution Trace:
   0 JournalMode      0    1    5      00 
REG[1] =   t3[wal](8)
   1 ResultRow        1    1    0      00 
REG[1] =   t3[wal](8)
wal
   2 Halt             0    0    0      00 
VDBE Execution Trace:
   0 Trace            0    0    0      00 
   1 Goto             0   48    0      00 
  48 Transaction      0    1    0      00 
  49 VerifyCookie     0    0    0      00 
  50 TableLock        0    1    1 sqlite_master 00 
  51 Goto             0    2    0      00 
   2 ReadCookie       0    3    2      00 
REG[3] =  i:0
   3 If               3    8    0      00 
REG[3] =  i:0
   4 Integer          1    3    0      00 
REG[3] =  i:1
   5 SetCookie        0    2    3      00 
REG[3] =  i:1
   6 Integer          1    3    0      00 
REG[3] =  i:1
   7 SetCookie        0    5    3      00 
REG[3] =  i:1
   8 CreateTable      0    2    0      00 
REG[2] =  i:2
   9 OpenWrite        0    1    0 5    00 
  10 NewRowid         0    1    0      00 
REG[1] =  i:1
  11 Null             0    3    0      00 
REG[3] =  NULL
  12 Insert           0    3    1      08 
REG[3] =  NULL
REG[1] =  i:1
  13 Close            0    0    0      00 
  14 CreateIndex      0    4    0      00 
REG[4] =  i:3
  15 OpenWrite        1    1    0 5    00 sqlite_master
  16 NewRowid         1    5    0      00 
REG[5] =  i:2
  17 String8          0    6    0 index 00 
REG[6] =   t5[index](8)
  18 String8          0    7    0 sqlite_autoindex_sessions_1 00 
REG[7] =   t27[sqlite_autoinde](8)
  19 String8          0    8    0 sessions 00 
REG[8] =   t8[sessions](8)
  20 Copy             4    9    0      00 
REG[4] =  i:3
REG[9] =  i:3
REG[9] =  i:3
  21 Null             0   10    0      00 
REG[10] =  NULL
  22 MakeRecord       6    5   11 aaada 00 
REG[11] =  z47[0617431D0100696E64657873716C6974..C...indexsqlit](8)
  23 Insert           1   11    5      18 
REG[11] =  z47[0617431D0100696E64657873716C6974..C...indexsqlit](8)
REG[5] =  i:2
  24 Close            1    0    0      00 
  25 Close            0    0    0      00 
  26 Null             0   12    0      00 
REG[12] =  NULL
  27 OpenWrite        2    1    0 5    00 sqlite_master
  28 MustBeInt        1   31    0      00 
REG[1] =  i:1
  29 NotExists        2   31    1      00 pk
REG[1] =  i:1
  30 Rowid            2   12    0      00 
REG[12] =  i:1
  31 NotNull         12   33    0      00 
REG[12] =  i:1
  33 NotExists        2   32   12      00 
REG[12] =  i:1
  34 String8          0   13    0 table 00 
REG[13] =   t5[table](8)
  35 String8          0   14    0 sessions 00 
REG[14] =   t8[sessions](8)
  36 String8          0   15    0 sessions 00 
REG[15] =   t8[sessions](8)
  37 Copy             2   16    0      00 
REG[2] =  i:2
REG[16] =  i:2
REG[16] =  i:2
  38 String8          0   17    0 CREATE TABLE sessions (
  sid varchar(32) primary key not null
) 00 
REG[17] =   t64[CREATE TABLE se](8)
  39 NotExists        2   40   12      00 
REG[12] =  i:1
  40 MakeRecord      13    5   18 aaada 00 
REG[18] =  z93[07171D1D01810D7461626C6573657373.......tablesess](8)
  41 Insert           2   18   12      00 
REG[18] =  z93[07171D1D01810D7461626C6573657373.......tablesess](8)
REG[12] =  i:1
  42 Goto             0   32    0      00 
  32 Goto             0   43    0      00 
  43 Close            2    0    0      00 
  44 Integer          1   19    0      00 
REG[19] =  i:1
  45 SetCookie        0    1   19      00 
REG[19] =  i:1
  46 ParseSchema      0    0    0 tbl_name='sessions' 00 
VDBE Execution Trace:
   0 Trace            0    0    0      00 
   1 Noop             0    0    0      00 
   2 String8          0    1    0 sessions 00 
REG[1] =   t8[sessions](8)
   3 Goto             0   15    0      00 
  15 Transaction      0    0    0      00 
  16 TableLock        0    1    0 sqlite_master 00 
  17 Goto             0    4    0      00 
   4 OpenRead         0    1    0 5    00 sqlite_master
   5 Rewind           0   13    0      00 
   6 Column           0    2    2      00 sqlite_master.tbl_name
REG[2] =   s8[sessions](8)
   7 Ne               1   12    2 collseq(BINARY) 69 
REG[1] =   t8[sessions](8)
REG[2] =   s8[sessions](8)
   8 Column           0    1    4      00 sqlite_master.name
REG[4] =   s8[sessions](8)
   9 Column           0    3    5      00 sqlite_master.rootpage
REG[5] =  i:2
  10 Column           0    4    6      00 sqlite_master.sql
REG[6] =   s64[CREATE TABLE se](8)
  11 ResultRow        4    3    0      00 
REG[4] =   s8[sessions](8)
REG[5] =  i:2
REG[6] =   s64[CREATE TABLE se](8)
  12 Next             0    6    0      01 
   6 Column           0    2    2      00 sqlite_master.tbl_name
REG[2] =   s8[sessions](8)
   7 Ne               1   12    2 collseq(BINARY) 69 
REG[1] =   t8[sessions](8)
REG[2] =   s8[sessions](8)
   8 Column           0    1    4      00 sqlite_master.name
REG[4] =   s27[sqlite_autoinde](8)
   9 Column           0    3    5      00 sqlite_master.rootpage
REG[5] =  i:3
  10 Column           0    4    6      00 sqlite_master.sql
REG[6] =  NULL
  11 ResultRow        4    3    0      00 
REG[4] =   s27[sqlite_autoinde](8)
REG[5] =  i:3
REG[6] =  NULL
  12 Next             0    6    0      01 
  13 Close            0    0    0      00 
  14 Halt             0    0    0      00 
  47 Halt             0    0    0      00 
VDBE Execution Trace:
   0 Trace            0    0    0      00 
   1 AutoCommit       0    0    0      00 
VDBE Execution Trace:
   0 Trace            0    0    0      00 
   1 Goto             0   23    0      00 
  23 Transaction      0    1    0      00 
  24 VerifyCookie     0    1    0      00 
  25 TableLock        0    2    1 sessions 00 
  26 Goto             0    2    0      00 
   2 OpenWrite        0    2    0 1    00 sessions
   3 OpenWrite        1    3    0 keyinfo(1,BINARY) 00 
sqlite_autoindex_sessions_1
   4 NewRowid         0    2    0      00 
REG[2] =  i:1
   5 String8          0    3    0 0123456789abcdef0123456789abcde1 00 
REG[3] =   t32[0123456789abcde](8)
   6 HaltIfNull      19    2    3 sessions.sid may not be NULL 00 
REG[3] =   t32[0123456789abcde](8)
   7 SCopy            3    4    0      00 
REG[3] =   t32[0123456789abcde](8)
REG[4] =   t32[0123456789abcde](8)
REG[4] =   t32[0123456789abcde](8)
   8 SCopy            2    5    0      00 
REG[2] =  i:1
REG[5] =  i:1
REG[5] =  i:1
   9 MakeRecord       4    2    1 ab   00 
REG[1] =  z36[034D0130313233343536373839616263.M.0123456789abc](8)
  10 SCopy            2    6    0      00 
REG[2] =  i:1
REG[6] =  i:1
REG[6] =  i:1
  11 IsUnique         1   17    6 4    00 
REG[6] =  i:1
  17 IdxInsert        1    1    0      00 
REG[1] =  z36[034D0130313233343536373839616263.M.0123456789abc](8)
  18 MakeRecord       3    1    6 a    00 
REG[6] =  z34[024D3031323334353637383961626364.M0123456789abcd](8)
  19 Insert           0    6    2 sessions 0B 
REG[6] =  z34[024D3031323334353637383961626364.M0123456789abcd](8)
REG[2] =  i:1
  20 Close            0    0    0      00 
  21 Close            1    0    0      00 
  22 Halt             0    0    0      00 
VDBE Execution Trace:
   0 Trace            0    0    0      00 
   1 AutoCommit       1    0    0      00 
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to