mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge tag 'mariadb-10.0.19' into 10.1
This commit is contained in:
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user