IP Library › Granted Patent US 12,314,733
Granted Patent B2
US 12,314,733 · App. 17/494,615 · Granted May 27, 2025

Systems and methods for implementing a shim database driver

Inventors: Vadim Yarovoy (San Francisco, CA); Raghavendran Hanumantharau (San Francisco, CA); Olga Tikhonova (San Francisco, CA); Da Zhao (San Francisco, CA); Arundhati Tambe (San Francisco, CA); Shruti Sharma (San Jose, CA); Jason Woods (Atlanta, GA)
Assignee: Salesforce, Inc.
G06F9/44505G06F9/4411G06F9/547G06F16/17G06F16/955G06F9/44526G06F9/449
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 12,314,733
App. No.
17/494,615
Granted
May 27, 2025
Kind
B2
Abstract

Disclosed are some implementations of systems, apparatus, methods and computer program products for implementing a shim driver configurable to provide a database driver. A shim driver class is loaded from a class path and instantiated such that a shim driver is generated. A directory path and database driver class name are obtained from a configuration file. An application transmits a request for a database driver via an application programming interface (API) of the shim driver, where the request includes the directory path and database driver class name. The shim driver loads a database driver class identified by the database driver class name using the directory path, instantiates the database driver class such that a first database driver is generated, and provides the first database driver responsive to the request.

Claims (52)

1. A system comprising:

a database system implemented using a server system, the database system configurable to cause:

obtaining, using a configuration file, a first directory path associated with a first directory and a first identifier associated with a first database driver class, the first directory being a hidden directory;

loading a set of classes via a class path, the set of classes including a shim driver class;

instantiating the shim driver class such that a shim driver object is generated, the shim driver object providing a first application programming interface (API);

transmitting, a first request via the first API, the first request having a first argument including the first directory path and a second argument including the first identifier associated with the first database driver class;

obtaining, via the first API, a first database driver corresponding to the first database driver class responsive to calling the first API, the first database driver configurable to implement a first database protocol in association with a database connection, the first database driver exposing a set of APIs including a second API via which a device can request a database operation on a database compatible with the first database protocol;

storing the first database driver in a memory of the system; and

requesting a first database operation in relation to a first database compatible with the first database protocol via the second API, the first database driver configurable to execute a set of computer-readable instructions of the first database driver responsive to processing the request for the first database operation.

2. The system of claim 1 , the first database driver having a java.sql.Driver interface.

3. The system of claim 1 , the first database driver having a java.sql.Wrapper interface.

4. The system of claim 1 , the database system further configurable to cause:

deleting the first database driver by transmitting a second request via a second API, the second request having an argument including the first database driver.

5. The system of claim 1 , the database system further configurable to cause:

processing a request received from a client device, the request including a uniform resource locator (URL); and

responsive to the request received from the client device, deleting the first database driver by transmitting a second request via a second API, the second request having an argument including the first database driver.

6. The system of claim 1 , the database system further configurable to cause:

generating the first directory path using information obtained from the configuration file.

7. The system of claim 1 , wherein storing the first database driver includes storing class files associated with the first database driver in one or more hidden directories.

8. The system of claim 1 , wherein the first database driver class is an earlier version of the first database driver, enabling the shim driver to perform a rollback to the earlier version of the first database driver.

9. A method, comprising:

processing, by a server, a first request identifying a first directory path and a first identifier associated with a first database driver class, the first directory path being associated with a first directory, the first directory being a hidden directory;

obtaining, by a server, the first database driver class stored in the first directory using the first identifier, the first database driver class being configurable to implement a first database protocol in association with a database connection;

instantiating the first database driver class such that a first database driver corresponding to the first driver class is generated; and

providing the first database driver responsive to the first request, the first database driver exposing a set of APIs including a first API via which a device can request a database operation on a database compatible with the first database protocol.

10. The method of claim 9 , the first database driver having a java.sql.Driver interface.

