[发明专利]检测等价语句的方法、装置、设备及计算机可读存储介质在审
申请号: | 202010941289.2 | 申请日: | 2020-09-09 |
公开(公告)号: | CN114238363A | 公开(公告)日: | 2022-03-25 |
发明(设计)人: | 张鹏国;贾豆豆 | 申请(专利权)人: | 浙江宇视科技有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2455 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 胡彬 |
地址: | 310051 浙江省杭州市滨江区西兴街道江陵路*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 检测 等价 语句 方法 装置 设备 计算机 可读 存储 介质 | ||
1.一种检测等价语句的方法,其特征在于,包括:
针对待匹配的SQL语句,基于至少两种预设匹配方式将所述待匹配的SQL语句与至少一条预设SQL语句进行递进循环匹配;所述递进循环匹配用于从所述至少一条预设SQL语句中匹配出与所述待匹配的SQL语句等价的目标SQL语句;
当基于所述至少两种预设匹配方式中的任一预设匹配方式匹配得到目标SQL语句时,结束所述递进循环匹配;
当进行所述递进循环匹配失败时,确定所述至少一条预设SQL语句中不存在与所述待匹配的SQL语句等价的目标SQL语句。
2.根据权利要求1所述的检测等价语句的方法,其特征在于,所述基于至少两种预设匹配方式将所述待匹配的SQL语句与至少一条预设SQL语句进行递进循环匹配,包括:
对所述待匹配的SQL语句与至少一条预设SQL语句进行直接匹配;所述直接匹配包括对所述待匹配的SQL语句基于预设的语句格式进行调整,并将调整后的待匹配SQL语句与所述至少一条预设SQL语句进行匹配;
若所述直接匹配失败,则对所述待匹配的SQL语句与至少一条预设SQL语句进行等价匹配;
若所述等价匹配失败,则对所述待匹配的SQL语句与至少一条预设SQL语句进行包含匹配或模板匹配;所述等价匹配、所述包含匹配包括对所述待匹配的SQL语句基于预设的差异模板进行差异变换,并将变换后的待匹配SQL语句与所述至少一条预设SQL语句进行匹配;
若所述包含匹配失败,则对所述待匹配的SQL语句与至少一条预设SQL语句进行模板匹配;所述模板匹配包括检测所述待匹配的SQL语句和所述至少一条预设SQL语句中的任一预设SQL语句是否适用于预设的等价变换模板;
若所述模板匹配成功,则对所述待匹配的SQL语句基于所述等价变换模板进行等价变换,并将等价变换后的待匹配SQL语句与至少一条预设SQL语句重复执行等价匹配;若所述模板匹配失败,则对所述待匹配的SQL语句与至少一条预设SQL语句进行自定义匹配;所述自定义匹配包括检测待查询解析树是否适用于预设的自定义变换模板;
若所述自定义匹配成功,则对所述待匹配的SQL语句与至少一条预设SQL语句重复执行等价匹配,或者对所述待匹配的SQL语句与至少一条预设SQL语句采用所述至少两种预设匹配方式中指定的预设匹配方式进行匹配;
若所述自定义匹配失败,则结束所述递进循环匹配。
3.根据权利要求2所述的检测等价语句的方法,其特征在于,所述对所述待匹配的SQL语句与至少一条预设SQL语句进行直接匹配包括:
基于预设的语句格式对所述待匹配的SQL语句进行格式调整,得到调整后的待匹配SQL语句;
对所述调整后的待匹配SQL语句进行转换,得到所述调整后的待匹配SQL语句的待查询解析树;
当所述待匹配的SQL语句所查询的表为源数据表时,基于所述待查询解析树与至少一个预设SQL模型各自对应的源表映射信息进行匹配;所述源表映射信息用于记录查询源数据表的SQL语句的第一语句信息,所述第一语句信息以查询源数据表的SQL语句的第一解析树为键;
若存在匹配的第一解析树,则将匹配的第一解析树对应的查询源数据表的SQL语句作为等价SQL语句;
若不存在匹配的第一解析树,则判定所述直接匹配失败。
4.根据权利要求2或3所述的检测等价语句的方法,其特征在于,所述对所述待匹配的SQL语句与至少一条预设SQL语句进行直接匹配还包括:
当所述待匹配的SQL语句所查询的表为临时表时,获取所述待匹配的SQL语句的父SQL语句;
当所述父SQL语句存在等价SQL语句时,将所述待查询解析树中所述父SQL语句的语句信息替换成所述等价SQL语句的语句信息;
根据所述等价SQL语句的语句信息确定出目标SQL模型标识;目标SQL模型包括至少一条SQL语句,每条SQL语句具有各自对应的解析树;
根据所述目标SQL模型标识获取目标SQL模型包括的各个第二解析树;
将所述待查询解析树与所述各个第二解析树进行匹配;
若存在匹配的第二解析树,则将匹配的第二解析树对应的SQL语句作为等价SQL语句;
若不存在匹配的第二解析树,则判定所述直接匹配失败。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江宇视科技有限公司,未经浙江宇视科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010941289.2/1.html,转载请声明来源钻瓜专利网。