Commit d189b4a6 authored by unknown's avatar unknown

Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0

into poseidon.ndb.mysql.com:/home/tomas/mysql-5.0


client/mysql.cc:
  Auto merged
myisam/mi_open.c:
  Auto merged
parents e3cf43d3 04b1881c
...@@ -197,6 +197,7 @@ ram@mysql.r18.ru ...@@ -197,6 +197,7 @@ ram@mysql.r18.ru
ram@ram.(none) ram@ram.(none)
ranger@regul.home.lan ranger@regul.home.lan
rburnett@build.mysql.com rburnett@build.mysql.com
reggie@bob.(none)
root@home.(none) root@home.(none)
root@mc04.(none) root@mc04.(none)
root@x3.internalnet root@x3.internalnet
......
...@@ -87,7 +87,7 @@ $BUILDDIR= "$PWD/$HOST"; ...@@ -87,7 +87,7 @@ $BUILDDIR= "$PWD/$HOST";
$PREFPANE= "$PWD/mysql-administrator/source/mac/PreferencePane/build/MySQL.prefPane"; $PREFPANE= "$PWD/mysql-administrator/source/mac/PreferencePane/build/MySQL.prefPane";
$SRCBASEDIR= <$BUILDDIR/mysql*-$VERSION>; $SRCBASEDIR= <$BUILDDIR/mysql*-$VERSION>;
$SUPFILEDIR= <$SRCBASEDIR/support-files/MacOSX>; $SUPFILEDIR= <$SRCBASEDIR/support-files/MacOSX>;
$TAR= <$BUILDDIR/$NAME-apple-darwin*-powerpc.tar.gz>; $TAR= <$BUILDDIR/$NAME-apple-darwin*-powerpc*.tar.gz>;
$TAR =~ /.*\/$NAME(.*)\.tar\.gz$/; $TAR =~ /.*\/$NAME(.*)\.tar\.gz$/;
$ARCH= $1; $ARCH= $1;
$NAME= $NAME . $ARCH; $NAME= $NAME . $ARCH;
......
...@@ -3234,13 +3234,20 @@ static const char* construct_prompt() ...@@ -3234,13 +3234,20 @@ static const char* construct_prompt()
break; break;
} }
case 'p': case 'p':
{
#ifndef EMBEDDED_LIBRARY #ifndef EMBEDDED_LIBRARY
if (!connected) if (!connected)
{ {
processed_prompt.append("not_connected"); processed_prompt.append("not_connected");
break; break;
} }
if (strstr(mysql_get_host_info(&mysql),"TCP/IP") ||
const char *host_info = mysql_get_host_info(&mysql);
if (strstr(host_info, "memory"))
{
processed_prompt.append( mysql.host );
}
else if (strstr(host_info,"TCP/IP") ||
!mysql.unix_socket) !mysql.unix_socket)
add_int_to_prompt(mysql.port); add_int_to_prompt(mysql.port);
else else
...@@ -3249,6 +3256,7 @@ static const char* construct_prompt() ...@@ -3249,6 +3256,7 @@ static const char* construct_prompt()
processed_prompt.append(pos ? pos+1 : mysql.unix_socket); processed_prompt.append(pos ? pos+1 : mysql.unix_socket);
} }
#endif #endif
}
break; break;
case 'U': case 'U':
if (!full_username) if (!full_username)
......
...@@ -305,6 +305,9 @@ static struct my_option my_long_options[] = ...@@ -305,6 +305,9 @@ static struct my_option my_long_options[] =
{"opt", OPT_OPTIMIZE, {"opt", OPT_OPTIMIZE,
"Same as --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, and --disable-keys. Enabled by default, disable with --skip-opt.", "Same as --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, and --disable-keys. Enabled by default, disable with --skip-opt.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"order-by-primary", OPT_ORDER_BY_PRIMARY,
"Sorts each table's rows by primary key, or first unique key, if such a key exists. Useful when dumping a MyISAM table to be loaded into an InnoDB table, but will make the dump itself take considerably longer.",
(gptr*) &opt_order_by_primary, (gptr*) &opt_order_by_primary, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"password", 'p', {"password", 'p',
"Password to use when connecting to server. If password is not given it's solicited on the tty.", "Password to use when connecting to server. If password is not given it's solicited on the tty.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
...@@ -356,9 +359,6 @@ static struct my_option my_long_options[] = ...@@ -356,9 +359,6 @@ static struct my_option my_long_options[] =
{"socket", 'S', "Socket file to use for connection.", {"socket", 'S', "Socket file to use for connection.",
(gptr*) &opt_mysql_unix_port, (gptr*) &opt_mysql_unix_port, 0, GET_STR, (gptr*) &opt_mysql_unix_port, (gptr*) &opt_mysql_unix_port, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"order-by-primary", OPT_ORDER_BY_PRIMARY,
"Sorts each table's rows by primary key, or first unique key, if such a key exists. Useful when dumping a MyISAM table to be loaded into an InnoDB table, but will make the dump itself take considerably longer.",
(gptr*) &opt_order_by_primary, (gptr*) &opt_order_by_primary, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#include <sslopt-longopts.h> #include <sslopt-longopts.h>
{"tab",'T', {"tab",'T',
"Creates tab separated textfile for each table to given path. (creates .sql and .txt files). NOTE: This only works if mysqldump is run on the same machine as the mysqld daemon.", "Creates tab separated textfile for each table to given path. (creates .sql and .txt files). NOTE: This only works if mysqldump is run on the same machine as the mysqld daemon.",
......
...@@ -857,6 +857,7 @@ my_bool handle_local_infile(MYSQL *mysql, const char *net_filename) ...@@ -857,6 +857,7 @@ my_bool handle_local_infile(MYSQL *mysql, const char *net_filename)
err: err:
/* free up memory allocated with _init, usually */ /* free up memory allocated with _init, usually */
(*options->local_infile_end)(li_ptr); (*options->local_infile_end)(li_ptr);
my_free(buf, MYF(0));
DBUG_RETURN(result); DBUG_RETURN(result);
} }
...@@ -1509,7 +1510,7 @@ ulong STDCALL mysql_thread_id(MYSQL *mysql) ...@@ -1509,7 +1510,7 @@ ulong STDCALL mysql_thread_id(MYSQL *mysql)
const char * STDCALL mysql_character_set_name(MYSQL *mysql) const char * STDCALL mysql_character_set_name(MYSQL *mysql)
{ {
return mysql->charset->name; return mysql->charset->csname;
} }
......
...@@ -148,7 +148,7 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags) ...@@ -148,7 +148,7 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
goto err; goto err;
} }
/* Don't call realpath() if the name can't be a link */ /* Don't call realpath() if the name can't be a link */
if (strcmp(name_buff, org_name) || if (!strcmp(name_buff, org_name) ||
my_readlink(index_name, org_name, MYF(0)) == -1) my_readlink(index_name, org_name, MYF(0)) == -1)
(void) strmov(index_name, org_name); (void) strmov(index_name, org_name);
(void) fn_format(data_name,org_name,"",MI_NAME_DEXT,2+4+16); (void) fn_format(data_name,org_name,"",MI_NAME_DEXT,2+4+16);
......
...@@ -849,3 +849,15 @@ utf8_bin 6109 ...@@ -849,3 +849,15 @@ utf8_bin 6109
utf8_bin 61 utf8_bin 61
utf8_bin 6120 utf8_bin 6120
drop table t1; drop table t1;
CREATE TABLE t1 (
user varchar(255) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO t1 VALUES ('one'),('two');
SELECT CHARSET('a');
CHARSET('a')
utf8
SELECT user, CONCAT('<', user, '>') AS c FROM t1;
user c
one <one>
two <two>
DROP TABLE t1;
...@@ -466,7 +466,7 @@ collation(hex(130)) coercibility(hex(130)) ...@@ -466,7 +466,7 @@ collation(hex(130)) coercibility(hex(130))
latin1_swedish_ci 3 latin1_swedish_ci 3
select collation(char(130)), coercibility(hex(130)); select collation(char(130)), coercibility(hex(130));
collation(char(130)) coercibility(hex(130)) collation(char(130)) coercibility(hex(130))
binary 3 latin1_swedish_ci 3
select collation(format(130,10)), coercibility(format(130,10)); select collation(format(130,10)), coercibility(format(130,10));
collation(format(130,10)) coercibility(format(130,10)) collation(format(130,10)) coercibility(format(130,10))
latin1_swedish_ci 3 latin1_swedish_ci 3
......
...@@ -740,3 +740,41 @@ a b ...@@ -740,3 +740,41 @@ a b
1 2 1 2
1 1 1 1
drop table t1; drop table t1;
create table t1 (
`sid` decimal(8,0) default null,
`wnid` varchar(11) not null default '',
key `wnid14` (`wnid`(4)),
key `wnid` (`wnid`)
) engine=myisam default charset=latin1;
insert into t1 (`sid`, `wnid`) values
('10100','01019000000'),('37986','01019000000'),('37987','01019010000'),
('39560','01019090000'),('37989','01019000000'),('37990','01019011000'),
('37991','01019011000'),('37992','01019019000'),('37993','01019030000'),
('37994','01019090000'),('475','02070000000'),('25253','02071100000'),
('25255','02071100000'),('25256','02071110000'),('25258','02071130000'),
('25259','02071190000'),('25260','02071200000'),('25261','02071210000'),
('25262','02071290000'),('25263','02071300000'),('25264','02071310000'),
('25265','02071310000'),('25266','02071320000'),('25267','02071320000'),
('25269','02071330000'),('25270','02071340000'),('25271','02071350000'),
('25272','02071360000'),('25273','02071370000'),('25281','02071391000'),
('25282','02071391000'),('25283','02071399000'),('25284','02071400000'),
('25285','02071410000'),('25286','02071410000'),('25287','02071420000'),
('25288','02071420000'),('25291','02071430000'),('25290','02071440000'),
('25292','02071450000'),('25293','02071460000'),('25294','02071470000'),
('25295','02071491000'),('25296','02071491000'),('25297','02071499000');
explain select * from t1 where wnid like '0101%' order by wnid;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range wnid14,wnid wnid 13 NULL 10 Using where
select * from t1 where wnid like '0101%' order by wnid;
sid wnid
10100 01019000000
37986 01019000000
37989 01019000000
37987 01019010000
37990 01019011000
37991 01019011000
37992 01019019000
37993 01019030000
39560 01019090000
37994 01019090000
drop table t1;
...@@ -172,23 +172,26 @@ SET TIMESTAMP=10000; ...@@ -172,23 +172,26 @@ SET TIMESTAMP=10000;
SET @`a b`='hello'; SET @`a b`='hello';
INSERT INTO t1 VALUES(@`a b`); INSERT INTO t1 VALUES(@`a b`);
set @var1= "';aaa"; set @var1= "';aaa";
insert into t1 values (@var1); SET @var2=char(ascii('a'));
insert into t1 values (@var1),(@var2);
show binlog events from 95; show binlog events from 95;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 95 User var 1 136 @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci master-bin.000001 95 User var 1 136 @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci
master-bin.000001 136 Query 1 222 use `test`; INSERT INTO t1 VALUES(@`a b`) master-bin.000001 136 Query 1 222 use `test`; INSERT INTO t1 VALUES(@`a b`)
master-bin.000001 222 User var 1 264 @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci master-bin.000001 222 User var 1 264 @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci
master-bin.000001 264 Query 1 350 use `test`; insert into t1 values (@var1) master-bin.000001 264 User var 1 302 @`var2`=_latin1 0x61 COLLATE latin1_swedish_ci
master-bin.000001 302 Query 1 396 use `test`; insert into t1 values (@var1),(@var2)
/*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!40019 SET @@session.max_insert_delayed_threads=0*/;
SET @`a b`:=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci; SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`;
use test; use test;
SET TIMESTAMP=10000; SET TIMESTAMP=10000;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
SET @@session.sql_mode=0; SET @@session.sql_mode=0;
INSERT INTO t1 VALUES(@`a b`); INSERT INTO t1 VALUES(@`a b`);
SET @`var1`:=_latin1 0x273B616161 COLLATE latin1_swedish_ci; SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`;
SET @`var2`:=_latin1 0x61 COLLATE `latin1_swedish_ci`;
SET TIMESTAMP=10000; SET TIMESTAMP=10000;
insert into t1 values (@var1); insert into t1 values (@var1),(@var2);
drop table t1; drop table t1;
set @var= NULL ; set @var= NULL ;
select FIELD( @var,'1it','Hit') as my_column; select FIELD( @var,'1it','Hit') as my_column;
......
...@@ -681,3 +681,15 @@ SET collation_connection='utf8_general_ci'; ...@@ -681,3 +681,15 @@ SET collation_connection='utf8_general_ci';
-- source include/ctype_filesort.inc -- source include/ctype_filesort.inc
SET collation_connection='utf8_bin'; SET collation_connection='utf8_bin';
-- source include/ctype_filesort.inc -- source include/ctype_filesort.inc
#
# Bug #7874 CONCAT() gives wrong results mixing
# latin1 field and utf8 string literals
#
CREATE TABLE t1 (
user varchar(255) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO t1 VALUES ('one'),('two');
SELECT CHARSET('a');
SELECT user, CONCAT('<', user, '>') AS c FROM t1;
DROP TABLE t1;
...@@ -506,3 +506,36 @@ insert t1 values (1,1,1),(1,1,2),(1,2,1); ...@@ -506,3 +506,36 @@ insert t1 values (1,1,1),(1,1,2),(1,2,1);
select a, b from t1 group by a, b order by sum(c); select a, b from t1 group by a, b order by sum(c);
drop table t1; drop table t1;
#
# Bug #7331
#
create table t1 (
`sid` decimal(8,0) default null,
`wnid` varchar(11) not null default '',
key `wnid14` (`wnid`(4)),
key `wnid` (`wnid`)
) engine=myisam default charset=latin1;
insert into t1 (`sid`, `wnid`) values
('10100','01019000000'),('37986','01019000000'),('37987','01019010000'),
('39560','01019090000'),('37989','01019000000'),('37990','01019011000'),
('37991','01019011000'),('37992','01019019000'),('37993','01019030000'),
('37994','01019090000'),('475','02070000000'),('25253','02071100000'),
('25255','02071100000'),('25256','02071110000'),('25258','02071130000'),
('25259','02071190000'),('25260','02071200000'),('25261','02071210000'),
('25262','02071290000'),('25263','02071300000'),('25264','02071310000'),
('25265','02071310000'),('25266','02071320000'),('25267','02071320000'),
('25269','02071330000'),('25270','02071340000'),('25271','02071350000'),
('25272','02071360000'),('25273','02071370000'),('25281','02071391000'),
('25282','02071391000'),('25283','02071399000'),('25284','02071400000'),
('25285','02071410000'),('25286','02071410000'),('25287','02071420000'),
('25288','02071420000'),('25291','02071430000'),('25290','02071440000'),
('25292','02071450000'),('25293','02071460000'),('25294','02071470000'),
('25295','02071491000'),('25296','02071491000'),('25297','02071499000');
explain select * from t1 where wnid like '0101%' order by wnid;
select * from t1 where wnid like '0101%' order by wnid;
drop table t1;
...@@ -49,8 +49,9 @@ check table t9; ...@@ -49,8 +49,9 @@ check table t9;
optimize table t9; optimize table t9;
repair table t9; repair table t9;
alter table t9 add column c int not null; alter table t9 add column c int not null;
--replace_result $MYSQL_TEST_DIR TEST_DIR
show create table t9; #--replace_result $MYSQL_TEST_DIR TEST_DIR
#show create table t9;
# Test renames # Test renames
alter table t9 rename t8, add column d int not null; alter table t9 rename t8, add column d int not null;
...@@ -64,6 +65,9 @@ drop table t1; ...@@ -64,6 +65,9 @@ drop table t1;
# Note that we are using the above table t9 here! # Note that we are using the above table t9 here!
# #
--replace_result $MYSQL_TEST_DIR TEST_DIR
SHOW CREATE TABLE t9;
disable_query_log; disable_query_log;
--error 1103,1103 --error 1103,1103
create table t1 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="tmp"; create table t1 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="tmp";
...@@ -78,9 +82,11 @@ create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, p ...@@ -78,9 +82,11 @@ create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, p
--error 1103,1103 --error 1103,1103
create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="not-hard-path"; create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="not-hard-path";
# Should fail becasue the file t9.MYI already exist in 'run'
--error 1,1 --error 1,1
eval create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="$MYSQL_TEST_DIR/var/run"; eval create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="$MYSQL_TEST_DIR/var/run";
# Should fail becasue the file t9.MYD already exist in 'tmp'
--error 1,1 --error 1,1
eval create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="$MYSQL_TEST_DIR/var/tmp"; eval create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="$MYSQL_TEST_DIR/var/tmp";
enable_query_log; enable_query_log;
......
...@@ -26,9 +26,11 @@ ...@@ -26,9 +26,11 @@
/* /*
Reads the content of a symbolic link Reads the content of a symbolic link
If the file is not a symbolic link, return the original file name in to. If the file is not a symbolic link, return the original file name in to.
Returns: 0 if table was a symlink,
1 if table was a normal file RETURN
-1 on error. 0 If filename was a symlink, (to will be set to value of symlink)
1 If filename was a normal file (to will be set to filename)
-1 on error.
*/ */
int my_readlink(char *to, const char *filename, myf MyFlags) int my_readlink(char *to, const char *filename, myf MyFlags)
...@@ -58,6 +60,7 @@ int my_readlink(char *to, const char *filename, myf MyFlags) ...@@ -58,6 +60,7 @@ int my_readlink(char *to, const char *filename, myf MyFlags)
} }
else else
to[length]=0; to[length]=0;
DBUG_PRINT("exit" ,("result: %d", result));
DBUG_RETURN(result); DBUG_RETURN(result);
#endif /* HAVE_READLINK */ #endif /* HAVE_READLINK */
} }
......
...@@ -187,28 +187,33 @@ public: ...@@ -187,28 +187,33 @@ public:
}; };
void update_max_auto_val(const char *data, int size) { void update_max_auto_val(const char *data, int size) {
Uint64 val= 0; union {
Uint8 u8;
Uint16 u16;
Uint32 u32;
} val;
Uint64 v;
switch(size){ switch(size){
case 8: case 64:
val= *(Uint8*)data; memcpy(&v,data,8);
break;
case 16:
val= *(Uint16*)data;
break;
case 24:
val= (0xffffff)&*(Uint32*)data;
break; break;
case 32: case 32:
val= *(Uint32*)data; memcpy(&val.u32,data,4);
v= val.u32;
break; break;
case 64: case 16:
val= *(Uint64*)data; memcpy(&val.u16,data,2);
v= val.u16;
break;
case 8:
memcpy(&val.u8,data,1);
v= val.u8;
break; break;
default: default:
return; return;
}; };
if(val > m_max_auto_val) if(v > m_max_auto_val)
m_max_auto_val= val; m_max_auto_val= v;
}; };
/** /**
* Get attribute descriptor * Get attribute descriptor
......
...@@ -847,7 +847,10 @@ int merge_many_buff(SORTPARAM *param, uchar *sort_buffer, ...@@ -847,7 +847,10 @@ int merge_many_buff(SORTPARAM *param, uchar *sort_buffer,
} }
close_cached_file(to_file); // This holds old result close_cached_file(to_file); // This holds old result
if (to_file == t_file) if (to_file == t_file)
{
*t_file=t_file2; // Copy result file *t_file=t_file2; // Copy result file
setup_io_cache(t_file);
}
DBUG_RETURN(*maxbuffer >= MERGEBUFF2); /* Return 1 if interrupted */ DBUG_RETURN(*maxbuffer >= MERGEBUFF2); /* Return 1 if interrupted */
} /* merge_many_buff */ } /* merge_many_buff */
......
...@@ -277,7 +277,8 @@ String *Item_func_concat::val_str(String *str) ...@@ -277,7 +277,8 @@ String *Item_func_concat::val_str(String *str)
current_thd->variables.max_allowed_packet); current_thd->variables.max_allowed_packet);
goto null; goto null;
} }
if (res->alloced_length() >= res->length()+res2->length()) if (!args[0]->const_item() &&
res->alloced_length() >= res->length()+res2->length())
{ // Use old buffer { // Use old buffer
res->append(*res2); res->append(*res2);
} }
...@@ -1906,6 +1907,7 @@ b1: str->append((char)(num>>8)); ...@@ -1906,6 +1907,7 @@ b1: str->append((char)(num>>8));
#endif #endif
str->append((char)num); str->append((char)num);
} }
str->set_charset(collation.collation);
str->realloc(str->length()); // Add end 0 (for Purify) str->realloc(str->length()); // Add end 0 (for Purify)
return str; return str;
} }
......
...@@ -4449,9 +4449,11 @@ Disable with --skip-large-pages.", ...@@ -4449,9 +4449,11 @@ Disable with --skip-large-pages.",
Disable with --skip-innodb (will save memory).", Disable with --skip-innodb (will save memory).",
(gptr*) &opt_innodb, (gptr*) &opt_innodb, 0, GET_BOOL, NO_ARG, OPT_INNODB_DEFAULT, 0, 0, (gptr*) &opt_innodb, (gptr*) &opt_innodb, 0, GET_BOOL, NO_ARG, OPT_INNODB_DEFAULT, 0, 0,
0, 0, 0}, 0, 0, 0},
#ifdef HAVE_INNOBASE_DB
{"innodb_checksums", OPT_INNODB_CHECKSUMS, "Enable InnoDB checksums validation (enabled by default). \ {"innodb_checksums", OPT_INNODB_CHECKSUMS, "Enable InnoDB checksums validation (enabled by default). \
Disable with --skip-innodb-checksums.", (gptr*) &innobase_use_checksums, Disable with --skip-innodb-checksums.", (gptr*) &innobase_use_checksums,
(gptr*) &innobase_use_checksums, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, (gptr*) &innobase_use_checksums, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
#endif
{"innodb_data_file_path", OPT_INNODB_DATA_FILE_PATH, {"innodb_data_file_path", OPT_INNODB_DATA_FILE_PATH,
"Path to individual files and their sizes.", "Path to individual files and their sizes.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
......
...@@ -944,6 +944,7 @@ int yylex(void *arg, void *yythd) ...@@ -944,6 +944,7 @@ int yylex(void *arg, void *yythd)
if ((thd->client_capabilities & CLIENT_MULTI_STATEMENTS) && if ((thd->client_capabilities & CLIENT_MULTI_STATEMENTS) &&
(thd->command != COM_PREPARE)) (thd->command != COM_PREPARE))
{ {
lex->safe_to_cache_query= 0;
lex->found_colon= (char*) lex->ptr; lex->found_colon= (char*) lex->ptr;
thd->server_status|= SERVER_MORE_RESULTS_EXISTS; thd->server_status|= SERVER_MORE_RESULTS_EXISTS;
lex->next_state= MY_LEX_END; lex->next_state= MY_LEX_END;
......
...@@ -10426,15 +10426,24 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit, ...@@ -10426,15 +10426,24 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
} }
else else
{ {
select->quick->head->file->ha_index_end(); /*
/* The range optimizer constructed QUICK_RANGE for ref_key, and
We have verified above that select->quick is not we want to use instead new_ref_key as the index. We can't
index_merge quick select. just change the index of the quick select, because this may
*/ result in an incosistent QUICK_SELECT object. Below we
select->quick->index= new_ref_key; create a new QUICK_SELECT from scratch so that all its
select->quick->init(); parameres are set correctly by the range optimizer.
*/
key_map new_ref_key_map;
new_ref_key_map.clear_all(); /* Force the creation of quick select */
new_ref_key_map.set_bit(new_ref_key); /* only for new_ref_key. */
if (select->test_quick_select(tab->join->thd, new_ref_key_map, 0,
(tab->join->select_options & OPTION_FOUND_ROWS) ?
HA_POS_ERROR : tab->join->unit->select_limit_cnt) <= 0)
DBUG_RETURN(0);
} }
ref_key= new_ref_key; ref_key= new_ref_key;
} }
} }
/* Check if we get the rows in requested sorted order by using the key */ /* Check if we get the rows in requested sorted order by using the key */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment