21
21
* @file Implementation of the Session class and API
26
#include <drizzled/copy_field.h>
27
#include <drizzled/data_home.h>
28
#include <drizzled/display.h>
29
#include <drizzled/drizzled.h>
30
#include <drizzled/error.h>
31
#include <drizzled/gettext.h>
32
#include <drizzled/identifier.h>
33
#include <drizzled/internal/iocache.h>
34
#include <drizzled/internal/thread_var.h>
35
#include <drizzled/internal_error_handler.h>
36
#include <drizzled/item/cache.h>
37
#include <drizzled/item/empty_string.h>
38
#include <drizzled/item/float.h>
39
#include <drizzled/item/return_int.h>
40
#include <drizzled/lock.h>
41
#include <drizzled/plugin/authentication.h>
42
#include <drizzled/plugin/client.h>
43
#include <drizzled/plugin/event_observer.h>
44
#include <drizzled/plugin/logging.h>
45
#include <drizzled/plugin/query_rewrite.h>
46
#include <drizzled/plugin/scheduler.h>
47
#include <drizzled/plugin/transactional_storage_engine.h>
48
#include <drizzled/probes.h>
49
#include <drizzled/pthread_globals.h>
50
#include <drizzled/query_id.h>
51
#include <drizzled/refresh_version.h>
52
#include <drizzled/select_dump.h>
53
#include <drizzled/select_exists_subselect.h>
54
#include <drizzled/select_export.h>
55
#include <drizzled/select_max_min_finder_subselect.h>
56
#include <drizzled/select_singlerow_subselect.h>
57
#include <drizzled/select_subselect.h>
58
#include <drizzled/select_to_file.h>
59
#include <drizzled/session.h>
60
#include <drizzled/session/cache.h>
61
#include <drizzled/show.h>
62
#include <drizzled/sql_base.h>
63
#include <drizzled/table/singular.h>
64
#include <drizzled/table_proto.h>
65
#include <drizzled/tmp_table_param.h>
66
#include <drizzled/transaction_services.h>
67
#include <drizzled/user_var_entry.h>
68
#include <drizzled/util/functors.h>
69
#include <plugin/myisam/myisam.h>
25
#include "drizzled/session.h"
26
#include "drizzled/session/cache.h"
28
#include "drizzled/error.h"
29
#include "drizzled/gettext.h"
30
#include "drizzled/query_id.h"
31
#include "drizzled/data_home.h"
32
#include "drizzled/sql_base.h"
33
#include "drizzled/lock.h"
34
#include "drizzled/item/cache.h"
35
#include "drizzled/item/float.h"
36
#include "drizzled/item/return_int.h"
37
#include "drizzled/item/empty_string.h"
38
#include "drizzled/show.h"
39
#include "drizzled/plugin/client.h"
40
#include "drizzled/plugin/scheduler.h"
41
#include "drizzled/plugin/authentication.h"
42
#include "drizzled/plugin/logging.h"
43
#include "drizzled/plugin/transactional_storage_engine.h"
44
#include "drizzled/plugin/query_rewrite.h"
45
#include "drizzled/probes.h"
46
#include "drizzled/table_proto.h"
47
#include "drizzled/db.h"
48
#include "drizzled/pthread_globals.h"
49
#include "drizzled/transaction_services.h"
50
#include "drizzled/drizzled.h"
52
#include "drizzled/identifier.h"
54
#include "drizzled/table/singular.h"
56
#include "plugin/myisam/myisam.h"
57
#include "drizzled/internal/iocache.h"
58
#include "drizzled/internal/thread_var.h"
59
#include "drizzled/plugin/event_observer.h"
61
#include "drizzled/util/functors.h"
63
#include "drizzled/display.h"
71
66
#include <algorithm>
76
69
#include <boost/filesystem.hpp>
77
70
#include <boost/checked_delete.hpp>
79
#include <drizzled/util/backtrace.h>
81
#include <drizzled/schema.h>
72
#include "drizzled/util/backtrace.h"
83
74
using namespace std;
117
int session_tablespace_op(const Session *session)
119
return test(session->tablespace_op);
123
Set the process info field of the Session structure.
125
This function is used by plug-ins. Internally, the
126
Session::set_proc_info() function should be used.
128
@see Session::set_proc_info
130
void set_session_proc_info(Session *session, const char *info)
132
session->set_proc_info(info);
135
const char *get_session_proc_info(Session *session)
137
return session->get_proc_info();
126
140
void **Session::getEngineData(const plugin::MonitoredInTransaction *monitored)
128
142
return static_cast<void **>(&ha_data[monitored->getId()].ha_ptr);
2053
bool Session::TableMessages::storeTableMessage(const identifier::Table &identifier, message::Table &table_message)
2055
table_message_cache.insert(make_pair(identifier.getPath(), table_message));
2060
bool Session::TableMessages::removeTableMessage(const identifier::Table &identifier)
2062
TableMessageCache::iterator iter;
2064
iter= table_message_cache.find(identifier.getPath());
2066
if (iter == table_message_cache.end())
2069
table_message_cache.erase(iter);
2074
bool Session::TableMessages::getTableMessage(const identifier::Table &identifier, message::Table &table_message)
2076
TableMessageCache::iterator iter;
2078
iter= table_message_cache.find(identifier.getPath());
2080
if (iter == table_message_cache.end())
2083
table_message.CopyFrom(((*iter).second));
2088
bool Session::TableMessages::doesTableMessageExist(const identifier::Table &identifier)
2090
TableMessageCache::iterator iter;
2092
iter= table_message_cache.find(identifier.getPath());
2094
if (iter == table_message_cache.end())
2102
bool Session::TableMessages::renameTableMessage(const identifier::Table &from, const identifier::Table &to)
2104
TableMessageCache::iterator iter;
2106
table_message_cache[to.getPath()]= table_message_cache[from.getPath()];
2108
iter= table_message_cache.find(to.getPath());
2110
if (iter == table_message_cache.end())
2115
(*iter).second.set_schema(to.getSchemaName());
2116
(*iter).second.set_name(to.getTableName());
2015
2121
table::Singular *Session::getInstanceTable()
2017
2123
temporary_shares.push_back(new table::Singular()); // This will not go into the tableshare cache, so no key is used.