# US 2020/0394191 A1 · Non-disruptive dynamic ad-hoc database catalog services

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2020/0394191 A1
- Document ID: US20200394191A1
- Status: Published application
- Kind: A1
- Application number: 16/441,989
- Filed: 2019-06-14
- Published: 2020-12-17
- Earliest claimed: 2019-06-14
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: Pit Fender; Benjamin Schlegel; Matthias Brantner
- Web page: https://patentgrep.com/patent/US20200394191A1

## CPC

- G06F 16/24542: {Plan optimisation}
- G06F 16/212: {with details for data modelling support}
- G06F 16/284: {Relational databases}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Approaches herein transparently delegate data access from a relational database management system (RDBMS) onto an offload engine (OE). The RDBMS receives a database statement referencing a user defined function (UDF). In an execution plan, the RDBMS replaces the UDF reference with an invocation of a relational operator in the OE. Execution invokes the relational operator in the OE to obtain a result based on data in the OE. Thus, the UDF is bound to the OE, and almost all of the RDBMS avoids specially handling the UDF. The UDF may be a table function that offloads a relational table for processing. User defined objects such as functions and types provide metadata about the table. Multiple tables can be offloaded and processed together, such that some or all offloaded tables are not materialized in the RDBMS. Offloaded tables may participate in standard relational algebra such as in a database statement.

## Claims

### Claim 1

A method comprising:
storing, in a relational database management system (RDBMS), one or more database dictionaries that include a particular database dictionary that defines a user defined function (UDF);
receiving a database statement that specifies processing, as a relational table that is not defined in the one or more database dictionaries, results of the UDF;
generating and executing, based on the database statement, an execution plan that includes:
accessing data in an offload engine to obtain said results of the UDF, and
processing, by the RDBMS, said results of the UDF as said relational table that is not defined in the one or more database dictionaries.

### Claim 2 (depends on 1)

The method of claim 1 wherein the offload engine does not store said data in non-volatile storage.

### Claim 3 (depends on 2)

The method of claim 2 wherein the offload engine does not include non-volatile storage that can store said data.

### Claim 4 (depends on 1)

The method of claim 1 wherein:
the UDF accepts an argument that identifies a particular dataset, which contains said data, of a plurality of datasets stored in the offload engine;
said accessing said data in the offload engine comprises sending the argument that identifies the particular dataset to the offload engine.

### Claim 5 (depends on 4)

The method of claim 4 wherein:
the database statement comprises an expression that comprises two references to the UDF;
each reference of the two references specifies a respective distinct value, for said argument, that identifies a respective distinct dataset;
said sending the argument that identifies the particular dataset comprises sending a translation of the expression to the offload engine.

### Claim 6 (depends on 5)

The method of claim 5 wherein each respective distinct dataset of the two references comprises a distinct amount of columns.

### Claim 7 (depends on 1)

The method of claim 1 wherein:
the UDF accepts an argument that identifies a particular dataset of a plurality of datasets stored in the offload engine;
the database statement comprises a reference to the UDF that specifies a particular value, for said argument, that identifies a second relational table that is defined in the one or more database dictionaries.

### Claim 8 (depends on 7)

The method of claim 7 wherein:
the second relational table comprises: second data in the offload engine, and distinct third data in the RDBMS;
said executing the execution plan further comprises accessing the second data in the offload engine and the third data in the RDBMS.

### Claim 9 (depends on 8)

The method of claim 8 wherein:
the second data in the offload engine and the third data in the RDBMS are distinct partitions of the second relational table;
the second data in the offload engine is: a horizontal partition, or a vertical partition.

### Claim 10 (depends on 1)

The method of claim 1 wherein:
said relational table is a user defined type;
said processing said results of the UDF as said relational table comprises processing the user defined type.

### Claim 11 (depends on 1)

The method of claim 1 wherein said generating the execution plan comprises invoking a second UDF to obtain a cardinality of said data in the offload engine.

### Claim 12 (depends on 11)

The method of claim 11 wherein the second UDF is a member of a user defined type that encapsulates said data in the offload engine.

### Claim 13 (depends on 1)

The method of claim 1 wherein:
the database statement comprises a filtration criterion;
said accessing said data in the offload engine comprises sending the filtration criterion to the offload engine.

### Claim 14

One or more non-transitory machine-readable media storing instructions that, when executed by one or more processors, cause:
storing, in a relational database management system (RDBMS), one or more database dictionaries that include a particular database dictionary that defines a user defined function (UDF);
receiving a database statement that specifies processing, as a relational table that is not defined in the one or more database dictionaries, results of the UDF;
generating and executing, based on the database statement, an execution plan that includes:
accessing data in an offload engine to obtain said results of the UDF, and
processing, by the RDBMS, said results of the UDF as said relational table that is not defined in the one or more database dictionaries.

### Claim 15 (depends on 14)

The one or more non-transitory machine-readable media of claim 14 wherein the offload engine does not store said data in non-volatile storage.

### Claim 16 (depends on 14)

The one or more non-transitory machine-readable media of claim 14 wherein:
the UDF accepts an argument that identifies a particular dataset, which contains said data, of a plurality of datasets stored in the offload engine;
said accessing said data in the offload engine comprises sending the argument that identifies the particular dataset to the offload engine.

### Claim 17 (depends on 14)

The one or more non-transitory machine-readable media of claim 14 wherein:
the UDF accepts an argument that identifies a particular dataset of a plurality of datasets stored in the offload engine;
the database statement comprises a reference to the UDF that specifies a particular value, for said argument, that identifies a second relational table that is defined in the one or more database dictionaries.

### Claim 18 (depends on 17)

The one or more non-transitory machine-readable media of claim 17 wherein:
the second relational table comprises: second data in the offload engine, and distinct third data in the RDBMS;
said executing the execution plan further comprises accessing the second data in the offload engine and the third data in the RDBMS.

### Claim 19 (depends on 14)

The one or more non-transitory machine-readable media of claim 14 wherein:
said relational table is a user defined type;
said processing said results of the UDF as said relational table comprises processing the user defined type.

### Claim 20 (depends on 14)

The one or more non-transitory machine-readable media of claim 14 wherein said generating the execution plan comprises invoking a second UDF to obtain a cardinality of said data in the offload engine.