11. The method of claim 9 , the first database driver having a java.sql.Wrapper interface.

12. The method of claim 9 , further comprising:

loading the first database driver class via a class loader.

13. The method of claim 9 , further comprising:

processing, by a server, a second request received via a second API; and

responsive to processing the second request,

deleting the first database driver class via a class loader; and

deleting the first database driver.

14. The method of claim 13 , the second request including the first database driver.

15. A computer program product comprising computer-readable program code capable of being executed by one or more processors when retrieved from a non-transitory computer-readable medium, the program code comprising computer-readable instructions configurable to cause:

obtaining, using a configuration file, a first directory path associated with a first directory and a first identifier associated with a first database driver class, the first directory being a hidden directory;

loading a set of classes via a class path, the set of classes including a shim driver class;

instantiating the shim driver class such that a shim driver object is generated, the shim driver object providing a first application programming interface (API);

transmitting, a first request via the first API, the first request having a first argument including the first directory path and a second argument including the first identifier associated with the first database driver class;

obtaining, via the first API, a first database driver corresponding to the first database driver class responsive to calling the first API, the first database driver configurable to implement a first database protocol in association with a database connection, the first database driver exposing a set of APIs including a second API via which a device can request a database operation on a database compatible with the first database protocol;

storing the first database driver; and

requesting a first database operation in relation to a first database compatible with the first database protocol via the second API, the first database driver configurable to execute a set of computer-readable instructions of the first database driver responsive to processing the request for the first database operation.

16. The computer program product of claim 15 , the first database driver having a java.sql.Driver interface.

17. The computer program product of claim 15 , the first database driver having a java.sql.Wrapper interface.

18. The computer program product of claim 15 , the program code comprising computer-readable instructions further configurable to cause:

deleting the first database driver by transmitting a second request via a second API, the second request having an argument including the first database driver.

19. The computer program product of claim 15 , the program code comprising computer-readable instructions further configurable to cause:

processing a request received from a client device, the request including a uniform resource locator (URL); and

responsive to the request received from the client device, deleting the first database driver by transmitting a second request via a second API, the second request having an argument including the first database driver.

20. The computer program product of claim 15 , the program code comprising computer-readable instructions further configurable to cause:

generating the first directory path using information obtained from the configuration file.

Assignments (2)
CHANGE OF NAME Recorded Aug 4, 2026
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 076118/0548 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2021
From: YAROVOY, VADIM; HANUMANTHARAU, RAGHAVENDRAN; TIKHONOVA, OLGA; ZHAO, DA; TAMBE, ARUNDHATI; SHARMA, SHRUTI; WOODS, JASON
To: SALESFORCE.COM, INC.
Reel/Frame 057707/0660 →
Continuity (1)
Related Publication 20230110698A1 · Apr 13, 2023
References Cited (15)
US 10353723B2 · Hanumantharau et al. · 2019 [cited by applicant]
US 10523425B2 · Hanumantharau et al. · 2019 [cited by applicant]
US 20050149947A1 · Callender · 2005 [cited by examiner]
US 20160335104A1 · Elias · 2016 [cited by examiner]
US 20180129592A1 · Li · 2018 [cited by examiner]
US 20190354719A1 · Obembe et al. · 2019 [cited by applicant]
US 20200050693A1 · Obembe et al. · 2020 [cited by applicant]
US 20200065021A1 · Mayatskikh · 2020 [cited by examiner]
US 20200250325A1 · Chong et al. · 2020 [cited by applicant]
US 20210081427A1 · Obembe et al. · 2021 [cited by applicant]
US 20210103561A1 · Obembe et al. · 2021 [cited by applicant]
US 20210126964A1 · Obembe et al. · 2021 [cited by applicant]
CN 112889054A · 2021 [cited by applicant]
EP 3814968A1 · 2021 [cited by applicant]
WO 2020159694A1 · 2020 [cited by applicant]