~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/table/instance/base.cc

  • Committer: Brian Aker
  • Date: 2011-02-04 09:29:39 UTC
  • mfrom: (2139.3.6 catalogs)
  • mto: This revision was merged to the branch mainline in revision 2144.
  • Revision ID: brian@tangent.org-20110204092939-nlwrimamw0fxxhgl
Main bit of this patch is that Inno now just uses the identifier so we only
have one spot to make changes for paths.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
*/
26
26
 
27
27
/* Basic functions needed by many modules */
28
 
#include <config.h>
 
28
#include "config.h"
29
29
 
30
30
#include <pthread.h>
31
31
#include <float.h>
37
37
 
38
38
#include <cassert>
39
39
 
40
 
#include <drizzled/error.h>
41
 
#include <drizzled/gettext.h>
42
 
#include <drizzled/sql_base.h>
43
 
#include <drizzled/pthread_globals.h>
44
 
#include <drizzled/internal/my_pthread.h>
45
 
 
46
 
#include <drizzled/table.h>
47
 
#include <drizzled/table/shell.h>
48
 
 
49
 
#include <drizzled/session.h>
50
 
 
51
 
#include <drizzled/charset.h>
52
 
#include <drizzled/internal/m_string.h>
53
 
#include <drizzled/internal/my_sys.h>
54
 
 
55
 
#include <drizzled/item/string.h>
56
 
#include <drizzled/item/int.h>
57
 
#include <drizzled/item/decimal.h>
58
 
#include <drizzled/item/float.h>
59
 
#include <drizzled/item/null.h>
60
 
#include <drizzled/temporal.h>
61
 
 
62
 
#include <drizzled/field.h>
63
 
#include <drizzled/field/str.h>
64
 
#include <drizzled/field/num.h>
65
 
#include <drizzled/field/blob.h>
66
 
#include <drizzled/field/boolean.h>
67
 
#include <drizzled/field/enum.h>
68
 
#include <drizzled/field/null.h>
69
 
#include <drizzled/field/date.h>
70
 
#include <drizzled/field/decimal.h>
71
 
#include <drizzled/field/real.h>
72
 
#include <drizzled/field/double.h>
73
 
#include <drizzled/field/int32.h>
74
 
#include <drizzled/field/int64.h>
75
 
#include <drizzled/field/size.h>
76
 
#include <drizzled/field/num.h>
77
 
#include <drizzled/field/time.h>
78
 
#include <drizzled/field/epoch.h>
79
 
#include <drizzled/field/datetime.h>
80
 
#include <drizzled/field/microtime.h>
81
 
#include <drizzled/field/varstring.h>
82
 
#include <drizzled/field/uuid.h>
83
 
 
84
 
#include <drizzled/plugin/storage_engine.h>
85
 
 
86
 
#include <drizzled/definition/cache.h>
87
 
#include <drizzled/typelib.h>
88
 
 
89
 
#include <drizzled/refresh_version.h>
 
40
#include "drizzled/error.h"
 
41
#include "drizzled/gettext.h"
 
42
#include "drizzled/sql_base.h"
 
43
#include "drizzled/pthread_globals.h"
 
44
#include "drizzled/internal/my_pthread.h"
 
45
 
 
46
#include "drizzled/table.h"
 
47
#include "drizzled/table/shell.h"
 
48
 
 
49
#include "drizzled/session.h"
 
50
 
 
51
#include "drizzled/charset.h"
 
52
#include "drizzled/internal/m_string.h"
 
53
#include "drizzled/internal/my_sys.h"
 
54
 
 
55
#include "drizzled/item/string.h"
 
56
#include "drizzled/item/int.h"
 
57
#include "drizzled/item/decimal.h"
 
58
#include "drizzled/item/float.h"
 
59
#include "drizzled/item/null.h"
 
60
#include "drizzled/temporal.h"
 
61
 
 
62
#include "drizzled/field.h"
 
63
#include "drizzled/field/str.h"
 
64
#include "drizzled/field/num.h"
 
65
#include "drizzled/field/blob.h"
 
66
#include "drizzled/field/boolean.h"
 
67
#include "drizzled/field/enum.h"
 
68
#include "drizzled/field/null.h"
 
69
#include "drizzled/field/date.h"
 
70
#include "drizzled/field/decimal.h"
 
71
#include "drizzled/field/real.h"
 
72
#include "drizzled/field/double.h"
 
73
#include "drizzled/field/int32.h"
 
74
#include "drizzled/field/int64.h"
 
75
#include "drizzled/field/size.h"
 
76
#include "drizzled/field/num.h"
 
77
#include "drizzled/field/time.h"
 
78
#include "drizzled/field/epoch.h"
 
79
#include "drizzled/field/datetime.h"
 
80
#include "drizzled/field/microtime.h"
 
81
#include "drizzled/field/varstring.h"
 
82
#include "drizzled/field/uuid.h"
 
83
 
 
84
#include "drizzled/definition/cache.h"
90
85
 
91
86
using namespace std;
92
87
 
581
576
  getTableMessage()->set_schema(identifier_arg.getSchemaName());
582
577
}
583
578
 
584
 
bool TableShare::parse_table_proto(Session& session, message::Table &table)
 
