Commit d0722d73 authored by monty@donna.mysql.fi's avatar monty@donna.mysql.fi

Added fix for using variables with distinct

parent 1bd0d416
......@@ -2459,6 +2459,9 @@ A Windows GUI client by David Ecker.
Kiosk; a @strong{MySQL} client for database management. Written in Perl.
Will be a part of Bazaar.
@item @uref{http://www.casestudio.com/}
Db design tool that supports MySQL 3.23.
@item @uref{http://home.skif.net/~voland/zeos/eng/index.html}@*
Zeos - A client that supports @strong{MySQL}, Interbase and PostgreSQL.
......@@ -42152,6 +42155,8 @@ Fixed newly introduce bug in @code{ORDER BY}.
Fixed wrong define @code{CLIENT_TRANSACTIONS}.
@item
Fixed bug in @code{SHOW VARIABLES} when using INNOBASE tables.
@item
Setting and using user variables in @code{SELECT DISTINCT} didn't work.
@end itemize
@node News-3.23.34a, News-3.23.34, News-3.23.35, News-3.23.x
......@@ -43,7 +43,7 @@
**********************************************************************/
#define MTEST_VERSION "1.6"
#define MTEST_VERSION "1.7"
#include <global.h>
#include <my_sys.h>
......@@ -156,6 +156,7 @@ struct st_query
Q_SYNC_WITH_MASTER, Q_ERROR,
Q_SEND, Q_REAP,
Q_DIRTY_CLOSE, Q_REPLACE,
Q_PING,
Q_UNKNOWN, /* Unknown command. */
Q_COMMENT, /* Comments, ignored. */
Q_COMMENT_WITH_COMMAND
......@@ -174,6 +175,7 @@ const char *command_names[] = {
"sync_with_master", "error",
"send", "reap",
"dirty_close", "replace_result",
"ping",
0
};
......@@ -1662,6 +1664,9 @@ int main(int argc, char** argv)
case Q_SYNC_WITH_MASTER: do_sync_with_master(q); break;
case Q_COMMENT: /* Ignore row */
case Q_COMMENT_WITH_COMMAND:
case Q_PING:
(void) mysql_ping(&cur_con->mysql);
break;
default: processed = 0; break;
}
}
......
......@@ -4,7 +4,7 @@ dnl Process this file with autoconf to produce a configure script.
AC_INIT(sql/mysqld.cc)
AC_CANONICAL_SYSTEM
# The Docs Makefile.am parses this line!
AM_INIT_AUTOMAKE(mysql, 3.23.34a)
AM_INIT_AUTOMAKE(mysql, 3.23.35)
AM_CONFIG_HEADER(config.h)
PROTOCOL_VERSION=10
......
@a - connection_id()
3
i
1
2
i @vv1:=if(sv1.i,1,0) @vv2:=if(sv2.i,1,0) @vv3:=if(sv3.i,1,0) @vv1+@vv2+@vv3
1 1 0 1 2
2 1 0 0 1
......@@ -3,21 +3,24 @@ connect (con2, localhost, root,,test,0, mysql-master.sock);
#remember id of con1
connection con1;
drop table if exists connection_kill;
create table connection_kill (kill_id int);
insert into connection_kill values(connection_id());
drop table if exists t1;
create table t1 (kill_id int);
insert into t1 values(connection_id());
#kill con1
connection con2;
select ((@id := kill_id) - kill_id) from connection_kill;
select ((@id := kill_id) - kill_id) from t1;
kill @id;
# verify that con1 is really dead
# Wait for thread to do.
--sleep 5
# verify that con1 is doning a reconnect
connection con1;
error 2013;
select 1;
ping
ping
select @id != connection_id();
#make sure the server is still alive
connection con2;
select 4;
drop table connection_kill;
drop table t1;
......@@ -3,3 +3,13 @@ set @a := foo;
set @a := connection_id() + 3;
select @a - connection_id();
# Check using and setting variables with SELECT DISTINCT
drop table if exists t1,t2;
CREATE TABLE t1 ( i int not null, v int not null,index (i));
insert into t1 values (1,1),(1,3),(2,1);
create table t2 (i int not null, unique (i));
insert into t2 select distinct i from t1;
select * from t2;
select distinct t2.i,@vv1:=if(sv1.i,1,0),@vv2:=if(sv2.i,1,0),@vv3:=if(sv3.i,1,0), @vv1+@vv2+@vv3 from t2 left join t1 as sv1 on sv1.i=t2.i and sv1.v=1 left join t1 as sv2 on sv2.i=t2.i and sv2.v=2 left join t1 as sv3 on sv3.i=t2.i and sv3.v=3;
drop table t1,t2;
......@@ -37,6 +37,7 @@ use DBI;
$opt_silent=1; # Don't write header
@ORG_ARGV=@ARGV;
chomp($pwd = `pwd`); $pwd = "." if ($pwd eq '');
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
$opt_silent=0;
......@@ -46,7 +47,7 @@ $redirect= !($machine =~ /windows/i || $machine =~ "^NT\s") ? "2>&1" : "";
$dir= ($pwd =~ /\\/) ? '\\' : '/'; # directory symbol for shell
$prog_args="";
foreach $arg (@ARGV)
foreach $arg (@ORG_ARGV)
{
if ($redirect)
{
......
......@@ -835,6 +835,8 @@ public:
void fix_length_and_dec();
enum Item_result result_type() const;
const char *func_name() const { return "get_user_var"; }
bool const_item() const { return 0; }
table_map used_tables() const { return RAND_TABLE_BIT; }
};
class Item_func_inet_aton : public Item_int_func
......
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