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);
1805
1844
void Session::setVariable(const std::string &name, const std::string &value)
1807
1846
user_var_entry *updateable_var= getVariable(name.c_str(), true);
1810
updateable_var->update_hash(false,
1811
(void*)value.c_str(),
1812
static_cast<uint32_t>(value.length()), STRING_RESULT,
1814
DERIVATION_IMPLICIT, false);
1848
updateable_var->update_hash(false,
1849
(void*)value.c_str(),
1850
static_cast<uint32_t>(value.length()), STRING_RESULT,
1852
DERIVATION_IMPLICIT, false);
1818
1855
void Open_tables_state::mark_temp_tables_as_free_for_reuse()
2052
bool Session::TableMessages::storeTableMessage(const identifier::Table &identifier, message::Table &table_message)
2054
table_message_cache.insert(make_pair(identifier.getPath(), table_message));
2059
bool Session::TableMessages::removeTableMessage(const identifier::Table &identifier)
2061
TableMessageCache::iterator iter;
2063
iter= table_message_cache.find(identifier.getPath());
2065
if (iter == table_message_cache.end())
2068
table_message_cache.erase(iter);
2073
bool Session::TableMessages::getTableMessage(const identifier::Table &identifier, message::Table &table_message)
2075
TableMessageCache::iterator iter;
2077
iter= table_message_cache.find(identifier.getPath());
2079
if (iter == table_message_cache.end())
2082
table_message.CopyFrom(((*iter).second));
2087
bool Session::TableMessages::doesTableMessageExist(const identifier::Table &identifier)
2089
TableMessageCache::iterator iter;
2091
iter= table_message_cache.find(identifier.getPath());
2093
if (iter == table_message_cache.end())
2101
bool Session::TableMessages::renameTableMessage(const identifier::Table &from, const identifier::Table &to)
2103
TableMessageCache::iterator iter;
2105
table_message_cache[to.getPath()]= table_message_cache[from.getPath()];
2107
iter= table_message_cache.find(to.getPath());
2109
if (iter == table_message_cache.end())
2114
(*iter).second.set_schema(to.getSchemaName());
2115
(*iter).second.set_name(to.getTableName());
2015
2120
table::Singular *Session::getInstanceTable()
2017
2122
temporary_shares.push_back(new table::Singular()); // This will not go into the tableshare cache, so no key is used.