Implementation Details: query_cache_with_comments

class QueryStripComments

This feature adds the souce code file:


This file defines the class QueryStripComments:

class QueryStripComments
  QueryStripComments(const QueryStripComments&);
  QueryStripComments& operator=(const QueryStripComments&);
  void set(const char* a_query, uint a_query_length, uint a_additional_length);
  char* query()        { return buffer; }
  uint  query_length() { return length; }

In call

void set(const char* a_query, uint a_query_length, uint a_additional_length);

, QueryStripComments strips all comments and double-spaces from the entire query, saves this in internal buffer [Oleg: “internal buffer” = the query cache?], and also reserves spaсe for additional information.



we can call

query and query_length

to access the rewritten query.

Important - about enable/disable feature

If the feature is enabled, SET works as described above. If the feature is disabled,

class QueryStripComments

simple map to arguments.

Important - life time

QueryStripComments is a member of

class THD

, file


, and life time of this class equal life time of THD. On desctruction of member internal buffer was cleaned.

class QueryStripComments_Backup

This class follows the RAII and Scope guard idioms.

In call

QueryStripComments_Backup guard(thd,thd->query_script_comments)

instance of class call


and on call


(destruction of guard) instance was restore previous value query and query_length in THD.

Search and store in query cache

MySQL query cache contain file


Search in query cache



. Before search this method write to query string, after the end additional information - database info, flags, so on. After it this buffer:

|/* first query  */ select name from users where users.name like 'Bob%';\0|database.name|flags|

uses as key for search in cache. This feature uses

class QueryStripComments

to replace the original query by the stripped query</code>.

Store to query cache

This feature uses

class QueryStripComments


class QueryStripComments_Backup

to replace the original query by a similar rewriting to what was described above.

percona-server/features/implementation_details/details_query_cache_with_comments.txt · Last modified: 2015/08/05 15:37 (external edit)
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Contact Us 24 Hours A Day
SupportContact us 24×7
Emergency? Contact us for help now!
Sales North America(888) 316-9775 or
(208) 473-2904
+44-208-133-0309 (UK)
0-800-051-8984 (UK)
0-800-181-0665 (GER)
Training(855) 55TRAIN or
(925) 271-5054


Share This
]]> ]]>