US 11,720,561 B2
Dynamic rebuilding of query execution trees and reselection of query execution operators
Michael Schreier, Munich (DE); Thomas Neumann, Munich (DE); Viktor Leis, Munich (DE); Alfons Kemper, Munich (DE); Tobias Muehlbauer, Munich (DE); and Jan Finis, Munich (DE)
Assigned to Tableau Software, Inc., Seattle, WA (US)
Filed by Tableau Software, Inc., Seattle, WA (US)
Filed on Apr. 12, 2022, as Appl. No. 17/719,346.
Application 17/719,346 is a continuation of application No. 17/013,439, filed on Sep. 4, 2020, granted, now 11,301,469.
Application 17/013,439 is a continuation of application No. 15/681,294, filed on Aug. 18, 2017, granted, now 10,795,887, issued on Oct. 6, 2020.
Application 15/681,294 is a continuation in part of application No. 15/650,658, filed on Jul. 14, 2017, granted, now 10,521,430, issued on Dec. 31, 2019.
Claims priority of provisional application 62/528,903, filed on Jul. 5, 2017.
Claims priority of provisional application 62/418,246, filed on Nov. 6, 2016.
Prior Publication US 2022/0237193 A1, Jul. 28, 2022
This patent is subject to a terminal disclaimer.
Int. Cl. G06F 16/00 (2019.01); G06F 16/2453 (2019.01); G06F 16/2455 (2019.01)
CPC G06F 16/24542 (2019.01) [G06F 16/2455 (2019.01); G06F 16/24549 (2019.01)] 20 Claims
OG exemplary drawing
 
1. A method for dynamically selecting query execution operators, comprising:
at a computing device having one or more processors, volatile memory, and non- volatile memory, executing one or more programs to retrieve data from a database, including:
compiling a query execution tree for a query to form a first executable plan that includes a plurality of in-memory operators that execute within the volatile memory without swapping to the non-volatile memory;
initiating execution of the first executable plan, including initiating execution of a first plurality of in-memory operators in the first executable plan to run in parallel;
while executing a first in-memory operator of the first plurality of in-memory operators, detecting insufficient memory to complete execution of the first in-memory operator; and
in response to detecting insufficient memory to complete execution of the first in- memory operator:
aborting execution of the first executable plan;
recompiling the query execution tree to form a second executable plan that retains the first in-memory operator, but schedules the first in-memory operator to execute not in parallel with the other in-memory operators of the first plurality of in-memory operators, according to estimated available volatile memory;
executing the second executable plan to identify a set of results from the database that is responsive to the query; and
returning the set of results.