Fossil SCM

Further improvements to formatting of the SQL display using the "showsql" query parameter on /timeline.

drh 2024-12-23 13:36 trunk
Commit a1616c2dbd1767f2496cd158a2233bb690505fd3980da56d10e8a6296804e605
1 file changed +29 -24
+29 -24
--- src/timeline.c
+++ src/timeline.c
@@ -1290,12 +1290,13 @@
12901290
const char *zChng, /* The filename GLOB list */
12911291
Blob *pSql /* The SELECT statement under construction */
12921292
){
12931293
if( zChng==0 || zChng[0]==0 ) return;
12941294
blob_append_sql(pSql," AND event.objid IN ("
1295
- "SELECT mlink.mid FROM mlink, filename"
1296
- " WHERE mlink.fnid=filename.fnid AND %s)",
1295
+ "SELECT mlink.mid FROM mlink, filename\n"
1296
+ " WHERE mlink.fnid=filename.fnid\n"
1297
+ " AND %s)",
12971298
glob_expr("filename.name", mprintf("\"%s\"", zChng)));
12981299
}
12991300
static void addFileGlobDescription(
13001301
const char *zChng, /* The filename GLOB list */
13011302
Blob *pDescription /* Result description */
@@ -2308,14 +2309,15 @@
23082309
}
23092310
}
23102311
blob_append_sql(&sql, " AND event.objid IN pathnode");
23112312
if( zChng && zChng[0] ){
23122313
db_multi_exec(
2313
- "DELETE FROM pathnode "
2314
- " WHERE NOT EXISTS(SELECT 1 FROM mlink, filename"
2315
- " WHERE mlink.mid=x"
2316
- " AND mlink.fnid=filename.fnid AND %s)",
2314
+ "DELETE FROM pathnode\n"
2315
+ " WHERE NOT EXISTS(SELECT 1 FROM mlink, filename\n"
2316
+ " WHERE mlink.mid=x\n"
2317
+ " AND mlink.fnid=filename.fnid\n"
2318
+ " AND %s)",
23172319
glob_expr("filename.name", zChng)
23182320
);
23192321
}
23202322
tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS;
23212323
db_multi_exec("%s", blob_sql_text(&sql));
@@ -2698,13 +2700,14 @@
26982700
nEntry = -1;
26992701
}
27002702
if( zTagSql ){
27012703
db_multi_exec(
27022704
"CREATE TEMP TABLE selected_nodes(rid INTEGER PRIMARY KEY);"
2703
- "INSERT OR IGNORE INTO selected_nodes"
2704
- " SELECT tagxref.rid FROM tagxref NATURAL JOIN tag"
2705
- " WHERE %s AND tagtype>0", zTagSql/*safe-for-%s*/
2705
+ "INSERT OR IGNORE INTO selected_nodes\n"
2706
+ " SELECT tagxref.rid FROM tagxref NATURAL JOIN tag\n"
2707
+ " WHERE tagtype>0\n"
2708
+ " AND %s", zTagSql/*safe-for-%s*/
27062709
);
27072710
if( zMark ){
27082711
/* If the t=release option is used with m=UUID, then also
27092712
** include the UUID check-in in the display list */
27102713
int ridMark = name_to_rid(zMark);
@@ -2741,40 +2744,42 @@
27412744
** branch to be included in the report. These related check-ins are
27422745
** useful in helping to visualize what has happened on a quiescent
27432746
** branch that is infrequently merged with a much more activate branch.
27442747
*/
27452748
db_multi_exec(
2746
- "INSERT OR IGNORE INTO related_nodes"
2747
- " SELECT pid FROM selected_nodes CROSS JOIN plink"
2748
- " WHERE selected_nodes.rid=plink.cid;"
2749
+ "INSERT OR IGNORE INTO related_nodes\n"
2750
+ " SELECT pid FROM selected_nodes CROSS JOIN plink\n"
2751
+ " WHERE selected_nodes.rid=plink.cid;"
27492752
);
27502753
if( P("mionly")==0 ){
27512754
db_multi_exec(
2752
- "INSERT OR IGNORE INTO related_nodes"
2753
- " SELECT cid FROM selected_nodes CROSS JOIN plink"
2754
- " WHERE selected_nodes.rid=plink.pid;"
2755
+ "INSERT OR IGNORE INTO related_nodes\n"
2756
+ " SELECT cid FROM selected_nodes CROSS JOIN plink\n"
2757
+ " WHERE selected_nodes.rid=plink.pid;"
27552758
);
27562759
if( showCherrypicks ){
27572760
db_multi_exec(
2758
- "INSERT OR IGNORE INTO related_nodes"
2759
- " SELECT childid FROM selected_nodes CROSS JOIN cherrypick"
2760
- " WHERE selected_nodes.rid=cherrypick.parentid;"
2761
+ "INSERT OR IGNORE INTO related_nodes\n"
2762
+ " SELECT childid FROM selected_nodes CROSS JOIN cherrypick\n"
2763
+ " WHERE selected_nodes.rid=cherrypick.parentid;"
27612764
);
27622765
}
27632766
}
27642767
if( showCherrypicks ){
27652768
db_multi_exec(
2766
- "INSERT OR IGNORE INTO related_nodes"
2767
- " SELECT parentid FROM selected_nodes CROSS JOIN cherrypick"
2768
- " WHERE selected_nodes.rid=cherrypick.childid;"
2769
+ "INSERT OR IGNORE INTO related_nodes\n"
2770
+ " SELECT parentid FROM selected_nodes CROSS JOIN cherrypick\n"
2771
+ " WHERE selected_nodes.rid=cherrypick.childid;"
27692772
);
27702773
}
27712774
if( (tmFlags & TIMELINE_UNHIDE)==0 ){
27722775
db_multi_exec(
2773
- "DELETE FROM related_nodes WHERE rid IN "
2774
- " (SELECT related_nodes.rid FROM related_nodes, tagxref"
2775
- " WHERE tagid=%d AND tagtype>0 AND tagxref.rid=related_nodes.rid)",
2776
+ "DELETE FROM related_nodes\n"
2777
+ " WHERE rid IN (SELECT related_nodes.rid\n"
2778
+ " FROM related_nodes, tagxref\n"
2779
+ " WHERE tagid=%d AND tagtype>0\n"
2780
+ " AND tagxref.rid=related_nodes.rid)",
27762781
TAG_HIDDEN
27772782
);
27782783
}
27792784
}
27802785
}
27812786
--- src/timeline.c
+++ src/timeline.c
@@ -1290,12 +1290,13 @@
1290 const char *zChng, /* The filename GLOB list */
1291 Blob *pSql /* The SELECT statement under construction */
1292 ){
1293 if( zChng==0 || zChng[0]==0 ) return;
1294 blob_append_sql(pSql," AND event.objid IN ("
1295 "SELECT mlink.mid FROM mlink, filename"
1296 " WHERE mlink.fnid=filename.fnid AND %s)",
 
1297 glob_expr("filename.name", mprintf("\"%s\"", zChng)));
1298 }
1299 static void addFileGlobDescription(
1300 const char *zChng, /* The filename GLOB list */
1301 Blob *pDescription /* Result description */
@@ -2308,14 +2309,15 @@
2308 }
2309 }
2310 blob_append_sql(&sql, " AND event.objid IN pathnode");
2311 if( zChng && zChng[0] ){
2312 db_multi_exec(
2313 "DELETE FROM pathnode "
2314 " WHERE NOT EXISTS(SELECT 1 FROM mlink, filename"
2315 " WHERE mlink.mid=x"
2316 " AND mlink.fnid=filename.fnid AND %s)",
 
2317 glob_expr("filename.name", zChng)
2318 );
2319 }
2320 tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS;
2321 db_multi_exec("%s", blob_sql_text(&sql));
@@ -2698,13 +2700,14 @@
2698 nEntry = -1;
2699 }
2700 if( zTagSql ){
2701 db_multi_exec(
2702 "CREATE TEMP TABLE selected_nodes(rid INTEGER PRIMARY KEY);"
2703 "INSERT OR IGNORE INTO selected_nodes"
2704 " SELECT tagxref.rid FROM tagxref NATURAL JOIN tag"
2705 " WHERE %s AND tagtype>0", zTagSql/*safe-for-%s*/
 
2706 );
2707 if( zMark ){
2708 /* If the t=release option is used with m=UUID, then also
2709 ** include the UUID check-in in the display list */
2710 int ridMark = name_to_rid(zMark);
@@ -2741,40 +2744,42 @@
2741 ** branch to be included in the report. These related check-ins are
2742 ** useful in helping to visualize what has happened on a quiescent
2743 ** branch that is infrequently merged with a much more activate branch.
2744 */
2745 db_multi_exec(
2746 "INSERT OR IGNORE INTO related_nodes"
2747 " SELECT pid FROM selected_nodes CROSS JOIN plink"
2748 " WHERE selected_nodes.rid=plink.cid;"
2749 );
2750 if( P("mionly")==0 ){
2751 db_multi_exec(
2752 "INSERT OR IGNORE INTO related_nodes"
2753 " SELECT cid FROM selected_nodes CROSS JOIN plink"
2754 " WHERE selected_nodes.rid=plink.pid;"
2755 );
2756 if( showCherrypicks ){
2757 db_multi_exec(
2758 "INSERT OR IGNORE INTO related_nodes"
2759 " SELECT childid FROM selected_nodes CROSS JOIN cherrypick"
2760 " WHERE selected_nodes.rid=cherrypick.parentid;"
2761 );
2762 }
2763 }
2764 if( showCherrypicks ){
2765 db_multi_exec(
2766 "INSERT OR IGNORE INTO related_nodes"
2767 " SELECT parentid FROM selected_nodes CROSS JOIN cherrypick"
2768 " WHERE selected_nodes.rid=cherrypick.childid;"
2769 );
2770 }
2771 if( (tmFlags & TIMELINE_UNHIDE)==0 ){
2772 db_multi_exec(
2773 "DELETE FROM related_nodes WHERE rid IN "
2774 " (SELECT related_nodes.rid FROM related_nodes, tagxref"
2775 " WHERE tagid=%d AND tagtype>0 AND tagxref.rid=related_nodes.rid)",
 
 
2776 TAG_HIDDEN
2777 );
2778 }
2779 }
2780 }
2781
--- src/timeline.c
+++ src/timeline.c
@@ -1290,12 +1290,13 @@
1290 const char *zChng, /* The filename GLOB list */
1291 Blob *pSql /* The SELECT statement under construction */
1292 ){
1293 if( zChng==0 || zChng[0]==0 ) return;
1294 blob_append_sql(pSql," AND event.objid IN ("
1295 "SELECT mlink.mid FROM mlink, filename\n"
1296 " WHERE mlink.fnid=filename.fnid\n"
1297 " AND %s)",
1298 glob_expr("filename.name", mprintf("\"%s\"", zChng)));
1299 }
1300 static void addFileGlobDescription(
1301 const char *zChng, /* The filename GLOB list */
1302 Blob *pDescription /* Result description */
@@ -2308,14 +2309,15 @@
2309 }
2310 }
2311 blob_append_sql(&sql, " AND event.objid IN pathnode");
2312 if( zChng && zChng[0] ){
2313 db_multi_exec(
2314 "DELETE FROM pathnode\n"
2315 " WHERE NOT EXISTS(SELECT 1 FROM mlink, filename\n"
2316 " WHERE mlink.mid=x\n"
2317 " AND mlink.fnid=filename.fnid\n"
2318 " AND %s)",
2319 glob_expr("filename.name", zChng)
2320 );
2321 }
2322 tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS;
2323 db_multi_exec("%s", blob_sql_text(&sql));
@@ -2698,13 +2700,14 @@
2700 nEntry = -1;
2701 }
2702 if( zTagSql ){
2703 db_multi_exec(
2704 "CREATE TEMP TABLE selected_nodes(rid INTEGER PRIMARY KEY);"
2705 "INSERT OR IGNORE INTO selected_nodes\n"
2706 " SELECT tagxref.rid FROM tagxref NATURAL JOIN tag\n"
2707 " WHERE tagtype>0\n"
2708 " AND %s", zTagSql/*safe-for-%s*/
2709 );
2710 if( zMark ){
2711 /* If the t=release option is used with m=UUID, then also
2712 ** include the UUID check-in in the display list */
2713 int ridMark = name_to_rid(zMark);
@@ -2741,40 +2744,42 @@
2744 ** branch to be included in the report. These related check-ins are
2745 ** useful in helping to visualize what has happened on a quiescent
2746 ** branch that is infrequently merged with a much more activate branch.
2747 */
2748 db_multi_exec(
2749 "INSERT OR IGNORE INTO related_nodes\n"
2750 " SELECT pid FROM selected_nodes CROSS JOIN plink\n"
2751 " WHERE selected_nodes.rid=plink.cid;"
2752 );
2753 if( P("mionly")==0 ){
2754 db_multi_exec(
2755 "INSERT OR IGNORE INTO related_nodes\n"
2756 " SELECT cid FROM selected_nodes CROSS JOIN plink\n"
2757 " WHERE selected_nodes.rid=plink.pid;"
2758 );
2759 if( showCherrypicks ){
2760 db_multi_exec(
2761 "INSERT OR IGNORE INTO related_nodes\n"
2762 " SELECT childid FROM selected_nodes CROSS JOIN cherrypick\n"
2763 " WHERE selected_nodes.rid=cherrypick.parentid;"
2764 );
2765 }
2766 }
2767 if( showCherrypicks ){
2768 db_multi_exec(
2769 "INSERT OR IGNORE INTO related_nodes\n"
2770 " SELECT parentid FROM selected_nodes CROSS JOIN cherrypick\n"
2771 " WHERE selected_nodes.rid=cherrypick.childid;"
2772 );
2773 }
2774 if( (tmFlags & TIMELINE_UNHIDE)==0 ){
2775 db_multi_exec(
2776 "DELETE FROM related_nodes\n"
2777 " WHERE rid IN (SELECT related_nodes.rid\n"
2778 " FROM related_nodes, tagxref\n"
2779 " WHERE tagid=%d AND tagtype>0\n"
2780 " AND tagxref.rid=related_nodes.rid)",
2781 TAG_HIDDEN
2782 );
2783 }
2784 }
2785 }
2786

Keyboard Shortcuts

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