mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1
into moonbone.local:/work/tmp_merge-4.1-opt-mysql
This commit is contained in:
commit
52d86dff85
6 changed files with 52 additions and 5 deletions
|
@ -686,3 +686,7 @@ ERROR 42S22: Unknown column 'z' in 'field list'
|
||||||
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
|
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
|
||||||
ERROR 42S02: Unknown table 't2' in field list
|
ERROR 42S02: Unknown table 't2' in field list
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
CREATE TABLE t1 (a int PRIMARY KEY);
|
||||||
|
INSERT INTO t1 values (1), (2);
|
||||||
|
INSERT INTO t1 SELECT a + 2 FROM t1 LIMIT 1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
|
@ -2738,3 +2738,9 @@ ERROR HY000: Key 'a' doesn't exist in table 't1'
|
||||||
EXPLAIN SELECT * FROM t1 FORCE INDEX (a);
|
EXPLAIN SELECT * FROM t1 FORCE INDEX (a);
|
||||||
ERROR HY000: Key 'a' doesn't exist in table 't1'
|
ERROR HY000: Key 'a' doesn't exist in table 't1'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (10);
|
||||||
|
SELECT i='1e+01',i=1e+01, i in (1e+01), i in ('1e+01') FROM t1;
|
||||||
|
i='1e+01' i=1e+01 i in (1e+01) i in ('1e+01')
|
||||||
|
0 1 1 1
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
|
@ -226,4 +226,17 @@ insert into t1(x,y) select x,z from t2 on duplicate key update x=values(z);
|
||||||
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
|
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #9676: INSERT INTO x SELECT .. FROM x LIMIT 1; slows down with big
|
||||||
|
# tables
|
||||||
|
#
|
||||||
|
|
||||||
|
#Note: not an exsaustive test : just a check of the code path.
|
||||||
|
CREATE TABLE t1 (a int PRIMARY KEY);
|
||||||
|
INSERT INTO t1 values (1), (2);
|
||||||
|
|
||||||
|
INSERT INTO t1 SELECT a + 2 FROM t1 LIMIT 1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
|
@ -2278,4 +2278,23 @@ EXPLAIN SELECT * FROM t1 FORCE INDEX (a);
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #18759 "Incorrect string to numeric conversion"
|
||||||
|
#
|
||||||
|
# This test is here so that the behavior will not be changed to 4.1
|
||||||
|
# and not to 5.0 either. In 4.1 and 5.0 sending an integer as a string
|
||||||
|
# will be converted internally to real (double) value and it is not
|
||||||
|
# as accurate as bigint (longlong) for integers. Thus the results may
|
||||||
|
# vary. In 5.1 internally it is decimal, which is a string type and
|
||||||
|
# will be more accurate. Due to rather big changes needed to fix this
|
||||||
|
# in 4.1 or 5.0 it is not desired to do it in the stable versions.
|
||||||
|
#
|
||||||
|
# This test is here only to make sure that behavior is not changed in
|
||||||
|
# 4.1 and 5.0
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (10);
|
||||||
|
SELECT i='1e+01',i=1e+01, i in (1e+01), i in ('1e+01') FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
|
@ -136,7 +136,8 @@ static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems)
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((res= items[i]->real_item()->type()) == Item::FIELD_ITEM)
|
if ((res= items[i]->real_item()->type()) == Item::FIELD_ITEM &&
|
||||||
|
items[i]->result_type() != INT_RESULT)
|
||||||
{
|
{
|
||||||
field= ((Item_field *)items[i]->real_item())->field;
|
field= ((Item_field *)items[i]->real_item())->field;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -888,8 +888,9 @@ JOIN::optimize()
|
||||||
group_list ? 0 : select_distinct,
|
group_list ? 0 : select_distinct,
|
||||||
group_list && simple_group,
|
group_list && simple_group,
|
||||||
select_options,
|
select_options,
|
||||||
(order == 0 || skip_sort_order) ? select_limit :
|
(order == 0 || skip_sort_order ||
|
||||||
HA_POS_ERROR,
|
test(select_options & OPTION_BUFFER_RESULT)) ?
|
||||||
|
select_limit : HA_POS_ERROR,
|
||||||
(char *) "")))
|
(char *) "")))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
|
|
||||||
|
@ -5530,6 +5531,11 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
|
||||||
keyinfo->key_length+= key_part_info->length;
|
keyinfo->key_length+= key_part_info->length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
set_if_smaller(table->max_rows, rows_limit);
|
||||||
|
param->end_write_records= rows_limit;
|
||||||
|
}
|
||||||
|
|
||||||
if (distinct && field_count != param->hidden_field_count)
|
if (distinct && field_count != param->hidden_field_count)
|
||||||
{
|
{
|
||||||
|
@ -5544,8 +5550,6 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
|
||||||
null_pack_length-=hidden_null_pack_length;
|
null_pack_length-=hidden_null_pack_length;
|
||||||
keyinfo->key_parts= ((field_count-param->hidden_field_count)+
|
keyinfo->key_parts= ((field_count-param->hidden_field_count)+
|
||||||
test(null_pack_length));
|
test(null_pack_length));
|
||||||
set_if_smaller(table->max_rows, rows_limit);
|
|
||||||
param->end_write_records= rows_limit;
|
|
||||||
table->distinct=1;
|
table->distinct=1;
|
||||||
table->keys=1;
|
table->keys=1;
|
||||||
if (blob_count)
|
if (blob_count)
|
||||||
|
|
Loading…
Add table
Reference in a new issue