CN115098365A - Sql代码的调试方法、装置、电子设备及可读存储介质 - Google Patents

Sql代码的调试方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN115098365A
CN115098365A CN202210706509.2A CN202210706509A CN115098365A CN 115098365 A CN115098365 A CN 115098365A CN 202210706509 A CN202210706509 A CN 202210706509A CN 115098365 A CN115098365 A CN 115098365A
Authority
CN
China
Prior art keywords
target
code
debugging
sql
query
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210706509.2A
Other languages
English (en)
Inventor
徐帅
刘勇成
胡志鹏
袁思思
程龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202210706509.2A priority Critical patent/CN115098365A/zh
Publication of CN115098365A publication Critical patent/CN115098365A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3628Software debugging of optimised code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供的SQL代码的调试方法、装置、电子设备及可读存储介质,响应于代码编辑操作,提取出SQL代码中至少包括子查询语句及所述子查询语句中的查询对象的目标代码文本,并根据目标代码文本的目标查询结果,确定目标代码文本的调试信息,将调试信息展示在图形用户界面中与所述目标代码文本相对应的位置上。在编辑SQL代码的同时,就可以提取出SQL代码包含子查询语句以及子查询语句中的查询对象的目标代码文本进行查询,进而得到子查询语句中的查询对象的调试信息,在提升获取调试信息准确性的同时,还提升了代码调试的效率。

Description

