diff options
author | unknown <antony@ltantony.mysql.com> | 2005-05-08 23:24:33 +0100 |
---|---|---|
committer | unknown <antony@ltantony.mysql.com> | 2005-05-08 23:24:33 +0100 |
commit | 4d1c68f8d1100239b10aa7cfa08fe60d642c1424 (patch) | |
tree | afbac4f8450273b17337ddd8bef00048ca7e3986 /sql | |
parent | 1cdcc4f6b1a3241cdc71d8b648828741220a0733 (diff) | |
parent | cdfc786f693f83396d1588859ee698b27ad1a4f9 (diff) | |
download | mariadb-git-4d1c68f8d1100239b10aa7cfa08fe60d642c1424.tar.gz |
Merge acurtis@bk-internal.mysql.com:/home/bk/mysql-4.0
into ltantony.mysql.com:/usr/home/antony/work2/megapatch-4.0
BitKeeper/etc/logging_ok:
auto-union
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_table.cc | 23 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 7 |
2 files changed, 21 insertions, 9 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index cef480fadde..e065e5dfc58 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1795,6 +1795,11 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, } KEY_PART_INFO *key_part= key_info->key_part; + enum Key::Keytype key_type= key_info->flags & HA_NOSAME ? + (!my_strcasecmp(key_name, "PRIMARY") ? + Key::PRIMARY : Key::UNIQUE) : + (key_info->flags & HA_FULLTEXT ? + Key::FULLTEXT : Key::MULTIPLE); key_parts.empty(); for (uint j=0 ; j < key_info->key_parts ; j++,key_part++) { @@ -1824,16 +1829,22 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, cfield->pack_length <= key_part_length)) key_part_length=0; // Use whole field } + if (!(cfield->flags & NOT_NULL_FLAG)) + { + if (key_type == Key::PRIMARY) + { + /* Implicitly set primary key fields to NOT NULL for ISO conf. */ + cfield->flags|= NOT_NULL_FLAG; + cfield->pack_flag&= ~FIELDFLAG_MAYBE_NULL; + } + else + key_info->flags|= HA_NULL_PART_KEY; + } key_parts.push_back(new key_part_spec(cfield->field_name, key_part_length)); } if (key_parts.elements) - key_list.push_back(new Key(key_info->flags & HA_NOSAME ? - (!my_strcasecmp(key_name, "PRIMARY") ? - Key::PRIMARY : Key::UNIQUE) : - (key_info->flags & HA_FULLTEXT ? - Key::FULLTEXT : Key::MULTIPLE), - key_name,key_parts)); + key_list.push_back(new Key(key_type,key_name,key_parts)); } key_it.rewind(); { diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 8c5c4d61d1d..68d08b353d9 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -1537,9 +1537,10 @@ select_part2: select_into: limit_clause {} + | into | select_from - | opt_into select_from - | select_from opt_into; + | into select_from + | select_from into; select_from: FROM join_table_list where_clause group_clause having_clause opt_order_clause limit_clause procedure_clause; @@ -2507,7 +2508,7 @@ procedure_item: $2->set_name($1,(uint) ((char*) lex->tok_end - $1)); }; -opt_into: +into: INTO OUTFILE TEXT_STRING { THD *thd= current_thd; |