2003-11-15 12:30:32 +01:00
drop table if exists t1,t2,t3,t4;
2003-08-18 23:08:08 +02:00
drop database if exists mysqltest;
2003-12-10 05:31:42 +01:00
create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David'), (2, 'Erik'), (3, 'Sasha'), (3, 'Jeremy'), (4, 'Matt');
select id, code, name from t1 order by id;
2001-01-12 15:40:27 +01:00
id code name
1 1 Tim
2 1 Monty
3 2 David
4 2 Erik
5 3 Sasha
6 3 Jeremy
7 4 Matt
2001-10-04 23:42:25 +02:00
update ignore t1 set id = 8, name = 'Sinisa' where id < 3;
select id, code, name from t1 order by id;
2001-01-12 15:40:27 +01:00
id code name
2 1 Monty
3 2 David
4 2 Erik
5 3 Sasha
6 3 Jeremy
7 4 Matt
8 1 Sinisa
2001-10-04 23:42:25 +02:00
update ignore t1 set id = id + 10, name = 'Ralph' where id < 4;
select id, code, name from t1 order by id;
2001-01-12 15:40:27 +01:00
id code name
3 2 David
4 2 Erik
5 3 Sasha
6 3 Jeremy
7 4 Matt
8 1 Sinisa
12 1 Ralph
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (
id int(11) NOT NULL auto_increment,
parent_id int(11) DEFAULT '0' NOT NULL,
level tinyint(4) DEFAULT '0' NOT NULL,
PRIMARY KEY (id),
KEY parent_id (parent_id),
KEY level (level)
2003-12-10 05:31:42 +01:00
) engine=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1),(179,5,2);
update t1 set parent_id=parent_id+100;
select * from t1 where parent_id=102;
2001-01-12 15:40:27 +01:00
id parent_id level
8 102 2
9 102 2
15 102 2
2001-10-04 23:42:25 +02:00
update t1 set id=id+1000;
update t1 set id=1024 where id=1009;
2001-10-09 04:18:37 +02:00
Got one of the listed errors
2001-10-04 23:42:25 +02:00
select * from t1;
2001-01-12 15:40:27 +01:00
id parent_id level
1001 100 0
1002 101 1
1003 101 1
1004 101 1
1005 101 1
1006 101 1
1007 101 1
1008 102 2
1009 102 2
1015 102 2
1016 103 2
1017 103 2
1018 103 2
1019 103 2
1020 103 2
1021 104 2
1022 104 2
1024 104 2
1025 105 2
1026 105 2
1027 105 2
1028 105 2
1029 105 2
1030 105 2
1031 106 2
1032 106 2
1033 106 2
1034 106 2
1035 106 2
1036 107 2
1037 107 2
1038 107 2
1040 107 2
1157 100 0
1179 105 2
1183 104 2
1193 105 2
1202 107 2
1203 107 2
2001-10-04 23:42:25 +02:00
update ignore t1 set id=id+1;
select * from t1;
2001-01-12 15:40:27 +01:00
id parent_id level
1001 100 0
1002 101 1
1003 101 1
1004 101 1
1005 101 1
1006 101 1
1007 101 1
1008 102 2
1010 102 2
1015 102 2
1016 103 2
1017 103 2
1018 103 2
1019 103 2
1020 103 2
1021 104 2
1023 104 2
1024 104 2
1025 105 2
1026 105 2
1027 105 2
1028 105 2
1029 105 2
1030 105 2
1031 106 2
1032 106 2
1033 106 2
1034 106 2
1035 106 2
1036 107 2
1037 107 2
1039 107 2
1041 107 2
1158 100 0
1180 105 2
1184 104 2
1194 105 2
1202 107 2
1204 107 2
2001-10-04 23:42:25 +02:00
update ignore t1 set id=1023 where id=1010;
select * from t1 where parent_id=102;
2001-01-12 15:40:27 +01:00
id parent_id level
1008 102 2
1010 102 2
2001-03-07 13:06:39 +01:00
1015 102 2
2003-08-18 23:08:08 +02:00
explain select level from t1 where level=1;
id select_type table type possible_keys key key_len ref rows Extra
2004-09-09 05:59:26 +02:00
1 SIMPLE t1 ref level level 1 const # Using index
2003-08-18 23:08:08 +02:00
explain select level,id from t1 where level=1;
id select_type table type possible_keys key key_len ref rows Extra
2004-09-09 05:59:26 +02:00
1 SIMPLE t1 ref level level 1 const # Using index
2003-08-18 23:08:08 +02:00
explain select level,id,parent_id from t1 where level=1;
id select_type table type possible_keys key key_len ref rows Extra
2004-09-09 05:59:26 +02:00
1 SIMPLE t1 ref level level 1 const #
2001-10-04 23:42:25 +02:00
select level,id from t1 where level=1;
2001-01-12 15:40:27 +01:00
level id
1 1002
1 1003
1 1004
1 1005
1 1006
1 1007
2001-10-04 23:42:25 +02:00
select level,id,parent_id from t1 where level=1;
2001-01-12 15:40:27 +01:00
level id parent_id
1 1002 101
1 1003 101
1 1004 101
1 1005 101
1 1006 101
1 1007 101
2001-10-04 23:42:25 +02:00
optimize table t1;
2001-03-07 13:06:39 +01:00
Table Op Msg_type Msg_text
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
PARTITION took another code path (over mysql_alter_table instead of
mysql_admin_table) which differs in two ways:
1) alter table opens the tables in a different way than admin tables do
resulting in returning with error before it tried the command
2) alter table does not start to send any diagnostic rows to the client
which the lower admin functions continue to use -> resulting in
assertion crash
The fix:
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
Adding check in mysql_admin_table to setup the partition list for
which partitions that should be used.
Partitioned tables will still not work with
REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
to tables, REPAIR TABLE t USE_FRM, and check that the data still
fulfills the partitioning function and then move the table back to
being a partition.
NOTE: I have removed the following functions from the handler
interface:
analyze_partitions, check_partitions, optimize_partitions,
repair_partitions
Since they are not longer needed.
THIS ALTERS THE STORAGE ENGINE API
mysql-test/r/handler_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb_mysql.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/partition.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/r/trigger-trans.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/ndb/r/ndb_partition_key.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/ndb/t/ndb_partition_key.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/inc/partition_alter4.inc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_myisam.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/rpl/r/rpl_failed_optimize.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/t/partition.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
sql/ha_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a function for returning admin commands result rows
Updated handle_opt_partitions to handle admin commands result rows,
and some error filtering (as mysql_admin_table do).
Removed the functions analyze/check/optimize/repair_partitions
since they have no longer any use.
sql/ha_partition.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/mysql_priv.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added set_part_state for reuse of code in mysql_admin_table.
(Originally fond in sql/sql_partition.cc:prep_alter_part_table)
sql/protocol.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added one assert and a debug print.
sql/sql_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Refactored code for setting up partition state, set_part_state,
now used in both prep_alter_part_table and
sql_table.cc:mysql_admin_table.
Removed code for handling ANALYZE/CHECK/OPTIMIZE/REPAIR partitions,
since it is now handled by mysql_admin_table.
sql/sql_table.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added functionality in mysql_admin_table to work with partitioned
tables.
Fixed a possible assertion bug for HA_ADMIN_TRY_ALTER
(If analyze would output a row, it fails since the row was already
started).
sql/sql_yacc.yy:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION
to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
instead of taking the ALTER TABLE path.
Added reset of alter_info for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
since it is now used by partitioned tables.
storage/myisam/mi_check.c:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Changed warning message from "Found X parts Should be: Y parts"
to "Found X key parts. Should be Y", since it could be confusing
with partitioned tables.
2008-08-11 20:02:03 +02:00
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
2003-08-18 23:08:08 +02:00
test.t1 optimize status OK
2001-10-04 23:42:25 +02:00
show keys from t1;
2002-01-02 20:29:41 +01:00
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
2003-03-20 20:35:03 +01:00
t1 0 PRIMARY 1 id A # NULL NULL BTREE
t1 1 parent_id 1 parent_id A # NULL NULL BTREE
t1 1 level 1 level A # NULL NULL BTREE
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (
gesuchnr int(11) DEFAULT '0' NOT NULL,
benutzer_id int(11) DEFAULT '0' NOT NULL,
PRIMARY KEY (gesuchnr,benutzer_id)
2003-12-10 05:31:42 +01:00
) engine=innodb;
2001-10-04 23:42:25 +02:00
replace into t1 (gesuchnr,benutzer_id) values (2,1);
replace into t1 (gesuchnr,benutzer_id) values (1,1);
replace into t1 (gesuchnr,benutzer_id) values (1,1);
select * from t1;
2001-01-12 15:40:27 +01:00
gesuchnr benutzer_id
1 1
2 1
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1), (2);
optimize table t1;
2001-03-07 13:06:39 +01:00
Table Op Msg_type Msg_text
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
PARTITION took another code path (over mysql_alter_table instead of
mysql_admin_table) which differs in two ways:
1) alter table opens the tables in a different way than admin tables do
resulting in returning with error before it tried the command
2) alter table does not start to send any diagnostic rows to the client
which the lower admin functions continue to use -> resulting in
assertion crash
The fix:
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
Adding check in mysql_admin_table to setup the partition list for
which partitions that should be used.
Partitioned tables will still not work with
REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
to tables, REPAIR TABLE t USE_FRM, and check that the data still
fulfills the partitioning function and then move the table back to
being a partition.
NOTE: I have removed the following functions from the handler
interface:
analyze_partitions, check_partitions, optimize_partitions,
repair_partitions
Since they are not longer needed.
THIS ALTERS THE STORAGE ENGINE API
mysql-test/r/handler_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb_mysql.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/partition.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/r/trigger-trans.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/ndb/r/ndb_partition_key.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/ndb/t/ndb_partition_key.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/inc/partition_alter4.inc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_myisam.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/rpl/r/rpl_failed_optimize.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/t/partition.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
sql/ha_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a function for returning admin commands result rows
Updated handle_opt_partitions to handle admin commands result rows,
and some error filtering (as mysql_admin_table do).
Removed the functions analyze/check/optimize/repair_partitions
since they have no longer any use.
sql/ha_partition.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/mysql_priv.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added set_part_state for reuse of code in mysql_admin_table.
(Originally fond in sql/sql_partition.cc:prep_alter_part_table)
sql/protocol.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added one assert and a debug print.
sql/sql_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Refactored code for setting up partition state, set_part_state,
now used in both prep_alter_part_table and
sql_table.cc:mysql_admin_table.
Removed code for handling ANALYZE/CHECK/OPTIMIZE/REPAIR partitions,
since it is now handled by mysql_admin_table.
sql/sql_table.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added functionality in mysql_admin_table to work with partitioned
tables.
Fixed a possible assertion bug for HA_ADMIN_TRY_ALTER
(If analyze would output a row, it fails since the row was already
started).
sql/sql_yacc.yy:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION
to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
instead of taking the ALTER TABLE path.
Added reset of alter_info for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
since it is now used by partitioned tables.
storage/myisam/mi_check.c:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Changed warning message from "Found X parts Should be: Y parts"
to "Found X key parts. Should be Y", since it could be confusing
with partitioned tables.
2008-08-11 20:02:03 +02:00
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
2003-08-18 23:08:08 +02:00
test.t1 optimize status OK
2001-10-04 23:42:25 +02:00
delete from t1 where a = 1;
select * from t1;
2001-01-12 15:40:27 +01:00
a
2
2001-10-04 23:42:25 +02:00
check table t1;
2001-03-07 13:06:39 +01:00
Table Op Msg_type Msg_text
manual.texi website address change
row0sel.c CHECK TABLE now also for InnoDB, a join speed optimization
trx0trx.c CHECK TABLE now also for InnoDB, a join speed optimization
rem0cmp.c CHECK TABLE now also for InnoDB, a join speed optimization
row0mysql.c CHECK TABLE now also for InnoDB, a join speed optimization
page0page.c CHECK TABLE now also for InnoDB, a join speed optimization
row0mysql.h CHECK TABLE now also for InnoDB, a join speed optimization
trx0trx.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0btr.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0cur.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0pcur.h CHECK TABLE now also for InnoDB, a join speed optimization
btr0pcur.ic CHECK TABLE now also for InnoDB, a join speed optimization
btr0btr.c CHECK TABLE now also for InnoDB, a join speed optimization
btr0cur.c CHECK TABLE now also for InnoDB, a join speed optimization
btr0sea.c CHECK TABLE now also for InnoDB, a join speed optimization
innodb.result CHECK TABLE now also for InnoDB, a join speed optimization
ha_innobase.cc CHECK TABLE now also for InnoDB, a join speed optimization
ha_innobase.h CHECK TABLE now also for InnoDB, a join speed optimization
sql/ha_innobase.cc:
CHECK TABLE now also for InnoDB, a join speed optimization
sql/ha_innobase.h:
CHECK TABLE now also for InnoDB, a join speed optimization
mysql-test/r/innodb.result:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/btr/btr0btr.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/btr/btr0cur.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/btr/btr0sea.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/btr0btr.h:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/btr0cur.h:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/btr0pcur.h:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/btr0pcur.ic:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/row0mysql.h:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/include/trx0trx.h:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/page/page0page.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/rem/rem0cmp.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/row/row0mysql.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/row/row0sel.c:
CHECK TABLE now also for InnoDB, a join speed optimization
innobase/trx/trx0trx.c:
CHECK TABLE now also for InnoDB, a join speed optimization
Docs/manual.texi:
website address change
2001-06-03 21:58:03 +02:00
test.t1 check status OK
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int,b varchar(20)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1,""), (2,"testing");
delete from t1 where a = 1;
select * from t1;
2001-01-12 15:40:27 +01:00
a b
2001-03-07 13:06:39 +01:00
2 testing
2001-10-04 23:42:25 +02:00
create index skr on t1 (a);
insert into t1 values (3,""), (4,"testing");
analyze table t1;
2001-03-07 13:06:39 +01:00
Table Op Msg_type Msg_text
2003-04-25 14:42:01 +02:00
test.t1 analyze status OK
2001-10-04 23:42:25 +02:00
show keys from t1;
2002-01-02 20:29:41 +01:00
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
2003-08-18 23:08:08 +02:00
t1 1 skr 1 a A # NULL NULL YES BTREE
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int,b varchar(20),key(a)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1,""), (2,"testing");
select * from t1 where a = 1;
2001-03-07 13:06:39 +01:00
a b
1
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (n int not null primary key) engine=innodb;
2001-10-04 23:42:25 +02:00
set autocommit=0;
insert into t1 values (4);
rollback;
select n, "after rollback" from t1;
2001-01-12 15:40:27 +01:00
n after rollback
2001-10-04 23:42:25 +02:00
insert into t1 values (4);
commit;
select n, "after commit" from t1;
2001-01-12 15:40:27 +01:00
n after commit
4 after commit
2001-10-04 23:42:25 +02:00
commit;
insert into t1 values (5);
insert into t1 values (4);
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
2001-10-04 23:42:25 +02:00
commit;
select n, "after commit" from t1;
2001-01-12 15:40:27 +01:00
n after commit
4 after commit
5 after commit
2001-10-04 23:42:25 +02:00
set autocommit=1;
insert into t1 values (6);
insert into t1 values (4);
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
2001-10-04 23:42:25 +02:00
select n from t1;
2001-01-12 15:40:27 +01:00
n
4
5
6
2005-02-01 20:48:05 +01:00
set autocommit=0;
begin;
savepoint `my_savepoint`;
insert into t1 values (7);
savepoint `savept2`;
insert into t1 values (3);
select n from t1;
n
3
4
5
6
7
2005-03-11 21:10:41 +01:00
savepoint savept3;
rollback to savepoint savept2;
rollback to savepoint savept3;
ERROR 42000: SAVEPOINT savept3 does not exist
rollback to savepoint savept2;
2005-02-01 20:48:05 +01:00
release savepoint `my_savepoint`;
select n from t1;
n
4
5
6
7
rollback to savepoint `my_savepoint`;
2005-02-16 17:34:02 +01:00
ERROR 42000: SAVEPOINT my_savepoint does not exist
2005-03-11 21:10:41 +01:00
rollback to savepoint savept2;
ERROR 42000: SAVEPOINT savept2 does not exist
2005-02-23 14:55:16 +01:00
insert into t1 values (8);
savepoint sv;
commit;
savepoint sv;
2005-02-01 20:48:05 +01:00
set autocommit=1;
2001-10-04 23:42:25 +02:00
rollback;
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (n int not null primary key) engine=innodb;
2003-08-28 15:09:00 +02:00
start transaction;
insert into t1 values (4);
flush tables with read lock;
commit;
unlock tables;
commit;
select * from t1;
n
4
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 ( id int NOT NULL PRIMARY KEY, nom varchar(64)) engine=innodb;
2001-10-04 23:42:25 +02:00
begin;
insert into t1 values(1,'hamdouni');
select id as afterbegin_id,nom as afterbegin_nom from t1;
2001-01-12 15:40:27 +01:00
afterbegin_id afterbegin_nom
1 hamdouni
2001-10-04 23:42:25 +02:00
rollback;
select id as afterrollback_id,nom as afterrollback_nom from t1;
2001-01-12 15:40:27 +01:00
afterrollback_id afterrollback_nom
2001-10-04 23:42:25 +02:00
set autocommit=0;
insert into t1 values(2,'mysql');
select id as afterautocommit0_id,nom as afterautocommit0_nom from t1;
2001-01-12 15:40:27 +01:00
afterautocommit0_id afterautocommit0_nom
2 mysql
2001-10-04 23:42:25 +02:00
rollback;
select id as afterrollback_id,nom as afterrollback_nom from t1;
2001-01-12 15:40:27 +01:00
afterrollback_id afterrollback_nom
2001-10-04 23:42:25 +02:00
set autocommit=1;
drop table t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (id char(8) not null primary key, val int not null) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values ('pippo', 12);
insert into t1 values ('pippo', 12);
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'pippo' for key 'PRIMARY'
2001-10-04 23:42:25 +02:00
delete from t1;
delete from t1 where id = 'pippo';
select * from t1;
2001-01-12 15:40:27 +01:00
id val
2001-10-04 23:42:25 +02:00
insert into t1 values ('pippo', 12);
set autocommit=0;
delete from t1;
rollback;
select * from t1;
2001-01-12 15:40:27 +01:00
id val
pippo 12
2001-10-04 23:42:25 +02:00
delete from t1;
commit;
select * from t1;
2001-01-12 15:40:27 +01:00
id val
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a integer) engine=innodb;
2003-02-06 15:55:59 +01:00
start transaction;
2001-10-04 23:42:25 +02:00
rename table t1 to t2;
2003-12-10 05:31:42 +01:00
create table t1 (b integer) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1);
rollback;
drop table t1;
rename table t2 to t1;
drop table t1;
set autocommit=1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR(64)) ENGINE=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (1, 'Jochen');
select * from t1;
2001-01-12 15:40:27 +01:00
ID NAME
1 Jochen
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 ( _userid VARCHAR(60) NOT NULL PRIMARY KEY) ENGINE=innodb;
2001-10-04 23:42:25 +02:00
set autocommit=0;
INSERT INTO t1 SET _userid='marc@anyware.co.uk';
COMMIT;
SELECT * FROM t1;
2001-01-12 15:40:27 +01:00
_userid
marc@anyware.co.uk
2001-10-04 23:42:25 +02:00
SELECT _userid FROM t1 WHERE _userid='marc@anyware.co.uk';
2001-01-12 15:40:27 +01:00
_userid
marc@anyware.co.uk
2001-10-04 23:42:25 +02:00
drop table t1;
set autocommit=1;
CREATE TABLE t1 (
user_id int(10) DEFAULT '0' NOT NULL,
name varchar(100),
phone varchar(100),
ref_email varchar(100) DEFAULT '' NOT NULL,
detail varchar(200),
PRIMARY KEY (user_id,ref_email)
2003-12-10 05:31:42 +01:00
)engine=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (10292,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10292,'shirish','2333604','shirish@yahoo.com','ddsds'),(10292,'sonali','323232','sonali@bolly.com','filmstar');
select * from t1 where user_id=10292;
2001-01-12 15:40:27 +01:00
user_id name phone ref_email detail
10292 sanjeev 29153373 sansh777@hotmail.com xxx
10292 shirish 2333604 shirish@yahoo.com ddsds
10292 sonali 323232 sonali@bolly.com filmstar
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (10291,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10293,'shirish','2333604','shirish@yahoo.com','ddsds');
select * from t1 where user_id=10292;
2001-01-12 15:40:27 +01:00
user_id name phone ref_email detail
10292 sanjeev 29153373 sansh777@hotmail.com xxx
10292 shirish 2333604 shirish@yahoo.com ddsds
10292 sonali 323232 sonali@bolly.com filmstar
2001-10-04 23:42:25 +02:00
select * from t1 where user_id>=10292;
2001-01-12 15:40:27 +01:00
user_id name phone ref_email detail
10292 sanjeev 29153373 sansh777@hotmail.com xxx
10292 shirish 2333604 shirish@yahoo.com ddsds
10292 sonali 323232 sonali@bolly.com filmstar
10293 shirish 2333604 shirish@yahoo.com ddsds
2001-10-04 23:42:25 +02:00
select * from t1 where user_id>10292;
2001-01-12 15:40:27 +01:00
user_id name phone ref_email detail
10293 shirish 2333604 shirish@yahoo.com ddsds
2001-10-04 23:42:25 +02:00
select * from t1 where user_id<10292;
2001-01-12 15:40:27 +01:00
user_id name phone ref_email detail
10291 sanjeev 29153373 sansh777@hotmail.com xxx
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (a int not null, b int not null,c int not null,
key(a),primary key(a,b), unique(c),key(a),unique(b));
show index from t1;
2002-01-02 20:29:41 +01:00
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
2003-08-18 23:08:08 +02:00
t1 0 PRIMARY 1 a A # NULL NULL BTREE
t1 0 PRIMARY 2 b A # NULL NULL BTREE
t1 0 c 1 c A # NULL NULL BTREE
t1 0 b 1 b A # NULL NULL BTREE
t1 1 a 1 a A # NULL NULL BTREE
2004-05-11 23:29:52 +02:00
t1 1 a_2 1 a A # NULL NULL BTREE
2001-10-04 23:42:25 +02:00
drop table t1;
create table t1 (col1 int not null, col2 char(4) not null, primary key(col1));
2003-12-10 05:31:42 +01:00
alter table t1 engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values ('1','1'),('5','2'),('2','3'),('3','4'),('4','4');
select * from t1;
2001-01-12 15:40:27 +01:00
col1 col2
1 1
2 3
3 4
4 4
5 2
2001-10-04 23:42:25 +02:00
update t1 set col2='7' where col1='4';
select * from t1;
2001-01-12 15:40:27 +01:00
col1 col2
1 1
2 3
3 4
4 7
5 2
2001-10-04 23:42:25 +02:00
alter table t1 add co3 int not null;
select * from t1;
2001-01-12 15:40:27 +01:00
col1 col2 co3
1 1 0
2 3 0
3 4 0
4 7 0
5 2 0
2001-10-04 23:42:25 +02:00
update t1 set col2='9' where col1='2';
select * from t1;
2001-01-12 15:40:27 +01:00
col1 col2 co3
1 1 0
2 9 0
3 4 0
4 7 0
5 2 0
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null , b int, primary key (a)) engine = innodb;
create table t2 (a int not null , b int, primary key (a)) engine = myisam;
2001-10-04 23:42:25 +02:00
insert into t1 VALUES (1,3) , (2,3), (3,3);
select * from t1;
2001-01-12 15:40:27 +01:00
a b
1 3
2 3
3 3
2001-10-04 23:42:25 +02:00
insert into t2 select * from t1;
select * from t2;
2001-01-12 15:40:27 +01:00
a b
1 3
2 3
3 3
2001-10-04 23:42:25 +02:00
delete from t1 where b = 3;
select * from t1;
2001-01-12 15:40:27 +01:00
a b
2001-10-04 23:42:25 +02:00
insert into t1 select * from t2;
select * from t1;
2001-01-12 15:40:27 +01:00
a b
1 3
2 3
3 3
2001-10-04 23:42:25 +02:00
select * from t2;
2001-01-12 15:40:27 +01:00
a b
1 3
2 3
3 3
2001-10-04 23:42:25 +02:00
drop table t1,t2;
CREATE TABLE t1 (
user_name varchar(12),
password text,
subscribed char(1),
user_id int(11) DEFAULT '0' NOT NULL,
quota bigint(20),
weight double,
access_date date,
access_time time,
approved datetime,
dummy_primary_key int(11) NOT NULL auto_increment,
PRIMARY KEY (dummy_primary_key)
2003-12-10 05:31:42 +01:00
) ENGINE=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES ('user_0','somepassword','N',0,0,0,'2000-09-07','23:06:59','2000-09-07 23:06:59',1);
INSERT INTO t1 VALUES ('user_1','somepassword','Y',1,1,1,'2000-09-07','23:06:59','2000-09-07 23:06:59',2);
INSERT INTO t1 VALUES ('user_2','somepassword','N',2,2,1.4142135623731,'2000-09-07','23:06:59','2000-09-07 23:06:59',3);
INSERT INTO t1 VALUES ('user_3','somepassword','Y',3,3,1.7320508075689,'2000-09-07','23:06:59','2000-09-07 23:06:59',4);
INSERT INTO t1 VALUES ('user_4','somepassword','N',4,4,2,'2000-09-07','23:06:59','2000-09-07 23:06:59',5);
select user_name, password , subscribed, user_id, quota, weight, access_date, access_time, approved, dummy_primary_key from t1 order by user_name;
2001-01-12 15:40:27 +01:00
user_name password subscribed user_id quota weight access_date access_time approved dummy_primary_key
user_0 somepassword N 0 0 0 2000-09-07 23:06:59 2000-09-07 23:06:59 1
user_1 somepassword Y 1 1 1 2000-09-07 23:06:59 2000-09-07 23:06:59 2
user_2 somepassword N 2 2 1.4142135623731 2000-09-07 23:06:59 2000-09-07 23:06:59 3
user_3 somepassword Y 3 3 1.7320508075689 2000-09-07 23:06:59 2000-09-07 23:06:59 4
user_4 somepassword N 4 4 2 2000-09-07 23:06:59 2000-09-07 23:06:59 5
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (
id int(11) NOT NULL auto_increment,
parent_id int(11) DEFAULT '0' NOT NULL,
level tinyint(4) DEFAULT '0' NOT NULL,
KEY (id),
KEY parent_id (parent_id),
KEY level (level)
2003-12-10 05:31:42 +01:00
) engine=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1);
INSERT INTO t1 values (179,5,2);
update t1 set parent_id=parent_id+100;
select * from t1 where parent_id=102;
2001-01-12 15:40:27 +01:00
id parent_id level
8 102 2
9 102 2
15 102 2
2001-10-04 23:42:25 +02:00
update t1 set id=id+1000;
update t1 set id=1024 where id=1009;
select * from t1;
2001-01-12 15:40:27 +01:00
id parent_id level
1001 100 0
1003 101 1
1004 101 1
1008 102 2
1024 102 2
1017 103 2
1022 104 2
1024 104 2
1028 105 2
1029 105 2
1030 105 2
1031 106 2
1032 106 2
1033 106 2
1203 107 2
1202 107 2
1020 103 2
1157 100 0
1193 105 2
1040 107 2
1002 101 1
1015 102 2
1006 101 1
1034 106 2
1035 106 2
1016 103 2
1007 101 1
1036 107 2
1018 103 2
1026 105 2
1027 105 2
1183 104 2
1038 107 2
1025 105 2
1037 107 2
1021 104 2
1019 103 2
1005 101 1
1179 105 2
2001-10-04 23:42:25 +02:00
update ignore t1 set id=id+1;
select * from t1;
2001-01-12 15:40:27 +01:00
id parent_id level
1002 100 0
1004 101 1
1005 101 1
1009 102 2
1025 102 2
1018 103 2
1023 104 2
1025 104 2
1029 105 2
1030 105 2
1031 105 2
1032 106 2
1033 106 2
1034 106 2
1204 107 2
1203 107 2
1021 103 2
1158 100 0
1194 105 2
1041 107 2
1003 101 1
1016 102 2
1007 101 1
1035 106 2
1036 106 2
1017 103 2
1008 101 1
1037 107 2
1019 103 2
1027 105 2
1028 105 2
1184 104 2
1039 107 2
1026 105 2
1038 107 2
1022 104 2
1020 103 2
1006 101 1
1180 105 2
2001-10-04 23:42:25 +02:00
update ignore t1 set id=1023 where id=1010;
select * from t1 where parent_id=102;
2001-01-12 15:40:27 +01:00
id parent_id level
1009 102 2
1025 102 2
1016 102 2
2003-08-18 23:08:08 +02:00
explain select level from t1 where level=1;
id select_type table type possible_keys key key_len ref rows Extra
2004-09-09 05:59:26 +02:00
1 SIMPLE t1 ref level level 1 const # Using index
2001-10-04 23:42:25 +02:00
select level,id from t1 where level=1;
2001-01-12 15:40:27 +01:00
level id
1 1004
1 1005
1 1003
1 1007
1 1008
1 1006
2001-10-04 23:42:25 +02:00
select level,id,parent_id from t1 where level=1;
2001-01-12 15:40:27 +01:00
level id parent_id
1 1004 101
1 1005 101
1 1003 101
1 1007 101
1 1008 101
1 1006 101
2001-10-04 23:42:25 +02:00
select level,id from t1 where level=1 order by id;
2001-01-12 15:40:27 +01:00
level id
1 1003
1 1004
1 1005
1 1006
1 1007
1 1008
2001-10-04 23:42:25 +02:00
delete from t1 where level=1;
select * from t1;
2001-01-12 15:40:27 +01:00
id parent_id level
1002 100 0
1009 102 2
1025 102 2
1018 103 2
1023 104 2
1025 104 2
1029 105 2
1030 105 2
1031 105 2
1032 106 2
1033 106 2
1034 106 2
1204 107 2
1203 107 2
1021 103 2
1158 100 0
1194 105 2
1041 107 2
1016 102 2
1035 106 2
1036 106 2
1017 103 2
1037 107 2
1019 103 2
1027 105 2
1028 105 2
1184 104 2
1039 107 2
1026 105 2
1038 107 2
1022 104 2
1020 103 2
1180 105 2
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (
sca_code char(6) NOT NULL,
cat_code char(6) NOT NULL,
sca_desc varchar(50),
lan_code char(2) NOT NULL,
sca_pic varchar(100),
sca_sdesc varchar(50),
sca_sch_desc varchar(16),
PRIMARY KEY (sca_code, cat_code, lan_code),
INDEX sca_pic (sca_pic)
2003-12-10 05:31:42 +01:00
) engine = innodb ;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 ( sca_code, cat_code, sca_desc, lan_code, sca_pic, sca_sdesc, sca_sch_desc) VALUES ( 'PD', 'J', 'PENDANT', 'EN', NULL, NULL, 'PENDANT'),( 'RI', 'J', 'RING', 'EN', NULL, NULL, 'RING'),( 'QQ', 'N', 'RING', 'EN', 'not null', NULL, 'RING');
select count(*) from t1 where sca_code = 'PD';
2001-01-12 15:40:27 +01:00
count(*)
1
2001-10-04 23:42:25 +02:00
select count(*) from t1 where sca_code <= 'PD';
2001-03-07 13:06:39 +01:00
count(*)
1
2001-10-04 23:42:25 +02:00
select count(*) from t1 where sca_pic is null;
2001-03-07 13:06:39 +01:00
count(*)
2
2001-10-04 23:42:25 +02:00
alter table t1 drop index sca_pic, add index sca_pic (cat_code, sca_pic);
select count(*) from t1 where sca_code='PD' and sca_pic is null;
2001-03-07 13:06:39 +01:00
count(*)
1
2001-10-04 23:42:25 +02:00
select count(*) from t1 where cat_code='E';
2001-03-07 13:06:39 +01:00
count(*)
0
2001-10-04 23:42:25 +02:00
alter table t1 drop index sca_pic, add index (sca_pic, cat_code);
select count(*) from t1 where sca_code='PD' and sca_pic is null;
2001-03-07 13:06:39 +01:00
count(*)
1
2001-10-04 23:42:25 +02:00
select count(*) from t1 where sca_pic >= 'n';
2001-03-07 13:06:39 +01:00
count(*)
1
2001-10-04 23:42:25 +02:00
select sca_pic from t1 where sca_pic is null;
2001-03-07 13:06:39 +01:00
sca_pic
NULL
NULL
2001-10-04 23:42:25 +02:00
update t1 set sca_pic="test" where sca_pic is null;
delete from t1 where sca_code='pd';
drop table t1;
set @a:=now();
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (a int not null, b timestamp not null, primary key (a)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 (a) values(1),(2),(3);
2005-08-23 17:08:04 +02:00
select t1.a from t1 natural join t1 as t2 where t1.b >= @a order by t1.a;
a
1
2
3
Implementation of WL#2486 -
"Process NATURAL and USING joins according to SQL:2003".
* Some of the main problems fixed by the patch:
- in "select *" queries the * expanded correctly according to
ANSI for arbitrary natural/using joins
- natural/using joins are correctly transformed into JOIN ... ON
for any number/nesting of the joins.
- column references are correctly resolved against natural joins
of any nesting and combined with arbitrary other joins.
* This patch also contains a fix for name resolution of items
inside the ON condition of JOIN ... ON - in this case items must
be resolved only against the JOIN operands. To support such
'local' name resolution, the patch introduces a stack of
name resolution contexts used at parse time.
NOTICE:
- This patch is not complete in the sense that
- there are 2 test cases that still do not pass -
one in join.test, one in select.test. Both are marked
with a comment "TODO: WL#2486".
- it does not include a new test specific for the task
mysql-test/include/ps_query.inc:
Adjusted according to standard NATURAL/USING join semantics.,
mysql-test/r/bdb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/derived.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/errors.result:
The column as a whole cannot be resolved, so different error message.
mysql-test/r/fulltext.result:
Adjusted according to standard JOIN ... ON semantics =>
the ON condition can refer only to the join operands.
mysql-test/r/fulltext_order_by.result:
More detailed error message.
mysql-test/r/innodb.result:
Adjusted according to standard NATURAL/USING join semantics.
This test doesn't pass completetly yet!
mysql-test/r/insert_select.result:
More detailed error message.
mysql-test/r/join.result:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/r/join_crash.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/join_nested.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/join_outer.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/multi_update.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/null_key.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/order_by.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_2myisam.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_3innodb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_4heap.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_5merge.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_6bdb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_7ndb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/select.result:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one failing test case which is commented with
WL#2486 in the test file.
mysql-test/r/subselect.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/type_ranges.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/union.result:
More detailed error message.
mysql-test/t/bdb.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/errors.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/fulltext.test:
Adjusted according to standard JOIN ... ON semantics =>
the ON condition can refer only to the join operands.
mysql-test/t/fulltext_order_by.test:
More detailed error message.
mysql-test/t/innodb.test:
Adjusted according to standard NATURAL/USING join semantics.
This test doesn't pass completetly yet!
mysql-test/t/insert_select.test:
More detailed error message.
mysql-test/t/join.test:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/t/join_crash.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/join_nested.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/join_outer.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/null_key.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/order_by.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/select.test:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/t/subselect.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/type_ranges.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/union.test:
More detailed error message.
sql/item.cc:
- extra parameter to find_field_in_tables
- find_field_in_real_table renamed to find_field_in_table
- fixed comments/typos
sql/item.h:
- added [first | last]_name_resolution_table to class
Name_resolution_context
- commented old code
- standardized formatting
sql/mysql_priv.h:
- refactored the find_field_in_XXX procedures,
- added a new procedure for natural join table references,
- renamed the find_field_in_XXX procedures to clearer names
sql/sp.cc:
- pass the top-most list of the FROM clause to setup_tables
- extra parameter to find_field_in_tables
sql/sql_acl.cc:
- renamed find_field_in_table => find_field_in_table_ref
- extra parameter to find_field_in_table_ref
- commented old code
sql/sql_base.cc:
This file contains the core of the implementation of the processing
of NATURAL/USING joins (WL#2486).
- added many comments to old code
- refactored the group of find_field_in_XXX procedures, and added a
new procedure for natural joins. There is one find_field_in_XXX procedure
per each type of table reference (stored table, merge view, or natural
join); one meta-procedure that selects the correct one depeneding on the
table reference; and one procedure that goes over a list of table
referenes.
- NATURAL/USING joins are processed through the procedures:
mark_common_columns, store_natural_using_join_columns,
store_top_level_join_columns, setup_natural_join_row_types.
The entry point to processing NATURAL/USING joins is the
procedure 'setup_natural_join_row_types'.
- Replaced the specialized Field_iterator_XXX iterators with one
generic iterator over the fields of a table reference.
- Simplified 'insert_fields' and 'setup_conds' due to encapsulation of
the processing of natural joins in a separate set of procedures.
sql/sql_class.h:
- Commented old code.
sql/sql_delete.cc:
- Pass the FROM clause to setup_tables.
sql/sql_help.cc:
- pass the end name resolution table to find_field_in_tables
- adjust the list of tables for name resolution
sql/sql_insert.cc:
- Changed the code that saves and restores the current context to
support the list of tables for name resolution -
context->first_name_resolution_table, and
table_list->next_name_resolution_table.
Needed to support an ugly trick to resolve inserted columns only in
the first table.
- Added Name_resolution_context::[first | last]_name_resolution_table.
- Commented old code
sql/sql_lex.cc:
- set select_lex.parent_lex correctly
- set correct state of the current name resolution context
sql/sql_lex.h:
- Added a stack of name resolution contexts to support local
contexts for JOIN ... ON conditions.
- Commented old code.
sql/sql_load.cc:
- Pass the FROM clause to setup_tables.
sql/sql_olap.cc:
- Pass the FROM clause to setup_tables.
sql/sql_parse.cc:
- correctly set SELECT_LEX::parent_lex
- set the first table of the current name resoltion context
- added support for NATURAL/USING joins
- commented old code
sql/sql_select.cc:
- Pass the FROM clause to setup_tables.
- Pass the end table to find_field_in_tables
- Improved comments
sql/sql_show.cc:
- Set SELECT_LEX::parent_lex.
sql/sql_update.cc:
- Pass the FROM clause to setup_tables.
sql/sql_yacc.yy:
- Added support for a stack of name resolution contexts needed to
implement name resolution for JOIN ... ON. A context is pushed
for each new JOIN ... ON, and popped afterwards.
- Added support for NATURAL/USING joins.
sql/table.cc:
- Added new class Natural_join_column to hide the heterogeneous
representation of column references for stored tables and for
views.
- Added a new list TABLE_LIST::next_name_resolution_table to
support name resolution with NATURAL/USING joins. Also added
other members to TABLE_LIST to support NATURAL/USING joins.
- Added a generic iterator over the fields of table references
of various types - class Field_iterator_table_ref
sql/table.h:
- Added new class Natural_join_column to hide the heterogeneous
representation of column references for stored tables and for
views.
- Added a new list TABLE_LIST::next_name_resolution_table to
support name resolution with NATURAL/USING joins. Also added
other members to TABLE_LIST to support NATURAL/USING joins.
- Added a generic iterator over the fields of table references
of various types - class Field_iterator_table_ref
tests/mysql_client_test.c:
Adjusted according to standard NATURAL JOIN syntax.
2005-08-12 16:57:19 +02:00
select a from t1 natural join t1 as t2 where b >= @a order by a;
2001-01-12 15:40:27 +01:00
a
1
2
3
2001-10-04 23:42:25 +02:00
update t1 set a=5 where a=1;
select a from t1;
2001-03-07 13:06:39 +01:00
a
2
3
5
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a varchar(100) not null, primary key(a), b int not null) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values("hello",1),("world",2);
select * from t1 order by b desc;
2001-03-07 13:06:39 +01:00
a b
world 2
hello 1
2001-10-04 23:42:25 +02:00
optimize table t1;
2001-03-07 13:06:39 +01:00
Table Op Msg_type Msg_text
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
PARTITION took another code path (over mysql_alter_table instead of
mysql_admin_table) which differs in two ways:
1) alter table opens the tables in a different way than admin tables do
resulting in returning with error before it tried the command
2) alter table does not start to send any diagnostic rows to the client
which the lower admin functions continue to use -> resulting in
assertion crash
The fix:
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
Adding check in mysql_admin_table to setup the partition list for
which partitions that should be used.
Partitioned tables will still not work with
REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
to tables, REPAIR TABLE t USE_FRM, and check that the data still
fulfills the partitioning function and then move the table back to
being a partition.
NOTE: I have removed the following functions from the handler
interface:
analyze_partitions, check_partitions, optimize_partitions,
repair_partitions
Since they are not longer needed.
THIS ALTERS THE STORAGE ENGINE API
mysql-test/r/handler_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb_mysql.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/partition.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/r/trigger-trans.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/ndb/r/ndb_partition_key.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/ndb/t/ndb_partition_key.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/inc/partition_alter4.inc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_myisam.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/rpl/r/rpl_failed_optimize.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/t/partition.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
sql/ha_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a function for returning admin commands result rows
Updated handle_opt_partitions to handle admin commands result rows,
and some error filtering (as mysql_admin_table do).
Removed the functions analyze/check/optimize/repair_partitions
since they have no longer any use.
sql/ha_partition.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/mysql_priv.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added set_part_state for reuse of code in mysql_admin_table.
(Originally fond in sql/sql_partition.cc:prep_alter_part_table)
sql/protocol.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added one assert and a debug print.
sql/sql_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Refactored code for setting up partition state, set_part_state,
now used in both prep_alter_part_table and
sql_table.cc:mysql_admin_table.
Removed code for handling ANALYZE/CHECK/OPTIMIZE/REPAIR partitions,
since it is now handled by mysql_admin_table.
sql/sql_table.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added functionality in mysql_admin_table to work with partitioned
tables.
Fixed a possible assertion bug for HA_ADMIN_TRY_ALTER
(If analyze would output a row, it fails since the row was already
started).
sql/sql_yacc.yy:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION
to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
instead of taking the ALTER TABLE path.
Added reset of alter_info for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
since it is now used by partitioned tables.
storage/myisam/mi_check.c:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Changed warning message from "Found X parts Should be: Y parts"
to "Found X key parts. Should be Y", since it could be confusing
with partitioned tables.
2008-08-11 20:02:03 +02:00
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
2003-08-18 23:08:08 +02:00
test.t1 optimize status OK
2001-10-04 23:42:25 +02:00
show keys from t1;
2002-01-02 20:29:41 +01:00
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
2003-08-18 23:08:08 +02:00
t1 0 PRIMARY 1 a A # NULL NULL BTREE
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (i int, j int ) ENGINE=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1,2);
select * from t1 where i=1 and j=2;
2001-03-07 13:06:39 +01:00
i j
1 2
2001-10-04 23:42:25 +02:00
create index ax1 on t1 (i,j);
select * from t1 where i=1 and j=2;
2001-03-07 13:06:39 +01:00
i j
1 2
2001-10-04 23:42:25 +02:00
drop table t1;
CREATE TABLE t1 (
a int3 unsigned NOT NULL,
b int1 unsigned NOT NULL,
UNIQUE (a, b)
2003-12-10 05:31:42 +01:00
) ENGINE = innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (1, 1);
SELECT MIN(B),MAX(b) FROM t1 WHERE t1.a = 1;
2001-03-10 16:05:10 +01:00
MIN(B) MAX(b)
1 1
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (a int unsigned NOT NULL) engine=innodb;
2001-10-04 23:42:25 +02:00
INSERT INTO t1 VALUES (1);
SELECT * FROM t1;
2001-04-09 20:08:56 +02:00
a
1
2001-10-04 23:42:25 +02:00
DROP TABLE t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int primary key,b int, c int, d int, e int, f int, g int, h int, i int, j int, k int, l int, m int, n int, o int, p int, q int, r int, s int, t int, u int, v int, w int, x int, y int, z int, a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, b1 int, b2 int, b3 int, b4 int, b5 int, b6 int) engine = innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
explain select * from t1 where a > 0 and a < 50;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL # Using where
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
LOCK TABLES t1 WRITE;
insert into t1 values (99,1,2,'D'),(1,1,2,'D');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry '1-1' for key 'PRIMARY'
2001-10-04 23:42:25 +02:00
select id from t1;
2001-04-19 19:41:19 +02:00
id
0
1
2
2001-10-04 23:42:25 +02:00
select id from t1;
2001-04-19 19:41:19 +02:00
id
0
1
2
2001-10-04 23:42:25 +02:00
UNLOCK TABLES;
DROP TABLE t1;
2003-12-10 05:31:42 +01:00
create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
LOCK TABLES t1 WRITE;
begin;
insert into t1 values (99,1,2,'D'),(1,1,2,'D');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry '1-1' for key 'PRIMARY'
2001-10-04 23:42:25 +02:00
select id from t1;
2001-04-19 19:41:19 +02:00
id
0
1
2
2001-10-04 23:42:25 +02:00
insert ignore into t1 values (100,1,2,'D'),(1,1,99,'D');
commit;
select id,id3 from t1;
2001-04-19 19:41:19 +02:00
id id3
0 0
1 1
2 2
100 2
2001-10-04 23:42:25 +02:00
UNLOCK TABLES;
DROP TABLE t1;
2003-12-10 05:31:42 +01:00
create table t1 (a char(20), unique (a(5))) engine=innodb;
2003-08-18 23:08:08 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a char(20), index (a(5))) engine=innodb;
2001-10-04 23:42:25 +02:00
show create table t1;
2001-05-09 22:02:36 +02:00
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`a` char(20) DEFAULT NULL,
2003-08-18 23:08:08 +02:00
KEY `a` (`a`(5))
2003-12-10 05:31:42 +01:00
) ENGINE=InnoDB DEFAULT CHARSET=latin1
2001-10-04 23:42:25 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create temporary table t1 (a int not null auto_increment, primary key(a)) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (NULL),(NULL),(NULL);
delete from t1 where a=3;
insert into t1 values (NULL);
select * from t1;
2001-05-09 22:02:36 +02:00
a
1
2
2001-05-23 01:40:23 +02:00
4
2001-11-07 23:43:27 +01:00
alter table t1 add b int;
select * from t1;
a b
1 NULL
2 NULL
4 NULL
2001-10-04 23:42:25 +02:00
drop table t1;
create table t1
(
id int auto_increment primary key,
name varchar(32) not null,
value text not null,
uid int not null,
unique key(name,uid)
2003-12-10 05:31:42 +01:00
) engine=innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values (1,'one','one value',101),
(2,'two','two value',102),(3,'three','three value',103);
set insert_id=5;
replace into t1 (value,name,uid) values ('other value','two',102);
delete from t1 where uid=102;
set insert_id=5;
replace into t1 (value,name,uid) values ('other value','two',102);
set insert_id=6;
replace into t1 (value,name,uid) values ('other value','two',102);
select * from t1;
2001-08-25 04:45:06 +02:00
id name value uid
1 one one value 101
3 three three value 103
6 two other value 102
2001-10-04 23:42:25 +02:00
drop table t1;
2001-12-22 14:13:31 +01:00
create database mysqltest;
2003-12-10 05:31:42 +01:00
create table mysqltest.t1 (a int not null) engine= innodb;
2001-12-22 14:13:31 +01:00
insert into mysqltest.t1 values(1);
2003-12-10 05:31:42 +01:00
create table mysqltest.t2 (a int not null) engine= myisam;
2001-12-22 14:13:31 +01:00
insert into mysqltest.t2 values(1);
2003-12-10 05:31:42 +01:00
create table mysqltest.t3 (a int not null) engine= heap;
2001-12-22 14:13:31 +01:00
insert into mysqltest.t3 values(1);
2001-10-04 23:42:25 +02:00
commit;
2001-12-22 14:13:31 +01:00
drop database mysqltest;
show tables from mysqltest;
2005-08-19 09:08:41 +02:00
ERROR 42000: Unknown database 'mysqltest'
2002-01-31 03:36:58 +01:00
set autocommit=0;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null) engine= innodb;
2001-10-04 23:42:25 +02:00
insert into t1 values(1),(2);
truncate table t1;
commit;
truncate table t1;
2005-03-02 10:38:25 +01:00
truncate table t1;
2001-10-04 23:42:25 +02:00
select * from t1;
2001-09-03 04:16:15 +02:00
a
2001-10-04 23:42:25 +02:00
insert into t1 values(1),(2);
delete from t1;
select * from t1;
2001-09-03 04:16:15 +02:00
a
2001-10-04 23:42:25 +02:00
commit;
drop table t1;
2002-01-31 03:36:58 +01:00
set autocommit=1;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null) engine= innodb;
2002-01-31 03:36:58 +01:00
insert into t1 values(1),(2);
truncate table t1;
insert into t1 values(1),(2);
select * from t1;
a
1
2
truncate table t1;
insert into t1 values(1),(2);
delete from t1;
select * from t1;
a
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null, b int not null, c int not null, primary key (a),key(b)) engine=innodb;
2001-12-06 13:10:51 +01:00
insert into t1 values (3,3,3),(1,1,1),(2,2,2),(4,4,4);
explain select * from t1 order by a;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 index NULL PRIMARY 4 NULL #
2001-12-06 13:10:51 +01:00
explain select * from t1 order by b;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2007-08-02 21:45:56 +02:00
1 SIMPLE t1 ALL NULL NULL NULL NULL # Using filesort
2001-12-06 13:10:51 +01:00
explain select * from t1 order by c;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 ALL NULL NULL NULL NULL # Using filesort
2001-12-06 13:10:51 +01:00
explain select a from t1 order by a;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 index NULL PRIMARY 4 NULL # Using index
2001-12-06 13:10:51 +01:00
explain select b from t1 order by b;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 index NULL b 4 NULL # Using index
2001-12-06 13:10:51 +01:00
explain select a,b from t1 order by b;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 index NULL b 4 NULL # Using index
2001-12-06 13:10:51 +01:00
explain select a,b from t1;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2008-05-07 07:58:21 +02:00
1 SIMPLE t1 index NULL b 4 NULL # Using index
2001-12-06 13:10:51 +01:00
explain select a,b,c from t1;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 ALL NULL NULL NULL NULL #
2001-12-06 13:10:51 +01:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (t int not null default 1, key (t)) engine=innodb;
2001-12-13 19:20:19 +01:00
desc t1;
2003-06-02 14:19:06 +02:00
Field Type Null Key Default Extra
2004-12-10 10:07:11 +01:00
t int(11) NO MUL 1
2001-12-13 19:20:19 +01:00
drop table t1;
2002-01-31 03:36:58 +01:00
CREATE TABLE t1 (
number bigint(20) NOT NULL default '0',
cname char(15) NOT NULL default '',
carrier_id smallint(6) NOT NULL default '0',
privacy tinyint(4) NOT NULL default '0',
bug#10466: Datatype "timestamp" displays "YYYYMMDDHHMMSS" irrespective of display sizes.
- Print warning that says display width is not supported for datatype TIMESTAMP, if user tries to create a TIMESTAMP column with display width.
- Use display width for TIMESTAMP only in type_timestamp test to make sure warning is displayed correctly.
mysql-test/include/ps_create.inc:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/alias.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_date_add.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_str.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_time.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/group_by.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_1general.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_2myisam.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_3innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_4heap.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_5merge.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_6bdb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_7ndb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/select.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/type_timestamp.result:
When display width is used for a TIMESTAMP column a warning is printed that the display width will be ignored.
mysql-test/r/update.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/alias.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_date_add.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_str.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_time.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/group_by.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/innodb.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_4heap.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_5merge.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/select.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/update.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
sql/share/errmsg.txt:
Correct swedish error message
sql/sql_parse.cc:
Print warning if datatype is TIMESTAMP and display width is used.
2005-06-20 12:09:00 +02:00
last_mod_date timestamp NOT NULL,
2002-01-31 03:36:58 +01:00
last_mod_id smallint(6) NOT NULL default '0',
bug#10466: Datatype "timestamp" displays "YYYYMMDDHHMMSS" irrespective of display sizes.
- Print warning that says display width is not supported for datatype TIMESTAMP, if user tries to create a TIMESTAMP column with display width.
- Use display width for TIMESTAMP only in type_timestamp test to make sure warning is displayed correctly.
mysql-test/include/ps_create.inc:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/alias.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_date_add.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_str.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_time.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/group_by.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_1general.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_2myisam.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_3innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_4heap.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_5merge.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_6bdb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_7ndb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/select.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/type_timestamp.result:
When display width is used for a TIMESTAMP column a warning is printed that the display width will be ignored.
mysql-test/r/update.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/alias.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_date_add.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_str.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_time.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/group_by.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/innodb.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_4heap.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_5merge.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/select.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/update.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
sql/share/errmsg.txt:
Correct swedish error message
sql/sql_parse.cc:
Print warning if datatype is TIMESTAMP and display width is used.
2005-06-20 12:09:00 +02:00
last_app_date timestamp NOT NULL,
2002-01-31 03:36:58 +01:00
last_app_id smallint(6) default '-1',
version smallint(6) NOT NULL default '0',
assigned_scps int(11) default '0',
status tinyint(4) default '0'
2003-12-10 05:31:42 +01:00
) ENGINE=InnoDB;
2002-01-31 03:36:58 +01:00
INSERT INTO t1 VALUES (4077711111,'SeanWheeler',90,2,20020111112846,500,00000000000000,-1,2,3,1);
INSERT INTO t1 VALUES (9197722223,'berry',90,3,20020111112809,500,20020102114532,501,4,10,0);
INSERT INTO t1 VALUES (650,'San Francisco',0,0,20011227111336,342,00000000000000,-1,1,24,1);
INSERT INTO t1 VALUES (302467,'Sue\'s Subshop',90,3,20020109113241,500,20020102115111,501,7,24,0);
INSERT INTO t1 VALUES (6014911113,'SudzCarwash',520,1,20020102115234,500,20020102115259,501,33,32768,0);
INSERT INTO t1 VALUES (333,'tubs',99,2,20020109113440,501,20020109113440,500,3,10,0);
CREATE TABLE t2 (
number bigint(20) NOT NULL default '0',
cname char(15) NOT NULL default '',
carrier_id smallint(6) NOT NULL default '0',
privacy tinyint(4) NOT NULL default '0',
bug#10466: Datatype "timestamp" displays "YYYYMMDDHHMMSS" irrespective of display sizes.
- Print warning that says display width is not supported for datatype TIMESTAMP, if user tries to create a TIMESTAMP column with display width.
- Use display width for TIMESTAMP only in type_timestamp test to make sure warning is displayed correctly.
mysql-test/include/ps_create.inc:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/alias.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_date_add.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_str.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_time.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/group_by.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_1general.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_2myisam.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_3innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_4heap.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_5merge.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_6bdb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_7ndb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/select.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/type_timestamp.result:
When display width is used for a TIMESTAMP column a warning is printed that the display width will be ignored.
mysql-test/r/update.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/alias.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_date_add.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_str.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_time.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/group_by.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/innodb.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_4heap.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_5merge.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/select.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/update.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
sql/share/errmsg.txt:
Correct swedish error message
sql/sql_parse.cc:
Print warning if datatype is TIMESTAMP and display width is used.
2005-06-20 12:09:00 +02:00
last_mod_date timestamp NOT NULL,
2002-01-31 03:36:58 +01:00
last_mod_id smallint(6) NOT NULL default '0',
bug#10466: Datatype "timestamp" displays "YYYYMMDDHHMMSS" irrespective of display sizes.
- Print warning that says display width is not supported for datatype TIMESTAMP, if user tries to create a TIMESTAMP column with display width.
- Use display width for TIMESTAMP only in type_timestamp test to make sure warning is displayed correctly.
mysql-test/include/ps_create.inc:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/alias.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_date_add.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_str.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/func_time.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/group_by.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_1general.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_2myisam.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_3innodb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_4heap.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_5merge.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_6bdb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/ps_7ndb.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/select.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/r/type_timestamp.result:
When display width is used for a TIMESTAMP column a warning is printed that the display width will be ignored.
mysql-test/r/update.result:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/alias.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_date_add.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_str.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/func_time.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/group_by.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/innodb.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_4heap.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/ps_5merge.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/select.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
mysql-test/t/update.test:
Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
sql/share/errmsg.txt:
Correct swedish error message
sql/sql_parse.cc:
Print warning if datatype is TIMESTAMP and display width is used.
2005-06-20 12:09:00 +02:00
last_app_date timestamp NOT NULL,
2002-01-31 03:36:58 +01:00
last_app_id smallint(6) default '-1',
version smallint(6) NOT NULL default '0',
assigned_scps int(11) default '0',
status tinyint(4) default '0'
2003-12-10 05:31:42 +01:00
) ENGINE=InnoDB;
2002-01-31 03:36:58 +01:00
INSERT INTO t2 VALUES (4077711111,'SeanWheeler',0,2,20020111112853,500,00000000000000,-1,2,3,1);
INSERT INTO t2 VALUES (9197722223,'berry',90,3,20020111112818,500,20020102114532,501,4,10,0);
INSERT INTO t2 VALUES (650,'San Francisco',90,0,20020109113158,342,00000000000000,-1,1,24,1);
INSERT INTO t2 VALUES (333,'tubs',99,2,20020109113453,501,20020109113453,500,3,10,0);
select * from t1;
number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
2002-12-14 16:43:01 +01:00
4077711111 SeanWheeler 90 2 2002-01-11 11:28:46 500 0000-00-00 00:00:00 -1 2 3 1
9197722223 berry 90 3 2002-01-11 11:28:09 500 2002-01-02 11:45:32 501 4 10 0
650 San Francisco 0 0 2001-12-27 11:13:36 342 0000-00-00 00:00:00 -1 1 24 1
302467 Sue's Subshop 90 3 2002-01-09 11:32:41 500 2002-01-02 11:51:11 501 7 24 0
6014911113 SudzCarwash 520 1 2002-01-02 11:52:34 500 2002-01-02 11:52:59 501 33 32768 0
333 tubs 99 2 2002-01-09 11:34:40 501 2002-01-09 11:34:40 500 3 10 0
2002-01-31 03:36:58 +01:00
select * from t2;
number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
2002-12-14 16:43:01 +01:00
4077711111 SeanWheeler 0 2 2002-01-11 11:28:53 500 0000-00-00 00:00:00 -1 2 3 1
9197722223 berry 90 3 2002-01-11 11:28:18 500 2002-01-02 11:45:32 501 4 10 0
650 San Francisco 90 0 2002-01-09 11:31:58 342 0000-00-00 00:00:00 -1 1 24 1
333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0
2002-01-31 03:36:58 +01:00
delete t1, t2 from t1 left join t2 on t1.number=t2.number where (t1.carrier_id=90 and t1.number=t2.number) or (t2.carrier_id=90 and t1.number=t2.number) or (t1.carrier_id=90 and t2.number is null);
select * from t1;
number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
2002-12-14 16:43:01 +01:00
6014911113 SudzCarwash 520 1 2002-01-02 11:52:34 500 2002-01-02 11:52:59 501 33 32768 0
333 tubs 99 2 2002-01-09 11:34:40 501 2002-01-09 11:34:40 500 3 10 0
2002-01-31 03:36:58 +01:00
select * from t2;
number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
2002-12-14 16:43:01 +01:00
333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0
2002-01-31 03:36:58 +01:00
select * from t2;
number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
2002-12-14 16:43:01 +01:00
333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0
2002-01-31 03:36:58 +01:00
drop table t1,t2;
2003-12-10 05:31:42 +01:00
create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;
2002-08-09 15:47:16 +02:00
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT @@tx_isolation,@@global.tx_isolation;
2002-09-11 05:40:08 +02:00
@@tx_isolation @@global.tx_isolation
2002-10-30 22:51:12 +01:00
SERIALIZABLE REPEATABLE-READ
2002-08-09 15:47:16 +02:00
insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David');
select id, code, name from t1 order by id;
id code name
1 1 Tim
2 1 Monty
3 2 David
COMMIT;
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
insert into t1 (code, name) values (2, 'Erik'), (3, 'Sasha');
select id, code, name from t1 order by id;
id code name
1 1 Tim
2 1 Monty
3 2 David
4 2 Erik
5 3 Sasha
COMMIT;
2008-10-03 14:24:19 +02:00
SET binlog_format='MIXED';
2002-08-09 15:47:16 +02:00
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
insert into t1 (code, name) values (3, 'Jeremy'), (4, 'Matt');
select id, code, name from t1 order by id;
id code name
1 1 Tim
2 1 Monty
3 2 David
4 2 Erik
5 3 Sasha
6 3 Jeremy
7 4 Matt
COMMIT;
DROP TABLE t1;
2003-12-10 05:31:42 +01:00
create table t1 (n int(10), d int(10)) engine=innodb;
create table t2 (n int(10), d int(10)) engine=innodb;
2002-11-30 23:48:35 +01:00
insert into t1 values(1,1),(1,2);
insert into t2 values(1,10),(2,20);
UPDATE t1,t2 SET t1.d=t2.d,t2.d=30 WHERE t1.n=t2.n;
select * from t1;
n d
1 10
1 10
select * from t2;
n d
1 30
2 20
drop table t1,t2;
2007-10-13 22:12:50 +02:00
drop table if exists t1, t2;
CREATE TABLE t1 (a int, PRIMARY KEY (a));
CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
create trigger trg_del_t2 after delete on t2 for each row
insert into t1 values (1);
insert into t1 values (1);
insert into t2 values (1),(2);
delete t2 from t2;
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
select count(*) from t2 /* must be 2 as restored after rollback caused by the error */;
count(*)
2
drop table t1, t2;
2008-02-19 17:44:09 +01:00
drop table if exists t1, t2;
CREATE TABLE t1 (a int, PRIMARY KEY (a));
CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
create trigger trg_del_t2 after delete on t2 for each row
insert into t1 values (1);
insert into t1 values (1);
insert into t2 values (1),(2);
delete t2 from t2;
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
select count(*) from t2 /* must be 2 as restored after rollback caused by the error */;
count(*)
2
drop table t1, t2;
2003-12-10 05:31:42 +01:00
create table t1 (a int, b int) engine=innodb;
2002-12-03 12:08:25 +01:00
insert into t1 values(20,null);
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
t2.b=t3.a;
b ifnull(t2.b,"this is null")
NULL this is null
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
t2.b=t3.a order by 1;
b ifnull(t2.b,"this is null")
NULL this is null
insert into t1 values(10,null);
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
t2.b=t3.a order by 1;
b ifnull(t2.b,"this is null")
NULL this is null
NULL this is null
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a varchar(10) not null) engine=myisam;
create table t2 (b varchar(10) not null unique) engine=innodb;
2002-12-03 12:08:25 +01:00
select t1.a from t1,t2 where t1.a=t2.b;
a
drop table t1,t2;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null, b int, primary key (a)) engine = innodb;
create table t2 (a int not null, b int, primary key (a)) engine = innodb;
2003-02-19 15:08:29 +01:00
insert into t1 values (10, 20);
insert into t2 values (10, 20);
update t1, t2 set t1.b = 150, t2.b = t1.b where t2.a = t1.a and t1.a = 10;
drop table t1,t2;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (t1_id) REFERENCES t1(id) ON DELETE CASCADE ) ENGINE=INNODB;
2003-02-17 01:14:37 +01:00
insert into t1 set id=1;
insert into t2 set id=1, t1_id=1;
delete t1,t2 from t1,t2 where t1.id=t2.t1_id;
select * from t1;
id
select * from t2;
id t1_id
2004-02-02 00:30:59 +01:00
drop table t2,t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1(id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
CREATE TABLE t2(id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id) ) ENGINE=INNODB;
2003-03-11 18:40:49 +01:00
INSERT INTO t1 VALUES(1);
INSERT INTO t2 VALUES(1, 1);
SELECT * from t1;
id
1
UPDATE t1,t2 SET t1.id=t1.id+1, t2.t1_id=t1.id+1;
SELECT * from t1;
id
2
2003-03-12 13:34:07 +01:00
UPDATE t1,t2 SET t1.id=t1.id+1 where t1.id!=t2.id;
2003-03-11 18:40:49 +01:00
SELECT * from t1;
id
3
2003-03-12 19:33:41 +01:00
DROP TABLE t1,t2;
2003-03-18 02:16:12 +01:00
set autocommit=0;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
CREATE TABLE t2 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
CREATE TABLE t3 (id1 CHAR(15) NOT NULL, id2 CHAR(15) NOT NULL, PRIMARY KEY(id1, id2)) ENGINE=InnoDB;
2003-03-18 02:16:12 +01:00
INSERT INTO t3 VALUES("my-test-1", "my-test-2");
COMMIT;
INSERT INTO t1 VALUES("this-key", "will disappear");
INSERT INTO t2 VALUES("this-key", "will also disappear");
DELETE FROM t3 WHERE id1="my-test-1";
SELECT * FROM t1;
id value
this-key will disappear
SELECT * FROM t2;
id value
this-key will also disappear
SELECT * FROM t3;
id1 id2
ROLLBACK;
SELECT * FROM t1;
id value
SELECT * FROM t2;
id value
SELECT * FROM t3;
id1 id2
my-test-1 my-test-2
SELECT * FROM t3 WHERE id1="my-test-1" LOCK IN SHARE MODE;
id1 id2
my-test-1 my-test-2
COMMIT;
set autocommit=1;
DROP TABLE t1,t2,t3;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (a int not null primary key, b int not null, unique (b)) engine=innodb;
2003-03-18 23:45:44 +01:00
INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000;
SELECT * from t1;
a b
1 1
2008-05-07 07:58:21 +02:00
102 2
103 3
2003-03-18 23:45:44 +01:00
4 4
5 5
6 6
7 7
8 8
9 9
drop table t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM;
CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB;
2003-04-03 19:24:15 +02:00
SET AUTOCOMMIT=0;
INSERT INTO t1 ( B_ID ) VALUES ( 1 );
INSERT INTO t2 ( NEXT_T ) VALUES ( 1 );
ROLLBACK;
2003-05-21 20:39:58 +02:00
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
2003-04-03 19:24:15 +02:00
SELECT * FROM t1;
B_ID
drop table t1,t2;
2003-12-10 05:31:42 +01:00
create table t1 ( pk int primary key, parent int not null, child int not null, index (parent) ) engine = innodb;
2003-04-11 19:09:24 +02:00
insert into t1 values (1,0,4), (2,1,3), (3,2,1), (4,1,2);
select distinct parent,child from t1 order by parent;
parent child
0 4
1 2
1 3
2 1
2003-04-29 13:13:22 +02:00
drop table t1;
2003-12-10 05:31:42 +01:00
create table t1 (a int not null auto_increment primary key, b int, c int, key(c)) engine=innodb;
2003-04-23 20:52:16 +02:00
create table t2 (a int not null auto_increment primary key, b int);
insert into t1 (b) values (null),(null),(null),(null),(null),(null),(null);
insert into t2 (a) select b from t1;
insert into t1 (b) select b from t2;
insert into t2 (a) select b from t1;
insert into t1 (a) select b from t2;
insert into t2 (a) select b from t1;
insert into t1 (a) select b from t2;
insert into t2 (a) select b from t1;
insert into t1 (a) select b from t2;
insert into t2 (a) select b from t1;
insert into t1 (a) select b from t2;
select count(*) from t1;
count(*)
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Fixes the following bugs:
- Bug #19834: Using cursors when running in READ-COMMITTED can cause InnoDB to crash
- Bug #20213: DBT2 testing cause mysqld to core using Innodb
- Bug #20493: on partition tables, select and show command casue server crash
- Bug #21113: Duplicate printout in SHOW INNODB STATUS
- Bug #21313: rsql_..._recover_innodb_tmp_table is redundant and broken
- Bug #21467: Manual URL wrong in InnoDB "page corrupted" error report
mysql-test/r/innodb.result:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
innodb.result: Adjust Innodb_rows_inserted and Innodb_rows_updated
to reflect the deleted statements in r420, which somehow reappeared
in the MySQL tree.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
sql/ha_innodb.cc:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ha_innobase::start_stmt(): patch from Heikki:
Do not call read_view_close_for_mysql(). (Bug #19834)
Fix Bug#20213 and its duplicates: stress test crashes of InnoDB-5.1
Fix Bug #20493 : we must prepare prebuilt->trx to point to the trx of this thd before using it
Add update_thd() to several places in ha_innodb.cc to make sure prebuilt->trx points to the right trx object; in other functions add assertions that prebuilt->trx is for this thd; when 5.1 stabilizes, we can change these assertions to ut_ad() debug version assertions
Remove redundant check_trx_exists() and ut_a() from r701,
as suggested by Marko
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Make the tablespace cache hash size 100 or 1000 times bigger. Fixes bug
#21112.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/fsp/fsp0fsp.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ibuf_print(): Don't print redundant information. Fixes bug #21113.
Remove non-varying variable ibuf->meter and related constant IBUF_THRESHOLD.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
btr_cur_get_page(): Remove buggy assertion.
storage/innobase/include/buf0buf.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/include/ibuf0ibuf.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Remove non-varying variable ibuf->meter and related constant IBUF_THRESHOLD.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Remove the special treatment of tables
rsql_IDENTIFIER_recover_innodb_tmp_table, which is redundant and
was broken with the introduction of the "safe" file name encoding of
identifiers. (Bug #21313)
ChangeSet@1.2181.173.1 2006-08-02 17:57:06+02:00 ingo@local
Bug#18775 - Temporary table from alter table visible to other threads
Continued implementation of WL#1324 (table name to filename encoding)
Changed back the encoded temp file prefix to #sql.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0vers.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
row_vers_build_for_semi_consistent_read(): rec_trx_id was uninitialized
in a comparison. Initialize it.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ut_dbg_assertion_failed(): Print space between timestamp and start of error
message.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/Makefile.am:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
2006-08-15 01:42:57 +02:00
623
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
explain select * from t1 where c between 1 and 2500;
2003-05-21 20:39:58 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2003-08-18 23:08:08 +02:00
1 SIMPLE t1 range c c 5 NULL # Using where
2003-04-23 20:52:16 +02:00
update t1 set c=a;
Applied innodb-5.1-ss475 snapshot.
* Fix BUG#15650: "DELETE with LEFT JOIN crashes server with innodb_locks_unsafe_for binlog"
* Fix BUG#17134: "Partitions: uncommitted changes are visible"
* Fix BUG#17992: "Partitions: InnoDB, somehow rotten table after UPDATE"
row0ins.c: MySQL's partitioned table code does not set preduilt->sql_stat_start right
if it does an insert in the same statement after doing a search first in the same
partition table. We now write trx id always to the buffer, not just when flag
sql_stat_start is on. This will waste CPU time very sightly.
* Fix BUG#18077: "InnoDB uses full explicit table locks in stored FUNCTION"
* Fix BUG#18238: "When locks exhaust the buffer pool, InnoDB does not roll back the trx"
* Fix BUG#18252" "Disk space leak in updates of InnoDB BLOB rows in 5.0 and 5.1"
* Fix BUG#18283: "When InnoDB returns error 'lock table full', MySQL can write to binlog too much"
* Fix BUG#18350: "Use consistent read in CREATE ... SELECT ... if innodb_locks_unsafe_for_binlog"
* Fix BUG#18384: "InnoDB memory leak on duplicate key errors in 5.0 if row has many columns"
* Fix BUG#18934: "InnoDB crashes when table uses column names like DB_ROW_ID"
Refuse tables that use reserved column names.
* InnoDB's SQL parser:
- Add support for UNSIGNED types, EXIT keyword, quoted identifiers, user-function callbacks
for processing results of FETCH statements, bound literals, DATA_VARCHAR for bound literals.
- Allow bound literals of type non-INTEGER to be of length 0.
- Add make_flex.sh and update lexer/parser generation documentation.
- Add comment clarifying the difference between 'alias' and 'indirection' fields in sym_node_t.
- Remove never reached duplicate code in pars_set_dfield_type().
- Rewrite pars_info datatypes and APIs, add a few helper functions.
- Since the functions definitions in pars_info_t are accessed after pars_sql() returns
in the query graph execution stage, we can't free pars_info_t in pars_sql(). Instead,
make pars_sql() transfer ownership of pars_info_t to the created query graph, and
make que_graph_free() free it if needed.
- Allow access to system columns like DB_ROW_ID.
* Use bound literals in row_truncate_table_for_mysql, row_drop_table_for_mysql,
row_discard_tablespace_for_mysql, and row_rename_table_for_mysql.
* Setting an isolation level of the transaction to read committed weakens the locks for
this session similarly like the option innodb_locks_unsafe_for binlog. This patch removes
alnost all gap locking (used in next-key locking) and makes MySQL to release the row locks
on the rows which does not belong to result set. Additionally, nonlocking selects on
INSERT INTO SELECT, UPDATE ... (SELECT ...), and CREATE ... SELECT ... use a nonlocking
consistent read. If a binlog is used, then binlog format should be set to row based
binloging to make the execution of the complex SQL statements.
* Disable the statistic variables btr_search_n_hash_fail and n_hash_succ, n_hash_fail,
n_patt_succ, and n_searches of btr_search_t in builds without #ifdef UNIV_SEARCH_PERF_STAT.
* Make innodb.test faster. Group all consistent read test cases to a one test case and
wait their lock timeout after all have been send to the server. Decrease amount of rows
inserted in a certain test - this has no effect on the effectiveness of the test and
reduces the running time by ~10 sec. Remove temporary work-arounds from innodb.result
now that ALTER TABLE DROP FOREIGN KEY works once again.
* Make innodb_unsafe_binlog.test faster. Grout all consistent read test cases to a one
test case amd wait their lock timeout after all have been sent to the server. Remove
unnecessary option --loose_innodb_lock_wait_timeout.
* Print dictionary memory size in SHOW INNODB STATUS.
* Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
* Remove code related to clustered tables. They were never implemented, and the
implementation would be challenging with ROW_FORMAT=COMPACT. Remove the table types
DICT_TABLE_CLUSTER_MEMBER and DICT_TABLE_CLUSTER and all related tests and functions.
dict_table_t: Remove mix_id, mix_len, mix_id_len, mix_id_buf, and cluster_name.
plan_t: Remove mixed_index.
dict_create_sys_tables_tuple(): Set MIX_ID=0, MIX_LEN=0, CLUSTER_NAME=NULL when
inserting into SYS_TABLES.
dict_tree_check_search_tuple(): Enclose in #ifdef UNIV_DEBUG.
* Move calling of thr_local_free() from trx_free_for_mysql() to
innobase_close_connection().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/r/innodb_unsafe_binlog.result:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog-master.opt:
Applied innodb-5.1-ss475 snapshot.
mysql-test/t/innodb_unsafe_binlog.test:
Applied innodb-5.1-ss475 snapshot.
sql/ha_innodb.cc:
Applied innodb-5.1-ss475 snapshot.
Do not use inlined functions in ha_innodb.cc.
Remove assertion ut_error which crashes the mysqld server
if it prints a warning about the adaptive latch.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss475 snapshot.
Fix compilation problem with non-C99 compilers.
storage/innobase/buf/buf0lru.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/cmakelists.txt:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/configure.in:
Applied innodb-5.1-ss475 snapshot.
Add disabled-by-default logic to switch GCC to a strict C89-mode.
Add -Werror-implicit-function_declaration to CFLAGS when using gcc.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss475 snapshot.
dtype_print(): Recognize DATA_FIXBINARY and DATA_BLOB types.
Print known flags from prtype. Use a switch statement instead
of else-if chain.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss475 snapshot.
Use bound literals in all SQL statements instead of elaborately
constructing correctly allocated and quoted strings to pass the
data in ASCII form.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/eval/eval0proc.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/btr0sea.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/buf0lru.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss475 snapshot.
Remove too strict assertions from some dict_table_t
accessor functions.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/eval0proc.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/hash0hash.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/lock0lock.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/page0page.ic:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
storage/innobase/include/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/que0que.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0mysql.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0sel.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/row0upd.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/trx0trx.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
When using GCC, use __inline__ instead of inline.
storage/innobase/include/ut0mem.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/os/os0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_bison.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0grm.y:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0opt.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/que/que0que.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss475 snapshot.
Remove a memory leak when trying to insert a duplicate record to a
clustered inedx comprising more than about 90 columns (Bug#18384).
row_ins_duplicate_error_in_clust(): Call mem_heap_free(heap) at
func_exit if needed.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss475 snapshot.
row_mysql_is_system_table(): Use strncmp, not memcmp, since we
don't know how long the input string is.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss475 snapshot.
Remove UNIV_RELEASE_NOT_YET_STABLE and related checks.
row_sel_field_store_in_mysql_format(): Turn the assertions on
mbminlen, mbmaxlen, and templ->type into debug assertions.
fetch_step(): Print a more usefull error message when the cursor is closed.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss475 snapshot.
row_upd_index_replace_new_col_vals_index_pos(): Add a parameter
order_only for limiting the replacement to the ordering fields
of the index.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss475 snapshot.
Add (void*) cast when using the %p printf format specifier.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0mem.c:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.h:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/include/ut0vec.ic:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/pars/make_flex.sh:
Applied innodb-5.1-ss475 snapshot.
storage/innobase/ut/ut0vec.c:
Applied innodb-5.1-ss475 snapshot.
2006-04-23 10:48:31 +02:00
explain select * from t1 where c between 1 and 2500;
2003-05-21 20:39:58 +02:00
id select_type table type possible_keys key key_len ref rows Extra
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Fixes the following bugs:
- Bug #19834: Using cursors when running in READ-COMMITTED can cause InnoDB to crash
- Bug #20213: DBT2 testing cause mysqld to core using Innodb
- Bug #20493: on partition tables, select and show command casue server crash
- Bug #21113: Duplicate printout in SHOW INNODB STATUS
- Bug #21313: rsql_..._recover_innodb_tmp_table is redundant and broken
- Bug #21467: Manual URL wrong in InnoDB "page corrupted" error report
mysql-test/r/innodb.result:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
innodb.result: Adjust Innodb_rows_inserted and Innodb_rows_updated
to reflect the deleted statements in r420, which somehow reappeared
in the MySQL tree.
mysql-test/t/innodb.test:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
sql/ha_innodb.cc:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ha_innobase::start_stmt(): patch from Heikki:
Do not call read_view_close_for_mysql(). (Bug #19834)
Fix Bug#20213 and its duplicates: stress test crashes of InnoDB-5.1
Fix Bug #20493 : we must prepare prebuilt->trx to point to the trx of this thd before using it
Add update_thd() to several places in ha_innodb.cc to make sure prebuilt->trx points to the right trx object; in other functions add assertions that prebuilt->trx is for this thd; when 5.1 stabilizes, we can change these assertions to ut_ad() debug version assertions
Remove redundant check_trx_exists() and ut_a() from r701,
as suggested by Marko
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Make the tablespace cache hash size 100 or 1000 times bigger. Fixes bug
#21112.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/fsp/fsp0fsp.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ibuf_print(): Don't print redundant information. Fixes bug #21113.
Remove non-varying variable ibuf->meter and related constant IBUF_THRESHOLD.
storage/innobase/include/btr0cur.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
btr_cur_get_page(): Remove buggy assertion.
storage/innobase/include/buf0buf.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/include/ibuf0ibuf.ic:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Remove non-varying variable ibuf->meter and related constant IBUF_THRESHOLD.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Remove the special treatment of tables
rsql_IDENTIFIER_recover_innodb_tmp_table, which is redundant and
was broken with the introduction of the "safe" file name encoding of
identifiers. (Bug #21313)
ChangeSet@1.2181.173.1 2006-08-02 17:57:06+02:00 ingo@local
Bug#18775 - Temporary table from alter table visible to other threads
Continued implementation of WL#1324 (table name to filename encoding)
Changed back the encoded temp file prefix to #sql.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/row/row0vers.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
row_vers_build_for_semi_consistent_read(): rec_trx_id was uninitialized
in a comparison. Initialize it.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
ut_dbg_assertion_failed(): Print space between timestamp and start of error
message.
After ut_print_timestamp(), always display " InnoDB:" (note two spaces).
Correct all URLs pointing to the MySQL manual. (Bug #21467)
storage/innobase/Makefile.am:
Applied innodb-5.1-ss677, -ss680, -ss713, and -ss720 snapshots.
All but ss677 are against the mysql-5.1 tree only.
2006-08-15 01:42:57 +02:00
1 SIMPLE t1 ALL c NULL NULL NULL # Using where
2003-04-23 20:52:16 +02:00
drop table t1,t2;
2003-12-10 05:31:42 +01:00
create table t1 (id int primary key auto_increment, fk int, index index_fk (fk)) engine=innodb;
2003-04-23 20:52:16 +02:00
insert into t1 (id) values (null),(null),(null),(null),(null);
update t1 set fk=69 where fk is null order by id limit 1;
SELECT * from t1;
id fk
2 NULL
3 NULL
4 NULL
5 NULL
2008-05-07 07:58:21 +02:00
1 69
2003-04-23 20:52:16 +02:00
drop table t1;
create table t1 (a int not null, b int not null, key (a));
insert into t1 values (1,1),(1,2),(1,3),(3,1),(3,2),(3,3),(3,1),(3,2),(3,3),(2,1),(2,2),(2,3);
SET @tmp=0;
update t1 set b=(@tmp:=@tmp+1) order by a;
update t1 set b=99 where a=1 order by b asc limit 1;
update t1 set b=100 where a=1 order by b desc limit 2;
update t1 set a=a+10+b where a=1 order by b;
select * from t1 order by a,b;
a b
2 4
2 5
2 6
3 7
3 8
3 9
3 10
3 11
3 12
13 2
111 100
111 100
2003-05-21 20:39:58 +02:00
drop table t1;
2003-12-19 15:25:50 +01:00
create table t1 ( c char(8) not null ) engine=innodb;
insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9');
insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F');
alter table t1 add b char(8) not null;
alter table t1 add a char(8) not null;
alter table t1 add primary key (a,b,c);
update t1 set a=c, b=c;
create table t2 (c char(8) not null, b char(8) not null, a char(8) not null, primary key(a,b,c)) engine=innodb;
insert into t2 select * from t1;
delete t1,t2 from t2,t1 where t1.a<'B' and t2.b=t1.b;
drop table t1,t2;
SET AUTOCOMMIT=1;
create table t1 (a integer auto_increment primary key) engine=innodb;
insert into t1 (a) values (NULL),(NULL);
truncate table t1;
insert into t1 (a) values (NULL),(NULL);
SELECT * from t1;
a
2005-01-15 16:38:43 +01:00
1
2
2003-12-19 15:25:50 +01:00
drop table t1;
2004-02-11 00:06:46 +01:00
CREATE TABLE t1 (`id 1` INT NOT NULL, PRIMARY KEY (`id 1`)) ENGINE=INNODB;
CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (`t1_id`) REFERENCES `t1`(`id 1`) ON DELETE CASCADE ) ENGINE=INNODB;
2004-02-02 00:30:59 +01:00
drop table t2,t1;
2004-02-22 09:04:08 +01:00
create table `t1` (`id` int( 11 ) not null ,primary key ( `id` )) engine = innodb;
2004-02-22 08:58:51 +01:00
insert into `t1`values ( 1 ) ;
2004-02-22 09:04:08 +01:00
create table `t2` (`id` int( 11 ) not null default '0',unique key `id` ( `id` ) ,constraint `t1_id_fk` foreign key ( `id` ) references `t1` (`id` )) engine = innodb;
2004-02-22 08:58:51 +01:00
insert into `t2`values ( 1 ) ;
2004-02-22 09:04:08 +01:00
create table `t3` (`id` int( 11 ) not null default '0',key `id` ( `id` ) ,constraint `t2_id_fk` foreign key ( `id` ) references `t2` (`id` )) engine = innodb;
2004-02-22 08:58:51 +01:00
insert into `t3`values ( 1 ) ;
delete t3,t2,t1 from t1,t2,t3 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`))
2004-02-22 08:58:51 +01:00
update t1,t2,t3 set t3.id=5, t2.id=6, t1.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`))
2004-02-22 08:58:51 +01:00
update t3 set t3.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
Implementation of WL#2486 -
"Process NATURAL and USING joins according to SQL:2003".
* Some of the main problems fixed by the patch:
- in "select *" queries the * expanded correctly according to
ANSI for arbitrary natural/using joins
- natural/using joins are correctly transformed into JOIN ... ON
for any number/nesting of the joins.
- column references are correctly resolved against natural joins
of any nesting and combined with arbitrary other joins.
* This patch also contains a fix for name resolution of items
inside the ON condition of JOIN ... ON - in this case items must
be resolved only against the JOIN operands. To support such
'local' name resolution, the patch introduces a stack of
name resolution contexts used at parse time.
NOTICE:
- This patch is not complete in the sense that
- there are 2 test cases that still do not pass -
one in join.test, one in select.test. Both are marked
with a comment "TODO: WL#2486".
- it does not include a new test specific for the task
mysql-test/include/ps_query.inc:
Adjusted according to standard NATURAL/USING join semantics.,
mysql-test/r/bdb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/derived.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/errors.result:
The column as a whole cannot be resolved, so different error message.
mysql-test/r/fulltext.result:
Adjusted according to standard JOIN ... ON semantics =>
the ON condition can refer only to the join operands.
mysql-test/r/fulltext_order_by.result:
More detailed error message.
mysql-test/r/innodb.result:
Adjusted according to standard NATURAL/USING join semantics.
This test doesn't pass completetly yet!
mysql-test/r/insert_select.result:
More detailed error message.
mysql-test/r/join.result:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/r/join_crash.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/join_nested.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/join_outer.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/multi_update.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/null_key.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/order_by.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_2myisam.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_3innodb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_4heap.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_5merge.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_6bdb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/ps_7ndb.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/select.result:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one failing test case which is commented with
WL#2486 in the test file.
mysql-test/r/subselect.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/type_ranges.result:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/r/union.result:
More detailed error message.
mysql-test/t/bdb.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/errors.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/fulltext.test:
Adjusted according to standard JOIN ... ON semantics =>
the ON condition can refer only to the join operands.
mysql-test/t/fulltext_order_by.test:
More detailed error message.
mysql-test/t/innodb.test:
Adjusted according to standard NATURAL/USING join semantics.
This test doesn't pass completetly yet!
mysql-test/t/insert_select.test:
More detailed error message.
mysql-test/t/join.test:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/t/join_crash.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/join_nested.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/join_outer.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/null_key.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/order_by.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/select.test:
Adjusted according to standard NATURAL/USING join semantics.
NOTICE: there is one test case that still fails, and it is
commeted out and marked with WL#2486 in the test file.
mysql-test/t/subselect.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/type_ranges.test:
Adjusted according to standard NATURAL/USING join semantics.
mysql-test/t/union.test:
More detailed error message.
sql/item.cc:
- extra parameter to find_field_in_tables
- find_field_in_real_table renamed to find_field_in_table
- fixed comments/typos
sql/item.h:
- added [first | last]_name_resolution_table to class
Name_resolution_context
- commented old code
- standardized formatting
sql/mysql_priv.h:
- refactored the find_field_in_XXX procedures,
- added a new procedure for natural join table references,
- renamed the find_field_in_XXX procedures to clearer names
sql/sp.cc:
- pass the top-most list of the FROM clause to setup_tables
- extra parameter to find_field_in_tables
sql/sql_acl.cc:
- renamed find_field_in_table => find_field_in_table_ref
- extra parameter to find_field_in_table_ref
- commented old code
sql/sql_base.cc:
This file contains the core of the implementation of the processing
of NATURAL/USING joins (WL#2486).
- added many comments to old code
- refactored the group of find_field_in_XXX procedures, and added a
new procedure for natural joins. There is one find_field_in_XXX procedure
per each type of table reference (stored table, merge view, or natural
join); one meta-procedure that selects the correct one depeneding on the
table reference; and one procedure that goes over a list of table
referenes.
- NATURAL/USING joins are processed through the procedures:
mark_common_columns, store_natural_using_join_columns,
store_top_level_join_columns, setup_natural_join_row_types.
The entry point to processing NATURAL/USING joins is the
procedure 'setup_natural_join_row_types'.
- Replaced the specialized Field_iterator_XXX iterators with one
generic iterator over the fields of a table reference.
- Simplified 'insert_fields' and 'setup_conds' due to encapsulation of
the processing of natural joins in a separate set of procedures.
sql/sql_class.h:
- Commented old code.
sql/sql_delete.cc:
- Pass the FROM clause to setup_tables.
sql/sql_help.cc:
- pass the end name resolution table to find_field_in_tables
- adjust the list of tables for name resolution
sql/sql_insert.cc:
- Changed the code that saves and restores the current context to
support the list of tables for name resolution -
context->first_name_resolution_table, and
table_list->next_name_resolution_table.
Needed to support an ugly trick to resolve inserted columns only in
the first table.
- Added Name_resolution_context::[first | last]_name_resolution_table.
- Commented old code
sql/sql_lex.cc:
- set select_lex.parent_lex correctly
- set correct state of the current name resolution context
sql/sql_lex.h:
- Added a stack of name resolution contexts to support local
contexts for JOIN ... ON conditions.
- Commented old code.
sql/sql_load.cc:
- Pass the FROM clause to setup_tables.
sql/sql_olap.cc:
- Pass the FROM clause to setup_tables.
sql/sql_parse.cc:
- correctly set SELECT_LEX::parent_lex
- set the first table of the current name resoltion context
- added support for NATURAL/USING joins
- commented old code
sql/sql_select.cc:
- Pass the FROM clause to setup_tables.
- Pass the end table to find_field_in_tables
- Improved comments
sql/sql_show.cc:
- Set SELECT_LEX::parent_lex.
sql/sql_update.cc:
- Pass the FROM clause to setup_tables.
sql/sql_yacc.yy:
- Added support for a stack of name resolution contexts needed to
implement name resolution for JOIN ... ON. A context is pushed
for each new JOIN ... ON, and popped afterwards.
- Added support for NATURAL/USING joins.
sql/table.cc:
- Added new class Natural_join_column to hide the heterogeneous
representation of column references for stored tables and for
views.
- Added a new list TABLE_LIST::next_name_resolution_table to
support name resolution with NATURAL/USING joins. Also added
other members to TABLE_LIST to support NATURAL/USING joins.
- Added a generic iterator over the fields of table references
of various types - class Field_iterator_table_ref
sql/table.h:
- Added new class Natural_join_column to hide the heterogeneous
representation of column references for stored tables and for
views.
- Added a new list TABLE_LIST::next_name_resolution_table to
support name resolution with NATURAL/USING joins. Also added
other members to TABLE_LIST to support NATURAL/USING joins.
- Added a generic iterator over the fields of table references
of various types - class Field_iterator_table_ref
tests/mysql_client_test.c:
Adjusted according to standard NATURAL JOIN syntax.
2005-08-12 16:57:19 +02:00
ERROR 42S22: Unknown column 't1.id' in 'where clause'
2004-02-22 08:58:51 +01:00
drop table t3,t2,t1;
2011-10-25 16:33:38 +02:00
CREATE TABLE t1 (
c1 VARCHAR(8), c2 VARCHAR(8),
PRIMARY KEY (c1, c2)
) ENGINE=InnoDB;
CREATE TABLE t2 (
c0 INT PRIMARY KEY,
c1 VARCHAR(8) UNIQUE,
FOREIGN KEY (c1) REFERENCES t1 (c1) ON UPDATE CASCADE
) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('old', 'somevalu'), ('other', 'anyvalue');
INSERT INTO t2 VALUES (10, 'old'), (20, 'other');
UPDATE t1 SET c1 = 'other' WHERE c1 = 'old';
2011-10-26 08:34:32 +02:00
ERROR 23000: Upholding foreign key constraints for table 't1', entry 'other-somevalu', key 2 would lead to a duplicate entry
2011-10-25 16:33:38 +02:00
DROP TABLE t2,t1;
2004-07-20 11:00:10 +02:00
create table t1(
id int primary key,
pid int,
index(pid),
foreign key(pid) references t1(id) on delete cascade) engine=innodb;
insert into t1 values(0,0),(1,0),(2,1),(3,2),(4,3),(5,4),(6,5),(7,6),
(8,7),(9,8),(10,9),(11,10),(12,11),(13,12),(14,13),(15,14);
delete from t1 where id=0;
Applied innodb-5.1-ss594 snapshot.
Fixed BUG#19542 "InnoDB doesn't increase the Handler_read_prev couter".
Fixed BUG#19609 "Case sensitivity of innodb_data_file_path gives stupid error".
Fixed BUG#19727 "InnoDB crashed server and crashed tables are ot recoverable".
Also:
* Remove remnants of the obsolete concept of memoryfixing tables and indexes.
* Remove unused dict_table_LRU_trim().
* Remove unused 'trx' parameter from dict_table_get_on_id_low(),
dict_table_get(), dict_table_get_and_increment_handle_count().
* Add a normal linked list implementation.
* Add a work queue implementation.
* Add 'level' parameter to mutex_create() and rw_lock_create().
Remove mutex_set_level() and rw_lock_set_level().
* Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING.
* Add support for bound ids in InnoDB's parser.
* Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling
pages of B-tree indexes.
btr_validate_level(): Check the validity of the doubly linked
list formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
* Adapt InnoDB to the new tablename to filename encoding in MySQL 5.1.
ut_print_name(), ut_print_name1(): Add parameter 'table_id' for
distinguishing names of tables from other identifiers.
New: innobase_convert_from_table_id(), innobase_convert_from_id(),
innobase_convert_from_filename(), innobase_get_charset.
dict_accept(), dict_scan_id(), dict_scan_col(), dict_scan_table_name(),
dict_skip_word(), dict_create_foreign_constraints_low(): Add
parameter 'cs' so that isspace() can be replaced with my_isspace(),
whose operation depends on the connection character set.
dict_scan_id(): Convert identifier to UTF-8.
dict_str_starts_with_keyword(): New extern function, to replace
dict_accept() in row_search_for_mysql().
mysql_get_identifier_quote_char(): Replaced with innobase_print_identifier().
ha_innobase::create(): Remove the thd->convert_strin() call. Pass the
statement to InnoDB in the connection character set and let InnoDB
convert the identifier to UTF-8.
* Add max_row_size to dict_table_t.
* btr0cur.c
btr_copy_externally_stored_field(): Only set the 'offset' variable
when needed.
* buf0buf.c
buf_page_io_complete(): Write to the error log if the page number or
the space id o the disk do not match those in memory. Also write to
the error log if a page was read from the doublewrite buffer. The
doublewrite buffer should be only read by the lower-level function
fil_io() at database startup.
* dict0dict.c
dict_scan_table_name(): Remove fallback to differently encoded name
when the table is not found. The encoding is handled at a higher level.
* ha_innodb.cc
Increment statistic counter in ha_innobase::index_prev() (bug 19542).
Add innobase_convert_string wrapper function and a new file
ha_prototypes.h.
innobase_print_identifier(): Remove TODO comment before calling
get_quote_char_for_identifier(). That function apparently assumes
the identifier to be encoded in UTF-8.
* ibuf0ibuf.c|h
ibuf_count_get(), ibuf_counts[], ibuf_count_inited(): Define these
only #ifdef UNIV_IBUF_DEBUG. Previously, when compiled without
UNIV_IBUF_DEBUG, invoking ibuf_count_get() would crash InnoDB.
The function is only being called #ifdef UNIV_IBUF_DEBUG.
* innodb.result
Adjust the results for changes in the foreign key error messages.
* mem0mem.c|h
New: mem_heap_dup(), mem_heap_printf(), mem_heap_cat().
* os0file.c
Check the page trailers also after writing to disk. This improves
chances of diagnosing bug 18886.
os_file_check_page_trailers(): New function for checking that the
two copies of the LSN stamped on the page match.
os_aio_simulated_handle(): Call os_file_check_page_trailers()
before and after os_file_write().
* row0mysql.c
Move trx_commit_for_mysql(trx) calls before calls to
row_mysql_unlock_data_dictionary(trx) (bug 19727).
* row0sel.c
row_fetch_print(): Handle SQL NULL values without crashing.
row_sel_store_mysql_rec(): Remove useless call to rec_get_nth_field
when handling an externally stored column.
Fetch externally stored fields when using InnoDB's internal SQL
parser.
Optimize BLOB selects by using prebuilt->blob_heap directly instead
of first reading BLOB data to a temporary heap and then copying it
to prebuilt->blob_heap.
* srv0srv.c
srv_master_thread(): Remove unreachable code.
* srv0start.c
srv_parse_data_file_paths_and_sizes(): Accept lower-case 'm' and
'g' as abbreviations of megabyte and gigabyte (bug 19609).
srv_parse_megabytes(): New fuction.
* ut0dbg.c|h
Implement InnoDB assertions (ut_a and ut_error) with abort() when
the code is compiled with GCC 3 or later on other platforms than
Windows or Netware. Also disable the variable ut_dbg_stop_threads
and the function ut_dbg_stop_thread() i this case, unless
UNIV_SYC_DEBUG is defined. This should allow the compiler to
generate more compact code for assertions.
* ut0list.c|h
Add ib_list_create_heap().
mysql-test/r/innodb.result:
Applied innodb-5.1-ss594 snapshot.
mysql-test/t/innodb.test:
Copy the comment from the beginning of the file
to the end because MySQL developers continue
adding test cases to this file.
sql/ha_innodb.cc:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/CMakeLists.txt:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0btr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0cur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0pcur.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/btr/btr0sea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0buf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/buf/buf0flu.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/data/data0type.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0crea.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0dict.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0load.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/dict/dict0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/fil/fil0fil.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ha/hash0hash.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ibuf/ibuf0ibuf.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/data0type.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0dict.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/dict0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fil0fil.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/fsp0fsp.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ibuf0ibuf.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/mem0mem.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0pars.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0sym.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/pars0types.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/rem0rec.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0purge.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/row0undo.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/srv0srv.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0rw.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/sync0sync.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/univ.i:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0dbg.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0ut.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/lock/lock0lock.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0log.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/log/log0recv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0mem.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/mem/mem0pool.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0file.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/os/os0thread.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/lexyy.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0lex.l:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0pars.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/pars/pars0sym.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0ins.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0mysql.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0row.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0sel.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/row/row0upd.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0srv.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/srv/srv0start.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0arr.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0rw.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/sync/sync0sync.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/thr/thr0loc.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0purge.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rec.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0roll.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0rseg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0sys.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/trx/trx0trx.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/Makefile.am:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0dbg.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0ut.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ha_prototypes.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0list.ic:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/include/ut0wqueue.h:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0list.c:
Applied innodb-5.1-ss594 snapshot.
storage/innobase/ut/ut0wqueue.c:
Applied innodb-5.1-ss594 snapshot.
2006-06-01 08:34:04 +02:00
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t1`, CONSTRAINT `t1_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `t1` (`id`) ON DELETE CASCADE)
2004-07-20 11:00:10 +02:00
delete from t1 where id=15;
delete from t1 where id=0;
drop table t1;
2003-12-10 05:31:42 +01:00
CREATE TABLE t1 (col1 int(1))ENGINE=InnoDB;
2003-07-21 00:32:35 +02:00
CREATE TABLE t2 (col1 int(1),stamp TIMESTAMP,INDEX stamp_idx
2003-12-10 05:31:42 +01:00
(stamp))ENGINE=InnoDB;
2003-04-21 20:03:32 +02:00
insert into t1 values (1),(2),(3);
2003-12-19 15:25:50 +01:00
insert into t2 values (1, 20020204130000),(2, 20020204130000),(4,20020204310000 ),(5,20020204230000);
Warnings:
After merge fixes
Added more DBUG statements
Ensure that we are comparing end space with BINARY strings
Use 'any_db' instead of '' to mean any database. (For HANDLER command)
Only strip ' ' when comparing CHAR, not other space-like characters (like \t)
BitKeeper/deleted/.del-ctype_tis620.result-old~3578ceb0b8284685:
Delete: mysql-test/r/ctype_tis620.result-old
BitKeeper/deleted/.del-ctype_tis620.test-old~ffb1bbd2935d1aba:
Delete: mysql-test/t/ctype_tis620.test-old
client/mysqlbinlog.cc:
Added DBUG statements
Added call of my_end() to free all used memory on exit
heap/hp_info.c:
After merge fixes
heap/hp_open.c:
After merge fixes
include/heap.h:
After merge fixes
include/m_ctype.h:
Use pchar instead of 'int' for character parameters.
Added 'my_binary_compare()'
include/m_string.h:
Fixed wrong define
innobase/ibuf/ibuf0ibuf.c:
After merge fixes
innobase/srv/srv0start.c:
After merge fixes
mysql-test/r/alter_table.result:
Fixed results after merge
mysql-test/r/auto_increment.result:
Fixed results after merge
mysql-test/r/bdb.result:
Fixed results after merge
mysql-test/r/binary.result:
Fixed results after merge
mysql-test/r/create.result:
Fixed results after merge
mysql-test/r/ctype_mb.result:
Fixed results after merge
mysql-test/r/ctype_tis620.result:
Fixed results after merge
mysql-test/r/ctype_utf8.result:
Fixed results after merge
mysql-test/r/delete.result:
Fixed results after merge
mysql-test/r/func_compress.result:
Fixed results after merge
mysql-test/r/func_gconcat.result:
Fixed results after merge
mysql-test/r/func_group.result:
Fixed results after merge
mysql-test/r/func_str.result:
Fixed results after merge
mysql-test/r/innodb.result:
Fixed results after merge
mysql-test/r/insert.result:
Fixed results after merge
mysql-test/r/insert_select.result:
Fixed results after merge
mysql-test/r/key.result:
Fixed results after merge
mysql-test/r/loaddata.result:
Fixed results after merge
mysql-test/r/lock.result:
Fixed results after merge
mysql-test/r/myisam.result:
Fixed results after merge
mysql-test/r/null.result:
Fixed results after merge
mysql-test/r/null_key.result:
Fixed results after merge
mysql-test/r/order_by.result:
Fixed results after merge
mysql-test/r/query_cache.result:
Fixed results after merge
mysql-test/r/range.result:
Fixed results after merge
mysql-test/r/rpl_multi_delete.result:
Fixed results after merge
mysql-test/r/rpl_until.result:
Fixed results after merge
mysql-test/r/subselect.result:
Fixed results after merge
mysql-test/r/subselect_innodb.result:
Fixed results after merge
mysql-test/r/type_blob.result:
Fixed results after merge
mysql-test/r/type_datetime.result:
Fixed results after merge
mysql-test/r/type_decimal.result:
Fixed results after merge
mysql-test/r/type_enum.result:
Fixed results after merge
mysql-test/r/type_float.result:
Fixed results after merge
mysql-test/r/type_ranges.result:
Fixed results after merge
mysql-test/r/type_time.result:
Fixed results after merge
mysql-test/r/type_timestamp.result:
Fixed results after merge
mysql-test/r/type_uint.result:
Fixed results after merge
mysql-test/r/type_year.result:
Fixed results after merge
mysql-test/r/variables.result:
Fixed results after merge
mysql-test/r/warnings.result:
Fixed results after merge
mysql-test/t/case.test:
Fixed shifted error messages
mysql-test/t/create.test:
Fixed shifted error messages
mysql-test/t/ctype_collate.test:
Fixed shifted error messages
mysql-test/t/ctype_tis620.test:
Merge with 4.0 ctype_tis620 test
mysql-test/t/delete.test:
Fixed shifted error messages
mysql-test/t/derived.test:
Fixed shifted error messages
mysql-test/t/fulltext.test:
Fixed shifted error messages
mysql-test/t/func_in.test:
Fixed shifted error messages
mysql-test/t/func_str.test:
Fixed shifted error messages
mysql-test/t/func_test.test:
Fixed shifted error messages
mysql-test/t/grant.test:
Fixed shifted error messages
mysql-test/t/innodb.test:
Change to 4.1 syntax
mysql-test/t/key_cache.test:
Fixed shifted error messages
mysql-test/t/myisam.test:
New test of blob and end space
mysql-test/t/row.test:
Fixed shifted error messages
mysql-test/t/rpl_until.test:
Fixed shifted error messages
mysql-test/t/subselect.test:
Fixed shifted error messages
mysql-test/t/subselect_innodb.test:
Fix test to take into account foreign key constraints
mysql-test/t/union.test:
Fixed shifted error messages
mysql-test/t/user_var.test:
Fixed shifted error messages
mysql-test/t/variables.test:
Fixed shifted error messages
mysys/my_handler.c:
Merge with 4.0 code
sql/ha_heap.cc:
After merge fixes
sql/handler.cc:
After merge fixes
sql/item.cc:
After merge fixes
sql/item_cmpfunc.cc:
Ensure that we are comparing end space with BINARY strings
sql/item_cmpfunc.h:
Ensure that we are comparing end space with BINARY strings
sql/log_event.cc:
More DBUG statements
Ensure that we use all options to LOAD DATA in replication
sql/opt_range.cc:
After merge fixes
sql/sql_db.cc:
After merge fixes
sql/sql_handler.cc:
After merge fixes
Use 'any_db' instead of '' to mean 'no database comparison'
sql/sql_parse.cc:
After merge fixes
sql/sql_select.cc:
After merge fixes
Added function comment for setup_group()
sql/sql_string.cc:
Added stringcmp() for binary comparison.
Added function comments for sortcmp() and stringcmp()
sql/sql_string.h:
Added stringcmp()
sql/sql_table.cc:
After merge fixes
sql/sql_update.cc:
After merge fixes
sql/sql_yacc.yy:
Use 'any_db' instead of '' to mean any database. Using "" causes a 'wrong db name' error.
strings/ctype-big5.c:
Strip only end space, not other space characters.
strings/ctype-bin.c:
Removed some not needed functions.
Added function comments
Don't remove end space in comparisons
Change my_wildcmp_bin() to be 'identical' with other similar code
strings/ctype-czech.c:
Strip only end space, not other space characters.
strings/ctype-gbk.c:
Strip only end space, not other space characters.
strings/ctype-latin1.c:
Strip only end space, not other space characters.
strings/ctype-mb.c:
Strip only end space, not other space characters.
strings/ctype-simple.c:
Strip only end space, not other space characters.
strings/ctype-sjis.c:
Strip only end space, not other space characters.
strings/ctype-tis620.c:
Added usage of my_instr_simple. This needs to be cleaned up!
strings/ctype-utf8.c:
Strip only end space, not other space characters.
strings/ctype-win1250ch.c:
Strip only end space, not other space characters.
Fixed indentation
strings/strto.c:
Code cleanup
2004-02-16 09:03:25 +01:00
Warning 1265 Data truncated for column 'stamp' at row 3
2003-04-21 20:03:32 +02:00
SELECT col1 FROM t1 UNION SELECT col1 FROM t2 WHERE stamp <
'20020204120000' GROUP BY col1;
col1
1
2
3
2003-12-19 15:25:50 +01:00
4
2003-04-21 20:03:32 +02:00
drop table t1,t2;
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
CREATE TABLE t1 (
`id` int(10) unsigned NOT NULL auto_increment,
`id_object` int(10) unsigned default '0',
`id_version` int(10) unsigned NOT NULL default '1',
2004-08-23 17:01:22 +02:00
`label` varchar(100) NOT NULL default '',
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
`description` text,
PRIMARY KEY (`id`),
KEY `id_object` (`id_object`),
KEY `id_version` (`id_version`)
2003-12-10 05:31:42 +01:00
) ENGINE=InnoDB;
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
INSERT INTO t1 VALUES("6", "3382", "9", "Test", NULL), ("7", "102", "5", "Le Pekin (Test)", NULL),("584", "1794", "4", "Test de resto", NULL),("837", "1822", "6", "Test 3", NULL),("1119", "3524", "1", "Societe Test", NULL),("1122", "3525", "1", "Fournisseur Test", NULL);
CREATE TABLE t2 (
`id` int(10) unsigned NOT NULL auto_increment,
`id_version` int(10) unsigned NOT NULL default '1',
PRIMARY KEY (`id`),
KEY `id_version` (`id_version`)
2003-12-10 05:31:42 +01:00
) ENGINE=InnoDB;
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
INSERT INTO t2 VALUES("3524", "1"),("3525", "1"),("1794", "4"),("102", "5"),("1822", "6"),("3382", "9");
2004-08-23 17:01:22 +02:00
SELECT t2.id, t1.`label` FROM t2 INNER JOIN
(SELECT t1.id_object as id_object FROM t1 WHERE t1.`label` LIKE '%test%') AS lbl
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
ON (t2.id = lbl.id_object) INNER JOIN t1 ON (t2.id = t1.id_object);
id label
2003-06-12 15:52:36 +02:00
3382 Test
102 Le Pekin (Test)
1794 Test de resto
1822 Test 3
3524 Societe Test
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
3525 Fournisseur Test
drop table t1,t2;
2003-12-10 05:31:42 +01:00
create table t1 (a int, b varchar(200), c text not null) checksum=1 engine=myisam;
create table t2 (a int, b varchar(200), c text not null) checksum=0 engine=innodb;
create table t3 (a int, b varchar(200), c text not null) checksum=1 engine=innodb;
2003-09-03 11:34:32 +02:00
insert t1 values (1, "aaa", "bbb"), (NULL, "", "ccccc"), (0, NULL, "");
insert t2 select * from t1;
insert t3 select * from t1;
checksum table t1, t2, t3, t4 quick;
Table Checksum
2004-12-18 04:19:21 +01:00
test.t1 2948697075
2003-09-03 11:34:32 +02:00
test.t2 NULL
test.t3 NULL
test.t4 NULL
2005-02-24 22:33:42 +01:00
Warnings:
Error 1146 Table 'test.t4' doesn't exist
2005-06-07 04:43:59 +02:00
checksum table t1, t2, t3, t4;
2003-09-03 11:34:32 +02:00
Table Checksum
2004-12-18 04:19:21 +01:00
test.t1 2948697075
2006-02-01 16:46:44 +01:00
test.t2 2948697075
test.t3 2948697075
2005-06-07 04:43:59 +02:00
test.t4 NULL
Warnings:
Error 1146 Table 'test.t4' doesn't exist
checksum table t1, t2, t3, t4 extended;
2003-09-03 11:34:32 +02:00
Table Checksum
2006-02-01 16:46:44 +01:00
test.t1 2948697075
test.t2 2948697075
test.t3 2948697075
2005-06-07 04:43:59 +02:00
test.t4 NULL
Warnings:
Error 1146 Table 'test.t4' doesn't exist
2003-09-03 11:34:32 +02:00
drop table t1,t2,t3;
2004-02-17 00:35:17 +01:00
create table t1 (id int, name char(10) not null, name2 char(10) not null) engine=innodb;
insert into t1 values(1,'first','fff'),(2,'second','sss'),(3,'third','ttt');
2006-07-22 00:08:00 +02:00
select trim(name2) from t1 union all select trim(name) from t1 union all select trim(id) from t1;
trim(name2)
2004-02-17 00:35:17 +01:00
fff
sss
ttt
first
second
third
1
2
3
drop table t1;
2004-03-31 11:29:01 +02:00
create table t1 (a int) engine=innodb;
create table t2 like t1;
drop table t1,t2;
2004-05-11 23:29:52 +02:00
create table t1 (id int(11) not null, id2 int(11) not null, unique (id,id2)) engine=innodb;
create table t2 (id int(11) not null, constraint t1_id_fk foreign key ( id ) references t1 (id)) engine = innodb;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
UNIQUE KEY `id` (`id`,`id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
KEY `t1_id_fk` (`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
create index id on t2 (id);
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
KEY `id` (`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
create index id2 on t2 (id);
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
KEY `id` (`id`),
KEY `id2` (`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop index id2 on t2;
drop index id on t2;
Got one of the listed errors
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
KEY `id` (`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id,id2) references t1 (id,id2)) engine = innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
KEY `t1_id_fk` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`, `id2`) REFERENCES `t1` (`id`, `id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
create unique index id on t2 (id,id2);
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
UNIQUE KEY `id` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`, `id2`) REFERENCES `t1` (`id`, `id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
UNIQUE KEY `id` (`id`,`id2`),
KEY `t1_id_fk` (`id2`,`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id2`, `id`) REFERENCES `t1` (`id`, `id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2), constraint t1_id_fk foreign key (id) references t1 (id)) engine = innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
UNIQUE KEY `id` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2004-10-02 21:20:08 +02:00
`id` int(11) NOT NULL,
`id2` int(11) NOT NULL,
2004-05-11 23:29:52 +02:00
UNIQUE KEY `id` (`id`,`id2`),
KEY `t1_id_fk` (`id2`,`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id2`, `id`) REFERENCES `t1` (`id`, `id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
2004-05-15 10:57:40 +02:00
create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id), primary key (id), index (id,id2)) engine = innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`id` int(11) NOT NULL AUTO_INCREMENT,
2004-10-02 21:20:08 +02:00
`id2` int(11) NOT NULL,
2006-04-14 17:39:36 +02:00
PRIMARY KEY (`id`),
2004-05-15 10:57:40 +02:00
KEY `id` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id)) engine= innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`id` int(11) NOT NULL AUTO_INCREMENT,
2004-10-02 21:20:08 +02:00
`id2` int(11) NOT NULL,
2004-05-15 10:57:40 +02:00
KEY `t1_id_fk` (`id`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
alter table t2 add index id_test (id), add index id_test2 (id,id2);
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`id` int(11) NOT NULL AUTO_INCREMENT,
2004-10-02 21:20:08 +02:00
`id2` int(11) NOT NULL,
2004-05-15 10:57:40 +02:00
KEY `id_test` (`id`),
KEY `id_test2` (`id`,`id2`),
CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
2004-05-11 23:29:52 +02:00
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
2007-07-18 14:22:05 +02:00
ERROR 42000: Incorrect foreign key definition for 't1_id_fk': Key reference and table reference don't match
2004-05-14 12:49:18 +02:00
create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`),
2004-05-14 12:49:18 +02:00
UNIQUE KEY `b_2` (`b`),
KEY `b` (`b`),
CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2;
create table t2 (a int auto_increment primary key, b int, foreign key (b) references t1(id), foreign key (b) references t1(id), unique(b)) engine=innodb;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`),
2004-05-14 12:49:18 +02:00
UNIQUE KEY `b` (`b`),
CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`id`),
CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`b`) REFERENCES `t1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2, t1;
2004-11-22 19:07:04 +01:00
create table t1 (c char(10), index (c,c)) engine=innodb;
ERROR 42S21: Duplicate column name 'c'
create table t1 (c1 char(10), c2 char(10), index (c1,c2,c1)) engine=innodb;
ERROR 42S21: Duplicate column name 'c1'
create table t1 (c1 char(10), c2 char(10), index (c1,c1,c2)) engine=innodb;
ERROR 42S21: Duplicate column name 'c1'
create table t1 (c1 char(10), c2 char(10), index (c2,c1,c1)) engine=innodb;
ERROR 42S21: Duplicate column name 'c1'
create table t1 (c1 char(10), c2 char(10)) engine=innodb;
alter table t1 add key (c1,c1);
ERROR 42S21: Duplicate column name 'c1'
alter table t1 add key (c2,c1,c1);
ERROR 42S21: Duplicate column name 'c1'
alter table t1 add key (c1,c2,c1);
ERROR 42S21: Duplicate column name 'c1'
alter table t1 add key (c1,c1,c2);
ERROR 42S21: Duplicate column name 'c1'
drop table t1;
2005-05-06 17:11:01 +02:00
create table t1(a int(1) , b int(1)) engine=innodb;
insert into t1 values ('1111', '3333');
select distinct concat(a, b) from t1;
concat(a, b)
11113333
drop table t1;
2005-05-07 12:48:56 +02:00
CREATE TABLE t1 ( a char(10) ) ENGINE=InnoDB;
SELECT a FROM t1 WHERE MATCH (a) AGAINST ('test' IN BOOLEAN MODE);
2005-05-14 15:24:36 +02:00
ERROR HY000: The used table type doesn't support FULLTEXT indexes
2005-05-07 18:37:27 +02:00
DROP TABLE t1;
2005-06-03 22:46:03 +02:00
CREATE TABLE t1 (a_id tinyint(4) NOT NULL default '0', PRIMARY KEY (a_id)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO t1 VALUES (1),(2),(3);
CREATE TABLE t2 (b_id tinyint(4) NOT NULL default '0',b_a tinyint(4) NOT NULL default '0', PRIMARY KEY (b_id), KEY (b_a),
CONSTRAINT fk_b_a FOREIGN KEY (b_a) REFERENCES t1 (a_id) ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO t2 VALUES (1,1),(2,1),(3,1),(4,2),(5,2);
SELECT * FROM (SELECT t1.*,GROUP_CONCAT(t2.b_id SEPARATOR ',') as b_list FROM (t1 LEFT JOIN (t2) on t1.a_id = t2.b_a) GROUP BY t1.a_id ) AS xyz;
a_id b_list
1 1,2,3
2 4,5
3 NULL
DROP TABLE t2;
DROP TABLE t1;
2005-08-29 17:01:46 +02:00
create temporary table t1 (a int) engine=innodb;
insert into t1 values (4711);
truncate t1;
insert into t1 values (42);
select * from t1;
a
42
drop table t1;
create table t1 (a int) engine=innodb;
insert into t1 values (4711);
truncate t1;
insert into t1 values (42);
select * from t1;
a
42
drop table t1;
2005-09-12 17:48:17 +02:00
create table t1 (a int not null, b int not null, c blob not null, d int not null, e int, primary key (a,b,c(255),d)) engine=innodb;
insert into t1 values (2,2,"b",2,2),(1,1,"a",1,1),(3,3,"ab",3,3);
select * from t1 order by a,b,c,d;
a b c d e
1 1 a 1 1
2 2 b 2 2
3 3 ab 3 3
explain select * from t1 order by a,b,c,d;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
drop table t1;
2005-09-19 02:39:49 +02:00
create table t1 (a char(1), b char(1), key(a, b)) engine=innodb;
insert into t1 values ('8', '6'), ('4', '7');
select min(a) from t1;
min(a)
4
select min(b) from t1 where a='8';
min(b)
6
drop table t1;
2004-10-20 12:56:49 +02:00
create table t1 (x bigint unsigned not null primary key) engine=innodb;
insert into t1(x) values (0xfffffffffffffff0),(0xfffffffffffffff1);
select * from t1;
x
18446744073709551600
18446744073709551601
select count(*) from t1 where x>0;
count(*)
2
select count(*) from t1 where x=0;
count(*)
0
select count(*) from t1 where x<0;
count(*)
0
select count(*) from t1 where x < -16;
count(*)
0
select count(*) from t1 where x = -16;
count(*)
0
explain select count(*) from t1 where x > -16;
id select_type table type possible_keys key key_len ref rows Extra
2005-06-24 08:56:58 +02:00
1 SIMPLE t1 index PRIMARY PRIMARY 8 NULL 2 Using where; Using index
2004-10-20 12:56:49 +02:00
select count(*) from t1 where x > -16;
count(*)
2005-06-24 08:56:58 +02:00
2
2004-10-20 12:56:49 +02:00
select * from t1 where x > -16;
x
2005-06-24 08:56:58 +02:00
18446744073709551600
2004-10-20 12:56:49 +02:00
18446744073709551601
select count(*) from t1 where x = 18446744073709551601;
count(*)
1
drop table t1;
2009-04-15 14:28:07 +02:00
SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_buffer_pool_pages_total';
variable_value
512
SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_page_size';
variable_value
16384
SELECT variable_value - @innodb_rows_deleted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted';
variable_value - @innodb_rows_deleted_orig
71
SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted';
variable_value - @innodb_rows_inserted_orig
2011-10-25 16:33:38 +02:00
1067
2009-04-15 14:28:07 +02:00
SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated';
variable_value - @innodb_rows_updated_orig
2010-05-05 12:40:01 +02:00
865
2009-04-15 14:28:07 +02:00
SELECT variable_value - @innodb_row_lock_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits';
variable_value - @innodb_row_lock_waits_orig
0
SELECT variable_value - @innodb_row_lock_current_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_current_waits';
variable_value - @innodb_row_lock_current_waits_orig
0
SELECT variable_value - @innodb_row_lock_time_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time';
variable_value - @innodb_row_lock_time_orig
0
SELECT variable_value - @innodb_row_lock_time_max_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_max';
variable_value - @innodb_row_lock_time_max_orig
0
SELECT variable_value - @innodb_row_lock_time_avg_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_avg';
variable_value - @innodb_row_lock_time_avg_orig
0
2005-01-05 12:43:48 +01:00
show variables like "innodb_sync_spin_loops";
Variable_name Value
innodb_sync_spin_loops 20
set global innodb_sync_spin_loops=1000;
show variables like "innodb_sync_spin_loops";
Variable_name Value
innodb_sync_spin_loops 1000
set global innodb_sync_spin_loops=0;
show variables like "innodb_sync_spin_loops";
Variable_name Value
innodb_sync_spin_loops 0
set global innodb_sync_spin_loops=20;
show variables like "innodb_sync_spin_loops";
Variable_name Value
innodb_sync_spin_loops 20
2008-11-13 20:19:00 +01:00
SET @old_innodb_thread_concurrency= @@global.innodb_thread_concurrency;
2005-01-08 15:01:37 +01:00
show variables like "innodb_thread_concurrency";
Variable_name Value
2006-05-26 23:11:21 +02:00
innodb_thread_concurrency 8
2006-01-18 13:20:56 +01:00
set global innodb_thread_concurrency=1001;
Bug#31177: Server variables can't be set to their current values
Default values of variables were not subject to upper/lower bounds
and step, while setting variables was. Bounds and step are also
applied to defaults now; defaults are corrected quietly, values
given by the user are corrected, and a correction-warning is thrown
as needed. Lastly, very large values could wrap around, starting
from 0 again. They are bounded at the maximum value for the
respective data-type now if no lower maximum is specified in the
variable's definition.
client/mysql.cc:
correct maxima in options array
client/mysqltest.c:
adjust minimum for "sleep" option so default value is no longer
out of bounds.
include/m_string.h:
ullstr() - the unsigned brother of llstr()
include/my_getopt.h:
Flag if we bounded the value (that is, correct anything aside from
making value a multiple of block-size)
mysql-test/r/delayed.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/index_merge.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/innodb.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/innodb_mysql.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/key_cache.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/packet.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/ps.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/subselect.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/type_bit.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/type_bit_innodb.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/variables.result:
correct results: bounds and step apply to variables' default values, too
mysql-test/t/variables.test:
correct results: bounds and step apply to variables' default values, too
mysys/my_getopt.c:
- apply bounds/step to default values of variables (based on work by serg)
- print complaints about incorrect values for variables (truncation etc.,
by requestion of consulting)
- if no lower maximum is specified in variable definition, bound unsigned
values at their maximum to prevent wrap-around
- some calls to error_reporter had a \n, some didn't. remove \n from calls,
let reporter-function handle it, so the default reporter behaves like that
in mysqld
sql/mysql_priv.h:
correct RANGE_ALLOC_BLOCK_SIZE (cleared with monty)
sql/mysqld.cc:
correct maxima to correct data-type.
correct minima where higher than default.
correct range-alloc-block-size.
correct inno variables so GET_* corresponds to actual variable's type.
sql/set_var.cc:
When the new value for a variable is out of bounds, we'll send the
client a warning (but not if the value was simply not a multiple of
'blocksize'). sys_var_thd_ulong had this, sys_var_long_ptr_global
didn't; broken out and streamlined to avoid duplication of code.
strings/llstr.c:
ullstr() - the unsigned brother of llstr()
2007-11-30 06:32:04 +01:00
Warnings:
Bug#31177: Server variables can't be set to their current values
5.1+ specific fixes (plugins etc.)
include/my_getopt.h:
make both ull and ll global
mysql-test/r/index_merge_myisam.result:
we throw warnings to the client, yea, verily
mysql-test/r/innodb.result:
we throw warnings to the client, yea, verily
mysql-test/r/variables.result:
we throw warnings to the client, yea, verily
mysql-test/t/variables.test:
correct result, is multiple of variable's block_size now
mysys/my_getopt.c:
export getopt_ll_limit_value(), check for integer wrap-around
in it, same as in ull variant. Only print warnings to reporter
when caller didn't ask for diagnostics, otherwise assume caller
will handle any warnings (id est, throw them client-wards)
sql/mysqld.cc:
correct signedness of "concurrent-insert"
sql/sql_plugin.cc:
Throw sys-var out-of-range warnings client-wards for
plugins, too.
2007-12-01 19:55:06 +01:00
Warning 1292 Truncated incorrect thread_concurrency value: '1001'
2005-01-08 15:01:37 +01:00
show variables like "innodb_thread_concurrency";
Variable_name Value
innodb_thread_concurrency 1000
set global innodb_thread_concurrency=0;
show variables like "innodb_thread_concurrency";
Variable_name Value
2006-07-30 03:16:08 +02:00
innodb_thread_concurrency 0
2005-01-08 15:01:37 +01:00
set global innodb_thread_concurrency=16;
show variables like "innodb_thread_concurrency";
Variable_name Value
innodb_thread_concurrency 16
2008-11-13 20:19:00 +01:00
SET @@global.innodb_thread_concurrency= @old_innodb_thread_concurrency;
2005-01-12 20:55:06 +01:00
show variables like "innodb_concurrency_tickets";
2005-01-08 15:01:37 +01:00
Variable_name Value
2005-01-12 20:55:06 +01:00
innodb_concurrency_tickets 500
set global innodb_concurrency_tickets=1000;
show variables like "innodb_concurrency_tickets";
2005-01-08 15:01:37 +01:00
Variable_name Value
2005-01-12 20:55:06 +01:00
innodb_concurrency_tickets 1000
set global innodb_concurrency_tickets=0;
Bug#31177: Server variables can't be set to their current values
Default values of variables were not subject to upper/lower bounds
and step, while setting variables was. Bounds and step are also
applied to defaults now; defaults are corrected quietly, values
given by the user are corrected, and a correction-warning is thrown
as needed. Lastly, very large values could wrap around, starting
from 0 again. They are bounded at the maximum value for the
respective data-type now if no lower maximum is specified in the
variable's definition.
client/mysql.cc:
correct maxima in options array
client/mysqltest.c:
adjust minimum for "sleep" option so default value is no longer
out of bounds.
include/m_string.h:
ullstr() - the unsigned brother of llstr()
include/my_getopt.h:
Flag if we bounded the value (that is, correct anything aside from
making value a multiple of block-size)
mysql-test/r/delayed.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/index_merge.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/innodb.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/innodb_mysql.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/key_cache.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/packet.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/ps.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/subselect.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/type_bit.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/type_bit_innodb.result:
We throw a warning now when we adjust out of range parameters.
mysql-test/r/variables.result:
correct results: bounds and step apply to variables' default values, too
mysql-test/t/variables.test:
correct results: bounds and step apply to variables' default values, too
mysys/my_getopt.c:
- apply bounds/step to default values of variables (based on work by serg)
- print complaints about incorrect values for variables (truncation etc.,
by requestion of consulting)
- if no lower maximum is specified in variable definition, bound unsigned
values at their maximum to prevent wrap-around
- some calls to error_reporter had a \n, some didn't. remove \n from calls,
let reporter-function handle it, so the default reporter behaves like that
in mysqld
sql/mysql_priv.h:
correct RANGE_ALLOC_BLOCK_SIZE (cleared with monty)
sql/mysqld.cc:
correct maxima to correct data-type.
correct minima where higher than default.
correct range-alloc-block-size.
correct inno variables so GET_* corresponds to actual variable's type.
sql/set_var.cc:
When the new value for a variable is out of bounds, we'll send the
client a warning (but not if the value was simply not a multiple of
'blocksize'). sys_var_thd_ulong had this, sys_var_long_ptr_global
didn't; broken out and streamlined to avoid duplication of code.
strings/llstr.c:
ullstr() - the unsigned brother of llstr()
2007-11-30 06:32:04 +01:00
Warnings:
Bug#31177: Server variables can't be set to their current values
5.1+ specific fixes (plugins etc.)
include/my_getopt.h:
make both ull and ll global
mysql-test/r/index_merge_myisam.result:
we throw warnings to the client, yea, verily
mysql-test/r/innodb.result:
we throw warnings to the client, yea, verily
mysql-test/r/variables.result:
we throw warnings to the client, yea, verily
mysql-test/t/variables.test:
correct result, is multiple of variable's block_size now
mysys/my_getopt.c:
export getopt_ll_limit_value(), check for integer wrap-around
in it, same as in ull variant. Only print warnings to reporter
when caller didn't ask for diagnostics, otherwise assume caller
will handle any warnings (id est, throw them client-wards)
sql/mysqld.cc:
correct signedness of "concurrent-insert"
sql/sql_plugin.cc:
Throw sys-var out-of-range warnings client-wards for
plugins, too.
2007-12-01 19:55:06 +01:00
Warning 1292 Truncated incorrect concurrency_tickets value: '0'
2005-01-12 20:55:06 +01:00
show variables like "innodb_concurrency_tickets";
2005-01-08 15:01:37 +01:00
Variable_name Value
2005-01-12 20:55:06 +01:00
innodb_concurrency_tickets 1
set global innodb_concurrency_tickets=500;
show variables like "innodb_concurrency_tickets";
2005-01-08 15:01:37 +01:00
Variable_name Value
2005-01-12 20:55:06 +01:00
innodb_concurrency_tickets 500
2005-01-08 15:01:37 +01:00
show variables like "innodb_thread_sleep_delay";
Variable_name Value
innodb_thread_sleep_delay 10000
set global innodb_thread_sleep_delay=100000;
show variables like "innodb_thread_sleep_delay";
Variable_name Value
innodb_thread_sleep_delay 100000
set global innodb_thread_sleep_delay=0;
show variables like "innodb_thread_sleep_delay";
Variable_name Value
innodb_thread_sleep_delay 0
set global innodb_thread_sleep_delay=10000;
show variables like "innodb_thread_sleep_delay";
Variable_name Value
innodb_thread_sleep_delay 10000
2005-03-17 00:22:12 +01:00
set storage_engine=INNODB;
drop table if exists t1,t2,t3;
--- Testing varchar ---
--- Testing varchar ---
create table t1 (v varchar(10), c char(10), t text);
insert into t1 values('+ ', '+ ', '+ ');
set @a=repeat(' ',20);
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
Warnings:
Note 1265 Data truncated for column 'v' at row 1
select concat('*',v,'*',c,'*',t,'*') from t1;
concat('*',v,'*',c,'*',t,'*')
*+ *+*+ *
*+ *+*+ *
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
create table t2 like t1;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
create table t3 select * from t1;
show create table t3;
Table Create Table
t3 CREATE TABLE `t3` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
alter table t1 modify c varchar(10);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` varchar(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
alter table t1 modify v char(10);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` char(10) DEFAULT NULL,
`c` varchar(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
alter table t1 modify t varchar(10);
Warnings:
Note 1265 Data truncated for column 't' at row 2
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` char(10) DEFAULT NULL,
`c` varchar(10) DEFAULT NULL,
`t` varchar(10) DEFAULT NULL
2005-03-17 00:22:12 +01:00
) ENGINE=InnoDB DEFAULT CHARSET=latin1
select concat('*',v,'*',c,'*',t,'*') from t1;
concat('*',v,'*',c,'*',t,'*')
*+*+*+ *
*+*+*+ *
drop table t1,t2,t3;
create table t1 (v varchar(10), c char(10), t text, key(v), key(c), key(t(10)));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text,
KEY `v` (`v`),
KEY `c` (`c`),
KEY `t` (`t`(10))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
select count(*) from t1;
count(*)
270
insert into t1 values(concat('a',char(1)),concat('a',char(1)),concat('a',char(1)));
select count(*) from t1 where v='a';
count(*)
10
select count(*) from t1 where c='a';
count(*)
10
select count(*) from t1 where t='a';
count(*)
10
select count(*) from t1 where v='a ';
count(*)
10
select count(*) from t1 where c='a ';
count(*)
10
select count(*) from t1 where t='a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
count(*)
10
select count(*) from t1 where v like 'a%';
count(*)
11
select count(*) from t1 where c like 'a%';
count(*)
11
select count(*) from t1 where t like 'a%';
count(*)
11
select count(*) from t1 where v like 'a %';
count(*)
9
explain select count(*) from t1 where v='a ';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 13 const # Using where; Using index
explain select count(*) from t1 where c='a ';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref c c 11 const # Using where; Using index
explain select count(*) from t1 where t='a ';
id select_type table type possible_keys key key_len ref rows Extra
2007-02-15 07:06:41 +01:00
1 SIMPLE t1 ref t t 13 const # Using where
2005-03-17 00:22:12 +01:00
explain select count(*) from t1 where v like 'a%';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 13 NULL # Using where; Using index
explain select count(*) from t1 where v between 'a' and 'a ';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 13 const # Using where; Using index
2005-03-17 00:22:12 +01:00
explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 13 const # Using where; Using index
2005-03-17 00:22:12 +01:00
alter table t1 add unique(v);
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry '{ ' for key 'v_2'
2005-03-17 00:22:12 +01:00
alter table t1 add key(v);
select concat('*',v,'*',c,'*',t,'*') as qq from t1 where v='a';
qq
*a*a*a*
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
*a *a*a *
explain select * from t1 where v='a';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v,v_2 # 13 const # Using where
select v,count(*) from t1 group by v limit 10;
v count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select v,count(c) from t1 group by v limit 10;
v count(c)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result v,count(c) from t1 group by v limit 10;
v count(c)
a 1
2006-10-09 17:51:41 +02:00
a 10
b 10
c 10
d 10
e 10
f 10
g 10
2005-03-17 00:22:12 +01:00
h 10
2006-10-09 17:51:41 +02:00
i 10
2005-03-17 00:22:12 +01:00
select c,count(*) from t1 group by c limit 10;
c count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select c,count(t) from t1 group by c limit 10;
c count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result c,count(t) from t1 group by c limit 10;
c count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select t,count(*) from t1 group by t limit 10;
t count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select t,count(t) from t1 group by t limit 10;
t count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result t,count(t) from t1 group by t limit 10;
t count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
alter table t1 modify v varchar(300), drop key v, drop key v_2, add key v (v);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(300) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text,
KEY `c` (`c`),
KEY `t` (`t`(10)),
KEY `v` (`v`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
select count(*) from t1 where v='a';
count(*)
10
select count(*) from t1 where v='a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
count(*)
10
select count(*) from t1 where v like 'a%';
count(*)
11
select count(*) from t1 where v like 'a %';
count(*)
9
explain select count(*) from t1 where v='a ';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 303 const # Using where; Using index
explain select count(*) from t1 where v like 'a%';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 303 NULL # Using where; Using index
explain select count(*) from t1 where v between 'a' and 'a ';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 303 const # Using where; Using index
2005-03-17 00:22:12 +01:00
explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 303 const # Using where; Using index
2005-03-17 00:22:12 +01:00
explain select * from t1 where v='a';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 303 const # Using where
select v,count(*) from t1 group by v limit 10;
v count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
alter table t1 drop key v, add key v (v(30));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(300) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text,
KEY `c` (`c`),
KEY `t` (`t`(10)),
KEY `v` (`v`(30))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
select count(*) from t1 where v='a';
count(*)
10
select count(*) from t1 where v='a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ';
count(*)
10
select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
count(*)
10
select count(*) from t1 where v like 'a%';
count(*)
11
select count(*) from t1 where v like 'a %';
count(*)
9
explain select count(*) from t1 where v='a ';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 33 const # Using where
explain select count(*) from t1 where v like 'a%';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 33 NULL # Using where
explain select count(*) from t1 where v between 'a' and 'a ';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 33 const # Using where
2005-03-17 00:22:12 +01:00
explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
id select_type table type possible_keys key key_len ref rows Extra
2005-09-29 23:34:19 +02:00
1 SIMPLE t1 ref v v 33 const # Using where
2005-03-17 00:22:12 +01:00
explain select * from t1 where v='a';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 33 const # Using where
select v,count(*) from t1 group by v limit 10;
v count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
alter table t1 modify v varchar(600), drop key v, add key v (v);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(600) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text,
KEY `c` (`c`),
KEY `t` (`t`(10)),
KEY `v` (`v`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
select v,count(*) from t1 group by v limit 10;
v count(*)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
select sql_big_result v,count(t) from t1 group by v limit 10;
v count(t)
a 1
a 10
b 10
c 10
d 10
e 10
f 10
g 10
h 10
i 10
drop table t1;
create table t1 (a char(10), unique (a));
insert into t1 values ('a ');
insert into t1 values ('a ');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'a' for key 'a'
2005-03-17 00:22:12 +01:00
alter table t1 modify a varchar(10);
insert into t1 values ('a '),('a '),('a '),('a ');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'a ' for key 'a'
2005-03-17 00:22:12 +01:00
insert into t1 values ('a ');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'a ' for key 'a'
2005-03-17 00:22:12 +01:00
insert into t1 values ('a ');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'a ' for key 'a'
2005-03-17 00:22:12 +01:00
insert into t1 values ('a ');
2006-04-14 17:39:36 +02:00
ERROR 23000: Duplicate entry 'a ' for key 'a'
2005-03-17 00:22:12 +01:00
update t1 set a='a ' where a like 'a%';
select concat(a,'.') from t1;
concat(a,'.')
a .
update t1 set a='abc ' where a like 'a ';
select concat(a,'.') from t1;
concat(a,'.')
a .
update t1 set a='a ' where a like 'a %';
select concat(a,'.') from t1;
concat(a,'.')
a .
update t1 set a='a ' where a like 'a ';
select concat(a,'.') from t1;
concat(a,'.')
a .
drop table t1;
create table t1 (v varchar(10), c char(10), t text, key(v(5)), key(c(5)), key(t(5)));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
2005-03-17 00:22:12 +01:00
`t` text,
KEY `v` (`v`(5)),
KEY `c` (`c`(5)),
KEY `t` (`t`(5))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1;
create table t1 (v char(10) character set utf8);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` char(10) CHARACTER SET utf8 DEFAULT NULL
2005-03-17 00:22:12 +01:00
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1;
create table t1 (v varchar(10), c char(10)) row_format=fixed;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL
2005-03-17 00:22:12 +01:00
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED
insert into t1 values('a','a'),('a ','a ');
select concat('*',v,'*',c,'*') from t1;
concat('*',v,'*',c,'*')
*a*a*
*a *a*
drop table t1;
create table t1 (v varchar(65530), key(v(10)));
insert into t1 values(repeat('a',65530));
select length(v) from t1 where v=repeat('a',65530);
length(v)
65530
drop table t1;
2005-04-26 16:46:52 +02:00
create table t1(a int, b varchar(12), key ba(b, a));
insert into t1 values (1, 'A'), (20, NULL);
explain select * from t1 where a=20 and b is null;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref ba ba 20 const,const 1 Using where; Using index
select * from t1 where a=20 and b is null;
a b
20 NULL
drop table t1;
2005-03-17 00:22:12 +01:00
create table t1 (v varchar(65530), key(v));
2005-12-06 20:02:40 +01:00
Warnings:
Warning 1071 Specified key was too long; max key length is 767 bytes
drop table t1;
2005-03-17 00:22:12 +01:00
create table t1 (v varchar(65536));
Warnings:
Note 1246 Converting column 'v' from VARCHAR to TEXT
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`v` mediumtext
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1;
create table t1 (v varchar(65530) character set utf8);
Warnings:
Note 1246 Converting column 'v' from VARCHAR to TEXT
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
2006-04-14 17:39:36 +02:00
`v` mediumtext CHARACTER SET utf8
2005-03-17 00:22:12 +01:00
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t1;
set storage_engine=MyISAM;