Consider the following build cmd line:
gcc -o sqlite3.exe -DSQLITE_OMIT_WAL sqlite3.c shell.c
The build succeeds when using MinGW on Windows.
Now start the built exe with a memory database:
sqlite3 :memory:
And execute the following query:
create table v(y);
with recursive cnt(x) as (select 1 union all select x+1 from cnt limit
100000)
insert into v select * from cnt;
create index w on v(y);
And watch as it crashes when creating the index.
I tracked the problem down to the following missing library bindings:
CreateFileMappingA
CreateFileMappingW
MapViewOfFile
UnmapViewOfFile
All four of those library bindings are disabled by the existence of
SQLITE_OMIT_WAL. sqlite tries to execute code at address 0 when the table to
larger than some value. If I use 96255 instead of 100000 in the above query
there is no crash. And increasing by one to 96256 the crash occurs.
RP
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users