~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/session.cc

  • Committer: Monty Taylor
  • Date: 2011-02-13 17:26:39 UTC
  • mfrom: (2157.2.2 give-in-to-pkg-config)
  • mto: This revision was merged to the branch mainline in revision 2166.
  • Revision ID: mordred@inaugust.com-20110213172639-nhy7i72sfhoq13ms
Merged in pkg-config fixes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
 * @file Implementation of the Session class and API
22
22
 */
23
23
 
24
 
#include <config.h>
 
24
#include "config.h"
25
25
 
26
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>
 
27
#include "drizzled/session.h"
 
28
#include "drizzled/session/cache.h"
 
29
#include "drizzled/error.h"
 
30
#include "drizzled/gettext.h"
 
31
#include "drizzled/query_id.h"
 
32
#include "drizzled/data_home.h"
 
33
#include "drizzled/sql_base.h"
 
34
#include "drizzled/lock.h"
 
35
#include "drizzled/item/cache.h"
 
36
#include "drizzled/item/float.h"
 
37
#include "drizzled/item/return_int.h"
 
38
#include "drizzled/item/empty_string.h"
 
39
#include "drizzled/show.h"
 
40
#include "drizzled/plugin/client.h"
 
41
#include "drizzled/plugin/scheduler.h"
 
42
#include "drizzled/plugin/authentication.h"
 
43
#include "drizzled/plugin/logging.h"
 
44
#include "drizzled/plugin/transactional_storage_engine.h"
 
45
#include "drizzled/plugin/query_rewrite.h"
 
46
#include "drizzled/probes.h"
 
47
#include "drizzled/table_proto.h"
 
48
#include "drizzled/db.h"
 
49
#include "drizzled/pthread_globals.h"
 
50
#include "drizzled/transaction_services.h"
 
51
#include "drizzled/drizzled.h"
 
52
 
 
53
#include "drizzled/identifier.h"
 
54
 
51
55
#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>
 
56
 
 
57
#include "drizzled/table/singular.h"
 
58
 
 
59
#include "plugin/myisam/myisam.h"
 
60
#include "drizzled/internal/iocache.h"
 
61
#include "drizzled/internal/thread_var.h"
 
62
#include "drizzled/plugin/event_observer.h"
 
63
 
 
64
#include "drizzled/util/functors.h"
 
65
 
 
66
#include "drizzled/display.h"
70
67
 
71
68
#include <algorithm>
72
69
#include <climits>
76
73
#include <boost/filesystem.hpp>
77
74
#include <boost/checked_delete.hpp>
78
75
 
79
 
#include <drizzled/util/backtrace.h>
80
 
 
81
 
#include <drizzled/schema.h>
 
76
#include "drizzled/util/backtrace.h"
82
77
 
83
78
using namespace std;
84
79
 
237
232
  open_options=ha_open_options;
238
233
  update_lock_default= TL_WRITE;
239
234
  session_tx_isolation= (enum_tx_isolation) variables.tx_isolation;
240
 
  warn_list.clear();
 
235
  warn_list.empty();
241
236
  memset(warn_count, 0, sizeof(warn_count));
242
237
  memset(&status_var, 0, sizeof(status_var));
243
238
 
311
306
  m_internal_handler= NULL;
312
307
}
313
308
 
314
 
void Session::get_xid(DrizzleXid *xid)
 
309
void Session::get_xid(DRIZZLE_XID *xid)
315
310
{
316
 
  *xid = *(DrizzleXid *) &transaction.xid_state.xid;
 
311
  *xid = *(DRIZZLE_XID *) &transaction.xid_state.xid;
317
312
}
318
313
 
319
314
/* Do operations that may take a long time */
592
587
*/
593
588
bool Session::isViewable(identifier::User::const_reference user_arg) const
594
589
{
595
 
  return plugin::Authorization::isAuthorized(user_arg, *this, false);
 
590
  return plugin::Authorization::isAuthorized(user_arg, this, false);
596
591
}
597
592
 
598
593
 
635
630
                        const std::string &in_db)
636
631
{
637
632
  bool is_authenticated=
638
 
    plugin::Authentication::isAuthenticated(*user(), passwd_str);
 
633
    plugin::Authentication::isAuthenticated(user(), passwd_str);
639
634
 
640
635
  if (is_authenticated != true)
641
636
  {
648
643
  if (not in_db.empty())
649
644
  {
650
645
    identifier::Schema identifier(in_db);
651
 
    if (schema::change(*this, identifier))
 
646
    if (change_db(this, identifier))
652
647
    {
653
648
      /* change_db() has pushed the error message. */
654
649
      return false;
1090
1085
 
1091
1086
  /* Check if there is any blobs in data */
1092
1087
  {
1093
 
    List<Item>::iterator li(list.begin());
 
1088
    List_iterator_fast<Item> li(list);
1094
1089
    Item *item;
1095
1090
    while ((item=li++))
1096
1091
    {
1155
1150
  row_count++;
1156
1151
  Item *item;
1157
1152
  uint32_t used_length=0,items_left=items.elements;
1158
 
  List<Item>::iterator li(items.begin());
 
1153
  List_iterator_fast<Item> li(items);
1159
1154
 
1160
1155
  if (my_b_write(cache,(unsigned char*) exchange->line_start->ptr(),
1161
1156
                 exchange->line_start->length()))
1344
1339
 
1345
1340
bool select_dump::send_data(List<Item> &items)
1346
1341
{
1347
 
  List<Item>::iterator li(items.begin());
 
1342
  List_iterator_fast<Item> li(items);
1348
1343
  char buff[MAX_FIELD_WIDTH];
1349
1344
  String tmp(buff,sizeof(buff),&my_charset_bin),*res;
1350
1345
  tmp.length(0);
1397
1392
    unit->offset_limit_cnt--;
1398
1393
    return(0);
1399
1394
  }
1400
 
  List<Item>::iterator li(items.begin());
 
1395
  List_iterator_fast<Item> li(items);
1401
1396
  Item *val_item;
1402
1397
  for (uint32_t i= 0; (val_item= li++); i++)
1403
1398
    it->store(i, val_item);
1415
1410
bool select_max_min_finder_subselect::send_data(List<Item> &items)
1416
1411
{
1417
1412
  Item_maxmin_subselect *it= (Item_maxmin_subselect *)item;
1418
 
  List<Item>::iterator li(items.begin());
 
1413
  List_iterator_fast<Item> li(items);
1419
1414
  Item *val_item= li++;
1420
1415
  it->register_value();
1421
1416
  if (it->assigned())