summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <jimw@mysql.com>2005-08-01 17:10:35 -0700
committerunknown <jimw@mysql.com>2005-08-01 17:10:35 -0700
commita69ca6dc99826bbfdb8f10bde508504eceab15ae (patch)
tree8eb51545a5ac4d0d91caef1c4b86925516ee27a3
parent275150580bdc867dbcc0c58d23d152f94b2bb4f7 (diff)
parentf8a6e9d369c2dcf738393ec0d7c54c9a7605156d (diff)
downloadmariadb-git-a69ca6dc99826bbfdb8f10bde508504eceab15ae.tar.gz
Merge mysql.com:/home/jimw/my/mysql-4.1-10724
into mysql.com:/home/jimw/my/mysql-4.1-clean sql/item_func.cc: Auto merged sql/sql_parse.cc: Auto merged mysql-test/t/user_var.test: Resolve conflict
-rw-r--r--mysql-test/r/key_cache.result6
-rw-r--r--mysql-test/r/ps_1general.result2
-rw-r--r--mysql-test/r/user_var.result24
-rw-r--r--mysql-test/r/variables.result12
-rw-r--r--mysql-test/t/user_var.test21
-rw-r--r--sql/item_func.cc22
-rw-r--r--sql/sql_parse.cc12
7 files changed, 67 insertions, 32 deletions
diff --git a/mysql-test/r/key_cache.result b/mysql-test/r/key_cache.result
index 79b5a6e84b2..41aaa21eea3 100644
--- a/mysql-test/r/key_cache.result
+++ b/mysql-test/r/key_cache.result
@@ -23,13 +23,13 @@ SELECT @@global.default.key_buffer_size;
@@global.default.key_buffer_size
16777216
SELECT @@global.default.`key_buffer_size`;
-@@global.default.key_buffer_size
+@@global.default.`key_buffer_size`
16777216
SELECT @@global.`default`.`key_buffer_size`;
-@@global.default.key_buffer_size
+@@global.`default`.`key_buffer_size`
16777216
SELECT @@`default`.key_buffer_size;
-@@default.key_buffer_size
+@@`default`.key_buffer_size
16777216
SELECT @@small.key_buffer_size;
@@small.key_buffer_size
diff --git a/mysql-test/r/ps_1general.result b/mysql-test/r/ps_1general.result
index 97af043d4f2..c4ccdf9eb34 100644
--- a/mysql-test/r/ps_1general.result
+++ b/mysql-test/r/ps_1general.result
@@ -332,7 +332,7 @@ execute stmt1 ;
ERROR 42S02: Unknown table 't5'
prepare stmt1 from ' SELECT @@version ' ;
execute stmt1 ;
-@@VERSION
+@@version
<version>
prepare stmt_do from ' do @var:= (1 in (select a from t1)) ' ;
prepare stmt_set from ' set @var= (1 in (select a from t1)) ' ;
diff --git a/mysql-test/r/user_var.result b/mysql-test/r/user_var.result
index e42849abdf1..58b785d1432 100644
--- a/mysql-test/r/user_var.result
+++ b/mysql-test/r/user_var.result
@@ -179,3 +179,27 @@ 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
set one_shot @honk=99;
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
+#
diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result
index e370202cc9f..14260cd04f9 100644
--- a/mysql-test/r/variables.result
+++ b/mysql-test/r/variables.result
@@ -70,7 +70,7 @@ Variable_name Value
max_join_size HA_POS_ERROR
set @@max_join_size=1000, @@global.max_join_size=2000;
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
select @@identity, length(@@version)>0;
@@identity length(@@version)>0
@@ -407,23 +407,23 @@ Variable_name Value
myisam_max_sort_file_size MAX_FILE_SIZE
set global myisam_max_sort_file_size=default;
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
set @svc=@@global.max_user_connections, @svj=@@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
set @@global.max_user_connections=111,@@local.max_join_size=222;
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
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;
-@@global.max_user_connections @@session.max_join_size
+@@global.max_user_connections @@local.max_join_size
222 111
set @@global.max_user_connections=@svc, @@local.max_join_size=@svj;
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
set @a=1, @b=2;
set @a=@b, @b=@a;
diff --git a/mysql-test/t/user_var.test b/mysql-test/t/user_var.test
index 6409d4ffea5..7691a574a2a 100644
--- a/mysql-test/t/user_var.test
+++ b/mysql-test/t/user_var.test
@@ -120,4 +120,25 @@ set session @honk=99;
--error 1105
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
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 2514a4beacf..9e570cba1de 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -3255,7 +3255,7 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name,
if (component.str == 0 &&
!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),
system_charset_info, DERIVATION_SYSCONST);
@@ -3282,28 +3282,10 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name,
}
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(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,
- buff, pos - buff);
+ NULL, 0);
}
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 07650182c8f..d93d70088aa 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -4198,6 +4198,8 @@ void create_select_for_variable(const char *var_name)
THD *thd;
LEX *lex;
LEX_STRING tmp, null_lex_string;
+ Item *var;
+ char buff[MAX_SYS_VAR_LENGTH*2+4+8], *end;
DBUG_ENTER("create_select_for_variable");
thd= current_thd;
@@ -4207,8 +4209,14 @@ void create_select_for_variable(const char *var_name)
tmp.str= (char*) var_name;
tmp.length=strlen(var_name);
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;
}