CN112230934B - 一种转换代码语言的方法及装置 - Google Patents
一种转换代码语言的方法及装置 Download PDFInfo
- Publication number
- CN112230934B CN112230934B CN202011164134.9A CN202011164134A CN112230934B CN 112230934 B CN112230934 B CN 112230934B CN 202011164134 A CN202011164134 A CN 202011164134A CN 112230934 B CN112230934 B CN 112230934B
- Authority
- CN
- China
- Prior art keywords
- data type
- type
- execution tree
- dtype
- sql
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种转换代码语言的方法及装置,涉及数据库技术领域。该方法包括:获取第一数据类型,源代码对应的SQL代码的数据类型;根据第一数据类型和第一对应关系获取第二数据类型,第二数据类型为第一数据类型的SQL代码对应的执行树的数据类型;根据第二数据类型和第二对应关系获取第三数据类型,第三数据类型为第二数据类型的执行树对应的C语言的数据类型;将源代码转换为数据类型为第二数据类型的执行树;将执行树转换为数据类型为第三数据类型的C语言代码。本发明实施例用于在源代码为SQL代码、目标代码为C语言代码的情况下,实现数据库采用编译执行的方式进行数据处理。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种转换代码语言的方法及装置。
背景技术
数据库作为计算机系统中不可或缺的一部分,在数据的存储与处理方面担任着至关重要的角色,数据处理的效率是评价数据库功能一个非常重要的指标。
传统数据库采用解释执行的方式进行数据处理。具体为:将源代码逐条转换成目标代码,并在转换过程中每转换一条源代码,则执行一条对应的目标代码,以实现数据处理。然而,由于这种解释执行的方式需要在数据处理过程中进行源代码的逐条转换,且目标代码相比于原生代码执行速度慢,因此解释执行的方式无法满足对数据处理效率要求较高的应用场景。为了提高数据库的数据处理效率,现有技术中提出了数据库可以采用编译执行的方式进行数据处理。具体为:将全部源代码一次性编译为目标代码,然后再执行目标代码,以实现数据处理。相比于解释执行的方式,编译执行的方式可以避免调用时的再编译,且是执行效率更高的原生代码进行数据处理,因此可以极大的提升数据库的处理效率。为了能够实现编译执行,数据库自身建立了一套可以实现不同数据类型间转换的转换规则,然而该转换规则只能满足结构化查询语言(Structured Query Language,SQL)的不同数据类型之间的转换,无法实现跨语言转换,当源代码为过程化结构化查询语言(ProceduralLanguage SQL,PLSQL)语言或SQL代码,而目标代码为C语言代码时,数据库自身的转换规则无法将PLSQL或SQL语言的源代码转换成C语言代码,进而无法实现编译执行。
发明内容
有鉴于此,本发明提供了一种转换代码语言的方法及装置,用于在源代码为SQL代码、目标代码为C语言代码的情况下,实现数据库采用编译执行的方式进行数据处理。
为了实现上述目的,本发明实施例提供技术方案如下:
第一方面,本发明的实施例提供了一种转换代码语言的方法,包括:
获取第一数据类型,所述第一数据类型为源代码对应的SQL代码的数据类型;
根据所述第一数据类型和第一对应关系获取第二数据类型,所述第二数据类型为所述第一数据类型的SQL代码对应的执行树的数据类型,所述第一对应关系包括SQL的数据类型与执行树的数据类型的对应关系;
根据所述第二数据类型和第二对应关系获取第三数据类型,所述第三数据类型为所述第二数据类型的执行树对应的C语言的数据类型,所述第二对应关系包括执行树的数据类型与C语言的数据类型的对应关系;
将所述源代码转换为数据类型为所述第二数据类型的执行树;
将所述执行树转换为数据类型为所述第三数据类型的C语言代码。
作为本发明实施例一种可选的实施方式,所述源代码为PLSQL代码;所述获取第一数据类型,包括:
获取第四数据类型,所述第四数据类型为所述PLSQL代码的数据类型;
根据第四数据类型和第三映射关系获取所述第一数据类型,所述第三映射关系包括PLSQL的数据类型与SQL的数据类型的对应关系。
作为本发明实施例一种可选的实施方式,所述将所述源代码转换为数据类型为所述第二数据类型的执行树,包括:
将所述源代码转换为数据类型为所述第一数据类型的SQL代码,以获取所述源代码对应的SQL代码;
将所述SQL代码转换为所述第二数据类型的执行树。
作为本发明实施例一种可选的实施方式,所述第三映射关系包括:
PLSQL的基础型与SQL的基础型的对应关系;
PLSQL的行类型与SQL的组合型的对应关系;
PLSQL的记录型与SQL的伪类型的对应关系。
作为本发明实施例一种可选的实施方式,所述将所述执行树转换为数据类型为所述第三数据类型的C语言代码,包括:
根据所述执行树中的函数参数的类型和函数返回值的类型确定取值函数的宏和返回函数的宏;
根据所述执行树中的值的数据类型确定将所述执行树中的值转换为Datum的函数和从Datum中取得相应数据类型的值的函数;
根据所述取值函数的宏、返回函数的宏、所述将所述执行树中的值转换为Datum的函数以及所述从Datum中取得相应数据类型的值的函数将所述执行树转换为数据类型为所述第三数据类型的C语言代码。
作为本发明实施例一种可选的实施方式,所述第一对应关系包括:
SQL的基础型与执行树的KB_DTYPE_VAR的对应关系;
SQL的组合型与执行树的KB_DTYPE_ROW的对应关系;
SQL的伪类型与执行树的KB_DTYPE_REC的对应关系。
作为本发明实施例一种可选的实施方式,所述第二对应关系包括:
所述第二对应关系包括:
执行树的KB_DTYPE_VAR、KB_DTYPE_RECFIELD以及KB_DTYPE_ARRAYELEM与C语言的Datum的对应关系;
函数本身创建的执行树的KB_DTYPE_ROW和KB_DTYPE_REC与C语言的HeapTuple的对应关系;
从传参调用中得到的执行树的KB_DTYPE_ROW和KB_DTYPE_REC与C语言的HeapTupleHeader的对应关系。
第二方面,本发明实施例提供一种转换代码语言的装置,包括:
第一获取单元,用于获取第一数据类型,所述第一数据类型为源代码对应的SQL代码的数据类型;
第二获取单元,用于根据所述第一数据类型和第一对应关系获取第二数据类型,所述第二数据类型为所述第一数据类型的SQL代码对应的执行树的数据类型,所述第一对应关系包括SQL的数据类型与执行树的数据类型的对应关系;
第三获取单元,用于根据所述第二数据类型和第二对应关系获取第三数据类型,所述第三数据类型为所述第二数据类型的执行树对应的C语言的数据类型,所述第二对应关系包括执行树的数据类型与C语言的数据类型的对应关系;
第一转换单元,用于将所述源代码转换为数据类型为所述第二数据类型的执行树;
第二转换单元,用于将所述执行树转换为数据类型为所述第三数据类型的C语言代码。
作为本发明实施例一种可选的实施方式,所述源代码为PLSQL代码,所述第一获取单元,具体用于根据第四数据类型和第三映射关系获取所述第一数据类型;
其中,所述第四数据类型为所述PLSQL代码的数据类型;所述第三映射关系包括PLSQL的数据类型与SQL的数据类型的对应关系。
作为本发明实施例一种可选的实施方式,所述第一转换单元,具体用于将所述源代码转换为数据类型为所述第一数据类型的SQL代码,以获取所述源代码对应的SQL代码,以及将所述SQL代码转换为所述第二数据类型的执行树。
作为本发明实施例一种可选的实施方式,所述第三映射关系包括:
PLSQL的基础型与SQL的基础型的对应关系;
PLSQL的行类型与SQL的组合型的对应关系;
PLSQL的记录型与SQL的伪类型的对应关系。
作为本发明实施例一种可选的实施方式,所述第二转换单元,具体用于根据所述执行树中的函数参数的类型和函数返回值的类型确定取值函数的宏和返回函数的宏;根据所述执行树中的值的数据类型确定将所述执行树中的值转换为Datum的函数和从Datum中取得相应数据类型的值的函数;根据所述取值函数的宏、返回函数的宏、所述将所述执行树中的值转换为Datum的函数以及所述从Datum中取得相应数据类型的值的函数将所述执行树转换为数据类型为所述第三数据类型的C语言代码。
作为本发明实施例一种可选的实施方式,所述第一对应关系包括:
SQL的基础型与执行树的KB_DTYPE_VAR的对应关系;
SQL的组合型与执行树的KB_DTYPE_ROW的对应关系;
SQL的伪类型与执行树的KB_DTYPE_REC的对应关系。
作为本发明实施例一种可选的实施方式,所述第二对应关系包括:
执行树的KB_DTYPE_VAR、KB_DTYPE_RECFIELD以及KB_DTYPE_ARRAYELEM与C语言的Datum的对应关系;
函数本身创建的执行树的KB_DTYPE_ROW和KB_DTYPE_REC与C语言的HeapTuple的对应关系;
从传参调用中得到的执行树的KB_DTYPE_ROW和KB_DTYPE_REC与C语言的HeapTupleHeader的对应关系。
第三方面,本发明实施例提供一种电子设备,包括:存储器和处理器,存储器用于存储计算机程序;处理器用于在调用计算机程序时执行第一方面或第一方面任一种可选的实施方式所述的转换代码语言的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现第一方面或第一方面任一种可选的实施方式所述的转换代码语言的方法。
本发明实施例提供的转换代码语言的方法,首先源代码对应的SQL代码的数据类型,然后根据源代码对应的SQL代码的数据类型和第一对应关系获取对应的执行树的数据类型,再根据执行树的数据类型和第二对应关系获取对应的C语言的数据类型,以及将所述源代码转换为数据类型为所述第二数据类型的执行树,最后将所述执行树转换为数据类型为所述第三数据类型的C语言代码。由于本发明实施例提供了一种可以将SQL的源代码转换为C语言的目标代码的转换方式,因此基于本发明实施例提供的转换代码语言的方法,在可以在源代码为SQL代码、目标代码为C语言代码的情况下,实现数据库采用编译执行的方式进行数据处理。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的转换代码语言的方法的流程图之一;
图2为本发明实施例提供的转换代码语言的方法的流程图之二;
图3为本发明实施例提供的转换代码语言的方法的流程图之三;
图4为本发明实施例提供的转换代码语言的装置的结构示意图;
图5为本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面将对本发明的方案进行进一步描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但本发明还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本发明的一部分实施例,而不是全部的实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本发明的说明书和权利要求书中的术语“第一”和“第二”等是用于区别同步的对象,而不是用于描述对象的特定顺序。例如,第一检索单元和第二检索单元等是用于区别不同的功能单元,而不是用于功能单元的特定顺序。
在本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。此外,在本发明实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
本发明实施例提供了一种转换代码语言的方法,参照图1所示,本发明实施例提供的转换代码语言的方法包括如下步骤:
S101、获取第一数据类型。
其中,所述第一数据类型为源代码对应的SQL代码的数据类型。具体的,当源代码为SQL代码时,第一数据类型即为源代码的数据类型;当源代码为PLSQL代码时,获取第一数据类型包括:先将源代码转换为SQL代码,再获取转换得到的SQL代码的数据类型。
具体的,SQL的数据类型包括:基础型、组合型、域类型(domain)以及伪类型四种,因此第一数据类型为基础型或组合型或域类型或伪类型或为包含基础型、组合型、域类型以及伪类型中的两种或两种以上的多态类型,多态类型具体包括:anyelement、anyarray、anynonarray、anyenum、anyrange。
S102、根据所述第一数据类型和第一对应关系获取第二数据类型。
其中,所述第二数据类型为所述第一数据类型的SQL代码对应的执行树的数据类型,所述第一对应关系包括SQL的数据类型与所述执行树的数据类型的对应关系。
具体的,执行树的数据类型包括:
KB_DTYPE_VAR,KB_DTYPE_ROW,KB_DTYPE_REC,KB_DTYPE_RECFIELD以及KB_DTYPE_ARRAYELEM五种,因此第二数据类型为KB_DTYPE_VAR或者KB_DTYPE_ROW,KB_DTYPE_REC或者KB_DTYPE_RECFIELD或者KB_DTYPE_ARRAYELEM。
由于SQL的基础类型对应执行树的数据类型KB_DTYPE_VAR,SQL的组合型对应执行树的数据类型KB_DTYPE_ROW,SQL的伪类型对应执行树的数据类型KB_DTYPE_REC,执行树的数据类型KB_DTYPE_RECFIELD是执行树为了检查SQL访问的合法性而引入的数据类型,执行树的数据类型KB_DTYPE_ARRAYELEM是执行树为了执行SQL数组寻址操作而引入的数据类型,因此本发明实施例中的第一对应关系可以包括:
SQL的基础型与执行树的KB_DTYPE_VAR的对应关系;
SQL的组合型与执行树的KB_DTYPE_ROW的对应关系;
SQL的伪类型与执行树的KB_DTYPE_REC的对应关系。
示例性的,第一对应关系可以为SQL的数据类型与执行树的数据类型的对应关系表,SQL的数据类型与执行树的数据类型的对应关系表可以如下表1所示:
表1 SQL的数据类型与执行树的数据类型的对应关系
SQL的数据类型 | 执行树的数据类型 |
基础型 | KB_DTYPE_VAR |
组合型 | KB_DTYPE_ROW |
伪类型 | KB_DTYPE_REC |
— | KB_DTYPE_RECFIELD |
— | KB_DTYPE_ARRAYELEM |
此外,由于SQL的多态类型在执行树上已经全部归约,因此第一对应关系还可以包括:
SQL多态类型的anyelement、anynonarray、anyenum的与执行树的INT4OID的对应关系;
SQL多态类型的anyarray、anyrange的与执行树的INT4ARRAYOID的对应关系。
同样,SQL的多态类型与执行树的数据类型的对应关系可以为对应关系表,SQL的多态类型与执行树的数据类型的对应关系表2可以如下表2所示:
表2 SQL多态类型与执行树数据类型的对应
SQL的数据类型 | 执行树的数据类型 |
anyelement | INT4OID |
anyarray | INT4ARRAYOID |
anynonarray | INT4OID |
anyenum | INT4OID |
anyrange | INT4RANGEOID |
示例性的,当第一数据类型为基础型时,由表1所示对应关系可以确定所述第二数据类型为KB_DTYPE_VAR;当第一数据类型为组合型时,由表1所示对应关系可以确定第二数据类型为KB_DTYPE_ROW。
S103、根据所述第二数据类型和第二对应关系获取第三数据类型。
其中,所述第三数据类型为所述第二数据类型的执行树对应的C语言的数据类型,所述第二对应关系包括执行树的数据类型与C语言的数据类型的对应关系
本发明实施例中将执行树的KB_DTYPE_VAR用C语言的Datum数据类型表示,Datum在C语言中的实例采用的是void*,可以用来表示任意类型,并且在进行转换的时候已经明确了Datum表示的具体数据类型,在生成的C代码中不需要知道Datum表示的具体类型,只需获取值进行计算即可。对于执行树的KB_DTYPE_ROW和KB_DTYPE_REC,如果是函数本身创建的,因为创建时可能伴随初始化和修改HeapTuple中的数据,所以使用HeapTupleHeader数据类型表示,如果是从传参调用中得到的KB_DTYPE_ROW或KB_DTYPE_REC数据类型,因为这种情况下只是为了传递这些数据的元信息,所以使用HeapTupleHeader数据类型表示,因此本发明实施例中的第二对应关系可以包括:
执行树的KB_DTYPE_VAR、KB_DTYPE_RECFIELD以及KB_DTYPE_ARRAYELEM与C语言的Datum的对应关系;
函数本身创建的执行树的KB_DTYPE_ROW和KB_DTYPE_REC与C语言的HeapTuple的对应关系;
从传参调用中得到的执行树的KB_DTYPE_ROW和KB_DTYPE_REC与C语言的HeapTupleHeader的对应关系。
同样,第二对应关系可以为执行树的数据类型与C语言的数据类型的对应关系表,执行树的数据类型与C语言的数据类型的对应关系表可以如下表3所示:
表3执行树的数据类型与C语言的数据类型的对应关系表
示例性的,当第二数据类型为KB_DTYPE_VAR时,由表3所示对应关系可以确定第三数据类型为Datum;当第一数据类型为KB_DTYPE_ROW,且是函数本身创建的时,由表3所示对应关系可以确定第三数据类型为HeapTuple。
S104、将所述源代码转换为数据类型为所述第二数据类型的执行树。
具体的,在源代码为SQL代码的情况下,可以直接将所述源代码转换为执行树即可,而在源代码为PLSQL代码的情况下,则需要先将所述源代码转换为SQL代码,然后再将PLSQL代码转换得到的SQL代码转换为执行树。
需要说明的是,本发明实施例中不限定上述步骤S103和S104的执行顺序,可以先获取第三数据类型,再将源代码转换为执行树;也可以先将源代码转换为执行树,再获取第三数据类型;还可以通过多进程同时执行步骤S103和S104。
S105、将所述执行树转换为数据类型为所述第三数据类型的C语言代码。
本发明实施例提供的转换代码语言的方法,首先源代码对应的SQL代码的数据类型,然后根据源代码对应的SQL代码的数据类型和第一对应关系获取对应的执行树的数据类型,再根据执行树的数据类型和第二对应关系获取对应的C语言的数据类型,以及将所述源代码转换为数据类型为所述第二数据类型的执行树,最后将所述执行树转换为数据类型为所述第三数据类型的C语言代码。由于本发明实施例提供了一种可以将SQL的源代码转换为C语言的目标代码的转换方式,因此基于本发明实施例提供的转换代码语言的方法,在可以在源代码为SQL代码、目标代码为C语言代码的情况下,实现数据库采用编译执行的方式进行数据处理。
以下分别对源代码为SQL代码和PLSQL代码为例对本发明实施例提供的转换代码语言的方法进行说明。
参照图2所示,在源代码为SQL代码的情况下,本发明实施例提供的转换代码语言的方法包括:
S201、获取第一数据类型。
由于源代码为SQL代码,因此第一数据类型即为源代码的数据类型。
S202、根据所述第一数据类型和第一对应关系获取第二数据类型。
其中,所述第二数据类型为所述第一数据类型的SQL代码对应的执行树的数据类型,所述第一对应关系包括SQL的数据类型与所述执行树的数据类型的对应关系。
S203、根据所述第二数据类型和第二对应关系获取第三数据类型。
其中,所述第三数据类型为所述第二数据类型的执行树对应的C语言的数据类型,所述第二对应关系包括执行树的数据类型与C语言的数据类型的对应关系。
S204、将所述源代码转换为数据类型为所述第二数据类型的执行树。
本发明实施例中的步骤S202、S203、S204的实现方式与上述步骤S102、S103、S104的实现方式完成相同,具体参见上述实施例中步骤S102、S103、S104的说明,此处不再赘述。
S205、根据所述执行树中的函数参数的类型和函数返回值的类型确定取值函数的宏和返回函数的宏。
S206、根据所述执行树中的值的数据类型确定将所述执行树中的值转换为Datum的函数和从Datum中取得相应数据类型的值的函数。
具体的,所有的数据类型在函数间或函数内传递时,都有对应的取参宏、取值宏、返回宏等。并且以KB_GETARG_为前缀的宏都是取参宏,该宏的参数n表示函数的第几个参数(从0开始计数);以KB_RETURN_为前缀的宏都是返回宏,以GetDatum为后缀的宏是取值宏,表示将一个Datum类型的变量转变成对应类型的变量的函数,以DatumGe为后缀的宏是返回宏,表示从Datum中取得指定类型值的函数,因此可以根据所述执行树中的函数参数的类型和函数返回值的类型确定取值函数的宏和返回函数的宏,并根据所述执行树中的值的数据类型确定将所述执行树中的值转换为Datum的函数和从Datum中取得相应数据类型的值的函数。
示例性的,可以建立一个对应关系表,该对应关系表中包含执行树的数据类型、数据类型的标识、对应的C语言的数据类型、取值函数的宏、返回函数的宏、将指定类型的值转换为Datum的函数以及从Datum中取得指定类型值的函数的对应关系,并在确定取值函数的宏、返回函数的宏将指定类型的值转换为Datum的函数以及从Datum中取得指定类型值的函数时,通过查找该对应关系表确定取值函数的宏、返回函数的宏将指定类型的值转换为Datum的函数以及从Datum中取得指定类型值的函数。
示例性的,上述包含执行树的数据类型、数据类型的标识、对应的C语言的数据类型、取值函数的宏、返回函数的宏、将指定类型的值转换为Datum的函数以及从Datum中取得指定类型值的函数的对应关系表可以如下表4所示:
表4
其中,type为执行树的数据类型。Typeid为执行树对应的SQL的数据类型的标识,其由数据库原生定义,可以根据数据库的原生定义中获取。Ctyname为执行树的数据类型对应的C语言的数据类型,可以先根据第一数据类型和第一对应关系获取第二数据类型,再根据第二数据类型和第二对应关系获取,具体可以为Datum或HeapTuple或HeapTupleHeader。Arginst为取值函数的宏,可以由源代码中的函数参数类型确定。Retinst为返回函数的宏,可以由源代码中的函数返回类型确定。Todatum为将指定类型的值转换为Datum的函数,Datumto为从Datum中取得指定类型值的函数,Todatum和Datumto可以根据要转换生成的C语言的数据类型确定。
此外,由于SQL的数据类型与执行树的数据类型之间存在对应关系(第一对应关系,表1所示),因此还可以将表4中的type替换为SQL的数据类型,并直接根据SQL的数据类型和替换后的表4确定取值函数的宏、返回函数的宏将指定类型的值转换为Datum的函数以及从Datum中取得指定类型值的函数。
S207、根据所述取值函数的宏、返回函数的宏、所述将所述执行树中的值转换为Datum的函数以及所述从Datum中取得相应数据类型的值的函数将所述执行树转换为数据类型为所述第三数据类型的C语言代码。
参照图3所示,在源代码为PLSQL代码的情况下,本发明实施例提供的转换代码语言的方法包括:
S301、获取第四数据类型。
其中,所述第四数据类型为PLSQL的源代码的数据类型。
具体的,PLSQL的数据类型包括:基础型、别名型、复制型、行类型、记录型。
S302、根据所述第四数据类型和第三映射关系获取所述第一数据类型。
其中,所述第三映射关系包括PLSQL的数据类型与SQL的数据类型的对应关系。
具体的,PLSQL的基础型与SQL的基础型相同,PLSQL的行类型对应SQL的组合型,PLSQL的记录型对应SQL的伪类型,PLSQL的别名型和复制型在生成执行树时会转化为SQL的基础型或组合型或伪类型,无需特殊处理对别名型和复制型进行特殊处理,因此第三映射关系可以包括:
PLSQL的基础型与SQL的基础型的对应关系;
PLSQL的行类型与SQL的组合型的对应关系;
PLSQL的记录型与SQL的伪类型的对应关系。
示例性的,第三对应关系可以为PLSQL的数据类型与SQL的数据类型的对应关系表,PLSQL的数据类型与SQL的数据类型的对应关系表可以如下表5所示:
表5第三对应关系
PLSQL数据类型 | SQL的数据类型 |
基础类型 | 基础型 |
别名 | — |
复制类型 | — |
行类型 | 组合型 |
记录类型 | 伪类型 |
进一步的,综上表1、表3、表5所示的对应关系可以得出PLSQL的数据类型、SQL的数据类型、执行树的数据类型以及C语言的数据类型对应关系可以如下表6所示:
表6 PLSQL、SQL、执行树以及C语言的数据类型的对应关系
PLSQL数据类型 | SQL的数据类型 | 执行树的数据类型 | C语言的数据类型 |
基础类型 | 基础型 | KB_DTYPE_VAR | Datum |
别名 | — | — | — |
复制类型 | — | — | — |
行类型 | 组合型 | KB_DTYPE_ROW | HeapTuple/HeapTupleHeader |
记录类型 | 伪类型 | KB_DTYPE_REC | HeapTuple/HeapTupleHeader |
— | — | KB_DTYPE_RECFIELD | Datum |
— | — | KB_DTYPE_ARRAYELEM | Datum |
S303、根据所述第一数据类型和第一对应关系获取第二数据类型。
其中,所述第二数据类型为所述第一数据类型的SQL代码对应的执行树的数据类型,所述第一对应关系包括SQL的数据类型与所述执行树的数据类型的对应关系。
S304、根据所述第二数据类型和第二对应关系获取第三数据类型。
其中,所述第三数据类型为所述第二数据类型的执行树对应的C语言的数据类型,所述第二对应关系包括执行树的数据类型与C语言的数据类型的对应关系。
S305、将所述源代码转换为所述第一数据类型的SQL代码,以获取所述源代码对应的SQL代码。
S306、将所述SQL代码转换为所述第二数据类型的执行树。
S307、根据所述执行树中的函数参数的类型和函数返回值的类型确定取值函数的宏和返回函数的宏。
S308、根据所述执行树中的值的数据类型确定将所述执行树中的值转换为Datum的函数和从Datum中取得相应数据类型的值的函数。
由于PLSQL的数据类型与SQL的数据类型之间存在对应关系,(第三对应关系,表5所示),SQL的数据类型与执行树的数据类型之间也存在对应关系(第一对应关系,表1所示),因此还可以将表4中的type替换为PLSQL的数据类型,并直接根据PLSQL的数据类型和替换后的表4确定取值函数的宏、返回函数的宏将指定类型的值转换为Datum的函数以及从Datum中取得指定类型值的函数。
S309、根据所述取值函数的宏、返回函数的宏、所述将所述执行树中的值转换为Datum的函数以及所述从Datum中取得相应数据类型的值的函数将所述执行树转换为数据类型为所述第三数据类型的C语言代码。
以下进一步分别以布尔值(boolean)和数组(Array)为对本发明实施例提供的转换代码语言的方法进行举例说明。
对于布尔值,在数据库原生定义的SQL语言中,布尔值的数据类型标识为16,对应的C扩展数据类型是bool,对于执行树中的任意一个函数,只要其参数为Boolean类型,就可以确定其取值函数的宏为KB_GETARG_BOOL,对于执行树中的任意一个函数,只要其返回类型为Boolean类型就可以确定返回值取值函数的宏为KB_RETURN_BOOL,再根据预先创建的映射表中的转换函数,确定调用函数BoolGetDatum将执行树的值转换为Datum,最后调用函数DatumGetBool从Datum中返回指定相应数据类型的值。
对于数组,由于数据库中Array的元素类型多样,这里以Array元素类型为int4其余数据类型相同为例进行说明。在Array中,int4的数据类型标识为1007,对应的C扩展数据类型为int*,对于执行树中的任意一个函数,只要函数参数的数据类型为int4就可以确定取值函数的宏为KB_GETARG_ARRAYTYPE_P_COPY,再根据执行树中任意一个函数返回值数据类型为int4就可以确定取值函数的宏为:KB_RETURN_ARRAYTYPE_P,然后根据预先创建的映射表中的转换函数,调用函数PointerGetDatum将执行树中的值转换为Datum,最后调用函数DatumGetArrayTypeP从Datum中取得对应数据类型的值。
基于同一发明构思,作为对上述方法的实现,本发明实施例还提供了一种转换代码语言的装置,该转换代码语言的装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的转换代码语言的装置能够对应实现前述方法实施例中的全部内容。
图4为本发明实施例提供的转换代码语言的装置的结构示意图,如图4所示,本实施例提供的转换代码语言的装置400包括:
第一获取单元41,用于获取第一数据类型,所述第一数据类型为源代码对应的SQL代码的数据类型;
第二获取单元42,用于根据所述第一数据类型和第一对应关系获取第二数据类型,所述第二数据类型为所述第一数据类型的SQL代码对应的执行树的数据类型,所述第一对应关系包括SQL的数据类型与执行树的数据类型的对应关系;
第三获取单元43,用于根据所述第二数据类型和第二对应关系获取第三数据类型,所述第三数据类型为所述第二数据类型的执行树对应的C语言的数据类型,所述第二对应关系包括执行树的数据类型与C语言的数据类型的对应关系;
第一转换单元44,用于将所述源代码转换为数据类型为所述第二数据类型的执行树;
第二转换单元45,用于将所述执行树转换为数据类型为所述第三数据类型的C语言代码。
作为本发明实施例一种可选的实施方式,所述源代码为PLSQL代码,所述第一获取单元41,具体用于根据第四数据类型和第三映射关系获取所述第一数据类型;
其中,所述第四数据类型为所述PLSQL代码的数据类型;所述第三映射关系包括PLSQL的数据类型与SQL的数据类型的对应关系。
作为本发明实施例一种可选的实施方式,所述第一转换单元44,具体用于将所述源代码转换为数据类型为所述第一数据类型的SQL代码,以获取所述源代码对应的SQL代码,以及将所述SQL代码转换为所述第二数据类型的执行树。
作为本发明实施例一种可选的实施方式,所述第三映射关系包括:
PLSQL的基础型与SQL的基础型的对应关系;
PLSQL的行类型与SQL的组合型的对应关系;
PLSQL的记录型与SQL的伪类型的对应关系。
作为本发明实施例一种可选的实施方式,所述第二转换单元45,具体用于根据所述执行树中的函数参数的类型和函数返回值的类型确定取值函数的宏和返回函数的宏;根据所述执行树中的值的数据类型确定将所述执行树中的值转换为Datum的函数和从Datum中取得相应数据类型的值的函数;根据所述取值函数的宏、返回函数的宏、所述将所述执行树中的值转换为Datum的函数以及所述从Datum中取得相应数据类型的值的函数将所述执行树转换为数据类型为所述第三数据类型的C语言代码。
作为本发明实施例一种可选的实施方式,所述第一对应关系包括:
SQL的基础型与执行树的KB_DTYPE_VAR的对应关系;
SQL的组合型与执行树的KB_DTYPE_ROW的对应关系;
SQL的伪类型与执行树的KB_DTYPE_REC的对应关系。
作为本发明实施例一种可选的实施方式,所述第二对应关系包括:
执行树的KB_DTYPE_VAR、KB_DTYPE_RECFIELD以及KB_DTYPE_ARRAYELEM与C语言的Datum的对应关系;
函数本身创建的执行树的KB_DTYPE_ROW和KB_DTYPE_REC与C语言的HeapTuple的对应关系;
从传参调用中得到的执行树的KB_DTYPE_ROW和KB_DTYPE_REC与C语言的HeapTupleHeader的对应关系。
基于同一发明构思,本发明实施例还提供了一种电子设备。图5为本发明实施例提供的电子设备的结构示意图,如图5所示,本实施例提供的电子设备包括:存储器51和处理器52,存储器51用于存储计算机程序;处理器52用于在调用计算机程序时执行上述实施例提供的转换代码语言的方法的步骤。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述实施例提供的转换代码语言的方法的步骤。
本领域技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
处理器可以是中央处理单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。根据本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种转换代码语言的方法,其特征在于,包括:
获取第一数据类型,所述第一数据类型为源代码对应的 SQL 代码的数据类型;
根据所述第一数据类型和第一对应关系获取第二数据类型,所述第二数据类型为所述第一数据类型的 SQL 代码对应的执行树的数据类型,所述第一对应关系包括 SQL 的数据类型与执行树的数据类型的对应关系;
根据所述第二数据类型和第二对应关系获取第三数据类型,所述第三数据类型为所述第二数据类型的执行树对应的 C 语言的数据类型,所述第二对应关系包括执行树的数据类型与 C 语言的数据类型的对应关系;
将所述源代码转换为数据类型为所述第二数据类型的执行树;
将所述执行树转换为数据类型为所述第三数据类型的 C 语言代码;
其中,所述执行树的数据类型包括:
KB_DTYPE_VAR,KB_DTYPE_ROW,KB_DTYPE_REC,KB_DTYPE_RECFIELD以及KB_DTYPE_ARRAYELEM;
所述第一对应关系包括:
SQL 的基础型与执行树的 KB_DTYPE_VAR 的对应关系;
SQL 的组合型与执行树的 KB_DTYPE_ ROW 的对应关系;
SQL 的伪类型与执行树的 KB_DTYPE_ REC 的对应关系;
所述第二对应关系包括:
执行树的 KB_DTYPE_VAR、KB_DTYPE_RECFIELD 以及 KB_DTYPE_ARRAYELEM 与 C语言的 Datum 的对应关系;
函数本身创建的执行树的KB_DTYPE_ROW和 KB_DTYPE_REC 与 C 语言的 HeapTuple的对应关系;
从传参调用中得到的执行树的 KB_DTYPE_ROW 和 KB_DTYPE_REC 与 C 语言的HeapTupleHeader 的对应关系。
2. 根据权利要求 1 所述的方法,其特征在于,所述源代码为 PLSQL 代码;所述获取第一数据类型,包括:
获取第四数据类型,所述第四数据类型为所述 PLSQL 代码的数据类型;
根据所述第四数据类型和第三映射关系获取所述第一数据类型,所述第三映射关系包括PLSQL 的数据类型与 SQL 的数据类型的对应关系。
3. 根据权利要求 2 所述的方法,其特征在于,所述将所述源代码转换为数据类型为所述第二数据类型的执行树,包括:
将所述源代码转换为数据类型为所述第一数据类型的 SQL 代码,以获取所述源代码对应的SQL 代码;
将所述 SQL 代码转换为所述第二数据类型的执行树。
4. 根据权利要求 2 所述的方法,其特征在于,所述第三映射关系包括:
PLSQL 的基础型与 SQL 的基础型的对应关系;
PLSQL 的行类型与 SQL 的组合型的对应关系;
PLSQL 的记录型与 SQL 的伪类型的对应关系。
5. 根据权利要求 1-4 任一项所述的方法,其特征在于,所述将所述执行树转换为数据类型为所述第三数据类型的 C 语言代码,包括:
根据所述执行树中的函数参数的类型和函数返回值的类型确定取值函数的宏和返回函数的宏;
根据所述执行树中的值的数据类型确定将所述执行树中的值转换为 Datum 的函数和从Datum 中取得相应数据类型的值的函数;
根据所述取值函数的宏、返回函数的宏、所述将所述执行树中的值转换为 Datum 的函数以及所述从 Datum 中取得相应数据类型的值的函数将所述执行树转换为数据类型为所述第三数据类型的 C 语言代码。
6.一种转换代码语言的装置,其特征在于,包括:
第一获取单元,用于获取第一数据类型,所述第一数据类型为源代码对应的 SQL 代码的数据类型;
第二获取单元,用于根据所述第一数据类型和第一对应关系获取第二数据类型,所述第二数据类型为所述第一数据类型的 SQL 代码对应的执行树的数据类型,所述第一对应关系包括SQL 的数据类型与执行树的数据类型的对应关系;
第三获取单元,用于根据所述第二数据类型和第二对应关系获取第三数据类型,所述第三数据类型为所述第二数据类型的执行树对应的 C 语言的数据类型,所述第二对应关系包括执行树的数据类型与 C 语言的数据类型的对应关系;
第一转换单元,用于将所述源代码转换为数据类型为所述第二数据类型的执行树;
第二转换单元,用于将所述执行树转换为数据类型为所述第三数据类型的 C 语言代码;
其中,所述执行树的数据类型包括:
KB_DTYPE_VAR,KB_DTYPE_ROW,KB_DTYPE_REC,KB_DTYPE_RECFIELD以及KB_DTYPE_ARRAYELEM;
所述第一对应关系包括:
SQL 的基础型与执行树的 KB_DTYPE_VAR 的对应关系;
SQL 的组合型与执行树的 KB_DTYPE_ ROW 的对应关系;
SQL 的伪类型与执行树的 KB_DTYPE_ REC 的对应关系;
所述第二对应关系包括:
执行树的 KB_DTYPE_VAR、KB_DTYPE_RECFIELD 以及 KB_DTYPE_ARRAYELEM 与 C语言的 Datum 的对应关系;
函数本身创建的执行树的KB_DTYPE_ROW和 KB_DTYPE_REC 与 C 语言的 HeapTuple的对应关系;
从传参调用中得到的执行树的 KB_DTYPE_ROW 和 KB_DTYPE_REC 与 C 语言的HeapTupleHeader 的对应关系。
7. 一种电子设备,其特征在于,包括:存储器和处理器,存储器用于存储计算机程序;处理器用于在调用计算机程序时执行权利要求 1-5 任一项所述的转换代码语言的方法。
8. 一种计算机可读存储介质,其特征在于,其上存储有计算机程序,计算机程序被处理器执行时实现权利要求 1-5 任一项所述的转换代码语言的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011164134.9A CN112230934B (zh) | 2020-10-27 | 2020-10-27 | 一种转换代码语言的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011164134.9A CN112230934B (zh) | 2020-10-27 | 2020-10-27 | 一种转换代码语言的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112230934A CN112230934A (zh) | 2021-01-15 |
CN112230934B true CN112230934B (zh) | 2023-08-29 |
Family
ID=74110169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011164134.9A Active CN112230934B (zh) | 2020-10-27 | 2020-10-27 | 一种转换代码语言的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112230934B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11550583B2 (en) * | 2020-11-13 | 2023-01-10 | Google Llc | Systems and methods for handling macro compatibility for documents at a storage system |
CN113391818A (zh) * | 2021-03-26 | 2021-09-14 | 广州海量数据库技术有限公司 | 一种编译文件的生成方法以及装置 |
CN113420531B (zh) * | 2021-06-24 | 2024-03-12 | 北京达佳互联信息技术有限公司 | 一种代码文本的转换方法、装置及存储介质 |
CN117075911B (zh) * | 2023-10-13 | 2024-01-12 | 北京人大金仓信息技术股份有限公司 | 由pl语言到c语言的变量代码转换方法、存储介质和设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875335A (en) * | 1996-09-30 | 1999-02-23 | Apple Computer, Inc. | Parameter marshaling techniques for dynamic object-oriented programming languages |
US7681184B1 (en) * | 2004-05-24 | 2010-03-16 | Borland Software Corporation | System and methodology for cross language type system compatibility |
CN102999370A (zh) * | 2011-09-16 | 2013-03-27 | 腾讯科技(深圳)有限公司 | 脚本的执行方法及系统 |
CN103631632A (zh) * | 2013-11-29 | 2014-03-12 | 华为技术有限公司 | 移植方法及源到源编译器 |
US9459848B1 (en) * | 2015-05-29 | 2016-10-04 | International Business Machines Corporation | Obtaining correct compile results by absorbing mismatches between data types representations |
CN106339384A (zh) * | 2015-07-07 | 2017-01-18 | 小米科技有限责任公司 | 存储过程的转换方法及装置 |
CN110245002A (zh) * | 2019-05-23 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 系统交互方法、装置、设备及存储介质 |
CN111008021A (zh) * | 2019-12-24 | 2020-04-14 | 象辑知源(武汉)科技有限公司 | 一种基于Presto的支持多数据源的混合执行SQL和python脚本的方法及系统 |
CN111488154A (zh) * | 2020-04-23 | 2020-08-04 | 北京东土科技股份有限公司 | St语言源代码编译方法、装置、计算机设备及介质 |
CN114385186A (zh) * | 2022-01-12 | 2022-04-22 | 平安壹钱包电子商务有限公司 | 数据类型转换方法、装置、设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015012711A1 (en) * | 2013-07-23 | 2015-01-29 | Huawei Technologies Co., Ltd | Method for constructing a graph-based intermediate representation in a compiler |
CN111708539B (zh) * | 2020-06-17 | 2021-07-06 | 腾讯科技(深圳)有限公司 | 一种应用程序代码转换方法、装置、电子设备和存储介质 |
-
2020
- 2020-10-27 CN CN202011164134.9A patent/CN112230934B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875335A (en) * | 1996-09-30 | 1999-02-23 | Apple Computer, Inc. | Parameter marshaling techniques for dynamic object-oriented programming languages |
US7681184B1 (en) * | 2004-05-24 | 2010-03-16 | Borland Software Corporation | System and methodology for cross language type system compatibility |
CN102999370A (zh) * | 2011-09-16 | 2013-03-27 | 腾讯科技(深圳)有限公司 | 脚本的执行方法及系统 |
CN103631632A (zh) * | 2013-11-29 | 2014-03-12 | 华为技术有限公司 | 移植方法及源到源编译器 |
US9459848B1 (en) * | 2015-05-29 | 2016-10-04 | International Business Machines Corporation | Obtaining correct compile results by absorbing mismatches between data types representations |
CN106339384A (zh) * | 2015-07-07 | 2017-01-18 | 小米科技有限责任公司 | 存储过程的转换方法及装置 |
CN110245002A (zh) * | 2019-05-23 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 系统交互方法、装置、设备及存储介质 |
CN111008021A (zh) * | 2019-12-24 | 2020-04-14 | 象辑知源(武汉)科技有限公司 | 一种基于Presto的支持多数据源的混合执行SQL和python脚本的方法及系统 |
CN111488154A (zh) * | 2020-04-23 | 2020-08-04 | 北京东土科技股份有限公司 | St语言源代码编译方法、装置、计算机设备及介质 |
CN114385186A (zh) * | 2022-01-12 | 2022-04-22 | 平安壹钱包电子商务有限公司 | 数据类型转换方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112230934A (zh) | 2021-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112230934B (zh) | 一种转换代码语言的方法及装置 | |
WO2021179722A1 (zh) | Sql语句解析方法、系统、计算机设备和存储介质 | |
CN110955714B (zh) | 一种将非结构化文本转化为结构化文本的方法及装置 | |
CN106126504A (zh) | A2l语法解析器及方法 | |
WO2020108345A1 (zh) | 数据库索引以及数据库查询的处理方法、装置及设备 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN112765248A (zh) | 基于sql的数据抽取的方法及设备 | |
CN115599764A (zh) | 一种表格数据的迁移方法、设备及介质 | |
CN112559606A (zh) | 用于json格式数据的转换方法及转换装置 | |
CN113407565A (zh) | 跨库数据查询方法、装置和设备 | |
CN108241620B (zh) | 查询脚本的生成方法及装置 | |
US11620311B1 (en) | Transformation of directed graph into relational data | |
CN107220265A (zh) | 一种数据库语句编译和执行方法及装置 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
CN110019544B (zh) | 数据查询方法及系统 | |
CN111240761B (zh) | 一种配置文件的加载方法和装置 | |
Alborzi et al. | Execution time analysis of a top-down R-tree construction algorithm | |
CN111159192B (zh) | 基于大数据的数据入库方法、装置、存储介质和处理器 | |
CN112445810A (zh) | 一种数据仓库数据更新方法、设备、电子设备及存储介质 | |
CN112749189A (zh) | 数据查询方法及装置 | |
CN108228604B (zh) | 基于内存对象的模型构建方法、信息查询方法及装置 | |
CN111338986B (zh) | 一种获取三维模型数据结构中数据的方法 | |
CN104239576A (zh) | 查找HBase表列值中所有行的方法和装置 | |
CN111723104A (zh) | 一种数据处理系统中语法分析的方法、装置及系统 | |
US20240028228A1 (en) | Tiered memory data structures and algorithms for static searching via binary search |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |