2
* Copyright (C) 2010 Joseph Daly <skinny.moey@gmail.com>
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
8
* * Redistributions of source code must retain the above copyright notice,
9
* this list of conditions and the following disclaimer.
10
* * Redistributions in binary form must reproduce the above copyright notice,
11
* this list of conditions and the following disclaimer in the documentation
12
* and/or other materials provided with the distribution.
13
* * Neither the name of Joseph Daly nor the names of its contributors
14
* may be used to endorse or promote products derived from this software
15
* without specific prior written permission.
17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
27
* THE POSSIBILITY OF SUCH DAMAGE.
30
#include "user_commands.h"
32
using namespace drizzled;
35
const char* UserCommands::USER_COUNTS[] =
49
const char* UserCommands::COM_STATUS_VARS[] =
78
"rollback_to_savepoint",
90
UserCommands::UserCommands()
95
void UserCommands::init()
97
vector<uint64_t>::iterator it= vector_of_command_counts.begin();
98
for (int j=0; j < SQLCOM_END; ++j)
100
it= vector_of_command_counts.insert(it, 0);
102
vector_of_command_counts.resize(SQLCOM_END);
105
void UserCommands::incrementCount(uint32_t index, uint32_t i)
107
uint64_t *count= &(vector_of_command_counts.at(index));
111
uint64_t UserCommands::getCount(uint32_t index)
113
uint64_t *count= &(vector_of_command_counts.at(index));
117
uint64_t UserCommands::getUserCount(uint32_t index)
122
return getCount(SQLCOM_SELECT);
124
return getCount(SQLCOM_DELETE);
126
return getCount(SQLCOM_UPDATE);
128
return getCount(SQLCOM_INSERT);
130
return getCount(SQLCOM_ROLLBACK);
132
return getCount(SQLCOM_COMMIT);
134
return getCount(SQLCOM_CREATE_TABLE);
136
return getCount(SQLCOM_ALTER_TABLE);
138
return getCount(SQLCOM_DROP_TABLE);
144
void UserCommands::reset()
146
for (uint32_t j= 0; j < SQLCOM_END; ++j)
148
uint64_t *count= &(vector_of_command_counts.at(j));
153
UserCommands::UserCommands(const UserCommands &user_commands)
157
for (uint32_t j= 0; j < SQLCOM_END; ++j)
159
uint64_t *my_count= &(vector_of_command_counts.at(j));
160
uint64_t other_count= user_commands.vector_of_command_counts.at(j);
161
*my_count= other_count;
165
void UserCommands::merge(UserCommands *user_commands)
167
for (uint32_t j= 0; j < SQLCOM_END; ++j)
169
uint64_t *my_count= &(vector_of_command_counts.at(j));
170
uint64_t other_count= user_commands->vector_of_command_counts.at(j);
171
*my_count= *my_count + other_count;
175
void UserCommands::logCommand(enum_sql_command sql_command)
177
if (sql_command < SQLCOM_END)
179
incrementCount(sql_command);