diff options
author | Sergei Golubchik <serg@mariadb.org> | 2015-05-04 22:16:00 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2015-05-04 22:16:00 +0200 |
commit | d71d4119055f0184f5edd24e86fa3d6a5c71aa89 (patch) | |
tree | 99b335b2c1fe3dee66de346697c8a9bb468078d1 /include | |
parent | 05c002d0ffc003dfe6646f785dabef0c440da3d1 (diff) | |
download | mariadb-git-d71d4119055f0184f5edd24e86fa3d6a5c71aa89.tar.gz |
5.6.24
Diffstat (limited to 'include')
-rw-r--r-- | include/mysql/psi/mysql_statement.h | 26 | ||||
-rw-r--r-- | include/mysql/psi/psi.h | 57 | ||||
-rw-r--r-- | include/mysql/psi/psi_abi_v0.h.pp | 2 | ||||
-rw-r--r-- | include/mysql/psi/psi_abi_v1.h.pp | 24 | ||||
-rw-r--r-- | include/mysql/psi/psi_abi_v2.h.pp | 2 |
5 files changed, 32 insertions, 79 deletions
diff --git a/include/mysql/psi/mysql_statement.h b/include/mysql/psi/mysql_statement.h index d7a76ee25e4..3d5943fa55a 100644 --- a/include/mysql/psi/mysql_statement.h +++ b/include/mysql/psi/mysql_statement.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,7 +41,6 @@ do {} while (0) #endif -#ifdef HAVE_PSI_STATEMENT_INTERFACE #ifdef HAVE_PSI_STATEMENT_DIGEST_INTERFACE #define MYSQL_DIGEST_START(LOCKER) \ inline_mysql_digest_start(LOCKER) @@ -49,17 +48,13 @@ #define MYSQL_DIGEST_START(LOCKER) \ NULL #endif -#else - #define MYSQL_DIGEST_START(LOCKER) \ - NULL -#endif #ifdef HAVE_PSI_STATEMENT_DIGEST_INTERFACE - #define MYSQL_ADD_TOKEN(LOCKER, T, Y) \ - inline_mysql_add_token(LOCKER, T, Y) + #define MYSQL_DIGEST_END(LOCKER, DIGEST) \ + inline_mysql_digest_end(LOCKER, DIGEST) #else - #define MYSQL_ADD_TOKEN(LOCKER, T, Y) \ - NULL + #define MYSQL_DIGEST_END(LOCKER, DIGEST) \ + do {} while (0) #endif #ifdef HAVE_PSI_STATEMENT_INTERFACE @@ -132,20 +127,17 @@ inline_mysql_digest_start(PSI_statement_locker *locker) PSI_digest_locker* digest_locker= NULL; if (likely(locker != NULL)) - digest_locker= PSI_STATEMENT_CALL(digest_start)(locker); + digest_locker= PSI_DIGEST_CALL(digest_start)(locker); return digest_locker; } #endif #ifdef HAVE_PSI_STATEMENT_DIGEST_INTERFACE -static inline struct PSI_digest_locker * -inline_mysql_add_token(PSI_digest_locker *locker, uint token, - void *yylval) +static inline void +inline_mysql_digest_end(PSI_digest_locker *locker, const sql_digest_storage *digest) { if (likely(locker != NULL)) - locker= PSI_STATEMENT_CALL(digest_add_token)(locker, token, - (OPAQUE_LEX_YYSTYPE*)yylval); - return locker; + PSI_DIGEST_CALL(digest_end)(locker, digest); } #endif diff --git a/include/mysql/psi/psi.h b/include/mysql/psi/psi.h index 30f2709be0f..49202c4e88f 100644 --- a/include/mysql/psi/psi.h +++ b/include/mysql/psi/psi.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,18 +43,8 @@ C_MODE_START struct TABLE_SHARE; -/* - There are 3 known bison parsers in the server: - - (1) the SQL parser itself, sql/sql_yacc.yy - - (2) storage/innobase/fts/fts0pars.y - - (3) storage/innobase/pars/pars0grm.y - What is instrumented here are the tokens from the SQL query text (1), - to make digests. - Now, to avoid name pollution and conflicts with different YYSTYPE definitions, - an opaque structure is used here. - The real type to use when invoking the digest api is LEX_YYSTYPE. -*/ -struct OPAQUE_LEX_YYSTYPE; + +struct sql_digest_storage; /** @file mysql/psi/psi.h @@ -952,29 +942,6 @@ struct PSI_table_locker_state_v1 uint m_index; }; -#define PSI_MAX_DIGEST_STORAGE_SIZE 1024 - -/** - Structure to store token count/array for a statement - on which digest is to be calculated. -*/ -struct PSI_digest_storage -{ - my_bool m_full; - int m_byte_count; - /** Character set number. */ - uint m_charset_number; - unsigned char m_token_array[PSI_MAX_DIGEST_STORAGE_SIZE]; -}; -typedef struct PSI_digest_storage PSI_digest_storage; - -struct PSI_digest_locker_state -{ - int m_last_id_index; - PSI_digest_storage m_digest_storage; -}; -typedef struct PSI_digest_locker_state PSI_digest_locker_state; - /* Duplicate of NAME_LEN, to avoid dependency on mysql_com.h */ #define PSI_SCHEMA_NAME_LEN (64 * 3) @@ -1037,7 +1004,7 @@ struct PSI_statement_locker_state_v1 /** Metric, number of sort scans. */ ulong m_sort_scan; /** Statement digest. */ - PSI_digest_locker_state m_digest_state; + const struct sql_digest_storage *m_digest; /** Current schema name. */ char m_schema_name[PSI_SCHEMA_NAME_LEN]; /** Length in bytes of @c m_schema_name. */ @@ -1902,11 +1869,15 @@ typedef void (*set_socket_info_v1_t)(struct PSI_socket *socket, */ typedef void (*set_socket_thread_owner_v1_t)(struct PSI_socket *socket); +/** + Get a digest locker for the current statement. + @param locker a statement locker for the running thread +*/ typedef struct PSI_digest_locker * (*digest_start_v1_t) (struct PSI_statement_locker *locker); -typedef struct PSI_digest_locker* (*digest_add_token_v1_t) - (struct PSI_digest_locker *locker, uint token, struct OPAQUE_LEX_YYSTYPE *yylval); +typedef void (*digest_end_v1_t) + (struct PSI_digest_locker *locker, const struct sql_digest_storage *digest); /** Stores an array of connection attributes @@ -2118,8 +2089,8 @@ struct PSI_v1 set_socket_thread_owner_v1_t set_socket_thread_owner; /** @sa digest_start_v1_t. */ digest_start_v1_t digest_start; - /** @sa digest_add_token_v1_t. */ - digest_add_token_v1_t digest_add_token; + /** @sa digest_end_v1_t. */ + digest_end_v1_t digest_end; /** @sa set_thread_connect_attrs_v1_t. */ set_thread_connect_attrs_v1_t set_thread_connect_attrs; }; @@ -2414,6 +2385,10 @@ extern MYSQL_PLUGIN_IMPORT PSI *PSI_server; #define PSI_STATEMENT_CALL(M) PSI_DYNAMIC_CALL(M) #endif +#ifndef PSI_DIGEST_CALL +#define PSI_DIGEST_CALL(M) PSI_DYNAMIC_CALL(M) +#endif + #ifndef PSI_TABLE_CALL #define PSI_TABLE_CALL(M) PSI_DYNAMIC_CALL(M) #endif diff --git a/include/mysql/psi/psi_abi_v0.h.pp b/include/mysql/psi/psi_abi_v0.h.pp index b46b38ed144..17d61016a68 100644 --- a/include/mysql/psi/psi_abi_v0.h.pp +++ b/include/mysql/psi/psi_abi_v0.h.pp @@ -1,7 +1,7 @@ #include "mysql/psi/psi.h" C_MODE_START struct TABLE_SHARE; -struct OPAQUE_LEX_YYSTYPE; +struct sql_digest_storage; struct PSI_mutex; typedef struct PSI_mutex PSI_mutex; struct PSI_rwlock; diff --git a/include/mysql/psi/psi_abi_v1.h.pp b/include/mysql/psi/psi_abi_v1.h.pp index fa2bf724b5e..898b9871d2e 100644 --- a/include/mysql/psi/psi_abi_v1.h.pp +++ b/include/mysql/psi/psi_abi_v1.h.pp @@ -1,7 +1,7 @@ #include "mysql/psi/psi.h" C_MODE_START struct TABLE_SHARE; -struct OPAQUE_LEX_YYSTYPE; +struct sql_digest_storage; struct PSI_mutex; typedef struct PSI_mutex PSI_mutex; struct PSI_rwlock; @@ -241,20 +241,6 @@ struct PSI_table_locker_state_v1 void *m_wait; uint m_index; }; -struct PSI_digest_storage -{ - my_bool m_full; - int m_byte_count; - uint m_charset_number; - unsigned char m_token_array[1024]; -}; -typedef struct PSI_digest_storage PSI_digest_storage; -struct PSI_digest_locker_state -{ - int m_last_id_index; - PSI_digest_storage m_digest_storage; -}; -typedef struct PSI_digest_locker_state PSI_digest_locker_state; struct PSI_statement_locker_state_v1 { my_bool m_discarded; @@ -280,7 +266,7 @@ struct PSI_statement_locker_state_v1 ulong m_sort_range; ulong m_sort_rows; ulong m_sort_scan; - PSI_digest_locker_state m_digest_state; + const struct sql_digest_storage *m_digest; char m_schema_name[(64 * 3)]; uint m_schema_name_length; }; @@ -508,8 +494,8 @@ typedef void (*set_socket_info_v1_t)(struct PSI_socket *socket, typedef void (*set_socket_thread_owner_v1_t)(struct PSI_socket *socket); typedef struct PSI_digest_locker * (*digest_start_v1_t) (struct PSI_statement_locker *locker); -typedef struct PSI_digest_locker* (*digest_add_token_v1_t) - (struct PSI_digest_locker *locker, uint token, struct OPAQUE_LEX_YYSTYPE *yylval); +typedef void (*digest_end_v1_t) + (struct PSI_digest_locker *locker, const struct sql_digest_storage *digest); typedef int (*set_thread_connect_attrs_v1_t)(const char *buffer, uint length, const void *from_cs); struct PSI_v1 @@ -610,7 +596,7 @@ struct PSI_v1 set_socket_info_v1_t set_socket_info; set_socket_thread_owner_v1_t set_socket_thread_owner; digest_start_v1_t digest_start; - digest_add_token_v1_t digest_add_token; + digest_end_v1_t digest_end; set_thread_connect_attrs_v1_t set_thread_connect_attrs; }; typedef struct PSI_v1 PSI; diff --git a/include/mysql/psi/psi_abi_v2.h.pp b/include/mysql/psi/psi_abi_v2.h.pp index 458013b43e4..c3dba0a9b76 100644 --- a/include/mysql/psi/psi_abi_v2.h.pp +++ b/include/mysql/psi/psi_abi_v2.h.pp @@ -1,7 +1,7 @@ #include "mysql/psi/psi.h" C_MODE_START struct TABLE_SHARE; -struct OPAQUE_LEX_YYSTYPE; +struct sql_digest_storage; struct PSI_mutex; typedef struct PSI_mutex PSI_mutex; struct PSI_rwlock; |