1/* Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; version 2 of the License.
6
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 GNU General Public License for more details.
11
12 You should have received a copy of the GNU General Public License
13 along with this program; if not, write to the Free Software Foundation,
14 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
15
16#ifndef TABLE_FILE_SUMMARY_H
17#define TABLE_FILE_SUMMARY_H
18
19/**
20 @file storage/perfschema/table_file_summary_by_event_name.h
21 Table FILE_SUMMARY_BY_EVENT_NAME (declarations).
22*/
23
24#include "pfs_column_types.h"
25#include "pfs_engine_table.h"
26#include "pfs_instr_class.h"
27#include "pfs_instr.h"
28#include "table_helper.h"
29
30/**
31 @addtogroup Performance_schema_tables
32 @{
33*/
34
35/** A row of PERFORMANCE_SCHEMA.FILE_SUMMARY_BY_EVENT_NAME. */
36struct row_file_summary_by_event_name
37{
38 /** Column EVENT_NAME. */
39 PFS_event_name_row m_event_name;
40
41 /** Columns COUNT_STAR, SUM/MIN/AVG/MAX TIMER and NUMBER_OF_BYTES
42 for READ, WRITE and MISC operation types.
43 */
44 PFS_file_io_stat_row m_io_stat;
45};
46
47/** Table PERFORMANCE_SCHEMA.FILE_SUMMARY_BY_EVENT_NAME. */
48class table_file_summary_by_event_name : public PFS_engine_table
49{
50public:
51 /** Table share */
52 static PFS_engine_table_share m_share;
53 static PFS_engine_table* create();
54 static int delete_all_rows();
55
56 virtual int rnd_next();
57 virtual int rnd_pos(const void *pos);
58 virtual void reset_position(void);
59
60private:
61 virtual int read_row_values(TABLE *table,
62 unsigned char *buf,
63 Field **fields,
64 bool read_all);
65
66 table_file_summary_by_event_name();
67
68public:
69 ~table_file_summary_by_event_name()
70 {}
71
72private:
73 void make_row(PFS_file_class *klass);
74
75 /** Table share lock. */
76 static THR_LOCK m_table_lock;
77
78 /** Current row. */
79 row_file_summary_by_event_name m_row;
80 /** True if the current row exists. */
81 bool m_row_exists;
82 /** Current position. */
83 PFS_simple_index m_pos;
84 /** Next position. */
85 PFS_simple_index m_next_pos;
86};
87
88/** @} */
89#endif
90