Fossil SCM
Further improvements to formatting of the SQL display using the "showsql" query parameter on /timeline.
Commit
a1616c2dbd1767f2496cd158a2233bb690505fd3980da56d10e8a6296804e605
Parent
02491c2684fa125…
1 file changed
+29
-24
+29
-24
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -1290,12 +1290,13 @@ | ||
| 1290 | 1290 | const char *zChng, /* The filename GLOB list */ |
| 1291 | 1291 | Blob *pSql /* The SELECT statement under construction */ |
| 1292 | 1292 | ){ |
| 1293 | 1293 | if( zChng==0 || zChng[0]==0 ) return; |
| 1294 | 1294 | 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)", | |
| 1297 | 1298 | glob_expr("filename.name", mprintf("\"%s\"", zChng))); |
| 1298 | 1299 | } |
| 1299 | 1300 | static void addFileGlobDescription( |
| 1300 | 1301 | const char *zChng, /* The filename GLOB list */ |
| 1301 | 1302 | Blob *pDescription /* Result description */ |
| @@ -2308,14 +2309,15 @@ | ||
| 2308 | 2309 | } |
| 2309 | 2310 | } |
| 2310 | 2311 | blob_append_sql(&sql, " AND event.objid IN pathnode"); |
| 2311 | 2312 | if( zChng && zChng[0] ){ |
| 2312 | 2313 | 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)", | |
| 2317 | 2319 | glob_expr("filename.name", zChng) |
| 2318 | 2320 | ); |
| 2319 | 2321 | } |
| 2320 | 2322 | tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS; |
| 2321 | 2323 | db_multi_exec("%s", blob_sql_text(&sql)); |
| @@ -2698,13 +2700,14 @@ | ||
| 2698 | 2700 | nEntry = -1; |
| 2699 | 2701 | } |
| 2700 | 2702 | if( zTagSql ){ |
| 2701 | 2703 | db_multi_exec( |
| 2702 | 2704 | "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*/ | |
| 2706 | 2709 | ); |
| 2707 | 2710 | if( zMark ){ |
| 2708 | 2711 | /* If the t=release option is used with m=UUID, then also |
| 2709 | 2712 | ** include the UUID check-in in the display list */ |
| 2710 | 2713 | int ridMark = name_to_rid(zMark); |
| @@ -2741,40 +2744,42 @@ | ||
| 2741 | 2744 | ** branch to be included in the report. These related check-ins are |
| 2742 | 2745 | ** useful in helping to visualize what has happened on a quiescent |
| 2743 | 2746 | ** branch that is infrequently merged with a much more activate branch. |
| 2744 | 2747 | */ |
| 2745 | 2748 | 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;" | |
| 2749 | 2752 | ); |
| 2750 | 2753 | if( P("mionly")==0 ){ |
| 2751 | 2754 | 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;" | |
| 2755 | 2758 | ); |
| 2756 | 2759 | if( showCherrypicks ){ |
| 2757 | 2760 | 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;" | |
| 2761 | 2764 | ); |
| 2762 | 2765 | } |
| 2763 | 2766 | } |
| 2764 | 2767 | if( showCherrypicks ){ |
| 2765 | 2768 | 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;" | |
| 2769 | 2772 | ); |
| 2770 | 2773 | } |
| 2771 | 2774 | if( (tmFlags & TIMELINE_UNHIDE)==0 ){ |
| 2772 | 2775 | 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)", | |
| 2776 | 2781 | TAG_HIDDEN |
| 2777 | 2782 | ); |
| 2778 | 2783 | } |
| 2779 | 2784 | } |
| 2780 | 2785 | } |
| 2781 | 2786 |
| --- 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 |