Drizzled Public API Documentation

drizzled::plugin::QueryLog Class Reference

QueryLog implements the query_log plugin. More...

#include <query_log.h>

Inheritance diagram for drizzled::plugin::QueryLog:
drizzled::plugin::EventObserver drizzled::plugin::Plugin

Public Types

enum  EventType {
  BEFORE_CREATE_DATABASE, AFTER_CREATE_DATABASE, BEFORE_DROP_DATABASE, AFTER_DROP_DATABASE,
  CONNECT_SESSION, DISCONNECT_SESSION, AFTER_STATEMENT, BEFORE_STATEMENT,
  BEFORE_DROP_TABLE, AFTER_DROP_TABLE, BEFORE_RENAME_TABLE, AFTER_RENAME_TABLE,
  BEFORE_INSERT_RECORD, AFTER_INSERT_RECORD, BEFORE_UPDATE_RECORD, AFTER_UPDATE_RECORD,
  BEFORE_DELETE_RECORD, AFTER_DELETE_RECORD, MAX_EVENT_COUNT
}
 
typedef std::pair< const
std::string, const std::string > 
map_key
 
typedef std::map< const
map_key, plugin::Plugin * > 
map
 
typedef std::vector< Plugin * > vector
 

Public Member Functions

 QueryLog (bool enabled, QueryLoggerFile *logger_file)
 
void registerSessionEventsDo (Session &session, EventObserverList &observers)
 
bool observeEventDo (EventData &)
 
bool afterStatement (AfterStatementEventData &data)
 
virtual void registerTableEventsDo (TableShare &, EventObserverList &)
 
virtual void registerSchemaEventsDo (const std::string &, EventObserverList &)
 
void registerEvent (EventObserverList &observers, EventType event, int32_t position=0)
 
virtual void shutdownPlugin ()
 
virtual void prime ()
 
virtual void startup (drizzled::Session &)
 
void activate ()
 
void deactivate ()
 
bool isActive () const
 
const std::string & getName () const
 
void setModule (module::Module *module)
 
const std::string & getTypeName () const
 
virtual bool removeLast () const
 
const std::string & getModuleName () const
 

Static Public Member Functions

static const char * eventName (EventType event)
 
static bool addPlugin (EventObserver *handler)
 
static void removePlugin (EventObserver *handler)
 
static void registerTableEvents (TableShare &table_share)
 
static void deregisterTableEvents (TableShare &table_share)
 
static void registerSchemaEvents (Session &session, const std::string &db)
 
static void deregisterSchemaEvents (EventObserverList *observers)
 
static void registerSessionEvents (Session &session)
 
static void deregisterSessionEvents (EventObserverList *observers)
 
static bool beforeDropTable (Session &session, const drizzled::identifier::Table &table)
 
static bool afterDropTable (Session &session, const drizzled::identifier::Table &table, int err)
 
static bool beforeRenameTable (Session &session, const drizzled::identifier::Table &from, const drizzled::identifier::Table &to)
 
static bool afterRenameTable (Session &session, const drizzled::identifier::Table &from, const drizzled::identifier::Table &to, int err)
 
static bool connectSession (Session &session)
 
static bool disconnectSession (Session &session)
 
static bool beforeStatement (Session &session)
 
static bool afterStatement (Session &session)
 
static bool beforeInsertRecord (Table &table, unsigned char *buf)
 
static bool afterInsertRecord (Table &table, const unsigned char *buf, int err)
 
static bool beforeDeleteRecord (Table &table, const unsigned char *buf)
 
static bool afterDeleteRecord (Table &table, const unsigned char *buf, int err)
 
static bool beforeUpdateRecord (Table &table, const unsigned char *old_data, unsigned char *new_data)
 
static bool afterUpdateRecord (Table &table, const unsigned char *old_data, unsigned char *new_data, int err)
 
static bool beforeCreateDatabase (Session &session, const std::string &db)
 
static bool afterCreateDatabase (Session &session, const std::string &db, int err)
 
static bool beforeDropDatabase (Session &session, const std::string &db)
 
static bool afterDropDatabase (Session &session, const std::string &db, int err)
 
static const EventObserverVector & getEventObservers (void)
 

Public Attributes

bool sysvar_enabled
 
bool sysvar_file_enabled
 
std::string sysvar_file
 
uint32_constraint sysvar_threshold_execution_time
 
uint32_constraint sysvar_threshold_lock_time
 
uint32_constraint sysvar_threshold_rows_examined
 
uint32_constraint sysvar_threshold_rows_sent
 
uint32_constraint sysvar_threshold_tmp_tables
 
uint32_constraint sysvar_threshold_warnings
 
uint32_constraint sysvar_threshold_session_time
 

Private Attributes

QueryLoggerFile_logger_file
 
event_t _event
 

Detailed Description

QueryLog implements the query_log plugin.

This is our event observer plugin subclass that sits between Drizzle and logger classes like QueryLoggerFile. This class encapsulates and manages data associated with the plugin: system variables and incoming events. The future plan is to have other logger classes, like QueryLoggerTable or QueryLoggerUDPSocket. So implemeting those should be easy because this class abstracts plugin data management from actual logging: it gets events from Drizzle, filters and prepares them, then sends them to logger classes which only have to log them.

Definition at line 43 of file query_log.h.

Member Function Documentation

bool QueryLog::afterStatement ( AfterStatementEventData data)

Time values, first in microseconds so we can check the thresholds.

Check thresholds as soon as possible, return early if possible. This avoid unnecessary work; i.e. don't construct the whole event only to throw it away at the end because it fails a threshold.

Convert from microseconds to seconds, e.g. 42 to 0.000042 This is done for the user who may read the log. It's a lot easier to see half a second as 0.5 than 500000.

Integer values

Boolean values, as strings

String values, may be blank

The query string

Timestamp values, convert from microseconds from epoch to ISO timestamp like 2002-01-31T10:00:01.123456

Definition at line 65 of file query_log.cc.

References drizzled::Session::command, drizzled::Session::examined_row_count, drizzled::Session::getQueryId(), drizzled::Session::getSessionId(), drizzled::Session::is_error(), and drizzled::Session::sent_row_count.

Member Data Documentation

bool drizzled::plugin::QueryLog::sysvar_enabled

These are the query_log system variables. So sysvar_enabled is query_log_enabled in SHOW VARIABLES, etc. They are all global and dynamic.

Definition at line 56 of file query_log.h.


The documentation for this class was generated from the following files: