IP Library Granted Patent US 12,079,244
Granted Patent B2
US 12,079,244 · App. 17/972,003 · Granted Sep 3, 2024

Query plans for analytic SQL constructs

Inventors: Thierry Cruanes (San Mateo, CA); Benoit Dageville (Foster City, CA); Allison Waingold Lee (San Mateo, CA)
Assignee: Snowflake Inc.
G06F16/273A61F5/566G06F9/4881G06F9/5016G06F9/5044G06F9/5083G06F9/5088G06F16/148G06F16/1827G06F16/211G06F16/221G06F16/2365G06F16/24532G06F16/24545G06F16/24552G06F16/2456G06F16/2471G06F16/254G06F16/27G06F16/283G06F16/951G06F16/9535G06F16/9538H04L67/1095H04L67/1097H04L67/568
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,079,244
App. No.
17/972,003
Granted
Sep 3, 2024
Kind
B2
Abstract

A system and method for managing data storage and data access with querying data in a distributed system without buffering the results of intermediate operations in persistent storage. The method includes pushing, by a first operator, as a result of executing a query plan, an intermediate result to a plurality of secondary operators. Processing of the intermediate result by the plurality of secondary operators is delayed to coordinate generation of a plurality of second results based on beginning a final consumption operation of the plurality of second results.

Claims (46)

1. A method comprising pushing, by a first operator, as a result of executing a query plan against a set of data, an intermediate result of the first operator to a plurality of secondary operators;

delaying beginning processing of the intermediate result by the plurality of secondary operators to coordinate concurrent generation, on one or more processors, of a plurality of second results based on beginning a final consumption operation; and

executing the final consumption operation, by the first operator, against the plurality of second results, to generate a final result.

2. The method of claim 1 , wherein the plurality of second results is generated without writing the intermediate result to a persistent storage device.

3. The method of claim 1 , wherein the final consumption operation is generated without writing the plurality of second results to a persistent storage device.

4. The method of claim 1 , wherein the intermediate result is not materialized.

5. The method of claim 1 , wherein the plurality of second results is not materialized.

6. The method of claim 1 , wherein the plurality of second results is not inlined.

7. The method of claim 1 , wherein the query plan comprises at least one of:

a grouping set;

a roll-up; or

a cube aggregate.

8. The method of claim 1 , wherein each of the secondary operators of the plurality of secondary operators are different from one another.

9. The method of claim 1 , wherein the final consumption operation is delayed until a completion of the plurality of secondary operators.

10. A non-transitory machine-readable medium storing instructions which, when executed by one or more processors of a computing device, cause the one or more processors to:

push, by a first operator, as a result of executing a query plan against a set of data, an intermediate result of the first operator to a plurality of secondary operators;

delay beginning processing of the intermediate result by the plurality of secondary operators to coordinate concurrent generation of a plurality of second results based on beginning a final consumption operation; and

execute the final consumption operation, by the first operator, against the plurality of second results, to generate a final result.

11. The non-transitory machine-readable medium of claim 10 , wherein the instructions further cause the one or more processors to generate the plurality of second results without writing the intermediate result to a persistent storage device.

12. The non-transitory machine-readable medium of claim 10 , wherein the instructions further cause the one or more processors to generate the final consumption operation without writing the plurality of second results to a persistent storage device.

13. The non-transitory machine-readable medium of claim 10 , wherein the intermediate result is not materialized.

14. The non-transitory machine-readable medium of claim 10 , wherein the plurality of second results is not inlined.

15. The non-transitory machine-readable medium of claim 10 , wherein the query plan comprises a window aggregate.

16. The non-transitory machine-readable medium of claim 10 , wherein the instructions further cause the first operator to push the intermediate result to the plurality of secondary operators without buffering the intermediate result.

17. The non-transitory machine-readable medium of claim 10 , wherein the instructions further cause the first operator and the plurality of second operators to execute concurrently.

18. The non-transitory machine-readable medium of claim 10 , wherein the instructions further cause a delay of the final consumption operation until a completion of the plurality of secondary operators.

19. A system comprising:

memory; and

one or more processors, operatively coupled to the memory, the one or more processors to:

push, by a first operator, as a result of executing a query plan against a set of data, an intermediate result of the first operator to a plurality of secondary operators;

delay beginning processing of the intermediate result by the plurality of secondary operators to coordinate concurrent generation of a plurality of second results based on beginning a final consumption operation; and

execute the final consumption operation, by the first operator, against the plurality of second results, to generate a final result.

20. The system of claim 19 wherein the intermediate result and the plurality of second results is not materialized.

21. The system of claim 19 , wherein the system generates the final consumption operation without writing the plurality of second results to a persistent storage device.

22. The system of claim 19 , wherein the plurality of second results is not inlined.

23. The system of claim 19 , wherein the query plan comprises at least one of:

a grouping set;

a roll-up; or

a cube aggregate.

24. The system of claim 19 , wherein each of the secondary operators of the plurality of secondary operators are different from one another.

25. The system of claim 19 , wherein the final consumption operation is delayed until a completion of the plurality of secondary operators.

26. The system of claim 19 , wherein the one or more processors generate the final consumption operation without writing the plurality of second results to a persistent storage device.

27. The system of claim 19 , wherein the query plan comprises a window aggregate.

28. The system of claim 19 , wherein the first operator pushes the intermediate result to the plurality of secondary operators without buffering the intermediate result.

29. The system of claim 19 , wherein the first operator and the plurality of second operators execute concurrently.

30. The system of claim 19 , wherein the final consumption operation delays until a completion of the plurality of secondary operators.

Assignments (2)
CHANGE OF NAME Recorded Dec 5, 2022
From: SNOWFLAKE COMPUTING INC.
To: SNOWFLAKE INC.
Reel/Frame 062061/0602 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2022
From: DAGEVILLE, BENOIT; CRUANES, THIERRY; LEE, ALLISON WAINGOLD
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 061829/0400 →
Continuity (7)
Continuation 17573550 · Jan 11, 2022
Continuation 17063612 · Oct 5, 2020
Continuation 16945456 · Jul 31, 2020
Continuation 16741676 · Jan 13, 2020
Continuation 14626853 · Feb 19, 2015
Provisional Application 61941986 · Feb 19, 2014
Related Publication 20230042949A1 · Feb 9, 2023