579
int TableShare::inner_parse_table_proto(Session& session, message::Table &table)
585
580
{
586
 
  drizzled::error_t local_error= EE_OK;
 
581
  int local_error= 0;
587
582
 
588
583
  if (! table.IsInitialized())
589
584
  {
1062
1057
      {
1063
1058
        if (fo.scale() > DECIMAL_MAX_SCALE)
1064
1059
        {
1065
 
          local_error= ER_NOT_FORM_FILE;
 
1060
          local_error= 4;
1066
1061
 
1067
 
          return true;
 
1062
          return local_error;
1068
1063
        }
1069
1064
        decimals= static_cast<uint8_t>(fo.scale());
1070
1065
      }
1118
1113
            decimals != NOT_FIXED_DEC)
1119
1114
        {
1120
1115
          my_error(ER_M_BIGGER_THAN_D, MYF(0), pfield.name().c_str());
1121
 
          local_error= ER_M_BIGGER_THAN_D;
1122
 
          return true;
 
1116
          local_error= 1;
 
1117
 
 
1118
          return local_error;
1123
1119
        }
1124
1120
        break;
1125
1121
      }
1258
1254
      if (res != 0 && res != 3) /* @TODO Huh? */
1259
1255
      {
1260
1256
        my_error(ER_INVALID_DEFAULT, MYF(0), f->field_name);
1261
 
        local_error= ER_INVALID_DEFAULT;
 
1257
        local_error= 1;
1262
1258
 
1263
 
        return true;
 
1259
        return local_error;
1264
1260
      }
1265
1261
    }
1266
1262
    else if (f->real_type() == DRIZZLE_TYPE_ENUM && (f->flags & NOT_NULL_FLAG))
1472
1468
                            &next_number_keypart)) < 0)
1473
1469
    {
1474
1470
      /* Wrong field definition */
1475
 
      local_error= ER_NOT_FORM_FILE;
 
1471
      local_error= 4;
1476
1472
 
1477
 
      return true;
 
1473
      return local_error;
1478
1474
    }
1479
1475
    else
1480
1476
    {
1499
1495
  all_set.resize(_field_size);
1500
1496
  all_set.set();
1501
1497
 
1502
 
  return local_error != EE_OK;
1503
 
}
 
1498
  return local_error;
 
1499
}
 
1500
 
 
1501
int TableShare::parse_table_proto(Session& session, message::Table &table)
 
1502
{
 
1503
  int local_error= inner_parse_table_proto(session, table);
 
1504
 
 
1505
  if (not local_error)
 
1506
    return 0;
 
1507
 
 
1508
  error= local_error;
 
1509
  open_errno= errno;
 
1510
  errarg= 0;
 
1511
  open_table_error(local_error, open_errno, 0);
 
1512
 
 
1513
  return local_error;
 
1514
}
 
1515
 
1504
1516
 
1505
1517
/*
1506
1518
  Read table definition from a binary / text based .frm cursor
1914
1926
    null_bit= ((unsigned char) 1) << null_bit;
1915
1927
  }
1916
1928
 
 
1929
  switch (field_type) 
 
1930
  {
 
1931
  case DRIZZLE_TYPE_DATE:
 
1932
  case DRIZZLE_TYPE_DATETIME:
 
1933
  case DRIZZLE_TYPE_UUID:
 
1934
    field_charset= &my_charset_bin;
 
1935
  default: break;
 
1936
  }
 
1937
 
1917
1938
  switch (field_type)
1918
1939
  {
1919
1940
  case DRIZZLE_TYPE_ENUM:
1933
1954
                                      field_charset);
1934
1955
  case DRIZZLE_TYPE_BLOB:
1935
1956
    return new (&mem_root) Field_blob(ptr,
1936
 
                                      null_pos,
1937
 
                                      null_bit,
1938
 
                                      field_name,
1939
 
                                      this,
1940
 
                                      field_charset);
 
1957
                                 null_pos,
 
1958
                                 null_bit,
 
1959
                                 field_name,
 
1960
                                 this,
 
1961
                                 field_charset);
1941
1962
  case DRIZZLE_TYPE_DECIMAL:
1942
1963
    return new (&mem_root) Field_decimal(ptr,
1943
 
                                         field_length,
1944
 
                                         null_pos,
1945
 
                                         null_bit,
1946
 
                                         unireg_check,
1947
 
                                         field_name,
1948
 
                                         decimals);
 
1964
                                    field_length,
 
1965
                                    null_pos,
 
1966
                                    null_bit,
 
1967
                                    unireg_check,
 
1968
                                    field_name,
 
1969
                                    decimals);
1949
1970
  case DRIZZLE_TYPE_DOUBLE:
1950
1971
    return new (&mem_root) Field_double(ptr,
1951
1972
                                   field_length,
2014
2035
                                       field_length,
2015
2036
                                       null_pos,
2016
2037
                                       null_bit,
2017
 
                                       field_name);
 
2038
                                       field_name,
 
2039
                                       field_charset);
2018
2040
  case DRIZZLE_TYPE_DATE:
2019
2041
    return new (&mem_root) Field_date(ptr,
2020
2042
                                 null_pos,
2021
2043
                                 null_bit,
2022
 
                                 field_name);
 
2044
                                 field_name,
 
2045
                                 field_charset);
2023
2046
  case DRIZZLE_TYPE_DATETIME:
2024
2047
    return new (&mem_root) Field_datetime(ptr,
2025
2048
                                     null_pos,
2026
2049
                                     null_bit,
2027
 
                                     field_name);
 
2050
                                     field_name,
 
2051
                                     field_charset);
2028
2052
  case DRIZZLE_TYPE_NULL:
2029
2053
    return new (&mem_root) Field_null(ptr,
2030
 
                                      field_length,
2031
 
                                      field_name);
 
2054
                                 field_length,
 
2055
                                 field_name,
 
2056
                                 field_charset);
2032
2057
  }
2033
2058
  assert(0);
2034
2059
  abort();
2035
2060
}
2036
2061
 
2037
 
void TableShare::refreshVersion()
2038
 
{
2039
 
  version= refresh_version;
2040
 
}
2041
 
 
2042
2062
 
2043
2063
} /* namespace drizzled */