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;
2015
bool Session::TableMessages::storeTableMessage(const identifier::Table &identifier, message::Table &table_message)
2017
table_message_cache.insert(make_pair(identifier.getPath(), table_message));
2022
bool Session::TableMessages::removeTableMessage(const identifier::Table &identifier)
2024
TableMessageCache::iterator iter;
2026
iter= table_message_cache.find(identifier.getPath());
2028
if (iter == table_message_cache.end())
2031
table_message_cache.erase(iter);
2036
bool Session::TableMessages::getTableMessage(const identifier::Table &identifier, message::Table &table_message)
2038
TableMessageCache::iterator iter;
2040
iter= table_message_cache.find(identifier.getPath());
2042
if (iter == table_message_cache.end())
2045
table_message.CopyFrom(((*iter).second));
2050
bool Session::TableMessages::doesTableMessageExist(const identifier::Table &identifier)
2052
TableMessageCache::iterator iter;
2054
iter= table_message_cache.find(identifier.getPath());
2056
if (iter == table_message_cache.end())
2064
bool Session::TableMessages::renameTableMessage(const identifier::Table &from, const identifier::Table &to)
2066
TableMessageCache::iterator iter;
2068
table_message_cache[to.getPath()]= table_message_cache[from.getPath()];
2070
iter= table_message_cache.find(to.getPath());
2072
if (iter == table_message_cache.end())
2077
(*iter).second.set_schema(to.getSchemaName());
2078
(*iter).second.set_name(to.getTableName());
2015
2083
table::Singular *Session::getInstanceTable()
2017
2085
temporary_shares.push_back(new table::Singular()); // This will not go into the tableshare cache, so no key is used.