Merge mskold@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/usr/local/home/marty/MySQL/test/mysql-4.1
This commit is contained in:
commit
6c81b518c0
@ -87,6 +87,13 @@ a b c
|
|||||||
7 8 3
|
7 8 3
|
||||||
8 2 3
|
8 2 3
|
||||||
drop table t2;
|
drop table t2;
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
a int unsigned NOT NULL PRIMARY KEY,
|
||||||
|
b int unsigned not null,
|
||||||
|
c int unsigned,
|
||||||
|
UNIQUE USING HASH (b, c)
|
||||||
|
) engine=ndbcluster;
|
||||||
|
ERROR 42000: Column 'c' is used with UNIQUE or INDEX but is not defined as NOT NULL
|
||||||
CREATE TABLE t3 (
|
CREATE TABLE t3 (
|
||||||
a int unsigned NOT NULL,
|
a int unsigned NOT NULL,
|
||||||
b int unsigned not null,
|
b int unsigned not null,
|
||||||
|
@ -58,6 +58,14 @@ select * from t2 order by a;
|
|||||||
|
|
||||||
drop table t2;
|
drop table t2;
|
||||||
|
|
||||||
|
-- error 1121
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
a int unsigned NOT NULL PRIMARY KEY,
|
||||||
|
b int unsigned not null,
|
||||||
|
c int unsigned,
|
||||||
|
UNIQUE USING HASH (b, c)
|
||||||
|
) engine=ndbcluster;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Show use of PRIMARY KEY USING HASH indexes
|
# Show use of PRIMARY KEY USING HASH indexes
|
||||||
#
|
#
|
||||||
|
@ -796,6 +796,7 @@ int ha_ndbcluster::build_index_list(TABLE *tab, enum ILBP phase)
|
|||||||
error= create_unique_index(unique_index_name, key_info);
|
error= create_unique_index(unique_index_name, key_info);
|
||||||
break;
|
break;
|
||||||
case UNIQUE_INDEX:
|
case UNIQUE_INDEX:
|
||||||
|
if (!(error= check_index_fields_not_null(i)))
|
||||||
error= create_unique_index(unique_index_name, key_info);
|
error= create_unique_index(unique_index_name, key_info);
|
||||||
break;
|
break;
|
||||||
case ORDERED_INDEX:
|
case ORDERED_INDEX:
|
||||||
@ -848,6 +849,26 @@ NDB_INDEX_TYPE ha_ndbcluster::get_index_type_from_table(uint inx) const
|
|||||||
ORDERED_INDEX);
|
ORDERED_INDEX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ha_ndbcluster::check_index_fields_not_null(uint inx)
|
||||||
|
{
|
||||||
|
KEY* key_info= table->key_info + inx;
|
||||||
|
KEY_PART_INFO* key_part= key_info->key_part;
|
||||||
|
KEY_PART_INFO* end= key_part+key_info->key_parts;
|
||||||
|
DBUG_ENTER("check_index_fields_not_null");
|
||||||
|
|
||||||
|
for (; key_part != end; key_part++)
|
||||||
|
{
|
||||||
|
Field* field= key_part->field;
|
||||||
|
if (field->maybe_null())
|
||||||
|
{
|
||||||
|
my_printf_error(ER_NULL_COLUMN_IN_INDEX,ER(ER_NULL_COLUMN_IN_INDEX),
|
||||||
|
MYF(0),field->field_name);
|
||||||
|
DBUG_RETURN(ER_NULL_COLUMN_IN_INDEX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DBUG_RETURN(0);
|
||||||
|
}
|
||||||
|
|
||||||
void ha_ndbcluster::release_metadata()
|
void ha_ndbcluster::release_metadata()
|
||||||
{
|
{
|
||||||
|
@ -160,6 +160,7 @@ class ha_ndbcluster: public handler
|
|||||||
void release_metadata();
|
void release_metadata();
|
||||||
NDB_INDEX_TYPE get_index_type(uint idx_no) const;
|
NDB_INDEX_TYPE get_index_type(uint idx_no) const;
|
||||||
NDB_INDEX_TYPE get_index_type_from_table(uint index_no) const;
|
NDB_INDEX_TYPE get_index_type_from_table(uint index_no) const;
|
||||||
|
int check_index_fields_not_null(uint index_no);
|
||||||
|
|
||||||
int pk_read(const byte *key, uint key_len, byte *buf);
|
int pk_read(const byte *key, uint key_len, byte *buf);
|
||||||
int complemented_pk_read(const byte *old_data, byte *new_data);
|
int complemented_pk_read(const byte *old_data, byte *new_data);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user