summaryrefslogtreecommitdiff
path: root/storage/example
diff options
context:
space:
mode:
authortnurnberg@mysql.com/white.intern.koehntopp.de <>2008-02-24 14:12:17 +0100
committertnurnberg@mysql.com/white.intern.koehntopp.de <>2008-02-24 14:12:17 +0100
commit79491f93c8fdba2f75d968104ade0f88137cc036 (patch)
treed95d25d1f64c4bf0b5f7fb5748ed418eaee29c82 /storage/example
parent60fc91570b04f0202c7f58c74f493b18e9813923 (diff)
downloadmariadb-git-79491f93c8fdba2f75d968104ade0f88137cc036.tar.gz
Bug#32757: hang with sql_mode set when setting some global variables
If setting a system-variable provided by a plug-in failed, no OK or error was sent in some cases, hanging the client. We now send an error in the case from the ticket (integer-argument out of range in STRICT mode). We also provide a semi-generic fallback message for possible future cases like this where an error is signalled, but no message is sent to the client. The error/warning handling is unified so it's the same again for variables provided by plugins and those in the server proper.
Diffstat (limited to 'storage/example')
-rw-r--r--storage/example/ha_example.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/storage/example/ha_example.cc b/storage/example/ha_example.cc
index 6d9f4841e06..604722c3c8c 100644
--- a/storage/example/ha_example.cc
+++ b/storage/example/ha_example.cc
@@ -849,6 +849,7 @@ struct st_mysql_storage_engine example_storage_engine=
{ MYSQL_HANDLERTON_INTERFACE_VERSION };
static ulong srv_enum_var= 0;
+static ulong srv_ulong_var= 0;
const char *enum_var_names[]=
{
@@ -871,8 +872,21 @@ static MYSQL_SYSVAR_ENUM(
0, // def
&enum_var_typelib); // typelib
+static MYSQL_SYSVAR_ULONG(
+ ulong_var,
+ srv_ulong_var,
+ PLUGIN_VAR_RQCMDARG,
+ "0..1000",
+ NULL,
+ NULL,
+ 8,
+ 0,
+ 1000,
+ 0);
+
static struct st_mysql_sys_var* example_system_variables[]= {
MYSQL_SYSVAR(enum_var),
+ MYSQL_SYSVAR(ulong_var),
NULL
};