Skip to content

Commit 084f20f

Browse files
author
Arun Kuruvila
committed
Bug#28534414: NEGATIVE NUMBERS IN PLUGIN VARIABLES NOT
DISPLAYED CORRECTLY. Description:- Negative numbers for plugin system variables are not displayed correctly. Fix:- Support for printing negative values for signed plugin variables is added.
1 parent e1b9686 commit 084f20f

16 files changed

+724
-66
lines changed

include/mysql/plugin_audit.h.pp

+3-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
SHOW_LONG_NOFLUSH,
3232
SHOW_LONGLONG_STATUS,
3333
SHOW_LEX_STRING,
34-
SHOW_SIGNED_LONG
34+
SHOW_SIGNED_INT,
35+
SHOW_SIGNED_LONG,
36+
SHOW_SIGNED_LONGLONG
3537
};
3638
enum enum_mysql_show_scope {
3739
SHOW_SCOPE_UNDEF,

include/mysql/plugin_auth.h.pp

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
SHOW_LONG_NOFLUSH,
2323
SHOW_LONGLONG_STATUS,
2424
SHOW_LEX_STRING,
25-
SHOW_SIGNED_LONG
25+
SHOW_SIGNED_INT,
26+
SHOW_SIGNED_LONG,
27+
SHOW_SIGNED_LONGLONG
2628
};
2729
enum enum_mysql_show_scope {
2830
SHOW_SCOPE_UNDEF,

include/mysql/plugin_ftparser.h.pp

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
SHOW_LONG_NOFLUSH,
2323
SHOW_LONGLONG_STATUS,
2424
SHOW_LEX_STRING,
25-
SHOW_SIGNED_LONG
25+
SHOW_SIGNED_INT,
26+
SHOW_SIGNED_LONG,
27+
SHOW_SIGNED_LONGLONG
2628
};
2729
enum enum_mysql_show_scope {
2830
SHOW_SCOPE_UNDEF,

include/mysql/plugin_keyring.h.pp

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
SHOW_LONG_NOFLUSH,
2323
SHOW_LONGLONG_STATUS,
2424
SHOW_LEX_STRING,
25-
SHOW_SIGNED_LONG
25+
SHOW_SIGNED_INT,
26+
SHOW_SIGNED_LONG,
27+
SHOW_SIGNED_LONGLONG
2628
};
2729
enum enum_mysql_show_scope {
2830
SHOW_SCOPE_UNDEF,

include/mysql/status_var.h

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
1+
/* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
22
33
This program is free software; you can redistribute it and/or modify
44
it under the terms of the GNU General Public License, version 2.0,
@@ -52,7 +52,12 @@ enum enum_mysql_show_type {
5252
SHOW_LONG_NOFLUSH,
5353
SHOW_LONGLONG_STATUS,
5454
SHOW_LEX_STRING,
55-
SHOW_SIGNED_LONG
55+
/*
56+
Support for signed values are extended for plugins.
57+
*/
58+
SHOW_SIGNED_INT,
59+
SHOW_SIGNED_LONG,
60+
SHOW_SIGNED_LONGLONG
5661
};
5762

5863
/**

mysql-test/r/plugin.result

+236-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ set global example_ulong_var=500;
4242
set global example_enum_var= e1;
4343
select * from performance_schema.global_status where variable_name like 'example%' order by variable_name;
4444
VARIABLE_NAME VARIABLE_VALUE
45-
example_func_example enum_var is 0, ulong_var is 500, double_var is 8.500000
45+
example_func_example enum_var is 0, ulong_var is 500, double_var is 8.500000, signed_int_var is -10, signed_long_var is -10, signed_longlong_var is -10
4646
example_status_array_var1 100
4747
example_status_array_var2 20.010000
4848
example_status_var3 three hundred
@@ -56,6 +56,12 @@ example_double_thdvar 8.500000
5656
example_double_var 8.500000
5757
example_enum_var e1
5858
example_last_create_thdvar Last creation 't1'
59+
example_signed_int_thdvar -10
60+
example_signed_int_var -10
61+
example_signed_long_thdvar -10
62+
example_signed_long_var -10
63+
example_signed_longlong_thdvar -10
64+
example_signed_longlong_var -10
5965
example_ulong_var 500
6066
UNINSTALL PLUGIN example;
6167
UNINSTALL PLUGIN EXAMPLE;
@@ -302,3 +308,232 @@ UNINSTALL PLUGIN example;
302308
DROP USER bug51770@localhost;
303309
INSTALL PLUGIN example SONAME '../ha_example.so';
304310
ERROR HY000: No paths allowed for shared library
311+
#
312+
# Bug #28534414: NEGATIVE NUMBERS IN PLUGIN VARIABLES
313+
# NOT DISPLAYED CORRECTLY
314+
#
315+
INSTALL PLUGIN example SONAME 'ha_example.so';
316+
SELECT * FROM performance_schema.global_status WHERE variable_name LIKE 'example_func_example' ORDER BY variable_name;
317+
VARIABLE_NAME VARIABLE_VALUE
318+
example_func_example enum_var is 0, ulong_var is 8, double_var is 8.500000, signed_int_var is -10, signed_long_var is -10, signed_longlong_var is -10
319+
SHOW VARIABLES LIKE 'example_signed_int_var';
320+
Variable_name Value
321+
example_signed_int_var -10
322+
SELECT @@GLOBAL.example_signed_int_var;
323+
@@GLOBAL.example_signed_int_var
324+
-10
325+
SET GLOBAL example_signed_int_var = -2147483648;
326+
SELECT @@GLOBAL.example_signed_int_var;
327+
@@GLOBAL.example_signed_int_var
328+
-2147483648
329+
SET GLOBAL example_signed_int_var = -100;
330+
SELECT @@GLOBAL.example_signed_int_var;
331+
@@GLOBAL.example_signed_int_var
332+
-100
333+
SET GLOBAL example_signed_int_var = 0;
334+
SELECT @@GLOBAL.example_signed_int_var;
335+
@@GLOBAL.example_signed_int_var
336+
0
337+
SET GLOBAL example_signed_int_var = 100;
338+
SELECT @@GLOBAL.example_signed_int_var;
339+
@@GLOBAL.example_signed_int_var
340+
100
341+
SET GLOBAL example_signed_int_var = 2147483647;
342+
SELECT @@GLOBAL.example_signed_int_var;
343+
@@GLOBAL.example_signed_int_var
344+
2147483647
345+
SET GLOBAL example_signed_int_var = -2147483649;
346+
Warnings:
347+
Warning 1292 Truncated incorrect example_signed_int_var value: '-2147483649'
348+
SELECT @@GLOBAL.example_signed_int_var;
349+
@@GLOBAL.example_signed_int_var
350+
-2147483648
351+
SET GLOBAL example_signed_int_var = 2147483648;
352+
Warnings:
353+
Warning 1292 Truncated incorrect example_signed_int_var value: '2147483648'
354+
SELECT @@GLOBAL.example_signed_int_var;
355+
@@GLOBAL.example_signed_int_var
356+
2147483647
357+
SHOW SESSION VARIABLES LIKE 'example_signed_int_thdvar';
358+
Variable_name Value
359+
example_signed_int_thdvar -10
360+
SELECT @@SESSION.example_signed_int_thdvar;
361+
@@SESSION.example_signed_int_thdvar
362+
-10
363+
SET SESSION example_signed_int_thdvar = -2147483648;
364+
SELECT @@SESSION.example_signed_int_thdvar;
365+
@@SESSION.example_signed_int_thdvar
366+
-2147483648
367+
SET SESSION example_signed_int_thdvar = -100;
368+
SELECT @@SESSION.example_signed_int_thdvar;
369+
@@SESSION.example_signed_int_thdvar
370+
-100
371+
SET SESSION example_signed_int_thdvar = 0;
372+
SELECT @@SESSION.example_signed_int_thdvar;
373+
@@SESSION.example_signed_int_thdvar
374+
0
375+
SET SESSION example_signed_int_thdvar = 100;
376+
SELECT @@SESSION.example_signed_int_thdvar;
377+
@@SESSION.example_signed_int_thdvar
378+
100
379+
SET SESSION example_signed_int_thdvar = 2147483647;
380+
SELECT @@SESSION.example_signed_int_thdvar;
381+
@@SESSION.example_signed_int_thdvar
382+
2147483647
383+
SET SESSION example_signed_int_thdvar = -2147483649;
384+
Warnings:
385+
Warning 1292 Truncated incorrect example_signed_int_thdvar value: '-2147483649'
386+
SELECT @@SESSION.example_signed_int_thdvar;
387+
@@SESSION.example_signed_int_thdvar
388+
-2147483648
389+
SET SESSION example_signed_int_thdvar = 2147483648;
390+
Warnings:
391+
Warning 1292 Truncated incorrect example_signed_int_thdvar value: '2147483648'
392+
SELECT @@SESSION.example_signed_int_thdvar;
393+
@@SESSION.example_signed_int_thdvar
394+
2147483647
395+
SHOW VARIABLES LIKE 'example_signed_long_var';
396+
Variable_name Value
397+
example_signed_long_var -10
398+
SELECT @@GLOBAL.example_signed_long_var;
399+
@@GLOBAL.example_signed_long_var
400+
-10
401+
SET GLOBAL example_signed_long_var = -9223372036854775808;
402+
SELECT @@GLOBAL.example_signed_long_var IN (-2147483648, -9223372036854775808);
403+
@@GLOBAL.example_signed_long_var IN (-2147483648, -9223372036854775808)
404+
1
405+
SET GLOBAL example_signed_long_var = -100;
406+
SELECT @@GLOBAL.example_signed_long_var;
407+
@@GLOBAL.example_signed_long_var
408+
-100
409+
SET GLOBAL example_signed_long_var = 0;
410+
SELECT @@GLOBAL.example_signed_long_var;
411+
@@GLOBAL.example_signed_long_var
412+
0
413+
SET GLOBAL example_signed_long_var = 100;
414+
SELECT @@GLOBAL.example_signed_long_var;
415+
@@GLOBAL.example_signed_long_var
416+
100
417+
SET GLOBAL example_signed_long_var = 9223372036854775807;
418+
SELECT @@GLOBAL.example_signed_long_var IN (2147483647, 9223372036854775807);
419+
@@GLOBAL.example_signed_long_var IN (2147483647, 9223372036854775807)
420+
1
421+
SET GLOBAL example_signed_long_var = -9223372036854775809;
422+
ERROR 42000: Incorrect argument type to variable 'example_signed_long_var'
423+
SELECT @@GLOBAL.example_signed_long_var IN (2147483647, 9223372036854775807);
424+
@@GLOBAL.example_signed_long_var IN (2147483647, 9223372036854775807)
425+
1
426+
SET GLOBAL example_signed_long_var = 9223372036854775808;
427+
SELECT @@GLOBAL.example_signed_long_var IN (2147483647, 9223372036854775807);
428+
@@GLOBAL.example_signed_long_var IN (2147483647, 9223372036854775807)
429+
1
430+
SHOW SESSION VARIABLES LIKE 'example_signed_long_thdvar';
431+
Variable_name Value
432+
example_signed_long_thdvar -10
433+
SELECT @@SESSION.example_signed_long_thdvar;
434+
@@SESSION.example_signed_long_thdvar
435+
-10
436+
SET SESSION example_signed_long_thdvar = -9223372036854775808;
437+
SELECT @@SESSION.example_signed_long_thdvar IN (-2147483648, -9223372036854775808);
438+
@@SESSION.example_signed_long_thdvar IN (-2147483648, -9223372036854775808)
439+
1
440+
SET SESSION example_signed_long_thdvar = -100;
441+
SELECT @@SESSION.example_signed_long_thdvar;
442+
@@SESSION.example_signed_long_thdvar
443+
-100
444+
SET SESSION example_signed_long_thdvar = 0;
445+
SELECT @@SESSION.example_signed_long_thdvar;
446+
@@SESSION.example_signed_long_thdvar
447+
0
448+
SET SESSION example_signed_long_thdvar = 100;
449+
SELECT @@SESSION.example_signed_long_thdvar;
450+
@@SESSION.example_signed_long_thdvar
451+
100
452+
SET SESSION example_signed_long_thdvar = 9223372036854775807;
453+
SELECT @@SESSION.example_signed_long_thdvar IN (2147483647, 9223372036854775807);
454+
@@SESSION.example_signed_long_thdvar IN (2147483647, 9223372036854775807)
455+
1
456+
SET SESSION example_signed_long_thdvar = -9223372036854775809;
457+
ERROR 42000: Incorrect argument type to variable 'example_signed_long_thdvar'
458+
SELECT @@SESSION.example_signed_long_thdvar IN (2147483647, 9223372036854775807);
459+
@@SESSION.example_signed_long_thdvar IN (2147483647, 9223372036854775807)
460+
1
461+
SET SESSION example_signed_long_thdvar = 9223372036854775808;
462+
SELECT @@SESSION.example_signed_long_thdvar IN (2147483647, 9223372036854775807);
463+
@@SESSION.example_signed_long_thdvar IN (2147483647, 9223372036854775807)
464+
1
465+
SHOW VARIABLES LIKE 'example_signed_longlong_var';
466+
Variable_name Value
467+
example_signed_longlong_var -10
468+
SELECT @@GLOBAL.example_signed_longlong_var;
469+
@@GLOBAL.example_signed_longlong_var
470+
-10
471+
SET GLOBAL example_signed_longlong_var = -9223372036854775808;
472+
SELECT @@GLOBAL.example_signed_longlong_var;
473+
@@GLOBAL.example_signed_longlong_var
474+
-9223372036854775808
475+
SET GLOBAL example_signed_longlong_var = -100;
476+
SELECT @@GLOBAL.example_signed_longlong_var;
477+
@@GLOBAL.example_signed_longlong_var
478+
-100
479+
SET GLOBAL example_signed_longlong_var = 0;
480+
SELECT @@GLOBAL.example_signed_longlong_var;
481+
@@GLOBAL.example_signed_longlong_var
482+
0
483+
SET GLOBAL example_signed_longlong_var = 100;
484+
SELECT @@GLOBAL.example_signed_longlong_var;
485+
@@GLOBAL.example_signed_longlong_var
486+
100
487+
SET GLOBAL example_signed_longlong_var = 9223372036854775807;
488+
SELECT @@GLOBAL.example_signed_longlong_var;
489+
@@GLOBAL.example_signed_longlong_var
490+
9223372036854775807
491+
SET GLOBAL example_signed_longlong_var = -9223372036854775809;
492+
ERROR 42000: Incorrect argument type to variable 'example_signed_longlong_var'
493+
SELECT @@GLOBAL.example_signed_longlong_var;
494+
@@GLOBAL.example_signed_longlong_var
495+
9223372036854775807
496+
SET GLOBAL example_signed_longlong_var = 9223372036854775808;
497+
Warnings:
498+
Warning 1292 Truncated incorrect example_signed_longlong_var value: '9223372036854775808'
499+
SELECT @@GLOBAL.example_signed_longlong_var;
500+
@@GLOBAL.example_signed_longlong_var
501+
9223372036854775807
502+
SHOW SESSION VARIABLES LIKE 'example_signed_longlong_thdvar';
503+
Variable_name Value
504+
example_signed_longlong_thdvar -10
505+
SELECT @@SESSION.example_signed_longlong_thdvar;
506+
@@SESSION.example_signed_longlong_thdvar
507+
-10
508+
SET SESSION example_signed_longlong_thdvar = -9223372036854775808;
509+
SELECT @@SESSION.example_signed_longlong_thdvar;
510+
@@SESSION.example_signed_longlong_thdvar
511+
-9223372036854775808
512+
SET SESSION example_signed_longlong_thdvar = -100;
513+
SELECT @@SESSION.example_signed_longlong_thdvar;
514+
@@SESSION.example_signed_longlong_thdvar
515+
-100
516+
SET SESSION example_signed_longlong_thdvar = 0;
517+
SELECT @@SESSION.example_signed_longlong_thdvar;
518+
@@SESSION.example_signed_longlong_thdvar
519+
0
520+
SET SESSION example_signed_longlong_thdvar = 100;
521+
SELECT @@SESSION.example_signed_longlong_thdvar;
522+
@@SESSION.example_signed_longlong_thdvar
523+
100
524+
SET SESSION example_signed_longlong_thdvar = 9223372036854775807;
525+
SELECT @@SESSION.example_signed_longlong_thdvar;
526+
@@SESSION.example_signed_longlong_thdvar
527+
9223372036854775807
528+
SET SESSION example_signed_longlong_thdvar = -9223372036854775809;
529+
ERROR 42000: Incorrect argument type to variable 'example_signed_longlong_thdvar'
530+
SELECT @@SESSION.example_signed_longlong_thdvar;
531+
@@SESSION.example_signed_longlong_thdvar
532+
9223372036854775807
533+
SET SESSION example_signed_longlong_thdvar = 9223372036854775808;
534+
Warnings:
535+
Warning 1292 Truncated incorrect example_signed_longlong_thdvar value: '9223372036854775808'
536+
SELECT @@SESSION.example_signed_longlong_thdvar;
537+
@@SESSION.example_signed_longlong_thdvar
538+
9223372036854775807
539+
UNINSTALL PLUGIN example;

0 commit comments

Comments
 (0)