Bug #75861 Truncated SQL_TEXT values are not suffixed with ...
Submitted: 11 Feb 2015 11:03 Modified: 28 Sep 2015 18:41
Reporter: Mark Leith Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Performance Schema Severity:S3 (Non-critical)
Version:5.6.22 OS:Any
Assigned to: Chris Powers CPU Architecture:Any

[11 Feb 2015 11:03] Mark Leith
Description:
When a statement digest gets truncated, it has "..." suffixed to the end of the statement, so that it's easy to test whether the statement has been truncated or not to the max size limit (currently 1024).

However, this is not done for the raw statements that are exposed within events_statements_[current | history | history_long].

As an example:

select digest_text, sql_text 
  from events_statements_history_long 
 where digest in (select digest 
                    from events_statements_summary_by_digest 
                   where right(digest_text, 3) = '...')\G

*************************** 1. row ***************************
digest_text: SELECT `mysqlserve0_` . `hid` AS `hid1174_0_` , `environmen1_` . `hid` AS `hid1182_1_` , `networking2_` . `hid` AS `hid1226_2_` , `metadata3_` . `hid` AS `hid1166_3_` , `mysqlserve0_` . `id` AS `id2_1174_0_` , `mysqls
erve0_` . `lastContact` AS `lastCont3_1174_0_` , `mysqlserve0_` . `hasLastContact` AS `hasLastC4_1174_0_` , `mysqlserve0_` . `serverUuid` AS `serverUuid5_1174_0_` , `mysqlserve0_` . `hasServerUuid` AS `hasServe6_1174_0_` , `mysqls
erve0_` . `startTime` AS `startTime7_1174_0_` , `mysqlserve0_` . `hasStartTime` AS `hasStart8_1174_0_` , `mysqlserve0_` . `timestamp` AS `timestamp9_1174_0_` , `mysqlserve0_` . `backup` AS `backup10_1174_0_` , `mysqlserve0_` . `ha
sBackup` AS `hasBackup11_1174_0_` , `mysqlserve0_` . `capabilities` AS `capabil12_1174_0_` , `mysqlserve0_` . `hasCapabilities` AS `hasCapa13_1174_0_` , `mysqlserve0_` . `characterSet` AS `charact14_1174_0_` , `mysqlserve0_` . `ha
sCharacterSet` AS `hasChar15_1174_0_` , `mysqlserve0_` . `collation` AS ...

   sql_text: /* mem dbpool.ui */ select mysqlserve0_.hid as hid1174_0_, environmen1_.hid as hid1182_1_, networking2_.hid as hid1226_2_, metadata3_.hid as hid1166_3_, mysqlserve0_.`id` as id2_1174_0_, mysqlserve0_.`lastContact` as
lastCont3_1174_0_, mysqlserve0_.`hasLastContact` as hasLastC4_1174_0_, mysqlserve0_.`serverUuid` as serverUuid5_1174_0_, mysqlserve0_.`hasServerUuid` as hasServe6_1174_0_, mysqlserve0_.`startTime` as startTime7_1174_0_, mysqlserve
0_.`hasStartTime` as hasStart8_1174_0_, mysqlserve0_.`timestamp` as timestamp9_1174_0_, mysqlserve0_.`backup` as backup10_1174_0_, mysqlserve0_.`hasBackup` as hasBackup11_1174_0_, mysqlserve0_.`capabilities` as capabil12_1174_0_,
mysqlserve0_.`hasCapabilities` as hasCapa13_1174_0_, mysqlserve0_.`characterSet` as charact14_1174_0_, mysqlserve0_.`hasCharacterSet` as hasChar15_1174_0_, mysqlserve0_.`collation` as collation16_1174_0_, mysqlserve0_.`hasCollatio
n` as hasColl17_1174_0_, mysqlserve0_.`connection` as connection18_1174_0_, mysqlserve0_.`hasConnection` as hasConn19

How to repeat:
update performance_schema.setup_consumers set enabled = 'yes' where name = 'events_statements_history_long';

select 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' AS a, 'b' AS b;

select sql_text from events_statements_history_long where sql_text like '%aaaaa%'

Suggested fix:
Add "..." to the end of any raw sql_text value that gets truncated by the truncation limit.
[28 Sep 2015 18:41] Paul DuBois
Noted in 5.6.28, 5.7.9, 5.8.0 changelogs.

Performance Schema digests in DIGEST_TEXT columns have ... appended
to the end to indicate when statements exceed the maximum statement
size and were truncated. This is also now done for statement text
values in SQL_TEXT columns.