SQL代码的调试方法、装置、电子设备及可读存储介质
技术领域
本申请涉及数据处理技术领域,尤其是涉及SQL代码的调试方法、装置、电子设备及可读存储介质。
背景技术
在编写代码时,需要对已编辑完成的代码进行调试,根据调试结果来确定代码编写是否正确合理,在调试过程中可以通过调试信息来提示代码中对象或者变量的信息,从而通过调试信息来定位代码的不合理之处。
在代码语言中,结构化查询语言(Structured Query Languge,SQL)是用来对数据库进行管理的语言,在SQL的调试过程中,可以展示调试信息,例如被查询对象的行数、列数等信息。但是,在现有技术中,针对于SQL语言的调试需要,用户需首先在客户端界面编辑好SQL代码,然后触发调试执行控件,对SQL代码已经编辑完成的全部SQL代码进行调试,在调试完成后显示代码的调试信息,导致调试效率比较低。
发明内容
有鉴于此,本申请提供SQL代码的调试方法、装置、电子设备及可读存储介质,在编辑SQL代码的同时,就可以提取出SQL代码包含子查询语句以及子查询语句中的查询对象的目标代码文本,进行查询,进而得到子查询语句中的查询对象的调试信息,在提升获取调试信息准确性的同时,还提升了代码调试的效率。
第一方面,本申请提供了一种SQL代码的调试方法,通过SQL客户端的图形用户界面显示SQL代码,所述调试方法包括:
响应于代码编辑操作,提取所述SQL代码的目标代码文本;所述目标代码文本至少包括子查询语句及所述子查询语句中的查询对象;
根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息;
将所述调试信息展示在所述图形用户界面中与所述目标代码文本相对应的位置上。
第二方面,本申请还提供了一种SQL代码的调试装置,通过SQL客户端的图形用户界面显示SQL代码,所述调试装置包括:
代码文本提取模块,用于响应于代码编辑操作,提取所述SQL代码的目标代码文本;所述目标代码文本至少包括子查询语句及所述子查询语句中的查询对象;
调试信息确定模块,用于根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息;
调试信息展示模块,用于将所述调试信息展示在所述图形用户界面中与所述目标代码文本相对应的位置上。
第三方面,本申请还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如第一方面任一项所述的SQL代码的调试方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面任一项所述的SQL代码的调试方法的步骤。
本申请提供的SQL代码的调试方法、装置、电子设备及可读存储介质,响应于代码编辑操作,提取出SQL代码中至少包括子查询语句及所述子查询语句中的查询对象的目标代码文本,并根据目标代码文本的目标查询结果,确定目标代码文本的调试信息,将调试信息展示在图形用户界面中与所述目标代码文本相对应的位置上。在本申请中,在编辑SQL代码的同时,就可以提取出SQL代码包含子查询语句以及子查询语句中的查询对象的目标代码文本,进行查询,进而得到子查询语句中的查询对象的调试信息,在提升获取调试信息准确性的同时,还提升了代码调试的效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例所提供的一种SQL代码的调试方法的流程图;
图2为本申请实施例所提供的代码调试的流程图;
图3为本申请实施例所提供的一种SQL代码的调试装置的结构示意图之一;
图4为本申请实施例所提供的一种SQL代码的调试装置的结构示意图之二;
图5为本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。
首先,对本申请可适用的应用场景进行介绍。本申请可应用于数据处理技术领域,在编辑代码时,需要对编辑的代码进行调试,根据调试结果来确定代码编写是否正确合理,在调试过程中可以通过调试信息来提示代码中对象或者变量的信息,从而通过调试信息来定位代码的不合理之处。
经研究发现,在代码语言中,结构化查询语言(Structured Query Languge,SQL)是用来对数据库进行管理的语言,在SQL的调试过程中,可以展示调试信息,例如被查询对象的行数、列数等信息。但是,在现有技术中,针对于SQL语言的调试需要,用户需首先在客户端界面编辑好SQL代码,然后触发调试执行控件,对SQL代码已经编辑完成的全部SQL代码进行调试,在调试完成后显示代码的调试信息,导致调试效率比较低。
基于此,本申请实施例提供了一种SQL代码的调试方法,以提升获取调试信息准确性的同时,还提升了代码调试的效率。
请参阅图1,图1为本申请实施例所提供的一种SQL代码的调试方法的流程图。如图1中所示,本申请实施例提供的SQL代码的调试方法,包括:
S101、响应于代码编辑操作,提取所述SQL代码的目标代码文本;所述目标代码文本至少包括子查询语句及所述子查询语句中的查询对象;
S102、根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息;
S103、将所述调试信息展示在所述图形用户界面中与所述目标代码文本相对应的位置上。
本申请实施例所提供的SQL代码的调试方法,在编辑SQL代码的同时,就可以提取出SQL代码包含子查询语句以及子查询语句中的查询对象的目标代码文本,进行查询,进而得到子查询语句中的查询对象的调试信息,在提升获取调试信息准确性的同时,还提升了代码调试的效率。
下面对本申请实施例示例性的各步骤进行说明:
S101、响应于代码编辑操作,提取所述SQL代码的目标代码文本;所述目标代码文本至少包括子查询语句及所述子查询语句中的查询对象。
在本申请实施例中,应用环境为对SQL代码调试的前期阶段,用户通过打开代码编辑的应用(SQL客户端)来编辑代码,并且通过调试运行来确定代码编写是否正确,从而对代码进行修改。
具体地,本申请实施例中编写的是SQL语句,可以通过SQL语言来查询数据库中的表格数据。
在针对于数据库中的表格进行查询时,采用的是查询代码特定的查询语句,针对于SQL语言来说,查询语法为“select”语法。
在一种可能的实施方式中,针对于一个查询语句来说,可能会在这个查询语句中嵌套子查询语句,那么这个查询语句就是一个带有嵌套查询的外部语句,在进行查询时首先执行子查询语句并在子查询语句得到结果后,根据子查询的结果再执行外部查询。
举例来说,在下述代码段中第一行开始到第十行是一个外部查询,第三行到第六行,以及第八行到第十行是个连续的子查询。
Figure BDA0003705567980000051
Figure BDA0003705567980000061
在本申请实施例中,当用户在SQL客户端编辑代码时,会在SQL客户端的目标展示界面中展示用户已经编辑输入的代码段,值得注意的是,由于目标展示界面中的展示区域大小是有限制的,那么在目标展示界面中展示的可能并不是用户输入的全部代码,在用户需要查看之前输入的代码时,可以通过滑动目标展示界面来进行查看。
在本申请实施例中,需要从用户已经编辑输入的SQL代码中提取出目标代码文本,在提取出的目标代码文本中至少包括子查询语句及子查询语句中的查询对象。
具体的,步骤“所述响应于代码输入操作,在响应于代码编辑操作,提取所述SQL代码的目标代码文本”,包括:
a1:响应于代码编辑操作,通过执行计划命令提取所述SQL代码的目标代码文本。
其中,对于执行计划命令来说,会存在执行计划命令成功(编辑输入的SQL代码中包含有SQL查询对象)以及执行计划命令不成功(编辑输入SQL代码中并未包含有SQL查询对象)两种情况,只有在执行计划命令成功的基础上才可以提取出目标代码文本。
优选的,编辑后代码相较于编辑前代码产生了变化,即只有在基于代码编辑操作使得编辑后代码与编辑前代码不同时,才会通过执行计划命令提取所述SQL代码的目标代码文本;而在基于代码编辑操作使得编辑后代码与编辑前代码相同时,不会通过执行计划命令提取所述SQL代码的目标代码文本,以避免相同代码的重复调试,降低代码调试的频次。
具体地,步骤“响应于代码编辑操作,通过执行计划命令提取所述SQL代码的目标代码文本”,包括:
b1:响应于代码编辑操作,对所述SQL代码执行计划命令。
b2:若执行计划命令运行成功提取所述SQL代码的目标代码文本。
值得注意的是,本申请实例中对于SQL客户端已经输入的代码执行的执行计划(Explan)命令,是对已经输入的代码进行的模拟查询操作,并不是真正去数据引擎中执行相应的查询操作,通过模拟查询操作可以得知数据库是如何处理相应的SQL语句的,可用来对SQL查询语句或是表结构的性能进行分析。
在一种可能的实施方式中,代码编辑操作可以是用户敲击键盘的操作,在用户进行代码编辑输入操作的同时,就会对已经编辑输入的代码段进行裁剪,然后根据裁剪得到的代码段去进行模拟查询(执行计划命令),若是成功,从已经编辑输入的代码中提取出子查询语句。
在一种可能的实施方式中,在对已经编辑输入的SQL代码进行模拟查询(执行计划命令)时,可以通过对SQL代码按照代码中“空格”符号进行裁剪,进而从最后输入的字符检查到整段SQL代码中已经最开始输入的字符处,然后得到包含有子查询语句及所述子查询语句中的查询对象的目标代码文本。
具体实施步骤可以为:
c1:响应于代码编辑操作,将已经输入的代码进行划分,并对划分后的代码文本执行计划命令。
c2:若执行计划命令运行成功提取所述SQL代码的目标代码文本。
在本申请实施例中,在接收到用户代码编辑操作时,可以根据已经输入的代码中的空格对已经输入的代码进行裁剪划分,例如可以是从最后一个空格进行裁剪,然后去执行计划命令。
c3:若执行计划命令运行失败,继续对已经输入的代码进行划分,直至划分后的代码中包含查询对象或者全部已经输入的代码均被划分完成。
在一种可能的实施方式中,可以通过执行计划命令是否成功来判断划分后的代码中是否存在查询对象,若是划分后的代码执行计划命令成功,那么确定出划分出的代码中存在查询对象,进而可以提取出包含查询对象和/或子查询语句的目标代码文本。
具体地,子查询语句的提取可以是根据查询语句“select x from y”的句式进行查询,从而完整地提取出子查询语句。
在另一种可能的实施方式中,若是划分后的代码执行计划命令运行失败,则说明划分出的代码中并不存在查询对象,这时需要再根据代码中的空格对已经输入的代码再次进行裁剪,然后再执行模拟查询,直至模拟查询成功,划分后的代码中包含查询对象或者全部已经输入的代码均被划分完成。
举例来说,对代码编辑器的整个已经输入的代码s提交到sql引擎进行Explain(查询执行计划),若无法成功Explain,则移除代码s的最后一个空格后的代码,得到代码s2,尝试Explain。若不行,继续移除最后一个空格后的代码得到代码s3。直到一次成功的Explain,或者代码s为空了。若为空了,不再继续后面的操作,需要等用户再次输入内容。
即,针对于执行计划命令不成功的情况,需要继续接收代码编辑操作,然后再次对输入的SQL代码执行计划。
具体地,所述调试方法还包括:
d1:若对所述SQL代码划分结束后,执行计划命令运行失败,接收代码编辑操作。
S102、根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息。
在本申请实施例中,根据对目标代码文本的目标查询结果,确定出提取出的目标代码文本的调试信息。
在一种可能的实施方式中,所述查询对象为数据表,所述查询结果为数据表中的存储数据,所述调试信息为数据表中所述查询对象的属性描述信息,所述属性描述信息表征所述查询对象的属性。
具体地,在本申请实施例的查询场景下,在查询对象一般为数据库中的数据表的情况下,那么查询对象的调试信息可以是数据表的行数、列数等表格的属性信息。
在一种可能的实施方式中,可以通过已经建立的查询结果集合(临时文件夹)中的信息或者是sql引擎的执行来确定出目标代码文本的目标查询结果,进而确定出目标代码文本的调试信息。
在一种可能的实施方式中,在用户打开SQL客户端准备进行代码编辑时,用户就通过客户端与sql引擎建立了会话,这时需要建立一个临时文件夹()),用来存储信息,以通过建立的临时文件夹来获取以及存储代码中需要查询的查询对象的信息。
具体地,在整个调试流程之前,所述调试方法还包括:
e1:响应针对于所述SQL客户端的开启指令,构建查询结果集合。
其中,所述查询结果集合用于存储所述SQL代码中所包含的目标代码的目标查询结果。
在一种可能的实施方式中,用户打开SQL客户端界面时,就建立了和SQL引擎的连接,从连接信息中获取session_id(SQL客户端界面session,即SQL当前界面与SQL引擎之间建立的会话)。若获取失败,则以当前的时间戳作为session_id,用session_id作为文件夹名建立临时文件夹(查询结果集合)。
值得注意的是,为了节省SQL客户端的存储空间,在调试结束后,SQL客户端会尝试删除建立的临时文件夹(查询结果集合)。
具体地,所述调试方法还包括:
f1:响应针对于所述SQL客户端的关闭指令,清空所述查询结果集合中存储的目标查询结果,并删除所述查询结果集合。
在本申请实施例中,在确定接收到SQL客户端的关闭指令后,将在SQL客户端打开时建立的临时文件夹(查询结果集合)中的目标查询结果全部清空,同时删除建立的临时文件夹(查询结果集合)。
在一种可能的实施方式中,通过以下步骤确定所述目标代码文本的目标查询结果:
g1:生成所述目标代码文本对应的目标查询标识。
在本申请实施例中,可以是根据提取出的目标代码文本进行转换,得到对应的目标查询标识。
具体地,步骤“生成所述目标代码文本对应的目标查询标识”,包括:
h1:对所述目标代码文本进行哈希运算,确定所述目标代码文本转换后的哈希值。
h2:将所述哈希值确定为所述目标代码文本对应的目标查询标识。
在本申请实施例中,在确定出包含子查询语句后,需要针对于子查询语句来构建的目标代码文本(sql_debug)来进行调试,针对于子查询语句来说,可以是将子查询语句from之前的字符全部去除,然后在from前加上select来进行构建目标代码文本。
值得注意的是,从已经输入的代码中提取出的并不一定仅仅包含子查询语句,还可以是查询对象(表格名称),这时构建目标代码文本时,需要在查询对象前加上“selectfrom”来进行查询。
在构建完目标代码文本后,需要对目标代码文本进行转换,来得到目标查询标识,具体地,可以是应用信息摘要算法(Message-Digest Algorithm5,md5)计算目标代码文本的哈希值,将计算得到的哈希值作为目标查询标识。
g2:根据所述目标查询标识,从所述查询结果集合中查询所述目标代码文本的目标查询结果。
在本申请实施例中,在查询结果集合建立后,在对目标代码文本对应的目标查询结果进行查询的规程中,可以有针对性从数据库下载目标代码文本中包括的查询对象的信息进行存储,一个查询对象可以存储在一个子查询结果集合中。
在本申请实施例中,需要根据确定出的目标查询标识从查询结果集合中查找到目标代码文本的目标查询结果,在查询过程中可能就会存在两种不同的情况,即一种情况为在查询结果集合中根据目标查询标识查询到了对应的标查询结果,另一种情况为在查询结果集合中根据目标查询标识并未查询到对应的标查询结果,针对于不同的查询情况,获取对应的目标查询结果的方式也是会存在差异。
具体地,在一种可能的实施方式中,若是查询结果集合中存在与所述目标查询标识对应的目标查询结果,那么无需再次执行调试语句从数据库中下载查询对象的调试信息,直接从查询结果集合中获取到目标代码文本的目标查询结果。
在另一种可能的实施方式中,若是在查询结果集合中根据目标查询标识并未查询到对应的标查询结果,那么,所述调试方法还包括:
i1:若所述查询结果集合中并未存储有与所述目标查询标识对应的目标查询结果,从数据库引擎中获得目标代码文本的目标查询结果,并将所述目标查询结果存储至查询结果集合中。
在本申请实施例中,若是在查询结果集合中并不存在与所述目标查询标识对应的目标查询结果,那就需要根据构建的调试信息到sql引擎中进行执行,获取到目标代码文本的目标查询结果,并且在获取到目标查询结果后,将目标查询结果对应地存储在查询结果集合中,以供下次可以更便捷地获取到对应的目标查询结果。
在一种可能的实施方式中,根据目标查询标识查询到对应的目标查询结果后,进一步可以通过目标查询结果,确定出目标代码文本的调试信息,具体地,步骤“根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息”,包括:
j1:若从所述查询结果集合中查询到所述目标代码文本的目标查询结果,读取目标查询结果的数据信息。
j2:根据读取到的所述目标查询结果的数据信息,确定目标代码文本的调试信息。
在本申请实施例中,从查询结果集合中查询到目标代码文本的目标查询结果后,针对于查询对象是表格的情况,可以从目标查询结果中读取出对应的表格的行数或者是列数信息,从而得到目标代码文本的调试信息。
S103、将所述调试信息展示在所述图形用户界面中与所述目标代码文本相对应的位置上。
在本申请实施例中,在得到目标代码文本的调试信息后,需要将得到的调试信息展示在图形用户界面中与所述目标代码文本相对应的位置上,由于目标代码文本中可能存在不止一个查询对象,因此相对应的调试信息可以分别对应地显示在不同的查询对象的对应位置处。
在一中可能的实施方式中,将所述调试信息展示在所述图形用户界面中与所述目标代码文本相对应的位置的触发条件包括以下至少一种:
接收到针对于查询对象的调试信息的显示指令、完成对查询对象的调试信息的查询过程。
具体地,可以在确定子查询语句中的查询对象的调试信息后,就直接将调试信息进行展示,也可以是根据用户的需求,在用户触发针对于查询对象的调试信息的显示指令时再显示查询对象的调试信息。
在一种可能的实施方式中,用户触发调试信息的显示指令的方式可以是将鼠标放置在查询对象所在位置处来进行触发。
值得注意的是,上述两种显示触发条件,完成对查询对象的调试信息的查询过程后即可进行显示,调试信息的显示及时性比较高,但是容易在用户不需要展示调试信息时,遮挡住目标展示界面,不利于用户后续的代码输入;而接收到针对于查询对象的调试信息的显示指令后再显示调试信息的方式,可以在用户不需要查看调试信息时不进行显示,减少了遮挡目标展示界面从而导致无效显示的情况发生,但是调试信息展示的实时性较差,上述两种显示方式可以同时被采用,以用户自身的选择为基准,可以是在用户编辑代码之前,通过提示用户进行选择来确定触发本次调试信息的展示方式。
在一种可能的实施方式中,查询对象的调试信息可以显示在查询对象所在位置处,而子查询语句的调试信息可以显示在子查询语句的起始符号“(”处,也可以显示在子查询对象的查询对象处。
在一种可能的实施方式中,在用户编辑代码结束后,可以通过点击目标展示界面中设置的“执行”控件来运行已经输入的代码,从而得到代码的实现结果。
具体地,所述调试方法还包括:
k1:响应于代码调试指令,检测所述查询结果集合中是否包含所述SQL代码中全部目标代码文本对应的全部目标查询结果。
k2:若所述SQL代码的目标代码文本对应的目标查询结果尚未全部存储至所述查询结果集合中,将所述SQL代码提交至数据库引擎,获得所述SQL代码的目标代码文本对应的调试信息。
在一种可能的实施方式中,由于在用户打开SQL客户端与sql引擎建立连接后,会临时建立一个查询结果集合,因此,在对整段代码进行调试运行时,可以通过检测查询结果集合中是否包含所述SQL代码中全部目标代码文本对应的全部目标查询结果,来确定获得所述SQL代码的目标代码文本对应的调试信息的具体获取方式。
具体地,若是所述SQL代码的目标代码文本对应的目标查询结果尚未全部存储至所述查询结果集合中,这时在本地无法进行调试信息的计算过程,即使执行了计算过程,得到的执行结果也并不是正确的,这时在本地通过查询结果集合来计算调试信息是没有意义的,因此,在所述SQL代码的目标代码文本对应的目标查询结果尚未全部存储至所述查询结果集合中时,SQL代码的目标代码文本对应的调试信息一定是将目标代码文本提交到sql引擎进行计算得到的。
在另一种可能的实施方式中,若所述SQL代码的目标代码文本对应的目标查询结果已完全存储至所述查询结果集合中,那么可以同时启动两个线程来确定SQL代码中目标代码文本的调试信息,其中,所述第一调试线程用于将所述SQL代码提交至数据库引擎,获得所述SQL代码的目标代码文本对应的调试信息,所述第二调试线程用于根据所述查询结果集合中目标代码文本对应的目标查询结果,确定所述SQL代码的目标代码文本对应的调试信息。
具体地,所述调试方法还包括:
l1:若所述SQL代码的目标代码文本对应的目标查询结果已完全存储至所述查询结果集合中,同时运行第一调试线程与第二调试线程,并将第一调试线程及第二调试线程中反馈调试信息在前的调试线程的调试信息作为所述SQL代码中目标代码文本的调试信息。
在本申请实施例中,在接收到用户的代码调试指令后,检测在查询结果集合中是否包括了全部的查询对象的信息,若所述SQL代码的目标代码文本对应的目标查询结果已完全存储至所述查询结果集合中,那么是可以通过本地存储的查询结果集合的对象信息来进行计算,并且得到正确的运行结果,那么这时候可以采用本地文件计算以及提交到sql引擎去计算的两种方式来确定运行结果,并且采用速度比较快的那个结果。
具体地,在用户点击目标展示界面中的“执行”控件后,同时启动两个线程来确定SQL代码中目标代码文本的调试信息,当其中任一线程得到运行结果后,结束另一个未执行完的线程,并得到结果,这样可以提高得到执行结果的效率。
下面将通过具体示例,来阐述本申请实施例所提供的SQL代码的调试过程:
请参阅图2,图2为本申请实施例所提供的代码调试的流程图。如图2中所示,针对于代码调试的流程包括:
步骤1:用户打开客户端界面时,就建立了和SQL引擎的连接。从连接信息中获取会话标识,session_id。若获取失败,则以当前的时间戳作为session_id。
步骤2:用session_id作为文件夹名建立临时文件夹(相当于查询结果集合)。临时文件夹(相当于查询结果集合)的作用是存放一些临时文件,在该用户关闭客户端时,客户端的进程会尝试删除这个临时文件夹。
步骤3:客户端进程实时的检测到用户在输入代码,用户每次输入(可以用一个字符作为一次的界定,也可以用一个单词作为一次的界定)时,就进行以下操作:
步骤3.1:对代码编辑器的整个代码s提交到sql引擎进行模拟查询Explain(查询执行计划命令)。
步骤3.2:若无法成功Explain,则移除s的最后一个空格后的代码,得到s2,尝试Explain。若不行,继续移除最后一个空格后的代码得到s3。直到一次成功的Explain,或者s为空了。
若为空了,不必继续后面的操作,需要等用户再次输入内容。
步骤3.3:得到一个成功Explain的执行计划后提取出子查询,表名条目(相当于查询对象)。假设可以提取到n个子查询+表名。
步骤3.4:对每个条目的代码文本,分别应用md5算法,得到n个hash值(这里的hash值没有特殊的含义,于hash算法没有任何关系,只是表示通过md5算法得到的一串特殊的字符串,不同的代码文本可以得到不同的字符串)。
步骤3.5:对每个hash值(可以同时进行,也可以逐个进行)去临时文件夹中查找是否存在同名文件。
步骤3.6:若存在同名文件,则无需重新下载。若不存在,则需要根据hash值对应的条目产生下载语句(相当于目标代码文本)。
步骤3.7:表名tn可以通过添加语句为select*from tn得到下载语句;子查询可以通过移除其from前的内容后替换为select*得到下载语句。
步骤3.8:根据相应的下载语句去SQL引擎里下载得到数据,存入这个hash值的临时文件。
步骤3.9:一旦某个hash值的临时文件已经下载完成,或者早就存在。那么就可以通过python进程读取这个hash值对应的文件的行数、列数等调试信息。
步骤4:一旦获得某个调试信息(不需要等待其他条目的调试信息就绪)就可以立刻在代码编辑区这段代码附近给用户进行展示。
步骤5:用户点击“执行”按钮时。产生两个线程,一个线程是将完整的语句提交给SQL引擎进行执行;另一个线程尝试(如果本地的临时文件本身就还没下载完整,就算了,放弃这个线程)用本地的这些临时文件加载到pandas对象中,然后在生成python代码将完整的sql代码提交到pandas中执行。
步骤6:这两个线程任何一个先取得结果,就可以在客户端的结果显示区显示给用户。
本申请实施例提供的SQL代码的调试方法,响应于代码编辑操作,提取出SQL代码中至少包括子查询语句及所述子查询语句中的查询对象的目标代码文本,并根据目标代码文本的目标查询结果,确定目标代码文本的调试信息,将调试信息展示在图形用户界面中与所述目标代码文本相对应的位置上。在本申请实施例中,在编辑SQL代码的同时,就可以提取出SQL代码包含子查询语句以及子查询语句中的查询对象的目标代码文本,进行查询,进而得到子查询语句中的查询对象的调试信息,在提升获取调试信息准确性的同时,还提升了代码调试的效率。
基于同一发明构思,本申请实施例中还提供了与SQL代码的调试方法对应的SQL代码的调试装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述SQL代码的调试方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
请参阅图3、图4,图3为本申请实施例所提供的一种SQL代码的调试装置的结构示意图之一,图4为本申请实施例所提供的一种SQL代码的调试装置的结构示意图之二。如图3中所示,所述调试装置300包括:
代码文本提取模块310,用于响应于代码编辑操作,提取所述SQL代码的目标代码文本;所述目标代码文本至少包括子查询语句及所述子查询语句中的查询对象;
调试信息确定模块320,用于根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息;
调试信息展示模块330,用于将所述调试信息展示在所述图形用户界面中与所述目标代码文本相对应的位置上。
在一种可能的实施方式中,如图4所示,所述调试装置300还包括集合构建模块340,所述集合构建模块340用于:
响应针对于所述SQL客户端的开启指令,构建查询结果集合;
其中,所述查询结果集合用于存储所述SQL代码中所包含的目标代码的目标查询结果。
在一种可能的实施方式中,如图4所示,所述调试装置300还包括查询结果确定模块350,所述查询结果确定模块350用于:
若所述查询结果集合中并未存储有与所述目标查询标识对应的目标查询结果,从数据库引擎中获得目标代码文本的目标查询结果,并将所述目标查询结果存储至查询结果集合中。
在一种可能的实施方式中,如图4所示,所述调试装置300还包括第一调试信息获取模块360,所述第一调试信息获取模块360用于:
响应于代码调试指令,检测所述查询结果集合中是否包含所述SQL代码中全部目标代码文本对应的全部目标查询结果;
若所述SQL代码的目标代码文本对应的目标查询结果尚未全部存储至所述查询结果集合中,将所述SQL代码提交至数据库引擎,获得所述SQL代码的目标代码文本对应的调试信息。
在一种可能的实施方式中,如图4所示,所述调试装置300还包括第二调试信息获取模块370,所述第二调试信息获取模块370用于:
若所述SQL代码的目标代码文本对应的目标查询结果已完全存储至所述查询结果集合中,同时运行第一调试线程与第二调试线程,并将第一调试线程及第二调试线程中反馈调试信息在前的调试线程的调试信息作为所述SQL代码中目标代码文本的调试信息;
其中,所述第一调试线程用于将所述SQL代码提交至数据库引擎,获得所述SQL代码的目标代码文本对应的调试信息,所述第二调试线程用于根据所述查询结果集合中目标代码文本对应的目标查询结果,确定所述SQL代码的目标代码文本对应的调试信息。
在一种可能的实施方式中,如图4所示,所述调试装置300还包括集合删除模块380,所述集合删除模块380用于:
响应针对于所述SQL客户端的关闭指令,清空所述查询结果集合中存储的目标查询结果,并删除所述查询结果集合。
在一种可能的实施方式中,所述代码文本提取模块310在用于响应于代码编辑操作,提取所述SQL代码的目标代码文本时,所述代码文本提取模块310用于:
响应于代码编辑操作,通过执行计划命令提取所述SQL代码的目标代码文本。
在一种可能的实施方式中,所述代码文本提取模块310在用于响应于代码编辑操作,通过执行计划命令提取所述SQL代码的目标代码文本时,所述代码文本提取模块310用于:
响应于代码编辑操作,对所述SQL代码执行计划命令;
若执行计划命令运行成功提取所述SQL代码的目标代码文本。
在一种可能的实施方式中,所述调试信息确定模块320用于通过以下步骤确定所述目标代码文本的目标查询结果:
生成所述目标代码文本对应的目标查询标识;
根据所述目标查询标识,从所述查询结果集合中查询所述目标代码文本的目标查询结果。
在一种可能的实施方式中,所述调试信息确定模块320在用于生成所述目标代码文本对应的目标查询标识时,所述调试信息确定模块320用于:
对所述目标代码文本进行哈希运算,确定所述目标代码文本转换后的哈希值;
将所述哈希值确定为所述目标代码文本对应的目标查询标识。
在一种可能的实施方式中,所述调试信息确定模块320在用于根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息时,所述调试信息确定模块320用于:
若从所述查询结果集合中查询到所述目标代码文本的目标查询结果,读取目标查询结果的数据信息;
根据读取到的所述目标查询结果的数据信息,确定目标代码文本的调试信息。
在一种可能的实施方式中,所述查询对象为数据表,所述查询结果为数据表中的存储数据,所述调试信息为数据表中所述查询对象的属性描述信息,所述属性描述信息表征所述查询对象的属性。
本申请实施例提供的SQL代码的调试装置,代码文本提取模块响应于代码编辑操作,提取出SQL代码中至少包括子查询语句及所述子查询语句中的查询对象的目标代码文本,调试信息确定模块根据目标代码文本的目标查询结果,确定目标代码文本的调试信息,调试信息展示模块将调试信息展示在图形用户界面中与所述目标代码文本相对应的位置上。在本申请实施例中,在编辑SQL代码的同时,就可以提取出SQL代码包含子查询语句以及子查询语句中的查询对象的目标代码文本,进行查询,进而得到子查询语句中的查询对象的调试信息,在提升获取调试信息准确性的同时,还提升了代码调试的效率。
请参阅图5,图5为本申请实施例所提供的一种电子设备的结构示意图。如图5中所示,所述电子设备500包括:处理器510、存储介质520和总线530,所述存储介质520存储有所述处理器510可执行的机器可读指令,当电子设备运行如实施例中的一种SQL代码的调试方法时,所述处理器510与所述存储介质520之间通过总线530通信,所述处理器510执行所述机器可读指令,所述处理器510方法项的前序部分,以执行以下步骤:
响应于代码编辑操作,提取所述SQL代码的目标代码文本;所述目标代码文本至少包括子查询语句及所述子查询语句中的查询对象;
根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息;
将所述调试信息展示在所述图形用户界面中与所述目标代码文本相对应的位置上。
在一个可行的实施方案,所述处理器510在用于响应于代码编辑操作,提取所述SQL代码的目标代码文本时,所述处理器510用于:
响应于代码编辑操作,通过执行计划命令提取所述SQL代码的目标代码文本。
在一个可行的实施方案,所述处理器510在用于响应于代码编辑操作,通过执行计划命令提取所述SQL代码的目标代码文本时,所述处理器510用于:
响应于代码编辑操作,对所述SQL代码执行计划命令;
若执行计划命令运行成功提取所述SQL代码的目标代码文本。
在一个可行的实施方案,所述处理器510还用于:
响应针对于所述SQL客户端的开启指令,构建查询结果集合;
其中,所述查询结果集合用于存储所述SQL代码中所包含的目标代码的目标查询结果。
在一个可行的实施方案,所述处理器510用于通过以下步骤确定所述目标代码文本的目标查询结果:
生成所述目标代码文本对应的目标查询标识;
根据所述目标查询标识,从所述查询结果集合中查询所述目标代码文本的目标查询结果。
在一个可行的实施方案,所述处理器510在用于生成所述目标代码文本对应的目标查询标识时,所述处理器510用于:
对所述目标代码文本进行哈希运算,确定所述目标代码文本转换后的哈希值;
将所述哈希值确定为所述目标代码文本对应的目标查询标识。
在一个可行的实施方案,所述处理器510还用于:
若所述查询结果集合中并未存储有与所述目标查询标识对应的目标查询结果,从数据库引擎中获得目标代码文本的目标查询结果,并将所述目标查询结果存储至查询结果集合中。
在一个可行的实施方案,所述处理器510在用于根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息时,所述处理器510用于:
若从所述查询结果集合中查询到所述目标代码文本的目标查询结果,读取目标查询结果的数据信息;
根据读取到的所述目标查询结果的数据信息,确定目标代码文本的调试信息。
在一个可行的实施方案,所述处理器510还用于:
响应于代码调试指令,检测所述查询结果集合中是否包含所述SQL代码中全部目标代码文本对应的全部目标查询结果;
若所述SQL代码的目标代码文本对应的目标查询结果尚未全部存储至所述查询结果集合中,将所述SQL代码提交至数据库引擎,获得所述SQL代码的目标代码文本对应的调试信息。
在一个可行的实施方案,所述处理器510还用于:
若所述SQL代码的目标代码文本对应的目标查询结果已完全存储至所述查询结果集合中,同时运行第一调试线程与第二调试线程,并将第一调试线程及第二调试线程中反馈调试信息在前的调试线程的调试信息作为所述SQL代码中目标代码文本的调试信息;
其中,所述第一调试线程用于将所述SQL代码提交至数据库引擎,获得所述SQL代码的目标代码文本对应的调试信息,所述第二调试线程用于根据所述查询结果集合中目标代码文本对应的目标查询结果,确定所述SQL代码的目标代码文本对应的调试信息。
在一个可行的实施方案,所述查询对象为数据表,所述查询结果为数据表中的存储数据,所述调试信息为数据表中所述查询对象的属性描述信息,所述属性描述信息表征所述查询对象的属性。
在一个可行的实施方案,所述处理器510还用于:
响应针对于所述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代码的目标代码文本对应的调试信息,以及根据所述查询结果集合中目标代码文本对应的目标查询结果,确定所述SQL代码的目标代码文本对应的调试信息的线程,将中反馈调试信息在前的现成的结果确定为调试信息,可以进一步提升代码调试运行的效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (15)

1.一种SQL代码的调试方法,其特征在于,通过SQL客户端的图形用户界面显示SQL代码,所述调试方法包括:
响应于代码编辑操作,提取所述SQL代码的目标代码文本;所述目标代码文本至少包括子查询语句及所述子查询语句中的查询对象;
根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息;
将所述调试信息展示在所述图形用户界面中与所述目标代码文本相对应的位置上。
2.根据权利要求1所述的调试方法,其特征在于,所述响应于代码编辑操作,提取所述SQL代码的目标代码文本,包括:
响应于代码编辑操作,通过执行计划命令提取所述SQL代码的目标代码文本。
3.根据权利要求1所述的调试方法,其特征在于,所述响应于代码编辑操作,通过执行计划命令提取所述SQL代码的目标代码文本,包括:
响应于代码编辑操作,对所述SQL代码执行计划命令;
若执行计划命令运行成功,提取所述SQL代码的目标代码文本。
4.根据权利要求1所述的调试方法,其特征在于,所述调试方法还包括:
响应针对于所述SQL客户端的开启指令,构建查询结果集合;
其中,所述查询结果集合用于存储所述SQL代码中所包含的目标代码的目标查询结果。
5.根据权利要求4所述的调试方法,其特征在于,通过以下步骤确定所述目标代码文本的目标查询结果:
生成所述目标代码文本对应的目标查询标识;
根据所述目标查询标识,从所述查询结果集合中查询所述目标代码文本的目标查询结果。
6.根据权利要求5所述的调试方法,其特征在于,所述生成所述目标代码文本对应的目标查询标识,包括:
对所述目标代码文本进行哈希运算,确定所述目标代码文本转换后的哈希值;
将所述哈希值确定为所述目标代码文本对应的目标查询标识。
7.根据权利要求5所述的调试方法,其特征在于,所述调试方法还包括:
若所述查询结果集合中并未存储有与所述目标查询标识对应的目标查询结果,从数据库引擎中获得目标代码文本的目标查询结果,并将所述目标查询结果存储至查询结果集合中。
8.根据权利要求5所述的调试方法,其特征在于,所述根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息,包括:
若从所述查询结果集合中查询到所述目标代码文本的目标查询结果,读取目标查询结果的数据信息;
根据读取到的所述目标查询结果的数据信息,确定目标代码文本的调试信息。
9.根据权利要求1所述的调试方法,其特征在于,所述调试方法还包括:
响应于代码调试指令,检测所述查询结果集合中是否包含所述SQL代码中全部目标代码文本对应的全部目标查询结果;
若所述SQL代码的目标代码文本对应的目标查询结果尚未全部存储至所述查询结果集合中,将所述SQL代码提交至数据库引擎,获得所述SQL代码的目标代码文本对应的调试信息。
10.根据权利要求9所述的调试方法,其特征在于,所述调试方法还包括:
若所述SQL代码的目标代码文本对应的目标查询结果已完全存储至所述查询结果集合中,同时运行第一调试线程与第二调试线程,并将第一调试线程及第二调试线程中反馈调试信息在前的调试线程的调试信息作为所述SQL代码中目标代码文本的调试信息;
其中,所述第一调试线程用于将所述SQL代码提交至数据库引擎,获得所述SQL代码的目标代码文本对应的调试信息,所述第二调试线程用于根据所述查询结果集合中目标代码文本对应的目标查询结果,确定所述SQL代码的目标代码文本对应的调试信息。
11.根据权利要求1所述的调试方法,其特征在于,所述查询对象为数据表,所述查询结果为数据表中的存储数据,所述调试信息为数据表中所述查询对象的属性描述信息,所述属性描述信息表征所述查询对象的属性。
12.根据权利要求4所述的调试方法,其特征在于,所述调试方法还包括:
响应针对于所述SQL客户端的关闭指令,清空所述查询结果集合中存储的目标查询结果,并删除所述查询结果集合。
13.一种SQL代码的调试装置,其特征在于,通过SQL客户端的图形用户界面显示SQL代码,所述调试装置包括:
代码文本提取模块,用于响应于代码编辑操作,提取所述SQL代码的目标代码文本;所述目标代码文本至少包括子查询语句及所述子查询语句中的查询对象;
调试信息确定模块,用于根据所述目标代码文本的目标查询结果,确定所述目标代码文本的调试信息;
调试信息展示模块,用于将所述调试信息展示在所述图形用户界面中与所述目标代码文本相对应的位置上。
14.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至12任一项所述的SQL代码的调试方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至12任一项所述的SQL代码的调试方法的步骤。
CN202210706509.2A 2022-06-21 2022-06-21 Sql代码的调试方法、装置、电子设备及可读存储介质 Pending CN115098365A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210706509.2A CN115098365A (zh) 2022-06-21 2022-06-21 Sql代码的调试方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210706509.2A CN115098365A (zh) 2022-06-21 2022-06-21 Sql代码的调试方法、装置、电子设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN115098365A true CN115098365A (zh) 2022-09-23

Family

ID=83293215

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210706509.2A Pending CN115098365A (zh) 2022-06-21 2022-06-21 Sql代码的调试方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN115098365A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117555968A (zh) * 2024-01-12 2024-02-13 浙江智臾科技有限公司 数据处理方法、装置、设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117555968A (zh) * 2024-01-12 2024-02-13 浙江智臾科技有限公司 数据处理方法、装置、设备及存储介质
CN117555968B (zh) * 2024-01-12 2024-04-19 浙江智臾科技有限公司 数据处理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US10872104B2 (en) Method and apparatus for natural language query in a workspace analytics system
US9613166B2 (en) Search suggestions of related entities based on co-occurrence and/or fuzzy-score matching
US11520800B2 (en) Extensible data transformations
US9342585B2 (en) Text searching method and device and text processor
US20210011926A1 (en) Efficient transformation program generation
US11809442B2 (en) Facilitating data transformations
US11809223B2 (en) Collecting and annotating transformation tools for use in generating transformation programs
CN108762743B (zh) 一种数据表操作代码生成方法及装置
JP4502615B2 (ja) 類似文検索装置、類似文検索方法、およびプログラム
JP4160548B2 (ja) 文書要約作成システム、方法、及びプログラム
CN115017268B (zh) 一种基于树结构的启发式日志抽取方法及系统
US7624124B2 (en) System and method for assisting generation of business specification
CN113419721B (zh) 基于web的表达式编辑方法、装置、设备和存储介质
CN115098365A (zh) Sql代码的调试方法、装置、电子设备及可读存储介质
US20170075915A1 (en) Search suggestions using fuzzy-score matching and entity co-occurrence
US20120150899A1 (en) System and method for selectively generating tabular data from semi-structured content
CN114676155A (zh) 代码提示信息的确定方法、数据集的确定方法及电子设备
JP5790820B2 (ja) 不整合検出装置、プログラム及び方法、修正支援装置、プログラム及び方法
CN113051156B (zh) 一种基于区块链溯源与信息检索的软件缺陷定位方法
JP3627850B2 (ja) 文書検索装置
JP3166995B2 (ja) コメント付与方法及び文書処理装置
CN114911984A (zh) 搜索数据处理方法、装置及计算机存储介质
KR20230149054A (ko) 로그 데이터의 패턴 생성 방법 및 장치
CN117971185A (zh) 代码生成方法、装置、计算机设备及存储介质
CN116431481A (zh) 一种基于多代码情况下的代码参数校验方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination