IP Library Granted Patent US 10,353,723
Granted Patent B2
US 10,353,723 · App. 15/883,803 · Granted Jul 16, 2019

PL/SQL language parsing at a virtual machine

Inventors: Raghavendran Hanumantharau (Fremont, CA); Yoram Tal (San Francisco, CA)
Assignee: salesforce.com, inc.
G06F9/4552G06F9/45558G06F16/2448G06F2009/45595
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,353,723
App. No.
15/883,803
Granted
Jul 16, 2019
Kind
B2
Abstract

In some database systems, a user device may query for data records using a procedural language extension to structured query language (PL/SQL) call. However, some databases may not be configured to process PL/SQL code. In these cases, a virtual machine may intercept the PL/SQL call, and may transform the call to a format usable by the database. For example, the virtual machine may deconstruct the PL/SQL call to determine the procedural and query functions that comprise the PL/SQL call. The virtual machine may then search a database for non-PL/SQL code snippets that correspond to these determined functions, and may generate non-PL/SQL code (e.g., Java code) that may perform the same functions as the PL/SQL call. The virtual machine, the database, or a combination of the two may execute the non-PL/SQL code to retrieve the data records from the database, and may return the records to the user device.

Claims (56)

1. A method for programming language parsing, comprising:

identifying, at a virtual machine server, that a database is not configured to handle procedural language extension to structured query language (PL/SQL) calls based at least in part on a PL/SQL compatibility component identifying that the database is not compatible with PL/SQL;

in response to the identifying, intercepting a PL/SQL call at the virtual machine server based at least in part on an extension to a database connector of the database;

determining one or more procedural functions corresponding to the PL/SQL call and one or more SQL operations specified in the PL/SQL call, the one or more procedural functions corresponding to non-query functionality;

translating the one or more procedural functions corresponding to the PL/SQL call into non-PL/SQL code configured to perform the one or more procedural functions when executed by a processor; and

transmitting, instead of the PL/SQL call, the one or more SQL operations specified in the PL/SQL call to the database according to the non-PL/SQL code configured to perform the one or more procedural functions.

2. The method of claim 1 , further comprising:

identifying a non-PL/SQL code snippet corresponding to each of the one or more procedural functions and the one or more SQL operations; and

aggregating the non-PL/SQL code snippets, wherein generating the non-PL/SQL code is based at least in part on the aggregated non-PL/SQL code snippets.

3. The method of claim 1 , further comprising:

executing the translated non-PL/SQL code at the virtual machine server, wherein execution of the non-PL/SQL code comprises the transmitting the one or more SQL operations to the database; and

receiving a record from the database based at least in part on the one or more SQL operations.

4. The method of claim 1 , wherein the one or more SQL operations are transmitted to the database over a Java database connectivity (JDBC) connection.

5. The method of claim 1 , wherein the determining the one or more procedural functions and the one or more SQL operations further comprises de-serializing an invocation packet comprising an indication of the PL/SQL call.

6. The method of claim 1 , wherein the determining the one or more procedural functions and the one or more SQL operations is based at least in part on a just-in-time (JIT) compiler, a JIT interpreter, a parser generator, a dependency graph, an annotated parse tree, or a combination thereof.

7. An apparatus for programming language parsing, comprising:

a processor;

memory in electronic communication with the processor; and

instructions stored in the memory and operable, when executed by the processor, to cause the apparatus to:

identify, at a virtual machine server, that a database is not configured to handle procedural language extension to structured query language (PL/SQL) calls based at least in part on a PL/SQL compatibility component identifying that the database is not compatible with PL/SQL;

in response to the identifying, intercept a PL/SQL call at the virtual machine server based at least in part on an extension to a database connector of the database;

determine one or more procedural functions corresponding to the PL/SQL call and one or more SQL operations specified in the PL/SQL call, the one or more procedural functions corresponding to non-query functionality;

translate the one or more procedural functions corresponding to the PL/SQL call into non-PL/SQL code configured to perform the one or more procedural functions when executed by a processor; and

transmit, instead of the PL/SQL call, the one or more SQL operations specified in the PL/SQL call to the database according to the non-PL/SQL code configured to perform the one or more procedural functions.

8. The apparatus of claim 7 , wherein the instructions are further executable by the processor to:

identify a non-PL/SQL code snippet corresponding to each of the one or more procedural functions and the SQL operations; and

