Fossil SCM

Put the "trunk" in the document URL when the ftsdocs table is first constructed, rather than translating the URL upon display.

drh 2016-08-30 13:44 trunk
Commit 58034a489ae67a8dc541b44e4009e52b4e1d2647
1 file changed +4 -18
+4 -18
--- src/search.c
+++ src/search.c
@@ -973,11 +973,10 @@
973973
unsigned int srchFlags, /* What to search over */
974974
int fDebug /* Extra debugging output */
975975
){
976976
Stmt q;
977977
int nRow = 0;
978
- const char *zDocBr = 0; /* The branch of documentation to search */
979978
980979
srchFlags = search_restrict(srchFlags);
981980
if( srchFlags==0 ) return 0;
982981
search_sql_setup(g.db);
983982
add_content_sql_commands(g.db);
@@ -995,28 +994,17 @@
995994
" ORDER BY score DESC, date DESC;");
996995
while( db_step(&q)==SQLITE_ROW ){
997996
const char *zUrl = db_column_text(&q, 0);
998997
const char *zSnippet = db_column_text(&q, 1);
999998
const char *zLabel = db_column_text(&q, 2);
1000
- const char *zId = db_column_text(&q,4);
1001999
if( nRow==0 ){
10021000
@ <ol>
10031001
}
10041002
nRow++;
1005
- if( strncmp(zUrl,"/doc/",5)==0 ){
1006
- /* Change the BRANCH in URLs like "/doc/BRANCH/path" into the
1007
- ** branch name specified by the doc-branch setting. */
1008
- int i;
1009
- if( zDocBr==0 ) zDocBr = db_get("doc-branch","trunk");
1010
- for(i=5; zUrl[i]; i++) if( zUrl[i]=='/' ){ i++; break; }
1011
- @ <li><p><a href='%R/doc/%T(zDocBr)/%T(zUrl+i)'>%h(zLabel)</a>
1012
- }else{
1013
- /* Non-"/doc/" URLs are delivered as is */
1014
- @ <li><p><a href='%R%T(zUrl)'>%h(zLabel)</a>
1015
- }
1003
+ @ <li><p><a href='%R%T(zUrl)'>%h(zLabel)</a>
10161004
if( fDebug ){
1017
- @ (%e(db_column_double(&q,3)), %s(zId))
1005
+ @ (%e(db_column_double(&q,3)), %s(db_column_text(&q,4))
10181006
}
10191007
@ <br /><span class='snippet'>%z(cleanSnippet(zSnippet))</span></li>
10201008
}
10211009
db_finalize(&q);
10221010
if( nRow ){
@@ -1544,19 +1532,17 @@
15441532
*/
15451533
static void search_update_doc_index(void){
15461534
const char *zDocBr = db_get("doc-branch","trunk");
15471535
int ckid = zDocBr ? symbolic_name_to_rid(zDocBr,"ci") : 0;
15481536
double rTime;
1549
- char *zBrUuid;
15501537
if( ckid==0 ) return;
15511538
if( !db_exists("SELECT 1 FROM ftsdocs WHERE type='c' AND rid=%d"
15521539
" AND NOT idxed", ckid) ) return;
15531540
15541541
/* If we get this far, it means that changes to 'd' entries are
15551542
** required. */
15561543
rTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", ckid);
1557
- zBrUuid = db_text("","SELECT substr(uuid,1,20) FROM blob WHERE rid=%d",ckid);
15581544
db_multi_exec(
15591545
"CREATE TEMP TABLE current_docs(rid INTEGER PRIMARY KEY, name);"
15601546
"CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;"
15611547
"INSERT OR IGNORE INTO current_docs(rid, name)"
15621548
" SELECT blob.rid, foci.filename FROM foci, blob"
@@ -1576,14 +1562,14 @@
15761562
db_multi_exec(
15771563
"INSERT OR IGNORE INTO ftsdocs(type,rid,name,idxed,label,bx,url,mtime)"
15781564
" SELECT 'd', rid, name, 0,"
15791565
" title('d',rid,name),"
15801566
" body('d',rid,name),"
1581
- " printf('/doc/%q/%%s',urlencode(name)),"
1567
+ " printf('/doc/%T/%%s',urlencode(name)),"
15821568
" %.17g"
15831569
" FROM current_docs",
1584
- zBrUuid, rTime
1570
+ zDocBr, rTime
15851571
);
15861572
db_multi_exec(
15871573
"INSERT INTO ftsidx(docid,title,body)"
15881574
" SELECT rowid, label, bx FROM ftsdocs WHERE type='d' AND NOT idxed"
15891575
);
15901576
--- src/search.c
+++ src/search.c
@@ -973,11 +973,10 @@
973 unsigned int srchFlags, /* What to search over */
974 int fDebug /* Extra debugging output */
975 ){
976 Stmt q;
977 int nRow = 0;
978 const char *zDocBr = 0; /* The branch of documentation to search */
979
980 srchFlags = search_restrict(srchFlags);
981 if( srchFlags==0 ) return 0;
982 search_sql_setup(g.db);
983 add_content_sql_commands(g.db);
@@ -995,28 +994,17 @@
995 " ORDER BY score DESC, date DESC;");
996 while( db_step(&q)==SQLITE_ROW ){
997 const char *zUrl = db_column_text(&q, 0);
998 const char *zSnippet = db_column_text(&q, 1);
999 const char *zLabel = db_column_text(&q, 2);
1000 const char *zId = db_column_text(&q,4);
1001 if( nRow==0 ){
1002 @ <ol>
1003 }
1004 nRow++;
1005 if( strncmp(zUrl,"/doc/",5)==0 ){
1006 /* Change the BRANCH in URLs like "/doc/BRANCH/path" into the
1007 ** branch name specified by the doc-branch setting. */
1008 int i;
1009 if( zDocBr==0 ) zDocBr = db_get("doc-branch","trunk");
1010 for(i=5; zUrl[i]; i++) if( zUrl[i]=='/' ){ i++; break; }
1011 @ <li><p><a href='%R/doc/%T(zDocBr)/%T(zUrl+i)'>%h(zLabel)</a>
1012 }else{
1013 /* Non-"/doc/" URLs are delivered as is */
1014 @ <li><p><a href='%R%T(zUrl)'>%h(zLabel)</a>
1015 }
1016 if( fDebug ){
1017 @ (%e(db_column_double(&q,3)), %s(zId))
1018 }
1019 @ <br /><span class='snippet'>%z(cleanSnippet(zSnippet))</span></li>
1020 }
1021 db_finalize(&q);
1022 if( nRow ){
@@ -1544,19 +1532,17 @@
1544 */
1545 static void search_update_doc_index(void){
1546 const char *zDocBr = db_get("doc-branch","trunk");
1547 int ckid = zDocBr ? symbolic_name_to_rid(zDocBr,"ci") : 0;
1548 double rTime;
1549 char *zBrUuid;
1550 if( ckid==0 ) return;
1551 if( !db_exists("SELECT 1 FROM ftsdocs WHERE type='c' AND rid=%d"
1552 " AND NOT idxed", ckid) ) return;
1553
1554 /* If we get this far, it means that changes to 'd' entries are
1555 ** required. */
1556 rTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", ckid);
1557 zBrUuid = db_text("","SELECT substr(uuid,1,20) FROM blob WHERE rid=%d",ckid);
1558 db_multi_exec(
1559 "CREATE TEMP TABLE current_docs(rid INTEGER PRIMARY KEY, name);"
1560 "CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;"
1561 "INSERT OR IGNORE INTO current_docs(rid, name)"
1562 " SELECT blob.rid, foci.filename FROM foci, blob"
@@ -1576,14 +1562,14 @@
1576 db_multi_exec(
1577 "INSERT OR IGNORE INTO ftsdocs(type,rid,name,idxed,label,bx,url,mtime)"
1578 " SELECT 'd', rid, name, 0,"
1579 " title('d',rid,name),"
1580 " body('d',rid,name),"
1581 " printf('/doc/%q/%%s',urlencode(name)),"
1582 " %.17g"
1583 " FROM current_docs",
1584 zBrUuid, rTime
1585 );
1586 db_multi_exec(
1587 "INSERT INTO ftsidx(docid,title,body)"
1588 " SELECT rowid, label, bx FROM ftsdocs WHERE type='d' AND NOT idxed"
1589 );
1590
--- src/search.c
+++ src/search.c
@@ -973,11 +973,10 @@
973 unsigned int srchFlags, /* What to search over */
974 int fDebug /* Extra debugging output */
975 ){
976 Stmt q;
977 int nRow = 0;
 
978
979 srchFlags = search_restrict(srchFlags);
980 if( srchFlags==0 ) return 0;
981 search_sql_setup(g.db);
982 add_content_sql_commands(g.db);
@@ -995,28 +994,17 @@
994 " ORDER BY score DESC, date DESC;");
995 while( db_step(&q)==SQLITE_ROW ){
996 const char *zUrl = db_column_text(&q, 0);
997 const char *zSnippet = db_column_text(&q, 1);
998 const char *zLabel = db_column_text(&q, 2);
 
999 if( nRow==0 ){
1000 @ <ol>
1001 }
1002 nRow++;
1003 @ <li><p><a href='%R%T(zUrl)'>%h(zLabel)</a>
 
 
 
 
 
 
 
 
 
 
1004 if( fDebug ){
1005 @ (%e(db_column_double(&q,3)), %s(db_column_text(&q,4))
1006 }
1007 @ <br /><span class='snippet'>%z(cleanSnippet(zSnippet))</span></li>
1008 }
1009 db_finalize(&q);
1010 if( nRow ){
@@ -1544,19 +1532,17 @@
1532 */
1533 static void search_update_doc_index(void){
1534 const char *zDocBr = db_get("doc-branch","trunk");
1535 int ckid = zDocBr ? symbolic_name_to_rid(zDocBr,"ci") : 0;
1536 double rTime;
 
1537 if( ckid==0 ) return;
1538 if( !db_exists("SELECT 1 FROM ftsdocs WHERE type='c' AND rid=%d"
1539 " AND NOT idxed", ckid) ) return;
1540
1541 /* If we get this far, it means that changes to 'd' entries are
1542 ** required. */
1543 rTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", ckid);
 
1544 db_multi_exec(
1545 "CREATE TEMP TABLE current_docs(rid INTEGER PRIMARY KEY, name);"
1546 "CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;"
1547 "INSERT OR IGNORE INTO current_docs(rid, name)"
1548 " SELECT blob.rid, foci.filename FROM foci, blob"
@@ -1576,14 +1562,14 @@
1562 db_multi_exec(
1563 "INSERT OR IGNORE INTO ftsdocs(type,rid,name,idxed,label,bx,url,mtime)"
1564 " SELECT 'd', rid, name, 0,"
1565 " title('d',rid,name),"
1566 " body('d',rid,name),"
1567 " printf('/doc/%T/%%s',urlencode(name)),"
1568 " %.17g"
1569 " FROM current_docs",
1570 zDocBr, rTime
1571 );
1572 db_multi_exec(
1573 "INSERT INTO ftsidx(docid,title,body)"
1574 " SELECT rowid, label, bx FROM ftsdocs WHERE type='d' AND NOT idxed"
1575 );
1576

Keyboard Shortcuts

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