@@ -253,34 +253,31 @@ static int sql_get_null(void *ctx) {
253
253
}
254
254
255
255
static int sql_get_integer (void *ctx, longlong value) {
256
- char buffer[1024 ];
257
256
struct st_plugin_ctx *pctx = (struct st_plugin_ctx *)ctx;
258
257
DBUG_ENTER (" sql_get_integer" );
259
258
uint row = pctx->num_rows ;
260
259
uint col = pctx->current_col ;
261
260
pctx->current_col ++;
262
261
263
- size_t len = snprintf (buffer, sizeof (buffer), " %lld" , value);
264
-
265
- strncpy (pctx->sql_str_value [row][col], buffer, len);
262
+ size_t len = snprintf (pctx->sql_str_value [row][col],
263
+ sizeof (pctx->sql_str_value [row][col]), " %lld" , value);
266
264
pctx->sql_str_len [row][col] = len;
267
265
pctx->sql_int_value [row][col] = value;
268
266
269
267
DBUG_RETURN (false );
270
268
}
271
269
272
270
static int sql_get_longlong (void *ctx, longlong value, uint is_unsigned) {
273
- char buffer[1024 ];
274
271
struct st_plugin_ctx *pctx = (struct st_plugin_ctx *)ctx;
275
272
DBUG_ENTER (" sql_get_longlong" );
276
273
uint row = pctx->num_rows ;
277
274
uint col = pctx->current_col ;
278
275
pctx->current_col ++;
279
276
280
- size_t len =
281
- snprintf (buffer, sizeof (buffer), is_unsigned ? " %llu" : " %lld" , value);
277
+ size_t len = snprintf (pctx->sql_str_value [row][col],
278
+ sizeof (pctx->sql_str_value [row][col]),
279
+ is_unsigned ? " %llu" : " %lld" , value);
282
280
283
- strncpy (pctx->sql_str_value [row][col], buffer, len);
284
281
pctx->sql_str_len [row][col] = len;
285
282
pctx->sql_longlong_value [row][col] = value;
286
283
pctx->sql_is_unsigned [row][col] = is_unsigned;
@@ -289,19 +286,16 @@ static int sql_get_longlong(void *ctx, longlong value, uint is_unsigned) {
289
286
}
290
287
291
288
static int sql_get_decimal (void *ctx, const decimal_t *value) {
292
- char buffer[1024 ];
293
289
struct st_plugin_ctx *pctx = (struct st_plugin_ctx *)ctx;
294
290
DBUG_ENTER (" sql_get_decimal" );
295
291
uint row = pctx->num_rows ;
296
292
uint col = pctx->current_col ;
297
293
pctx->current_col ++;
298
294
299
- size_t len = snprintf (buffer, sizeof (buffer), " %s%d.%d(%d)[%s]" ,
300
- value->sign ? " +" : " -" , value->intg , value->frac ,
301
- value->len , (char *)value->buf );
302
-
303
- strncpy (pctx->sql_str_value [row][col], buffer, len);
304
-
295
+ size_t len = snprintf (pctx->sql_str_value [row][col],
296
+ sizeof (pctx->sql_str_value [row][col]),
297
+ " %s%d.%d(%d)[%s]" , value->sign ? " +" : " -" , value->intg ,
298
+ value->frac , value->len , (char *)value->buf );
305
299
pctx->sql_str_len [row][col] = len;
306
300
pctx->sql_decimal_value [row][col].intg = value->intg ;
307
301
pctx->sql_decimal_value [row][col].frac = value->frac ;
@@ -315,16 +309,15 @@ static int sql_get_decimal(void *ctx, const decimal_t *value) {
315
309
}
316
310
317
311
static int sql_get_double (void *ctx, double value, uint32 decimals) {
318
- char buffer[1024 ];
319
312
struct st_plugin_ctx *pctx = (struct st_plugin_ctx *)ctx;
320
313
DBUG_ENTER (" sql_get_double" );
321
314
uint row = pctx->num_rows ;
322
315
uint col = pctx->current_col ;
323
316
pctx->current_col ++;
324
317
325
- size_t len = snprintf (buffer, sizeof (buffer), " %3.7g" , value);
318
+ size_t len = snprintf (pctx->sql_str_value [row][col],
319
+ sizeof (pctx->sql_str_value [row][col]), " %3.7g" , value);
326
320
327
- strncpy (pctx->sql_str_value [row][col], buffer, len);
328
321
pctx->sql_str_len [row][col] = len;
329
322
330
323
pctx->sql_double_value [row][col] = value;
@@ -334,18 +327,16 @@ static int sql_get_double(void *ctx, double value, uint32 decimals) {
334
327
}
335
328
336
329
static int sql_get_date (void *ctx, const MYSQL_TIME *value) {
337
- char buffer[1024 ];
338
330
struct st_plugin_ctx *pctx = (struct st_plugin_ctx *)ctx;
339
331
DBUG_ENTER (" sql_get_date" );
340
332
uint row = pctx->num_rows ;
341
333
uint col = pctx->current_col ;
342
334
pctx->current_col ++;
343
335
344
336
size_t len =
345
- snprintf (buffer, sizeof (buffer), " %s%4d-%02d-%02d" , value->neg ? " -" : " " ,
346
- value->year , value->month , value->day );
347
-
348
- strncpy (pctx->sql_str_value [row][col], buffer, len);
337
+ snprintf (pctx->sql_str_value [row][col],
338
+ sizeof (pctx->sql_str_value [row][col]), " %s%4d-%02d-%02d" ,
339
+ value->neg ? " -" : " " , value->year , value->month , value->day );
349
340
pctx->sql_str_len [row][col] = len;
350
341
351
342
pctx->sql_date_value [row][col].year = value->year ;
@@ -362,19 +353,18 @@ static int sql_get_date(void *ctx, const MYSQL_TIME *value) {
362
353
}
363
354
364
355
static int sql_get_time (void *ctx, const MYSQL_TIME *value, uint decimals) {
365
- char buffer[1024 ];
366
356
struct st_plugin_ctx *pctx = (struct st_plugin_ctx *)ctx;
367
357
DBUG_ENTER (" sql_get_time" );
368
358
uint row = pctx->num_rows ;
369
359
uint col = pctx->current_col ;
370
360
pctx->current_col ++;
371
361
372
362
size_t len = snprintf (
373
- buffer, sizeof (buffer), " %s%02d:%02d:%02d" , value->neg ? " -" : " " ,
363
+ pctx->sql_str_value [row][col], sizeof (pctx->sql_str_value [row][col]),
364
+ " %s%02d:%02d:%02d" , value->neg ? " -" : " " ,
374
365
value->day ? (value->day * 24 + value->hour ) : value->hour , value->minute ,
375
366
value->second );
376
367
377
- strncpy (pctx->sql_str_value [row][col], buffer, len);
378
368
pctx->sql_str_len [row][col] = len;
379
369
380
370
pctx->sql_time_value [row][col].year = value->year ;
@@ -392,19 +382,17 @@ static int sql_get_time(void *ctx, const MYSQL_TIME *value, uint decimals) {
392
382
}
393
383
394
384
static int sql_get_datetime (void *ctx, const MYSQL_TIME *value, uint decimals) {
395
- char buffer[1024 ];
396
385
struct st_plugin_ctx *pctx = (struct st_plugin_ctx *)ctx;
397
386
DBUG_ENTER (" sql_get_datetime" );
398
387
uint row = pctx->num_rows ;
399
388
uint col = pctx->current_col ;
400
389
pctx->current_col ++;
401
390
402
- size_t len =
403
- snprintf (buffer , sizeof (buffer), " %s%4d-%02d-%02d %02d:%02d:%02d " ,
404
- value->neg ? " -" : " " , value->year , value-> month , value-> day ,
405
- value->hour , value->minute , value->second );
391
+ size_t len = snprintf (
392
+ pctx-> sql_str_value [row][col] , sizeof (pctx-> sql_str_value [row][col]) ,
393
+ " %s%4d-%02d-%02d %02d:%02d:%02d " , value->neg ? " -" : " " , value->year ,
394
+ value-> month , value-> day , value->hour , value->minute , value->second );
406
395
407
- strncpy (pctx->sql_str_value [row][col], buffer, len);
408
396
pctx->sql_str_len [row][col] = len;
409
397
410
398
pctx->sql_datetime_value [row][col].year = value->year ;
@@ -446,7 +434,8 @@ static void sql_handle_ok(void *ctx, uint server_status,
446
434
pctx->warn_count = statement_warn_count;
447
435
pctx->affected_rows = affected_rows;
448
436
pctx->last_insert_id = last_insert_id;
449
- if (message) strncpy (pctx->message , message, sizeof (pctx->message ));
437
+ if (message) strncpy (pctx->message , message, sizeof (pctx->message ) - 1 );
438
+ pctx->message [sizeof (pctx->message ) - 1 ] = ' \0 ' ;
450
439
451
440
DBUG_VOID_RETURN;
452
441
}
0 commit comments