Fossil SCM

Ensure that the pattern string for search is all lower-case, so that FTS5 keywords like NOT and AND cannot cause confusion and errors.

drh 2024-06-24 06:09 trunk
Commit ec68aaf42536b4fb48614a66fcd8bb8de5f3e1d2a4c64f3c13a5fe9c6aef3336
1 file changed +1
--- src/search.c
+++ src/search.c
@@ -1005,10 +1005,11 @@
10051005
if( srchFlags==0 ) return;
10061006
sqlite3_create_function(g.db, "rank", 1, SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
10071007
search_rank_sqlfunc, 0, 0);
10081008
for(i=0; zPat[i]; i++){
10091009
if( (zPat[i]&0x80)==0 && !fossil_isalnum(zPat[i]) ) zPat[i] = ' ';
1010
+ if( fossil_isupper(zPat[i]) ) zPat[i] = fossil_tolower(zPat[i]);
10101011
}
10111012
for(i--; i>=0 && zPat[i]==' '; i--){}
10121013
if( i<0 ){
10131014
fossil_free(zPat);
10141015
zPat = mprintf("\"\"");
10151016
--- src/search.c
+++ src/search.c
@@ -1005,10 +1005,11 @@
1005 if( srchFlags==0 ) return;
1006 sqlite3_create_function(g.db, "rank", 1, SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
1007 search_rank_sqlfunc, 0, 0);
1008 for(i=0; zPat[i]; i++){
1009 if( (zPat[i]&0x80)==0 && !fossil_isalnum(zPat[i]) ) zPat[i] = ' ';
 
1010 }
1011 for(i--; i>=0 && zPat[i]==' '; i--){}
1012 if( i<0 ){
1013 fossil_free(zPat);
1014 zPat = mprintf("\"\"");
1015
--- src/search.c
+++ src/search.c
@@ -1005,10 +1005,11 @@
1005 if( srchFlags==0 ) return;
1006 sqlite3_create_function(g.db, "rank", 1, SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
1007 search_rank_sqlfunc, 0, 0);
1008 for(i=0; zPat[i]; i++){
1009 if( (zPat[i]&0x80)==0 && !fossil_isalnum(zPat[i]) ) zPat[i] = ' ';
1010 if( fossil_isupper(zPat[i]) ) zPat[i] = fossil_tolower(zPat[i]);
1011 }
1012 for(i--; i>=0 && zPat[i]==' '; i--){}
1013 if( i<0 ){
1014 fossil_free(zPat);
1015 zPat = mprintf("\"\"");
1016

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button