Merge mysql.com:/home/kostja/mysql/mysql-4.1-root
into mysql.com:/home/kostja/mysql/mysql-5.0-merge client/mysqltest.c: Auto merged mysql-test/r/rpl_log.result: Auto merged mysql-test/r/rpl_rotate_logs.result: Auto merged mysql-test/r/select.result: Auto merged mysql-test/r/timezone_grant.result: Auto merged mysql-test/t/ctype_utf8.test: Auto merged mysql-test/t/timezone_grant.test: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_repl.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_yacc.yy: Auto merged tests/mysql_client_test.c: Auto merged configure.in: Manual merge mysql-test/r/olap.result: Manual merge mysql-test/t/olap.test: Manual merge mysql-test/t/select.test: Manual merge sql/mysqld.cc: Manual merge sql/sql_parse.cc: Manual merge
This commit is contained in:
commit
7f6f31ae73
@ -3393,10 +3393,10 @@ static void run_query_display_metadata(MYSQL_FIELD *field, uint num_fields,
|
||||
int10_to_str((int) field->type, buff, 10);
|
||||
dynstr_append(ds, buff);
|
||||
dynstr_append_mem(ds, "\t", 1);
|
||||
int10_to_str((int) field->length, buff, 10);
|
||||
longlong10_to_str((unsigned int) field->length, buff, 10);
|
||||
dynstr_append(ds, buff);
|
||||
dynstr_append_mem(ds, "\t", 1);
|
||||
int10_to_str((int) field->max_length, buff, 10);
|
||||
longlong10_to_str((unsigned int) field->max_length, buff, 10);
|
||||
dynstr_append(ds, buff);
|
||||
dynstr_append_mem(ds, "\t", 1);
|
||||
dynstr_append_mem(ds, (char*) (IS_NOT_NULL(field->flags) ?
|
||||
|
@ -478,7 +478,7 @@ el_gets(EditLine *el, int *nread)
|
||||
#endif /* DEBUG_READ */
|
||||
break;
|
||||
}
|
||||
if ((uint)cmdnum >= el->el_map.nfunc) { /* BUG CHECK command */
|
||||
if ((unsigned int)cmdnum >= el->el_map.nfunc) { /* BUG CHECK command */
|
||||
#ifdef DEBUG_EDIT
|
||||
(void) fprintf(el->el_errfile,
|
||||
"ERROR: illegal command from key 0%o\r\n", ch);
|
||||
|
@ -1,7 +1,7 @@
|
||||
dnl -*- ksh -*-
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.58)dnl Minimum Autoconf version required.
|
||||
AC_PREREQ(2.57)dnl Minimum Autoconf version required.
|
||||
|
||||
AC_INIT(sql/mysqld.cc)
|
||||
AC_CANONICAL_SYSTEM
|
||||
|
@ -576,4 +576,15 @@ EXPLAIN SELECT type FROM v1 GROUP BY type WITH ROLLUP;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 10 Using filesort
|
||||
DROP VIEW v1;
|
||||
CREATE TABLE t1 (a INT(10) NOT NULL, b INT(10) NOT NULL);
|
||||
INSERT INTO t1 VALUES (1, 1);
|
||||
INSERT INTO t1 VALUES (1, 2);
|
||||
SELECT a, b, a AS c, COUNT(*) AS count FROM t1 GROUP BY a, b, c WITH ROLLUP;
|
||||
a b c count
|
||||
1 1 1 1
|
||||
1 1 NULL 1
|
||||
1 2 1 1
|
||||
1 2 NULL 1
|
||||
1 NULL NULL 2
|
||||
NULL NULL NULL 2
|
||||
DROP TABLE t1;
|
||||
|
@ -69,12 +69,12 @@ master-bin.000002 346 Query 1 434 use `test`; insert into t1 values (1)
|
||||
master-bin.000002 434 Query 1 510 use `test`; drop table t1
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
master-bin.000001 0
|
||||
master-bin.000001 1171
|
||||
master-bin.000002 510
|
||||
start slave;
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
slave-bin.000001 0
|
||||
slave-bin.000001 1285
|
||||
slave-bin.000002 348
|
||||
show binlog events in 'slave-bin.000001' from 4;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
|
@ -27,8 +27,8 @@ insert into t2 values (34),(67),(123);
|
||||
flush logs;
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
master-bin.000001 0
|
||||
master-bin.000002 0
|
||||
master-bin.000001 461
|
||||
master-bin.000002 213
|
||||
master-bin.000003 98
|
||||
create table t3 select * from temp_table;
|
||||
select * from t3;
|
||||
@ -43,12 +43,12 @@ start slave;
|
||||
purge master logs to 'master-bin.000002';
|
||||
show master logs;
|
||||
Log_name File_size
|
||||
master-bin.000002 0
|
||||
master-bin.000002 213
|
||||
master-bin.000003 407
|
||||
purge binary logs to 'master-bin.000002';
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
master-bin.000002 0
|
||||
master-bin.000002 213
|
||||
master-bin.000003 407
|
||||
purge master logs before now();
|
||||
show binary logs;
|
||||
@ -74,7 +74,7 @@ count(*)
|
||||
create table t4 select * from temp_table;
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
master-bin.000003 0
|
||||
master-bin.000003 4167
|
||||
master-bin.000004 0
|
||||
master-bin.000005 2032
|
||||
show master status;
|
||||
|
@ -2757,3 +2757,31 @@ f2
|
||||
1
|
||||
NULL
|
||||
drop table t1,t2;
|
||||
create table t2 (a tinyint unsigned);
|
||||
create index t2i on t2(a);
|
||||
insert into t2 values (0), (254), (255);
|
||||
explain select * from t2 where a > -1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index t2i t2i 2 NULL 3 Using where; Using index
|
||||
select * from t2 where a > -1;
|
||||
a
|
||||
0
|
||||
254
|
||||
255
|
||||
drop table t2;
|
||||
CREATE TABLE t1 (a int, b int, c int);
|
||||
INSERT INTO t1
|
||||
SELECT 50, 3, 3 FROM DUAL
|
||||
WHERE NOT EXISTS
|
||||
(SELECT * FROM t1 WHERE a = 50 AND b = 3);
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
50 3 3
|
||||
INSERT INTO t1
|
||||
SELECT 50, 3, 3 FROM DUAL
|
||||
WHERE NOT EXISTS
|
||||
(SELECT * FROM t1 WHERE a = 50 AND b = 3);
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
50 3 3
|
||||
DROP TABLE t1;
|
||||
|
@ -47,6 +47,13 @@ select * from mysql.time_zone_name;
|
||||
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone_name'
|
||||
select Name, convert_tz('2004-11-30 12:00:00', Name, 'UTC') from mysql.time_zone_name;
|
||||
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone_name'
|
||||
drop table t1, t2;
|
||||
create table t1 (a int, b datetime);
|
||||
create table t2 (a int, b varchar(40));
|
||||
update t1 set b = '2005-01-01 10:00';
|
||||
update t1 set b = convert_tz(b, 'UTC', 'UTC');
|
||||
update t1 join t2 on (t1.a = t2.a) set t1.b = '2005-01-01 10:00' where t2.b = 'foo';
|
||||
update t1 join t2 on (t1.a = t2.a) set t1.b = convert_tz('2005-01-01 10:00','UTC','UTC') where t2.b = 'foo';
|
||||
delete from mysql.user where user like 'mysqltest\_%';
|
||||
delete from mysql.db where user like 'mysqltest\_%';
|
||||
delete from mysql.tables_priv where user like 'mysqltest\_%';
|
||||
|
@ -265,4 +265,13 @@ SELECT type FROM v1 GROUP BY type WITH ROLLUP;
|
||||
EXPLAIN SELECT type FROM v1 GROUP BY type WITH ROLLUP;
|
||||
|
||||
DROP VIEW v1;
|
||||
# Test for bug #11543: ROLLUP query with a repeated column in GROUP BY
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a INT(10) NOT NULL, b INT(10) NOT NULL);
|
||||
INSERT INTO t1 VALUES (1, 1);
|
||||
INSERT INTO t1 VALUES (1, 2);
|
||||
|
||||
SELECT a, b, a AS c, COUNT(*) AS count FROM t1 GROUP BY a, b, c WITH ROLLUP;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
@ -2341,3 +2341,31 @@ insert into t2 values (1,2,3),(2,4,6);
|
||||
select A.f2 from t1 left join t2 A on A.f2 = f1 where A.f3=(select min(f3)
|
||||
from t2 C where A.f4 = C.f4) or A.f3 IS NULL;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# Bug #11521 Negative integer keys incorrectly substituted for 0 during
|
||||
# range analysis.
|
||||
|
||||
create table t2 (a tinyint unsigned);
|
||||
create index t2i on t2(a);
|
||||
insert into t2 values (0), (254), (255);
|
||||
explain select * from t2 where a > -1;
|
||||
select * from t2 where a > -1;
|
||||
drop table t2;
|
||||
|
||||
#
|
||||
# Bug #11745: SELECT ... FROM DUAL with WHERE condition
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int, b int, c int);
|
||||
INSERT INTO t1
|
||||
SELECT 50, 3, 3 FROM DUAL
|
||||
WHERE NOT EXISTS
|
||||
(SELECT * FROM t1 WHERE a = 50 AND b = 3);
|
||||
SELECT * FROM t1;
|
||||
INSERT INTO t1
|
||||
SELECT 50, 3, 3 FROM DUAL
|
||||
WHERE NOT EXISTS
|
||||
(SELECT * FROM t1 WHERE a = 50 AND b = 3);
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
@ -61,6 +61,18 @@ select * from mysql.time_zone_name;
|
||||
--error 1142
|
||||
select Name, convert_tz('2004-11-30 12:00:00', Name, 'UTC') from mysql.time_zone_name;
|
||||
|
||||
#
|
||||
# Bug #9979: Use of CONVERT_TZ in multiple-table UPDATE causes bogus
|
||||
# privilege error
|
||||
#
|
||||
drop table t1, t2;
|
||||
create table t1 (a int, b datetime);
|
||||
create table t2 (a int, b varchar(40));
|
||||
update t1 set b = '2005-01-01 10:00';
|
||||
update t1 set b = convert_tz(b, 'UTC', 'UTC');
|
||||
update t1 join t2 on (t1.a = t2.a) set t1.b = '2005-01-01 10:00' where t2.b = 'foo';
|
||||
update t1 join t2 on (t1.a = t2.a) set t1.b = convert_tz('2005-01-01 10:00','UTC','UTC') where t2.b = 'foo';
|
||||
|
||||
# Clean-up
|
||||
connection default;
|
||||
delete from mysql.user where user like 'mysqltest\_%';
|
||||
|
@ -685,7 +685,13 @@ static void close_connections(void)
|
||||
{
|
||||
DBUG_PRINT("quit",("Informing thread %ld that it's time to die",
|
||||
tmp->thread_id));
|
||||
tmp->killed= THD::KILL_CONNECTION;
|
||||
/*
|
||||
Re: bug 7403 - close_connection will be called mulitple times
|
||||
a wholesale clean up of our network code is a very large project.
|
||||
This will wake up the socket on Windows and prevent the printing of
|
||||
the error message that we are force closing a connection.
|
||||
*/
|
||||
close_connection(tmp, 0, 0);
|
||||
if (tmp->mysys_var)
|
||||
{
|
||||
tmp->mysys_var->abort=1;
|
||||
|
@ -2304,7 +2304,8 @@ mysql_execute_command(THD *thd)
|
||||
Don't reset warnings when executing a stored routine.
|
||||
*/
|
||||
if ((all_tables || &lex->select_lex != lex->all_selects_list ||
|
||||
lex->sroutines.records) && !thd->spcont)
|
||||
lex->sroutines.records) && !thd->spcont ||
|
||||
lex->time_zone_tables_used)
|
||||
mysql_reset_errors(thd, 0);
|
||||
|
||||
#ifdef HAVE_REPLICATION
|
||||
@ -6843,7 +6844,7 @@ bool multi_update_precheck(THD *thd, TABLE_LIST *tables)
|
||||
/*
|
||||
Is there tables of subqueries?
|
||||
*/
|
||||
if (&lex->select_lex != lex->all_selects_list)
|
||||
if (&lex->select_lex != lex->all_selects_list || lex->time_zone_tables_used)
|
||||
{
|
||||
DBUG_PRINT("info",("Checking sub query list"));
|
||||
for (table= tables; table; table= table->next_global)
|
||||
|
@ -1526,7 +1526,7 @@ bool show_binlogs(THD* thd)
|
||||
else
|
||||
{
|
||||
/* this is an old log, open it and find the size */
|
||||
if ((file= my_open(fname+dir_len, O_RDONLY | O_SHARE | O_BINARY,
|
||||
if ((file= my_open(fname, O_RDONLY | O_SHARE | O_BINARY,
|
||||
MYF(0))) >= 0)
|
||||
{
|
||||
file_length= (ulonglong) my_seek(file, 0L, MY_SEEK_END, MYF(0));
|
||||
|
@ -1198,7 +1198,7 @@ JOIN::exec()
|
||||
{
|
||||
result->send_fields(fields_list,
|
||||
Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF);
|
||||
if (!having || having->val_int())
|
||||
if (cond_value != Item::COND_FALSE && (!having || having->val_int()))
|
||||
{
|
||||
if (do_send_rows && (procedure ? (procedure->send_row(fields_list) ||
|
||||
procedure->end_of_records())
|
||||
@ -13065,7 +13065,7 @@ bool JOIN::rollup_init()
|
||||
ORDER *group_tmp;
|
||||
for (group_tmp= group_list; group_tmp; group_tmp= group_tmp->next)
|
||||
{
|
||||
if (item->eq(*group_tmp->item,0))
|
||||
if (*group_tmp->item == item)
|
||||
item->maybe_null= 1;
|
||||
}
|
||||
if (item->type() == Item::FUNC_ITEM)
|
||||
@ -13185,7 +13185,7 @@ bool JOIN::rollup_make_fields(List<Item> &fields_arg, List<Item> &sel_fields,
|
||||
for (group_tmp= start_group, i= pos ;
|
||||
group_tmp ; group_tmp= group_tmp->next, i++)
|
||||
{
|
||||
if (item->eq(*group_tmp->item,0))
|
||||
if (*group_tmp->item == item)
|
||||
{
|
||||
/*
|
||||
This is an element that is used by the GROUP BY and should be
|
||||
|
@ -4026,7 +4026,7 @@ select_into:
|
||||
select_from:
|
||||
FROM join_table_list where_clause group_clause having_clause
|
||||
opt_order_clause opt_limit_clause procedure_clause
|
||||
| FROM DUAL_SYM opt_limit_clause
|
||||
| FROM DUAL_SYM where_clause opt_limit_clause
|
||||
/* oracle compatibility: oracle always requires FROM clause,
|
||||
and DUAL is system table without fields.
|
||||
Is "SELECT 1 FROM DUAL" any better than "SELECT 1" ?
|
||||
|
Loading…
x
Reference in New Issue
Block a user