CN105389251A - 结构化查询语言调试器 - Google Patents
结构化查询语言调试器 Download PDFInfo
- Publication number
- CN105389251A CN105389251A CN201510544151.8A CN201510544151A CN105389251A CN 105389251 A CN105389251 A CN 105389251A CN 201510544151 A CN201510544151 A CN 201510544151A CN 105389251 A CN105389251 A CN 105389251A
- Authority
- CN
- China
- Prior art keywords
- sql
- sql statement
- statement
- debugger
- debug
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 146
- 230000008569 process Effects 0.000 claims abstract description 89
- 230000004044 response Effects 0.000 claims abstract description 14
- 230000001960 triggered effect Effects 0.000 claims abstract description 10
- 238000013507 mapping Methods 0.000 claims abstract description 7
- 238000012360 testing method Methods 0.000 claims description 30
- 238000011112 process operation Methods 0.000 claims description 4
- 238000005457 optimization Methods 0.000 abstract description 14
- 238000004590 computer program Methods 0.000 abstract description 13
- 230000008859 change Effects 0.000 abstract description 8
- 230000006870 function Effects 0.000 description 25
- 238000004891 communication Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 10
- 230000009471 action Effects 0.000 description 9
- 238000003860 storage Methods 0.000 description 8
- 230000000712 assembly Effects 0.000 description 7
- 238000000429 assembly Methods 0.000 description 7
- 230000000875 corresponding effect Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- NRTLIYOWLVMQBO-UHFFFAOYSA-N 5-chloro-1,3-dimethyl-N-(1,1,3-trimethyl-1,3-dihydro-2-benzofuran-4-yl)pyrazole-4-carboxamide Chemical compound C=12C(C)OC(C)(C)C2=CC=CC=1NC(=O)C=1C(C)=NN(C)C=1Cl NRTLIYOWLVMQBO-UHFFFAOYSA-N 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000011022 operating instruction Methods 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 239000002253 acid Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 238000000275 quality assurance Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 240000001439 Opuntia Species 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- HJUFTIJOISQSKQ-UHFFFAOYSA-N fenoxycarb Chemical compound C1=CC(OCCNC(=O)OCC)=CC=C1OC1=CC=CC=C1 HJUFTIJOISQSKQ-UHFFFAOYSA-N 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- VEMKTZHHVJILDY-UHFFFAOYSA-N resmethrin Chemical compound CC1(C)C(C=C(C)C)C1C(=O)OCC1=COC(CC=2C=CC=CC=2)=C1 VEMKTZHHVJILDY-UHFFFAOYSA-N 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
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)
- Stored Programmes (AREA)
Abstract
本公开描述了用于调试结构化查询语言(SQL)语句的方法、***和计算机程序产品。一种计算机实现的方法包括:接收获取调试运行计划的请求,调试运行计划考虑不同的结构化查询语言(SQL)运行优化级别并且包括对于SQL语句的映射;接收初始化SQL语句的调试过程的请求;验证接收到的和附加的过滤标准,过滤标准使用SQL调试通道来提供;设置SQL语句断点;触发SQL语句;发送SQL过程被附加到相关联的调试器并且准备好外部运行控制的通知;当到达与SQL过程相关联的特定断点时,提供状态细节和中间结果;提供改变过程状态和影响过程的能力;以及在到达被触发的SQL语句的运行的末尾之后,提供SQL最终运行响应。
Description
技术领域
本公开涉及结构化查询语言调试器。
背景技术
结构化查询语言(SQL)可以是独立的(单独的)SQL语句、数据库过程(例如,存储的过程)的一部分、或者动态或静态嵌入(即,包含)在任何高级编程语言(例如:C/C++、JAVA、COBOL和ABAP)中。这些独立的、数据库过程的一部分、或嵌入的SQL语句可以是非常复杂的,并且可以包含例如数百行代码,包括多个数据库表/视图、多个子(嵌套的)查询、和/或过滤器的复杂接合(join)。如果没有调试这样的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调试器可以提供与用于SQL语句运行的当前上下文的每个步骤相关的详细信息,例如,变量值、选择项值、在每一步演变的查询结果、查询内的表述的结果等等。例如,在SQL语句结果不是用户所预期那样(例如,不正确的接合(JOIN)或其它条件、错误输入的表述等等)的情况下,用户可以利用SQL调试能力看到在哪里发生错误,并且可以集中在该代码区域以校正问题。根据用户偏好,在SQL语句的运行期间的中间操作的可视化可以是文本的(并排)和/或图形的。在某些情况下,所提供的SQL调试能力也可以有助于由数据库管理员使用的独立的SQL语句(即,不是数据库过程的一部分)。独立的SQL语句通常被构建以用于临时的(特别的)原因(例如,查询在过去的几个小时的期间具有最高操作活动的用户量等)。第三,SQL调试器可以被用于调试SQL语句,与原始来源无关(例如,用于嵌入式SQL)。第四,SQL调试器可以被用于调试SQL语句,甚至考虑改变由查询引擎执行的SQL优化级别。第五,虽然SQL调试器的主要目标是逻辑方面(即,证明逻辑正确),但是所提供的过程的透明度增加了用户在改进数据库模型和性能方面的能力。其它优点对本领域技术人员来说将是显而易见的。
本说明书的主题的一个或多个实现方式的细节记载在附图和下面的描述中。该主题的其它特征、方面和优点将从该描述、图和权利要求书中变得明显。
附图说明
图1是图示根据实现方式的用于调试结构化查询语言(SQL)语句的示例分布式计算***(EDCS)的框图。
图2A和图2B表示根据实现方式的简单的示例SQL运行计划。
图2C是表示显示示例图形化SQL运行计划的示例用户界面的框图。
图2D是表示根据实现方式的用于显示源代码和图形化SQL运行计划两者的并排用户界面的示例的框图。
图3是根据实现方式的允许远程调试SQL语句的示例客户端/服务器的框图。
图4是图示根据实现方式的用于调试SQL语句的图1的EDCS的附加组件的框图。
图5是图示根据实现方式的SQL处理器的组件(图4的EDCS的详细组件)的详细视图的框图。
图6是根据实现方式的用于调试结构化查询语言(SQL)语句的方法的序列图。
图7是根据实现方式的集成的SQL调试器的框图。
在各图中,相同的参考标记和标号指示相同元件。
具体实施方式
给出如下详细描述以使本领域任何技术人员能够做出、使用和/或实践所公开的主题,并且如下详细描述是在一个或多个特定实现方式的背景下提供的。对本领域技术人员来说,对公开的实现方式的各种修改将是非常明显的,并且本文定义的一般原理可以应用于其它实现方式和应用而不脱离本公开的范围。因此,本公开不打算限制描述和/或图示的实现方式,而是符合与本文公开的原理和特征一致的最宽的范围。
结构化查询语言(SQL)可以是独立的(单独的)SQL语句、数据库过程(例如,存储过程)的一部分、或者动态或静态嵌入(即,包含)在任何高级编程语言(例如:C/C++、JAVA、COBOL和ABAP)中。这些独立的、数据库过程的一部分、或嵌入的SQL语句可以是非常复杂的,并且可以包含例如数百行代码,包括多个数据库表、多个子(嵌套的)查询、和/或过滤器的复杂接合。如果没有调试这样的SQL语句的能力,则很难开发和维护它们并且结果是很差的用户体验,和/或引入错误,这可能导致用户更高的总体拥有成本。
数据库过程(例如,存储过程)的调试器通常支持调试(例如,检测和校正)数据库过程的逻辑部分,但是将SQL语句(自然主导数据库过程的一部分)视为没有介入能力的原子步骤(例如,黑盒)——即,用户可以查看SQL语句的最终结果但是无法了解被用于访问或修改信息的与SQL语句相关联的子步骤的每个有序集合的结果(中间结果)。因为数据库过程主体可以包括非常复杂的SQL语句,所以典型的数据库过程调试器可能相对无用,因为与SQL语句本身相比,关于所包括的SQL语句的逻辑可能相对简单,或者甚至根本不具备逻辑。例如:
在没有调试所包含的SQL语句(例如,“ComplexSQL<X>Statement”)的能力的情况下,数据库过程可能难以调试,导致差的用户体验,和/或引入错误,这可能导致用户更高的总体拥有成本(TCO)。在上面的示例中,存储过程调试器是非常有限的,没有能力调试SQL,因为只有复杂的SQL语句结果可以被分析,而不是例如结果是如何生成的。
用户可以被认为是测试、分析、检查和/或开发作为应用的一部分的SQL或独立的SQL的任何人,例如软件开发人员、数据库管理员(DBA)、商务智能(businessintelligence,BI)专家、质量保证(QA)专家等等。
SQL是用于构建查询以管理关系型数据库(DBMS)中的数据的被设立的专用编程语言。用于***、更新和查询数据的SQL命令/语句(也叫作数据操纵语言(DataManipulationLanguage,DML)命令)可能是非常复杂的,并且可能很难编写并证明是正确的。注意,其它SQL语句,诸如DDL(DataDefinitionLanguage,数据定义语言)、DCL(DateControlLanguage,数据控制语言)和TCL(TransactionControl,交易控制)语句,通常不经常改变,并且不包含复杂逻辑。然而,在一些实现方式中,所描述的构思也可以应用到DDL、DCL和/或TCL。
SQL语句被编译成单个运行计划(见图2A和图2B)。在一些实现方式中,数据库存储过程可以包含针对通常被包括作为存储过程的主导嵌入部分的SQL的专有扩展。
像C++、PYTHON和/或JAVA那样的传统语言的编程环境提供调试工具(调试器),其被开发人员(例如,用户)用于检查他们的程序、发现错误和/或证明正确的运行。在没有SQL调试器的情况下,用户如今被迫使用原始的方法来调试SQL语句。由于在商业应用中使用海量数据库的不断增长的趋势,因此SQL调试工具的不可用性是关键问题。
SQL调试器是支持SQL调试的用户工具。SQL调试器通常由两部分组成:客户端方SQL调试器和服务器方SQL调试器。在没有SQL调试功能的情况下,用户通常忙于费时和繁琐的变通方法(workaround)以便检测到错误并校正SQL语句。常见的方法是:
●运行计划(文本或图形视图)调查。
●将SQL语句拆分为子SQL语句(包括省略特定部分,诸如分组、排序字段和过滤)并单独运行每个子SQL语句。
需要的是用于调试SQL语句的计算机实现的方法、计算机程序产品和***。描述的是新颖的SQL调试器,允许用户以有效的方式检查和调试SQL语句,该方式类似于最先进的以传统的编程语言编写的应用的调试过程。
传统的编程语言将程序描述为命令语句的序列;相应地,调试器支持在这样的语句之间设置断点,这允许在这些逻辑点处审查程序的状态。断点是程序中的点,当到达该点时,触发器调试过程行为,诸如程序运行中止(暂停)。
然而,SQL是尤其在分析型用途的情况下具有可包含任意复杂的嵌入式逻辑的说明性语言。与传统的编程语言不同,没有各个操作的可标识序列,因此需要特殊的解决方案。
SQL调试器提供了逐步运行SQL语句(类似于逐行运行传统的编程语言)和审查(和/或估计/修改)每一步的中间结果(例如,中间表和记录)(类似于传统的编程语言的变量的值)的功能。SQL断点可以对SQL语句本身和/或相关的运行计划进行设置。中间结果的修改值可以被使用,以使用新的(修改的)值继续过程。这是通过允许用户在客户端上修改值然后触发数据库查询引擎中的值的改变来实现的。
SQL调试帮助用户确定为什么SQL没有按预期运行,并且可以通过修改中间结果来模拟新的情形。在调试期间,用户应该能够基于中间结果、上下文或者存储的表等来估计表述。在一些实现方式中,表述可以是简单的表述或自由查询,并且开发人员应该能够设置具有自由表述形式的条件断点或查询作为条件。
在一些实现方式中,数据库查询引擎揭露了用于调试目的的应用编程接口(API),尤其,例如,允许SQL语句运行暂停、检索和操纵中间结果的能力、和运行恢复。SQL调试器可以是独立的,和/或与数据库过程调试器(或任何高级编程语言调试器)集成,从而用户可以直接(或从其它应用或另外的调试器,诸如数据库过程调试器)启动SQL语句运行,然后输入SQL语句以访问内部SQL语句并与内部SQL语句一起工作以用于调试(例如,类似于输入如上所述的传统的编程语言的嵌套方法)。例如,用户可以单步执行(stepinto)SQL语句部分或基于运行计划设置断点并相应地中断(暂停)。
在一些实现方式中,映射器在数据库查询引擎步骤和由用户运行的原始SQL语句之间映射。因此,用户获得可以直接匹配到原始SQL语句部分的结果。
调试允许开发人员检测到错误并校正SQL语句的逻辑,并且这通常不意味着性能优化(至少不是深度优化调整)。因此,SQL语句调试期间的运行计划可以被计划/执行而不使用优化(例如,以顺序的步骤代替典型的并行步骤来执行的SQL语句)。通常,非优化是默认的调试模式,因为它提供了与实用性平衡的调试能力目的。如果用户决定使用优化的模式或需要实际调试优化,则可以执行并行调试(与多线程调试相同),只要用户知道多线程调试可能导致一些跳过动作等(例如,虽然设置了断点但是无中断,等等)即可。优化级别不是二分选项,而是适合开发人员要求(例如,经验和实际调试目的)的范围和子集。
SQL可以是存储过程的一部分,和/或被嵌入在任何高级编程语言中。在多语言开发场景中,统一的调试器必须能够支持跨语言边界的调试;包括嵌入式SQL语句。统一的调试器(也叫作集成调试器、跨语言调试器等)是支持与在标准调试器中对于单个编程语言的多重嵌套调用栈调试类似地调试多编程语言的用户工具。
典型的SQL场景可以包括存储过程调试器和SQL调试器的集成,或者具有SQL调试器的任何高级编程语言调试器。
单个SQL语句可以由数百行组成,包括多个表、多个子(嵌套)查询和过滤器的复杂接合。因此,其可以被认为是常规程序。例如:
SQL语句的运行次序是由DBMS确定的,并且由SQL运行计划组成。SQL运行计划在逻辑上是依赖图(例如,有向无环图)的形式,由节点和连接节点的有向边组成。节点也被称为运行计划操作符,取得一个或多个输入,并计算一个或多个输出。运行计划操作符是原子可调试部分,类似于传统编程语言中的语句。如果一个节点产生的输出是依赖节点的输入,则在两个节点之间存在有向边。
考虑下面的单个SQL语句:
SELECTprod_name,avg(price)
FROMsales,products
WHEREproducts.prod_id=sales.prod_id
GROUPBYprod_name;
与这个SQL语句相对应的示例运行计划在图2A和图2B中呈现。图2A和图2B表示根据实现方式的简单的示例SQL运行计划200a和200b。计划操作符(即,在SQL运行计划中涉及的操作符-访问、接合、分组等)被视为所发明的SQL调试器的原子操作;可以在运行每个计划操作符之前或之后设置断点。断点是程序中的点,当到达该点时,触发器调试过程行为,诸如程序运行中止(暂停)。SQL断点可以对SQL语句本身和/或相关的运行计划进行设置。注意,图2B的运行计划可以是图2A的运行计划的非优化形式(例如,访问产品和访问销售在图2A中并行地执行,而在图2B中,这些操作被连续地执行),或者可以处于一优化范围(即,半优化或特定优化级别)。在这种针对调试模式(例如,没有优化)存在不同的运行计划的情况下,运行计划可以在产生性(productive)运行计划(优化)和(一个或多个)调试运行计划((一个或多个)非优化的计划)之间进行区分。
图2C是表示显示示例图形化SQL运行计划的示例用户界面的框图200c。重申以上内容,在其它实现方式中,这个示例图形化SQL运行计划还可以以文本和/或其它格式表示。
图2D是表示根据实现方式的显示源代码202d(具有调试断点204d)和图形化SQL运行计划206d两者的并排用户界面的示例的框图200d。在一些实现方式中,示例用户界面可以允许用户在每一个表示(即,文本或图形)中设置调试断点(例如,204d),其中利用自动地执行对准来反映这两种表示中的调试断点。在一些实现方式中,在运行暂停的情况下,运行暂停的相关位置可以在两个表示中都突出显示。重申以上内容,在其它实现方式中,示例图形化SQL运行计划还可以以其它格式(例如,文本,图形等-可能具有不同的细节级别)来表示。
图1是图示出根据实现方式的用于调试结构化查询语言(SQL)语句的示例分布式计算***(EDCS)100的框图。图示的EDCS100包括在基于云的计算网络130上通信的服务器102和多个客户端140,或可与它们通信地耦合。在一些实现方式中,EDCS100的一个或多个组件可以被配置为在基于云的计算环境的内部或外部操作。
在高级别上,服务器102是可操作来接收、发送、处理、存储、或管理与EDCS100相关联的数据和信息的电子计算设备。一般而言,服务器102提供适合服务器的功能,包括数据库功能、数据处理、和/或从客户端140接收内容和/或功能/向客户端140供应内容和/或功能。根据一些实现方式,服务器102还可以包括电子邮件服务器、web服务器、缓存服务器、流传输数据服务器、商务智能(BI)服务器和/或其它服务器,或可与它们通信地耦合。
尤其,服务器102负责从与EDCS100的客户端140相关联的一个或多个客户端应用146接收请求和/或内容。服务器102还对接收到的请求,例如经服务器应用107、数据库106和/或服务器102的其它组件(无论是否图示出)处理的请求,作出响应。
除了从客户端140接收到的请求,请求还可以被从内部用户、外部或第三方、其它自动化应用、以及任何其它适当的实体、个人、***、或计算机发送到服务器102。在一些实现方式中,各个请求可以被从直接访问服务器102的用户直接发送到服务器102(例如,从服务器命令控制台或通过其它任何适当的访问方法)。
服务器102的每个组件可以使用***总线103进行通信。在一些实现方式中,服务器102的任何和/或所有组件,无论硬件和/或软件,都可以使用应用编程接口(API)112和/或服务层113通过***总线103彼此接口和/或与接口104接口。API112可以包括例程、数据结构和对象类的规范。API112可以与计算机语言无关或有关,并且是指完整的接口、单一的功能、或甚至一组API。服务层113为EDCS100提供软件服务。使用此服务层,服务器102的功能可以被所有服务消费者访问。软件服务,诸如由服务层113提供的软件服务,通过定义的接口提供可重用的、已定义的商业功能。例如,接口可以是以JAVA、C++或其它合适的语言编写的软件,其提供可扩展标记语言(XML)格式或其它适合格式的数据。
虽然API112和/或服务层113被图示为EDCS100中的服务器102的必要组成组件,但是可替换实现方式可以将API112和/或服务层113图示为相对于EDCS100的其它组件独立的组件。此外,API112和/或服务层113的任何或所有部分都可以被实现为另外的软件模块、企业应用或硬件模块的子模块或次模块,而不脱离本公开的范围。例如,API112可以被集成到数据库106、服务器应用107、服务器框架109中,和/或全部或部分地集成到服务器102的其它组件(无论是否图示出)中。
服务器102包括接口104。虽然在图1中图示为单个接口104,但是根据EDCS100的具体需要、期望或具体实现方式,可以使用两个或更多个接口104。接口104被服务器102用于与连接到网络130的分布式环境中的其它***(包括在EDCS100内)通信;例如,客户端140以及通信地耦合到网络130的其它***(无论是否图示出)。一般而言,接口104包括逻辑,其以适当组合被编码在软件和/或硬件中并且可操作来与网络130通信。更具体地,接口104可以包括支持与通信相关联的一个或多个通信协议的软件,以使得网络130或接口的硬件可操作来在图示出的EDCS100的内部和外部传达物理信号。
服务器102包括处理器105。虽然在图1中图示为单个处理器105,但是根据EDCS100的具体需要、期望或具体实现方式,可以使用两个或更多个处理器。一般而言,处理器105运行指令并操纵数据来执行服务器102的操作。在一些实现方式中,处理器105可以或者完全地或者结合客户端140地运行调试结构化查询语言(SQL)语句所需的功能。
服务器102还包括数据库106,其为服务器102、客户端140和/或EDCS100的其它组件保存数据。虽然在图1中图示为单个数据库106,但是根据EDCS100的具体需要、期望或具体实现方式,可以包括两个或更多个数据库。虽然数据库106被示为服务器102的必要组成组件,但是在可替换实现方式中,数据库106可以在服务器102和/或EDCS100的外部。数据库106可以被配置为存储与本公开一致的任何适合的数据(例如,查询、用户简档、对象和内容、客户端数据等——无论是否图示出)的一个或多个实例。在一些实现方式中,数据库106可以是具有集成的数据库和计算层的高性能分析型应用,其允许处理主存储器中的大量实时数据以便从分析和交易(例如,内存数据库)提供即时结果。
尤其,服务器应用107表示能够为服务器102提供与本公开一致的任何适当功能(例如,相对于由客户端140发送的消息的接收、处理、发送和/或其它功能)的一个或多个算法软件引擎。在一些实现方式中,服务器应用107可以被用于特定于服务器102的功能。在一些实现方式中,服务器应用107可以提供和/或修改由EDCS100的其它组件提供和/或使其可用的内容。换句话说,服务器应用107可以响应于从客户端140接收到的对于内容的消息(例如,请求),结合服务器102和/或EDCS100的一个或多个其它组件来动作。服务器应用107还可以结合客户端140来动作以执行处理。
虽然图示为单个服务器应用107,但是服务器应用107可以被实现为多个服务器应用107(例如,见图3-图5)。另外,虽然图示为集成到服务器102,但是在可替换实现方式中,服务器应用107可以在服务器102和/或EDCS100的外部(例如,全部或部分地在客户端140、其它服务器102(未图示)等上运行)。一旦特定服务器应用107被启动,特定服务器应用107就可以例如被应用或EDCS100的其它组件用来交互地处理接收到的消息(例如,来自客户端140的)或者用于与本公开一致的任何其它功能。在一些实现方式中,服务器应用107可以是基于网络的、基于web的、本机的、远程的、和/或与本公开一致的其它合适的应用。
在一些实现方式中,特定服务器应用107可以响应于从其它服务器应用107、与另一服务器102相关联的其它组件(例如,软件和/或硬件模块)、和/或EDCS100的其它组件接收到的至少一个消息并且结合该消息来操作。在一些实现方式中,服务器应用107可以被使用网络130在云计算环境中访问并且运行。在一些实现方式中,特定服务器应用107的一部分可以是与被远程调用的服务器应用107相关联的web服务,而服务器应用107的另一部分可以是接口对象或代理,其被绑定以供EDCS100的任何合适的组件处理。此外,任何或所有的特定服务器应用107可以是另外的软件模块或应用(未图示)的子模块或次模块,而不脱离本公开的范围。更进一步地,特定服务器应用107的部分可以由直接在服务器102处工作的用户运行或访问,也可以在相应客户端140处远程运行或访问。在一些实现方式中,服务器102或者服务器102或EDCS100的任何合适的组件可以运行服务器应用107。
存储器108通常存储与服务器102的目的相关联的对象和/或数据,但是也可以被结合数据库106使用以存储、传递、操纵等对象和/或数据。存储器108可以与EDCS100内的其它存储器一致,并且也可以被用来存储与存储在EDCS100的其它存储器中的数据类似的数据以用于诸如备份、缓存的目的和/或其它目的。
客户端140可以是任何计算设备,其可操作来至少连接到服务器102或者与服务器102通信。一般而言,客户端140包括电子计算设备,其可操作来接收、发送、处理、和存储与EDCS100(例如,服务器应用107)相关联的任何适当的数据。更具体地,尤其,客户端140可以收集来自客户端140的内容,并且将收集的内容上传到服务器102以供服务器应用107处理。客户端通常包括通过***总线141接口的处理器144、客户端应用146、存储器/数据库148和/或接口149。
在一些实现方式中,客户端应用146可以使用在启动时接收到的参数、元数据和其它信息,以访问来自服务器102和/或EDCS100的其它组件的特定数据集。一旦特定客户端应用146被启动,用户就可以交互地处理与服务器102和/或EDCS100的其它组件相关联的任务、事件或其它信息。例如,客户端应用146可以生成特定消息(例如,数据库请求或者对于内容的请求)并将其发送给服务器102。
客户端应用146是任何类型的应用(例如,浏览器、SQL调试器等),其允许客户端140导航到/导航自请求、查看、创建、编辑、删除、管理、和/或操纵与服务器102和/或客户端140相关联的内容。例如,客户端应用146可以向用户呈现由服务器102(例如,服务器应用107和/或数据库106)生成/发送的图形用户界面(GUI)显示和相关联的数据。在一些实现方式中,客户端应用146作为SQL相关的应用(例如,SQL调试器)来工作,其独立于或者结合服务器102来工作(例如,在服务器102上运行的SQL相关的应用)。例如,见图3-图5。
在一些实现方式中,客户端应用146还可以被用于执行一般而言与客户端140、服务器应用107、数据库106和/或服务器102相关的管理功能。例如,服务器应用107可以基于特定用户登录、请求等,生成和/或发送管理页到客户端应用146。
此外,虽然图示为单个客户端应用146,但是客户端应用146可以被实现为客户端140中的多个客户端应用。例如,取决于客户端140和/或EDCS100的具体需要,可以存在本机客户端应用和基于web(例如,HTML)的客户端应用。
接口149被客户端140用于使用网络130与分布式计算***环境中的其它计算***(包括在EDCS100内)通信。例如,客户端140使用接口与服务器102以及可以通信地耦合到网络130的其它***(未图示)通信。接口149可以与上面描述的服务器102的接口104一致。处理器144可以与上面描述的服务器102的处理器105一致。具体地,处理器144或者完全地或者结合客户端140地运行指令并操纵数据以执行客户端140的操作,包括调试结构化查询语言(SQL)语句所需的功能。
存储器/数据库148通常存储与客户端140的目的相关联的对象和/或数据,但是也可以与上面描述的服务器102的数据库106和/或存储器108、或EDCS100内的其它存储器一致,并且可以被用于存储与在EDCS100的其它存储器中存储的数据类似的数据,以用于诸如备份、缓存等的目的。虽然被图示为组合的存储器/数据库,但是在一些实现方式中,存储器和数据库可以是分离的(例如,如在服务器102中那样)。注意,在一些实现方式中,分离的数据库106和存储器108也可以被组合,如客户端140中所图示的。
此外,图示的客户端140包括GUI142,其与EDCS100的至少一部分接口以用于任何合适的目的。例如,GUI142(图示为与客户端140a相关联)可以被用于查看和/或发送与客户端140、服务器102、或者EDCS100的任何其它组件相关联的数据。具体地,在一些实现方式中,客户端应用146可以渲染从服务器应用107接收到的GUI界面和/或从EDCS100的任何元件检索到的数据。
可以存在任意数量的与EDCS100相关联的、或者在EDCS100外部的客户端140。例如,虽然图示的EDCS100包括使用网络130通信地耦合到服务器102的三个客户端140,但是EDCS100的可替换实现方式可以包括适合于EDCS100的目的的任意数量的客户端140。额外地,还可以存在在EDCS100的图示的部分外部的一个或多个附加客户端140,其能够使用网络130与EDCS100交互。此外,术语“客户端”和“用户”在适当时可以互换使用,而不脱离本公开的范围。此外,虽然客户端140按照被单个用户使用来描述,但是本公开设想到许多用户可以使用一个计算机,或者一个用户可以使用多个计算机。
图示的客户端140(图示为140a-140d的示例实现方式)旨在包括任何计算设备,诸如台式计算机/服务器、膝上型计算机/笔记本计算机、无线数据端口、智能电话、个人数据助理(PDA)、平板计算设备、这些设备内的一个或多个处理器、或任何其它合适的处理设备。例如,客户端140可以包括计算机,其包括:输入设备,诸如小键盘、触摸屏、或可以接受用户信息的其它设备;输出设备,其传达与服务器102或客户端140本身的操作相关联的信息,包括数字数据、视频和/或音频信息、或GUI142(如仅作为示例相对于客户端140a图示的)。
图3是根据实现方式的允许远程调试SQL语句的示例客户端/服务器的框图300。在典型的SQL调试场景中,过程允许调试在远处***上运行的程序(例如,SQL语句)(远程调试)。主机器(本文中:客户端140)是在运行调试器工具(SQL调试器302)的计算机。
目标机器(例如,服务器102)是运行远程调试服务器(SQL调试器304)和需要被调试的SQL语句(调试对象306)的计算机。客户端方SQL调试器302控制服务器方SQL调试器304。客户端方SQL调试器302通常与控制服务器方SQL调试器304的用户界面相关联以便支持用户的SQL调试。服务器方SQL调试器304通常等待来自客户端方SQL调试器302的命令。输入调试命令可以从客户端方SQL调试器302完成或直接在服务器方SQL调试器304上完成,并且结果可以是相同的。然而,客户端方SQL调试器302基于用户交互提供容易和简单的调试过程,因此其是常见的用于输入调试命令的场景。
作为示例,为了启动远程调试,客户端方SQL调试器302通过网络连接到服务器方SQL调试器304。然后,客户端方SQL调试器302可以控制服务器102上的调试对象306(例如,使用服务器方SQL调试器304)并可以检索关于其状态的信息。客户端方SQL调试器302还可以直接触发调试对象306,但是在这种情况下,客户端方SQL调试器302不能直接控制调试对象306(即,仅使用服务器方SQL调试器304)。服务器方SQL调试器304是数据库服务器(例如,服务器102)的必要组成部分,而在一些实现方式中,客户端方SQL调试器302可以是供应商的工具以及是基于服务器方SQL调试器304的协议的任何外部工具。
因此,服务器方SQL调试器304使用相关的内部API控制(在调试会话期间)查询引擎(见图4),并且具有影响运行的能力(例如,设置断点、中断、恢复、暂停SQL运行)。尤其,API包括请求/响应机制和事件机制,以便支持有效的调试方案。
服务器方SQL调试器304提供与中断点(当前运行上下文)相关的大量数据,诸如运行时间、行数、数据量大小、某些表述、计划操作符级别、和/或附加数据,以使用户更好地了解SQL语句(隐含逻辑)如何工作。此外,性能相关数据也被提供,诸如I/O成本、CPU成本、和使用的最大存储器。因此,用户有更好的方法使SQL语句(例如,调试对象306)按预期运行,并了解对于调试对象306的潜在的改进和优化。
客户端方SQL调试器302还可以包括允许调试对象306的可视化的用户界面(例如,GUI142)。用户界面可以按不同的风格提供,从简单的命令行到详尽的GUI。根据用户的偏好,用户界面还可以包括具有调试的部分重点的原始SQL语句。下面,例如,“WHERE”语句被指示为(这里,用“>>>”和“<<<”指示)正在被调试。在其它实现方式中,颜色、图形突出显示等可以被用于指示(一个或多个)特定SQL语句。
在一些实现方式中,根据用户和/或管理员偏好,用户界面还可以以各种不同的可视化包括SQL运行计划(例如,见图2A和图2B)以供参考。
图4是图示出根据实现方式的用于调试SQL语句的图1的EDCS的附加组件的框图400。可以看到,服务器102是数据库管理***(DBMS),包含若干个组件,包括连接和会话管理组件402以及特定相关SQL组件,诸如SQL处理器404。连接和会话管理组件402创建并管理会话和连接以用于客户端140和服务器102之间的交互信息交换。SQL处理器404负责SQL语句处理、数据操纵语句,包含服务器方SQL调试器304并且将SQL语句转换为运行计划,该运行计划由被查询引擎406运行的计划操作符组成。
查询引擎406是服务器方SQL查询运行器并且运行SQL语句部分(计划操作符),并且具有对于每个请求揭露中间结果(在每个计划操作符前后)的能力。查询引擎406还在具体请求之后,具体化并发送相关数据到客户端140。查询引擎406还在查询(按命令)运行期间与数据408(例如,在持久存储器或内存存储器中的数据)进行交互,以用于数据操纵、锁定和管理交易。
客户端140负责用户界面(用户交互)以及与服务器102的相关交互。典型的客户端140是集成开发环境(IDE),其包括用于应用开发和运行的一组编程工具,包括客户端方SQL调试器302。客户端方SQL调试器302可以可视化运行计划(例如,文本的或图形的)和/或聚焦于调试的SQL语句(例如,调试对象306)。客户端140(和客户端方SQL调试器-也就是服务器/服务器方SQL调试器304)可以使用任何独立的技术,包括支持IDE开发要求的现有调试器框架(例如,对于客户端方调试器:ECLIPSE或MicrosoftVISUALSTUDIO)。
客户端-服务器交互由通信部件处理,通信部件与服务器102的连接和会话管理组件402相关,并且还包括可适用(applicative)(调试器)协议,其与调试器通信管理器(服务器方SQL调试器304的部件-见图5)相关。连接和会话管理组件402管理客户端会话和连接,并且还(基于***要求)管理授权,使得对于每个会话维护例如与提交和交易相关的一组参数。一旦会话建立,客户端140就可以通常使用直接SQL语句将消息发送到服务器102,但是也可以利用任何其它协议、标准或适当内容发送消息。连接和会话管理组件402不分析和处理可适用(调试器)协议,也不分析和处理调试对象306本身,而是启用通信通道并且将数据传递到SQL处理器404。
在一些实现方式中,存在两种用于SQL调试场景的通信通道:
●SQL运行通道410
用于产生性SQL运行的标准通道(即,不专门针对调试目的;此外,没有调试干扰)。在调试过程期间,SQL运行通道410被用于调试对象306。在典型的实现方式中,根据标准SQL行为,SQL运行通道410具有单一方向的通信,请求-响应模式。
●SQL调试通道412
用于特定调试交互的通道,支持诸如断点设置、暂停、运行/恢复、单步执行、下一步骤(step-next)/结束(over)、跳出(step-out)/返回的能力。用户可以单步执行SQL语句部分或者基于运行计划设置断点并且相应地中止(暂停)。在典型的实现方式中,SQL调试通道412支持双向通信,从客户端方SQL调试器302发送到服务器方SQL调试器304的命令(请求-响应模式-也叫作请求驱动、请求应答、基于请求、拉模式(pullmode)等等),以及从服务器方SQL调试器304发送到客户端方SQL调试器302的通知(事件模式–也叫作事件驱动、通知、发布-订阅、推模式(pushmode)等等)。例如,设置断点通过(由客户端方SQL调试器302触发的)命令完成,而断点命中通知通过(由服务器方SQL调试器304触发的)事件完成。这样的由命令和通知组成的协议的示例是CROSSFIRE。
服务器方SQL调试器304使用调试协议与客户端方SQL调试器302进行通信,并且与查询引擎406通信(使用相关的内部API)以在调试会话期间接管对SQL运行的控制。此外,在一些实现方式中,服务器方SQL调试器304保存并管理特定调试数据。在其它实现方式中,客户端方SQL调试器302和/或EDCS100的其它组件也可以保存并管理调试数据。
图5是图示出根据实现方式的SQL处理器的组件(图4的EDCS的详细组件)的详细视图的框图500。在典型的实现方式中,SQL处理器包括解析器502、核查器504、计划缓存506、优化器508和服务器方SQL调试器304。解析器502(也叫作SQL命令解析器)执行对当前SQL语句306的语法核查,并且如果没有识别出语法,则提出语法错误。解析器502还将SQL语句306转换为内部查询树(对应于查询的树状结构)。核查器504被用于基于查询树来访问元数据并且验证类型,这是在解析器502活动期间(语法和语义两者的正确性)需要的。计划缓存506对运行计划(产生性和调试运行计划两者)进行缓存,以避免对于相同查询的重复优化努力。计划缓存506将查询字符串映射到运行计划和在优化期间衍生的其它元数据。优化器508(也叫作查询优化器)计算最有效的方式(或在调试模式的情况下根据所需的优化级别),以基于由解析器502产生的查询树来执行由提交的查询所表示的请求,所以它在为运行做准备。在一些实现方式中,只有DML语句(例如,选择、***、更新、删除)被传递,因为它们可以以许多不同的方式进行处理。查询优化器508可以编译命令、在可能的时候进行优化、核查安全性、以及创建最终的运行计划。优化器508的行为可以根据所请求的优化级别在调试模式中改变。
服务器方SQL调试器304包括通信管理器510、映射器512、引擎514、断点516、符号处理器518和表述估计器520。通信管理器510与EDCS100的各种组件(例如,与查询引擎406和客户端方SQL调试器302)进行通信。通信管理器510处理用于与查询引擎406的客户端通信和内部通信(内部API)(两个有状态连接)的调试器协议。映射器512在(用户已知的)原始SQL语句和相应的运行计划(例如,计划操作符的解决方案)之间映射。映射器512将相关的原始SQL语句部分提供给当前运行的步骤。引擎514控制组件的编排。例如,从查询引擎406接收断点命中通知并且将其分发到通信管理器510,以用于发送到客户端方SQL调试器302。引擎514还监控正在调试的运行计划,传达正在运行的运行的状态,并且与符号处理器518和表述估计器520进行交互以提供对运行的存储器和变量的实时状态分析。断点516存储并操作允许运行暂停的会话的断点。断点516验证断点(无论它们是否有效,例如,为了避免在不可中断的地方设置断点),并且基于给定逻辑支持条件断点。与传统的编程语言矛盾的是,调试逻辑断点位置不是直接链接到SQL语句,而是链接到相关的运行计划和计划操作符。符号处理器(也叫作符号提供器)将调试符号的SQL运行计划映射到运行实例的SQL运行计划,从而可以提供有意义的信息(例如,表述估计)。当程序已经在特定点停止时,表述估计器520支持动态变量和表述估计。这个功能是使用运行上下文和中间结果来实现的。
图6是根据实现方式的用于调试结构化查询语言(SQL)语句的方法600的序列图。为了清晰呈现,下面的描述一般在图1、图2A-图2B和图3-图5的上下文中描述方法600。然而,将理解,方法600可以例如通过任何其它合适的***、环境、软件和硬件实现,或者在适当时通过***、环境、软件和硬件的适当组合来执行。在一些实现方式中,方法600的各个步骤可以并行、组合、循环、和/或以任何次序运行。注意,为简洁起见,序列图600是指简单的调试场景,但不代表所有可能的场景。例如,没有提及多上下文调试(例如,单一调试会话中的并行SQL调试),或来自不同客户端的调试对象触发,或表述检查,或错误处理,这些都是可能的场景。本领域普通技术人员应该理解反映这些其它可能的场景所需的对序列图600的修改。
调试器运行和调试对象运行是不挂钩(decoupled)的过程。在一些实现方式中,调试对象的运行可以通过(与调试器过程相关的)任何过程来发起:即使来自不同的客户端、不同的用户或不同的机器。
在[1]中,用户基于调试运行计划加载所选SQL语句的SQL调试视图,以便支持用户的断点设置。在一些实现方式中,调试运行计划考虑不同的运行优化级别,并且包括对于结构化查询语言(SQL)语句的映射。方法600从[1]前进至[1.a]。
在[1.a]中,获取调试运行计划,其包括到SQL语句的映射,以便支持断点设置。调试运行计划通常被缓存(例如,在服务器方)以用于重复的调试场景,并且为了潜在的优化,调试运行计划可以在设计时间期间被编译(例如,对于持久的SQL语句来说相关,如在存储过程内)。方法600从[1.a]前进到[2]。
在[2]中,用户基于接收到的调试运行计划和/或到所选SQL语句的映射维护断点(例如,添加/删除)。断点标识特定计划操作符(更准确地,在计划操作符之前或之后),并且在一些实现方式中,断点被存储(例如,持久性)在客户端方中。如果已经配置了断点,则用户可以跳过这一步。方法600从[2]前进到[3]。
在[3]中,用户开始对已经选择的SQL语句的调试过程。方法600从[3]前进到[3.1]。
在[3.1]中,初始化调试会话(可能包含多个上下文-即,多个调试对象)。例如,客户端发送基于会话的配置的数据,诸如SQL优化级别(例如,全、半、无)。SQL处理器为调试会话做准备。方法600从[3.1]前进到[3.2]。
在[3.2]中,根据用户名、应用名、连接ID、调试令牌或者在SQL运行通道(调试对象)中提供的任何其它属性来附加标准(过滤器)。客户端发送标准,并且SQL处理器开始例如在JDBC连接(虽然其它连接类型也是可能的)上验证这些标准。客户端也可以发送新的附加标准,只要调试会话是活动的即可(在这种情况下,其会覆盖先前的附加标准)。在其它实现方式中,新的附加标准不会自动覆盖先前的附加标准。方法600从[3.2]前进到[3.3]。
在[3.3]中,基于已配置的断点来设置断点。断点配置由用户完成,并且也可以从持久性加载(一次完成,并且也存储起来供以后调试)。有可能没有配置的断点,因为用户想使用单步执行操作(即,在第一个计划操作符之前暂停)。在一些实现方式中,还可以使用任何过程来设置断点。方法600从[3.3]前进到[3.4]。
在[3.4]中,触发SQL语句(调试对象)。注意,调试对象可以从不同的客户端过程,或者甚至从不同的机器触发。为了允许调试,附加标准和调试对象连接(例如,JDBC)属性之间的相关性是重要的。只有在SQL运行结束时才提供SQL语句响应(与无调试场景相同)。当SQL处理器在连接上匹配所需的标准时,它利用特定调试模式和调试运行计划来初始化查询引擎(根据请求的SQL优化级别)。在这个时间点,SQL处理器向客户端发送附加的通知,以通知调试对象过程被附加到调试器并且调试对象准备好客户端方SQL调试器运行控制。方法600从[3.4]前进到[4]。
在[4]中,用户继续SQL运行。SQL运行的继续可以利用单步执行、下一步骤/结束、跳出/返回、运行/恢复等的解决方案。SQL处理器将请求分发给查询引擎,该查询引擎运行调试对象,并向客户端通知请求被运行。方法600从[4]前进到[4.1]。
在[4.1]中,当查询引擎到达相关下一步骤(根据所请求的运行计划步骤)时,它提供中断通知(具有中断地点的细节)。方法600从[4.1]前进到[4.2]。
在[4.2]中,客户端请求状态细节,诸如当前状态(计划操作符、相关原始SQL部分、和/或中间结果),和先前的步骤(例如调用栈-包括关于当前和先前的调试对象计划操作符的信息)。对于中间结果,其仅接收句柄。为了访问并获取具体化数据(由查询引擎产生的、仅用于调试信息揭露),需要进一步的具体用户请求。方法600从[4.2]前进到[4.3]。
在[4.3]中,当查询引擎到达SQL运行的末尾时,其向客户端(用户)发送SQL运行响应(运行结果)。方法600从[4.3]前进到[5]。
在[5]中,用户停止调试过程。在典型的实现方式中,这在SQL语句(一个或多个)运行结束之后执行(手动或自动)。也可以在SQL语句运行之内停止调试过程。方法600从[5]前进到[5.1]。
在[5.1]中,客户端终止调试会话。SQL处理器将不再验证连接(例如,JDBC)属性(如在会话中所请求的),并且将清理调试器会话的相关数据。注意,[4]、[4.1]和[4.2]可以运行多次,直到SQL语句运行结束[4.3]为止。
注意,与传统的编程语言运行矛盾的SQL运行具有使得调试过程更为复杂的几个方面:
●优化-如上所述,调试的目的是为了允许用户检测和校正SQL语句逻辑并且它并不意在性能优化(至少不是深度调整)。因此,SQL调试(运行)期间的运行计划可能没有优化或者具有有限的优化(产生性模式对比调试模式)。
●数据量大小–在调试期间,用户能够查看中间结果并且基于中间结果(例如,中间表和记录)、上下文以及存储的表等来估计表述。表述可以是简单的表述或自由查询。由于潜在的高数据量大小,中间结果不会被自动地从服务器发送到客户端(例如,在断点命中之后),而只是在每次明确请求时发送;不仅如此,初始响应通常将不包括除了元数据外的任何数据,元数据例如数据大小和多个结果记录。客户端应该发送明确请求以便访问并获取实际数据。该数据请求-响应模式支持大小限制和分页机制。
图7是根据实现方式的集成的SQL调试器的框图700。在一些实现方式中,SQL调试器可以是用于调试独立的SQL语句的单独的SQL调试器,或者被集成到用于其它编程语言的调试器。典型的用例是具有被编译为SQL块的存储过程706(例如,其以SQLSCRIPT语言或任何高级编程语言编写)的用例。然后,用户可以与用户可单步执行原始编程语言嵌套的调用栈的方式类似地单步执行嵌入式SQL。
集成的(统一的)调试器(SQL和非SQL两者)通过揭露允许其它调试器702触发(启动)SQL调试器302的客户端方API来实现。以这种方式,即使从另外的编程语言触发,相关的SQL运行也可以被调试。重要的是,用户可以调试存储过程(或其它编程语言)706并且无缝地单步执行嵌入式SQL708。
对于每个调试会话,维护一组参数(即,有状态方面)。重要参数的一个示例是调试器令牌-用于(当前)调试会话的唯一标识符。通信和会话管理402机制支持(可选)客户端令牌(由非SQL调试器创建或标识)以便允许客户端调试器集成(也叫作统一的调试器),例如客户端/服务器方非SQL调试器702/704和客户端/服务器方SQL调试器302/304。在一些实现方式中,非SQL调试器702/704是发起过程的主调试器,并且控制作为从调试器的SQL调试器302/304。在一个典型的场景中(虽然各种其它的场景/实现方式是可能的),客户端方主调试器702创建(生成)令牌并将其传递到客户端方从调试器302。客户端方调试器(主和从)702/302两者向服务器方调试器704/304通知令牌,然后该令牌相应地由通信和会话管理402在通信级别上过滤。以这种方式,该过程保证相关的SQL在非SQL运行之后将被用户调试。注意,这些调试器集成702/302/704/304在后台并且基于GUI统一完成,用户不知道两个分离的过程在后台被集成。也就是说,从用户的角度来看,存在允许调试非SQL和SQL两者的单个调试器。
描述在本说明书中的主题和功能操作的实现方式可以在包括公开在本说明书中的结构及其结构等效物的数字电路、有形体现的计算机软件或固件、计算机硬件、或它们中的一个或多个的组合中实现。描述在本说明书中的主题的实现方式可以实现为一个或多个计算机程序,即,编码在有形、非暂态计算机存储介质上以供数据处理装置运行或控制数据处理装置的操作的计算机程序指令的一个或多个模块。可替代地或另外,可以将程序指令编码在人为生成的传播信号上,例如,为了编码信息而生成的机器生成的电、光、或电磁信号上,以便发送给合适的接收器装置以供数据处理装置运行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行访问存储设备、或它们中的一个或多个的组合。
术语“数据处理装置”、“计算机”或者“电子计算机设备”(或者如本领域普通技术人员所理解的等效物)指的是数据处理硬件,并且包含用于处理数据的所有种类的装置、设备和机器,举例来说,包括可编程处理器、计算机、或多个处理器或计算机。该装置也可以是专用逻辑电路,或者进一步包括专用逻辑电路,例如,中央处理单元(CPU)、FPGA(现场可编程门阵列)、或ASIC(专用集成电路)。在一些实现方式中,数据处理装置和/或专用逻辑电路可以是基于硬件的和/或基于软件的。该装置可选地可以包括为计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理***、操作***、或它们中的一个或多个的组合的代码。本公开设想在利用或不利用传统操作***,例如LINUX、UNIX、WINDOWS、MACOS、ANDROID、IOS或任何其它合适的传统操作***的情况下使用数据处理装置。
也可以称为或描述为程序、软件、软件应用、模块、软件模块、脚本、或代码的计算机程序可以用包括编译或解释语言、或者说明性或过程化语言的任何形式的编程语言来编写,并且其可以以包括独立程序或模块、组件、子例程、或合适用在计算环境中的其它单元的任何形式部署。计算机程序可以,但无需,对应于文件***中的文件。可以将程序存储在保存其它程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中,存储在专用于所涉及的程序的单个文件中,或者存储在多个协调文件(例如,存储一个或多个模块、子程序和代码的部分的文件)中。可以将计算机程序部署成在单个计算机上或在位于单个地点或分布在多个地点上且通过通信网络互连的多个计算机上执行。虽然图示在各种图形中的程序的一些部分被显示成通过各种对象、方法、或其它过程实现各种特征和功能的单独模块,但该程序可以取而代之地按需要包括许多子模块、第三方服务、组件、库等。相反,可以将各种组件的特征和功能按需要组合成单个组件。
描述在本说明书中的过程和逻辑流程可以由执行一个或多个计算机程序以便通过操作输入数据和生成输出来执行功能的一个或多个可编程计算机来执行。该过程和逻辑流程也可以由专用逻辑电路,例如,CPU、FPGA、或ASIC来执行,以及也可以将装置实现成专用逻辑电路,例如,CPU、FPGA、或ASIC。
合适运行计算机程序的计算机可以基于通用或专用微处理器、这两者、或任何其它种类的CPU。一般而言,CPU将从只读存储器(ROM)或随机访问存储器(RAM)或这两者接收指令和数据。计算机的基本元件是用于执行或运行指令的CPU和用于存储指令和数据的一个或多个存储设备。一般而言,计算机还将包括用于存储数据的一个或多个海量存储设备,例如,磁盘、磁光盘、或光盘,或者可操作地耦合到这些海量存储设备,从它们接收数据或将数据传送给它们,或者这两者。然而,计算机不必具有这样的设备。此外,可以将计算机嵌入另外的设备中,例如,仅举几例,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位***(GPS)接收器、或便携式存储设备,例如通用串行总线(USB)闪存驱动器。
合适用于存储计算机程序指令和数据的计算机可读介质(按需要为暂态的或非暂态的)包括所有形式的非易失性存储器、介质和存储器设备,举例来说包括半导体存储器设备,例如,可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、和闪速存储器设备;磁盘,例如,内部硬盘或可换式盘;磁光盘;以及CD-ROM、DVD+/-R、DVD-RAM、和DVD-ROM盘。存储器可以存储各种对象或数据,包括缓存、类别、框架、应用、备份数据、作业、网页、网页模板、数据库表、存储业务和/或动态信息的仓库、和包括任何参数、变量、算法、指令、规则、约束、或对它们的引用的任何其它适当信息。额外地,存储器可以包括诸如日志、政策、安全性或访问数据、报告文件以及其它之类的任何其它适当数据。处理器和存储器可以通过专用逻辑电路来补充,或并入专用逻辑电路中。
为了支持与用户的交互,描述在本说明书中的主题的实现方式可以在具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)、LCD(液晶监视器)、LED(发光二极管)或等离子显示器)以及用户可以利用其向计算机提供输入的键盘和定点设备(例如,鼠标、跟踪球、或触控板)的计算机上实现。也可以使用诸如具有压力灵敏性的平板计算机表面、使用电容或电感测的多点触摸屏、或其它类型的触摸屏之类的触摸屏将输入提供给计算机。其它种类的设备也可以用于支持与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;以及来自用户的输入可以以任何形式接收,包括声音、话音或触觉输入。另外,计算机可以通过将文档发送给用户使用的设备或从用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求,将网页发送给用户的客户端设备上的web浏览器。
术语“图形用户界面”或“GUI”可以以单数形式或复数形式用于描述一个或多个图形用户界面和特定图形用户界面的每个显示。因此,GUI可以表示处理信息并有效地向用户呈现信息结果的任何图形用户界面,包括但不限于web浏览器、触摸屏、或命令行界面(commandlineinterface,CLI)。一般而言,GUI可以包括多个用户界面(UI)元素,一些或全部与web浏览器相关联,这些UI元素诸如商务套餐用户可操作的交互域、下拉列表、和按钮。这些和其它UI元素可以与web浏览器的功能相关或者表示web浏览器的功能。
描述在本说明书中的主题的实现方式可以在计算***中,所述计算***包括后端组件(例如,数据服务器)、或包括中间件组件(例如,应用服务器)、或包括前端组件(例如,具有用户可以通过其与描述在本说明书中的主题的实现方式交互的图形用户界面或Web浏览器的客户端计算机)、或者一个或多个这样的后端、中间件、或前端组件的任何组合。***的组件可以通过任何形式或媒介的有线和/或无线数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(LAN)、无线接入网络(RAN)、城域网(MAN)、广域网(WAN)、全球互通微波接入(WIMAX)、例如使用802.11a/b/g/n和/或802.20的无线局域网(WLAN)、互联网的全部或一部分、和/或在一个或多个位置处的任何其它一个或多个通信***。网络可以例如利用网际协议(IP)分组、帧中继帧、异步传输模式(AsynchronousTransferMode,ATM)信元、语音、视频、数据和/或网络地址之间的其它合适信息通信。
计算***可以包括客户端和服务器。客户端和服务器一般相互远离,并且通常通过通信网络交互。客户端和服务器的关系通过运行在各自计算机上的且相互具有客户端-服务器关系的计算机程序而形成。
在一些实现方式中,计算***的组件中的任何一个或全部,硬件和/或软件两者,可以相互接口和/或使用应用编程接口(API)和/或服务层接口。API可以包括例程、数据结构、和对象类的规范。API可以是计算机语言无关或有关的,并且指的是完整接口、单一功能、或甚至一组API。服务层向计算***提供软件服务。所有服务消费者都可以经由这个服务层访问计算***的各种组件的功能。软件服务通过限定的接口提供可再用的、限定的商业功能。例如,该接口可以是用JAVA、C++、或以可扩展标记语言(XML)格式或其它合适格式提供数据的其它合适语言编写的软件。API和/或服务层相对于计算***的其它组件可以是完整的和/或独立的组件。此外,服务层的任何部分或所有部分可以在不偏离本公开的范围的情况下实现为另外的软件模块、企业应用或硬件模块的子模块或次模块。
虽然本说明书包含许多具体实现方式细节,但这些不应该被解释为对任何发明的范围或可能要求保护的范围的限制,而是应该被解释为对可能是特定发明的特定实现方式特有的特征的描述。在分离的实现方式的背景下描述在本说明书中的某些特征也可以在单一实现方式中以组合形式实现。相反,在单一实现方式的背景下描述的各种特征也可以在多种实现方式中独立地或以任何适当子组合的形式实现。此外,虽然上面可能将一些特征描述成以某种组合形式起作用并且甚至最初要求这样保护,但所要求组合当中的一个或多个特征在一些情况下可以从该组合中分割出来,以及所要求组合可以针对子组合或子组合的变体。
类似地,虽然在图中按特定次序描述了操作,但这不应该被理解为要求按所示的特定次序或按相继次序执行这样的操作,或执行所有图示的操作来实现合意的结果。在某些情况下,多任务和并行处理可能是有利的。此外,在上述的实现方式中各种***模块和组件的分离和/或集成不应该理解为在所有实现方式中都要求这样的分离和/或集成,而是其应该被理解为所述程序组件和***一般可以一起集成在单个软件产品中或封装成多个软件产品。
已经描述了主题的特定实现方式。对于本领域的普通技术人员来说,将显而易见的是,所述实现方式的其它实现方式、变更、和置换都在所附权利要求书的范围之内。例如,陈述在权利要求书中的动作可以按不同次序执行,但仍然实现合意的结果。
因此,上面对示例实现方式的描述不限定或约束本公开。在不偏离本公开的精神和范围的情况下,做出其它改变、替代、和变更也是可能的。
Claims (20)
1.一种计算机实现的方法,包括:
接收获取调试运行计划的请求,所述调试运行计划考虑不同的结构化查询语言(SQL)运行优化级别并且包括对于SQL语句的映射;
接收基于调试运行计划初始化SQL语句的调试过程的请求;
验证接收到的和附加的过滤标准,所述过滤标准使用SQL调试通道来提供;
设置与SQL语句相关联的断点;
触发SQL语句;
发送与触发的SQL语句相关联的SQL过程被附加到与调试过程相关联的调试器并且准备好外部运行控制的通知;
当到达与运行被触发的SQL语句的SQL过程相关联的特定断点时,提供状态细节和中间结果;
提供改变过程状态和影响过程的能力;以及
在到达被触发的SQL语句的运行的末尾之后,提供SQL最终运行响应。
2.如权利要求1所述的方法,包括基于调试运行计划加载所选SQL语句的SQL调试视图。
3.如权利要求1所述的方法,其中,所述调试过程与多个上下文相关联。
4.如权利要求3所述的方法,还包括:
查看中间结果;以及
基于中间结果、所述多个上下文中的上下文、数据存储中的数据表、以及影响被调试的过程运行的其余部分的上下文改变来估计与SQL过程相关联的表述。
5.如权利要求1所述的方法,其中,只要所述调试过程是活动的,新附加的过滤标准就覆盖先前的过滤标准。
6.如权利要求1所述的方法,包括初始化查询引擎以使用调试运行计划和过滤标准来运行SQL语句。
7.如权利要求1所述的方法,包括当到达与SQL语句相关联的特定断点时,提供中断通知。
8.一种存储计算机可读指令的非暂态计算机可读介质,所述指令可由计算机运行并且被配置为:
接收获取调试运行计划的请求,所述调试运行计划考虑不同的结构化查询语言(SQL)运行优化级别并且包括对于SQL语句的映射;
接收基于调试运行计划初始化SQL语句的调试过程的请求;
验证接收到的和附加的过滤标准,所述过滤标准使用SQL调试通道来提供;
设置与SQL语句相关联的断点;
触发SQL语句;
发送与触发的SQL语句相关联的SQL过程被附加到与调试过程相关联的调试器并且准备好外部运行控制的通知;
当到达与运行被触发的SQL语句的SQL过程相关联的特定断点时,提供状态细节和中间结果;
提供改变过程状态和影响过程的能力;以及
在到达被触发的SQL语句的运行的末尾之后,提供SQL最终运行响应。
9.如权利要求8所述的计算机可读介质,包括基于调试运行计划加载所选SQL语句的SQL调试视图的指令。
10.如权利要求8所述的计算机可读介质,其中,所述调试过程与多个上下文相关联。
11.如权利要求10所述的计算机可读介质,包括指令以:
查看中间结果;以及
基于中间结果、所述多个上下文中的上下文、数据存储中的数据表、以及影响被调试的过程运行的其余部分的上下文改变来估计与SQL过程相关联的表述。
12.如权利要求8所述的计算机可读介质,其中,只要所述调试过程是活动的,新附加的过滤标准就覆盖先前的过滤标准。
13.如权利要求8所述的计算机可读介质,包括初始化查询引擎以使用调试运行计划和过滤标准来运行SQL语句的指令。
14.如权利要求8所述的计算机可读介质,包括当到达与SQL语句相关联的特点断点时提供中断通知的指令。
15.一种计算机***,包括:
存储器;
至少一个硬件处理器,其与存储器互操作地耦合并且被配置为:
接收获取调试运行计划的请求,所述调试运行计划考虑不同的结构化查询语言(SQL)运行优化级别并且包括对于SQL语句的映射;
接收基于调试运行计划初始化SQL语句的调试过程的请求;
验证接收到的和附加的过滤标准,所述过滤标准使用SQL调试通道来提供;
设置与SQL语句相关联的断点;
触发SQL语句;
发送与触发的SQL语句相关联的SQL过程被附加到与调试过程相关联的调试器并且准备好外部运行控制的通知;
当到达与运行被触发的SQL语句的SQL过程相关联的特定断点时,提供状态细节和中间结果;
提供改变过程状态和影响过程的能力;以及
在到达被触发的SQL语句的运行的末尾之后,提供SQL最终运行响应。
16.如权利要求15所述的计算机***,被配置为基于调试运行计划加载所选SQL语句的SQL调试视图。
17.如权利要求15所述的计算机***,其中,所述调试过程与多个上下文相关联。
18.如权利要求17所述的计算机***,被配置为:
查看中间结果;以及
基于中间结果、所述多个上下文中的上下文、数据存储中的数据表、以及影响被调试的过程运行的其余部分的上下文改变来估计与SQL过程相关联的表述。
19.如权利要求15所述的计算机***,其中,只要所述调试过程是活动的,新附加的过滤标准就覆盖先前的过滤标准。
20.如权利要求15所述的计算机***,被配置为:
初始化查询引擎以使用调试运行计划和过滤标准来运行SQL语句;以及
当到达与SQL语句相关联的特点断点时,提供中断通知。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/471,453 | 2014-08-28 | ||
US14/471,453 US9823995B2 (en) | 2014-08-28 | 2014-08-28 | Structured query language debugger |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105389251A true CN105389251A (zh) | 2016-03-09 |
CN105389251B CN105389251B (zh) | 2023-10-27 |
Family
ID=53719593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510544151.8A Active CN105389251B (zh) | 2014-08-28 | 2015-08-28 | 结构化查询语言调试器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9823995B2 (zh) |
EP (1) | EP2990951B1 (zh) |
CN (1) | CN105389251B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170598A (zh) * | 2017-12-28 | 2018-06-15 | 浪潮金融信息技术有限公司 | 存储过程调试方法及装置、计算机可读存储介质、终端 |
CN108897776A (zh) * | 2018-06-01 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种数据信息的运算处理方法、装置及计算机存储介质 |
CN109564539A (zh) * | 2016-08-03 | 2019-04-02 | 英特尔公司 | 远程调试与管理 |
CN110597846A (zh) * | 2019-09-18 | 2019-12-20 | 金瓜子科技发展(北京)有限公司 | 一种ksql处理方法和装置 |
CN112015752A (zh) * | 2020-08-31 | 2020-12-01 | 杭州小电科技股份有限公司 | 一种数据动态查询的方法、装置、电子设备和存储介质 |
CN112612712A (zh) * | 2020-12-29 | 2021-04-06 | 厦门市美亚柏科信息股份有限公司 | 一种基于扩展脚本的软件断点调试方法、装置 |
CN112988595A (zh) * | 2021-04-25 | 2021-06-18 | 深圳壹账通智能科技有限公司 | 动态同步测试方法、装置、设备及存储介质 |
CN113268494A (zh) * | 2021-05-24 | 2021-08-17 | 中国联合网络通信集团有限公司 | 待优化数据库语句处理方法及装置 |
CN113342775A (zh) * | 2020-03-03 | 2021-09-03 | Sap欧洲公司 | 基于云的计算环境中的集中式多租户即服务 |
CN113407160A (zh) * | 2021-05-17 | 2021-09-17 | 江苏航天七零六信息科技有限公司 | 一种面向国产操作***和硬件平台的多语言调试器设计方法 |
CN117076314A (zh) * | 2023-08-22 | 2023-11-17 | 深圳计算科学研究院 | 一种轻量级的pl/sql语言调试器实现方法 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9594802B2 (en) * | 2014-09-25 | 2017-03-14 | Sap Se | Graphical modeling of database query statements |
US9952915B2 (en) * | 2014-11-06 | 2018-04-24 | Microsoft Technology Licensing, Llc | Event processing development environment |
US9779133B2 (en) * | 2014-11-25 | 2017-10-03 | Sap Se | Contextual debugging of SQL queries in database-accessing applications |
US9946534B1 (en) * | 2016-01-15 | 2018-04-17 | Jpmorgan Chase Bank, N.A. | Techniques for automated database deployment |
US9971675B2 (en) * | 2016-04-04 | 2018-05-15 | International Business Machines Corporation | Triggering debug processing within a scalable cloud environment |
US10310960B2 (en) * | 2016-06-02 | 2019-06-04 | International Business Machines Corporation | Debugging for SQL statement |
CN106294075B (zh) * | 2016-08-17 | 2018-09-21 | 浪潮软件股份有限公司 | 一种对sql进行监控的方法、装置及*** |
US10102115B2 (en) * | 2016-11-15 | 2018-10-16 | Ca, Inc. | Incremental program construction from embedded program code for external testing |
US10210240B2 (en) | 2017-06-30 | 2019-02-19 | Capital One Services, Llc | Systems and methods for code parsing and lineage detection |
US10223086B2 (en) * | 2017-06-30 | 2019-03-05 | Capital One Services, Llc | Systems and methods for code parsing and lineage detection |
KR102412469B1 (ko) | 2017-08-01 | 2022-06-23 | 삼성디스플레이 주식회사 | 색변환 표시판 및 이를 포함하는 표시 장치 |
US20190236188A1 (en) * | 2018-01-31 | 2019-08-01 | Salesforce.Com, Inc. | Query optimizer constraints |
WO2019220172A1 (en) * | 2018-05-15 | 2019-11-21 | Telefonaktiebolaget Lm Ericsson (Publ) | Token-based debugging for a service-based architecture |
US11307964B2 (en) * | 2018-11-26 | 2022-04-19 | Red Hat Israel, Ltd. | Multi-level debugger |
US10846197B1 (en) * | 2018-12-13 | 2020-11-24 | Facebook, Inc. | Systems and methods for debugging mixed-language applications |
JP7044086B2 (ja) | 2019-03-15 | 2022-03-30 | オムロン株式会社 | 制御システム、制御方法、および制御プログラム |
CN111224930B (zh) * | 2019-10-11 | 2023-10-10 | 上海海典软件股份有限公司 | 数据安全传输方法、***、计算机设备及可读存储介质 |
CN112711602B (zh) * | 2019-10-25 | 2023-04-28 | 金篆信科有限责任公司 | 一种存储过程的运行方法、装置,数据库***及存储介质 |
US11561979B2 (en) * | 2020-09-08 | 2023-01-24 | International Business Machines Corporation | Dynamically detecting and correcting errors in queries |
US20220138189A1 (en) * | 2020-10-30 | 2022-05-05 | Oracle International Corporation | Query execution debugger for use with business intelligence and data analytics environments |
US11656973B2 (en) * | 2021-01-26 | 2023-05-23 | International Business Machines Corporation | Visual declarative debugger |
US11960380B2 (en) * | 2021-03-23 | 2024-04-16 | Red Hat, Inc. | Debugging SQL statements |
US12008043B2 (en) | 2021-03-29 | 2024-06-11 | Microsoft Technology Licensing, Llc | Natural language query processing and debugging |
CN113641572B (zh) * | 2021-07-02 | 2023-06-13 | 多点生活(成都)科技有限公司 | 一种基于sql的海量大数据计算开发的调试方法 |
US11880362B2 (en) | 2022-01-10 | 2024-01-23 | Micro Focus Llc | Generating debugging information for query plan steps |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364200A (zh) * | 2008-09-18 | 2009-02-11 | 浙江大学 | 嵌入式MIDlet调试软件的断点实现方法 |
US20100030758A1 (en) * | 2008-07-30 | 2010-02-04 | Oracle International Corporation | Hybrid optimization strategies in automatic SQL tuning |
US20120117041A1 (en) * | 2010-11-08 | 2012-05-10 | Verisign, Inc. | Debugging a stored procedure in a database |
US20130191815A1 (en) * | 2012-01-23 | 2013-07-25 | Microsoft Corporation | Tsql debug breakpoint interoperability across heterogeneous projects |
CN103678135A (zh) * | 2013-12-25 | 2014-03-26 | 普元信息技术股份有限公司 | 大数据环境下实现跨进程与跨线程调试的***与方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203927B2 (en) * | 2001-09-20 | 2007-04-10 | International Business Machines Corporation | SQL debugging using XML dataflows |
US7155426B2 (en) | 2001-09-20 | 2006-12-26 | International Business Machines Corporation | SQL debugging using stored procedures |
US20030233632A1 (en) * | 2002-06-12 | 2003-12-18 | Lockheed Martin Corporation | Automatically generated client application source code using database table definitions |
US7500225B2 (en) * | 2004-02-10 | 2009-03-03 | Microsoft Corporation | SQL server debugging in a distributed database environment |
KR100624318B1 (ko) | 2004-12-24 | 2006-09-19 | 삼성에스디아이 주식회사 | 데이터 집적회로 및 이를 이용한 발광 표시장치와 그의구동방법 |
US7765200B2 (en) * | 2005-03-25 | 2010-07-27 | International Business Machines Corporation | SQL query problem determination tool |
US7653616B2 (en) | 2005-12-30 | 2010-01-26 | Sap Ag | Source and destination determination system and method |
US10169199B2 (en) * | 2008-06-10 | 2019-01-01 | Microsoft Technology Licensing, Llc | Automatic model-specific debugger extensions |
EP2350882A4 (en) * | 2008-10-03 | 2013-01-23 | Invensys Sys Inc | RECORDING AND SCANNING OF PRODUCTION DATA FROM RELATIONAL AND TIME SERIES SYSTEMS BY ABSTRACTING THE SOURCE SYSTEMS IN A SET OF NOMINATED UNITS |
US9036648B2 (en) | 2011-07-13 | 2015-05-19 | Sap Se | Message attachment tracking |
US9659012B2 (en) * | 2013-05-17 | 2017-05-23 | Oracle International Corporation | Debugging framework for distributed ETL process with multi-language support |
-
2014
- 2014-08-28 US US14/471,453 patent/US9823995B2/en active Active
-
2015
- 2015-07-09 EP EP15002056.8A patent/EP2990951B1/en active Active
- 2015-08-28 CN CN201510544151.8A patent/CN105389251B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100030758A1 (en) * | 2008-07-30 | 2010-02-04 | Oracle International Corporation | Hybrid optimization strategies in automatic SQL tuning |
CN101364200A (zh) * | 2008-09-18 | 2009-02-11 | 浙江大学 | 嵌入式MIDlet调试软件的断点实现方法 |
US20120117041A1 (en) * | 2010-11-08 | 2012-05-10 | Verisign, Inc. | Debugging a stored procedure in a database |
US20130191815A1 (en) * | 2012-01-23 | 2013-07-25 | Microsoft Corporation | Tsql debug breakpoint interoperability across heterogeneous projects |
CN103678135A (zh) * | 2013-12-25 | 2014-03-26 | 普元信息技术股份有限公司 | 大数据环境下实现跨进程与跨线程调试的***与方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109564539A (zh) * | 2016-08-03 | 2019-04-02 | 英特尔公司 | 远程调试与管理 |
CN109564539B (zh) * | 2016-08-03 | 2024-03-15 | 英特尔公司 | 远程调试与管理 |
US11921569B2 (en) | 2016-08-03 | 2024-03-05 | Intel Corporation | Remote debugging and management |
CN108170598A (zh) * | 2017-12-28 | 2018-06-15 | 浪潮金融信息技术有限公司 | 存储过程调试方法及装置、计算机可读存储介质、终端 |
CN108897776A (zh) * | 2018-06-01 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种数据信息的运算处理方法、装置及计算机存储介质 |
CN110597846B (zh) * | 2019-09-18 | 2022-04-08 | 金瓜子科技发展(北京)有限公司 | 一种ksql处理方法和装置 |
CN110597846A (zh) * | 2019-09-18 | 2019-12-20 | 金瓜子科技发展(北京)有限公司 | 一种ksql处理方法和装置 |
CN113342775B (zh) * | 2020-03-03 | 2024-05-28 | Sap欧洲公司 | 基于云的计算环境中的集中式多租户即服务 |
CN113342775A (zh) * | 2020-03-03 | 2021-09-03 | Sap欧洲公司 | 基于云的计算环境中的集中式多租户即服务 |
CN112015752A (zh) * | 2020-08-31 | 2020-12-01 | 杭州小电科技股份有限公司 | 一种数据动态查询的方法、装置、电子设备和存储介质 |
CN112612712A (zh) * | 2020-12-29 | 2021-04-06 | 厦门市美亚柏科信息股份有限公司 | 一种基于扩展脚本的软件断点调试方法、装置 |
CN112988595A (zh) * | 2021-04-25 | 2021-06-18 | 深圳壹账通智能科技有限公司 | 动态同步测试方法、装置、设备及存储介质 |
CN113407160A (zh) * | 2021-05-17 | 2021-09-17 | 江苏航天七零六信息科技有限公司 | 一种面向国产操作***和硬件平台的多语言调试器设计方法 |
CN113268494B (zh) * | 2021-05-24 | 2023-06-02 | 中国联合网络通信集团有限公司 | 待优化数据库语句处理方法及装置 |
CN113268494A (zh) * | 2021-05-24 | 2021-08-17 | 中国联合网络通信集团有限公司 | 待优化数据库语句处理方法及装置 |
CN117076314A (zh) * | 2023-08-22 | 2023-11-17 | 深圳计算科学研究院 | 一种轻量级的pl/sql语言调试器实现方法 |
Also Published As
Publication number | Publication date |
---|---|
US9823995B2 (en) | 2017-11-21 |
EP2990951A1 (en) | 2016-03-02 |
US20160062870A1 (en) | 2016-03-03 |
EP2990951B1 (en) | 2021-02-24 |
CN105389251B (zh) | 2023-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389251A (zh) | 结构化查询语言调试器 | |
US11086751B2 (en) | Intelligent metadata management and data lineage tracing | |
US11372855B2 (en) | Metadata-based general request translator for distributed computer systems | |
US10162612B2 (en) | Method and apparatus for inventory analysis | |
US11847040B2 (en) | Systems and methods for detecting data alteration from source to target | |
US9043750B2 (en) | Automated generation of two-tier mobile applications | |
US20130166602A1 (en) | Cloud-enabled business object modeling | |
US20130159036A1 (en) | Runtime generation of instance contexts via model-based data relationships | |
US20150317331A1 (en) | Unified platform for application development | |
US20150356474A1 (en) | Real-time correlation of data model data | |
US11611627B2 (en) | Action flow fragment management | |
US10289620B1 (en) | Reporting and data governance management | |
US9262556B2 (en) | Embedded search results within the context of a process | |
US11687568B2 (en) | Data catalog system for generating synthetic datasets | |
US9547505B2 (en) | Adaptive contextual graphical representation of development entities | |
US9280361B2 (en) | Methods and systems for a real time transformation of declarative model and layout into interactive, digital, multi device forms | |
US10534588B2 (en) | Data processing simulator with simulator module and data elements | |
US9489436B2 (en) | Gateway enablement of analytic database services | |
US10318524B2 (en) | Reporting and data governance management | |
US20230153723A1 (en) | Workflow manager | |
US20160147772A1 (en) | Topology-driven data analytics for local systems of a system landscape | |
US20210174302A1 (en) | Data provisioning system and method | |
US20240078244A1 (en) | Methods and Systems for Tracking Data Lineage from Source to Target | |
US20120136899A1 (en) | Activation framework for tenant-specific follow-up |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |