Commit 1015e182 authored by unknown's avatar unknown

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

into  fedora.(none):/home/reggie/bk/mysql-5.0

parents d67bd210 6eb7a80a
...@@ -32,3 +32,10 @@ a b ...@@ -32,3 +32,10 @@ a b
3 d 3 d
4 e 4 e
drop table t1; drop table t1;
create table t1 (a int not null primary key);
insert into t1 values (1);
insert delayed into t1 values (1);
select * from t1;
a
1
drop table t1;
...@@ -152,3 +152,16 @@ ceil(0.09) ...@@ -152,3 +152,16 @@ ceil(0.09)
select ceil(0.000000000000000009); select ceil(0.000000000000000009);
ceil(0.000000000000000009) ceil(0.000000000000000009)
1 1
create table t1 select round(1, 6);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`round(1, 6)` decimal(7,6) NOT NULL default '0.000000'
) ENGINE=MyISAM DEFAULT CHARSET=latin1
select * from t1;
round(1, 6)
1.000000
drop table t1;
select abs(-2) * -2;
abs(-2) * -2
-4
...@@ -23,13 +23,13 @@ SELECT @@global.default.key_buffer_size; ...@@ -23,13 +23,13 @@ SELECT @@global.default.key_buffer_size;
@@global.default.key_buffer_size @@global.default.key_buffer_size
16777216 16777216
SELECT @@global.default.`key_buffer_size`; SELECT @@global.default.`key_buffer_size`;
@@global.default.key_buffer_size @@global.default.`key_buffer_size`
16777216 16777216
SELECT @@global.`default`.`key_buffer_size`; SELECT @@global.`default`.`key_buffer_size`;
@@global.default.key_buffer_size @@global.`default`.`key_buffer_size`
16777216 16777216
SELECT @@`default`.key_buffer_size; SELECT @@`default`.key_buffer_size;
@@default.key_buffer_size @@`default`.key_buffer_size
16777216 16777216
SELECT @@small.key_buffer_size; SELECT @@small.key_buffer_size;
@@small.key_buffer_size @@small.key_buffer_size
......
...@@ -349,7 +349,7 @@ execute stmt1 ; ...@@ -349,7 +349,7 @@ execute stmt1 ;
ERROR 42S02: Unknown table 't5' ERROR 42S02: Unknown table 't5'
prepare stmt1 from ' SELECT @@version ' ; prepare stmt1 from ' SELECT @@version ' ;
execute stmt1 ; execute stmt1 ;
@@VERSION @@version
<version> <version>
prepare stmt_do from ' do @var:= (1 in (select a from t1)) ' ; prepare stmt_do from ' do @var:= (1 in (select a from t1)) ' ;
prepare stmt_set from ' set @var= (1 in (select a from t1)) ' ; prepare stmt_set from ' set @var= (1 in (select a from t1)) ' ;
......
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl';
stop slave;
change master to master_user='rpl',master_password='rpl';
start slave;
drop table if exists t1;
create table t1 (n int);
insert into t1 values (1);
select * from t1;
n
1
delete from mysql.user where user='rpl';
flush privileges;
stop slave;
start slave;
show slave status;
Slave_IO_State Connecting to master
Master_Host 127.0.0.1
Master_User rpl
Master_Port MASTER_MYPORT
Connect_Retry 1
Master_Log_File master-bin.000001
Read_Master_Log_Pos 357
Relay_Log_File slave-relay-bin.000001
Relay_Log_Pos 401
Relay_Master_Log_File master-bin.000001
Slave_IO_Running No
Slave_SQL_Running Yes
Replicate_Do_DB
Replicate_Ignore_DB
Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
Exec_Master_Log_Pos 357
Relay_Log_Space 401
Until_Condition None
Until_Log_File
Until_Log_Pos 0
Master_SSL_Allowed No
Master_SSL_CA_File
Master_SSL_CA_Path
Master_SSL_Cert
Master_SSL_Cipher
Master_SSL_Key
Seconds_Behind_Master NULL
...@@ -183,6 +183,30 @@ set session @honk=99; ...@@ -183,6 +183,30 @@ set session @honk=99;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@honk=99' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@honk=99' at line 1
set one_shot @honk=99; set one_shot @honk=99;
ERROR HY000: The 'SET ONE_SHOT' syntax is reserved for purposes internal to the MySQL server ERROR HY000: The 'SET ONE_SHOT' syntax is reserved for purposes internal to the MySQL server
select @@local.max_allowed_packet;
@@local.max_allowed_packet
#
select @@session.max_allowed_packet;
@@session.max_allowed_packet
#
select @@global.max_allowed_packet;
@@global.max_allowed_packet
#
select @@max_allowed_packet;
@@max_allowed_packet
#
select @@Max_Allowed_Packet;
@@Max_Allowed_Packet
#
select @@version;
@@version
#
select @@global.version;
@@global.version
#
select @@session.VERSION;
@@session.VERSION
#
set @first_var= NULL; set @first_var= NULL;
create table t1 select @first_var; create table t1 select @first_var;
show create table t1; show create table t1;
......
...@@ -92,7 +92,7 @@ Variable_name Value ...@@ -92,7 +92,7 @@ Variable_name Value
max_join_size HA_POS_ERROR max_join_size HA_POS_ERROR
set @@max_join_size=1000, @@global.max_join_size=2000; set @@max_join_size=1000, @@global.max_join_size=2000;
select @@local.max_join_size, @@global.max_join_size; select @@local.max_join_size, @@global.max_join_size;
@@session.max_join_size @@global.max_join_size @@local.max_join_size @@global.max_join_size
1000 2000 1000 2000
select @@identity, length(@@version)>0; select @@identity, length(@@version)>0;
@@identity length(@@version)>0 @@identity length(@@version)>0
...@@ -428,23 +428,23 @@ Variable_name Value ...@@ -428,23 +428,23 @@ Variable_name Value
myisam_max_sort_file_size MAX_FILE_SIZE myisam_max_sort_file_size MAX_FILE_SIZE
set global myisam_max_sort_file_size=default; set global myisam_max_sort_file_size=default;
select @@global.max_user_connections,@@local.max_join_size; select @@global.max_user_connections,@@local.max_join_size;
@@global.max_user_connections @@session.max_join_size @@global.max_user_connections @@local.max_join_size
100 200 100 200
set @svc=@@global.max_user_connections, @svj=@@local.max_join_size; set @svc=@@global.max_user_connections, @svj=@@local.max_join_size;
select @@global.max_user_connections,@@local.max_join_size; select @@global.max_user_connections,@@local.max_join_size;
@@global.max_user_connections @@session.max_join_size @@global.max_user_connections @@local.max_join_size
100 200 100 200
set @@global.max_user_connections=111,@@local.max_join_size=222; set @@global.max_user_connections=111,@@local.max_join_size=222;
select @@global.max_user_connections,@@local.max_join_size; select @@global.max_user_connections,@@local.max_join_size;
@@global.max_user_connections @@session.max_join_size @@global.max_user_connections @@local.max_join_size
111 222 111 222
set @@global.max_user_connections=@@local.max_join_size,@@local.max_join_size=@@global.max_user_connections; set @@global.max_user_connections=@@local.max_join_size,@@local.max_join_size=@@global.max_user_connections;
select @@global.max_user_connections,@@local.max_join_size; select @@global.max_user_connections,@@local.max_join_size;
@@global.max_user_connections @@session.max_join_size @@global.max_user_connections @@local.max_join_size
222 111 222 111
set @@global.max_user_connections=@svc, @@local.max_join_size=@svj; set @@global.max_user_connections=@svc, @@local.max_join_size=@svj;
select @@global.max_user_connections,@@local.max_join_size; select @@global.max_user_connections,@@local.max_join_size;
@@global.max_user_connections @@session.max_join_size @@global.max_user_connections @@local.max_join_size
100 200 100 200
set @a=1, @b=2; set @a=1, @b=2;
set @a=@b, @b=@a; set @a=@b, @b=@a;
......
...@@ -38,3 +38,12 @@ select * from t1; ...@@ -38,3 +38,12 @@ select * from t1;
drop table t1; drop table t1;
# End of 4.1 tests # End of 4.1 tests
#
# Bug #12226: Crash when a delayed insert fails due to a duplicate key
#
create table t1 (a int not null primary key);
insert into t1 values (1);
insert delayed into t1 values (1);
select * from t1;
drop table t1;
...@@ -93,3 +93,18 @@ select round(150, 2); ...@@ -93,3 +93,18 @@ select round(150, 2);
select ceil(0.09); select ceil(0.09);
select ceil(0.000000000000000009); select ceil(0.000000000000000009);
#
# Bug #9837: problem with round()
#
create table t1 select round(1, 6);
show create table t1;
select * from t1;
drop table t1;
#
# Bug #11402: abs() forces rest of calculation to unsigned
#
select abs(-2) * -2;
# End of 4.1 tests
# Test case for BUG #10780
source include/master-slave.inc
connection master;
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl';
connection slave;
stop slave;
change master to master_user='rpl',master_password='rpl';
start slave;
connection master;
--disable_warnings
drop table if exists t1;
--enable_warning
create table t1 (n int);
insert into t1 values (1);
save_master_pos;
connection slave;
sync_with_master;
select * from t1;
connection master;
delete from mysql.user where user='rpl';
flush privileges;
connection slave;
stop slave;
start slave;
--replace_result $MASTER_MYPORT MASTER_MYPORT
--vertical_results
show slave status;
# end of 4.1 tests
...@@ -121,6 +121,27 @@ set session @honk=99; ...@@ -121,6 +121,27 @@ set session @honk=99;
--error 1382 --error 1382
set one_shot @honk=99; set one_shot @honk=99;
#
# Bug #10724 @@local not preserved in column name of select
#
# The value doesn't actually matter, we just care about the column name
--replace_column 1 #
select @@local.max_allowed_packet;
--replace_column 1 #
select @@session.max_allowed_packet;
--replace_column 1 #
select @@global.max_allowed_packet;
--replace_column 1 #
select @@max_allowed_packet;
--replace_column 1 #
select @@Max_Allowed_Packet;
--replace_column 1 #
select @@version;
--replace_column 1 #
select @@global.version;
--replace_column 1 #
select @@session.VERSION;
# End of 4.1 tests # End of 4.1 tests
# #
......
...@@ -1368,8 +1368,6 @@ my_decimal *Item_func_abs::decimal_op(my_decimal *decimal_value) ...@@ -1368,8 +1368,6 @@ my_decimal *Item_func_abs::decimal_op(my_decimal *decimal_value)
void Item_func_abs::fix_length_and_dec() void Item_func_abs::fix_length_and_dec()
{ {
Item_func_num1::fix_length_and_dec(); Item_func_num1::fix_length_and_dec();
if (hybrid_type == INT_RESULT)
unsigned_flag= 1;
} }
...@@ -4437,7 +4435,7 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name, ...@@ -4437,7 +4435,7 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name,
if (component.str == 0 && if (component.str == 0 &&
!my_strcasecmp(system_charset_info, name.str, "VERSION")) !my_strcasecmp(system_charset_info, name.str, "VERSION"))
return new Item_string("@@VERSION", server_version, return new Item_string(NULL, server_version,
(uint) strlen(server_version), (uint) strlen(server_version),
system_charset_info, DERIVATION_SYSCONST); system_charset_info, DERIVATION_SYSCONST);
...@@ -4464,28 +4462,10 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name, ...@@ -4464,28 +4462,10 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name,
} }
thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
buff[0]='@';
buff[1]='@';
pos=buff+2;
if (var_type == OPT_SESSION)
pos=strmov(pos,"session.");
else if (var_type == OPT_GLOBAL)
pos=strmov(pos,"global.");
set_if_smaller(component_name->length, MAX_SYS_VAR_LENGTH); set_if_smaller(component_name->length, MAX_SYS_VAR_LENGTH);
set_if_smaller(base_name->length, MAX_SYS_VAR_LENGTH);
if (component_name->str)
{
memcpy(pos, component_name->str, component_name->length);
pos+= component_name->length;
*pos++= '.';
}
memcpy(pos, base_name->str, base_name->length);
pos+= base_name->length;
return new Item_func_get_system_var(var, var_type, component_name, return new Item_func_get_system_var(var, var_type, component_name,
buff, pos - buff); NULL, 0);
} }
......
...@@ -2396,7 +2396,8 @@ bool show_master_info(THD* thd, MASTER_INFO* mi) ...@@ -2396,7 +2396,8 @@ bool show_master_info(THD* thd, MASTER_INFO* mi)
&my_charset_bin); &my_charset_bin);
protocol->store((ulonglong) mi->rli.group_relay_log_pos); protocol->store((ulonglong) mi->rli.group_relay_log_pos);
protocol->store(mi->rli.group_master_log_name, &my_charset_bin); protocol->store(mi->rli.group_master_log_name, &my_charset_bin);
protocol->store(mi->slave_running ? "Yes":"No", &my_charset_bin); protocol->store(mi->slave_running == MYSQL_SLAVE_RUN_CONNECT
? "Yes":"No", &my_charset_bin);
protocol->store(mi->rli.slave_running ? "Yes":"No", &my_charset_bin); protocol->store(mi->rli.slave_running ? "Yes":"No", &my_charset_bin);
protocol->store(&replicate_do_db); protocol->store(&replicate_do_db);
protocol->store(&replicate_ignore_db); protocol->store(&replicate_ignore_db);
......
...@@ -1320,7 +1320,6 @@ sp_head::show_create_function(THD *thd) ...@@ -1320,7 +1320,6 @@ sp_head::show_create_function(THD *thd)
String buffer(buff, sizeof(buff), system_charset_info); String buffer(buff, sizeof(buff), system_charset_info);
int res; int res;
List<Item> field_list; List<Item> field_list;
sys_var *sql_mode_var;
byte *sql_mode_str; byte *sql_mode_str;
ulong sql_mode_len; ulong sql_mode_len;
bool full_access; bool full_access;
...@@ -1337,8 +1336,7 @@ sp_head::show_create_function(THD *thd) ...@@ -1337,8 +1336,7 @@ sp_head::show_create_function(THD *thd)
m_sql_mode, m_sql_mode,
&sql_mode_len); &sql_mode_len);
field_list.push_back(new Item_empty_string("Function",NAME_LEN)); field_list.push_back(new Item_empty_string("Function",NAME_LEN));
if (sql_mode_var) field_list.push_back(new Item_empty_string("sql_mode", sql_mode_len));
field_list.push_back(new Item_empty_string("sql_mode", sql_mode_len));
field_list.push_back(new Item_empty_string("Create Function", field_list.push_back(new Item_empty_string("Create Function",
max(buffer.length(),1024))); max(buffer.length(),1024)));
if (protocol->send_fields(&field_list, if (protocol->send_fields(&field_list,
......
...@@ -1088,7 +1088,9 @@ ok_or_after_trg_err: ...@@ -1088,7 +1088,9 @@ ok_or_after_trg_err:
err: err:
info->last_errno= error; info->last_errno= error;
thd->lex->current_select->no_error= 0; // Give error /* current_select is NULL if this is a delayed insert */
if (thd->lex->current_select)
thd->lex->current_select->no_error= 0; // Give error
table->file->print_error(error,MYF(0)); table->file->print_error(error,MYF(0));
before_trg_err: before_trg_err:
......
...@@ -193,7 +193,7 @@ static int get_or_create_user_conn(THD *thd, const char *user, ...@@ -193,7 +193,7 @@ static int get_or_create_user_conn(THD *thd, const char *user,
const char *host, const char *host,
USER_RESOURCES *mqh) USER_RESOURCES *mqh)
{ {
int return_val=0; int return_val= 0;
uint temp_len, user_len; uint temp_len, user_len;
char temp_user[USERNAME_LENGTH+HOSTNAME_LENGTH+2]; char temp_user[USERNAME_LENGTH+HOSTNAME_LENGTH+2];
struct user_conn *uc; struct user_conn *uc;
...@@ -201,7 +201,7 @@ static int get_or_create_user_conn(THD *thd, const char *user, ...@@ -201,7 +201,7 @@ static int get_or_create_user_conn(THD *thd, const char *user,
DBUG_ASSERT(user != 0); DBUG_ASSERT(user != 0);
DBUG_ASSERT(host != 0); DBUG_ASSERT(host != 0);
user_len=strlen(user); user_len= strlen(user);
temp_len= (strmov(strmov(temp_user, user)+1, host) - temp_user)+1; temp_len= (strmov(strmov(temp_user, user)+1, host) - temp_user)+1;
(void) pthread_mutex_lock(&LOCK_user_conn); (void) pthread_mutex_lock(&LOCK_user_conn);
if (!(uc = (struct user_conn *) hash_search(&hash_user_connections, if (!(uc = (struct user_conn *) hash_search(&hash_user_connections,
...@@ -213,21 +213,21 @@ static int get_or_create_user_conn(THD *thd, const char *user, ...@@ -213,21 +213,21 @@ static int get_or_create_user_conn(THD *thd, const char *user,
MYF(MY_WME))))) MYF(MY_WME)))))
{ {
net_send_error(thd, 0, NullS); // Out of memory net_send_error(thd, 0, NullS); // Out of memory
return_val=1; return_val= 1;
goto end; goto end;
} }
uc->user=(char*) (uc+1); uc->user=(char*) (uc+1);
memcpy(uc->user,temp_user,temp_len+1); memcpy(uc->user,temp_user,temp_len+1);
uc->host= uc->user + user_len + 1; uc->host= uc->user + user_len + 1;
uc->len = temp_len; uc->len= temp_len;
uc->connections= uc->questions= uc->updates= uc->conn_per_hour= 0; uc->connections= uc->questions= uc->updates= uc->conn_per_hour= 0;
uc->user_resources=*mqh; uc->user_resources= *mqh;
uc->intime=thd->thr_create_time; uc->intime= thd->thr_create_time;
if (my_hash_insert(&hash_user_connections, (byte*) uc)) if (my_hash_insert(&hash_user_connections, (byte*) uc))
{ {
my_free((char*) uc,0); my_free((char*) uc,0);
net_send_error(thd, 0, NullS); // Out of memory net_send_error(thd, 0, NullS); // Out of memory
return_val=1; return_val= 1;
goto end; goto end;
} }
} }
...@@ -5305,6 +5305,8 @@ void create_select_for_variable(const char *var_name) ...@@ -5305,6 +5305,8 @@ void create_select_for_variable(const char *var_name)
THD *thd; THD *thd;
LEX *lex; LEX *lex;
LEX_STRING tmp, null_lex_string; LEX_STRING tmp, null_lex_string;
Item *var;
char buff[MAX_SYS_VAR_LENGTH*2+4+8], *end;
DBUG_ENTER("create_select_for_variable"); DBUG_ENTER("create_select_for_variable");
thd= current_thd; thd= current_thd;
...@@ -5314,8 +5316,14 @@ void create_select_for_variable(const char *var_name) ...@@ -5314,8 +5316,14 @@ void create_select_for_variable(const char *var_name)
tmp.str= (char*) var_name; tmp.str= (char*) var_name;
tmp.length=strlen(var_name); tmp.length=strlen(var_name);
bzero((char*) &null_lex_string.str, sizeof(null_lex_string)); bzero((char*) &null_lex_string.str, sizeof(null_lex_string));
add_item_to_list(thd, get_system_var(thd, OPT_SESSION, tmp, /*
null_lex_string)); We set the name of Item to @@session.var_name because that then is used
as the column name in the output.
*/
var= get_system_var(thd, OPT_SESSION, tmp, null_lex_string);
end= strxmov(buff, "@@session.", var_name, NullS);
var->set_name(buff, end-buff, system_charset_info);
add_item_to_list(thd, var);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
......
...@@ -29,7 +29,6 @@ Source: http://www.mysql.com/Downloads/MySQL-@MYSQL_BASE_VERSION@/mysql-%{mysql ...@@ -29,7 +29,6 @@ Source: http://www.mysql.com/Downloads/MySQL-@MYSQL_BASE_VERSION@/mysql-%{mysql
URL: http://www.mysql.com/ URL: http://www.mysql.com/
Packager: Lenz Grimmer <build@mysql.com> Packager: Lenz Grimmer <build@mysql.com>
Vendor: MySQL AB Vendor: MySQL AB
Requires: fileutils sh-utils
Provides: msqlormysql MySQL-server mysql Provides: msqlormysql MySQL-server mysql
BuildRequires: ncurses-devel BuildRequires: ncurses-devel
Obsoletes: mysql Obsoletes: mysql
...@@ -60,7 +59,7 @@ documentation and the manual for more information. ...@@ -60,7 +59,7 @@ documentation and the manual for more information.
%package server %package server
Summary: MySQL: a very fast and reliable SQL database server Summary: MySQL: a very fast and reliable SQL database server
Group: Applications/Databases Group: Applications/Databases
Requires: fileutils sh-utils Requires: coreutils grep procps /usr/sbin/useradd /usr/sbin/groupadd /sbin/chkconfig
Provides: msqlormysql mysql-server mysql MySQL Provides: msqlormysql mysql-server mysql MySQL
Obsoletes: MySQL mysql mysql-server Obsoletes: MySQL mysql mysql-server
...@@ -669,6 +668,10 @@ fi ...@@ -669,6 +668,10 @@ fi
# itself - note that they must be ordered by date (important when # itself - note that they must be ordered by date (important when
# merging BK trees) # merging BK trees)
%changelog %changelog
* Tue Aug 02 2005 Lenz Grimmer <lenz@mysql.com>
- Fixed the Requires: tag for the server RPM (BUG 12233)
* Fri Jul 15 2005 Lenz Grimmer <lenz@mysql.com> * Fri Jul 15 2005 Lenz Grimmer <lenz@mysql.com>
- create a "mysql" user group and assign the mysql user account to that group - create a "mysql" user group and assign the mysql user account to that group
......
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