IP Library Granted Patent US 11,250,018
Granted Patent B2
US 11,250,018 · App. 16/452,338 · Granted Feb 15, 2022

Method for automated query language expansion and indexing

Inventors: Steven Griffith (San Diego, CA); Ilge Akkaya (Palo Alto, CA); Audrey McGowan (New York, NY); Chris Tice (San Francisco, CA); Jason Freidman (San Francisco, CA); Jeff Watts (Albany, CA)
Assignee: Periscope Data Inc.
G06F16/258G06F16/2228G06F16/2433
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,250,018
App. No.
16/452,338
Granted
Feb 15, 2022
Kind
B2
Abstract

In an embodiment, a query system sends compact code to a database service for expansion of the compact code to partially-expanded code and expanded code. In an embodiment, a hash value is generated based on the partially-expanded code and indexed in memory with the expanded code. In an embodiment, a hash value is received as part of a command and expanded code is identified based on the hash value and sent to a database service.

Claims (80)

1. A method of processing a database query, comprising:

receiving a particular instance of compact code that conforms to a compact code language, wherein the particular instance of compact code includes multiple occurrences of a particular string;

wherein the particular string corresponds to a particular expanded string;

based on the particular instance of compact code, generating a particular instance of tokenized code, wherein the particular instance of tokenized code contains one or more tokens, wherein each of the one or more tokens corresponds to a subset of the particular instance of compact code;

based on the particular instance of tokenized code, generating:

a particular instance of expanded code that conforms to a language supported by a database server that does not support the compact code language, wherein, in the particular instance of expanded code, each occurrence of the particular string is expanded to the particular expanded string; and

a particular instance of partially-expanded code, wherein, in the particular instance of partially-expanded code, at least a first occurrence of the particular string is expanded to the particular expanded string, and at least a second occurrence of the particular string is not expanded to the particular expanded string;

causing the database server to execute the particular instance of expanded code;

receiving, at a system, from a client device over a network, a command that includes the hash value; and

in response to the command, the system:

using the hash-value-to-expanded-code index to look up the particular instance of expanded code based on the hash value, and

submitting the particular instance of expanded code to the database server to cause the database server to execute the particular instance of expanded code.

2. The method of claim 1 further comprising:

generating a hash-value-to-expanded-code index based on hash values created by applying a hash function to instances of partially-expanded code;

wherein generating the hash-value-to-expanded-code index includes:

generating a hash value by applying the hash function to the particular instance of partially-expanded code; and

indexing the particular instance of expanded code, in the hash-value-to-expanded-code index, based on the hash value.

3. The method of claim 1 , wherein:

the particular instance of expanded code is a first instance of expanded code; the database server is a first database server;

the language supported by the first database server is a first database language; the particular string corresponds to the particular expanded string in the first database language; the particular string corresponds to a second expanded string in a second database language;

the method further comprises, based on the particular instance of tokenized code, generating a second instance of expanded code that conforms to the second database language supported by a second database server that does not support the compact code language and does not support the first database language, wherein, in the second instance of expanded code, each occurrence of the particular string is expanded to the second expanded string.

4. The method of claim 3 , further comprising indexing, within the hash-value-to-expanded-code index, the second instance of expanded code based on the hash value.

5. The method of claim 1 , wherein receiving the particular instance of compact code comprises receiving the particular instance of compact code from a client device running a client application configured to send particular instances of compact code, and further comprising: in response to generating the particular instance of expanded code, sending, to the client application running on the client device, the particular instance of expanded code.

6. The method of claim 1 , further comprising:

receiving, at the system, a query that comprises a second instance of compact code and a second command that includes a second hash value; and

determining at the system, based on the second hash value, whether a corresponding particular instance of expanded code has been indexed in the hash-value-to-expanded-code index based on the second hash value;

in response to determining that a corresponding particular instance of expanded code has not been indexed in the hash-value-to-expanded-code index based on the second hash value, performing the steps of:

