# US 2017/0185647 A1 · System and method for adaptive filtering of data requests

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

- Number: US 2017/0185647 A1
- Document ID: US20170185647A1
- Status: Published application
- Kind: A1
- Application number: 15/383,674
- Filed: 2016-12-19
- Published: 2017-06-29
- Earliest claimed: 2015-12-23
- Assignees: Gluent Inc.
- Applicants: Gluent Inc.
- Inventors: Adrian Brian BILLINGTON; Paul Robert BRIDGER; Tanel PODER
- Web page: https://patentgrep.com/patent/US20170185647A1

## CPC

- G06F 16/24544: {Join order optimisation}
- G06F 16/9535: Search customisation based on user profiles and personalisation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

This disclosure describes systems and methods related to filtering data requests. In some embodiments, a system may determine an execution plan tree. The system may determine a backend-processed target table in the at least one first storage device. The system may traverse at least one first branch and at least one first node in the execution plan tree. The system may traverse at least one second branch and at least one second node from the parent join node. The system may determine that the rowsource is referenced at the rowsource-access node. The system may determine that the rowsource referenced at the rowsource-access node is a filtered-rowsource. The system may extract at least one join column from a join condition associated with the backend-processed target table and the filtered-rowsource. The system may determine at least one storage location of the filtered-rowsource. The system may determine an adaptive processing path based at least in part on the at least one storage location of the filtered-rowsource, the at least one join column determined from the join condition and the at least one direct predicate determined for the filtered-rowsource. The system may generate at least one target filter predicate for the backend-processed target table.

## Claims

### Claim 1

A system, including:
at least one first server;
at least one first storage device;
at least one memory storing computer-executable instructions; and
at least one processor configured to access the at least one memory and to execute the computer-executable instructions to:
determine an execution plan tree;
determine a backend-processed target table in the at least one first storage device;
traverse at least one first branch and at least one first node in the execution plan tree;
traverse at least one second branch and at least one second node from the parent join node;
determine that the rowsource is referenced at the rowsource-access node;
determine that the rowsource referenced at the rowsource-access node is a filtered-rowsource;
extract at least one join column from a join condition associated with backend-processed target table and the filtered-rowsource;
determine at least one storage location of the filtered-rowsource;
determine an adaptive processing path based at least in part on the at least one storage location of the filtered-rowsource, the at least one join column determined from the join condition and the at least one direct predicate determined for the filtered-rowsource; and
generate at least one target filter predicate for the backend-processed target table.

### Claim 2 (depends on 1)

The system of claim 1, wherein the at least one first server is a processing frontend server comprising a first memory.

### Claim 3 (depends on 2)

The system of claim 2, wherein determining the execution plan tree further comprises reading a first computer-executable instructions from the first memory.

### Claim 4 (depends on 3)

The system of claim 3, wherein the first computer-executable instructions comprise at least one binary structure.

### Claim 5 (depends on 2)

The system of claim 2, wherein determining the execution plan tree further comprises querying at least one catalog view of the first memory or reading at least one first memory directly.

### Claim 6 (depends on 1)

The system of claim 1, wherein the backend-processed target table is referenced by a table-scanning node in an execution plan tree.

### Claim 7 (depends on 1)

The system of claim 1, wherein the at least one processor is further configured to access the at least one memory and to execute the computer-executable instructions to:
traverse the at least one first branch and at least one first node in the execution plan tree until a parent join node of the target table scanning node is reached.

### Claim 8 (depends on 7)

The system of claim 7, wherein the at least one processor is further configured to access the at least one memory and to execute the computer-executable instructions to:
traverse at least one second branch and at least one second node from the parent join node until a rowsource access node is reached.

### Claim 9 (depends on 8)

The system of claim 8, wherein the at least one processor is further configured to access the at least one memory and to execute the computer-executable instructions to:
determine that the rowsource that is referenced at the rowsource access node is joined to the backend-processed target table.

### Claim 10 (depends on 1)

The system of claim 1, wherein the at least one processor is further configured to access the at least one memory and to execute the computer-executable instructions to:
determine that the rowsource referenced at the rowsource-access node is a filtered-rowsource by determining that there is at least one direct filter predicate against the filtered-rowsource.

### Claim 11 (depends on 1)

The system of claim 1, wherein the generation of the at least one target filter predicate for the backend-processed target table is based at least in part on the at least one storage location of the filtered-rowsource and the adaptive processing path.

### Claim 12

A non-transitory computer-readable media storing computer-executable instructions, which when executed by one or more processors cause the one or more processors to perform operations of:
determining an execution plan tree;
determining a backend-processed target table;
traversing at least one first branch and at least one first node in the execution plan tree;
traversing at least one second branch and at least one second node from the parent join node;
determining that the rowsource is referenced at the rowsource-access node;
determining that the rowsource referenced at the rowsource-access node is a filtered-rowsource;
extracting at least one join column from a join condition associated with backend-processed target table and the filtered-rowsource;
determining at least one storage location of the filtered-rowsource;
determining an adaptive processing path based at least in part on the at least one storage location of the filtered-rowsource, the at least one join column determined from the join condition and the at least one direct predicate determined for the filtered-rowsource; and
generating at least one target filter predicate for the backend-processed target table.

### Claim 13 (depends on 12)

The non-transitory computer-readable media of claim 12, wherein determining the execution plan tree further comprises reading a first computer-executable instructions from a first memory in a processing frontend server.

### Claim 14 (depends on 13)

The non-transitory computer-readable media of claim 13, wherein the first computer-executable instructions comprise at least one binary structure.

### Claim 15 (depends on 13)

The non-transitory computer-readable media of claim 13, wherein determining the execution plan tree further comprises querying at least one catalog view of the first memory.

### Claim 16 (depends on 12)

The non-transitory computer-readable media of claim 12, wherein the backend-processed target table is referenced by a table-scanning node in an execution plan tree.

### Claim 17 (depends on 12)

The non-transitory computer-readable media of claim 12, wherein the computer-executable instructions further cause the one or more processors to perform operations of:
traversing the at least one first branch and at least one first node in the execution plan tree until a parent join node of the target table scanning node is reached.

### Claim 18 (depends on 17)

The non-transitory computer-readable media of claim 17 wherein the computer-executable instructions further cause the one or more processors to perform operations of:
traversing at least one second branch and at least one second node from the parent join node until a rowsource access node is reached.

### Claim 19

A method comprising:
determining an execution plan tree;
determining a backend-processed target table;
traversing at least one first branch and at least one first node in the execution plan tree;
traversing at least one second branch and at least one second node from the parent join node;
determining that the rowsource is referenced at the rowsource-access node;
determining that the rowsource referenced at the rowsource-access node is a filtered-rowsource;
extracting at least one join column from a join condition associated with backend-processed target table and the filtered-rowsource;
determining at least one storage location of the filtered-rowsource;
determining an adaptive processing path based at least in part on the at least one storage location of the filtered-rowsource, the at least one join column determined from the join condition and the at least one direct predicate determined for the filtered-rowsource; and
generating at least one target filter predicate for the backend-processed target table.

### Claim 20 (depends on 19)

The method of claim 19, further comprising:
traversing the at least one first branch and at least one first node in the execution plan tree until a parent join node of the target table scanning node is reached.
