List:Commits« Previous MessageNext Message »
From:Mayank Prasad Date:January 9 2012 7:26am
Subject:bzr push into mysql-trunk-wl5767 branch (mayank.prasad:3413 to 3414) WL#5767
View as plain text  
 3414 Mayank Prasad	2012-01-09
      WL#5767 : Performance Schema, Statement Digest.
      
      Details:
       - Addressed first round of review comments from Marc.

    removed:
      mysql-test/suite/perfschema/r/pfs_upgrade_lc0.result.THIS
      mysql-test/suite/perfschema/r/schema_lc0.result.THIS
      storage/perfschema/p_lex.cc
      storage/perfschema/p_lex.h
      storage/perfschema/script.perl
    modified:
      mysql-test/suite/perfschema/r/statements_digest.result
      storage/perfschema/pfs_digest.cc
      storage/perfschema/pfs_digest.h
 3413 Mayank Prasad	2012-01-04
      WL#5767 : Statements Digest, Performance Schema
      
      Details:
       - Added code to avoid Identifier to be considered
         in reducing tokens for normalisation.

    modified:
      storage/perfschema/gen_pfs_lex_token.cc
      storage/perfschema/pfs_digest.cc
      storage/perfschema/pfs_digest.h
=== removed file 'mysql-test/suite/perfschema/r/pfs_upgrade_lc0.result.THIS'
--- a/mysql-test/suite/perfschema/r/pfs_upgrade_lc0.result.THIS	2011-06-07 12:08:35 +0000
+++ b/mysql-test/suite/perfschema/r/pfs_upgrade_lc0.result.THIS	1970-01-01 00:00:00 +0000
@@ -1,233 +0,0 @@
-drop table if exists test.user_table;
-drop procedure if exists test.user_proc;
-drop function if exists test.user_func;
-drop event if exists test.user_event;
-"Testing mysql_upgrade with TABLE performance_schema.user_table"
-create table test.user_table(a int);
-use performance_schema;
-show tables like "user_table";
-Tables_in_performance_schema (user_table)
-user_table
-ERROR 1050 (42S01) at line 70: Table 'cond_instances' already exists
-ERROR 1050 (42S01) at line 94: Table 'events_waits_current' already exists
-ERROR 1050 (42S01) at line 118: Table 'events_waits_history' already exists
-ERROR 1050 (42S01) at line 142: Table 'events_waits_history_long' already exists
-ERROR 1050 (42S01) at line 155: Table 'events_waits_summary_by_instance' already exists
-ERROR 1050 (42S01) at line 168: Table 'events_waits_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 180: Table 'events_waits_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 189: Table 'file_instances' already exists
-ERROR 1050 (42S01) at line 200: Table 'file_summary_by_event_name' already exists
-ERROR 1050 (42S01) at line 212: Table 'file_summary_by_instance' already exists
-ERROR 1050 (42S01) at line 221: Table 'mutex_instances' already exists
-ERROR 1050 (42S01) at line 235: Table 'objects_summary_global_by_type' already exists
-ERROR 1050 (42S01) at line 245: Table 'performance_timers' already exists
-ERROR 1050 (42S01) at line 255: Table 'rwlock_instances' already exists
-ERROR 1050 (42S01) at line 264: Table 'setup_actors' already exists
-ERROR 1050 (42S01) at line 272: Table 'setup_consumers' already exists
-ERROR 1050 (42S01) at line 281: Table 'setup_instruments' already exists
-ERROR 1050 (42S01) at line 291: Table 'setup_objects' already exists
-ERROR 1050 (42S01) at line 299: Table 'setup_timers' already exists
-ERROR 1050 (42S01) at line 344: Table 'table_io_waits_summary_by_index_usage' already exists
-ERROR 1050 (42S01) at line 388: Table 'table_io_waits_summary_by_table' already exists
-ERROR 1050 (42S01) at line 467: Table 'table_lock_waits_summary_by_table' already exists
-ERROR 1050 (42S01) at line 487: Table 'threads' already exists
-ERROR 1050 (42S01) at line 502: Table 'events_stages_current' already exists
-ERROR 1050 (42S01) at line 517: Table 'events_stages_history' already exists
-ERROR 1050 (42S01) at line 532: Table 'events_stages_history_long' already exists
-ERROR 1050 (42S01) at line 545: Table 'events_stages_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 557: Table 'events_stages_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 602: Table 'events_statements_current' already exists
-ERROR 1050 (42S01) at line 647: Table 'events_statements_history' already exists
-ERROR 1050 (42S01) at line 692: Table 'events_statements_history_long' already exists
-ERROR 1050 (42S01) at line 724: Table 'events_statements_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 755: Table 'events_statements_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 787: Table 'events_statements_summary_by_digest' already exists
-ERROR 1644 (HY000) at line 1207: Unexpected content found in the performance_schema database.
-FATAL ERROR: Upgrade failed
-show tables like "user_table";
-Tables_in_performance_schema (user_table)
-user_table
-use test;
-drop table test.user_table;
-"Testing mysql_upgrade with VIEW performance_schema.user_view"
-create view test.user_view as select "Not supposed to be here";
-use performance_schema;
-show tables like "user_view";
-Tables_in_performance_schema (user_view)
-user_view
-ERROR 1050 (42S01) at line 70: Table 'cond_instances' already exists
-ERROR 1050 (42S01) at line 94: Table 'events_waits_current' already exists
-ERROR 1050 (42S01) at line 118: Table 'events_waits_history' already exists
-ERROR 1050 (42S01) at line 142: Table 'events_waits_history_long' already exists
-ERROR 1050 (42S01) at line 155: Table 'events_waits_summary_by_instance' already exists
-ERROR 1050 (42S01) at line 168: Table 'events_waits_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 180: Table 'events_waits_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 189: Table 'file_instances' already exists
-ERROR 1050 (42S01) at line 200: Table 'file_summary_by_event_name' already exists
-ERROR 1050 (42S01) at line 212: Table 'file_summary_by_instance' already exists
-ERROR 1050 (42S01) at line 221: Table 'mutex_instances' already exists
-ERROR 1050 (42S01) at line 235: Table 'objects_summary_global_by_type' already exists
-ERROR 1050 (42S01) at line 245: Table 'performance_timers' already exists
-ERROR 1050 (42S01) at line 255: Table 'rwlock_instances' already exists
-ERROR 1050 (42S01) at line 264: Table 'setup_actors' already exists
-ERROR 1050 (42S01) at line 272: Table 'setup_consumers' already exists
-ERROR 1050 (42S01) at line 281: Table 'setup_instruments' already exists
-ERROR 1050 (42S01) at line 291: Table 'setup_objects' already exists
-ERROR 1050 (42S01) at line 299: Table 'setup_timers' already exists
-ERROR 1050 (42S01) at line 344: Table 'table_io_waits_summary_by_index_usage' already exists
-ERROR 1050 (42S01) at line 388: Table 'table_io_waits_summary_by_table' already exists
-ERROR 1050 (42S01) at line 467: Table 'table_lock_waits_summary_by_table' already exists
-ERROR 1050 (42S01) at line 487: Table 'threads' already exists
-ERROR 1050 (42S01) at line 502: Table 'events_stages_current' already exists
-ERROR 1050 (42S01) at line 517: Table 'events_stages_history' already exists
-ERROR 1050 (42S01) at line 532: Table 'events_stages_history_long' already exists
-ERROR 1050 (42S01) at line 545: Table 'events_stages_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 557: Table 'events_stages_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 602: Table 'events_statements_current' already exists
-ERROR 1050 (42S01) at line 647: Table 'events_statements_history' already exists
-ERROR 1050 (42S01) at line 692: Table 'events_statements_history_long' already exists
-ERROR 1050 (42S01) at line 724: Table 'events_statements_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 755: Table 'events_statements_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 787: Table 'events_statements_summary_by_digest' already exists
-ERROR 1644 (HY000) at line 1207: Unexpected content found in the performance_schema database.
-FATAL ERROR: Upgrade failed
-show tables like "user_view";
-Tables_in_performance_schema (user_view)
-user_view
-use test;
-drop view test.user_view;
-"Testing mysql_upgrade with PROCEDURE performance_schema.user_proc"
-create procedure test.user_proc()
-select "Not supposed to be here";
-update mysql.proc set db='performance_schema' where name='user_proc';
-ERROR 1050 (42S01) at line 70: Table 'cond_instances' already exists
-ERROR 1050 (42S01) at line 94: Table 'events_waits_current' already exists
-ERROR 1050 (42S01) at line 118: Table 'events_waits_history' already exists
-ERROR 1050 (42S01) at line 142: Table 'events_waits_history_long' already exists
-ERROR 1050 (42S01) at line 155: Table 'events_waits_summary_by_instance' already exists
-ERROR 1050 (42S01) at line 168: Table 'events_waits_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 180: Table 'events_waits_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 189: Table 'file_instances' already exists
-ERROR 1050 (42S01) at line 200: Table 'file_summary_by_event_name' already exists
-ERROR 1050 (42S01) at line 212: Table 'file_summary_by_instance' already exists
-ERROR 1050 (42S01) at line 221: Table 'mutex_instances' already exists
-ERROR 1050 (42S01) at line 235: Table 'objects_summary_global_by_type' already exists
-ERROR 1050 (42S01) at line 245: Table 'performance_timers' already exists
-ERROR 1050 (42S01) at line 255: Table 'rwlock_instances' already exists
-ERROR 1050 (42S01) at line 264: Table 'setup_actors' already exists
-ERROR 1050 (42S01) at line 272: Table 'setup_consumers' already exists
-ERROR 1050 (42S01) at line 281: Table 'setup_instruments' already exists
-ERROR 1050 (42S01) at line 291: Table 'setup_objects' already exists
-ERROR 1050 (42S01) at line 299: Table 'setup_timers' already exists
-ERROR 1050 (42S01) at line 344: Table 'table_io_waits_summary_by_index_usage' already exists
-ERROR 1050 (42S01) at line 388: Table 'table_io_waits_summary_by_table' already exists
-ERROR 1050 (42S01) at line 467: Table 'table_lock_waits_summary_by_table' already exists
-ERROR 1050 (42S01) at line 487: Table 'threads' already exists
-ERROR 1050 (42S01) at line 502: Table 'events_stages_current' already exists
-ERROR 1050 (42S01) at line 517: Table 'events_stages_history' already exists
-ERROR 1050 (42S01) at line 532: Table 'events_stages_history_long' already exists
-ERROR 1050 (42S01) at line 545: Table 'events_stages_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 557: Table 'events_stages_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 602: Table 'events_statements_current' already exists
-ERROR 1050 (42S01) at line 647: Table 'events_statements_history' already exists
-ERROR 1050 (42S01) at line 692: Table 'events_statements_history_long' already exists
-ERROR 1050 (42S01) at line 724: Table 'events_statements_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 755: Table 'events_statements_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 787: Table 'events_statements_summary_by_digest' already exists
-ERROR 1644 (HY000) at line 1207: Unexpected content found in the performance_schema database.
-FATAL ERROR: Upgrade failed
-select name from mysql.proc where db='performance_schema';
-name
-user_proc
-update mysql.proc set db='test' where name='user_proc';
-drop procedure test.user_proc;
-"Testing mysql_upgrade with FUNCTION performance_schema.user_func"
-create function test.user_func() returns integer
-return 0;
-update mysql.proc set db='performance_schema' where name='user_func';
-ERROR 1050 (42S01) at line 70: Table 'cond_instances' already exists
-ERROR 1050 (42S01) at line 94: Table 'events_waits_current' already exists
-ERROR 1050 (42S01) at line 118: Table 'events_waits_history' already exists
-ERROR 1050 (42S01) at line 142: Table 'events_waits_history_long' already exists
-ERROR 1050 (42S01) at line 155: Table 'events_waits_summary_by_instance' already exists
-ERROR 1050 (42S01) at line 168: Table 'events_waits_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 180: Table 'events_waits_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 189: Table 'file_instances' already exists
-ERROR 1050 (42S01) at line 200: Table 'file_summary_by_event_name' already exists
-ERROR 1050 (42S01) at line 212: Table 'file_summary_by_instance' already exists
-ERROR 1050 (42S01) at line 221: Table 'mutex_instances' already exists
-ERROR 1050 (42S01) at line 235: Table 'objects_summary_global_by_type' already exists
-ERROR 1050 (42S01) at line 245: Table 'performance_timers' already exists
-ERROR 1050 (42S01) at line 255: Table 'rwlock_instances' already exists
-ERROR 1050 (42S01) at line 264: Table 'setup_actors' already exists
-ERROR 1050 (42S01) at line 272: Table 'setup_consumers' already exists
-ERROR 1050 (42S01) at line 281: Table 'setup_instruments' already exists
-ERROR 1050 (42S01) at line 291: Table 'setup_objects' already exists
-ERROR 1050 (42S01) at line 299: Table 'setup_timers' already exists
-ERROR 1050 (42S01) at line 344: Table 'table_io_waits_summary_by_index_usage' already exists
-ERROR 1050 (42S01) at line 388: Table 'table_io_waits_summary_by_table' already exists
-ERROR 1050 (42S01) at line 467: Table 'table_lock_waits_summary_by_table' already exists
-ERROR 1050 (42S01) at line 487: Table 'threads' already exists
-ERROR 1050 (42S01) at line 502: Table 'events_stages_current' already exists
-ERROR 1050 (42S01) at line 517: Table 'events_stages_history' already exists
-ERROR 1050 (42S01) at line 532: Table 'events_stages_history_long' already exists
-ERROR 1050 (42S01) at line 545: Table 'events_stages_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 557: Table 'events_stages_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 602: Table 'events_statements_current' already exists
-ERROR 1050 (42S01) at line 647: Table 'events_statements_history' already exists
-ERROR 1050 (42S01) at line 692: Table 'events_statements_history_long' already exists
-ERROR 1050 (42S01) at line 724: Table 'events_statements_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 755: Table 'events_statements_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 787: Table 'events_statements_summary_by_digest' already exists
-ERROR 1644 (HY000) at line 1207: Unexpected content found in the performance_schema database.
-FATAL ERROR: Upgrade failed
-select name from mysql.proc where db='performance_schema';
-name
-user_func
-update mysql.proc set db='test' where name='user_func';
-drop function test.user_func;
-"Testing mysql_upgrade with EVENT performance_schema.user_event"
-create event test.user_event on schedule every 1 day do
-select "not supposed to be here";
-update mysql.event set db='performance_schema' where name='user_event';
-ERROR 1050 (42S01) at line 70: Table 'cond_instances' already exists
-ERROR 1050 (42S01) at line 94: Table 'events_waits_current' already exists
-ERROR 1050 (42S01) at line 118: Table 'events_waits_history' already exists
-ERROR 1050 (42S01) at line 142: Table 'events_waits_history_long' already exists
-ERROR 1050 (42S01) at line 155: Table 'events_waits_summary_by_instance' already exists
-ERROR 1050 (42S01) at line 168: Table 'events_waits_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 180: Table 'events_waits_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 189: Table 'file_instances' already exists
-ERROR 1050 (42S01) at line 200: Table 'file_summary_by_event_name' already exists
-ERROR 1050 (42S01) at line 212: Table 'file_summary_by_instance' already exists
-ERROR 1050 (42S01) at line 221: Table 'mutex_instances' already exists
-ERROR 1050 (42S01) at line 235: Table 'objects_summary_global_by_type' already exists
-ERROR 1050 (42S01) at line 245: Table 'performance_timers' already exists
-ERROR 1050 (42S01) at line 255: Table 'rwlock_instances' already exists
-ERROR 1050 (42S01) at line 264: Table 'setup_actors' already exists
-ERROR 1050 (42S01) at line 272: Table 'setup_consumers' already exists
-ERROR 1050 (42S01) at line 281: Table 'setup_instruments' already exists
-ERROR 1050 (42S01) at line 291: Table 'setup_objects' already exists
-ERROR 1050 (42S01) at line 299: Table 'setup_timers' already exists
-ERROR 1050 (42S01) at line 344: Table 'table_io_waits_summary_by_index_usage' already exists
-ERROR 1050 (42S01) at line 388: Table 'table_io_waits_summary_by_table' already exists
-ERROR 1050 (42S01) at line 467: Table 'table_lock_waits_summary_by_table' already exists
-ERROR 1050 (42S01) at line 487: Table 'threads' already exists
-ERROR 1050 (42S01) at line 502: Table 'events_stages_current' already exists
-ERROR 1050 (42S01) at line 517: Table 'events_stages_history' already exists
-ERROR 1050 (42S01) at line 532: Table 'events_stages_history_long' already exists
-ERROR 1050 (42S01) at line 545: Table 'events_stages_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 557: Table 'events_stages_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 602: Table 'events_statements_current' already exists
-ERROR 1050 (42S01) at line 647: Table 'events_statements_history' already exists
-ERROR 1050 (42S01) at line 692: Table 'events_statements_history_long' already exists
-ERROR 1050 (42S01) at line 724: Table 'events_statements_summary_by_thread_by_event_name' already exists
-ERROR 1050 (42S01) at line 755: Table 'events_statements_summary_global_by_event_name' already exists
-ERROR 1050 (42S01) at line 787: Table 'events_statements_summary_by_digest' already exists
-ERROR 1644 (HY000) at line 1207: Unexpected content found in the performance_schema database.
-FATAL ERROR: Upgrade failed
-select name from mysql.event where db='performance_schema';
-name
-user_event
-update mysql.event set db='test' where name='user_event';
-drop event test.user_event;

