MySQL:如何编写Information Schema Plugin(8)
lookups.value2.str
当我们找到了在COND中定义的条件后,就可以进行字符串匹配了。
该函数用于支持INFORMATION_SCHEMA.TABLES, INFORMATION_ SCHEMA.COLUMNS,和其他类型的内建I_S表,主要用来存储表名和数据库名,也就是说,value值为string类型,并且只支持两个等值操作,如果想实现更复杂的cond遍历,我们需要自己来实现。
示例如下(参考自《mysql plugin development》):
view plain
#include <mysql_priv.h>
/*声明相关的结构体和函数*/
typedef struct st_lookup_field_values
{
LEX_STRING value1, value2;
bool value1_is_wildcard,value2_is_wildcard;
} LOOKUP_FIELD_VALUES;
bool calc_lookup_values_from_cond(THD *thd,COND *cond,
TABLE_LIST *table, LOOKUP_FIELD_VALUES*lookups);
bool schema_table_store_record(THD *thd,TABLE *table);
/*定义列类型
*包括一个整型和一个字符串型
*/
ST_FIELD_INFO cond_push_fields[] =
{
{"NUMBER",10, MYSQL_TYPE_LONG, 0, 0, 0, 0},
{"TEXT",100, MYSQL_TYPE_STRING, 0, 0, 0, 0},
{0, 0,MYSQL_TYPE_NULL, 0, 0, 0, 0}
}
int fill_cond_push(THD *thd, TABLE_LIST*tables, COND *cond)
{
/*系统默认字符集:utf-8*/
CHARSET_INFO *cs= system_charset_info;
TABLE *table =tables->table;
/*字符串数组output,用于测试只返回符合条件的字符串*/
相关新闻>>
- 发表评论
-
- 最新评论 更多>>