mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Don't automaticly generate a new key for a foreign key constraint if there is already a usable key.
Prefer not automatic keys before automatic keys. If there is two conf BitKeeper/etc/ignore: added *.d include/my_base.h: Added flag for automaticly generated key mysql-test/r/constraints.result: Update tests after bug fix mysql-test/r/create.result: Update tests after bug fix mysql-test/r/innodb.result: Added test of automatic creation of foreign keys mysql-test/t/innodb.test: Added test of automatic creation of foreign keys mysql-test/t/key_cache.test: Portability fixes (64 BIT os) sql/sql_acl.cc: Indentation fixes sql/sql_class.cc: Fix key comparison to handle prefix and optionally key segments in different order. sql/sql_class.h: Added flag for automaticly generated keys sql/sql_parse.cc: Added flag for automaticly generated keys sql/sql_table.cc: Don't automaticly generate a new key for a foreign key constraint if there is already a usable key. Prefer not automatic keys before automatic keys. If there is two conflicting automatic keys, prefer the longer one. sql/sql_yacc.yy: Added flag for automaticly generated keys strings/strings-x86.s: Portability fix.
This commit is contained in:
@@ -240,14 +240,16 @@ public:
|
||||
enum ha_key_alg algorithm;
|
||||
List<key_part_spec> columns;
|
||||
const char *name;
|
||||
bool generated;
|
||||
|
||||
Key(enum Keytype type_par, const char *name_arg, enum ha_key_alg alg_par,
|
||||
List<key_part_spec> &cols)
|
||||
:type(type_par), algorithm(alg_par), columns(cols), name(name_arg)
|
||||
bool generated_arg, List<key_part_spec> &cols)
|
||||
:type(type_par), algorithm(alg_par), columns(cols), name(name_arg),
|
||||
generated(generated_arg)
|
||||
{}
|
||||
~Key() {}
|
||||
/* Equality comparison of keys (ignoring name) */
|
||||
bool operator==(Key& other);
|
||||
friend bool foreign_key_prefix(Key *a, Key *b);
|
||||
};
|
||||
|
||||
class Table_ident;
|
||||
@@ -265,7 +267,7 @@ public:
|
||||
foreign_key(const char *name_arg, List<key_part_spec> &cols,
|
||||
Table_ident *table, List<key_part_spec> &ref_cols,
|
||||
uint delete_opt_arg, uint update_opt_arg, uint match_opt_arg)
|
||||
:Key(FOREIGN_KEY, name_arg, HA_KEY_ALG_UNDEF, cols),
|
||||
:Key(FOREIGN_KEY, name_arg, HA_KEY_ALG_UNDEF, 0, cols),
|
||||
ref_table(table), ref_columns(cols),
|
||||
delete_opt(delete_opt_arg), update_opt(update_opt_arg),
|
||||
match_opt(match_opt_arg)
|
||||
|
||||
Reference in New Issue
Block a user