截断mysql UDF上的列的数据

时间:2014-02-11 16:53:40

标签: mysql c user-defined-functions

我正在用C语言编写我的第一个用户自定义函数。代码很简单:

char *getKey(UDF_INIT *initid __attribute__((unused)),
    UDF_ARGS *args, char *result, unsigned long *length,
    char *is_null, char *error __attribute__((unused)))
{
    const char *word=args->args[0];
    strcpy(result,"EOOOOOOOO");

    return result;
}

我编译并加载它没有任何问题。

CREATE FUNCTION getKey RETURNS STRING SONAME 'udf_key.so';

要测试它我在插入查询中调用它:

INSERT INTO `seed4c`.`users` (`iduser`,`userscol`) VALUES (1,getkey('aa'));

userscol是一个Varchar(45),因此返回的字符串应该有足够的空间。我正在发出警告

1 row(s) affected, 1 warning(s): 1265 Data truncated for column 'userscol' at row 1

在表格中选择时,该字段具有预期值(EOOOOOOOO)和一些奇怪的字符,非alfanumeric。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

添加:

*length = strlen(result);

请参阅documentation