generating a corresponding particular instance of expanded code based on the second instance of compact code;

indexing the generated corresponding particular instance of expanded code in the hash-value-to-expanded-code index based on the second hash value.

7. The method of claim 1 , wherein generating a hash value based on the instance of partially-expanded code further comprises:

receiving one or more hash filter rules;

generating an initial hash value based on instance of the partially-expanded code; and producing the hash value by modifying the initial hash value based on the one or more hash filter rules.

8. The method of claim 1 , further comprising:

receiving, at the system, a compact code limit;

determining that a size of the particular instance of compact code is greater than the compact code limit; and

in response to determining that the size of the particular instance of compact code is greater than the compact code limit, generating an instance of reduced-size compact code by reducing the size of the particular instance of compact code to not exceed the compact code limit;

wherein generating a particular instance of partially-expanded code comprises generating partially-expanded code based on the instance of reduced-size compact code.

9. The method of claim 1 , wherein the language is Structured Query Language (SQL).

10. Computer-readable storage media for transferring data from a source repository to a target repository having computer-executable instructions embodied thereon, wherein, when executed by at least one processor, the computer-executable instructions cause the processor to:

receive a particular instance of compact code that conforms to a compact code language, wherein the particular instance of compact code includes multiple occurrences of a particular string;

wherein the particular string corresponds to a particular expanded string;

based on the particular instance of compact code, generate a particular instance of tokenized code, wherein the particular instance of tokenized code contains one or more tokens, wherein each of the one or more tokens corresponds to a subset of the particular instance of compact code;

based on the particular instance of tokenized code, generate:

a particular instance of expanded code that conforms to a language supported by a database server that does not support the compact code language, wherein, in the particular instance of expanded code, each occurrence of the particular string is expanded to the particular expanded string; and

a particular instance of partially-expanded code, wherein, in the particular instance of partially-expanded code, at least a first occurrence of the particular string is expanded to the particular expanded string, and at least a second occurrence of the particular string is not expanded to the particular expanded string;

cause the database server to execute the particular instance of expanded code;

receive, at a system, from a client device over a network, a command that includes the hash value; and

in response to the command, the system:

using the hash-value-to-expanded-code index to look up the particular instance of expanded code based on the hash value, and

submitting the particular instance of expanded code to the database server to cause the database server to execute the particular instance of expanded code.

11. The computer-readable storage media of claim 10 , the computer-executable instructions further causing the processor to:

generate a hash-value-to-expanded-code index based on hash values created by applying a hash function to instances of partially-expanded code;

wherein generating the hash-value-to-expanded-code index includes:

generating a hash value by applying the hash function to the particular instance of partially-expanded code; and

index the particular instance of expanded code, in the hash-value-to-expanded-code index, based on the hash value.

12. The computer-readable storage media of claim 10 , wherein:

the particular instance of expanded code is a first instance of expanded code;

the database server is a first database server;

the language supported by the first database server is a first database language;

the particular string corresponds to the particular expanded string in the first database language;

the particular string corresponds to a second expanded string in a second database language;

the computer-executable instructions further causing the processor to, based on the particular instance of tokenized code, generate a second instance of expanded code that conforms to the second database language supported by a second database server that does not support the compact code language and does not support the first database language, wherein, in the second instance of expanded code, each occurrence of the particular string is expanded to the second expanded string.

13. The computer-readable storage media of claim 12 , comprising computer-executable instructions further causing the processor to index, within the hash-value-to-expanded-code index, the second instance of expanded code based on the hash value.

14. The computer-readable storage media of claim 10 , wherein receiving the particular instance of compact code comprises receiving the particular instance of compact code from a client device running a client application configured to send particular instances of compact code, and further comprising computer-executable instructions causing the processor to:

in response to generating the particular instance of expanded code, send, to the client application running on the client device, the particular instance of expanded code.

15. The computer-readable storage media of claim 10 , the computer-executable instructions further causing the processor to:

