Hello,
I got crash with SQLite FTS3 table search version 3.6.16 .
I am using SQLite fts3 table to INDEX the data.
Crash occurred while being the executing the sqllite3_step() API.
I have noticed that this crash is happening with special search string
"1-2.3" (which contains hypen and dot characters).
OS: Windows XP Service Pack 2.
*here is the sample code which causes the crash:*
/************************************************************************************/
// sqlite1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "sqlite3.h"
sqlite3 *m_hdb;
#define CREATE_FTS_TABLE "CREATE VIRTUAL TABLE fts_attachment USING FTS3
([from], [to], [subject], [filename],[type])"
#define SELECT_FTS "SELECT * FROM fts_attachment WHERE [fts_attachment]
match ?"
#define SEARCH_STR "1-2.3"
void main()
{
char* unused;
int ret_;
sqlite3_stmt *sstmt;
int v = sqlite3_libversion_number();
printf("Version: %d\n", v);
ret_ = sqlite3_open("testfts.db", &m_hdb);
if(ret_ != SQLITE_OK)
return;
// execute create query
ret_ = sqlite3_prepare(m_hdb, CREATE_FTS_TABLE
,(int)strlen(CREATE_FTS_TABLE) * sizeof(char),
&sstmt, (const char **)&unused);
if(ret_ != SQLITE_OK) {
printf("%s\n", sqlite3_errmsg(m_hdb));
} else {
ret_ = sqlite3_step(sstmt);
if (ret_ != SQLITE_DONE && ret_ != SQLITE_ROW) {
printf("%s\n", sqlite3_errmsg(m_hdb));
}
sqlite3_finalize(sstmt);
}
// Execute select query
ret_ = sqlite3_prepare(m_hdb, SELECT_FTS ,(int)strlen(SELECT_FTS) *
sizeof(char),
&sstmt, (const char **)&unused);
if(ret_ != SQLITE_OK) {
printf("%s\n", sqlite3_errmsg(m_hdb));
return;
}
ret_ = sqlite3_bind_text(sstmt, 1, SEARCH_STR,
(int)(strlen(SEARCH_STR) * sizeof(char)),
SQLITE_TRANSIENT);
if(ret_ != SQLITE_OK){
printf("%s\n", sqlite3_errmsg(m_hdb));
return;
}
ret_ = sqlite3_step(sstmt);
if (ret_ != SQLITE_DONE && ret_ != SQLITE_ROW){
printf("%s\n", sqlite3_errmsg(m_hdb));
return;
}
sqlite3_finalize(sstmt);
sqlite3_close(m_hdb);
printf("Done\n");
}
/************************************************************************************/
*Also I am adding the stack trace *
/************************************************************************************/
sqlite1.exe!_fts3ReallocOrFree() + 0x1897 bytes
sqlite1.exe!_fts3ReallocOrFree() + 0x18a0 bytes
sqlite1.exe!_fts3ReallocOrFree() + 0x18af bytes
sqlite1.exe!_sqlite3_test_control() + 0x2d4f bytes
sqlite1.exe!_sqlite3_finalize() + 0xa47 bytes
sqlite1.exe!_sqlite3_value_numeric_type() + 0x57e5 bytes
sqlite1.exe!_sqlite3_step() + 0x548 bytes
sqlite1.exe!_sqlite3_step() + 0x5c bytes
sqlite1.exe!main() Line 57 + 0x9 bytes C++
sqlite1.exe!__tmainCRTStartup() Line 266 + 0x19 bytes C
sqlite1.exe!mainCRTStartup() Line 182 C
kernel32.dll!7c816fe7()
[Frames below may be incorrect and/or missing, no symbols loaded for
kernel32.dll]
/************************************************************************************/
Waiting for your response,
Subbi Reddy
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users