久久首页
免费软件
网络时尚
网络学堂
专题讨论
网络资源
网络游戏
网络文档
网络产品
网站导航: 首页 > 数据库 > MySQL 3.23 中文参考手册 > 14.2 增加一个新的原生函数 文档讨论

MySQL 3.23 中文参考手册

后退 14.2 增加一个新的原生函数 前进

2004-02-12 MySQL 译者:晏子 http://www.mysql.com/doc.html
 
增加一个新的原生函数的过程在下面描述。注意,你不能往一个二进制分发中加入新函数,因为该过程涉及修改MySQL源代码。你必须从源代码分发自行编译MySQL。也要注意,如果你迁移到MySQL的其他版本(例如,当一个新版本被释放时),你将需要用新版本重复该过程。

为了加入一个新的原生MySQL函数,遵循这些步骤:

在“lex.h”加入1行,它在sql_functions[]数组中定义函数名。
在“sql_yacc.yy”加入2行。一行指出示yacc应该定义的预处理器符号(这应该加在文件的开始),然后定义函数参数并且将一个具有这些参数“项目”加到simple_expr语法分析规则中。有一个例子,检查在“sql_yacc.yy 所有的SOUNDEX出现看看它使怎样做的。
在“item_func.h”中,声明一个继承Item_num_func或Item_str_func的类,取决于你的函数是返回一个数字或是一个字符串。
在“item_func.cc”,增加下列声明之一,取决于你是正在定义一个数字或是字符串函数:
double Item_func_newname::val()
longlong Item_func_newname::val_int()
String *Item_func_newname::Str(String *str)

你也可能应该定义下列函数:
void Item_func_newname::fix_length_and_dec()

这个函数至少应该基于给定的参数计算max_length,max_length是函数可以返回的字符的最大数目。如果主函数不能返回一个NULL值,这个函数也应该设置maybe_null = 0。函数可以通过检查参数的maybe_null变量以便检查函数参数的任何一个是否能返回NULL。

所有函数必须是线程安全的(thread-safed)。

对字符串函数,已知有一些额外的考虑:

String *str参数提供一个可以用来保存结果的字符串缓冲区。
函数应该返回保存结果的字符串。
所有的当前字符串函数试图避免分配任何内存,除非绝对必要!
 
后退 目录 前进
14.1 增加一个新的用户定义函数 上一级 15 为MySQL增加新过程
 
发表评论 关闭窗口
 相关内容
- 14 为MySQL增加新函数 2004-02-12
- 7.4.3 位函数 2004-02-12
- 7.4.8 控制流函数 2004-02-12
- 7.4.9 数学函数 2004-02-12
- 7.4.10 字符串函数 2004-02-12
- 7.4.11 日期和时间函数 2004-02-12
- 7.4.12 其他函数 2004-02-12
- 7.4.13 与GROUP BY子句一起使用的函数 2004-02-12
- 14.1 增加一个新的用户定义函数 2004-02-12
 
 文档分类
操作系统
网络服务
编程语言
数据库
RFC请求注解
基础原理
软件使用
硬件参考
解决方案
 文章搜索
 
网站简介 | 广告服务 | 编程支持 | 设计服务 | 诚邀合作 | 访客留言
Copyright © 1999-2004 99NET. All Rights Reserved
版权所有 久久网络工作室
Email:webmaster@99net.net