Fossil SCM

Proposed fix for the search branch bug reported in [forum:520d420d04e482b2|forum post 520d420d04]. This seems to work but could use more testing. To hit the affected query, first run (fossil fts-config index off) then (fossil search -fts ...terms...).

stephan 2024-08-30 09:39 trunk
Commit f4fdd7d385b7e063486a4e5dca043f083f46ee0c964f7a3140032d5456fa2b43
1 file changed +5 -3
+5 -3
--- src/search.c
+++ src/search.c
@@ -804,21 +804,23 @@
804804
" SELECT printf('Document: %%s',title('d',blob.rid,foci.filename)),"
805805
" printf('/doc/%T/%%s',foci.filename),"
806806
" search_score(),"
807807
" 'd'||blob.rid,"
808808
" (SELECT datetime(event.mtime) FROM event"
809
- " WHERE objid=symbolic_name_to_rid('trunk')),"
809
+ " WHERE objid=symbolic_name_to_rid(%Q)),"
810810
" search_snippet()"
811811
" FROM foci CROSS JOIN blob"
812
- " WHERE checkinID=symbolic_name_to_rid('trunk')"
812
+ " WHERE checkinID=symbolic_name_to_rid(%Q)"
813813
" AND blob.uuid=foci.uuid"
814814
" AND search_match(title('d',blob.rid,foci.filename),"
815815
" body('d',blob.rid,foci.filename))"
816816
" AND %z",
817
- zDocBr, glob_expr("foci.filename", zDocGlob)
817
+ zDocBr, zDocBr, zDocBr, glob_expr("foci.filename", zDocGlob)
818818
);
819819
}
820
+ fossil_free(zDocGlob);
821
+ fossil_free(zDocBr);
820822
}
821823
if( (srchFlags & SRCH_WIKI)!=0 ){
822824
db_multi_exec(
823825
"WITH wiki(name,rid,mtime) AS ("
824826
" SELECT substr(tagname,6), tagxref.rid, max(tagxref.mtime)"
825827
--- src/search.c
+++ src/search.c
@@ -804,21 +804,23 @@
804 " SELECT printf('Document: %%s',title('d',blob.rid,foci.filename)),"
805 " printf('/doc/%T/%%s',foci.filename),"
806 " search_score(),"
807 " 'd'||blob.rid,"
808 " (SELECT datetime(event.mtime) FROM event"
809 " WHERE objid=symbolic_name_to_rid('trunk')),"
810 " search_snippet()"
811 " FROM foci CROSS JOIN blob"
812 " WHERE checkinID=symbolic_name_to_rid('trunk')"
813 " AND blob.uuid=foci.uuid"
814 " AND search_match(title('d',blob.rid,foci.filename),"
815 " body('d',blob.rid,foci.filename))"
816 " AND %z",
817 zDocBr, glob_expr("foci.filename", zDocGlob)
818 );
819 }
 
 
820 }
821 if( (srchFlags & SRCH_WIKI)!=0 ){
822 db_multi_exec(
823 "WITH wiki(name,rid,mtime) AS ("
824 " SELECT substr(tagname,6), tagxref.rid, max(tagxref.mtime)"
825
--- src/search.c
+++ src/search.c
@@ -804,21 +804,23 @@
804 " SELECT printf('Document: %%s',title('d',blob.rid,foci.filename)),"
805 " printf('/doc/%T/%%s',foci.filename),"
806 " search_score(),"
807 " 'd'||blob.rid,"
808 " (SELECT datetime(event.mtime) FROM event"
809 " WHERE objid=symbolic_name_to_rid(%Q)),"
810 " search_snippet()"
811 " FROM foci CROSS JOIN blob"
812 " WHERE checkinID=symbolic_name_to_rid(%Q)"
813 " AND blob.uuid=foci.uuid"
814 " AND search_match(title('d',blob.rid,foci.filename),"
815 " body('d',blob.rid,foci.filename))"
816 " AND %z",
817 zDocBr, zDocBr, zDocBr, glob_expr("foci.filename", zDocGlob)
818 );
819 }
820 fossil_free(zDocGlob);
821 fossil_free(zDocBr);
822 }
823 if( (srchFlags & SRCH_WIKI)!=0 ){
824 db_multi_exec(
825 "WITH wiki(name,rid,mtime) AS ("
826 " SELECT substr(tagname,6), tagxref.rid, max(tagxref.mtime)"
827

Keyboard Shortcuts

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