Hello
I have done the same test on sqlite 3.16.3 but I'm quite sure that the
same happens on my embedded device that use sqlite 3.19. I say this
because I'm debugging the problem on my ubuntu machine where I have
sqlite 3.16.3 and I'm able to replicate the issue.
I have a database created with sqlite 3.19 build with
-DSQLITE_OMIT_AUTOINCREMENT
the I use the database on sqlite 3.16 build without
-DSQLITE_OMIT_AUTOINCREMENT (the same happens on 3.19 as I say before).
I have a table like this:
------------------------------------------------------------------------------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS permission (
permission_id INTEGER PRIMARY KEY NOT NULL DEFAULT ( NULL ),
permission_read INTEGER DEFAULT ( NULL ),
permission_update INTEGER DEFAULT ( NULL ),
permission_create INTEGER DEFAULT ( NULL ),
permission_delete INTEGER DEFAULT ( NULL ),
device_id INTEGER NOT NULL,
device_id_group INTEGER NOT NULL,
FOREIGN KEY ( device_id ) REFERENCES device ( device_id ),
FOREIGN KEY ( device_id_group ) REFERENCES device ( device_id )
);
------------------------------------------------------------------------------------------------------------------------------------------------
and executing a command like this I have a segment fault
./sqlite3 x8.db.con-problema "INSERT INTO permission
(permission_id,permission_create,permission_read,permission_update,permission_delete,device_id,device_id_group)
VALUES (NULL, 1, 1, 1, 1, 1, 1 ) ;"
from gdb I see the crash in
SQLITE_PRIVATE void sqlite3OpenTable(
Parse *pParse, /* Generate code into this VDBE */
int iCur, /* The cursor number of the table */
int iDb, /* The database index in sqlite3.aDb[] */
Table *pTab, /* The table to be opened */
int opcode /* OP_OpenRead or OP_OpenWrite */
){
Vdbe *v;
assert( !IsVirtual(pTab) );
<----------------------------------------------------------------------------
CRASH
v = sqlite3GetVdbe(pParse);
and the stack trace is
#0 sqlite3OpenTable(pParse = 0x7fffffffc400, pParse@entry =
0x7fffffffc400, iCur = 0, iCur@entry = 0, iDb = 0, pTab = 0x0, opcode =
105, opcode@entry = 105) at sqlite3.c:108052
#1 autoIncrementEnd(pParse = 0x7fffffffc400, pParse@entry =
0x7fffffffc400) at sqlite3.c:108364
#2 sqlite3AutoincrementEnd(pParse = 0x7fffffffc400) at sqlite3.c:108378
#3 sqlite3Insert(pParse = 0x7fffffffc400, pParse@entry =
0x7fffffffc400, pTabList = 0x55555589f9a0, pSelect = <optimized out>,
pColumn = 0x55555589f5a0, onError = 10) at sqlite3.c:43536
#4 yy_reduce(yyruleno = 142, yypParser = 0x5555558a2840) at
sqlite3.c:136805
#5 sqlite3Parser(pParse = 0x7fffffffc400, yyminor = , yyp =
0x5555558a2840) at sqlite3.c:6523
#6 sqlite3RunParser(pParse = 0x7fffffffc400, pParse@entry =
0x7fffffffc400, zSql = 0x7fffffffe10f "INSERT INTO permission
(permission_id,permission_create,permission_read,permission_update,permission_delete,device_id,device_id_group)
VALUES (NULL, 1, 1, 1, 1, 1, 1 ) ;", zSql@entry = 0x7fffffffe10f "INSERT
INTO permission
(permission_id,permission_create,permission_read,permission_update,permission_delete,device_id,device_id_group)
VALUES (NULL, 1, 1, 1, 1, 1, 1 ) ;", pzErrMsg = 0x7fffffffc3f8,
pzErrMsg@entry = 0x7fffffffc3f8) at sqlite3.c:7469
#7 sqlite3Prepare(db = 0x55555588d0a0, db@entry = 0x55555588d0a0, zSql
= 0x7fffffffe10f "INSERT INTO permission
(permission_id,permission_create,permission_read,permission_update,permission_delete,device_id,device_id_group)
VALUES (NULL, 1, 1, 1, 1, 1, 1 ) ;", zSql@entry = 0x7fffffffe10f "INSERT
INTO permission
(permission_id,permission_create,permission_read,permission_update,permission_delete,device_id,device_id_group)
VALUES (NULL, 1, 1, 1, 1, 1, 1 ) ;", nBytes = -1, nBytes@entry = -1,
saveSqlFlag = 1, saveSqlFlag@entry = 1, pReprepare = 0x0,
pReprepare@entry = 0x0, ppStmt = 0x7fffffffc750, ppStmt@entry =
0x7fffffffc750, pzTail = 0x7fffffffc758) at sqlite3.c:115231
#8 sqlite3LockAndPrepare(db = 0x55555588d0a0, zSql = 0x7fffffffe10f
"INSERT INTO permission
(permission_id,permission_create,permission_read,permission_update,permission_delete,device_id,device_id_group)
VALUES (NULL, 1, 1, 1, 1, 1, 1 ) ;", nBytes = -1, saveSqlFlag = 1, pOld
= 0x0, ppStmt = 0x7fffffffc750, pzTail = 0x7fffffffc758) at sqlite3.c:115322
#9 sqlite3_prepare_v2(db = <optimized out>, zSql = <optimized out>,
nBytes = <optimized out>, ppStmt = 0x7fffffffc750, pzTail = <optimized
out>) at sqlite3.c:115398
#10 shell_exec(db = 0x55555588d0a0, zSql = 0x7fffffffe10f "INSERT INTO
permission
(permission_id,permission_create,permission_read,permission_update,permission_delete,device_id,device_id_group)
VALUES (NULL, 1, 1, 1, 1, 1, 1 ) ;", pArg = 0x7fffffffc800, pzErrMsg =
0x7fffffffc7f8, xCallback = 0x555555568730 <shell_callback>) at
/tmp/compara/sqlite3-3.16.2/src/shell.c:1916
#11 main(argc = <optimized out>, argv = <optimized out>) at
/tmp/compara/sqlite3-3.16.2/src/shell.c:6109
I think that the problem cames from the fact that there is no pSeqTab in
by database but a crash is NOT so nice and it is better to recreate pSeqTab.
regards
--
Powersoft logo <http://www.powersoft.it>
*Michele Dionisio |*Embedded System Manager
*skype:* m.dionisio *| email:* michele.dioni...@powersoft.it
<mailto:marco.c...@powersoft.it>
*HQ Italy:* Via E. Conti, 5 *|* 50018 Scandicci (FI) Italy
*direct phone:* +39 055 735 0230 *| Fax:* +39 055 735 6235
*web site:* www.powersoft.it <http://www.powersoft.it>
Green Audio Power
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users