Fossil SCM

Revise a query associated with /tree so that it runs a little faster.

drh 2024-07-20 10:34 trunk
Commit 0e2930f8e5b1985d3cbbab9956c3af31b20587ed5196fe4c3c6dd9d3eb71e7e5
1 file changed +13 -6
+13 -6
--- src/browse.c
+++ src/browse.c
@@ -860,17 +860,24 @@
860860
}
861861
db_finalize(&q);
862862
}else{
863863
Stmt q;
864864
db_prepare(&q,
865
+ "WITH mx(fnid,fid,mtime) AS (\n"
866
+ " SELECT fnid, fid, max(event.mtime)\n"
867
+ " FROM mlink, event\n"
868
+ " WHERE event.objid=mlink.mid\n"
869
+ " GROUP BY 1\n"
870
+ ")\n"
865871
"SELECT\n"
866
- " (SELECT name FROM filename WHERE filename.fnid=mlink.fnid),\n"
867
- " (SELECT uuid FROM blob WHERE blob.rid=mlink.fid),\n"
868
- " (SELECT size FROM blob WHERE blob.rid=mlink.fid),\n"
869
- " max(event.mtime)\n"
870
- " FROM mlink JOIN event ON event.objid=mlink.mid\n"
871
- " GROUP BY mlink.fnid\n"
872
+ " filename.name,\n"
873
+ " blob.uuid,\n"
874
+ " blob.size,\n"
875
+ " mx.mtime\n"
876
+ "FROM mx\n"
877
+ " LEFT JOIN filename ON filename.fnid=mx.fnid\n"
878
+ " LEFT JOIN blob ON blob.rid=mx.fid\n"
872879
" ORDER BY 1 COLLATE uintnocase;");
873880
while( db_step(&q)==SQLITE_ROW ){
874881
const char *zName = db_column_text(&q, 0);
875882
const char *zUuid = db_column_text(&q,1);
876883
int size = db_column_int(&q,2);
877884
--- src/browse.c
+++ src/browse.c
@@ -860,17 +860,24 @@
860 }
861 db_finalize(&q);
862 }else{
863 Stmt q;
864 db_prepare(&q,
 
 
 
 
 
 
865 "SELECT\n"
866 " (SELECT name FROM filename WHERE filename.fnid=mlink.fnid),\n"
867 " (SELECT uuid FROM blob WHERE blob.rid=mlink.fid),\n"
868 " (SELECT size FROM blob WHERE blob.rid=mlink.fid),\n"
869 " max(event.mtime)\n"
870 " FROM mlink JOIN event ON event.objid=mlink.mid\n"
871 " GROUP BY mlink.fnid\n"
 
872 " ORDER BY 1 COLLATE uintnocase;");
873 while( db_step(&q)==SQLITE_ROW ){
874 const char *zName = db_column_text(&q, 0);
875 const char *zUuid = db_column_text(&q,1);
876 int size = db_column_int(&q,2);
877
--- src/browse.c
+++ src/browse.c
@@ -860,17 +860,24 @@
860 }
861 db_finalize(&q);
862 }else{
863 Stmt q;
864 db_prepare(&q,
865 "WITH mx(fnid,fid,mtime) AS (\n"
866 " SELECT fnid, fid, max(event.mtime)\n"
867 " FROM mlink, event\n"
868 " WHERE event.objid=mlink.mid\n"
869 " GROUP BY 1\n"
870 ")\n"
871 "SELECT\n"
872 " filename.name,\n"
873 " blob.uuid,\n"
874 " blob.size,\n"
875 " mx.mtime\n"
876 "FROM mx\n"
877 " LEFT JOIN filename ON filename.fnid=mx.fnid\n"
878 " LEFT JOIN blob ON blob.rid=mx.fid\n"
879 " ORDER BY 1 COLLATE uintnocase;");
880 while( db_step(&q)==SQLITE_ROW ){
881 const char *zName = db_column_text(&q, 0);
882 const char *zUuid = db_column_text(&q,1);
883 int size = db_column_int(&q,2);
884

Keyboard Shortcuts

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