~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item/insert_value.cc

  • Committer: Stewart Smith
  • Date: 2010-06-16 14:17:58 UTC
  • mto: (1626.1.3 build)
  • mto: This revision was merged to the branch mainline in revision 1633.
  • Revision ID: stewart@flamingspork.com-20100616141758-odpf36m0wo09ok4c
add handler_write status variable test for when statement was rolled back

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
3
 *
4
 
 *  Copyright (C) 2008 Sun Microsystems, Inc.
 
4
 *  Copyright (C) 2008 Sun Microsystems
5
5
 *
6
6
 *  This program is free software; you can redistribute it and/or modify
7
7
 *  it under the terms of the GNU General Public License as published by
17
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
18
 */
19
19
 
20
 
#include <config.h>
 
20
#include "config.h"
21
21
#include <drizzled/error.h>
22
22
#include <drizzled/name_resolution_context.h>
23
23
#include <drizzled/table.h>
69
69
 
70
70
  Item_field *field_arg= (Item_field *)arg;
71
71
 
72
 
  if (field_arg->field->getTable()->insert_values.size())
 
72
  if (field_arg->field->table->insert_values)
73
73
  {
74
74
    Field *def_field= (Field*) memory::sql_alloc(field_arg->field->size_of());
75
75
    if (!def_field)
76
76
      return true;
77
77
    memcpy(def_field, field_arg->field, field_arg->field->size_of());
78
78
    def_field->move_field_offset((ptrdiff_t)
79
 
                                 (&def_field->getTable()->insert_values[0] - def_field->getTable()->record[0]));
 
79
                                 (def_field->table->insert_values -
 
80
                                  def_field->table->record[0]));
80
81
    set_field(def_field);
81
82
  }
82
83
  else
83
84
  {
84
85
    Field *tmp_field= field_arg->field;
85
86
    /* charset doesn't matter here, it's to avoid sigsegv only */
86
 
    tmp_field= new Field_null(0, 0, field_arg->field->field_name);
 
87
    tmp_field= new Field_null(0, 0, field_arg->field->field_name, &my_charset_bin);
87
88
    if (tmp_field)
88
89
    {
89
 
      tmp_field->init(field_arg->field->getTable());
 
90
      tmp_field->init(field_arg->field->table);
90
91
      set_field(tmp_field);
91
92
    }
92
93
  }