=== removed file 'mysql-test/suite/perfschema/r/schema_lc0.result.THIS'
--- a/mysql-test/suite/perfschema/r/schema_lc0.result.THIS	2011-06-07 12:08:35 +0000
+++ b/mysql-test/suite/perfschema/r/schema_lc0.result.THIS	1970-01-01 00:00:00 +0000
@@ -1,670 +0,0 @@
-show databases like 'performance_schema';
-Database (performance_schema)
-performance_schema
-show create database performance_schema;
-Database	Create Database
-performance_schema	CREATE DATABASE `performance_schema` /*!40100 DEFAULT CHARACTER SET utf8 */
-use performance_schema;
-show tables;
-Tables_in_performance_schema
-cond_instances
-events_stages_current
-events_stages_history
-events_stages_history_long
-events_stages_summary_by_thread_by_event_name
-events_stages_summary_global_by_event_name
-events_statements_current
-events_statements_history
-events_statements_history_long
-events_statements_summary_by_digest
-events_statements_summary_by_thread_by_event_name
-events_statements_summary_global_by_event_name
-events_waits_current
-events_waits_history
-events_waits_history_long
-events_waits_summary_by_instance
-events_waits_summary_by_thread_by_event_name
-events_waits_summary_global_by_event_name
-file_instances
-file_summary_by_event_name
-file_summary_by_instance
-mutex_instances
-objects_summary_global_by_type
-performance_timers
-rwlock_instances
-setup_actors
-setup_consumers
-setup_instruments
-setup_objects
-setup_timers
-table_io_waits_summary_by_index_usage
-table_io_waits_summary_by_table
-table_lock_waits_summary_by_table
-threads
-show create table cond_instances;
-Table	Create Table
-cond_instances	CREATE TABLE `cond_instances` (
-  `NAME` varchar(128) NOT NULL,
-  `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_stages_current;
-Table	Create Table
-events_stages_current	CREATE TABLE `events_stages_current` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_ID` bigint(20) unsigned NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `SOURCE` varchar(64) DEFAULT NULL,
-  `TIMER_START` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_END` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_TYPE` enum('STATEMENT','STAGE','WAIT') DEFAULT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_stages_history;
-Table	Create Table
-events_stages_history	CREATE TABLE `events_stages_history` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_ID` bigint(20) unsigned NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `SOURCE` varchar(64) DEFAULT NULL,
-  `TIMER_START` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_END` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_TYPE` enum('STATEMENT','STAGE','WAIT') DEFAULT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_stages_history_long;
-Table	Create Table
-events_stages_history_long	CREATE TABLE `events_stages_history_long` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_ID` bigint(20) unsigned NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `SOURCE` varchar(64) DEFAULT NULL,
-  `TIMER_START` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_END` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_TYPE` enum('STATEMENT','STAGE','WAIT') DEFAULT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_stages_summary_by_thread_by_event_name;
-Table	Create Table
-events_stages_summary_by_thread_by_event_name	CREATE TABLE `events_stages_summary_by_thread_by_event_name` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `COUNT_STAR` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_stages_summary_global_by_event_name;
-Table	Create Table
-events_stages_summary_global_by_event_name	CREATE TABLE `events_stages_summary_global_by_event_name` (
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `COUNT_STAR` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_statements_current;
-Table	Create Table
-events_statements_current	CREATE TABLE `events_statements_current` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_ID` bigint(20) unsigned NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `SOURCE` varchar(64) DEFAULT NULL,
-  `TIMER_START` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_END` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
-  `LOCK_TIME` bigint(20) unsigned NOT NULL,
-  `SQL_TEXT` longtext,
-  `DIGEST` varchar(64) DEFAULT NULL,
-  `DIGEST_TEXT` longtext,
-  `CURRENT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_TYPE` varchar(64) DEFAULT NULL,
-  `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_NAME` varchar(64) DEFAULT NULL,
-  `OBJECT_INSTANCE_BEGIN` bigint(20) DEFAULT NULL,
-  `MYSQL_ERRNO` int(11) DEFAULT NULL,
-  `RETURNED_SQLSTATE` varchar(5) DEFAULT NULL,
-  `MESSAGE_TEXT` varchar(128) DEFAULT NULL,
-  `ERRORS` bigint(20) unsigned NOT NULL,
-  `WARNINGS` bigint(20) unsigned NOT NULL,
-  `ROWS_AFFECTED` bigint(20) unsigned NOT NULL,
-  `ROWS_SENT` bigint(20) unsigned NOT NULL,
-  `ROWS_EXAMINED` bigint(20) unsigned NOT NULL,
-  `CREATED_TMP_DISK_TABLES` bigint(20) unsigned NOT NULL,
-  `CREATED_TMP_TABLES` bigint(20) unsigned NOT NULL,
-  `SELECT_FULL_JOIN` bigint(20) unsigned NOT NULL,
-  `SELECT_FULL_RANGE_JOIN` bigint(20) unsigned NOT NULL,
-  `SELECT_RANGE` bigint(20) unsigned NOT NULL,
-  `SELECT_RANGE_CHECK` bigint(20) unsigned NOT NULL,
-  `SELECT_SCAN` bigint(20) unsigned NOT NULL,
-  `SORT_MERGE_PASSES` bigint(20) unsigned NOT NULL,
-  `SORT_RANGE` bigint(20) unsigned NOT NULL,
-  `SORT_ROWS` bigint(20) unsigned NOT NULL,
-  `SORT_SCAN` bigint(20) unsigned NOT NULL,
-  `NO_INDEX_USED` bigint(20) unsigned NOT NULL,
-  `NO_GOOD_INDEX_USED` bigint(20) unsigned NOT NULL,
-  `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_TYPE` enum('STATEMENT','STAGE','WAIT') DEFAULT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_statements_history;
-Table	Create Table
-events_statements_history	CREATE TABLE `events_statements_history` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_ID` bigint(20) unsigned NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `SOURCE` varchar(64) DEFAULT NULL,
-  `TIMER_START` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_END` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
-  `LOCK_TIME` bigint(20) unsigned NOT NULL,
-  `SQL_TEXT` longtext,
-  `DIGEST` varchar(64) DEFAULT NULL,
-  `DIGEST_TEXT` longtext,
-  `CURRENT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_TYPE` varchar(64) DEFAULT NULL,
-  `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_NAME` varchar(64) DEFAULT NULL,
-  `OBJECT_INSTANCE_BEGIN` bigint(20) DEFAULT NULL,
-  `MYSQL_ERRNO` int(11) DEFAULT NULL,
-  `RETURNED_SQLSTATE` varchar(5) DEFAULT NULL,
-  `MESSAGE_TEXT` varchar(128) DEFAULT NULL,
-  `ERRORS` bigint(20) unsigned NOT NULL,
-  `WARNINGS` bigint(20) unsigned NOT NULL,
-  `ROWS_AFFECTED` bigint(20) unsigned NOT NULL,
-  `ROWS_SENT` bigint(20) unsigned NOT NULL,
-  `ROWS_EXAMINED` bigint(20) unsigned NOT NULL,
-  `CREATED_TMP_DISK_TABLES` bigint(20) unsigned NOT NULL,
-  `CREATED_TMP_TABLES` bigint(20) unsigned NOT NULL,
-  `SELECT_FULL_JOIN` bigint(20) unsigned NOT NULL,
-  `SELECT_FULL_RANGE_JOIN` bigint(20) unsigned NOT NULL,
-  `SELECT_RANGE` bigint(20) unsigned NOT NULL,
-  `SELECT_RANGE_CHECK` bigint(20) unsigned NOT NULL,
-  `SELECT_SCAN` bigint(20) unsigned NOT NULL,
-  `SORT_MERGE_PASSES` bigint(20) unsigned NOT NULL,
-  `SORT_RANGE` bigint(20) unsigned NOT NULL,
-  `SORT_ROWS` bigint(20) unsigned NOT NULL,
-  `SORT_SCAN` bigint(20) unsigned NOT NULL,
-  `NO_INDEX_USED` bigint(20) unsigned NOT NULL,
-  `NO_GOOD_INDEX_USED` bigint(20) unsigned NOT NULL,
-  `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_TYPE` enum('STATEMENT','STAGE','WAIT') DEFAULT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_statements_history_long;
-Table	Create Table
-events_statements_history_long	CREATE TABLE `events_statements_history_long` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_ID` bigint(20) unsigned NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `SOURCE` varchar(64) DEFAULT NULL,
-  `TIMER_START` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_END` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
-  `LOCK_TIME` bigint(20) unsigned NOT NULL,
-  `SQL_TEXT` longtext,
-  `DIGEST` varchar(64) DEFAULT NULL,
-  `DIGEST_TEXT` longtext,
-  `CURRENT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_TYPE` varchar(64) DEFAULT NULL,
-  `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_NAME` varchar(64) DEFAULT NULL,
-  `OBJECT_INSTANCE_BEGIN` bigint(20) DEFAULT NULL,
-  `MYSQL_ERRNO` int(11) DEFAULT NULL,
-  `RETURNED_SQLSTATE` varchar(5) DEFAULT NULL,
-  `MESSAGE_TEXT` varchar(128) DEFAULT NULL,
-  `ERRORS` bigint(20) unsigned NOT NULL,
-  `WARNINGS` bigint(20) unsigned NOT NULL,
-  `ROWS_AFFECTED` bigint(20) unsigned NOT NULL,
-  `ROWS_SENT` bigint(20) unsigned NOT NULL,
-  `ROWS_EXAMINED` bigint(20) unsigned NOT NULL,
-  `CREATED_TMP_DISK_TABLES` bigint(20) unsigned NOT NULL,
-  `CREATED_TMP_TABLES` bigint(20) unsigned NOT NULL,
-  `SELECT_FULL_JOIN` bigint(20) unsigned NOT NULL,
-  `SELECT_FULL_RANGE_JOIN` bigint(20) unsigned NOT NULL,
-  `SELECT_RANGE` bigint(20) unsigned NOT NULL,
-  `SELECT_RANGE_CHECK` bigint(20) unsigned NOT NULL,
-  `SELECT_SCAN` bigint(20) unsigned NOT NULL,
-  `SORT_MERGE_PASSES` bigint(20) unsigned NOT NULL,
-  `SORT_RANGE` bigint(20) unsigned NOT NULL,
-  `SORT_ROWS` bigint(20) unsigned NOT NULL,
-  `SORT_SCAN` bigint(20) unsigned NOT NULL,
-  `NO_INDEX_USED` bigint(20) unsigned NOT NULL,
-  `NO_GOOD_INDEX_USED` bigint(20) unsigned NOT NULL,
-  `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_TYPE` enum('STATEMENT','STAGE','WAIT') DEFAULT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_statements_summary_by_thread_by_event_name;
-Table	Create Table
-events_statements_summary_by_thread_by_event_name	CREATE TABLE `events_statements_summary_by_thread_by_event_name` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `COUNT_STAR` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `SUM_LOCK_TIME` bigint(20) unsigned NOT NULL,
-  `SUM_ERRORS` bigint(20) unsigned NOT NULL,
-  `SUM_WARNINGS` bigint(20) unsigned NOT NULL,
-  `SUM_ROWS_AFFECTED` bigint(20) unsigned NOT NULL,
-  `SUM_ROWS_SENT` bigint(20) unsigned NOT NULL,
-  `SUM_ROWS_EXAMINED` bigint(20) unsigned NOT NULL,
-  `SUM_CREATED_TMP_DISK_TABLES` bigint(20) unsigned NOT NULL,
-  `SUM_CREATED_TMP_TABLES` bigint(20) unsigned NOT NULL,
-  `SUM_SELECT_FULL_JOIN` bigint(20) unsigned NOT NULL,
-  `SUM_SELECT_FULL_RANGE_JOIN` bigint(20) unsigned NOT NULL,
-  `SUM_SELECT_RANGE` bigint(20) unsigned NOT NULL,
-  `SUM_SELECT_RANGE_CHECK` bigint(20) unsigned NOT NULL,
-  `SUM_SELECT_SCAN` bigint(20) unsigned NOT NULL,
-  `SUM_SORT_MERGE_PASSES` bigint(20) unsigned NOT NULL,
-  `SUM_SORT_RANGE` bigint(20) unsigned NOT NULL,
-  `SUM_SORT_ROWS` bigint(20) unsigned NOT NULL,
-  `SUM_SORT_SCAN` bigint(20) unsigned NOT NULL,
-  `SUM_NO_INDEX_USED` bigint(20) unsigned NOT NULL,
-  `SUM_NO_GOOD_INDEX_USED` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_statements_summary_global_by_event_name;
-Table	Create Table
-events_statements_summary_global_by_event_name	CREATE TABLE `events_statements_summary_global_by_event_name` (
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `COUNT_STAR` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `SUM_LOCK_TIME` bigint(20) unsigned NOT NULL,
-  `SUM_ERRORS` bigint(20) unsigned NOT NULL,
-  `SUM_WARNINGS` bigint(20) unsigned NOT NULL,
-  `SUM_ROWS_AFFECTED` bigint(20) unsigned NOT NULL,
-  `SUM_ROWS_SENT` bigint(20) unsigned NOT NULL,
-  `SUM_ROWS_EXAMINED` bigint(20) unsigned NOT NULL,
-  `SUM_CREATED_TMP_DISK_TABLES` bigint(20) unsigned NOT NULL,
-  `SUM_CREATED_TMP_TABLES` bigint(20) unsigned NOT NULL,
-  `SUM_SELECT_FULL_JOIN` bigint(20) unsigned NOT NULL,
-  `SUM_SELECT_FULL_RANGE_JOIN` bigint(20) unsigned NOT NULL,
-  `SUM_SELECT_RANGE` bigint(20) unsigned NOT NULL,
-  `SUM_SELECT_RANGE_CHECK` bigint(20) unsigned NOT NULL,
-  `SUM_SELECT_SCAN` bigint(20) unsigned NOT NULL,
-  `SUM_SORT_MERGE_PASSES` bigint(20) unsigned NOT NULL,
-  `SUM_SORT_RANGE` bigint(20) unsigned NOT NULL,
-  `SUM_SORT_ROWS` bigint(20) unsigned NOT NULL,
-  `SUM_SORT_SCAN` bigint(20) unsigned NOT NULL,
-  `SUM_NO_INDEX_USED` bigint(20) unsigned NOT NULL,
-  `SUM_NO_GOOD_INDEX_USED` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_waits_current;
-Table	Create Table
-events_waits_current	CREATE TABLE `events_waits_current` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_ID` bigint(20) unsigned NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `SOURCE` varchar(64) DEFAULT NULL,
-  `TIMER_START` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_END` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
-  `SPINS` int(10) unsigned DEFAULT NULL,
-  `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_NAME` varchar(512) DEFAULT NULL,
-  `INDEX_NAME` varchar(64) DEFAULT NULL,
-  `OBJECT_TYPE` varchar(64) DEFAULT NULL,
-  `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
-  `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_TYPE` enum('STATEMENT','STAGE','WAIT') DEFAULT NULL,
-  `OPERATION` varchar(32) NOT NULL,
-  `NUMBER_OF_BYTES` bigint(20) unsigned DEFAULT NULL,
-  `FLAGS` int(10) unsigned DEFAULT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_waits_history;
-Table	Create Table
-events_waits_history	CREATE TABLE `events_waits_history` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_ID` bigint(20) unsigned NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `SOURCE` varchar(64) DEFAULT NULL,
-  `TIMER_START` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_END` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
-  `SPINS` int(10) unsigned DEFAULT NULL,
-  `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_NAME` varchar(512) DEFAULT NULL,
-  `INDEX_NAME` varchar(64) DEFAULT NULL,
-  `OBJECT_TYPE` varchar(64) DEFAULT NULL,
-  `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
-  `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_TYPE` enum('STATEMENT','STAGE','WAIT') DEFAULT NULL,
-  `OPERATION` varchar(32) NOT NULL,
-  `NUMBER_OF_BYTES` bigint(20) unsigned DEFAULT NULL,
-  `FLAGS` int(10) unsigned DEFAULT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_waits_history_long;
-Table	Create Table
-events_waits_history_long	CREATE TABLE `events_waits_history_long` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_ID` bigint(20) unsigned NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `SOURCE` varchar(64) DEFAULT NULL,
-  `TIMER_START` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_END` bigint(20) unsigned DEFAULT NULL,
-  `TIMER_WAIT` bigint(20) unsigned DEFAULT NULL,
-  `SPINS` int(10) unsigned DEFAULT NULL,
-  `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_NAME` varchar(512) DEFAULT NULL,
-  `INDEX_NAME` varchar(64) DEFAULT NULL,
-  `OBJECT_TYPE` varchar(64) DEFAULT NULL,
-  `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
-  `NESTING_EVENT_ID` bigint(20) unsigned DEFAULT NULL,
-  `NESTING_EVENT_TYPE` enum('STATEMENT','STAGE','WAIT') DEFAULT NULL,
-  `OPERATION` varchar(32) NOT NULL,
-  `NUMBER_OF_BYTES` bigint(20) unsigned DEFAULT NULL,
-  `FLAGS` int(10) unsigned DEFAULT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_waits_summary_by_instance;
-Table	Create Table
-events_waits_summary_by_instance	CREATE TABLE `events_waits_summary_by_instance` (
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
-  `COUNT_STAR` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_waits_summary_by_thread_by_event_name;
-Table	Create Table
-events_waits_summary_by_thread_by_event_name	CREATE TABLE `events_waits_summary_by_thread_by_event_name` (
-  `THREAD_ID` int(11) NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `COUNT_STAR` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table events_waits_summary_global_by_event_name;
-Table	Create Table
-events_waits_summary_global_by_event_name	CREATE TABLE `events_waits_summary_global_by_event_name` (
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `COUNT_STAR` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table file_instances;
-Table	Create Table
-file_instances	CREATE TABLE `file_instances` (
-  `FILE_NAME` varchar(512) NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `OPEN_COUNT` int(10) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table file_summary_by_event_name;
-Table	Create Table
-file_summary_by_event_name	CREATE TABLE `file_summary_by_event_name` (
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `COUNT_READ` bigint(20) unsigned NOT NULL,
-  `COUNT_WRITE` bigint(20) unsigned NOT NULL,
-  `SUM_NUMBER_OF_BYTES_READ` bigint(20) unsigned NOT NULL,
-  `SUM_NUMBER_OF_BYTES_WRITE` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table file_summary_by_instance;
-Table	Create Table
-file_summary_by_instance	CREATE TABLE `file_summary_by_instance` (
-  `FILE_NAME` varchar(512) NOT NULL,
-  `EVENT_NAME` varchar(128) NOT NULL,
-  `COUNT_READ` bigint(20) unsigned NOT NULL,
-  `COUNT_WRITE` bigint(20) unsigned NOT NULL,
-  `SUM_NUMBER_OF_BYTES_READ` bigint(20) unsigned NOT NULL,
-  `SUM_NUMBER_OF_BYTES_WRITE` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table mutex_instances;
-Table	Create Table
-mutex_instances	CREATE TABLE `mutex_instances` (
-  `NAME` varchar(128) NOT NULL,
-  `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
-  `LOCKED_BY_THREAD_ID` int(11) DEFAULT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table objects_summary_global_by_type;
-Table	Create Table
-objects_summary_global_by_type	CREATE TABLE `objects_summary_global_by_type` (
-  `OBJECT_TYPE` varchar(64) DEFAULT NULL,
-  `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_NAME` varchar(64) DEFAULT NULL,
-  `COUNT_STAR` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table performance_timers;
-Table	Create Table
-performance_timers	CREATE TABLE `performance_timers` (
-  `TIMER_NAME` enum('CYCLE','NANOSECOND','MICROSECOND','MILLISECOND','TICK') NOT NULL,
-  `TIMER_FREQUENCY` bigint(20) DEFAULT NULL,
-  `TIMER_RESOLUTION` bigint(20) DEFAULT NULL,
-  `TIMER_OVERHEAD` bigint(20) DEFAULT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table rwlock_instances;
-Table	Create Table
-rwlock_instances	CREATE TABLE `rwlock_instances` (
-  `NAME` varchar(128) NOT NULL,
-  `OBJECT_INSTANCE_BEGIN` bigint(20) NOT NULL,
-  `WRITE_LOCKED_BY_THREAD_ID` int(11) DEFAULT NULL,
-  `READ_LOCKED_BY_COUNT` int(10) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table setup_actors;
-Table	Create Table
-setup_actors	CREATE TABLE `setup_actors` (
-  `HOST` char(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '%',
-  `USER` char(16) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '%',
-  `ROLE` char(16) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '%'
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table setup_consumers;
-Table	Create Table
-setup_consumers	CREATE TABLE `setup_consumers` (
-  `NAME` varchar(64) NOT NULL,
-  `ENABLED` enum('YES','NO') NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table setup_instruments;
-Table	Create Table
-setup_instruments	CREATE TABLE `setup_instruments` (
-  `NAME` varchar(128) NOT NULL,
-  `ENABLED` enum('YES','NO') NOT NULL,
-  `TIMED` enum('YES','NO') NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table setup_objects;
-Table	Create Table
-setup_objects	CREATE TABLE `setup_objects` (
-  `OBJECT_TYPE` enum('TABLE') NOT NULL DEFAULT 'TABLE',
-  `OBJECT_SCHEMA` varchar(64) DEFAULT '%',
-  `OBJECT_NAME` varchar(64) NOT NULL DEFAULT '%',
-  `TIMED` enum('YES','NO') NOT NULL DEFAULT 'YES'
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table setup_timers;
-Table	Create Table
-setup_timers	CREATE TABLE `setup_timers` (
-  `NAME` varchar(64) NOT NULL,
-  `TIMER_NAME` enum('CYCLE','NANOSECOND','MICROSECOND','MILLISECOND','TICK') NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table table_io_waits_summary_by_index_usage;
-Table	Create Table
-table_io_waits_summary_by_index_usage	CREATE TABLE `table_io_waits_summary_by_index_usage` (
-  `OBJECT_TYPE` varchar(64) DEFAULT NULL,
-  `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_NAME` varchar(64) DEFAULT NULL,
-  `INDEX_NAME` varchar(64) DEFAULT NULL,
-  `COUNT_STAR` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `COUNT_READ` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `COUNT_WRITE` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `COUNT_FETCH` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_FETCH` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_FETCH` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_FETCH` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_FETCH` bigint(20) unsigned NOT NULL,
-  `COUNT_INSERT` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_INSERT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_INSERT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_INSERT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_INSERT` bigint(20) unsigned NOT NULL,
-  `COUNT_UPDATE` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_UPDATE` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_UPDATE` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_UPDATE` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_UPDATE` bigint(20) unsigned NOT NULL,
-  `COUNT_DELETE` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_DELETE` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_DELETE` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_DELETE` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_DELETE` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table table_io_waits_summary_by_table;
-Table	Create Table
-table_io_waits_summary_by_table	CREATE TABLE `table_io_waits_summary_by_table` (
-  `OBJECT_TYPE` varchar(64) DEFAULT NULL,
-  `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_NAME` varchar(64) DEFAULT NULL,
-  `COUNT_STAR` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `COUNT_READ` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `COUNT_WRITE` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `COUNT_FETCH` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_FETCH` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_FETCH` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_FETCH` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_FETCH` bigint(20) unsigned NOT NULL,
-  `COUNT_INSERT` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_INSERT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_INSERT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_INSERT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_INSERT` bigint(20) unsigned NOT NULL,
-  `COUNT_UPDATE` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_UPDATE` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_UPDATE` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_UPDATE` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_UPDATE` bigint(20) unsigned NOT NULL,
-  `COUNT_DELETE` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_DELETE` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_DELETE` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_DELETE` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_DELETE` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table table_lock_waits_summary_by_table;
-Table	Create Table
-table_lock_waits_summary_by_table	CREATE TABLE `table_lock_waits_summary_by_table` (
-  `OBJECT_TYPE` varchar(64) DEFAULT NULL,
-  `OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
-  `OBJECT_NAME` varchar(64) DEFAULT NULL,
-  `COUNT_STAR` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL,
-  `COUNT_READ` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_READ` bigint(20) unsigned NOT NULL,
-  `COUNT_WRITE` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WRITE` bigint(20) unsigned NOT NULL,
-  `COUNT_READ_NORMAL` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_READ_NORMAL` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_READ_NORMAL` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_READ_NORMAL` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_READ_NORMAL` bigint(20) unsigned NOT NULL,
-  `COUNT_READ_WITH_SHARED_LOCKS` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_READ_WITH_SHARED_LOCKS` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_READ_WITH_SHARED_LOCKS` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_READ_WITH_SHARED_LOCKS` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_READ_WITH_SHARED_LOCKS` bigint(20) unsigned NOT NULL,
-  `COUNT_READ_HIGH_PRIORITY` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_READ_HIGH_PRIORITY` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_READ_HIGH_PRIORITY` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_READ_HIGH_PRIORITY` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_READ_HIGH_PRIORITY` bigint(20) unsigned NOT NULL,
-  `COUNT_READ_NO_INSERT` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_READ_NO_INSERT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_READ_NO_INSERT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_READ_NO_INSERT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_READ_NO_INSERT` bigint(20) unsigned NOT NULL,
-  `COUNT_READ_EXTERNAL` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_READ_EXTERNAL` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_READ_EXTERNAL` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_READ_EXTERNAL` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_READ_EXTERNAL` bigint(20) unsigned NOT NULL,
-  `COUNT_WRITE_ALLOW_WRITE` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WRITE_ALLOW_WRITE` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WRITE_ALLOW_WRITE` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WRITE_ALLOW_WRITE` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WRITE_ALLOW_WRITE` bigint(20) unsigned NOT NULL,
-  `COUNT_WRITE_CONCURRENT_INSERT` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WRITE_CONCURRENT_INSERT` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WRITE_CONCURRENT_INSERT` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WRITE_CONCURRENT_INSERT` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WRITE_CONCURRENT_INSERT` bigint(20) unsigned NOT NULL,
-  `COUNT_WRITE_DELAYED` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WRITE_DELAYED` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WRITE_DELAYED` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WRITE_DELAYED` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WRITE_DELAYED` bigint(20) unsigned NOT NULL,
-  `COUNT_WRITE_LOW_PRIORITY` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WRITE_LOW_PRIORITY` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WRITE_LOW_PRIORITY` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WRITE_LOW_PRIORITY` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WRITE_LOW_PRIORITY` bigint(20) unsigned NOT NULL,
-  `COUNT_WRITE_NORMAL` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WRITE_NORMAL` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WRITE_NORMAL` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WRITE_NORMAL` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WRITE_NORMAL` bigint(20) unsigned NOT NULL,
-  `COUNT_WRITE_EXTERNAL` bigint(20) unsigned NOT NULL,
-  `SUM_TIMER_WRITE_EXTERNAL` bigint(20) unsigned NOT NULL,
-  `MIN_TIMER_WRITE_EXTERNAL` bigint(20) unsigned NOT NULL,
-  `AVG_TIMER_WRITE_EXTERNAL` bigint(20) unsigned NOT NULL,
-  `MAX_TIMER_WRITE_EXTERNAL` bigint(20) unsigned NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
-show create table threads;
-Table	Create Table
-threads	CREATE TABLE `threads` (
-  `THREAD_ID` int(11) NOT NULL,
-  `NAME` varchar(128) NOT NULL,
-  `TYPE` varchar(10) NOT NULL,
-  `PROCESSLIST_ID` int(11) DEFAULT NULL,
-  `PROCESSLIST_USER` varchar(16) DEFAULT NULL,
-  `PROCESSLIST_HOST` varchar(60) DEFAULT NULL,
-  `PROCESSLIST_DB` varchar(64) DEFAULT NULL,
-  `PROCESSLIST_COMMAND` varchar(16) DEFAULT NULL,
-  `PROCESSLIST_TIME` bigint(20) DEFAULT NULL,
-  `PROCESSLIST_STATE` varchar(64) DEFAULT NULL,
-  `PROCESSLIST_INFO` longtext,
-  `PARENT_THREAD_ID` int(11) DEFAULT NULL,
-  `ROLE` varchar(64) DEFAULT NULL,
-  `INSTRUMENTED` enum('YES','NO') NOT NULL
-) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8

=== modified file 'mysql-test/suite/perfschema/r/statements_digest.result'
--- a/mysql-test/suite/perfschema/r/statements_digest.result	2012-01-04 08:15:36 +0000
+++ b/mysql-test/suite/perfschema/r/statements_digest.result	2012-01-09 07:25:42 +0000
@@ -48,12 +48,12 @@ dd87e085c2c5a2b6	SELECT # FROM t2  	1
 fc7ca6a130fec1a4	SELECT #,# FROM t2  	2
 97cd1e37ec961f4a	INSERT INTO t1 VALUES (#)  	1
 89711defcba2e7b6	INSERT INTO t2 VALUES (#)  	1
-a41f173a4d5380ec	INSERT INTO t3 VALUES (#,#)  	1
-d5861d47f3ce1618	INSERT INTO t4 VALUES (#,#)  	1
-6cf22eb634d457a2	INSERT INTO t5 VALUES (#,#)  	1
-de7125e60b7c8491	INSERT INTO t1 VALUES (#),(#)  	2
-58fd317fdd62aa68	INSERT INTO t3 VALUES (#,#),(#,#)  	1
-c0a64b8f3c6a1118	INSERT INTO t5 VALUES (#,#),(#,#)  	1
+6693dfbe086fb312	INSERT INTO t3 VALUES (#,#)  	1
+0da8164710665719	INSERT INTO t4 VALUES (#,#)  	1
+11b697ce91a49bb5	INSERT INTO t5 VALUES (#,#)  	1
+d8fc73eee346beec	INSERT INTO t1 VALUES (#),(#)  	2
+24f69e0e8646bb53	INSERT INTO t3 VALUES (#,#),(#,#)  	1
+130a95e23a8da403	INSERT INTO t5 VALUES (#,#),(#,#)  	1
 33c8d4d29d3c02f3	USE performance_schema  	1
 ####################################
 # CLEANUP

=== removed file 'storage/perfschema/p_lex.cc'
--- a/storage/perfschema/p_lex.cc	2011-12-02 13:37:06 +0000
+++ b/storage/perfschema/p_lex.cc	1970-01-01 00:00:00 +0000
@@ -1,634 +0,0 @@
-/*
- This is an auto generated file. Please do not modify it directly.
-*/
-
-
-#include "pfs_digest.h"
-
-extern const char* symbol[];
-
-void initialize_lex_symbol()
-{
-  symbol[AND_AND_SYM-START_TOKEN_NUMBER]= (char*)"&&";
-  symbol[LT-START_TOKEN_NUMBER]= (char*)"<";
-  symbol[LE-START_TOKEN_NUMBER]= (char*)"<=";
-  symbol[NE-START_TOKEN_NUMBER]= (char*)"<>";
-  symbol[NE-START_TOKEN_NUMBER]= (char*)"!=";
-  symbol[EQ-START_TOKEN_NUMBER]= (char*)"=";
-  symbol[GT_SYM-START_TOKEN_NUMBER]= (char*)">";
-  symbol[GE-START_TOKEN_NUMBER]= (char*)">=";
-  symbol[SHIFT_LEFT-START_TOKEN_NUMBER]= (char*)"<<";
-  symbol[SHIFT_RIGHT-START_TOKEN_NUMBER]= (char*)">>";
-  symbol[EQUAL_SYM-START_TOKEN_NUMBER]= (char*)"<=>";
-  symbol[ACCESSIBLE_SYM-START_TOKEN_NUMBER]= (char*)"ACCESSIBLE";
-  symbol[ACTION-START_TOKEN_NUMBER]= (char*)"ACTION";
-  symbol[ADD-START_TOKEN_NUMBER]= (char*)"ADD";
-  symbol[AFTER_SYM-START_TOKEN_NUMBER]= (char*)"AFTER";
-  symbol[AGAINST-START_TOKEN_NUMBER]= (char*)"AGAINST";
-  symbol[AGGREGATE_SYM-START_TOKEN_NUMBER]= (char*)"AGGREGATE";
-  symbol[ALL-START_TOKEN_NUMBER]= (char*)"ALL";
-  symbol[ALGORITHM_SYM-START_TOKEN_NUMBER]= (char*)"ALGORITHM";
-  symbol[ALTER-START_TOKEN_NUMBER]= (char*)"ALTER";
-  symbol[ANALYZE_SYM-START_TOKEN_NUMBER]= (char*)"ANALYZE";
-  symbol[AND_SYM-START_TOKEN_NUMBER]= (char*)"AND";
-  symbol[ANY_SYM-START_TOKEN_NUMBER]= (char*)"ANY";
-  symbol[AS-START_TOKEN_NUMBER]= (char*)"AS";
-  symbol[ASC-START_TOKEN_NUMBER]= (char*)"ASC";
-  symbol[ASCII_SYM-START_TOKEN_NUMBER]= (char*)"ASCII";
-  symbol[ASENSITIVE_SYM-START_TOKEN_NUMBER]= (char*)"ASENSITIVE";
-  symbol[AT_SYM-START_TOKEN_NUMBER]= (char*)"AT";
-  symbol[AUTHORS_SYM-START_TOKEN_NUMBER]= (char*)"AUTHORS";
-  symbol[AUTO_INC-START_TOKEN_NUMBER]= (char*)"AUTO_INCREMENT";
-  symbol[AUTOEXTEND_SIZE_SYM-START_TOKEN_NUMBER]= (char*)"AUTOEXTEND_SIZE";
-  symbol[AVG_SYM-START_TOKEN_NUMBER]= (char*)"AVG";
-  symbol[AVG_ROW_LENGTH-START_TOKEN_NUMBER]= (char*)"AVG_ROW_LENGTH";
-  symbol[BACKUP_SYM-START_TOKEN_NUMBER]= (char*)"BACKUP";
-  symbol[BEFORE_SYM-START_TOKEN_NUMBER]= (char*)"BEFORE";
-  symbol[BEGIN_SYM-START_TOKEN_NUMBER]= (char*)"BEGIN";
-  symbol[BETWEEN_SYM-START_TOKEN_NUMBER]= (char*)"BETWEEN";
-  symbol[BIGINT-START_TOKEN_NUMBER]= (char*)"BIGINT";
-  symbol[BINARY-START_TOKEN_NUMBER]= (char*)"BINARY";
-  symbol[BINLOG_SYM-START_TOKEN_NUMBER]= (char*)"BINLOG";
-  symbol[BIT_SYM-START_TOKEN_NUMBER]= (char*)"BIT";
-  symbol[BLOB_SYM-START_TOKEN_NUMBER]= (char*)"BLOB";
-  symbol[BLOCK_SYM-START_TOKEN_NUMBER]= (char*)"BLOCK";
-  symbol[BOOL_SYM-START_TOKEN_NUMBER]= (char*)"BOOL";
-  symbol[BOOLEAN_SYM-START_TOKEN_NUMBER]= (char*)"BOOLEAN";
-  symbol[BOTH-START_TOKEN_NUMBER]= (char*)"BOTH";
-  symbol[BTREE_SYM-START_TOKEN_NUMBER]= (char*)"BTREE";
-  symbol[BY-START_TOKEN_NUMBER]= (char*)"BY";
-  symbol[BYTE_SYM-START_TOKEN_NUMBER]= (char*)"BYTE";
-  symbol[CACHE_SYM-START_TOKEN_NUMBER]= (char*)"CACHE";
-  symbol[CALL_SYM-START_TOKEN_NUMBER]= (char*)"CALL";
-  symbol[CASCADE-START_TOKEN_NUMBER]= (char*)"CASCADE";
-  symbol[CASCADED-START_TOKEN_NUMBER]= (char*)"CASCADED";
-  symbol[CASE_SYM-START_TOKEN_NUMBER]= (char*)"CASE";
-  symbol[CATALOG_NAME_SYM-START_TOKEN_NUMBER]= (char*)"CATALOG_NAME";
-  symbol[CHAIN_SYM-START_TOKEN_NUMBER]= (char*)"CHAIN";
-  symbol[CHANGE-START_TOKEN_NUMBER]= (char*)"CHANGE";
-  symbol[CHANGED-START_TOKEN_NUMBER]= (char*)"CHANGED";
-  symbol[CHAR_SYM-START_TOKEN_NUMBER]= (char*)"CHAR";
-  symbol[CHAR_SYM-START_TOKEN_NUMBER]= (char*)"CHARACTER";
-  symbol[CHARSET-START_TOKEN_NUMBER]= (char*)"CHARSET";
-  symbol[CHECK_SYM-START_TOKEN_NUMBER]= (char*)"CHECK";
-  symbol[CHECKSUM_SYM-START_TOKEN_NUMBER]= (char*)"CHECKSUM";
-  symbol[CIPHER_SYM-START_TOKEN_NUMBER]= (char*)"CIPHER";
-  symbol[CLASS_ORIGIN_SYM-START_TOKEN_NUMBER]= (char*)"CLASS_ORIGIN";
-  symbol[CLIENT_SYM-START_TOKEN_NUMBER]= (char*)"CLIENT";
-  symbol[CLOSE_SYM-START_TOKEN_NUMBER]= (char*)"CLOSE";
-  symbol[COALESCE-START_TOKEN_NUMBER]= (char*)"COALESCE";
-  symbol[CODE_SYM-START_TOKEN_NUMBER]= (char*)"CODE";
-  symbol[COLLATE_SYM-START_TOKEN_NUMBER]= (char*)"COLLATE";
-  symbol[COLLATION_SYM-START_TOKEN_NUMBER]= (char*)"COLLATION";
-  symbol[COLUMN_SYM-START_TOKEN_NUMBER]= (char*)"COLUMN";
-  symbol[COLUMN_NAME_SYM-START_TOKEN_NUMBER]= (char*)"COLUMN_NAME";
-  symbol[COLUMNS-START_TOKEN_NUMBER]= (char*)"COLUMNS";
-  symbol[COMMENT_SYM-START_TOKEN_NUMBER]= (char*)"COMMENT";
-  symbol[COMMIT_SYM-START_TOKEN_NUMBER]= (char*)"COMMIT";
-  symbol[COMMITTED_SYM-START_TOKEN_NUMBER]= (char*)"COMMITTED";
-  symbol[COMPACT_SYM-START_TOKEN_NUMBER]= (char*)"COMPACT";
-  symbol[COMPLETION_SYM-START_TOKEN_NUMBER]= (char*)"COMPLETION";
-  symbol[COMPRESSED_SYM-START_TOKEN_NUMBER]= (char*)"COMPRESSED";
-  symbol[CONCURRENT-START_TOKEN_NUMBER]= (char*)"CONCURRENT";
-  symbol[CONDITION_SYM-START_TOKEN_NUMBER]= (char*)"CONDITION";
-  symbol[CONNECTION_SYM-START_TOKEN_NUMBER]= (char*)"CONNECTION";
-  symbol[CONSISTENT_SYM-START_TOKEN_NUMBER]= (char*)"CONSISTENT";
-  symbol[CONSTRAINT-START_TOKEN_NUMBER]= (char*)"CONSTRAINT";
-  symbol[CONSTRAINT_CATALOG_SYM-START_TOKEN_NUMBER]= (char*)"CONSTRAINT_CATALOG";
-  symbol[CONSTRAINT_NAME_SYM-START_TOKEN_NUMBER]= (char*)"CONSTRAINT_NAME";
-  symbol[CONSTRAINT_SCHEMA_SYM-START_TOKEN_NUMBER]= (char*)"CONSTRAINT_SCHEMA";
-  symbol[CONTAINS_SYM-START_TOKEN_NUMBER]= (char*)"CONTAINS";
-  symbol[CONTEXT_SYM-START_TOKEN_NUMBER]= (char*)"CONTEXT";
-  symbol[CONTINUE_SYM-START_TOKEN_NUMBER]= (char*)"CONTINUE";
-  symbol[CONTRIBUTORS_SYM-START_TOKEN_NUMBER]= (char*)"CONTRIBUTORS";
-  symbol[CONVERT_SYM-START_TOKEN_NUMBER]= (char*)"CONVERT";
-  symbol[CPU_SYM-START_TOKEN_NUMBER]= (char*)"CPU";
-  symbol[CREATE-START_TOKEN_NUMBER]= (char*)"CREATE";
-  symbol[CROSS-START_TOKEN_NUMBER]= (char*)"CROSS";
-  symbol[CUBE_SYM-START_TOKEN_NUMBER]= (char*)"CUBE";
-  symbol[CURRENT_SYM-START_TOKEN_NUMBER]= (char*)"CURRENT";
-  symbol[CURDATE-START_TOKEN_NUMBER]= (char*)"CURRENT_DATE";
-  symbol[CURTIME-START_TOKEN_NUMBER]= (char*)"CURRENT_TIME";
-  symbol[NOW_SYM-START_TOKEN_NUMBER]= (char*)"CURRENT_TIMESTAMP";
-  symbol[CURRENT_USER-START_TOKEN_NUMBER]= (char*)"CURRENT_USER";
-  symbol[CURSOR_SYM-START_TOKEN_NUMBER]= (char*)"CURSOR";
-  symbol[CURSOR_NAME_SYM-START_TOKEN_NUMBER]= (char*)"CURSOR_NAME";
-  symbol[DATA_SYM-START_TOKEN_NUMBER]= (char*)"DATA";
-  symbol[DATABASE-START_TOKEN_NUMBER]= (char*)"DATABASE";
-  symbol[DATABASES-START_TOKEN_NUMBER]= (char*)"DATABASES";
-  symbol[DATAFILE_SYM-START_TOKEN_NUMBER]= (char*)"DATAFILE";
-  symbol[DATE_SYM-START_TOKEN_NUMBER]= (char*)"DATE";
-  symbol[DATETIME-START_TOKEN_NUMBER]= (char*)"DATETIME";
-  symbol[DAY_SYM-START_TOKEN_NUMBER]= (char*)"DAY";
-  symbol[DAY_HOUR_SYM-START_TOKEN_NUMBER]= (char*)"DAY_HOUR";
-  symbol[DAY_MICROSECOND_SYM-START_TOKEN_NUMBER]= (char*)"DAY_MICROSECOND";
-  symbol[DAY_MINUTE_SYM-START_TOKEN_NUMBER]= (char*)"DAY_MINUTE";
-  symbol[DAY_SECOND_SYM-START_TOKEN_NUMBER]= (char*)"DAY_SECOND";
-  symbol[DEALLOCATE_SYM-START_TOKEN_NUMBER]= (char*)"DEALLOCATE";
-  symbol[DECIMAL_SYM-START_TOKEN_NUMBER]= (char*)"DEC";
-  symbol[DECIMAL_SYM-START_TOKEN_NUMBER]= (char*)"DECIMAL";
-  symbol[DECLARE_SYM-START_TOKEN_NUMBER]= (char*)"DECLARE";
-  symbol[DEFAULT-START_TOKEN_NUMBER]= (char*)"DEFAULT";
-  symbol[DEFAULT_AUTH_SYM-START_TOKEN_NUMBER]= (char*)"DEFAULT_AUTH";
-  symbol[DEFINER_SYM-START_TOKEN_NUMBER]= (char*)"DEFINER";
-  symbol[DELAYED_SYM-START_TOKEN_NUMBER]= (char*)"DELAYED";
-  symbol[DELAY_KEY_WRITE_SYM-START_TOKEN_NUMBER]= (char*)"DELAY_KEY_WRITE";
-  symbol[DELETE_SYM-START_TOKEN_NUMBER]= (char*)"DELETE";
-  symbol[DESC-START_TOKEN_NUMBER]= (char*)"DESC";
-  symbol[DESCRIBE-START_TOKEN_NUMBER]= (char*)"DESCRIBE";
-  symbol[DES_KEY_FILE-START_TOKEN_NUMBER]= (char*)"DES_KEY_FILE";
-  symbol[DETERMINISTIC_SYM-START_TOKEN_NUMBER]= (char*)"DETERMINISTIC";
-  symbol[DIAGNOSTICS_SYM-START_TOKEN_NUMBER]= (char*)"DIAGNOSTICS";
-  symbol[DIRECTORY_SYM-START_TOKEN_NUMBER]= (char*)"DIRECTORY";
-  symbol[DISABLE_SYM-START_TOKEN_NUMBER]= (char*)"DISABLE";
-  symbol[DISCARD-START_TOKEN_NUMBER]= (char*)"DISCARD";
-  symbol[DISK_SYM-START_TOKEN_NUMBER]= (char*)"DISK";
-  symbol[DISTINCT-START_TOKEN_NUMBER]= (char*)"DISTINCT";
-  symbol[DISTINCT-START_TOKEN_NUMBER]= (char*)"DISTINCTROW";
-  symbol[DIV_SYM-START_TOKEN_NUMBER]= (char*)"DIV";
-  symbol[DO_SYM-START_TOKEN_NUMBER]= (char*)"DO";
-  symbol[DOUBLE_SYM-START_TOKEN_NUMBER]= (char*)"DOUBLE";
-  symbol[DROP-START_TOKEN_NUMBER]= (char*)"DROP";
-  symbol[DUAL_SYM-START_TOKEN_NUMBER]= (char*)"DUAL";
-  symbol[DUMPFILE-START_TOKEN_NUMBER]= (char*)"DUMPFILE";
-  symbol[DUPLICATE_SYM-START_TOKEN_NUMBER]= (char*)"DUPLICATE";
-  symbol[DYNAMIC_SYM-START_TOKEN_NUMBER]= (char*)"DYNAMIC";
-  symbol[EACH_SYM-START_TOKEN_NUMBER]= (char*)"EACH";
-  symbol[ELSE-START_TOKEN_NUMBER]= (char*)"ELSE";
-  symbol[ELSEIF_SYM-START_TOKEN_NUMBER]= (char*)"ELSEIF";
-  symbol[ENABLE_SYM-START_TOKEN_NUMBER]= (char*)"ENABLE";
-  symbol[ENCLOSED-START_TOKEN_NUMBER]= (char*)"ENCLOSED";
-  symbol[END-START_TOKEN_NUMBER]= (char*)"END";
-  symbol[ENDS_SYM-START_TOKEN_NUMBER]= (char*)"ENDS";
-  symbol[ENGINE_SYM-START_TOKEN_NUMBER]= (char*)"ENGINE";
-  symbol[ENGINES_SYM-START_TOKEN_NUMBER]= (char*)"ENGINES";
-  symbol[ENUM-START_TOKEN_NUMBER]= (char*)"ENUM";
-  symbol[ERROR_SYM-START_TOKEN_NUMBER]= (char*)"ERROR";
-  symbol[ERRORS-START_TOKEN_NUMBER]= (char*)"ERRORS";
-  symbol[ESCAPE_SYM-START_TOKEN_NUMBER]= (char*)"ESCAPE";
-  symbol[ESCAPED-START_TOKEN_NUMBER]= (char*)"ESCAPED";
-  symbol[EVENT_SYM-START_TOKEN_NUMBER]= (char*)"EVENT";
-  symbol[EVENTS_SYM-START_TOKEN_NUMBER]= (char*)"EVENTS";
-  symbol[EVERY_SYM-START_TOKEN_NUMBER]= (char*)"EVERY";
-  symbol[EXECUTE_SYM-START_TOKEN_NUMBER]= (char*)"EXECUTE";
-  symbol[EXISTS-START_TOKEN_NUMBER]= (char*)"EXISTS";
-  symbol[EXIT_SYM-START_TOKEN_NUMBER]= (char*)"EXIT";
-  symbol[EXPANSION_SYM-START_TOKEN_NUMBER]= (char*)"EXPANSION";
-  symbol[EXCHANGE_SYM-START_TOKEN_NUMBER]= (char*)"EXCHANGE";
-  symbol[DESCRIBE-START_TOKEN_NUMBER]= (char*)"EXPLAIN";
-  symbol[EXTENDED_SYM-START_TOKEN_NUMBER]= (char*)"EXTENDED";
-  symbol[EXTENT_SIZE_SYM-START_TOKEN_NUMBER]= (char*)"EXTENT_SIZE";
-  symbol[FALSE_SYM-START_TOKEN_NUMBER]= (char*)"FALSE";
-  symbol[FAST_SYM-START_TOKEN_NUMBER]= (char*)"FAST";
-  symbol[FAULTS_SYM-START_TOKEN_NUMBER]= (char*)"FAULTS";
-  symbol[FETCH_SYM-START_TOKEN_NUMBER]= (char*)"FETCH";
-  symbol[COLUMNS-START_TOKEN_NUMBER]= (char*)"FIELDS";
-  symbol[FILE_SYM-START_TOKEN_NUMBER]= (char*)"FILE";
-  symbol[FIRST_SYM-START_TOKEN_NUMBER]= (char*)"FIRST";
-  symbol[FIXED_SYM-START_TOKEN_NUMBER]= (char*)"FIXED";
-  symbol[FLOAT_SYM-START_TOKEN_NUMBER]= (char*)"FLOAT";
-  symbol[FLOAT_SYM-START_TOKEN_NUMBER]= (char*)"FLOAT4";
-  symbol[DOUBLE_SYM-START_TOKEN_NUMBER]= (char*)"FLOAT8";
-  symbol[FLUSH_SYM-START_TOKEN_NUMBER]= (char*)"FLUSH";
-  symbol[FOR_SYM-START_TOKEN_NUMBER]= (char*)"FOR";
-  symbol[FORCE_SYM-START_TOKEN_NUMBER]= (char*)"FORCE";
-  symbol[FOREIGN-START_TOKEN_NUMBER]= (char*)"FOREIGN";
-  symbol[FOUND_SYM-START_TOKEN_NUMBER]= (char*)"FOUND";
-  symbol[FROM-START_TOKEN_NUMBER]= (char*)"FROM";
-  symbol[FULL-START_TOKEN_NUMBER]= (char*)"FULL";
-  symbol[FULLTEXT_SYM-START_TOKEN_NUMBER]= (char*)"FULLTEXT";
-  symbol[FUNCTION_SYM-START_TOKEN_NUMBER]= (char*)"FUNCTION";
-  symbol[GENERAL-START_TOKEN_NUMBER]= (char*)"GENERAL";
-  symbol[GEOMETRY_SYM-START_TOKEN_NUMBER]= (char*)"GEOMETRY";
-  symbol[GEOMETRYCOLLECTION-START_TOKEN_NUMBER]= (char*)"GEOMETRYCOLLECTION";
-  symbol[GET_FORMAT-START_TOKEN_NUMBER]= (char*)"GET_FORMAT";
-  symbol[GET_SYM-START_TOKEN_NUMBER]= (char*)"GET";
-  symbol[GLOBAL_SYM-START_TOKEN_NUMBER]= (char*)"GLOBAL";
-  symbol[GRANT-START_TOKEN_NUMBER]= (char*)"GRANT";
-  symbol[GRANTS-START_TOKEN_NUMBER]= (char*)"GRANTS";
-  symbol[GROUP_SYM-START_TOKEN_NUMBER]= (char*)"GROUP";
-  symbol[HANDLER_SYM-START_TOKEN_NUMBER]= (char*)"HANDLER";
-  symbol[HASH_SYM-START_TOKEN_NUMBER]= (char*)"HASH";
-  symbol[HAVING-START_TOKEN_NUMBER]= (char*)"HAVING";
-  symbol[HELP_SYM-START_TOKEN_NUMBER]= (char*)"HELP";
-  symbol[HIGH_PRIORITY-START_TOKEN_NUMBER]= (char*)"HIGH_PRIORITY";
-  symbol[HOST_SYM-START_TOKEN_NUMBER]= (char*)"HOST";
-  symbol[HOSTS_SYM-START_TOKEN_NUMBER]= (char*)"HOSTS";
-  symbol[HOUR_SYM-START_TOKEN_NUMBER]= (char*)"HOUR";
-  symbol[HOUR_MICROSECOND_SYM-START_TOKEN_NUMBER]= (char*)"HOUR_MICROSECOND";
-  symbol[HOUR_MINUTE_SYM-START_TOKEN_NUMBER]= (char*)"HOUR_MINUTE";
-  symbol[HOUR_SECOND_SYM-START_TOKEN_NUMBER]= (char*)"HOUR_SECOND";
-  symbol[IDENTIFIED_SYM-START_TOKEN_NUMBER]= (char*)"IDENTIFIED";
-  symbol[IF-START_TOKEN_NUMBER]= (char*)"IF";
-  symbol[IGNORE_SYM-START_TOKEN_NUMBER]= (char*)"IGNORE";
-  symbol[IGNORE_SERVER_IDS_SYM-START_TOKEN_NUMBER]= (char*)"IGNORE_SERVER_IDS";
-  symbol[IMPORT-START_TOKEN_NUMBER]= (char*)"IMPORT";
-  symbol[IN_SYM-START_TOKEN_NUMBER]= (char*)"IN";
-  symbol[INDEX_SYM-START_TOKEN_NUMBER]= (char*)"INDEX";
-  symbol[INDEXES-START_TOKEN_NUMBER]= (char*)"INDEXES";
-  symbol[INFILE-START_TOKEN_NUMBER]= (char*)"INFILE";
-  symbol[INITIAL_SIZE_SYM-START_TOKEN_NUMBER]= (char*)"INITIAL_SIZE";
-  symbol[INNER_SYM-START_TOKEN_NUMBER]= (char*)"INNER";
-  symbol[INOUT_SYM-START_TOKEN_NUMBER]= (char*)"INOUT";
-  symbol[INSENSITIVE_SYM-START_TOKEN_NUMBER]= (char*)"INSENSITIVE";
-  symbol[INSERT-START_TOKEN_NUMBER]= (char*)"INSERT";
-  symbol[INSERT_METHOD-START_TOKEN_NUMBER]= (char*)"INSERT_METHOD";
-  symbol[INSTALL_SYM-START_TOKEN_NUMBER]= (char*)"INSTALL";
-  symbol[INT_SYM-START_TOKEN_NUMBER]= (char*)"INT";
-  symbol[TINYINT-START_TOKEN_NUMBER]= (char*)"INT1";
-  symbol[SMALLINT-START_TOKEN_NUMBER]= (char*)"INT2";
-  symbol[MEDIUMINT-START_TOKEN_NUMBER]= (char*)"INT3";
-  symbol[INT_SYM-START_TOKEN_NUMBER]= (char*)"INT4";
-  symbol[BIGINT-START_TOKEN_NUMBER]= (char*)"INT8";
-  symbol[INT_SYM-START_TOKEN_NUMBER]= (char*)"INTEGER";
-  symbol[INTERVAL_SYM-START_TOKEN_NUMBER]= (char*)"INTERVAL";
-  symbol[INTO-START_TOKEN_NUMBER]= (char*)"INTO";
-  symbol[IO_SYM-START_TOKEN_NUMBER]= (char*)"IO";
-  symbol[RELAY_THREAD-START_TOKEN_NUMBER]= (char*)"IO_THREAD";
-  symbol[IPC_SYM-START_TOKEN_NUMBER]= (char*)"IPC";
-  symbol[IS-START_TOKEN_NUMBER]= (char*)"IS";
-  symbol[ISOLATION-START_TOKEN_NUMBER]= (char*)"ISOLATION";
-  symbol[ISSUER_SYM-START_TOKEN_NUMBER]= (char*)"ISSUER";
-  symbol[ITERATE_SYM-START_TOKEN_NUMBER]= (char*)"ITERATE";
-  symbol[INVOKER_SYM-START_TOKEN_NUMBER]= (char*)"INVOKER";
-  symbol[JOIN_SYM-START_TOKEN_NUMBER]= (char*)"JOIN";
-  symbol[KEY_SYM-START_TOKEN_NUMBER]= (char*)"KEY";
-  symbol[KEYS-START_TOKEN_NUMBER]= (char*)"KEYS";
-  symbol[KEY_BLOCK_SIZE-START_TOKEN_NUMBER]= (char*)"KEY_BLOCK_SIZE";
-  symbol[KILL_SYM-START_TOKEN_NUMBER]= (char*)"KILL";
-  symbol[LANGUAGE_SYM-START_TOKEN_NUMBER]= (char*)"LANGUAGE";
-  symbol[LAST_SYM-START_TOKEN_NUMBER]= (char*)"LAST";
-  symbol[LEADING-START_TOKEN_NUMBER]= (char*)"LEADING";
-  symbol[LEAVE_SYM-START_TOKEN_NUMBER]= (char*)"LEAVE";
-  symbol[LEAVES-START_TOKEN_NUMBER]= (char*)"LEAVES";
-  symbol[LEFT-START_TOKEN_NUMBER]= (char*)"LEFT";
-  symbol[LESS_SYM-START_TOKEN_NUMBER]= (char*)"LESS";
-  symbol[LEVEL_SYM-START_TOKEN_NUMBER]= (char*)"LEVEL";
-  symbol[LIKE-START_TOKEN_NUMBER]= (char*)"LIKE";
-  symbol[LIMIT-START_TOKEN_NUMBER]= (char*)"LIMIT";
-  symbol[LINEAR_SYM-START_TOKEN_NUMBER]= (char*)"LINEAR";
-  symbol[LINES-START_TOKEN_NUMBER]= (char*)"LINES";
-  symbol[LINESTRING-START_TOKEN_NUMBER]= (char*)"LINESTRING";
-  symbol[LIST_SYM-START_TOKEN_NUMBER]= (char*)"LIST";
-  symbol[LOAD-START_TOKEN_NUMBER]= (char*)"LOAD";
-  symbol[LOCAL_SYM-START_TOKEN_NUMBER]= (char*)"LOCAL";
-  symbol[NOW_SYM-START_TOKEN_NUMBER]= (char*)"LOCALTIME";
-  symbol[NOW_SYM-START_TOKEN_NUMBER]= (char*)"LOCALTIMESTAMP";
-  symbol[LOCK_SYM-START_TOKEN_NUMBER]= (char*)"LOCK";
-  symbol[LOCKS_SYM-START_TOKEN_NUMBER]= (char*)"LOCKS";
-  symbol[LOGFILE_SYM-START_TOKEN_NUMBER]= (char*)"LOGFILE";
-  symbol[LOGS_SYM-START_TOKEN_NUMBER]= (char*)"LOGS";
-  symbol[LONG_SYM-START_TOKEN_NUMBER]= (char*)"LONG";
-  symbol[LONGBLOB-START_TOKEN_NUMBER]= (char*)"LONGBLOB";
-  symbol[LONGTEXT-START_TOKEN_NUMBER]= (char*)"LONGTEXT";
-  symbol[LOOP_SYM-START_TOKEN_NUMBER]= (char*)"LOOP";
-  symbol[LOW_PRIORITY-START_TOKEN_NUMBER]= (char*)"LOW_PRIORITY";
-  symbol[MASTER_SYM-START_TOKEN_NUMBER]= (char*)"MASTER";
-  symbol[MASTER_BIND_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_BIND";
-  symbol[MASTER_CONNECT_RETRY_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_CONNECT_RETRY";
-  symbol[MASTER_DELAY_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_DELAY";
-  symbol[MASTER_HOST_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_HOST";
-  symbol[MASTER_LOG_FILE_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_LOG_FILE";
-  symbol[MASTER_LOG_POS_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_LOG_POS";
-  symbol[MASTER_PASSWORD_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_PASSWORD";
-  symbol[MASTER_PORT_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_PORT";
-  symbol[MASTER_RETRY_COUNT_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_RETRY_COUNT";
-  symbol[MASTER_SERVER_ID_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_SERVER_ID";
-  symbol[MASTER_SSL_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_SSL";
-  symbol[MASTER_SSL_CA_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_SSL_CA";
-  symbol[MASTER_SSL_CAPATH_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_SSL_CAPATH";
-  symbol[MASTER_SSL_CERT_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_SSL_CERT";
-  symbol[MASTER_SSL_CIPHER_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_SSL_CIPHER";
-  symbol[MASTER_SSL_CRL_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_SSL_CRL";
-  symbol[MASTER_SSL_CRLPATH_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_SSL_CRLPATH";
-  symbol[MASTER_SSL_KEY_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_SSL_KEY";
-  symbol[MASTER_SSL_VERIFY_SERVER_CERT_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_SSL_VERIFY_SERVER_CERT";
-  symbol[MASTER_USER_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_USER";
-  symbol[MASTER_HEARTBEAT_PERIOD_SYM-START_TOKEN_NUMBER]= (char*)"MASTER_HEARTBEAT_PERIOD";
-  symbol[MATCH-START_TOKEN_NUMBER]= (char*)"MATCH";
-  symbol[MAX_CONNECTIONS_PER_HOUR-START_TOKEN_NUMBER]= (char*)"MAX_CONNECTIONS_PER_HOUR";
-  symbol[MAX_QUERIES_PER_HOUR-START_TOKEN_NUMBER]= (char*)"MAX_QUERIES_PER_HOUR";
-  symbol[MAX_ROWS-START_TOKEN_NUMBER]= (char*)"MAX_ROWS";
-  symbol[MAX_SIZE_SYM-START_TOKEN_NUMBER]= (char*)"MAX_SIZE";
-  symbol[MAX_UPDATES_PER_HOUR-START_TOKEN_NUMBER]= (char*)"MAX_UPDATES_PER_HOUR";
-  symbol[MAX_USER_CONNECTIONS_SYM-START_TOKEN_NUMBER]= (char*)"MAX_USER_CONNECTIONS";
-  symbol[MAX_VALUE_SYM-START_TOKEN_NUMBER]= (char*)"MAXVALUE";
-  symbol[MEDIUM_SYM-START_TOKEN_NUMBER]= (char*)"MEDIUM";
-  symbol[MEDIUMBLOB-START_TOKEN_NUMBER]= (char*)"MEDIUMBLOB";
-  symbol[MEDIUMINT-START_TOKEN_NUMBER]= (char*)"MEDIUMINT";
-  symbol[MEDIUMTEXT-START_TOKEN_NUMBER]= (char*)"MEDIUMTEXT";
-  symbol[MEMORY_SYM-START_TOKEN_NUMBER]= (char*)"MEMORY";
-  symbol[MERGE_SYM-START_TOKEN_NUMBER]= (char*)"MERGE";
-  symbol[MESSAGE_TEXT_SYM-START_TOKEN_NUMBER]= (char*)"MESSAGE_TEXT";
-  symbol[MICROSECOND_SYM-START_TOKEN_NUMBER]= (char*)"MICROSECOND";
-  symbol[MEDIUMINT-START_TOKEN_NUMBER]= (char*)"MIDDLEINT";
-  symbol[MIGRATE_SYM-START_TOKEN_NUMBER]= (char*)"MIGRATE";
-  symbol[MINUTE_SYM-START_TOKEN_NUMBER]= (char*)"MINUTE";
-  symbol[MINUTE_MICROSECOND_SYM-START_TOKEN_NUMBER]= (char*)"MINUTE_MICROSECOND";
-  symbol[MINUTE_SECOND_SYM-START_TOKEN_NUMBER]= (char*)"MINUTE_SECOND";
-  symbol[MIN_ROWS-START_TOKEN_NUMBER]= (char*)"MIN_ROWS";
-  symbol[MOD_SYM-START_TOKEN_NUMBER]= (char*)"MOD";
-  symbol[MODE_SYM-START_TOKEN_NUMBER]= (char*)"MODE";
-  symbol[MODIFIES_SYM-START_TOKEN_NUMBER]= (char*)"MODIFIES";
-  symbol[MODIFY_SYM-START_TOKEN_NUMBER]= (char*)"MODIFY";
-  symbol[MONTH_SYM-START_TOKEN_NUMBER]= (char*)"MONTH";
-  symbol[MULTILINESTRING-START_TOKEN_NUMBER]= (char*)"MULTILINESTRING";
-  symbol[MULTIPOINT-START_TOKEN_NUMBER]= (char*)"MULTIPOINT";
-  symbol[MULTIPOLYGON-START_TOKEN_NUMBER]= (char*)"MULTIPOLYGON";
-  symbol[MUTEX_SYM-START_TOKEN_NUMBER]= (char*)"MUTEX";
-  symbol[MYSQL_ERRNO_SYM-START_TOKEN_NUMBER]= (char*)"MYSQL_ERRNO";
-  symbol[NAME_SYM-START_TOKEN_NUMBER]= (char*)"NAME";
-  symbol[NAMES_SYM-START_TOKEN_NUMBER]= (char*)"NAMES";
-  symbol[NATIONAL_SYM-START_TOKEN_NUMBER]= (char*)"NATIONAL";
-  symbol[NATURAL-START_TOKEN_NUMBER]= (char*)"NATURAL";
-  symbol[NDBCLUSTER_SYM-START_TOKEN_NUMBER]= (char*)"NDB";
-  symbol[NDBCLUSTER_SYM-START_TOKEN_NUMBER]= (char*)"NDBCLUSTER";
-  symbol[NCHAR_SYM-START_TOKEN_NUMBER]= (char*)"NCHAR";
-  symbol[NEW_SYM-START_TOKEN_NUMBER]= (char*)"NEW";
-  symbol[NEXT_SYM-START_TOKEN_NUMBER]= (char*)"NEXT";
-  symbol[NO_SYM-START_TOKEN_NUMBER]= (char*)"NO";
-  symbol[NO_WAIT_SYM-START_TOKEN_NUMBER]= (char*)"NO_WAIT";
-  symbol[NODEGROUP_SYM-START_TOKEN_NUMBER]= (char*)"NODEGROUP";
-  symbol[NONE_SYM-START_TOKEN_NUMBER]= (char*)"NONE";
-  symbol[NOT_SYM-START_TOKEN_NUMBER]= (char*)"NOT";
-  symbol[NO_WRITE_TO_BINLOG-START_TOKEN_NUMBER]= (char*)"NO_WRITE_TO_BINLOG";
-  symbol[NULL_SYM-START_TOKEN_NUMBER]= (char*)"NULL";
-  symbol[NUMBER_SYM-START_TOKEN_NUMBER]= (char*)"NUMBER";
-  symbol[NUMERIC_SYM-START_TOKEN_NUMBER]= (char*)"NUMERIC";
-  symbol[NVARCHAR_SYM-START_TOKEN_NUMBER]= (char*)"NVARCHAR";
-  symbol[OFFSET_SYM-START_TOKEN_NUMBER]= (char*)"OFFSET";
-  symbol[OLD_PASSWORD-START_TOKEN_NUMBER]= (char*)"OLD_PASSWORD";
-  symbol[ON-START_TOKEN_NUMBER]= (char*)"ON";
-  symbol[ONE_SYM-START_TOKEN_NUMBER]= (char*)"ONE";
-  symbol[ONE_SHOT_SYM-START_TOKEN_NUMBER]= (char*)"ONE_SHOT";
-  symbol[OPEN_SYM-START_TOKEN_NUMBER]= (char*)"OPEN";
-  symbol[OPTIMIZE-START_TOKEN_NUMBER]= (char*)"OPTIMIZE";
-  symbol[OPTIONS_SYM-START_TOKEN_NUMBER]= (char*)"OPTIONS";
-  symbol[OPTION-START_TOKEN_NUMBER]= (char*)"OPTION";
-  symbol[OPTIONALLY-START_TOKEN_NUMBER]= (char*)"OPTIONALLY";
-  symbol[OR_SYM-START_TOKEN_NUMBER]= (char*)"OR";
-  symbol[ORDER_SYM-START_TOKEN_NUMBER]= (char*)"ORDER";
-  symbol[OUT_SYM-START_TOKEN_NUMBER]= (char*)"OUT";
-  symbol[OUTER-START_TOKEN_NUMBER]= (char*)"OUTER";
-  symbol[OUTFILE-START_TOKEN_NUMBER]= (char*)"OUTFILE";
-  symbol[OWNER_SYM-START_TOKEN_NUMBER]= (char*)"OWNER";
-  symbol[PACK_KEYS_SYM-START_TOKEN_NUMBER]= (char*)"PACK_KEYS";
-  symbol[PARSER_SYM-START_TOKEN_NUMBER]= (char*)"PARSER";
-  symbol[PAGE_SYM-START_TOKEN_NUMBER]= (char*)"PAGE";
-  symbol[PARTIAL-START_TOKEN_NUMBER]= (char*)"PARTIAL";
-  symbol[PARTITION_SYM-START_TOKEN_NUMBER]= (char*)"PARTITION";
-  symbol[PARTITIONING_SYM-START_TOKEN_NUMBER]= (char*)"PARTITIONING";
-  symbol[PARTITIONS_SYM-START_TOKEN_NUMBER]= (char*)"PARTITIONS";
-  symbol[PASSWORD-START_TOKEN_NUMBER]= (char*)"PASSWORD";
-  symbol[PHASE_SYM-START_TOKEN_NUMBER]= (char*)"PHASE";
-  symbol[PLUGIN_SYM-START_TOKEN_NUMBER]= (char*)"PLUGIN";
-  symbol[PLUGINS_SYM-START_TOKEN_NUMBER]= (char*)"PLUGINS";
-  symbol[PLUGIN_DIR_SYM-START_TOKEN_NUMBER]= (char*)"PLUGIN_DIR";
-  symbol[POINT_SYM-START_TOKEN_NUMBER]= (char*)"POINT";
-  symbol[POLYGON-START_TOKEN_NUMBER]= (char*)"POLYGON";
-  symbol[PORT_SYM-START_TOKEN_NUMBER]= (char*)"PORT";
-  symbol[PRECISION-START_TOKEN_NUMBER]= (char*)"PRECISION";
-  symbol[PREPARE_SYM-START_TOKEN_NUMBER]= (char*)"PREPARE";
-  symbol[PRESERVE_SYM-START_TOKEN_NUMBER]= (char*)"PRESERVE";
-  symbol[PREV_SYM-START_TOKEN_NUMBER]= (char*)"PREV";
-  symbol[PRIMARY_SYM-START_TOKEN_NUMBER]= (char*)"PRIMARY";
-  symbol[PRIVILEGES-START_TOKEN_NUMBER]= (char*)"PRIVILEGES";
-  symbol[PROCEDURE_SYM-START_TOKEN_NUMBER]= (char*)"PROCEDURE";
-  symbol[PROCESS-START_TOKEN_NUMBER]= (char*)"PROCESS";
-  symbol[PROCESSLIST_SYM-START_TOKEN_NUMBER]= (char*)"PROCESSLIST";
-  symbol[PROFILE_SYM-START_TOKEN_NUMBER]= (char*)"PROFILE";
-  symbol[PROFILES_SYM-START_TOKEN_NUMBER]= (char*)"PROFILES";
-  symbol[PROXY_SYM-START_TOKEN_NUMBER]= (char*)"PROXY";
-  symbol[PURGE-START_TOKEN_NUMBER]= (char*)"PURGE";
-  symbol[QUARTER_SYM-START_TOKEN_NUMBER]= (char*)"QUARTER";
-  symbol[QUERY_SYM-START_TOKEN_NUMBER]= (char*)"QUERY";
-  symbol[QUICK-START_TOKEN_NUMBER]= (char*)"QUICK";
-  symbol[RANGE_SYM-START_TOKEN_NUMBER]= (char*)"RANGE";
-  symbol[READ_SYM-START_TOKEN_NUMBER]= (char*)"READ";
-  symbol[READ_ONLY_SYM-START_TOKEN_NUMBER]= (char*)"READ_ONLY";
-  symbol[READ_WRITE_SYM-START_TOKEN_NUMBER]= (char*)"READ_WRITE";
-  symbol[READS_SYM-START_TOKEN_NUMBER]= (char*)"READS";
-  symbol[REAL-START_TOKEN_NUMBER]= (char*)"REAL";
-  symbol[REBUILD_SYM-START_TOKEN_NUMBER]= (char*)"REBUILD";
-  symbol[RECOVER_SYM-START_TOKEN_NUMBER]= (char*)"RECOVER";
-  symbol[REDO_BUFFER_SIZE_SYM-START_TOKEN_NUMBER]= (char*)"REDO_BUFFER_SIZE";
-  symbol[REDOFILE_SYM-START_TOKEN_NUMBER]= (char*)"REDOFILE";
-  symbol[REDUNDANT_SYM-START_TOKEN_NUMBER]= (char*)"REDUNDANT";
-  symbol[REFERENCES-START_TOKEN_NUMBER]= (char*)"REFERENCES";
-  symbol[REGEXP-START_TOKEN_NUMBER]= (char*)"REGEXP";
-  symbol[RELAY-START_TOKEN_NUMBER]= (char*)"RELAY";
-  symbol[RELAYLOG_SYM-START_TOKEN_NUMBER]= (char*)"RELAYLOG";
-  symbol[RELAY_LOG_FILE_SYM-START_TOKEN_NUMBER]= (char*)"RELAY_LOG_FILE";
-  symbol[RELAY_LOG_POS_SYM-START_TOKEN_NUMBER]= (char*)"RELAY_LOG_POS";
-  symbol[RELAY_THREAD-START_TOKEN_NUMBER]= (char*)"RELAY_THREAD";
-  symbol[RELEASE_SYM-START_TOKEN_NUMBER]= (char*)"RELEASE";
-  symbol[RELOAD-START_TOKEN_NUMBER]= (char*)"RELOAD";
-  symbol[REMOVE_SYM-START_TOKEN_NUMBER]= (char*)"REMOVE";
-  symbol[RENAME-START_TOKEN_NUMBER]= (char*)"RENAME";
-  symbol[REORGANIZE_SYM-START_TOKEN_NUMBER]= (char*)"REORGANIZE";
-  symbol[REPAIR-START_TOKEN_NUMBER]= (char*)"REPAIR";
-  symbol[REPEATABLE_SYM-START_TOKEN_NUMBER]= (char*)"REPEATABLE";
-  symbol[REPLACE-START_TOKEN_NUMBER]= (char*)"REPLACE";
-  symbol[REPLICATION-START_TOKEN_NUMBER]= (char*)"REPLICATION";
-  symbol[REPEAT_SYM-START_TOKEN_NUMBER]= (char*)"REPEAT";
-  symbol[REQUIRE_SYM-START_TOKEN_NUMBER]= (char*)"REQUIRE";
-  symbol[RESET_SYM-START_TOKEN_NUMBER]= (char*)"RESET";
-  symbol[RESIGNAL_SYM-START_TOKEN_NUMBER]= (char*)"RESIGNAL";
-  symbol[RESTORE_SYM-START_TOKEN_NUMBER]= (char*)"RESTORE";
-  symbol[RESTRICT-START_TOKEN_NUMBER]= (char*)"RESTRICT";
-  symbol[RESUME_SYM-START_TOKEN_NUMBER]= (char*)"RESUME";
-  symbol[RETURNED_SQLSTATE_SYM-START_TOKEN_NUMBER]= (char*)"RETURNED_SQLSTATE";
-  symbol[RETURN_SYM-START_TOKEN_NUMBER]= (char*)"RETURN";
-  symbol[RETURNS_SYM-START_TOKEN_NUMBER]= (char*)"RETURNS";
-  symbol[REVERSE_SYM-START_TOKEN_NUMBER]= (char*)"REVERSE";
-  symbol[REVOKE-START_TOKEN_NUMBER]= (char*)"REVOKE";
-  symbol[RIGHT-START_TOKEN_NUMBER]= (char*)"RIGHT";
-  symbol[REGEXP-START_TOKEN_NUMBER]= (char*)"RLIKE";
-  symbol[ROLLBACK_SYM-START_TOKEN_NUMBER]= (char*)"ROLLBACK";
-  symbol[ROLLUP_SYM-START_TOKEN_NUMBER]= (char*)"ROLLUP";
-  symbol[ROUTINE_SYM-START_TOKEN_NUMBER]= (char*)"ROUTINE";
-  symbol[ROW_SYM-START_TOKEN_NUMBER]= (char*)"ROW";
-  symbol[ROW_COUNT_SYM-START_TOKEN_NUMBER]= (char*)"ROW_COUNT";
-  symbol[ROWS_SYM-START_TOKEN_NUMBER]= (char*)"ROWS";
-  symbol[ROW_FORMAT_SYM-START_TOKEN_NUMBER]= (char*)"ROW_FORMAT";
-  symbol[RTREE_SYM-START_TOKEN_NUMBER]= (char*)"RTREE";
-  symbol[SAVEPOINT_SYM-START_TOKEN_NUMBER]= (char*)"SAVEPOINT";
-  symbol[SCHEDULE_SYM-START_TOKEN_NUMBER]= (char*)"SCHEDULE";
-  symbol[DATABASE-START_TOKEN_NUMBER]= (char*)"SCHEMA";
-  symbol[SCHEMA_NAME_SYM-START_TOKEN_NUMBER]= (char*)"SCHEMA_NAME";
-  symbol[DATABASES-START_TOKEN_NUMBER]= (char*)"SCHEMAS";
-  symbol[SECOND_SYM-START_TOKEN_NUMBER]= (char*)"SECOND";
-  symbol[SECOND_MICROSECOND_SYM-START_TOKEN_NUMBER]= (char*)"SECOND_MICROSECOND";
-  symbol[SECURITY_SYM-START_TOKEN_NUMBER]= (char*)"SECURITY";
-  symbol[SELECT_SYM-START_TOKEN_NUMBER]= (char*)"SELECT";
-  symbol[SENSITIVE_SYM-START_TOKEN_NUMBER]= (char*)"SENSITIVE";
-  symbol[SEPARATOR_SYM-START_TOKEN_NUMBER]= (char*)"SEPARATOR";
-  symbol[SERIAL_SYM-START_TOKEN_NUMBER]= (char*)"SERIAL";
-  symbol[SERIALIZABLE_SYM-START_TOKEN_NUMBER]= (char*)"SERIALIZABLE";
-  symbol[SESSION_SYM-START_TOKEN_NUMBER]= (char*)"SESSION";
-  symbol[SERVER_SYM-START_TOKEN_NUMBER]= (char*)"SERVER";
-  symbol[SET-START_TOKEN_NUMBER]= (char*)"SET";
-  symbol[SHARE_SYM-START_TOKEN_NUMBER]= (char*)"SHARE";
-  symbol[SHOW-START_TOKEN_NUMBER]= (char*)"SHOW";
-  symbol[SHUTDOWN-START_TOKEN_NUMBER]= (char*)"SHUTDOWN";
-  symbol[SIGNAL_SYM-START_TOKEN_NUMBER]= (char*)"SIGNAL";
-  symbol[SIGNED_SYM-START_TOKEN_NUMBER]= (char*)"SIGNED";
-  symbol[SIMPLE_SYM-START_TOKEN_NUMBER]= (char*)"SIMPLE";
-  symbol[SLAVE-START_TOKEN_NUMBER]= (char*)"SLAVE";
-  symbol[SLOW-START_TOKEN_NUMBER]= (char*)"SLOW";
-  symbol[SNAPSHOT_SYM-START_TOKEN_NUMBER]= (char*)"SNAPSHOT";
-  symbol[SMALLINT-START_TOKEN_NUMBER]= (char*)"SMALLINT";
-  symbol[SOCKET_SYM-START_TOKEN_NUMBER]= (char*)"SOCKET";
-  symbol[ANY_SYM-START_TOKEN_NUMBER]= (char*)"SOME";
-  symbol[SONAME_SYM-START_TOKEN_NUMBER]= (char*)"SONAME";
-  symbol[SOUNDS_SYM-START_TOKEN_NUMBER]= (char*)"SOUNDS";
-  symbol[SOURCE_SYM-START_TOKEN_NUMBER]= (char*)"SOURCE";
-  symbol[SPATIAL_SYM-START_TOKEN_NUMBER]= (char*)"SPATIAL";
-  symbol[SPECIFIC_SYM-START_TOKEN_NUMBER]= (char*)"SPECIFIC";
-  symbol[SQL_SYM-START_TOKEN_NUMBER]= (char*)"SQL";
-  symbol[SQLEXCEPTION_SYM-START_TOKEN_NUMBER]= (char*)"SQLEXCEPTION";
-  symbol[SQLSTATE_SYM-START_TOKEN_NUMBER]= (char*)"SQLSTATE";
-  symbol[SQLWARNING_SYM-START_TOKEN_NUMBER]= (char*)"SQLWARNING";
-  symbol[SQL_BIG_RESULT-START_TOKEN_NUMBER]= (char*)"SQL_BIG_RESULT";
-  symbol[SQL_BUFFER_RESULT-START_TOKEN_NUMBER]= (char*)"SQL_BUFFER_RESULT";
-  symbol[SQL_CACHE_SYM-START_TOKEN_NUMBER]= (char*)"SQL_CACHE";
-  symbol[SQL_CALC_FOUND_ROWS-START_TOKEN_NUMBER]= (char*)"SQL_CALC_FOUND_ROWS";
-  symbol[SQL_NO_CACHE_SYM-START_TOKEN_NUMBER]= (char*)"SQL_NO_CACHE";
-  symbol[SQL_SMALL_RESULT-START_TOKEN_NUMBER]= (char*)"SQL_SMALL_RESULT";
-  symbol[SQL_THREAD-START_TOKEN_NUMBER]= (char*)"SQL_THREAD";
-  symbol[SECOND_SYM-START_TOKEN_NUMBER]= (char*)"SQL_TSI_SECOND";
-  symbol[MINUTE_SYM-START_TOKEN_NUMBER]= (char*)"SQL_TSI_MINUTE";
-  symbol[HOUR_SYM-START_TOKEN_NUMBER]= (char*)"SQL_TSI_HOUR";
-  symbol[DAY_SYM-START_TOKEN_NUMBER]= (char*)"SQL_TSI_DAY";
-  symbol[WEEK_SYM-START_TOKEN_NUMBER]= (char*)"SQL_TSI_WEEK";
-  symbol[MONTH_SYM-START_TOKEN_NUMBER]= (char*)"SQL_TSI_MONTH";
-  symbol[QUARTER_SYM-START_TOKEN_NUMBER]= (char*)"SQL_TSI_QUARTER";
-  symbol[YEAR_SYM-START_TOKEN_NUMBER]= (char*)"SQL_TSI_YEAR";
-  symbol[SSL_SYM-START_TOKEN_NUMBER]= (char*)"SSL";
-  symbol[START_SYM-START_TOKEN_NUMBER]= (char*)"START";
-  symbol[STARTING-START_TOKEN_NUMBER]= (char*)"STARTING";
-  symbol[STARTS_SYM-START_TOKEN_NUMBER]= (char*)"STARTS";
-  symbol[STATUS_SYM-START_TOKEN_NUMBER]= (char*)"STATUS";
-  symbol[STOP_SYM-START_TOKEN_NUMBER]= (char*)"STOP";
-  symbol[STORAGE_SYM-START_TOKEN_NUMBER]= (char*)"STORAGE";
-  symbol[STRAIGHT_JOIN-START_TOKEN_NUMBER]= (char*)"STRAIGHT_JOIN";
-  symbol[STRING_SYM-START_TOKEN_NUMBER]= (char*)"STRING";
-  symbol[SUBCLASS_ORIGIN_SYM-START_TOKEN_NUMBER]= (char*)"SUBCLASS_ORIGIN";
-  symbol[SUBJECT_SYM-START_TOKEN_NUMBER]= (char*)"SUBJECT";
-  symbol[SUBPARTITION_SYM-START_TOKEN_NUMBER]= (char*)"SUBPARTITION";
-  symbol[SUBPARTITIONS_SYM-START_TOKEN_NUMBER]= (char*)"SUBPARTITIONS";
-  symbol[SUPER_SYM-START_TOKEN_NUMBER]= (char*)"SUPER";
-  symbol[SUSPEND_SYM-START_TOKEN_NUMBER]= (char*)"SUSPEND";
-  symbol[SWAPS_SYM-START_TOKEN_NUMBER]= (char*)"SWAPS";
-  symbol[SWITCHES_SYM-START_TOKEN_NUMBER]= (char*)"SWITCHES";
-  symbol[TABLE_SYM-START_TOKEN_NUMBER]= (char*)"TABLE";
-  symbol[TABLE_NAME_SYM-START_TOKEN_NUMBER]= (char*)"TABLE_NAME";
-  symbol[TABLES-START_TOKEN_NUMBER]= (char*)"TABLES";
-  symbol[TABLESPACE-START_TOKEN_NUMBER]= (char*)"TABLESPACE";
-  symbol[TABLE_CHECKSUM_SYM-START_TOKEN_NUMBER]= (char*)"TABLE_CHECKSUM";
-  symbol[TEMPORARY-START_TOKEN_NUMBER]= (char*)"TEMPORARY";
-  symbol[TEMPTABLE_SYM-START_TOKEN_NUMBER]= (char*)"TEMPTABLE";
-  symbol[TERMINATED-START_TOKEN_NUMBER]= (char*)"TERMINATED";
-  symbol[TEXT_SYM-START_TOKEN_NUMBER]= (char*)"TEXT";
-  symbol[THAN_SYM-START_TOKEN_NUMBER]= (char*)"THAN";
-  symbol[THEN_SYM-START_TOKEN_NUMBER]= (char*)"THEN";
-  symbol[TIME_SYM-START_TOKEN_NUMBER]= (char*)"TIME";
-  symbol[TIMESTAMP-START_TOKEN_NUMBER]= (char*)"TIMESTAMP";
-  symbol[TIMESTAMP_ADD-START_TOKEN_NUMBER]= (char*)"TIMESTAMPADD";
-  symbol[TIMESTAMP_DIFF-START_TOKEN_NUMBER]= (char*)"TIMESTAMPDIFF";
-  symbol[TINYBLOB-START_TOKEN_NUMBER]= (char*)"TINYBLOB";
-  symbol[TINYINT-START_TOKEN_NUMBER]= (char*)"TINYINT";
-  symbol[TINYTEXT-START_TOKEN_NUMBER]= (char*)"TINYTEXT";
-  symbol[TO_SYM-START_TOKEN_NUMBER]= (char*)"TO";
-  symbol[TRAILING-START_TOKEN_NUMBER]= (char*)"TRAILING";
-  symbol[TRANSACTION_SYM-START_TOKEN_NUMBER]= (char*)"TRANSACTION";
-  symbol[TRIGGER_SYM-START_TOKEN_NUMBER]= (char*)"TRIGGER";
-  symbol[TRIGGERS_SYM-START_TOKEN_NUMBER]= (char*)"TRIGGERS";
-  symbol[TRUE_SYM-START_TOKEN_NUMBER]= (char*)"TRUE";
-  symbol[TRUNCATE_SYM-START_TOKEN_NUMBER]= (char*)"TRUNCATE";
-  symbol[TYPE_SYM-START_TOKEN_NUMBER]= (char*)"TYPE";
-  symbol[TYPES_SYM-START_TOKEN_NUMBER]= (char*)"TYPES";
-  symbol[UNCOMMITTED_SYM-START_TOKEN_NUMBER]= (char*)"UNCOMMITTED";
-  symbol[UNDEFINED_SYM-START_TOKEN_NUMBER]= (char*)"UNDEFINED";
-  symbol[UNDO_BUFFER_SIZE_SYM-START_TOKEN_NUMBER]= (char*)"UNDO_BUFFER_SIZE";
-  symbol[UNDOFILE_SYM-START_TOKEN_NUMBER]= (char*)"UNDOFILE";
-  symbol[UNDO_SYM-START_TOKEN_NUMBER]= (char*)"UNDO";
-  symbol[UNICODE_SYM-START_TOKEN_NUMBER]= (char*)"UNICODE";
-  symbol[UNION_SYM-START_TOKEN_NUMBER]= (char*)"UNION";
-  symbol[UNIQUE_SYM-START_TOKEN_NUMBER]= (char*)"UNIQUE";
-  symbol[UNKNOWN_SYM-START_TOKEN_NUMBER]= (char*)"UNKNOWN";
-  symbol[UNLOCK_SYM-START_TOKEN_NUMBER]= (char*)"UNLOCK";
-  symbol[UNINSTALL_SYM-START_TOKEN_NUMBER]= (char*)"UNINSTALL";
-  symbol[UNSIGNED-START_TOKEN_NUMBER]= (char*)"UNSIGNED";
-  symbol[UNTIL_SYM-START_TOKEN_NUMBER]= (char*)"UNTIL";
-  symbol[UPDATE_SYM-START_TOKEN_NUMBER]= (char*)"UPDATE";
-  symbol[UPGRADE_SYM-START_TOKEN_NUMBER]= (char*)"UPGRADE";
-  symbol[USAGE-START_TOKEN_NUMBER]= (char*)"USAGE";
-  symbol[USE_SYM-START_TOKEN_NUMBER]= (char*)"USE";
-  symbol[USER-START_TOKEN_NUMBER]= (char*)"USER";
-  symbol[RESOURCES-START_TOKEN_NUMBER]= (char*)"USER_RESOURCES";
-  symbol[USE_FRM-START_TOKEN_NUMBER]= (char*)"USE_FRM";
-  symbol[USING-START_TOKEN_NUMBER]= (char*)"USING";
-  symbol[UTC_DATE_SYM-START_TOKEN_NUMBER]= (char*)"UTC_DATE";
-  symbol[UTC_TIME_SYM-START_TOKEN_NUMBER]= (char*)"UTC_TIME";
-  symbol[UTC_TIMESTAMP_SYM-START_TOKEN_NUMBER]= (char*)"UTC_TIMESTAMP";
-  symbol[VALUE_SYM-START_TOKEN_NUMBER]= (char*)"VALUE";
-  symbol[VALUES-START_TOKEN_NUMBER]= (char*)"VALUES";
-  symbol[VARBINARY-START_TOKEN_NUMBER]= (char*)"VARBINARY";
-  symbol[VARCHAR-START_TOKEN_NUMBER]= (char*)"VARCHAR";
-  symbol[VARCHAR-START_TOKEN_NUMBER]= (char*)"VARCHARACTER";
-  symbol[VARIABLES-START_TOKEN_NUMBER]= (char*)"VARIABLES";
-  symbol[VARYING-START_TOKEN_NUMBER]= (char*)"VARYING";
-  symbol[WAIT_SYM-START_TOKEN_NUMBER]= (char*)"WAIT";
-  symbol[WARNINGS-START_TOKEN_NUMBER]= (char*)"WARNINGS";
-  symbol[WEEK_SYM-START_TOKEN_NUMBER]= (char*)"WEEK";
-  symbol[WEIGHT_STRING_SYM-START_TOKEN_NUMBER]= (char*)"WEIGHT_STRING";
-  symbol[WHEN_SYM-START_TOKEN_NUMBER]= (char*)"WHEN";
-  symbol[WHERE-START_TOKEN_NUMBER]= (char*)"WHERE";
-  symbol[WHILE_SYM-START_TOKEN_NUMBER]= (char*)"WHILE";
-  symbol[VIEW_SYM-START_TOKEN_NUMBER]= (char*)"VIEW";
-  symbol[WITH-START_TOKEN_NUMBER]= (char*)"WITH";
-  symbol[WORK_SYM-START_TOKEN_NUMBER]= (char*)"WORK";
-  symbol[WRAPPER_SYM-START_TOKEN_NUMBER]= (char*)"WRAPPER";
-  symbol[WRITE_SYM-START_TOKEN_NUMBER]= (char*)"WRITE";
-  symbol[X509_SYM-START_TOKEN_NUMBER]= (char*)"X509";
-  symbol[XOR-START_TOKEN_NUMBER]= (char*)"XOR";
-  symbol[XA_SYM-START_TOKEN_NUMBER]= (char*)"XA";
-  symbol[XML_SYM-START_TOKEN_NUMBER]= (char*)"XML";
-  symbol[YEAR_SYM-START_TOKEN_NUMBER]= (char*)"YEAR";
-  symbol[YEAR_MONTH_SYM-START_TOKEN_NUMBER]= (char*)"YEAR_MONTH";
-  symbol[ZEROFILL-START_TOKEN_NUMBER]= (char*)"ZEROFILL";
-  symbol[OR_OR_SYM-START_TOKEN_NUMBER]= (char*)"||";
-  symbol[ADDDATE_SYM-START_TOKEN_NUMBER]= (char*)"ADDDATE";
-  symbol[BIT_AND-START_TOKEN_NUMBER]= (char*)"BIT_AND";
-  symbol[BIT_OR-START_TOKEN_NUMBER]= (char*)"BIT_OR";
-  symbol[BIT_XOR-START_TOKEN_NUMBER]= (char*)"BIT_XOR";
-  symbol[CAST_SYM-START_TOKEN_NUMBER]= (char*)"CAST";
-  symbol[COUNT_SYM-START_TOKEN_NUMBER]= (char*)"COUNT";
-  symbol[CURDATE-START_TOKEN_NUMBER]= (char*)"CURDATE";
-  symbol[CURTIME-START_TOKEN_NUMBER]= (char*)"CURTIME";
-  symbol[DATE_ADD_INTERVAL-START_TOKEN_NUMBER]= (char*)"DATE_ADD";
-  symbol[DATE_SUB_INTERVAL-START_TOKEN_NUMBER]= (char*)"DATE_SUB";
-  symbol[EXTRACT_SYM-START_TOKEN_NUMBER]= (char*)"EXTRACT";
-  symbol[GROUP_CONCAT_SYM-START_TOKEN_NUMBER]= (char*)"GROUP_CONCAT";
-  symbol[MAX_SYM-START_TOKEN_NUMBER]= (char*)"MAX";
-  symbol[SUBSTRING-START_TOKEN_NUMBER]= (char*)"MID";
-  symbol[MIN_SYM-START_TOKEN_NUMBER]= (char*)"MIN";
-  symbol[NOW_SYM-START_TOKEN_NUMBER]= (char*)"NOW";
-  symbol[POSITION_SYM-START_TOKEN_NUMBER]= (char*)"POSITION";
-  symbol[USER-START_TOKEN_NUMBER]= (char*)"SESSION_USER";
-  symbol[STD_SYM-START_TOKEN_NUMBER]= (char*)"STD";
-  symbol[STD_SYM-START_TOKEN_NUMBER]= (char*)"STDDEV";
-  symbol[STD_SYM-START_TOKEN_NUMBER]= (char*)"STDDEV_POP";
-  symbol[STDDEV_SAMP_SYM-START_TOKEN_NUMBER]= (char*)"STDDEV_SAMP";
-  symbol[SUBDATE_SYM-START_TOKEN_NUMBER]= (char*)"SUBDATE";
-  symbol[SUBSTRING-START_TOKEN_NUMBER]= (char*)"SUBSTR";
-  symbol[SUBSTRING-START_TOKEN_NUMBER]= (char*)"SUBSTRING";
-  symbol[SUM_SYM-START_TOKEN_NUMBER]= (char*)"SUM";
-  symbol[SYSDATE-START_TOKEN_NUMBER]= (char*)"SYSDATE";
-  symbol[USER-START_TOKEN_NUMBER]= (char*)"SYSTEM_USER";
-  symbol[TRIM-START_TOKEN_NUMBER]= (char*)"TRIM";
-  symbol[VARIANCE_SYM-START_TOKEN_NUMBER]= (char*)"VARIANCE";
-  symbol[VARIANCE_SYM-START_TOKEN_NUMBER]= (char*)"VAR_POP";
-  symbol[VAR_SAMP_SYM-START_TOKEN_NUMBER]= (char*)"VAR_SAMP";
-}

=== removed file 'storage/perfschema/p_lex.h'
--- a/storage/perfschema/p_lex.h	2011-12-02 13:37:06 +0000
+++ b/storage/perfschema/p_lex.h	1970-01-01 00:00:00 +0000
@@ -1,617 +0,0 @@
-/*
- This is an auto generated file. Please do not modify it directly.
-*/
-
-
-/* Tokens' Definitions start.*/
-#define ABORT_SYM 258
-#define ACCESSIBLE_SYM 259
-#define ACTION 260
-#define ADD 261
-#define ADDDATE_SYM 262
-#define AFTER_SYM 263
-#define AGAINST 264
-#define AGGREGATE_SYM 265
-#define ALGORITHM_SYM 266
-#define ALL 267
-#define ALTER 268
-#define ANALYZE_SYM 269
-#define AND_AND_SYM 270
-#define AND_SYM 271
-#define ANY_SYM 272
-#define AS 273
-#define ASC 274
-#define ASCII_SYM 275
-#define ASENSITIVE_SYM 276
-#define AT_SYM 277
-#define AUTHORS_SYM 278
-#define AUTOEXTEND_SIZE_SYM 279
-#define AUTO_INC 280
-#define AVG_ROW_LENGTH 281
-#define AVG_SYM 282
-#define BACKUP_SYM 283
-#define BEFORE_SYM 284
-#define BEGIN_SYM 285
-#define BETWEEN_SYM 286
-#define BIGINT 287
-#define BINARY 288
-#define BINLOG_SYM 289
-#define BIN_NUM 290
-#define BIT_AND 291
-#define BIT_OR 292
-#define BIT_SYM 293
-#define BIT_XOR 294
-#define BLOB_SYM 295
-#define BLOCK_SYM 296
-#define BOOLEAN_SYM 297
-#define BOOL_SYM 298
-#define BOTH 299
-#define BTREE_SYM 300
-#define BY 301
-#define BYTE_SYM 302
-#define CACHE_SYM 303
-#define CALL_SYM 304
-#define CASCADE 305
-#define CASCADED 306
-#define CASE_SYM 307
-#define CAST_SYM 308
-#define CATALOG_NAME_SYM 309
-#define CHAIN_SYM 310
-#define CHANGE 311
-#define CHANGED 312
-#define CHARSET 313
-#define CHAR_SYM 314
-#define CHECKSUM_SYM 315
-#define CHECK_SYM 316
-#define CIPHER_SYM 317
-#define CLASS_ORIGIN_SYM 318
-#define CLIENT_SYM 319
-#define CLOSE_SYM 320
-#define COALESCE 321
-#define CODE_SYM 322
-#define COLLATE_SYM 323
-#define COLLATION_SYM 324
-#define COLUMNS 325
-#define COLUMN_SYM 326
-#define COLUMN_NAME_SYM 327
-#define COMMENT_SYM 328
-#define COMMITTED_SYM 329
-#define COMMIT_SYM 330
-#define COMPACT_SYM 331
-#define COMPLETION_SYM 332
-#define COMPRESSED_SYM 333
-#define CONCURRENT 334
-#define CONDITION_SYM 335
-#define CONNECTION_SYM 336
-#define CONSISTENT_SYM 337
-#define CONSTRAINT 338
-#define CONSTRAINT_CATALOG_SYM 339
-#define CONSTRAINT_NAME_SYM 340
-#define CONSTRAINT_SCHEMA_SYM 341
-#define CONTAINS_SYM 342
-#define CONTEXT_SYM 343
-#define CONTINUE_SYM 344
-#define CONTRIBUTORS_SYM 345
-#define CONVERT_SYM 346
-#define COUNT_SYM 347
-#define CPU_SYM 348
-#define CREATE 349
-#define CROSS 350
-#define CUBE_SYM 351
-#define CURDATE 352
-#define CURRENT_SYM 353
-#define CURRENT_USER 354
-#define CURSOR_SYM 355
-#define CURSOR_NAME_SYM 356
-#define CURTIME 357
-#define DATABASE 358
-#define DATABASES 359
-#define DATAFILE_SYM 360
-#define DATA_SYM 361
-#define DATETIME 362
-#define DATE_ADD_INTERVAL 363
-#define DATE_SUB_INTERVAL 364
-#define DATE_SYM 365
-#define DAY_HOUR_SYM 366
-#define DAY_MICROSECOND_SYM 367
-#define DAY_MINUTE_SYM 368
-#define DAY_SECOND_SYM 369
-#define DAY_SYM 370
-#define DEALLOCATE_SYM 371
-#define DECIMAL_NUM 372
-#define DECIMAL_SYM 373
-#define DECLARE_SYM 374
-#define DEFAULT 375
-#define DEFAULT_AUTH_SYM 376
-#define DEFINER_SYM 377
-#define DELAYED_SYM 378
-#define DELAY_KEY_WRITE_SYM 379
-#define DELETE_SYM 380
-#define DESC 381
-#define DESCRIBE 382
-#define DES_KEY_FILE 383
-#define DETERMINISTIC_SYM 384
-#define DIAGNOSTICS_SYM 385
-#define DIRECTORY_SYM 386
-#define DISABLE_SYM 387
-#define DISCARD 388
-#define DISK_SYM 389
-#define DISTINCT 390
-#define DIV_SYM 391
-#define DOUBLE_SYM 392
-#define DO_SYM 393
-#define DROP 394
-#define DUAL_SYM 395
-#define DUMPFILE 396
-#define DUPLICATE_SYM 397
-#define DYNAMIC_SYM 398
-#define EACH_SYM 399
-#define ELSE 400
-#define ELSEIF_SYM 401
-#define ENABLE_SYM 402
-#define ENCLOSED 403
-#define END 404
-#define ENDS_SYM 405
-#define END_OF_INPUT 406
-#define ENGINES_SYM 407
-#define ENGINE_SYM 408
-#define ENUM 409
-#define EQ 410
-#define EQUAL_SYM 411
-#define ERROR_SYM 412
-#define ERRORS 413
-#define ESCAPED 414
-#define ESCAPE_SYM 415
-#define EVENTS_SYM 416
-#define EVENT_SYM 417
-#define EVERY_SYM 418
-#define EXCHANGE_SYM 419
-#define EXECUTE_SYM 420
-#define EXISTS 421
-#define EXIT_SYM 422
-#define EXPANSION_SYM 423
-#define EXTENDED_SYM 424
-#define EXTENT_SIZE_SYM 425
-#define EXTRACT_SYM 426
-#define FALSE_SYM 427
-#define FAST_SYM 428
-#define FAULTS_SYM 429
-#define FETCH_SYM 430
-#define FILE_SYM 431
-#define FIRST_SYM 432
-#define FIXED_SYM 433
-#define FLOAT_NUM 434
-#define FLOAT_SYM 435
-#define FLUSH_SYM 436
-#define FORCE_SYM 437
-#define FOREIGN 438
-#define FOR_SYM 439
-#define FOUND_SYM 440
-#define FROM 441
-#define FULL 442
-#define FULLTEXT_SYM 443
-#define FUNCTION_SYM 444
-#define GE 445
-#define GENERAL 446
-#define GEOMETRYCOLLECTION 447
-#define GEOMETRY_SYM 448
-#define GET_FORMAT 449
-#define GET_SYM 450
-#define GLOBAL_SYM 451
-#define GRANT 452
-#define GRANTS 453
-#define GROUP_SYM 454
-#define GROUP_CONCAT_SYM 455
-#define GT_SYM 456
-#define HANDLER_SYM 457
-#define HASH_SYM 458
-#define HAVING 459
-#define HELP_SYM 460
-#define HEX_NUM 461
-#define HIGH_PRIORITY 462
-#define HOST_SYM 463
-#define HOSTS_SYM 464
-#define HOUR_MICROSECOND_SYM 465
-#define HOUR_MINUTE_SYM 466
-#define HOUR_SECOND_SYM 467
-#define HOUR_SYM 468
-#define IDENT 469
-#define IDENTIFIED_SYM 470
-#define IDENT_QUOTED 471
-#define IF 472
-#define IGNORE_SYM 473
-#define IGNORE_SERVER_IDS_SYM 474
-#define IMPORT 475
-#define INDEXES 476
-#define INDEX_SYM 477
-#define INFILE 478
-#define INITIAL_SIZE_SYM 479
-#define INNER_SYM 480
-#define INOUT_SYM 481
-#define INSENSITIVE_SYM 482
-#define INSERT 483
-#define INSERT_METHOD 484
-#define INSTALL_SYM 485
-#define INTERVAL_SYM 486
-#define INTO 487
-#define INT_SYM 488
-#define INVOKER_SYM 489
-#define IN_SYM 490
-#define IO_SYM 491
-#define IPC_SYM 492
-#define IS 493
-#define ISOLATION 494
-#define ISSUER_SYM 495
-#define ITERATE_SYM 496
-#define JOIN_SYM 497
-#define KEYS 498
-#define KEY_BLOCK_SIZE 499
-#define KEY_SYM 500
-#define KILL_SYM 501
-#define LANGUAGE_SYM 502
-#define LAST_SYM 503
-#define LE 504
-#define LEADING 505
-#define LEAVES 506
-#define LEAVE_SYM 507
-#define LEFT 508
-#define LESS_SYM 509
-#define LEVEL_SYM 510
-#define LEX_HOSTNAME 511
-#define LIKE 512
-#define LIMIT 513
-#define LINEAR_SYM 514
-#define LINES 515
-#define LINESTRING 516
-#define LIST_SYM 517
-#define LOAD 518
-#define LOCAL_SYM 519
-#define LOCATOR_SYM 520
-#define LOCKS_SYM 521
-#define LOCK_SYM 522
-#define LOGFILE_SYM 523
-#define LOGS_SYM 524
-#define LONGBLOB 525
-#define LONGTEXT 526
-#define LONG_NUM 527
-#define LONG_SYM 528
-#define LOOP_SYM 529
-#define LOW_PRIORITY 530
-#define LT 531
-#define MASTER_BIND_SYM 532
-#define MASTER_CONNECT_RETRY_SYM 533
-#define MASTER_DELAY_SYM 534
-#define MASTER_HOST_SYM 535
-#define MASTER_LOG_FILE_SYM 536
-#define MASTER_LOG_POS_SYM 537
-#define MASTER_PASSWORD_SYM 538
-#define MASTER_PORT_SYM 539
-#define MASTER_RETRY_COUNT_SYM 540
-#define MASTER_SERVER_ID_SYM 541
-#define MASTER_SSL_CAPATH_SYM 542
-#define MASTER_SSL_CA_SYM 543
-#define MASTER_SSL_CERT_SYM 544
-#define MASTER_SSL_CIPHER_SYM 545
-#define MASTER_SSL_CRL_SYM 546
-#define MASTER_SSL_CRLPATH_SYM 547
-#define MASTER_SSL_KEY_SYM 548
-#define MASTER_SSL_SYM 549
-#define MASTER_SSL_VERIFY_SERVER_CERT_SYM 550
-#define MASTER_SYM 551
-#define MASTER_USER_SYM 552
-#define MASTER_HEARTBEAT_PERIOD_SYM 553
-#define MATCH 554
-#define MAX_CONNECTIONS_PER_HOUR 555
-#define MAX_QUERIES_PER_HOUR 556
-#define MAX_ROWS 557
-#define MAX_SIZE_SYM 558
-#define MAX_SYM 559
-#define MAX_UPDATES_PER_HOUR 560
-#define MAX_USER_CONNECTIONS_SYM 561
-#define MAX_VALUE_SYM 562
-#define MEDIUMBLOB 563
-#define MEDIUMINT 564
-#define MEDIUMTEXT 565
-#define MEDIUM_SYM 566
-#define MEMORY_SYM 567
-#define MERGE_SYM 568
-#define MESSAGE_TEXT_SYM 569
-#define MICROSECOND_SYM 570
-#define MIGRATE_SYM 571
-#define MINUTE_MICROSECOND_SYM 572
-#define MINUTE_SECOND_SYM 573
-#define MINUTE_SYM 574
-#define MIN_ROWS 575
-#define MIN_SYM 576
-#define MODE_SYM 577
-#define MODIFIES_SYM 578
-#define MODIFY_SYM 579
-#define MOD_SYM 580
-#define MONTH_SYM 581
-#define MULTILINESTRING 582
-#define MULTIPOINT 583
-#define MULTIPOLYGON 584
-#define MUTEX_SYM 585
-#define MYSQL_ERRNO_SYM 586
-#define NAMES_SYM 587
-#define NAME_SYM 588
-#define NATIONAL_SYM 589
-#define NATURAL 590
-#define NCHAR_STRING 591
-#define NCHAR_SYM 592
-#define NDBCLUSTER_SYM 593
-#define NE 594
-#define NEG 595
-#define NEW_SYM 596
-#define NEXT_SYM 597
-#define NODEGROUP_SYM 598
-#define NONE_SYM 599
-#define NOT2_SYM 600
-#define NOT_SYM 601
-#define NOW_SYM 602
-#define NO_SYM 603
-#define NO_WAIT_SYM 604
-#define NO_WRITE_TO_BINLOG 605
-#define NULL_SYM 606
-#define NUM 607
-#define NUMBER_SYM 608
-#define NUMERIC_SYM 609
-#define NVARCHAR_SYM 610
-#define OFFSET_SYM 611
-#define OLD_PASSWORD 612
-#define ON 613
-#define ONE_SHOT_SYM 614
-#define ONE_SYM 615
-#define OPEN_SYM 616
-#define OPTIMIZE 617
-#define OPTIONS_SYM 618
-#define OPTION 619
-#define OPTIONALLY 620
-#define OR2_SYM 621
-#define ORDER_SYM 622
-#define OR_OR_SYM 623
-#define OR_SYM 624
-#define OUTER 625
-#define OUTFILE 626
-#define OUT_SYM 627
-#define OWNER_SYM 628
-#define PACK_KEYS_SYM 629
-#define PAGE_SYM 630
-#define PARAM_MARKER 631
-#define PARSER_SYM 632
-#define PARTIAL 633
-#define PARTITION_SYM 634
-#define PARTITIONS_SYM 635
-#define PARTITIONING_SYM 636
-#define PASSWORD 637
-#define PHASE_SYM 638
-#define PLUGIN_DIR_SYM 639
-#define PLUGIN_SYM 640
-#define PLUGINS_SYM 641
-#define POINT_SYM 642
-#define POLYGON 643
-#define PORT_SYM 644
-#define POSITION_SYM 645
-#define PRECISION 646
-#define PREPARE_SYM 647
-#define PRESERVE_SYM 648
-#define PREV_SYM 649
-#define PRIMARY_SYM 650
-#define PRIVILEGES 651
-#define PROCEDURE_SYM 652
-#define PROCESS 653
-#define PROCESSLIST_SYM 654
-#define PROFILE_SYM 655
-#define PROFILES_SYM 656
-#define PROXY_SYM 657
-#define PURGE 658
-#define QUARTER_SYM 659
-#define QUERY_SYM 660
-#define QUICK 661
-#define RANGE_SYM 662
-#define READS_SYM 663
-#define READ_ONLY_SYM 664
-#define READ_SYM 665
-#define READ_WRITE_SYM 666
-#define REAL 667
-#define REBUILD_SYM 668
-#define RECOVER_SYM 669
-#define REDOFILE_SYM 670
-#define REDO_BUFFER_SIZE_SYM 671
-#define REDUNDANT_SYM 672
-#define REFERENCES 673
-#define REGEXP 674
-#define RELAY 675
-#define RELAYLOG_SYM 676
-#define RELAY_LOG_FILE_SYM 677
-#define RELAY_LOG_POS_SYM 678
-#define RELAY_THREAD 679
-#define RELEASE_SYM 680
-#define RELOAD 681
-#define REMOVE_SYM 682
-#define RENAME 683
-#define REORGANIZE_SYM 684
-#define REPAIR 685
-#define REPEATABLE_SYM 686
-#define REPEAT_SYM 687
-#define REPLACE 688
-#define REPLICATION 689
-#define REQUIRE_SYM 690
-#define RESET_SYM 691
-#define RESIGNAL_SYM 692
-#define RESOURCES 693
-#define RESTORE_SYM 694
-#define RESTRICT 695
-#define RESUME_SYM 696
-#define RETURNED_SQLSTATE_SYM 697
-#define RETURNS_SYM 698
-#define RETURN_SYM 699
-#define REVERSE_SYM 700
-#define REVOKE 701
-#define RIGHT 702
-#define ROLLBACK_SYM 703
-#define ROLLUP_SYM 704
-#define ROUTINE_SYM 705
-#define ROWS_SYM 706
-#define ROW_FORMAT_SYM 707
-#define ROW_SYM 708
-#define ROW_COUNT_SYM 709
-#define RTREE_SYM 710
-#define SAVEPOINT_SYM 711
-#define SCHEDULE_SYM 712
-#define SCHEMA_NAME_SYM 713
-#define SECOND_MICROSECOND_SYM 714
-#define SECOND_SYM 715
-#define SECURITY_SYM 716
-#define SELECT_SYM 717
-#define SENSITIVE_SYM 718
-#define SEPARATOR_SYM 719
-#define SERIALIZABLE_SYM 720
-#define SERIAL_SYM 721
-#define SESSION_SYM 722
-#define SERVER_SYM 723
-#define SERVER_OPTIONS 724
-#define SET 725
-#define SET_VAR 726
-#define SHARE_SYM 727
-#define SHIFT_LEFT 728
-#define SHIFT_RIGHT 729
-#define SHOW 730
-#define SHUTDOWN 731
-#define SIGNAL_SYM 732
-#define SIGNED_SYM 733
-#define SIMPLE_SYM 734
-#define SLAVE 735
-#define SLOW 736
-#define SMALLINT 737
-#define SNAPSHOT_SYM 738
-#define SOCKET_SYM 739
-#define SONAME_SYM 740
-#define SOUNDS_SYM 741
-#define SOURCE_SYM 742
-#define SPATIAL_SYM 743
-#define SPECIFIC_SYM 744
-#define SQLEXCEPTION_SYM 745
-#define SQLSTATE_SYM 746
-#define SQLWARNING_SYM 747
-#define SQL_BIG_RESULT 748
-#define SQL_BUFFER_RESULT 749
-#define SQL_CACHE_SYM 750
-#define SQL_CALC_FOUND_ROWS 751
-#define SQL_NO_CACHE_SYM 752
-#define SQL_SMALL_RESULT 753
-#define SQL_SYM 754
-#define SQL_THREAD 755
-#define SSL_SYM 756
-#define STARTING 757
-#define STARTS_SYM 758
-#define START_SYM 759
-#define STATUS_SYM 760
-#define STDDEV_SAMP_SYM 761
-#define STD_SYM 762
-#define STOP_SYM 763
-#define STORAGE_SYM 764
-#define STRAIGHT_JOIN 765
-#define STRING_SYM 766
-#define SUBCLASS_ORIGIN_SYM 767
-#define SUBDATE_SYM 768
-#define SUBJECT_SYM 769
-#define SUBPARTITIONS_SYM 770
-#define SUBPARTITION_SYM 771
-#define SUBSTRING 772
-#define SUM_SYM 773
-#define SUPER_SYM 774
-#define SUSPEND_SYM 775
-#define SWAPS_SYM 776
-#define SWITCHES_SYM 777
-#define SYSDATE 778
-#define TABLES 779
-#define TABLESPACE 780
-#define TABLE_REF_PRIORITY 781
-#define TABLE_SYM 782
-#define TABLE_CHECKSUM_SYM 783
-#define TABLE_NAME_SYM 784
-#define TEMPORARY 785
-#define TEMPTABLE_SYM 786
-#define TERMINATED 787
-#define TEXT_STRING 788
-#define TEXT_SYM 789
-#define THAN_SYM 790
-#define THEN_SYM 791
-#define TIMESTAMP 792
-#define TIMESTAMP_ADD 793
-#define TIMESTAMP_DIFF 794
-#define TIME_SYM 795
-#define TINYBLOB 796
-#define TINYINT 797
-#define TINYTEXT 798
-#define TO_SYM 799
-#define TRAILING 800
-#define TRANSACTION_SYM 801
-#define TRIGGERS_SYM 802
-#define TRIGGER_SYM 803
-#define TRIM 804
-#define TRUE_SYM 805
-#define TRUNCATE_SYM 806
-#define TYPES_SYM 807
-#define TYPE_SYM 808
-#define UDF_RETURNS_SYM 809
-#define ULONGLONG_NUM 810
-#define UNCOMMITTED_SYM 811
-#define UNDEFINED_SYM 812
-#define UNDERSCORE_CHARSET 813
-#define UNDOFILE_SYM 814
-#define UNDO_BUFFER_SIZE_SYM 815
-#define UNDO_SYM 816
-#define UNICODE_SYM 817
-#define UNINSTALL_SYM 818
-#define UNION_SYM 819
-#define UNIQUE_SYM 820
-#define UNKNOWN_SYM 821
-#define UNLOCK_SYM 822
-#define UNSIGNED 823
-#define UNTIL_SYM 824
-#define UPDATE_SYM 825
-#define UPGRADE_SYM 826
-#define USAGE 827
-#define USER 828
-#define USE_FRM 829
-#define USE_SYM 830
-#define USING 831
-#define UTC_DATE_SYM 832
-#define UTC_TIMESTAMP_SYM 833
-#define UTC_TIME_SYM 834
-#define VALUES 835
-#define VALUE_SYM 836
-#define VARBINARY 837
-#define VARCHAR 838
-#define VARIABLES 839
-#define VARIANCE_SYM 840
-#define VARYING 841
-#define VAR_SAMP_SYM 842
-#define VIEW_SYM 843
-#define WAIT_SYM 844
-#define WARNINGS 845
-#define WEEK_SYM 846
-#define WEIGHT_STRING_SYM 847
-#define WHEN_SYM 848
-#define WHERE 849
-#define WHILE_SYM 850
-#define WITH 851
-#define WITH_CUBE_SYM 852
-#define WITH_ROLLUP_SYM 853
-#define WORK_SYM 854
-#define WRAPPER_SYM 855
-#define WRITE_SYM 856
-#define X509_SYM 857
-#define XA_SYM 858
-#define XML_SYM 859
-#define XOR 860
-#define YEAR_MONTH_SYM 861
-#define YEAR_SYM 862
-#define ZEROFILL 863
-/* Tokens' Definitions end.*/
-
-
-
-void initialize_lex_symbol();

=== modified file 'storage/perfschema/pfs_digest.cc'
--- a/storage/perfschema/pfs_digest.cc	2012-01-04 10:31:04 +0000
+++ b/storage/perfschema/pfs_digest.cc	2012-01-09 07:25:42 +0000
@@ -47,44 +47,96 @@
 /** 
   Macro to read a single token from token array.
 */
-#define READ_TOKEN(_src, _index, _dest)                          \
-{                                                                \
-  short _sh;                                                     \
-  _sh= ((0x00ff & _src[_index+1])<<8) | (0x00ff & _src[_index]); \
-  _dest= (int)(_sh);                                             \
-  _index+= 2;                                                    \
+#define READ_TOKEN(_dest, _index, _src)                                \
+{                                                                      \
+  short _sh;                                                           \
+  _sh= ((0x00ff & _src[_index+1])<<8) | (0x00ff & _src[_index]);       \
+  _dest= (int)(_sh);                                                   \
+  _index+= PFS_SIZE_OF_A_TOKEN;                                        \
 }
 
 /**
   Macro to store a single token in token array.
 */
-#define STORE_TOKEN(_dest, _index, _token)                       \
-{                                                                \
-  short _sh= (short)_token;                                      \
-  _dest[_index++]= (_sh) & 0xff;                                 \
-  _dest[_index++]= (_sh>>8) & 0xff;                              \
+#define STORE_TOKEN(_dest, _index, _token)                             \
+{                                                                      \
+  short _sh= (short)_token;                                            \
+  _dest[_index++]= (_sh) & 0xff;                                       \
+  _dest[_index++]= (_sh>>8) & 0xff;                                    \
 }
 
 /**
   Macro to read an identifier from token array.
 */
-#define READ_IDENTIFIER(_src, _index, _dest)                     \
-{                                                                \
-  int _length;                                                   \
-  READ_TOKEN(_src, _index, _length);                             \
-  strncpy(_dest, _src+_index, _length);                          \
-  _index+= _length;                                              \
-  _dest+= _length;                                               \
+#define READ_IDENTIFIER(_dest, _index, _src)                           \
+{                                                                      \
+  int _length;                                                         \
+  int remaining_bytes= PFS_MAX_DIGEST_STORAGE_SIZE-_index;             \
+  DBUG_ASSERT(remaining_bytes >= 0);                                   \
+  /*                                                                   \
+    Read ID's length.                                                  \
+    Make sure that space, to read ID's length, is available.           \
+  */                                                                   \
+  if(remaining_bytes >= PFS_SIZE_OF_A_TOKEN)                           \
+  {                                                                    \
+    READ_TOKEN(_length, _index, _src);                                 \
+    /*                                                                 \
+      While storing ID length, it has already been stored              \
+      in a way that ID doesn't go beyond the storage size,             \
+      so no need to check length here.                                 \
+    */                                                                 \
+    strncpy(_dest, _src+_index, _length);                              \
+    _index+= _length;                                                  \
+    _dest+= _length;                                                   \
+  }                                                                    \
 }
 
 /**
   Macro to store an identifier in token array.
 */
-#define STORE_IDENTIFIER(_dest, _index, _length, _id)            \
-{                                                                \
-  STORE_TOKEN(_dest, _index, _length);                           \
-  strncpy(_dest+_index, _id, _length);                           \
-  _index+= _length;                                              \
+#define STORE_IDENTIFIER(_dest, _index, _length, _id)                  \
+{                                                                      \
+  int remaining_bytes= PFS_MAX_DIGEST_STORAGE_SIZE-_index;             \
+  DBUG_ASSERT(remaining_bytes >= 0);                                   \
+  /*                                                                   \
+    Store ID's length.                                                 \
+    Make sure that space, to store ID's length, is available.          \
+  */                                                                   \
+  if(remaining_bytes >= PFS_SIZE_OF_A_TOKEN)                           \
+  {                                                                    \
+    /*                                                                 \
+       Make sure to store ID length/ID as per the space                \
+       available.                                                      \
+    */                                                                 \
+    remaining_bytes-= PFS_SIZE_OF_A_TOKEN;                             \
+    _length= _length>remaining_bytes?remaining_bytes:_length;          \
+    STORE_TOKEN(_dest, _index, _length);                               \
+    strncpy(_dest+_index, _id, _length);                               \
+    _index+= _length;                                                  \
+  }                                                                    \
+}
+
+/**
+  Macro to read last two tokens from token array. If an identifier
+  is found, do not look for token after that.
+*/
+#define READ_LAST_TWO_TOKENS(_t1, _t2, _id_index, _byte_count)         \
+{                                                                      \
+  int _last_token_index;                                               \
+  if(_id_index <= _byte_count - PFS_SIZE_OF_A_TOKEN)                   \
+  {                                                                    \
+    /* Take last token. */                                             \
+    _last_token_index= _byte_count - PFS_SIZE_OF_A_TOKEN;              \
+    DBUG_ASSERT(_last_token_index >= 0);                               \
+    READ_TOKEN(_t1, _last_token_index, digest_storage->m_token_array); \
+  }                                                                    \
+  if(_id_index <= _byte_count - 2*PFS_SIZE_OF_A_TOKEN)                 \
+  {                                                                    \
+    /* Take 2nd token from last. */                                    \
+    _last_token_index= _byte_count - 2*PFS_SIZE_OF_A_TOKEN;            \
+    DBUG_ASSERT(_last_token_index >= 0);                               \
+    READ_TOKEN(_t2, _last_token_index, digest_storage->m_token_array); \
+  }                                                                    \
 }
 
 unsigned int statements_digest_size= 0;
@@ -104,9 +156,7 @@ static bool digest_hash_inited= false;
 
 static void get_digest_text(char* digest_text,
                             char* token_array,
-                            int token_count,
                             int byte_count);
-const char* symbol[MAX_TOKEN_COUNT];
 
 /**
   Initialize table EVENTS_STATEMENTS_SUMMARY_BY_DIGEST.
@@ -203,26 +253,17 @@ static LF_PINS* get_digest_hash_pins(PFS
 
 PFS_statements_digest_stat* 
 find_or_create_digest(PFS_thread* thread, PFS_digest_storage* digest_storage)
-/*
-                               unsigned char* hash_key,
-                               unsigned int* token_array,
-                               int token_count,
-                               char* digest_text,
-                               unsigned int digest_text_length)
-*/
 {
   /* get digest pin. */
   LF_PINS *pins= get_digest_hash_pins(thread);
   /* There shoulod be at least one token. */
-  if(unlikely(pins == NULL) || !(digest_storage->m_token_count > 0))
+  if(unlikely(pins == NULL) || 
+     !(digest_storage->m_byte_count >= PFS_SIZE_OF_A_TOKEN))
   {
     return NULL;
   }
 
   unsigned char* hash_key= digest_storage->m_digest_hash.m_md5;
-  char* token_array= digest_storage->m_token_array; 
-  int token_count= digest_storage->m_token_count;
-  int byte_count= digest_storage->m_byte_count;
  
   PFS_statements_digest_stat **entry;
   PFS_statements_digest_stat *pfs= NULL;
@@ -255,7 +296,9 @@ find_or_create_digest(PFS_thread* thread
     pfs= &statements_digest_stat_array[digest_index];
     
     /* Calculate and set digest text. */
-    get_digest_text(pfs->m_digest_text,token_array,token_count,byte_count);
+    get_digest_text(pfs->m_digest_text,
+                    digest_storage->m_token_array,
+                    digest_storage->m_byte_count);
     pfs->m_digest_text_length= strlen(pfs->m_digest_text);
 
     /* Set digest hash/LF Hash search key. */
@@ -308,17 +351,17 @@ void reset_esms_by_digest()
 */
 static void get_digest_text(char* digest_text,
                             char* token_array,
-                            int token_count,
                             int byte_count)
 {
-  int i;
   int tok;
-  int current_byte;
+  int current_byte= 0;
   lex_token_string *tok_data;
 
-  for (i= 0, current_byte= 0; i<token_count; i++)
+  DBUG_ASSERT(byte_count <= PFS_MAX_DIGEST_STORAGE_SIZE);
+
+  while(current_byte<byte_count)
   {
-    READ_TOKEN(token_array, current_byte, tok);
+    READ_TOKEN(tok, current_byte, token_array);
     tok_data= & lex_token_array[tok];
 
     switch (tok)
@@ -341,7 +384,7 @@ static void get_digest_text(char* digest
     /* All identifiers are printed with their name. */
     case IDENT:
     case IDENT_QUOTED:
-      READ_IDENTIFIER(token_array, current_byte, digest_text);
+      READ_IDENTIFIER(digest_text, current_byte, token_array);
       *digest_text= ' ';
       digest_text++;
       break;
@@ -398,11 +441,10 @@ struct PSI_digest_locker* pfs_digest_sta
   /*
     Initialize token array and token count to 0.
   */
-  digest_storage->m_token_count= PFS_MAX_TOKEN_COUNT;
-  digest_storage->m_byte_count= 0;
+  digest_storage->m_byte_count= PFS_MAX_DIGEST_STORAGE_SIZE;
   digest_storage->m_last_id_index= 0;
-  while(digest_storage->m_token_count)
-    digest_storage->m_token_array[--digest_storage->m_token_count]= 0;
+  while(digest_storage->m_byte_count)
+    digest_storage->m_token_array[--digest_storage->m_byte_count]= 0;
 
   /*
     Set digest_locker_state's statement info pointer.
@@ -430,7 +472,8 @@ void pfs_digest_add_token_v1(PSI_digest_
   pfs= reinterpret_cast<PFS_events_statements *>(state->m_statement);
   digest_storage= &pfs->m_digest_storage;
 
-  if( digest_storage->m_token_count >= PFS_MAX_TOKEN_COUNT )
+  if( PFS_MAX_DIGEST_STORAGE_SIZE - digest_storage->m_byte_count <
+      PFS_SIZE_OF_A_TOKEN)
   {
     /*
       If digest storage record is full, do nothing.
@@ -442,32 +485,12 @@ void pfs_digest_add_token_v1(PSI_digest_
      Take last_token 3 tokens collected till now. These tokens will be used
      in reduce for normalisation. Make sure not to consider ID tokens in reduce.
   */
-  uint last_token_index; 
   uint last_token = TOK_PFS_UNUSED;
   uint last_token2= TOK_PFS_UNUSED;
-  uint last_token3= TOK_PFS_UNUSED;
   
-  if((digest_storage->m_last_id_index <= digest_storage->m_byte_count-2) &&
-     (digest_storage->m_token_count >= 1))
-  {
-    /* Take last token. */
-    last_token_index= digest_storage->m_byte_count-2;
-    READ_TOKEN(digest_storage->m_token_array, last_token_index, last_token);
-  }
-  if((digest_storage->m_last_id_index <= digest_storage->m_byte_count-4) &&
-     (digest_storage->m_token_count >= 2))
-  {
-    /* Take 2nd token from last. */
-    last_token_index= digest_storage->m_byte_count-4;
-    READ_TOKEN(digest_storage->m_token_array, last_token_index ,last_token2);
-  }
-  if((digest_storage->m_last_id_index <= digest_storage->m_byte_count-6) &&
-     (digest_storage->m_token_count >= 3))
-  {
-    /* Take 3rd token from last. */
-    last_token_index= digest_storage->m_byte_count-6;
-    READ_TOKEN(digest_storage->m_token_array, last_token_index ,last_token3);
-  }
+  READ_LAST_TWO_TOKENS(last_token, last_token2,
+                       digest_storage->m_last_id_index,
+                       digest_storage->m_byte_count);
 
   switch (token)
   {
@@ -488,128 +511,120 @@ void pfs_digest_add_token_v1(PSI_digest_
       */
       token= TOK_PFS_GENERIC_VALUE;
 
-      if (digest_storage->m_token_count >= 2)
+      if ((last_token2 == TOK_PFS_GENERIC_VALUE ||
+           last_token2 == TOK_PFS_GENERIC_VALUE_LIST) &&
+          (last_token == ','))
       {
-        if ((last_token2 == TOK_PFS_GENERIC_VALUE ||
-             last_token2 == TOK_PFS_GENERIC_VALUE_LIST) &&
-            (last_token == ','))
+        /*
+          REDUCE:
+          TOK_PFS_GENERIC_VALUE_LIST :=
+            TOK_PFS_GENERIC_VALUE ',' TOK_PFS_GENERIC_VALUE
+          
+          REDUCE:
+          TOK_PFS_GENERIC_VALUE_LIST :=
+            TOK_PFS_GENERIC_VALUE_LIST ',' TOK_PFS_GENERIC_VALUE
+        */
+        digest_storage->m_byte_count-= 2*PFS_SIZE_OF_A_TOKEN;
+        token= TOK_PFS_GENERIC_VALUE_LIST;
+      }
+      /*
+        Add this token or the resulting reduce to digest storage.
+      */
+      STORE_TOKEN(digest_storage->m_token_array, digest_storage->m_byte_count, token);
+      break;
+    }
+    case ')':
+    {
+      if(last_token == TOK_PFS_GENERIC_VALUE &&
+         last_token2 == '(') 
+      { 
+        /*
+          REDUCE:
+            "(" "#" +  ")" => "(#)"
+        */
+        digest_storage->m_byte_count-= 2*PFS_SIZE_OF_A_TOKEN;
+        token= TOK_PFS_ROW_SINGLE_VALUE;
+      
+        /* Read last two tokens again */
+        READ_LAST_TWO_TOKENS(last_token, last_token2,
+                             digest_storage->m_last_id_index,
+                             digest_storage->m_byte_count);
+
+        if((last_token2 == TOK_PFS_ROW_SINGLE_VALUE ||
+            last_token2 == TOK_PFS_ROW_SINGLE_VALUE_LIST) &&
+           (last_token == ','))
         {
           /*
             REDUCE:
-            TOK_PFS_GENERIC_VALUE_LIST :=
-              TOK_PFS_GENERIC_VALUE ',' TOK_PFS_GENERIC_VALUE
-            
-            REDUCE:
-            TOK_PFS_GENERIC_VALUE_LIST :=
-              TOK_PFS_GENERIC_VALUE_LIST ',' TOK_PFS_GENERIC_VALUE
-          */
-          digest_storage->m_token_count-= 2;
-          digest_storage->m_byte_count-= 4;
-          token= TOK_PFS_GENERIC_VALUE_LIST;
-        }
-        else if(last_token == '(')
-        {
-          /*
+              "(#)" "," + "(#)" => "(#),(#)"
             REDUCE:
-              "(" , "#" => "(#" 
+              "(#),(#)" "," + "(#)" => "(#),(#)"
           */
-          digest_storage->m_token_count-= 1;
-          digest_storage->m_byte_count-= 2;
-          token= TOK_PFS_ROW_POSSIBLE_SINGLE_VALUE;
+          digest_storage->m_byte_count-= 2*PFS_SIZE_OF_A_TOKEN;
+          token= TOK_PFS_ROW_SINGLE_VALUE_LIST;
         }
-        else if((last_token2 == TOK_PFS_ROW_POSSIBLE_SINGLE_VALUE ||
-                 last_token2 == TOK_PFS_ROW_POSSIBLE_MULTIPLE_VALUE) &&
-                (last_token == ','))
+      }
+      else if(last_token == TOK_PFS_GENERIC_VALUE_LIST &&
+              last_token2 == '(') 
+      {
+        /*
+          REDUCE:
+            "(" "#,#" + ")" => "(#,#)"
+        */
+        digest_storage->m_byte_count-= 2*PFS_SIZE_OF_A_TOKEN;
+        token= TOK_PFS_ROW_MULTIPLE_VALUE;
+
+        /* Read last two tokens again */
+        READ_LAST_TWO_TOKENS(last_token, last_token2,
+                             digest_storage->m_last_id_index,
+                             digest_storage->m_byte_count);
+
+        if((last_token2 == TOK_PFS_ROW_MULTIPLE_VALUE ||
+            last_token2 == TOK_PFS_ROW_MULTIPLE_VALUE_LIST) &&
+           (last_token == ','))
         {
           /*
             REDUCE:
-              "(#" , "#" => "(#,#" 
+              "(#,#)" "," + "(#,#)" ) => "(#,#),(#,#)"
             REDUCE:
-              "(#,#" , "#" => "(#,#"
+              "(#,#),(#,#)" "," + "(#,#)" ) => "(#,#),(#,#)"
           */
-          digest_storage->m_token_count-= 2;
-          digest_storage->m_byte_count-= 4;
-          token= TOK_PFS_ROW_POSSIBLE_MULTIPLE_VALUE;
+          digest_storage->m_byte_count-= 2*PFS_SIZE_OF_A_TOKEN;
+          token= TOK_PFS_ROW_MULTIPLE_VALUE_LIST;
         }
       }
+      /*
+        Add this token or the resulting reduce to digest storage.
+      */
+      STORE_TOKEN(digest_storage->m_token_array, digest_storage->m_byte_count, token);
       break;
     }
-    case ')':
+    case IDENT:
+    case IDENT_QUOTED:
     {
-      if (digest_storage->m_token_count > 0)
-      {
-        if(last_token == TOK_PFS_ROW_POSSIBLE_SINGLE_VALUE) 
-        { 
-          /*
-            REDUCE:
-              "(#" , ")" => "(#)"
-          */
-          digest_storage->m_token_count-= 1;
-          digest_storage->m_byte_count-= 2;
-          token= TOK_PFS_ROW_SINGLE_VALUE;
-        
-          if (digest_storage->m_token_count >= 3)
-          {
-            if((last_token3 == TOK_PFS_ROW_SINGLE_VALUE ||
-                last_token3 == TOK_PFS_ROW_SINGLE_VALUE_LIST) &&
-               (last_token2 == ','))
-            {
-              /*
-                REDUCE:
-                  "(#)" , "(#)" => "(#),(#)"
-                REDUCE:
-                  "(#),(#)" , "(#)" => "(#),(#)"
-              */
-              digest_storage->m_token_count-= 2;
-              digest_storage->m_byte_count-= 4;
-              token= TOK_PFS_ROW_SINGLE_VALUE_LIST;
-            }
-          }
-        }
-        else if(last_token == TOK_PFS_ROW_POSSIBLE_MULTIPLE_VALUE)
-        {
-          /*
-            REDUCE:
-              "(#,#" , ")" => "(#,#)"
-          */
-          digest_storage->m_token_count-= 1;
-          digest_storage->m_byte_count-= 2;
-          token= TOK_PFS_ROW_MULTIPLE_VALUE;
-  
-          if (digest_storage->m_token_count >= 3)
-          {
-            if((last_token3 == TOK_PFS_ROW_MULTIPLE_VALUE ||
-                last_token3 == TOK_PFS_ROW_MULTIPLE_VALUE_LIST) &&
-               (last_token2 == ','))
-            {
-              /*
-                REDUCE:
-                  "(#,#)" , "(#,#)" ) => "(#,#),(#,#)"
-                REDUCE:
-                  "(#,#),(#,#)" , "(#,#)" ) => "(#,#),(#,#)"
-              */
-              digest_storage->m_token_count-= 2;
-              digest_storage->m_byte_count-= 4;
-              token= TOK_PFS_ROW_MULTIPLE_VALUE_LIST;
-            }
-          }
-        }
-      }
+      /*
+        Add this token to digest storage.
+      */
+      STORE_TOKEN(digest_storage->m_token_array, digest_storage->m_byte_count, token);
+      /*
+        Add this identifier's lenght and string to digest storage.
+      */
+      STORE_IDENTIFIER(digest_storage->m_token_array, digest_storage->m_byte_count, yylen, yytext);
+      /* 
+        Update the index of last identifier found.
+      */
+      digest_storage->m_last_id_index= digest_storage->m_byte_count;
+      break;
+    }
+    default:
+    {
+      /*
+        Add this token to digest storage.
+      */
+      STORE_TOKEN(digest_storage->m_token_array, digest_storage->m_byte_count, token);
       break;
     }
   }
-
-  /*
-    Add this token or the resulting reduce to digest storage.
-  */
-  STORE_TOKEN(digest_storage->m_token_array, digest_storage->m_byte_count, token);
-  if(token == IDENT || token == IDENT_QUOTED)
-  {
-    STORE_IDENTIFIER(digest_storage->m_token_array, digest_storage->m_byte_count, yylen, yytext);
-    digest_storage->m_last_id_index= digest_storage->m_byte_count;
-  }
-
-  digest_storage->m_token_count++;
 }
 
 void pfs_digest_end_v1(PSI_digest_locker *locker)
@@ -633,10 +648,4 @@ void pfs_digest_end_v1(PSI_digest_locker
   MY_MD5_HASH(digest_storage->m_digest_hash.m_md5,
               (unsigned char *)digest_storage->m_token_array,
               (uint) sizeof(digest_storage->m_token_array));
-
-  /*
-     Not resetting digest_storage->m_token_count to 0 here as it will be done in
-     digest_start.
-  */
 }
-

=== modified file 'storage/perfschema/pfs_digest.h'
--- a/storage/perfschema/pfs_digest.h	2012-01-04 10:31:04 +0000
+++ b/storage/perfschema/pfs_digest.h	2012-01-09 07:25:42 +0000
@@ -25,8 +25,8 @@
 #include "lf.h"
 #include "pfs_stat.h"
 
-#define MAX_TOKEN_COUNT 1000
-#define START_TOKEN_NUMBER 258
+#define PFS_MAX_DIGEST_STORAGE_SIZE 1024
+#define PFS_SIZE_OF_A_TOKEN 2
 
 extern bool flag_statements_digest;
 extern unsigned int statements_digest_size;
@@ -44,12 +44,10 @@ struct {
   Structure to store token count/array for a statement
   on which digest is to be calculated.
 */
-#define PFS_MAX_TOKEN_COUNT 1024
 struct {
-         uint m_token_count;
-         uint m_byte_count;
-         uint m_last_id_index;
-         char m_token_array[PFS_MAX_TOKEN_COUNT];
+         int m_byte_count;
+         int m_last_id_index;
+         char m_token_array[PFS_MAX_DIGEST_STORAGE_SIZE];
          PFS_digest_hash m_digest_hash;
        } typedef PFS_digest_storage;
 

=== removed file 'storage/perfschema/script.perl'
--- a/storage/perfschema/script.perl	2011-12-02 13:37:06 +0000
+++ b/storage/perfschema/script.perl	1970-01-01 00:00:00 +0000
@@ -1,76 +0,0 @@
-# open p_lex.h file to write. 
-open OUTFILE,">", "p_lex.h";
-
-print OUTFILE "/*\n This is an auto generated file. Please do not modify it directly.\n*/";
-print OUTFILE "\n\n\n";
-
-# open sql_yacc.h file to read. 
-open INFILE, "../../sql/sql_yacc.h" or die $!;
-my @lines = <INFILE>;
-
-# reading Tokens' definition from sql_yacc.h and writing them to p_lex.h.
-$found= 0;
-foreach $line(@lines)
-{
-  if($line =~ /define ABORT_SYM 258/)
-  {
-    print OUTFILE "/* Tokens' Definitions start.*/\n";
-    print OUTFILE "$line";
-    $found= 1;
-    next;
-  }
-  if($found && $line eq "\n")
-  {
-    print $line;
-    print OUTFILE "/* Tokens' Definitions end.*/\n\n";
-    $found= 0;
-    last;
-  }
-  if($found)
-  {
-    print OUTFILE "$line";
-    next;
-  }
-}
-print OUTFILE "\n\nvoid initialize_lex_symbol();\n";
-close(INFILE);
-close(OUTFILE);
-
-# open p_lex.h file to write. 
-open OUTFILE,">", "p_lex.cc";
-
-print OUTFILE "/*\n This is an auto generated file. Please do not modify it directly.\n*/";
-print OUTFILE "\n\n\n";
-print OUTFILE "#include \"pfs_digest.h\"\n";
-
-# open file sql_lex.h to read. 
-open INFILE, "../../sql/lex.h" or die $!;
-my @lines = <INFILE>;
-
-print OUTFILE "\nextern const char* symbol[];\n\n";
-print OUTFILE "void initialize_lex_symbol()\n{\n";
-
-$found= 0;
-foreach $line(@lines)
-{
-  if($found)
-  {
-    @arr1= split('"',$line); 
-    @arr2= split('\(',$line);
-    @arr3= split('\)',$arr2[1]);
-    if($arr3[0] ne "") 
-    {
-      print OUTFILE "  symbol[$arr3[0]-START_TOKEN_NUMBER]= (char*)\"$arr1[1]\";\n";
-    }
-    next;
-  }
-  if($line =~ /static SYMBOL symbols\[\]/)
-  {
-    #print $line;
-    $found= 1;
-  }
-}
-print OUTFILE "}\n";
-
-close(INFILE);
-close OUTFILE;

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-trunk-wl5767 branch (mayank.prasad:3413 to 3414) WL#5767Mayank Prasad9 Jan