@@ -84,18 +84,19 @@ func (w *Writer) Write(stopChan, doneChan chan struct{}) error {
84
84
// This must be done else the simpler UPDATE statements below, which is the
85
85
// real heartbeat, will fail because there's no match row.
86
86
var ping string
87
+ var params []interface {}
87
88
if w .srcRole != "" {
88
- ping = fmt .Sprintf ("INSERT INTO %s (src_id, src_role, ts, freq) VALUES ('%s', '%s' , NOW(3), %d ) ON DUPLICATE KEY UPDATE ts=NOW(3), freq=%d , src_role='%s'" ,
89
- w . table , w .srcId , w .srcRole , w .freq .Milliseconds (), w .freq .Milliseconds (), w .srcRole )
89
+ ping = fmt .Sprintf ("INSERT INTO %s (src_id, src_role, ts, freq) VALUES (?, ? , NOW(3), ? ) ON DUPLICATE KEY UPDATE ts=NOW(3), freq=? , src_role=?" , w . table )
90
+ params = [] interface {}{ w .srcId , w .srcRole , w .freq .Milliseconds (), w .freq .Milliseconds (), w .srcRole }
90
91
} else {
91
- ping = fmt .Sprintf ("INSERT INTO %s (src_id, src_role, ts, freq) VALUES ('%s' , NULL, NOW(3), %d ) ON DUPLICATE KEY UPDATE ts=NOW(3), freq=%d , src_role=NULL" ,
92
- w . table , w .monitorId , w .freq .Milliseconds (), w .freq .Milliseconds ())
92
+ ping = fmt .Sprintf ("INSERT INTO %s (src_id, src_role, ts, freq) VALUES (? , NULL, NOW(3), ? ) ON DUPLICATE KEY UPDATE ts=NOW(3), freq=? , src_role=NULL" , w . table )
93
+ params = [] interface {}{ w .monitorId , w .freq .Milliseconds (), w .freq .Milliseconds ()}
93
94
}
94
95
blip .Debug ("%s: first heartbeat: %s" , w .monitorId , ping )
95
96
for {
96
97
status .Monitor (w .monitorId , status .HEARTBEAT_WRITER , "first insert" )
97
98
ctx , cancel = context .WithTimeout (context .Background (), WriteTimeout )
98
- _ , err = w .db .ExecContext (ctx , ping )
99
+ _ , err = w .db .ExecContext (ctx , ping , params ... )
99
100
cancel ()
100
101
if err == nil { // success
101
102
status .Monitor (w .monitorId , status .HEARTBEAT_WRITER , "sleep" )
0 commit comments