IP Library Granted Patent US 11,537,608
Granted Patent B2
US 11,537,608 · App. 16/937,474 · Granted Dec 27, 2022

Systems and methods for identifying common components across SQL parser dialects

Inventors: Kimberly Ann Brushaber (Austin, TX); Walter Vigario Couto (Toronto, CA)
Assignee: Embarcadero Technologies, Inc.
G06F16/2452G06F9/54G06F16/2246G06F16/24553G06F40/166G06F40/205G06F40/253
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 11,537,608
App. No.
16/937,474
Granted
Dec 27, 2022
Kind
B2
Abstract

A method includes generating a representation of each of a plurality of dialects of structured query language (SQL) statements, and receiving a first SQL statement. The first SQL statement is in a first dialect of the plurality of dialects. The method further includes generating a first output corresponding to the first SQL statement. The first output has a plurality of first data structures arranged in a first tree structure. Each of the plurality of first data structures corresponds to a portion of the first SQL statement. The method further include receiving a second SQL statement, the second SQL statement is in a second dialect of the plurality of dialects, and generating a second output corresponding to the second SQL statement. The second output has a plurality of second data structures arranged in a second tree structure. Each of the plurality of second data structures corresponds to a portion of the second SQL statement. A first data structure of the plurality of first data structures is the same as a second data structure of the plurality of second data structures.

Claims (67)

1. A method, comprising:

generating a representation of each of a plurality of dialects of structured query language (SQL) statements;

receiving a first SQL statement, the first SQL statement is in a first dialect of the plurality of dialects;

generating a first output corresponding to the first SQL statement, the first output comprises a plurality of first data structures arranged in a first tree structure, each of the plurality of first data structures corresponds to a portion of the first SQL statement;

receiving a second SQL statement, the second SQL statement is in a second dialect of the plurality of dialects; and

generating a second output corresponding to the second SQL statement, the second output comprises a plurality of second data structures arranged in a second tree structure, each of the plurality of second data structures corresponds to a portion of the second SQL statement, wherein a first data structure of the plurality of first data structures is same as a second data structure of the plurality of second data structures, wherein the first data structure and the second data structure are identified by a same identifier (ID).

2. The method of claim 1 , wherein the first SQL statement and the second SQL statement have different syntaxes.

3. The method of claim 1 , wherein

generating the representation of each of the plurality of dialects of SQL statements comprises generating grammar rules for the SQL statements of each of the plurality of dialects based on a syntax diagram for each of the plurality of dialects; and

the grammar rules are specific to each of the plurality of dialects.

4. The method of claim 3 , wherein the grammar rules comprise:

lexer rules used to identify keywords in the syntax diagram and tokenize the keywords as tokens; and

parser rules used to combine the tokens to form a parse tree, wherein the representation corresponds to the parse tree.

5. The method of claim 4 , wherein each of the tokens comprises a unique lexer identifier (ID) and annotations corresponding to the unique lexer ID.

6. The method of claim 3 , wherein generating the representation of each of the plurality of dialects of SQL statements further comprises converting the syntax diagram for each of the plurality of dialects into a parse tree based on the grammar rules.

7. The method of claim 1 , further comprising:

receiving a first platform indicator with the first SQL statement, the first platform indicator identifies the first dialect; and

receiving a second platform indicator with the second SQL statement, the second platform indicator identifies the second dialect.

8. The method of claim 7 , wherein

generating the first output corresponding to the first SQL statement comprises identifying a first parse tree for the first dialect based on the first platform indicator; and

generating the second output corresponding to the second SQL statement comprises identifying a second parse tree for the second dialect based on the second platform indicator.

9. The method of claim 8 , further comprising:

generating a first annotated parse tree based on the first parse tree and the first SQL statement; and

generating a second annotated parse tree based on the second parse tree and the second SQL statement.

10. The method of claim 9 , further comprising:

generating a first application protocol interface (API) tree based on the first annotated parse tree; and

generating a second API tree based on the second annotated parse tree.

11. The method of claim 10 , wherein

the first tree structure comprises the first API tree;

the plurality of first data structures comprise interfaces of the first API tree;

the second tree structure comprises the second API tree; and

the plurality of second data structures comprise interfaces of the second API tree.

