diff options
author | unknown <pem@mysql.comhem.se> | 2004-04-06 15:48:58 +0200 |
---|---|---|
committer | unknown <pem@mysql.comhem.se> | 2004-04-06 15:48:58 +0200 |
commit | c22ccc136bfe8eaeaa9797775bde423cf0931bc1 (patch) | |
tree | bc2c17cd1e1f52242adcfb62808c8e18f12dc83a /sql/sp_pcontext.h | |
parent | 91dcd01159b2bcca753dd699fdf6a52d496ff7c1 (diff) | |
download | mariadb-git-c22ccc136bfe8eaeaa9797775bde423cf0931bc1.tar.gz |
Fixed BUG#2776: Stored procedure crash if variable assigned to default.
Keep track on the default value and use it. (Or NULL, if not declared.)
mysql-test/r/sp.result:
New testcases for BUG#2776.
mysql-test/t/sp.test:
New testcases for BUG#2776.
sql/sp_pcontext.cc:
Initialize local variable default value.
sql/sp_pcontext.h:
New method for saving default value.
sql/sql_yacc.yy:
If DEFAULT is use as a value in SET variable = ... in an SP, actually use the default.
Diffstat (limited to 'sql/sp_pcontext.h')
-rw-r--r-- | sql/sp_pcontext.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sql/sp_pcontext.h b/sql/sp_pcontext.h index 02134e3604f..a82cefa2e42 100644 --- a/sql/sp_pcontext.h +++ b/sql/sp_pcontext.h @@ -36,6 +36,7 @@ typedef struct sp_pvar sp_param_mode_t mode; uint offset; // Offset in current frame my_bool isset; + Item *dflt; } sp_pvar_t; typedef struct sp_label @@ -130,6 +131,15 @@ class sp_pcontext : public Sql_alloc p->isset= val; } + inline void + set_default(uint i, Item *it) + { + sp_pvar_t *p= find_pvar(i); + + if (p) + p->dflt= it; + } + void push_pvar(LEX_STRING *name, enum enum_field_types type, sp_param_mode_t mode); |