summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <cmiller@zippy.cornsilk.net>2007-08-06 08:17:49 -0400
committerunknown <cmiller@zippy.cornsilk.net>2007-08-06 08:17:49 -0400
commita97875e55271324588448139e34e0db928213f15 (patch)
tree8b0bba44f81b0db018c393fd7f53740481785f4e /sql
parent39bbd9833f3c35c3fefe15ebad419a6b02ef4d6e (diff)
parentccb32a59465eb502d6e292e5f074dcade1ec7fa8 (diff)
downloadmariadb-git-a97875e55271324588448139e34e0db928213f15.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-maint
Diffstat (limited to 'sql')
-rw-r--r--sql/item_func.cc3
-rw-r--r--sql/udf_example.c35
2 files changed, 37 insertions, 1 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 9a26169ad30..4492b7519aa 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -2916,7 +2916,8 @@ udf_handler::fix_fields(THD *thd, Item_result_field *func,
String *res= arguments[i]->val_str(&buffers[i]);
if (arguments[i]->null_value)
continue;
- f_args.args[i]= (char*) res->ptr();
+ f_args.args[i]= (char*) res->c_ptr();
+ f_args.lengths[i]= res->length();
break;
}
case INT_RESULT:
diff --git a/sql/udf_example.c b/sql/udf_example.c
index b603464568e..5165a577555 100644
--- a/sql/udf_example.c
+++ b/sql/udf_example.c
@@ -1106,4 +1106,39 @@ char * is_const(UDF_INIT *initid, UDF_ARGS *args __attribute__((unused)),
}
+my_bool check_const_len_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
+{
+ if (args->arg_count != 1)
+ {
+ strmov(message, "IS_CONST accepts only one argument");
+ return 1;
+ }
+ if (args->args[0] == 0)
+ {
+ initid->ptr= "Not constant";
+ }
+ else if(strlen(args->args[0]) == args->lengths[0])
+ {
+ initid->ptr= "Correct length";
+ }
+ else
+ {
+ initid->ptr= "Wrong length";
+ }
+ initid->max_length = 100;
+ return 0;
+}
+
+char * check_const_len(UDF_INIT *initid, UDF_ARGS *args __attribute__((unused)),
+ char *result, unsigned long *length,
+ char *is_null, char *error __attribute__((unused)))
+{
+ strmov(result, initid->ptr);
+ *length= strlen(result);
+ *is_null= 0;
+ return result;
+}
+
+
+
#endif /* HAVE_DLOPEN */