receive, at the system, a query that comprises a second instance of compact code and a second command that includes a second hash value; and

determine at the system, based on the second hash value, whether a corresponding particular instance of expanded code has been indexed in the hash-value-to-expanded-code index based on the second hash value;

in response to determining that a corresponding particular instance of expanded code has not been indexed in the hash-value-to-expanded-code index based on the second hash value, the computer-executable instructions further causing the processor to:

generate a corresponding particular instance of expanded code based on the second instance of compact code;

index the generated corresponding particular instance of expanded code in the hash-value-to-expanded-code index based on the second hash value.

16. The computer-readable storage media of claim 10 , wherein generating a hash value based on the instance of partially-expanded code further comprises:

receiving one or more hash filter rules;

generating an initial hash value based on the instance of partially-expanded code; and producing the hash value by modifying the initial hash value based on the one or more hash filter rules.

17. The computer-readable storage media of claim 10 , the computer-executable instructions further causing the processor to:

receive, at the system, a compact code limit;

determine that a size of the particular instance of compact code is greater than the compact code limit; and

in response to determining that the size of the particular instance of compact code is greater than the compact code limit, generate an instance of reduced-size compact code by reducing the size of the particular instance of compact code to not exceed the compact code limit;

wherein generating a particular instance of partially-expanded code comprises generating partially-expanded code based on the instance of reduced-size compact code.

18. The computer-readable storage media of claim 10 , wherein the language is Structured Query Language (SQL).

Assignments (12)
RELEASE OF SECURITY INTEREST Recorded Jun 16, 2023
From: TRIPLEPOINT VENTURE GROWTH BDC CORP
To: SISENSE SF, INC.; SISENSE LTD.
Reel/Frame 063980/0047 →
SECURITY INTEREST Recorded Jun 14, 2023
From: SISENSE LTD; SISENSE SF INC.
To: HERCULES CAPITAL, INC.
Reel/Frame 063948/0662 →
RELEASE OF SECURITY INTEREST Recorded Jun 9, 2023
From: COMERICA BANK
To: SISENSE SF, INC.
Reel/Frame 063915/0252 →
SECURITY INTEREST Recorded Sep 24, 2021
From: SISENSE SF, INC.
To: COMERICA BANK
Reel/Frame 057588/0558 →
RELEASE OF SECURITY INTEREST Recorded Sep 24, 2021
From: SILICON VALLEY BANK
To: SISENSE SF, INC.
Reel/Frame 057594/0623 →
RELEASE OF SECURITY INTEREST Recorded Sep 24, 2021
From: SILICON VALLEY BANK, AS AGENT
To: SISENSE SF, INC.
Reel/Frame 057594/0661 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE ADDRESS OF 2 JABOTINSKY RD., RAMAT GAN, ISRAEL 5250501 PREVIOUSLY RECORDED ON REEL 051881 FRAME 0438. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Aug 13, 2020
From: PERISCOPE, INC.
To: SISENSE SF, INC.
Reel/Frame 053489/0345 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Mar 30, 2020
From: SISENSE SF, INC.
To: SILICON VALLEY BANK
Reel/Frame 052267/0282 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Mar 30, 2020
From: SISENSE SF, INC.
To: SILICON VALLEY BANK, AS AGENT
Reel/Frame 052267/0296 →
CHANGE OF NAME Recorded Feb 11, 2020
From: PERISCOPE, INC.
To: SISENSE SF, INC.
Reel/Frame 051881/0438 →
CHANGE OF NAME Recorded Jul 11, 2019
From: PERISCOPE DATA INC.
To: PERISCOPE, INC.
Reel/Frame 049726/0156 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2019
From: GRIFFITH, STEVEN; AKKAYA, ILGE; MCGOWAN, AUDREY; TICE, CHRIS; FREIDMAN, JASON; WATTS, JEFF
To: PERISCOPE DATA INC.
Reel/Frame 049590/0551 →
Continuity (1)
Related Publication 20200409969A1 · Dec 31, 2020