IP Library Granted Patent US 8,713,048
Granted Patent B2
US 8,713,048 · App. 12/144,670 · Granted Apr 29, 2014

Query processing with specialized query operators

Inventors: Erik Meijer (Mercer Island, WA); Mads Torgersen (Seattle, WA); Anders Hejlsberg (Seattle, WA); Matthew J. Warren (Redmond, WA); John W. Dyer (Seattle, WA)
Assignee: Microsoft Corporation
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 8,713,048
App. No.
12/144,670
Granted
Apr 29, 2014
Kind
B2
Abstract

Queries targeting various data sources are processed in a query processing pipeline that parses the query into a set of operations (e.g., an expression tree or a translated SQL query) using a set of query operators, each handling a particular type of operation. The query operators are often designed in an unspecialized manner, such that each query operator handles one query operation in an atomic, generic manner (e.g., sorting generic data items for an ORDER BY clause.) More efficient queries may be devised by including specialized queries that operate in common but special cases, such as a sorting of a particular data type (e.g., a floating-point number sort) or a sequence of two or more operations that are often performed together (e.g., a WHERE test of an attribute followed by a SELECT of the same attribute.) The use of specialized operators may result in the formulation of more efficient queries.

Claims (50)

1. A system for generating a query processing solution for a query involving a data set on a device having a processor and a memory, comprising:

a query operator set comprising:

at least one single-task query operator comprising instructions stored in the memory that, when executed on the processor, cause the device to perform a query task on the data set, and

at least one multiple-task query operator comprising instructions stored in the memory that, when executed on the processor, cause the device to perform at least one query task and at least one additional query task on the data set; and

a query operator selecting component comprising instructions stored in the memory that, when executed on the processor, cause the device to:

for respective query terms:

for respective multiple-task query operators:

determine whether the at least one additional query task of the multiple-task query operator is also to be performed on the data set, and

upon determining that the at least one additional query task is also to be performed on the data set, select the multiple-task query operator for applying the query task and the at least one additional query task to the data set; and

upon failing to select a multiple-task query operator for the query term, select an single-task query operator for applying the query task to the data set; and

generate the query processing solution as a sequence of selected query operators.

2. The system of claim 1 , the query comprising a language-integrated query.

3. The system of claim 1 , the query comprising an in-memory query against at least one queryable local object.

4. The system of claim 1 , the query processing solution comprising an expression tree specifying the sequence operators corresponding to the query terms of the query.

5. The system of claim 1 , the query operator set further comprising at least one specialization criterion of a specialized query operator specifying at least two query tasks specified in at least two query terms.

6. The system of claim 5 , the instructions of the query operator selecting component further causing the device to:

identify specialized query operators handling at least two query tasks specified in at least two query terms of the query; and

upon identifying a specialized query operator, select the specialized query operator for the at least two query terms of the query.

7. The system of claim 1 , at least one specialization criterion of a specialized query operator specifying at least one data type involved in the query task.

8. The system of claim 7 , the query operator set comprising:

a first specialized query operator specifying a query task involving a first data type, and

a second specialized query operator specifying the query task involving a second data type that is more specific than the first data type of the first specialized query operator.

9. The system of claim 7 , the at least one specialized query operator specifying a query task comprising a data set typecasting with respect to a data type.

10. The system of claim 9 , the query task applying to the data set comprising objects of the data type.

11. The system of claim 7 , the query task based on at least one data type property of the data set.

12. The system of claim 1 , comprising:

a data store targeted by the query, and

a query applying component configured to apply the query processing solution to the data store.

13. The system of claim 1 , at least one query operator generated by at least one data type of a data set involved in the query.

14. The system of claim 1 , wherein at least one multiple-task query operator is configured to perform at least one additional query task on the data set before performing the query task on the data set.

15. The system of claim 1 , wherein at least one multiple-task query operator is configured to perform at least one additional query task on the data set upon completing the query task on the data set.

16. The system of claim 1 , wherein at least one multiple-task query operator is configured to perform at least one additional query task on the data set while concurrently performing the query task on the data set.

17. The system of claim 1 , wherein at least one multiple-task query operator is configured to perform at least one additional query task on the data set upon failing to complete the query task on the data set.

18. The system of claim 1 :

at least one additional query task of the multiple-task query operator specified by a second query term of the query; and

the instructions of the query operator selecting component further causing the device to select the multiple-task query operator for the query term and the second query term.

19. A method of generating a query processing solution for a query from a query operator set comprising at least one query operator configured to perform at least one query task on a data set, the method comprising:

for respective query terms:

for respective multiple-task query operators respectively configured to perform the query task and at least one additional query task on the data set:

determining whether the at least one additional query task of the multiple-task query operator is also to be performed on the data set, and

upon determining that the additional query task is also to be performed on the data set, selecting the multiple-task query operator for applying the query task and the at least one additional query task to the data set; and

upon failing to select a multiple-task query operator for the query term, selecting a single-task query operator for applying the query task to the data set; and

generating the query processing solution as a sequence of selected query term operators.

20. A nonvolatile computer-readable storage device comprising instructions that, when executed on a processor of a device, cause the device to generate a query processing solution for a query from a query operator set comprising at least one query operator configured to perform at least one query task on a data set, by:

for respective query terms:

for respective multiple-task query operators respectively configured to perform the query task and at least one additional query task on the data set:

determine whether the at least one additional query task of the multiple-task query operator is also to be performed on the data set, and

upon determining that the additional query task is also to be performed on the data set, selecting the multiple-task query operator for applying the query task and the at least one additional query task to the data set; and

upon failing to select a multiple-task query operator for the query term, selecting a single-task query operator applying the query task to the data set; and

generating the query processing solution as a sequence of selected query term operators.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034564/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2009
From: MEIJER, ERIK; TORGERSEN, MADS; HEJLSBERG, ANDERS; WARREN, MATTHEW J.; DYER, JOHN W.
To: MICROSOFT CORPORATION
Reel/Frame 022157/0917 →
Continuity (1)
Related Publication 20090319499A1 · Dec 24, 2009