mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
94 lines
2.8 KiB
C
94 lines
2.8 KiB
C
/* Copyright (c) 2011, 2016, 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, version 2.0,
|
|
as published by the Free Software Foundation.
|
|
|
|
This program is also distributed with certain software (including
|
|
but not limited to OpenSSL) that is licensed under separate terms,
|
|
as designated in a particular file or component or in included license
|
|
documentation. The authors of MySQL hereby grant you an additional
|
|
permission to link the program and your derivative works with the
|
|
separately licensed software that they have included with MySQL.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License, version 2.0, for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software Foundation,
|
|
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
|
|
|
#ifndef PFS_DIGEST_H
|
|
#define PFS_DIGEST_H
|
|
|
|
/**
|
|
@file storage/perfschema/pfs_digest.h
|
|
Statement Digest data structures (declarations).
|
|
*/
|
|
|
|
#include "pfs_column_types.h"
|
|
#include "lf.h"
|
|
#include "pfs_stat.h"
|
|
#include "sql_digest.h"
|
|
|
|
extern bool flag_statements_digest;
|
|
extern size_t digest_max;
|
|
extern ulong digest_lost;
|
|
struct PFS_thread;
|
|
|
|
/**
|
|
Structure to store a MD5 hash value (digest) for a statement.
|
|
*/
|
|
struct PFS_digest_key
|
|
{
|
|
unsigned char m_md5[MD5_HASH_SIZE];
|
|
char m_schema_name[NAME_LEN];
|
|
uint m_schema_name_length;
|
|
};
|
|
|
|
/** A statement digest stat record. */
|
|
struct PFS_ALIGNED PFS_statements_digest_stat
|
|
{
|
|
/** Internal lock. */
|
|
pfs_lock m_lock;
|
|
|
|
/** Digest Schema + MD5 Hash. */
|
|
PFS_digest_key m_digest_key;
|
|
|
|
/** Digest Storage. */
|
|
sql_digest_storage m_digest_storage;
|
|
|
|
/** Statement stat. */
|
|
PFS_statement_stat m_stat;
|
|
|
|
/** First and last seen timestamps.*/
|
|
ulonglong m_first_seen;
|
|
ulonglong m_last_seen;
|
|
|
|
/** Reset data for this record. */
|
|
void reset_data(unsigned char* token_array, size_t length);
|
|
/** Reset data and remove index for this record. */
|
|
void reset_index(PFS_thread *thread);
|
|
};
|
|
|
|
int init_digest(const PFS_global_param *param);
|
|
void cleanup_digest();
|
|
|
|
int init_digest_hash(const PFS_global_param *param);
|
|
void cleanup_digest_hash(void);
|
|
PFS_statement_stat* find_or_create_digest(PFS_thread *thread,
|
|
const sql_digest_storage *digest_storage,
|
|
const char *schema_name,
|
|
uint schema_name_length);
|
|
|
|
void reset_esms_by_digest();
|
|
|
|
/* Exposing the data directly, for iterators. */
|
|
extern PFS_statements_digest_stat *statements_digest_stat_array;
|
|
|
|
extern LF_HASH digest_hash;
|
|
|
|
#endif
|
|
|