~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/table_proto_write.cc

  • Committer: Andrew Hutchings
  • Date: 2011-02-01 10:23:22 UTC
  • mto: (2136.1.1 build)
  • mto: This revision was merged to the branch mainline in revision 2137.
  • Revision ID: andrew@linuxjedi.co.uk-20110201102322-oxztcyrjzg3c7yta
Fix counters cleanup

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
   along with this program; if not, write to the Free Software
14
14
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */
15
15
 
16
 
#include <config.h>
 
16
#include "config.h"
17
17
#include <drizzled/error.h>
18
18
#include <drizzled/session.h>
19
19
#include <drizzled/unireg.h>
20
 
#include <drizzled/sql_table.h>
21
 
#include <drizzled/message/statement_transform.h>
22
 
 
23
 
#include <drizzled/plugin/storage_engine.h>
24
 
 
25
 
#include <drizzled/internal/my_sys.h>
26
 
#include <drizzled/typelib.h>
27
 
#include <drizzled/util/test.h>
 
20
#include "drizzled/sql_table.h"
 
21
#include "drizzled/global_charset_info.h"
 
22
#include "drizzled/message/statement_transform.h"
 
23
 
 
24
#include "drizzled/internal/my_sys.h"
 
25
 
28
26
 
29
27
/* For proto */
30
28
#include <string>
31
29
#include <fstream>
32
30
#include <fcntl.h>
33
 
#include <drizzled/message/schema.h>
34
 
#include <drizzled/message/table.h>
 
31
#include <drizzled/message/schema.pb.h>
 
32
#include <drizzled/message/table.pb.h>
35
33
#include <google/protobuf/io/zero_copy_stream.h>
36
34
#include <google/protobuf/io/zero_copy_stream_impl.h>
37
35
#include <google/protobuf/message.h>
39
37
#include <drizzled/table_proto.h>
40
38
#include <drizzled/charset.h>
41
39
 
42
 
#include <drizzled/function/time/typecast.h>
 
40
#include "drizzled/function/time/typecast.h"
43
41
 
44
42
using namespace std;
45
43
 
46
44
namespace drizzled {
47
45
 
48
 
static
49
 
bool fill_table_proto(const identifier::Table& identifier,
50
 
                      message::Table &table_proto,
 
46
bool fill_table_proto(message::Table &table_proto,
51
47
                      List<CreateField> &create_fields,
52
48
                      HA_CREATE_INFO *create_info,
53
49
                      uint32_t keys,
54
50
                      KeyInfo *key_info)
55
51
{
56
52
  CreateField *field_arg;
57
 
  List<CreateField>::iterator it(create_fields.begin());
 
53
  List_iterator<CreateField> it(create_fields);
58
54
  message::Table::TableOptions *table_options= table_proto.mutable_options();
59
55
 
60
 
  if (create_fields.size() > MAX_FIELDS)
 
56
  if (create_fields.elements > MAX_FIELDS)
61
57
  {
62
58
    my_error(ER_TOO_MANY_FIELDS, MYF(0), ER(ER_TOO_MANY_FIELDS));
63
59
    return true;
66
62
  assert(strcmp(table_proto.engine().name().c_str(),
67
63
                create_info->db_type->getName().c_str())==0);
68
64
 
69
 
  message::schema::shared_ptr schema_message= plugin::StorageEngine::getSchemaDefinition(identifier);
70
 
 
71
 
  if (schema_message and not message::is_replicated(*schema_message))
72
 
  {
73
 
    message::set_is_replicated(table_proto, false);
74
 
  }
75
 
 
76
65
  int field_number= 0;
77
66
  bool use_existing_fields= table_proto.field_size() > 0;
78
67
  while ((field_arg= it++))
309
298
          return true;
310
299
        }
311
300
 
312
 
        if (field::isDateTime(field_arg->sql_type))
 
301
        if (field_arg->sql_type == DRIZZLE_TYPE_DATE
 
302
            || field_arg->sql_type == DRIZZLE_TYPE_TIME
 
303
            || field_arg->sql_type == DRIZZLE_TYPE_DATETIME
 
304
            || field_arg->sql_type == DRIZZLE_TYPE_MICROTIME
 
305
            || field_arg->sql_type == DRIZZLE_TYPE_TIMESTAMP)
313
306
        {
314
307
          type::Time ltime;
315
308
 
523
516
        else
524
517
          collation_id= table_proto.options().collation_id();
525
518
 
526
 
        const charset_info_st *cs= get_charset(collation_id);
 
519
        const CHARSET_INFO *cs= get_charset(collation_id);
527
520
 
528
521
        mbmaxlen= cs->mbmaxlen;
529
522
      }
592
585
                      uint32_t keys, KeyInfo *key_info)
593
586
{
594
587
  assert(table_proto.has_name());
595
 
 
596
 
  if (fill_table_proto(identifier,
597
 
                       table_proto, create_fields, create_info,
 
588
  if (fill_table_proto(table_proto, create_fields, create_info,
598
589
                       keys, key_info))
599
590
  {
600
591
    return false;