summaryrefslogtreecommitdiff
path: root/sql/item.h
diff options
context:
space:
mode:
authorKonstantin Osipov <kostja@sun.com>2010-04-14 01:56:19 +0400
committerKonstantin Osipov <kostja@sun.com>2010-04-14 01:56:19 +0400
commit4288e329dd9676494a9e3927e61492e975277112 (patch)
tree7a87035df6e8d664a8301574158d57d8305c65cf /sql/item.h
parent71799f6f972d3ba5508c62d8d8ac3e33b25b0f1a (diff)
downloadmariadb-git-4288e329dd9676494a9e3927e61492e975277112.tar.gz
A fix for Bug#11918 "SP does not accept variables in LIMIT clause"
Allow stored procedure variables in LIMIT clause. Only allow variables of INTEGER types. Handle negative values by means of an implicit cast to UNSIGNED (similarly to prepared statement placeholders). Add tests. Make sure replication works by not doing NAME_CONST substitution for variables in LIMIT clause. Add replication tests. mysql-test/r/sp.result: Update results (Bug#11918). mysql-test/suite/rpl/r/rpl_sp.result: Update results (Bug#11918). mysql-test/suite/rpl/t/rpl_sp.test: Add a test case for Bug#11918. mysql-test/t/sp.test: Add a test case for Bug#11918. sql/item.cc: Mark sp variables in LIMIT clause (a hack for replication). sql/item.h: Mark sp variables in LIMIT clause (a hack for replication). sql/share/errmsg-utf8.txt: Add a new error message (a type mismatch for LIMIT clause parameter). sql/sp_head.cc: Binlog rewrite sp variables in LIMIT clause without NAME_CONST substitution. sql/sql_string.cc: Implement append_ulonglong method. sql/sql_string.h: Declare append_ulonglong(). sql/sql_yacc.yy: Support stored procedure variables in LIMIT.
Diffstat (limited to 'sql/item.h')
-rw-r--r--sql/item.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/sql/item.h b/sql/item.h
index 4241074c659..11b4199da2c 100644
--- a/sql/item.h
+++ b/sql/item.h
@@ -1302,6 +1302,13 @@ class Item_splocal :public Item_sp_variable,
Item_result m_result_type;
enum_field_types m_field_type;
public:
+ /*
+ Is this variable a parameter in LIMIT clause.
+ Used only during NAME_CONST substitution, to not append
+ NAME_CONST to the resulting query and thus not break
+ the slave.
+ */
+ bool limit_clause_param;
/*
Position of this reference to SP variable in the statement (the
statement itself is in sp_instr_stmt::m_query).