aggregate the non-PL/SQL code snippets, wherein generating the non-PL/SQL code is based at least in part on the aggregated non-PL/SQL code snippets.

9. The apparatus of claim 7 , wherein the instructions are further executable by the processor to:

execute the translated non-PL/SQL code at the virtual machine server, wherein execution of the non-PL/SQL code comprises the transmitting the one or more SQL operations to the database; and

receive a record from the database based at least in part on the one or more SQL operations.

10. The apparatus of claim 7 , wherein the one or more SQL operations are transmitted to the database over a Java database connectivity (JDBC) connection.

11. The apparatus of claim 7 , wherein the determining the one or more procedural functions and the one or more SQL operations further comprises de-serializing an invocation packet comprising an indication of the PL/SQL call.

12. The apparatus of claim 7 , wherein the determining the one or more procedural functions and the one or more SQL operations is based at least in part on a just-in-time (JIT) compiler, a JIT interpreter, a parser generator, a dependency graph, an annotated parse tree, or a combination thereof.

13. A non-transitory computer-readable medium storing code for programming language parsing, the code comprising instructions executable by a processor to:

identify, at a virtual machine server, that a database is not configured to handle procedural language extension to structured query language (PL/SQL) calls based at least in part on a PL/SQL compatibility component identifying that the database is not compatible with PL/SQL;

in response to the identifying, intercept a PL/SQL call at the virtual machine server based at least in part on an extension to a database connector of the database;

determine one or more procedural functions corresponding to the PL/SQL call and one or more SQL operations specified in the PL/SQL call, the one or more procedural functions corresponding to non-query functionality;

translate the one or more procedural functions corresponding to the PL/SQL call into non-PL/SQL code configured to perform the one or more procedural functions when executed by a processor; and

transmit, instead of the PL/SQL call, the one or more SQL operations specified in the PL/SQL call to the database according to the non-PL/SQL code configured to perform the one or more procedural functions.

14. The non-transitory computer-readable medium of claim 13 , wherein the instructions are further executable by the processor to:

identify a non-PL/SQL code snippet corresponding to each of the one or more procedural functions and the SQL operations; and

aggregate the non-PL/SQL code snippets, wherein generating the non-PL/SQL code is based at least in part on the aggregated non-PL/SQL code snippets.

15. The non-transitory computer-readable medium of claim 13 , wherein the instructions are further executable by the processor to:

execute the translated non-PL/SQL code at the virtual machine server, wherein execution of the non-PL/SQL code comprises the transmitting the one or more SQL operations to the database; and

receive a record from the database based at least in part on the one or more SQL operations.

16. The non-transitory computer-readable medium of claim 13 , wherein the one or more SQL operations are transmitted to the database over a Java database connectivity (JDBC) connection.

17. The non-transitory computer-readable medium of claim 13 , wherein the determining the one or more procedural functions and the one or more SQL operations further comprises de-serializing an invocation packet comprising an indication of the PL/SQL call.

18. The method of claim 1 , further comprising:

executing a set of tests on the non-PL/SQL code; and

determining whether the non-PL/SQL code performs the one or more procedural functions specified in the PL/SQL call based at least in part on executing the set of tests, wherein transmitting the one or more SQL operations to the database is based at least in part on the determining whether the non-PL/SQL code performs the one or more procedural functions.

19. The apparatus of claim 7 , wherein the instructions are further executable by the processor to:

execute a set of tests on the non-PL/SQL code; and

determine whether the non-PL/SQL code performs the one or more procedural functions specified in the PL/SQL call based at least in part on executing the set of tests, wherein transmitting the one or more SQL operations to the database is based at least in part on the determining whether the non-PL/SQL code performs the one or more procedural functions.

20. The non-transitory computer-readable medium of claim 13 , wherein the instructions are further executable by the processor to:

execute a set of tests on the non-PL/SQL code; and

determine whether the non-PL/SQL code performs the one or more procedural functions specified in the PL/SQL call based at least in part on executing the set of tests, wherein transmitting the one or more SQL operations to the database is based at least in part on the determining whether the non-PL/SQL code performs the one or more procedural functions.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0318 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2018
From: HANUMANTHARAU, RAGHAVENDRAN; TAL, YORAM
To: SALESFORCE.COM, INC.
Reel/Frame 044813/0830 →
Continuity (2)
Provisional Application 62540729 · Aug 3, 2017
Related Publication 20190042288A1 · Feb 7, 2019
Cited By (1)
US 12,314,733