if( ii==0 ){
memset(p, 0, nByte);
p->pPhrase = (Fts3Phrase *)&p[1];
- p->eType = FTSQUERY_PHRASE;
- p->pPhrase->iColumn = pParse->iDefaultCol;
}
p->pPhrase = (Fts3Phrase *)&p[1];
p->pPhrase->nToken = ii+1;
char *zNew;
int nNew = 0;
int nByte = sizeof(Fts3Expr) + sizeof(Fts3Phrase);
- nByte += (p->pPhrase->nToken-1) * sizeof(struct PhraseToken);
+ nByte += (p?(p->pPhrase->nToken-1):0) * sizeof(struct PhraseToken);
p = fts3ReallocOrFree(p, nByte + nTemp);
if( !p ){
goto no_mem;
}
+ if( zTemp ){
+ zNew = &(((char *)p)[nByte]);
+ memcpy(zNew, zTemp, nTemp);
+ }else{
+ memset(p, 0, nByte+nTemp);
+ }
p->pPhrase = (Fts3Phrase *)&p[1];
- zNew = &(((char *)p)[nByte]);
- memcpy(zNew, zTemp, nTemp);
for(jj=0; jj<p->pPhrase->nToken; jj++){
p->pPhrase->aToken[jj].z = &zNew[nNew];
nNew += p->pPhrase->aToken[jj].n;
}
sqlite3_free(zTemp);
+ p->eType = FTSQUERY_PHRASE;
+ p->pPhrase->iColumn = pParse->iDefaultCol;
rc = SQLITE_OK;
}
-C Make\scalls\sto\ssqlite3BtreeRollbackStmt()\sno-ops\swhen\spassed\sa\sBtree*\shandle\sthat\sdoes\snot\shave\san\sopen\sstatement\stransaction.\sTicket\s#3718.\s(CVS\s6342)
-D 2009-03-12T14:43:28
+C Avoid\sfts3\scrash\son\s(MATCH\s'""')\sexpressions.\sTicket\s#3717.\s(CVS\s6343)
+D 2009-03-12T15:43:48
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in d64baddbf55cdf33ff030e14da837324711a4ef7
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d
F ext/fts3/fts3.c 35bfa67d9cd659b799b8498895fe60b1e8bd3500
F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
-F ext/fts3/fts3_expr.c a27333da8a68cf06efa2e5937a285ac9d6c9b3de
+F ext/fts3/fts3_expr.c 212548eb2dc50f8640fd0d6afb56d1c2aca59a73
F ext/fts3/fts3_expr.h b5412dcf565c6d90d6a8c22090ceb9ed8c745634
F ext/fts3/fts3_hash.c e15e84d18f8df149ab290029872d4559c4c7c15a
F ext/fts3/fts3_hash.h 004b759e1602ff16dfa02fea3ca1c77336ad6798
F test/fts3c.test 4c7ef29b37aca3e8ebb6a39b57910caa6506034e
F test/fts3d.test d92a47fe8ed59c9e53d2d8e6d2685bb380aadadc
F test/fts3e.test 1f6c6ac9cc8b772ca256e6b22aaeed50c9350851
-F test/fts3expr.test 000f05df771e203187ceac49ad21c303c720b783
+F test/fts3expr.test 9764961c3f4ac818dacda01ed35d8bfcef42338b
F test/fts3expr2.test 8501de895a4c0631e7226c9bac055cd49c9f6646
F test/fts3near.test dc196dd17b4606f440c580d45b3d23aa975fd077
F test/func.test 70ea3d5b10d40cbc87a19b0819d2842dbcdb31f2
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
-P 823fe7f5551e121e211d1ede606a7ce7487ffe0d
-R 0a620faaa60e0f8f26633feb77199541
+P a1bb1aef0e06140a2d5d5e4b6c10c73ce95c89e0
+R b0f8f59bd683635e1f1ff253bc6bb4fd
U danielk1977
-Z e6301158e9a3d6dc90886b4a779a1ded
+Z eb05c44f6033ac0e625135603ee12138
-a1bb1aef0e06140a2d5d5e4b6c10c73ce95c89e0
\ No newline at end of file
+03679857a320517a7b89e5214e948bce9af896a9
\ No newline at end of file
# This file implements regression tests for SQLite library. The
# focus of this script is testing the FTS3 module.
#
-# $Id: fts3expr.test,v 1.6 2009/01/01 14:06:13 danielk1977 Exp $
+# $Id: fts3expr.test,v 1.7 2009/03/12 15:43:48 danielk1977 Exp $
#
set testdir [file dirname $argv0]
} $res
}
+do_test fts3expr-7.1 {
+ execsql {
+ CREATE VIRTUAL TABLE test USING fts3 (keyword);
+ INSERT INTO test VALUES ('abc');
+ SELECT * FROM test WHERE keyword MATCH '""';
+ }
+} {}
+
set sqlite_fts3_enable_parentheses 0
finish_test