Commit 457af3c1 authored by pem@mysql.com's avatar pem@mysql.com

Merge pmartin@bk-internal.mysql.com:/home/bk/mysql-4.0

into mysql.com:/home/pem/work/mysql-4.0
parents a909b1b7 7229217f
...@@ -25,13 +25,9 @@ create table t1 (a int not null auto_increment,primary key (a)) type=heap; ...@@ -25,13 +25,9 @@ create table t1 (a int not null auto_increment,primary key (a)) type=heap;
The used table type doesn't support AUTO_INCREMENT columns The used table type doesn't support AUTO_INCREMENT columns
create table t1 (a int not null,b text) type=heap; create table t1 (a int not null,b text) type=heap;
The used table type doesn't support BLOB/TEXT columns The used table type doesn't support BLOB/TEXT columns
create table t1 (a int ,primary key(a)) type=heap;
All parts of a PRIMARY KEY must be NOT NULL; If you need NULL in a key, use UNIQUE instead
drop table if exists t1; drop table if exists t1;
create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) type=heap; create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) type=heap;
The used table type doesn't support AUTO_INCREMENT columns The used table type doesn't support AUTO_INCREMENT columns
create table t1 (ordid int(8), primary key (ordid));
All parts of a PRIMARY KEY must be NOT NULL; If you need NULL in a key, use UNIQUE instead
create table not_existing_database.test (a int); create table not_existing_database.test (a int);
Got one of the listed errors Got one of the listed errors
create table `a/a` (a int); create table `a/a` (a int);
...@@ -171,3 +167,12 @@ t1 CREATE TABLE `t1` ( ...@@ -171,3 +167,12 @@ t1 CREATE TABLE `t1` (
) TYPE=MyISAM ) TYPE=MyISAM
SET SESSION table_type=default; SET SESSION table_type=default;
drop table t1; drop table t1;
create table t1 ( k1 varchar(2), k2 int, primary key(k1,k2));
insert into t1 values ("a", 1), ("b", 2);
insert into t1 values ("c", NULL);
Column 'k2' cannot be null
insert into t1 values (NULL, 3);
Column 'k1' cannot be null
insert into t1 values (NULL, NULL);
Column 'k1' cannot be null
drop table t1;
...@@ -42,7 +42,6 @@ price area type transityes shopsyes schoolsyes petsyes ...@@ -42,7 +42,6 @@ price area type transityes shopsyes schoolsyes petsyes
drop table t1; drop table t1;
CREATE TABLE t1 (program enum('signup','unique','sliding') not null, type enum('basic','sliding','signup'), sites set('mt'), PRIMARY KEY (program)); CREATE TABLE t1 (program enum('signup','unique','sliding') not null, type enum('basic','sliding','signup'), sites set('mt'), PRIMARY KEY (program));
ALTER TABLE t1 modify program enum('signup','unique','sliding'); ALTER TABLE t1 modify program enum('signup','unique','sliding');
All parts of a PRIMARY KEY must be NOT NULL; If you need NULL in a key, use UNIQUE instead
drop table t1; drop table t1;
CREATE TABLE t1 ( CREATE TABLE t1 (
name varchar(50) DEFAULT '' NOT NULL, name varchar(50) DEFAULT '' NOT NULL,
......
...@@ -24,11 +24,9 @@ drop table if exists t1,t2; ...@@ -24,11 +24,9 @@ drop table if exists t1,t2;
!$1167 create table t1 (b char(0) not null, index(b)); !$1167 create table t1 (b char(0) not null, index(b));
!$1164 create table t1 (a int not null auto_increment,primary key (a)) type=heap; !$1164 create table t1 (a int not null auto_increment,primary key (a)) type=heap;
!$1163 create table t1 (a int not null,b text) type=heap; !$1163 create table t1 (a int not null,b text) type=heap;
!$1171 create table t1 (a int ,primary key(a)) type=heap;
drop table if exists t1; drop table if exists t1;
!$1164 create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) type=heap; !$1164 create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) type=heap;
!$1171 create table t1 (ordid int(8), primary key (ordid));
-- error 1044,1 -- error 1044,1
create table not_existing_database.test (a int); create table not_existing_database.test (a int);
...@@ -119,3 +117,13 @@ show create table t1; ...@@ -119,3 +117,13 @@ show create table t1;
SET SESSION table_type=default; SET SESSION table_type=default;
drop table t1; drop table t1;
#
# ISO requires that primary keys are implicitly NOT NULL
#
create table t1 ( k1 varchar(2), k2 int, primary key(k1,k2));
insert into t1 values ("a", 1), ("b", 2);
!$1048 insert into t1 values ("c", NULL);
!$1048 insert into t1 values (NULL, 3);
!$1048 insert into t1 values (NULL, NULL);
drop table t1;
...@@ -54,12 +54,12 @@ INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','Y','Y','Y','Y'); ...@@ -54,12 +54,12 @@ INSERT INTO t1 VALUES (900,'Vancouver','Shared/Roomate','Y','Y','Y','Y');
drop table t1; drop table t1;
# #
# problem med primary key # No longer a problem with primary key
# #
CREATE TABLE t1 (program enum('signup','unique','sliding') not null, type enum('basic','sliding','signup'), sites set('mt'), PRIMARY KEY (program)); CREATE TABLE t1 (program enum('signup','unique','sliding') not null, type enum('basic','sliding','signup'), sites set('mt'), PRIMARY KEY (program));
# The following should give an error for wrong primary key # This no longer give an error for wrong primary key
!$1171 ALTER TABLE t1 modify program enum('signup','unique','sliding'); ALTER TABLE t1 modify program enum('signup','unique','sliding');
drop table t1; drop table t1;
# #
......
...@@ -598,8 +598,9 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, ...@@ -598,8 +598,9 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
{ {
if (key->type == Key::PRIMARY) if (key->type == Key::PRIMARY)
{ {
my_error(ER_PRIMARY_CANT_HAVE_NULL, MYF(0)); /* Implicitly set primary key fields to NOT NULL for ISO conf. */
DBUG_RETURN(-1); sql_field->flags|= NOT_NULL_FLAG;
sql_field->pack_flag&= ~FIELDFLAG_MAYBE_NULL;
} }
if (!(file->table_flags() & HA_NULL_KEY)) if (!(file->table_flags() & HA_NULL_KEY))
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment