Fossil SCM

Only issue notififications for ticket changes that do not previously appear in the EVENT table. Fix for ticket [ad9aa572e7972f57].

drh 2022-11-12 12:36 trunk merge
Commit fb040bb01326181ee2375dfa9ed2d437973fbf8b0ba0266070337dde57f3a015
2 files changed +5 +19 -6
--- src/alerts.c
+++ src/alerts.c
@@ -2943,10 +2943,15 @@
29432943
" sentMod"
29442944
" FROM pending_alert"
29452945
" WHERE sentSep IS FALSE;"
29462946
"DELETE FROM wantalert WHERE needMod AND sentMod;"
29472947
);
2948
+ }
2949
+ if( g.fSqlTrace ){
2950
+ fossil_trace("-- wantalert contains %d rows\n",
2951
+ db_int(0, "SELECT count(*) FROM wantalert")
2952
+ );
29482953
}
29492954
29502955
/* Step 2: compute EmailEvent objects for every notification that
29512956
** needs sending.
29522957
*/
29532958
--- src/alerts.c
+++ src/alerts.c
@@ -2943,10 +2943,15 @@
2943 " sentMod"
2944 " FROM pending_alert"
2945 " WHERE sentSep IS FALSE;"
2946 "DELETE FROM wantalert WHERE needMod AND sentMod;"
2947 );
 
 
 
 
 
2948 }
2949
2950 /* Step 2: compute EmailEvent objects for every notification that
2951 ** needs sending.
2952 */
2953
--- src/alerts.c
+++ src/alerts.c
@@ -2943,10 +2943,15 @@
2943 " sentMod"
2944 " FROM pending_alert"
2945 " WHERE sentSep IS FALSE;"
2946 "DELETE FROM wantalert WHERE needMod AND sentMod;"
2947 );
2948 }
2949 if( g.fSqlTrace ){
2950 fossil_trace("-- wantalert contains %d rows\n",
2951 db_int(0, "SELECT count(*) FROM wantalert")
2952 );
2953 }
2954
2955 /* Step 2: compute EmailEvent objects for every notification that
2956 ** needs sending.
2957 */
2958
+19 -6
--- src/manifest.c
+++ src/manifest.c
@@ -2198,16 +2198,29 @@
21982198
blob_appendf(&brief, "New ticket [%!S|%S].", pManifest->zTicketUuid,
21992199
pManifest->zTicketUuid);
22002200
}
22012201
fossil_free(zTitle);
22022202
manifest_create_event_triggers();
2203
- db_multi_exec(
2204
- "REPLACE INTO event(type,tagid,mtime,objid,user,comment,brief)"
2205
- "VALUES('t',%d,%.17g,%d,%Q,%Q,%Q)",
2206
- tktTagId, pManifest->rDate, rid, pManifest->zUser,
2207
- blob_str(&comment), blob_str(&brief)
2208
- );
2203
+ if( db_exists("SELECT 1 FROM event WHERE type='t' AND objid=%d", rid) ){
2204
+ /* The ticket_rebuild_entry() function redoes all of the event entries
2205
+ ** for a ticket whenever a new event appears. Be careful to only UPDATE
2206
+ ** existing events, so that they do not get turned into alerts by
2207
+ ** the alert trigger. */
2208
+ db_multi_exec(
2209
+ "UPDATE event SET tagid=%d, mtime=%.17g, user=%Q, comment=%Q, brief=%Q"
2210
+ " WHERE objid=%d",
2211
+ tktTagId, pManifest->rDate, pManifest->zUser,
2212
+ blob_str(&comment), blob_str(&brief), rid
2213
+ );
2214
+ }else{
2215
+ db_multi_exec(
2216
+ "REPLACE INTO event(type,tagid,mtime,objid,user,comment,brief)"
2217
+ "VALUES('t',%d,%.17g,%d,%Q,%Q,%Q)",
2218
+ tktTagId, pManifest->rDate, rid, pManifest->zUser,
2219
+ blob_str(&comment), blob_str(&brief)
2220
+ );
2221
+ }
22092222
blob_reset(&comment);
22102223
blob_reset(&brief);
22112224
}
22122225
22132226
/*
22142227
--- src/manifest.c
+++ src/manifest.c
@@ -2198,16 +2198,29 @@
2198 blob_appendf(&brief, "New ticket [%!S|%S].", pManifest->zTicketUuid,
2199 pManifest->zTicketUuid);
2200 }
2201 fossil_free(zTitle);
2202 manifest_create_event_triggers();
2203 db_multi_exec(
2204 "REPLACE INTO event(type,tagid,mtime,objid,user,comment,brief)"
2205 "VALUES('t',%d,%.17g,%d,%Q,%Q,%Q)",
2206 tktTagId, pManifest->rDate, rid, pManifest->zUser,
2207 blob_str(&comment), blob_str(&brief)
2208 );
 
 
 
 
 
 
 
 
 
 
 
 
 
2209 blob_reset(&comment);
2210 blob_reset(&brief);
2211 }
2212
2213 /*
2214
--- src/manifest.c
+++ src/manifest.c
@@ -2198,16 +2198,29 @@
2198 blob_appendf(&brief, "New ticket [%!S|%S].", pManifest->zTicketUuid,
2199 pManifest->zTicketUuid);
2200 }
2201 fossil_free(zTitle);
2202 manifest_create_event_triggers();
2203 if( db_exists("SELECT 1 FROM event WHERE type='t' AND objid=%d", rid) ){
2204 /* The ticket_rebuild_entry() function redoes all of the event entries
2205 ** for a ticket whenever a new event appears. Be careful to only UPDATE
2206 ** existing events, so that they do not get turned into alerts by
2207 ** the alert trigger. */
2208 db_multi_exec(
2209 "UPDATE event SET tagid=%d, mtime=%.17g, user=%Q, comment=%Q, brief=%Q"
2210 " WHERE objid=%d",
2211 tktTagId, pManifest->rDate, pManifest->zUser,
2212 blob_str(&comment), blob_str(&brief), rid
2213 );
2214 }else{
2215 db_multi_exec(
2216 "REPLACE INTO event(type,tagid,mtime,objid,user,comment,brief)"
2217 "VALUES('t',%d,%.17g,%d,%Q,%Q,%Q)",
2218 tktTagId, pManifest->rDate, rid, pManifest->zUser,
2219 blob_str(&comment), blob_str(&brief)
2220 );
2221 }
2222 blob_reset(&comment);
2223 blob_reset(&brief);
2224 }
2225
2226 /*
2227

Keyboard Shortcuts

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