~ubuntu-branches/ubuntu/trusty/drizzle/trusty

« back to all changes in this revision

Viewing changes to drizzled/foreign_key.cc

  • Committer: Bazaar Package Importer
  • Author(s): Monty Taylor
  • Date: 2010-10-02 14:17:48 UTC
  • mfrom: (1.1.1 upstream)
  • mto: (2.1.17 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20101002141748-m6vbfbfjhrw1153e
Tags: 2010.09.1802-1
* New upstream release.
* Removed pid-file argument hack.
* Updated GPL-2 address to be new address.
* Directly copy in drizzledump.1 since debian doesn't have sphinx 1.0 yet.
* Link to jquery from libjs-jquery. Add it as a depend.
* Add drizzled.8 symlink to the install files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
#include "drizzled/error.h"
26
26
#include "drizzled/create_field.h"
27
27
#include "drizzled/internal/my_sys.h"
 
28
#include "drizzled/table_ident.h"
28
29
 
29
30
namespace drizzled
30
31
{
31
32
 
32
33
extern const CHARSET_INFO *system_charset_info;
33
34
 
 
35
void add_foreign_key_to_table_message(
 
36
    message::Table *table_message,
 
37
    const char* fkey_name,
 
38
    List<Key_part_spec> &cols,
 
39
    Table_ident *table,
 
40
    List<Key_part_spec> &ref_cols,
 
41
    message::Table::ForeignKeyConstraint::ForeignKeyOption delete_opt_arg,
 
42
    message::Table::ForeignKeyConstraint::ForeignKeyOption update_opt_arg,
 
43
    message::Table::ForeignKeyConstraint::ForeignKeyMatchOption match_opt_arg)
 
44
{
 
45
  message::Table::ForeignKeyConstraint *pfkey= table_message->add_fk_constraint();
 
46
  if (fkey_name)
 
47
    pfkey->set_name(fkey_name);
 
48
  else if (table_message->has_name())
 
49
  {
 
50
    std::string name(table_message->name());
 
51
    char number[20];
 
52
 
 
53
    name.append("_ibfk_");
 
54
    snprintf(number, sizeof(number), "%d", table_message->fk_constraint_size());
 
55
    name.append(number);
 
56
 
 
57
    pfkey->set_name(name);
 
58
  }
 
59
 
 
60
  pfkey->set_match(match_opt_arg);
 
61
  pfkey->set_update_option(update_opt_arg);
 
62
  pfkey->set_delete_option(delete_opt_arg);
 
63
 
 
64
  pfkey->set_references_table_name(table->table.str);
 
65
 
 
66
  Key_part_spec *keypart;
 
67
  List_iterator<Key_part_spec> col_it(cols);
 
68
  while ((keypart= col_it++))
 
69
  {
 
70
    pfkey->add_column_names(keypart->field_name.str);
 
71
  }
 
72
 
 
73
  List_iterator<Key_part_spec> ref_it(ref_cols);
 
74
  while ((keypart= ref_it++))
 
75
  {
 
76
    pfkey->add_references_columns(keypart->field_name.str);
 
77
  }
 
78
 
 
79
}
 
80
 
34
81
Foreign_key::Foreign_key(const Foreign_key &rhs, memory::Root *mem_root)
35
82
  :Key(rhs),
36
83
  ref_table(rhs.ref_table),