用mysql源码进行sql解析

用mysql源码进行sql解析

ID:28482572

大小:86.50 KB

页数:7页

时间:2018-12-10

用mysql源码进行sql解析_第1页
用mysql源码进行sql解析_第2页
用mysql源码进行sql解析_第3页
用mysql源码进行sql解析_第4页
用mysql源码进行sql解析_第5页
资源描述:

《用mysql源码进行sql解析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、用mysql源码进行SQL解析Mysql是通过yacc进行SQL语句解析的,这里介绍一下如何使用mysql的源码进行SQL语句解析。由于Mysql的源代码注释比较少,而且缺少资料,所有些地方研宄不够深入。1Filed介绍MYSQL中Filed有以下几种类型:enunienunifieldtypes{MYSQ'TYPEDECIMAL,MYSQLTYPETINY,MYSQ.TYPESHORT,MYSQLTYPELONG,MYSQ.TYPEFLOAT,MYSQLTYPEDOUBLE,MYSQ.TYPENULL,MYSQLTYPETTMESTAMP,MYSQ.TYPELO

2、NGLONG,MYSQLTYPETNT24,MYSQ.TYPEDATE,MYSQLTYPETTME,MYSQ.TYPEDATETTME,MYSQLTYPEYEAR,MYSQ.TYPENEWDATE,MYSQ.TYPEENUM=247,MYSQ.TYPESET=248,MYSQ.TYPETTNYBLOB=249,MYSQ.TYPEMEDIUMBLOB=250,MYSQLTYPEL0NG_BL0B=251,MYSQ.TYPEBLOB=252,MYSQ.TYPEVARSTRTNG=253,MYSQ.TYPESTRING=254,MYSQ.TYPEGEOMETRY=255

3、};下图列出几种常用的Filed子类及其关系2ITEM介绍在MYSQL中,有以下ITEM大类型:FIELDITEM,FUNCITEM,SUMFUNCITEM,STRINGITEM,TNTITEM,REALITEM,NULLITEM,VARBTNITEM,COPYSTRITEM,FIELDAVGITEM,DEFAULTVALUEITEM,PROCITEM,CONDITEM,REFITEM,FTELDSTDITEM,FIELDVARIANCEITEM,TKSERTVALUETTEM,SUBSELECTITEM,ROWITEM,CACHEITEM,TYPEHOLDER,

4、PARAMTTEM其中许多ITEM还有小类,如Item^func有如卜小类型:UNKNOWNFUNC,EQFUNC,EQUAL_FUNC,NE_FUNC,LT._FUNC,LE_FUNC,GE_EUNC,GT._EUNC,n_EUNC,LIKEFUNC,NOTL1KEFUNC,ISNULLFUNC,ISNOTNULLFUNC,CONDANDFUNC,CONDORFUNC,CONDXORFUNC,BETWEEN,IN_FUNC,1NTERVAL_EUNC,ISNOTNULLTEST.EUNC,SP_EQUALS_EUNC,SFDISJOINT_FUNC,SPINTE

5、RSECTSFUNC,SPTOUCHESFUNC,SPCROSSESFUNC,SPWITHINFUNC,SFCONTAINS_FUNC,SPOVERLAPS_FUNC,SPSTARTPOINT,SP.ENDPOINT,SPEXTERIORRING,SP_PO1NTN,SP_GEOMETRYN,SP_1NTER1ORR1NGN,NOT.FUNC,NOT_ALL_EUNC,NOW_FUNC,VAR_VALUE_FUNC下阁足对所用的主耍的ITEM子类以及关系:3FIELD和ITEM的关系通过Item类中的tmp_table_field_from_field_type函

6、数将一个Item类转化为一个Filed类返回。并不是所冇的Item类返回的Filed都冇意义,下面列举几个冇意义的转化:ltem」nt->Field_longlongltem_real->Field_doubleltem_string->Field_string4解析结果存放实例例如语句selecttablel.fieldl,*test*,100fromtablelwheretablel.fieldl:’fieldl’and(tablel.field2=100ortablel.field2=200)1)选择域的解析“tablel.fieldl,’test’,100

7、”将被解析为一个List〈Item〉Jt中List的第一个元素Item的子类Item_neld,表示表屮的列。第二个元素为Item_string,表示字符串。由val_str方法可获得string值’’test’’,也可用tmp_tab1e_fie1d_from_fie1d_type方法返回一个Field的子类Field—string的指针。第三个元素为Itemjnt,表示整数。由valjnt获得int值100,也可以用tmp_tab1e_fie1d_from_fie1d_type方法返回一个Field的子类Field_longlong的指针。2)Where域的解

8、析wher

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。