mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Fixed AUTO_INCREMENT handling in MyISAM (last auto_increment patch broke things)
Some after merge fixes mysql-test/r/ctype_latin1_de.result: Changed test to have more relevant results mysql-test/r/delete.result: Updated results after merge mysql-test/r/select.result: Remove explicit database usage mysql-test/r/type_datetime.result: Updated results after merge mysql-test/t/ctype_latin1_de.test: Changed test to have more relevant results mysql-test/t/select.test: Remove explicit database usage sql/ha_myisam.cc: Fixed AUTO_INCREMENT handling in MyISAM (last auto_increment patch broke things)
This commit is contained in:
@ -1,93 +1,95 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (a char (20) not null, b int not null auto_increment, index (a,b),index(b));
|
create table t1 (a char (20) not null, b int not null auto_increment, index (a,b));
|
||||||
insert into t1 (a) values ('<27>'),('ac'),('ae'),('ad'),('<27>c'),('aeb');
|
insert into t1 (a) values ('<27>'),('ac'),('ae'),('ad'),('<27>c'),('aeb');
|
||||||
insert into t1 (a) values ('<27>c'),('uc'),('ue'),('ud'),('<27>'),('ueb'),('uf');
|
insert into t1 (a) values ('<27>c'),('uc'),('ue'),('ud'),('<27>'),('ueb'),('uf');
|
||||||
insert into t1 (a) values ('<27>'),('oc'),('<27>a'),('oe'),('od'),('<27>c'),('oeb');
|
insert into t1 (a) values ('<27>'),('oc'),('<27>a'),('oe'),('od'),('<27>c'),('oeb');
|
||||||
insert into t1 (a) values ('s'),('ss'),('<27>'),('<27>b'),('ssa'),('ssc'),('<27>a');
|
insert into t1 (a) values ('s'),('ss'),('<27>'),('<27>b'),('ssa'),('ssc'),('<27>a');
|
||||||
insert into t1 (a) values ('e<>'),('u<>'),('<27>o'),('<27><>'),('<27><>a'),('aeae');
|
insert into t1 (a) values ('e<>'),('u<>'),('<27>o'),('<27><>'),('<27><>a'),('aeae');
|
||||||
insert into t1 (a) values ('q'),('a'),('u'),('o'),('<27>'),('<27>');
|
insert into t1 (a) values ('q'),('a'),('u'),('o'),('<27>'),('<27>'),('a');
|
||||||
select a,b from t1 order by a,b;
|
select a,b from t1 order by a,b;
|
||||||
a b
|
a b
|
||||||
a 35
|
a 1
|
||||||
ac 2
|
a 2
|
||||||
ad 4
|
ac 1
|
||||||
|
ad 1
|
||||||
<EFBFBD> 1
|
<EFBFBD> 1
|
||||||
ae 3
|
ae 2
|
||||||
<EFBFBD><EFBFBD> 31
|
<EFBFBD><EFBFBD> 1
|
||||||
aeae 33
|
aeae 2
|
||||||
<EFBFBD><EFBFBD>a 32
|
<EFBFBD><EFBFBD>a 1
|
||||||
aeb 6
|
aeb 1
|
||||||
<EFBFBD>c 5
|
<EFBFBD>c 1
|
||||||
<EFBFBD> 38
|
<EFBFBD> 1
|
||||||
<EFBFBD> 39
|
<EFBFBD> 2
|
||||||
e<EFBFBD> 28
|
e<EFBFBD> 1
|
||||||
o 37
|
o 1
|
||||||
oc 15
|
oc 1
|
||||||
od 18
|
od 1
|
||||||
<EFBFBD> 14
|
<EFBFBD> 1
|
||||||
oe 17
|
oe 2
|
||||||
<EFBFBD>a 16
|
<EFBFBD>a 1
|
||||||
oeb 20
|
oeb 1
|
||||||
<EFBFBD>c 19
|
<EFBFBD>c 1
|
||||||
<EFBFBD>o 30
|
<EFBFBD>o 1
|
||||||
q 34
|
q 1
|
||||||
s 21
|
s 1
|
||||||
ss 22
|
ss 1
|
||||||
<EFBFBD> 23
|
<EFBFBD> 2
|
||||||
ssa 25
|
ssa 1
|
||||||
<EFBFBD>a 27
|
<EFBFBD>a 2
|
||||||
<EFBFBD>b 24
|
<EFBFBD>b 1
|
||||||
ssc 26
|
ssc 1
|
||||||
u 36
|
u 1
|
||||||
uc 8
|
uc 1
|
||||||
ud 10
|
ud 1
|
||||||
ue 9
|
ue 1
|
||||||
<EFBFBD> 11
|
<EFBFBD> 2
|
||||||
ueb 12
|
ueb 1
|
||||||
<EFBFBD>c 7
|
<EFBFBD>c 1
|
||||||
uf 13
|
uf 1
|
||||||
u<EFBFBD> 29
|
u<EFBFBD> 1
|
||||||
select a,b from t1 order by upper(a),b;
|
select a,b from t1 order by upper(a),b;
|
||||||
a b
|
a b
|
||||||
a 35
|
a 1
|
||||||
ac 2
|
a 2
|
||||||
ad 4
|
ac 1
|
||||||
|
ad 1
|
||||||
<EFBFBD> 1
|
<EFBFBD> 1
|
||||||
ae 3
|
ae 2
|
||||||
<EFBFBD><EFBFBD> 31
|
<EFBFBD><EFBFBD> 1
|
||||||
aeae 33
|
aeae 2
|
||||||
<EFBFBD><EFBFBD>a 32
|
<EFBFBD><EFBFBD>a 1
|
||||||
aeb 6
|
aeb 1
|
||||||
<EFBFBD>c 5
|
<EFBFBD>c 1
|
||||||
<EFBFBD> 38
|
<EFBFBD> 1
|
||||||
<EFBFBD> 39
|
<EFBFBD> 2
|
||||||
e<EFBFBD> 28
|
e<EFBFBD> 1
|
||||||
o 37
|
o 1
|
||||||
oc 15
|
oc 1
|
||||||
od 18
|
od 1
|
||||||
<EFBFBD> 14
|
<EFBFBD> 1
|
||||||
oe 17
|
oe 2
|
||||||
<EFBFBD>a 16
|
<EFBFBD>a 1
|
||||||
oeb 20
|
oeb 1
|
||||||
<EFBFBD>c 19
|
<EFBFBD>c 1
|
||||||
<EFBFBD>o 30
|
<EFBFBD>o 1
|
||||||
q 34
|
q 1
|
||||||
s 21
|
s 1
|
||||||
ss 22
|
ss 1
|
||||||
<EFBFBD> 23
|
<EFBFBD> 2
|
||||||
ssa 25
|
ssa 1
|
||||||
<EFBFBD>a 27
|
<EFBFBD>a 2
|
||||||
<EFBFBD>b 24
|
<EFBFBD>b 1
|
||||||
ssc 26
|
ssc 1
|
||||||
u 36
|
u 1
|
||||||
uc 8
|
uc 1
|
||||||
ud 10
|
ud 1
|
||||||
ue 9
|
ue 1
|
||||||
<EFBFBD> 11
|
<EFBFBD> 2
|
||||||
ueb 12
|
ueb 1
|
||||||
<EFBFBD>c 7
|
<EFBFBD>c 1
|
||||||
uf 13
|
uf 1
|
||||||
u<EFBFBD> 29
|
u<EFBFBD> 1
|
||||||
select a from t1 order by a desc;
|
select a from t1 order by a desc;
|
||||||
a
|
a
|
||||||
u<EFBFBD>
|
u<EFBFBD>
|
||||||
@ -129,44 +131,46 @@ ae
|
|||||||
ad
|
ad
|
||||||
ac
|
ac
|
||||||
a
|
a
|
||||||
|
a
|
||||||
check table t1;
|
check table t1;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
select * from t1 where a like "<22>%";
|
select * from t1 where a like "<22>%";
|
||||||
a b
|
a b
|
||||||
<EFBFBD> 14
|
<EFBFBD> 1
|
||||||
<EFBFBD>a 16
|
<EFBFBD>a 1
|
||||||
<EFBFBD>c 19
|
<EFBFBD>c 1
|
||||||
<EFBFBD>o 30
|
<EFBFBD>o 1
|
||||||
select * from t1 where a like binary "%<25>%";
|
select * from t1 where a like binary "%<25>%";
|
||||||
a b
|
a b
|
||||||
<EFBFBD> 39
|
<EFBFBD> 2
|
||||||
select * from t1 where a like "%<25>%";
|
select * from t1 where a like "%<25>%";
|
||||||
a b
|
a b
|
||||||
a 35
|
a 1
|
||||||
ac 2
|
a 2
|
||||||
ad 4
|
ac 1
|
||||||
ae 3
|
ad 1
|
||||||
aeae 33
|
ae 2
|
||||||
<EFBFBD><EFBFBD>a 32
|
aeae 2
|
||||||
aeb 6
|
<EFBFBD><EFBFBD>a 1
|
||||||
<EFBFBD>a 16
|
aeb 1
|
||||||
ssa 25
|
<EFBFBD>a 1
|
||||||
<EFBFBD>a 27
|
ssa 1
|
||||||
|
<EFBFBD>a 2
|
||||||
select * from t1 where a like "%U%";
|
select * from t1 where a like "%U%";
|
||||||
a b
|
a b
|
||||||
u 36
|
u 1
|
||||||
uc 8
|
uc 1
|
||||||
ud 10
|
ud 1
|
||||||
ue 9
|
ue 1
|
||||||
ueb 12
|
ueb 1
|
||||||
uf 13
|
uf 1
|
||||||
u<EFBFBD> 29
|
u<EFBFBD> 1
|
||||||
select * from t1 where a like "%ss%";
|
select * from t1 where a like "%ss%";
|
||||||
a b
|
a b
|
||||||
ss 22
|
ss 1
|
||||||
ssa 25
|
ssa 1
|
||||||
ssc 26
|
ssc 1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
select strcmp('<27>','ae'),strcmp('ae','<27>'),strcmp('aeq','<27>q'),strcmp('<27>q','aeq');
|
select strcmp('<27>','ae'),strcmp('ae','<27>'),strcmp('aeq','<27>q'),strcmp('<27>q','aeq');
|
||||||
strcmp('<27>','ae') strcmp('ae','<27>') strcmp('aeq','<27>q') strcmp('<27>q','aeq')
|
strcmp('<27>','ae') strcmp('ae','<27>') strcmp('aeq','<27>q') strcmp('<27>q','aeq')
|
||||||
|
@ -24,3 +24,18 @@ create table t1 (a bigint not null, primary key (a,a,a,a,a,a,a,a,a,a));
|
|||||||
insert into t1 values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27);
|
insert into t1 values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27);
|
||||||
delete from t1 where a=27;
|
delete from t1 where a=27;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
bool char(0) default NULL,
|
||||||
|
not_null varchar(20) binary NOT NULL default '',
|
||||||
|
misc integer not null,
|
||||||
|
PRIMARY KEY (not_null)
|
||||||
|
) TYPE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (NULL,'a',4), (NULL,'b',5), (NULL,'c',6), (NULL,'d',7);
|
||||||
|
select * from t1 where misc > 5 and bool is null;
|
||||||
|
bool not_null misc
|
||||||
|
NULL c 6
|
||||||
|
NULL d 7
|
||||||
|
delete from t1 where misc > 5 and bool is null;
|
||||||
|
select * from t1 where misc > 5 and bool is null;
|
||||||
|
bool not_null misc
|
||||||
|
drop table t1;
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
use test;
|
|
||||||
drop table if exists t1,t2,t3,t4;
|
drop table if exists t1,t2,t3,t4;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
|
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
|
||||||
|
@ -78,21 +78,6 @@ EXPLAIN SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
|
|||||||
table type possible_keys key key_len ref rows Extra
|
table type possible_keys key key_len ref rows Extra
|
||||||
t1 ref expedition expedition 8 const 1 Using where
|
t1 ref expedition expedition 8 const 1 Using where
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE `t1` (
|
|
||||||
`date` datetime NOT NULL default '0000-00-00 00:00:00',
|
|
||||||
`numfacture` int(6) unsigned NOT NULL default '0',
|
|
||||||
`expedition` datetime NOT NULL default '0000-00-00 00:00:00',
|
|
||||||
PRIMARY KEY (`numfacture`),
|
|
||||||
KEY `date` (`date`),
|
|
||||||
KEY `expedition` (`expedition`)
|
|
||||||
) TYPE=MyISAM;
|
|
||||||
|
|
||||||
INSERT INTO t1 (expedition) VALUES ('0001-00-00 00:00:00');
|
|
||||||
SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
|
|
||||||
INSERT INTO t1 (numfacture,expedition) VALUES ('1212','0001-00-00 00:00:00');
|
|
||||||
SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
|
|
||||||
EXPLAIN SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a datetime not null, b datetime not null);
|
create table t1 (a datetime not null, b datetime not null);
|
||||||
insert into t1 values (now(), now());
|
insert into t1 values (now(), now());
|
||||||
insert into t1 values (now(), now());
|
insert into t1 values (now(), now());
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
# Test latin_de character set
|
# Test latin_de character set
|
||||||
#
|
#
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (a char (20) not null, b int not null auto_increment, index (a,b),index(b));
|
create table t1 (a char (20) not null, b int not null auto_increment, index (a,b));
|
||||||
insert into t1 (a) values ('<27>'),('ac'),('ae'),('ad'),('<27>c'),('aeb');
|
insert into t1 (a) values ('<27>'),('ac'),('ae'),('ad'),('<27>c'),('aeb');
|
||||||
insert into t1 (a) values ('<27>c'),('uc'),('ue'),('ud'),('<27>'),('ueb'),('uf');
|
insert into t1 (a) values ('<27>c'),('uc'),('ue'),('ud'),('<27>'),('ueb'),('uf');
|
||||||
insert into t1 (a) values ('<27>'),('oc'),('<27>a'),('oe'),('od'),('<27>c'),('oeb');
|
insert into t1 (a) values ('<27>'),('oc'),('<27>a'),('oe'),('od'),('<27>c'),('oeb');
|
||||||
insert into t1 (a) values ('s'),('ss'),('<27>'),('<27>b'),('ssa'),('ssc'),('<27>a');
|
insert into t1 (a) values ('s'),('ss'),('<27>'),('<27>b'),('ssa'),('ssc'),('<27>a');
|
||||||
insert into t1 (a) values ('e<>'),('u<>'),('<27>o'),('<27><>'),('<27><>a'),('aeae');
|
insert into t1 (a) values ('e<>'),('u<>'),('<27>o'),('<27><>'),('<27><>a'),('aeae');
|
||||||
insert into t1 (a) values ('q'),('a'),('u'),('o'),('<27>'),('<27>');
|
insert into t1 (a) values ('q'),('a'),('u'),('o'),('<27>'),('<27>'),('a');
|
||||||
select a,b from t1 order by a,b;
|
select a,b from t1 order by a,b;
|
||||||
select a,b from t1 order by upper(a),b;
|
select a,b from t1 order by upper(a),b;
|
||||||
select a from t1 order by a desc;
|
select a from t1 order by a desc;
|
||||||
|
@ -6,8 +6,6 @@
|
|||||||
# Simple select test
|
# Simple select test
|
||||||
#
|
#
|
||||||
|
|
||||||
use test;
|
|
||||||
|
|
||||||
drop table if exists t1,t2,t3,t4;
|
drop table if exists t1,t2,t3,t4;
|
||||||
|
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
|
@ -1021,7 +1021,7 @@ int ha_myisam::create(const char *name, register TABLE *table_arg,
|
|||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
uint i,j,recpos,minpos,fieldpos,temp_length,length;
|
uint i,j,recpos,minpos,fieldpos,temp_length,length;
|
||||||
bool found_auto_increment=0, found_real_auto_increment=0;
|
bool found_real_auto_increment=0;
|
||||||
enum ha_base_keytype type;
|
enum ha_base_keytype type;
|
||||||
char buff[FN_REFLEN];
|
char buff[FN_REFLEN];
|
||||||
KEY *pos;
|
KEY *pos;
|
||||||
@ -1091,12 +1091,6 @@ int ha_myisam::create(const char *name, register TABLE *table_arg,
|
|||||||
keydef[i].seg[j].null_bit=0;
|
keydef[i].seg[j].null_bit=0;
|
||||||
keydef[i].seg[j].null_pos=0;
|
keydef[i].seg[j].null_pos=0;
|
||||||
}
|
}
|
||||||
if (field->flags & AUTO_INCREMENT_FLAG && !found_auto_increment)
|
|
||||||
{
|
|
||||||
keydef[i].flag|=HA_AUTO_KEY;
|
|
||||||
found_auto_increment=1;
|
|
||||||
found_real_auto_increment=(j==0);
|
|
||||||
}
|
|
||||||
if (field->type() == FIELD_TYPE_BLOB)
|
if (field->type() == FIELD_TYPE_BLOB)
|
||||||
{
|
{
|
||||||
keydef[i].seg[j].flag|=HA_BLOB_PART;
|
keydef[i].seg[j].flag|=HA_BLOB_PART;
|
||||||
@ -1108,6 +1102,12 @@ int ha_myisam::create(const char *name, register TABLE *table_arg,
|
|||||||
keyseg+=pos->key_parts;
|
keyseg+=pos->key_parts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (table_arg->found_next_number_field)
|
||||||
|
{
|
||||||
|
keydef[table_arg->next_number_index].flag|= HA_AUTO_KEY;
|
||||||
|
found_real_auto_increment= table_arg->next_number_key_offset == 0;
|
||||||
|
}
|
||||||
|
|
||||||
recpos=0; recinfo_pos=recinfo;
|
recpos=0; recinfo_pos=recinfo;
|
||||||
while (recpos < (uint) table_arg->reclength)
|
while (recpos < (uint) table_arg->reclength)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user