System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,尤其涉及一种语法错误处理方法、装置、集群、存储介质及程序产品。
技术介绍
1、在常用的处理数据库操作语言中,一条数据库语句通常由多个语法单元(token)构成,每个token由一个或多个字符构成,而不同的token往往具有不同的属性,如被广泛使用的结构化查询语言(structured query language,sql)中有:关键字(如:select、where、from等等)、标识符、常量、操作符(如 :<、=、> 等等 ),计算设备需要正确解析token的属性后才可能顺利执行。
2、而在计算设备解析数据库语句时,可能检测出语法错误,例如,列信息的别名与关键字发生重合冲突,换句话说,计算设备将用户输入的数据库语句中的标识符作为关键字进行解析,导致找不到相应的语法规则,引发语法错误。
3、在计算设备检测到语法错误后,传统的解决方法是直接向用户反馈存在语法错误,让用户自行修正数据库语句的错误,这种方法严重缺乏容错能力,鲁棒性很差,同时还会引入数据库难以前向兼容的问题,带来客户使用上的不变。
技术实现思路
1、本申请提供了一种语法错误处理方法、装置、集群、存储介质及程序产品,通过解析数据库语句过程出现错误之后,对引起语法解析错误的目标语法单元进行转义、替换等处理,以解决错误,在保证数据库的功能得到充分保留的同时,显著提升计算设备在解析数据库语句时的鲁棒性和兼容性,降低使用门槛。
2、第一方面,本申请提供了一种语法错误处
3、可以理解的是,在将第一数据库语句中的某个语法单元token当作关键字进行语法分析时不符合第一语法规则之后,计算设备获取该第一数据库语句,并自动对引起错误的目标语法单元进行处理,而不是直接向用户报错,处理后的目标语法单元在后续进行语法分析时能够符合包括第一语法规则在内的至少一条语法规则,显著提高了计算设备在解析数据库语句时的容错能力和鲁棒性。
4、在一种可能的实现方式中,计算设备对目标语法单元进行处理,包括:计算设备对目标语法单元进行转义,转义后的目标语法单元在后续进行语法分析时作为标识符;或者,计算设备替换目标语法单元。
5、可以理解的是,通过计算设备对目标语法单元进行转义或替换,实现了检测出数据库语句存在错误后的处理操作,进而在后续对该数据库语句进行再次解析时,能够避免之前将目标语法单元当作关键字进行语法分析所引起的错误,提高了计算设备在解析数据库语句时的鲁棒性。
6、在一种可能的实现方式中,计算设备对目标语法单元进行转义,包括:计算设备获取目标语法单元对应的版本信息;若版本信息符合目标版本范围,计算设备对目标语法单元进行转义。
7、可以理解的是,计算设备针对版本信息符合目标版本范围的目标语法单元进行转义,这样可以解决包括版本升级场景中常见的新增关键字与数据库语句中的标识符之间的重合冲突问题,能够提高计算设备在解析数据库语句时的容错能力和鲁棒性。
8、在一种可能的实现方式中,计算设备对目标语法单元进行转义,包括:计算设备获取第一数据库语句的语法规则与语法库中与目标语法单元对应的语法规则之间的相似度;若语法库中不存在相似度符合第一目标阈值范围的第二语法规则,计算设备对目标语法单元进行转义。
9、可以理解的是,计算设备在对目标语法单元进行转义前,先确定该语句是否与目标语法单元对应的语法规则高度相似,如果相似度较低,也就是说,语法库中不存在相似度符合第一目标阈值范围的第二语法规则,才会对该目标语法单元进行转义,这样可以降低转义出错的概率,有助于提高计算设备在解析数据库语句时的容错能力、准确度和效率。
10、在一种可能的实现方式中,计算设备对目标语法单元进行转义,包括:计算设备向目标语法单元添加转义符号;或者,计算设备生成目标指令,该目标指令用于指示后续进行语法分析时将目标语法单元作为标识符。
11、可以理解的是,计算设备通过添加转义符号,或生成能够指示后续进行语法分析时将目标语法单元作为标识符的目标指令,能够使得目标语法单元在后续解析时,不再作为关键字,从而避免引发语法错误。
12、在一种可能的实现方式中,计算设备替换目标语法单元,包括:计算设备获取第一数据库语句的语法规则与语法库中各语法规则的相似度;若语法库中存在相似度符合第二目标阈值范围的第二语法规则,计算设备将目标语法单元替换为语法规则中对应的语法单元。
13、可以理解的是,计算设备通过获取第一数据库语句的语法规则与语法库中各语法规则的相似度,在语法库中存在与该语句高度相似的第二语法规则的情况下,将目标语法单元替换为第二语法规则中对应的语法单元,这样,能够实现后续再次对替换后的数据库语句在解析时,其与第二语法规则匹配程度更高,能够顺利继续解析,避免将目标语法单元当作关键字进行语法分析所引起的错误,提高计算设备在解析数据库语句时的容错能力。
14、在一种可能的实现方式中,方法还包括:在数据库系统进行版本升级后,计算设备获取升级信息,升级信息包括:新增关键字、新增关键字对应的版本信息、新增关键字对应的语法规则,数据库系统用于对数据库语句进行语法分析。
15、可以理解的是,计算设备在数据库系统进行版本升级后,获取相关的升级信息,有助于在解析数据库语句发生错误时,利用升级信息确定如何对引起错误的目标语法单元进行相应的处理,进而提高计算设备在解析数据库语句时的容错能力,以及处理语法错误时的准确度。
16、第二方面,本申请提供了一种语法错误处理装置,该语法错误处理装置用于执行上述第一方面提供的任意一种语法错误处理方法。
17、在一种可能的实现方式中,本申请可以根据上述第一方面提供的方法,对该语法错误处理装置进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个模块中。示例性的,本申请可以按照功能将该语法错误处理装置划分为确定模块、处理模块等。上述划分的各个功能模块执行的可能的技术方案和有益效果的描述均可以参考上述第一方面或其相应的可能的实现方式提供的技术方案,此处不再赘述。
18、第三方面,本申请实施例提供了一种计算设备,计算设备包含处理器和存储器,处理器与存储器耦合;该存储器用于存储计算机指令,该计算机指令由处理器加载并执行以使计算设备实现如上述方面所述的语法错误处理方法。
19、第四方面,本申请实施例提供了一种计算设备集群,该计算设备集群包括至少一个计算设备,每个计算设备包含处理器和存储器,处理器本文档来自技高网...
【技术保护点】
1.一种语法错误处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述目标语法单元进行处理,包括:
3.根据权利要求2所述的方法,其特征在于,所述对所述目标语法单元进行转义,包括:
4.根据权利要求2或3所述的方法,其特征在于,所述对所述目标语法单元进行转义,包括:
5.根据权利要求2或3所述的方法,其特征在于,所述对所述目标语法单元进行转义,包括:
6.根据权利要求2所述的方法,其特征在于,所述替换所述目标语法单元,包括:
7.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
8.一种语法错误处理装置,其特征在于,所述装置包括:
9.根据权利要求8所述的装置,其特征在于,所述处理模块,还用于:
10.根据权利要求8所述的装置,其特征在于,所述处理模块,还用于:
11.根据权利要求9或10所述的装置,其特征在于,所述处理模块,还用于:
12.根据权利要求9或10所述的装置,其特征在于,所述处理模块,
13.根据权利要求8所述的装置,其特征在于,所述处理模块,还用于:
14.根据权利要求8-10任一项所述的装置,其特征在于,所述装置还包括获取模块,所述获取模块用于:
15.一种计算设备,其特征在于,所述计算设备包括处理器和存储器;所述处理器与所述存储器耦合;所述存储器用于存储计算机指令,所述计算机指令由所述处理器加载并执行以使计算设备实现如权利要求1-7任一项所述的语法错误处理方法。
16.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机指令;当所述计算机指令在计算设备中运行时,所述计算设备执行权利要求1-7任一项所述的语法错误处理方法。
18.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算设备中运行时,所述计算设备执行权利要求1-7任一项所述的语法错误处理方法。
...【技术特征摘要】
1.一种语法错误处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述目标语法单元进行处理,包括:
3.根据权利要求2所述的方法,其特征在于,所述对所述目标语法单元进行转义,包括:
4.根据权利要求2或3所述的方法,其特征在于,所述对所述目标语法单元进行转义,包括:
5.根据权利要求2或3所述的方法,其特征在于,所述对所述目标语法单元进行转义,包括:
6.根据权利要求2所述的方法,其特征在于,所述替换所述目标语法单元,包括:
7.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
8.一种语法错误处理装置,其特征在于,所述装置包括:
9.根据权利要求8所述的装置,其特征在于,所述处理模块,还用于:
10.根据权利要求8所述的装置,其特征在于,所述处理模块,还用于:
11.根据权利要求9或10所述的装置,其特征在于,所述处理模块,还用于:
12.根...
【专利技术属性】
技术研发人员:应勤,苏光牛,韩江涛,
申请(专利权)人:深圳华为云计算技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。