12. The method of claim 1 , wherein the first data structure and the second data structure invoke a same task to be performed with respect to a database.

13. A non-transitory computer-readable medium having computer-readable instructions such that, when executed by a processor, causes the processor to:

generate a representation of each of a plurality of dialects of structured query language (SQL) statements;

receive a first SQL statement, the first SQL statement is in a first dialect of the plurality of dialects;

generate a first output corresponding to the first SQL statement, the first output comprises a plurality of first data structures arranged in a first tree structure, each of the plurality of first data structures corresponds to a portion of the first SQL statement;

receive a second SQL statement, the second SQL statement is in a second dialect of the plurality of dialects; and

generate a second output corresponding to the second SQL statement, the second output comprises a plurality of second data structures arranged in a second tree structure, each of the plurality of second data structures corresponds to a portion of the second SQL statement, wherein a first data structure of the plurality of first data structures is same as a second data structure of the plurality of second data structures, wherein the first data structure and the second data structure are identified by a same identifier (ID).

14. The non-transitory computer-readable medium of claim 13 , wherein

generating the representation of each of the plurality of dialects of SQL statements comprises generating grammar rules for the SQL statements of each of the plurality of dialects based on a syntax diagram for each of the plurality of dialects; and

the grammar rules are specific to each of the plurality of dialects.

15. The non-transitory computer-readable medium of claim 14 , wherein the grammar rules comprise:

lexer rules used to identify keywords in the syntax diagram and tokenize the keywords as tokens; and

parser rules used to combine the tokens to form a parse tree, wherein the representation corresponds to the parse tree.

16. The non-transitory computer-readable medium of claim 15 , wherein each of the tokens comprises a unique lexer identifier (ID) and annotations corresponding to the unique lexer ID.

17. The non-transitory computer-readable medium of claim 14 , wherein generating the representation of each of the plurality of dialects of SQL statements further comprises converting the syntax diagram for each of the plurality of dialects into a parse tree based on the grammar rules.

18. The non-transitory computer-readable medium of claim 13 , wherein the processor is further configured to:

receive a first platform indicator with the first SQL statement, the first platform indicator identifies the first dialect; and

receive a second platform indicator with the second SQL statement, the second platform indicator identifies the second dialect.

19. The non-transitory computer-readable medium of claim 18 , wherein

generating the first output corresponding to the first SQL statement comprises identifying a first parse tree for the first dialect based on the first platform indicator; and

generating the second output corresponding to the second SQL statement comprises identifying a second parse tree for the second dialect based on the second platform indicator.

20. The non-transitory computer-readable medium of claim 19 , wherein the processor is further configured to:

generate a first annotated parse tree based on the first parse tree and the first SQL statement; and

generate a second annotated parse tree based on the second parse tree and the second SQL statement.

21. The non-transitory computer-readable medium of claim 20 , wherein the processor is further configured to:

generate a first application protocol interface (API) tree based on the first annotated parse tree; and

generate a second API tree based on the second annotated parse tree.

22. A system, comprising:

a memory unit; and

a processor configured to:

generate a representation of each of a plurality of dialects of structured query language (SQL) statements;

receive a first SQL statement, the first SQL statement is in a first dialect of the plurality of dialects;

generate a first output corresponding to the first SQL statement, the first output comprises a plurality of first data structures arranged in a first tree structure, each of the plurality of first data structures corresponds to a portion of the first SQL statement;

receive a second SQL statement, the second SQL statement is in a second dialect of the plurality of dialects; and

generate a second output corresponding to the second SQL statement, the second output comprises a plurality of second data structures arranged in a second tree structure, each of the plurality of second data structures corresponds to a portion of the second SQL statement, wherein a first data structure of the plurality of first data structures is the same as a second data structure of the plurality of second data structures, wherein the first data structure and the second data structure are identified by a same identifier (ID).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2020
From: BRUSHABER, KIMBERLY ANN; COUTO, WALTER VIGARIO
To: EMBARCADERO TECHNOLOGIES, INC.
Reel/Frame 053298/0498 →
Continuity (2)
Provisional Application 62888338 · Aug 16, 2019
Related Publication 20210049167A1 · Feb 18, 2021