Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Avoid segfaults when inserted NULL values into FTS1. (CVS 3447) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
165645d30115f3171fc45489823f8563 |
User & Date: | drh 2006-09-28 11:41:41.000 |
Context
2006-09-28
| ||
18:37 | Bug fix in the FTS1 snippet generator. Improvements in the way the snippet generator handles whitespace. (CVS 3448) (check-in: d3f4ae8275 user: drh tags: trunk) | |
11:41 | Avoid segfaults when inserted NULL values into FTS1. (CVS 3447) (check-in: 165645d301 user: drh tags: trunk) | |
2006-09-26
| ||
00:37 | Fix to the previous check-in. (CVS 3446) (check-in: 944d5f8120 user: drh tags: trunk) | |
Changes
Changes to ext/fts1/fts1.c.
︙ | ︙ | |||
2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 | const char *zInput, /* Input text of the query string */ int nInput, /* Size of the input text */ int dfltColumn, /* Default column of the index to match against */ Query *pQuery /* Write the parse results here. */ ){ int iInput, inPhrase = 0; if( nInput<0 ) nInput = strlen(zInput); pQuery->nTerms = 0; pQuery->pTerms = NULL; pQuery->nextIsOr = 0; pQuery->nextColumn = dfltColumn; pQuery->dfltColumn = dfltColumn; pQuery->pFts = v; | > | 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 | const char *zInput, /* Input text of the query string */ int nInput, /* Size of the input text */ int dfltColumn, /* Default column of the index to match against */ Query *pQuery /* Write the parse results here. */ ){ int iInput, inPhrase = 0; if( zInput==0 ) nInput = 0; if( nInput<0 ) nInput = strlen(zInput); pQuery->nTerms = 0; pQuery->pTerms = NULL; pQuery->nextIsOr = 0; pQuery->nextColumn = dfltColumn; pQuery->dfltColumn = dfltColumn; pQuery->pFts = v; |
︙ | ︙ |
Changes to ext/fts1/fts1_tokenizer1.c.
︙ | ︙ | |||
97 98 99 100 101 102 103 | const char *pInput, int nBytes, sqlite3_tokenizer_cursor **ppCursor ){ simple_tokenizer_cursor *c; c = (simple_tokenizer_cursor *) malloc(sizeof(simple_tokenizer_cursor)); c->pInput = pInput; | > > > > > | > | 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | const char *pInput, int nBytes, sqlite3_tokenizer_cursor **ppCursor ){ simple_tokenizer_cursor *c; c = (simple_tokenizer_cursor *) malloc(sizeof(simple_tokenizer_cursor)); c->pInput = pInput; if( pInput==0 ){ c->nBytes = 0; }else if( nBytes<0 ){ c->nBytes = (int)strlen(pInput); }else{ c->nBytes = nBytes; } c->iOffset = 0; /* start tokenizing at the beginning */ c->iToken = 0; c->pToken = NULL; /* no space allocated, yet. */ c->nTokenAllocated = 0; *ppCursor = &c->base; return SQLITE_OK; |
︙ | ︙ |
Changes to test/fts1a.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2006 September 9 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #************************************************************************* # This file implements regression tests for SQLite library. The # focus of this script is testing the FTS1 module. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2006 September 9 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #************************************************************************* # This file implements regression tests for SQLite library. The # focus of this script is testing the FTS1 module. # # $Id: fts1a.test,v 1.3 2006/09/28 11:41:41 drh Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl # If SQLITE_ENABLE_FTS1 is defined, omit this file. ifcapable !fts1 { |
︙ | ︙ | |||
151 152 153 154 155 156 157 158 159 | } {1 2 3 5 6 7 9 10 11 13 14 15 17 18 19 21 22 23 25 26 27 29 30 31} do_test fts1a-4.2 { execsql {SELECT rowid FROM t1 WHERE content MATCH '"one two" OR three'} } {3 4 5 6 7 11 12 13 14 15 19 20 21 22 23 27 28 29 30 31} do_test fts1a-4.3 { execsql {SELECT rowid FROM t1 WHERE content MATCH 'three OR "one two"'} } {3 4 5 6 7 11 12 13 14 15 19 20 21 22 23 27 28 29 30 31} finish_test | > > > > > > > > > > > > > > > | 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | } {1 2 3 5 6 7 9 10 11 13 14 15 17 18 19 21 22 23 25 26 27 29 30 31} do_test fts1a-4.2 { execsql {SELECT rowid FROM t1 WHERE content MATCH '"one two" OR three'} } {3 4 5 6 7 11 12 13 14 15 19 20 21 22 23 27 28 29 30 31} do_test fts1a-4.3 { execsql {SELECT rowid FROM t1 WHERE content MATCH 'three OR "one two"'} } {3 4 5 6 7 11 12 13 14 15 19 20 21 22 23 27 28 29 30 31} # Test the ability to handle NULL content # do_test fts1a-5.1 { execsql {INSERT INTO t1(content) VALUES(NULL)} } {} do_test fts1a-5.2 { set rowid [db last_insert_rowid] execsql {SELECT content FROM t1 WHERE rowid=$rowid} } {{}} do_test fts1a-5.3 { execsql {SELECT rowid FROM t1 WHERE content MATCH NULL} } {} finish_test |