IP Library › Granted Patent US 12,259,878
Granted Patent B2
US 12,259,878 · App. 17/448,242 · Granted Mar 25, 2025

Implementing superset-guaranteeing expressions in query execution

Inventor: Jason Arnold (Chicago, IL)
G06F16/2425G06F16/2272
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,259,878
App. No.
17/448,242
Granted
Mar 25, 2025
Kind
B2
Abstract

A method includes determining a query expression indicating a query for execution against a plurality of rows. A superset-guaranteeing expression is generated in conjunctive normal form (CNF) based on the query expression. A query operator execution flow is generated to include a plurality of index-based IO operators based on the superset-guaranteeing expression and to further include at least one additional operator. Execution of the query is facilitated by applying the plurality of index-based IO operators to identify a first subset of rows as a proper subset of the plurality of rows based on index data stored of the plurality of rows, and by applying the at least one additional operator to the first subset of rows to identify a second subset of rows as a subset of the first subset of rows.

Claims (66)

1. A method comprising:

determining a query expression indicating a query for execution against a plurality of rows;

generating a superset-guaranteeing expression in conjunctive normal form (CNF) based on the query expression, wherein the superset-guaranteeing expression is not logically equivalent to the query expression;

generating a query operator execution flow for the query by selecting an ordered arrangement of a plurality of operators for execution to include:

a plurality of index-based IO operators operable to implement the superset-guaranteeing expression; and

at least one additional operator serially after the plurality of index-based IO operators in the ordered arrangement of the plurality of operators; and

facilitating execution of the query via execution of the query operator execution flow by:

applying the plurality of index-based IO operators to identify a first subset of rows as a proper subset of the plurality of rows based on index data stored for the plurality of rows, wherein the first subset of rows corresponds to a true resultant of the superset-guaranteeing expression, and wherein the first subset of rows corresponds to a proper superset of a true resultant of the query expression; and

applying the at least one additional operator to the first subset of rows to identify a second subset of rows as a proper subset of the first subset of rows, wherein the second subset of rows corresponds to the true resultant of the query expression.

2. The method of claim 1 , wherein the query operator execution flow is in accordance with a non-normalized form that is neither CNF nor disjunctive normal form (DNF) based on the query expression being in neither CNF nor DNF.

3. The method of claim 1 , wherein generating the superset-guaranteeing expression includes generating a plurality of superset-guaranteeing sub-expressions based on the query expression, wherein each of the plurality of superset-guaranteeing sub-expressions is non-equivalent with all other ones of the plurality of superset-guaranteeing sub-expressions, and wherein each of the plurality of superset-guaranteeing sub-expressions has a corresponding true resultant that is a proper superset of the of the true resultant of the superset-guaranteeing expression.

4. The method of claim 3 , wherein each of the plurality of superset-guaranteeing sub-expressions are generated in CNF, and wherein generating the superset-guaranteeing expression further includes conjunctively combining the plurality of superset-guaranteeing sub-expressions.

5. The method of claim 3 , wherein generating each of the plurality of superset-guaranteeing sub-expressions includes:

identifying a nested AND expression within an operand of an OR expression of the query expression;

selecting one of a plurality of operands of the nested AND expression for inclusion in the each of the plurality of superset-guaranteeing sub-expressions; and

removing all other ones of the plurality of operands of the nested AND expression from the query expression to generate the each of the plurality of superset-guaranteeing sub-expressions.

6. The method of claim 5 , wherein generating a first one of the plurality of superset-guaranteeing sub-expressions includes selecting a first operand of the nested AND expression for inclusion in the first one of the plurality of superset-guaranteeing sub-expressions, and wherein generating a second one of the plurality of superset-guaranteeing sub-expressions includes selecting a second operand of the nested AND expression for inclusion in the second one of the plurality of superset-guaranteeing sub-expressions.

7. The method of claim 3 , wherein generating the plurality of superset-guaranteeing sub-expressions includes performing a recursive function upon an operator tree generated from the query expression.

8. The method of claim 1 , wherein generating the superset-guaranteeing expression in CNF includes removing at least one nested AND expression within at least one operand of at least one OR expression of the query expression from the query expression, wherein the superset-guaranteeing expression includes no nested AND expressions within any operands of any OR expression.

9. The method of claim 1 , further comprising:

storing the plurality of rows, wherein the plurality of rows correspond to relational database rows of a relational database, wherein each of the plurality of rows includes a set of column values for a set of columns of the relational database; and

further storing the index data indexing the plurality of rows based on column values of at least one column of the set of columns, wherein the index data is stored via at least one structure distinct from the plurality of rows;

wherein applying the plurality of index-based IO operators to identify the first subset of rows as the proper subset of the plurality of rows includes accessing the index data stored for the plurality of rows.

10. The method of claim 1 , wherein the at least one additional operator includes:

a plurality of parallel sub-flows of the query operator execution flow; and

at least one serialized set of multiple operators within at least one of the plurality of parallel sub-flows.

11. The method of claim 1 , wherein applying the at least one additional operator to the first subset of rows to identify a second subset of rows as a proper subset of the first subset of rows includes:

assigning each of the first subset of rows an appended identifier by applying an identifier appending operator;

generating a plurality of duplicates of the first subset of rows by applying a tee operator;

processing each of the plurality of duplicates of the first subset of rows applying each of a plurality of parallel sub-flows; and

applying a union distinct operator to remove all remaining duplicated ones the plurality of rows outputted by the plurality of parallel sub-flows based on the appended identifiers.

12. The method of claim 1 , wherein generating the query operator execution flow to include a plurality of index-based IO operators is further based on utilizing a plurality of operands of an AND operator being implemented as a root operator of an operator tree generated for the query expression.

13. A query processing system comprising:

at least one processor; and

memory that stores executable instructions that, when executed by the at least one processor, cause the query processing system to:

determine a query expression indicating a query for execution against a plurality of rows;

generate a superset-guaranteeing expression in a conjunctive normal form (CNF) based on the query expression, wherein the superset-guaranteeing expression is not logically equivalent to the query expression;

generate a query operator execution flow for the query by selecting an ordered arrangement of a plurality of operators for execution to include:

a plurality of index-based IO operators operable to implement the superset-guaranteeing expression; and

at least one additional operator serially after the plurality of index-based IO operators in the ordered arrangement of the plurality of operators; and

facilitate execution of the query via execution of the query operator execution flow by:

applying the plurality of index-based IO operators to identify a first subset of rows as a proper subset of the plurality of rows based on index data stored for the plurality of rows, wherein the first subset of rows corresponds to a true resultant of the superset-guaranteeing expression, and wherein the first subset of rows corresponds to a proper superset of a true resultant of the query expression; and

applying the at least one additional operator to the first subset of rows to identify a second subset of rows as a proper subset of the first subset of rows,

wherein the second subset of rows corresponds to the true resultant of the query expression.

14. The query processing system of claim 13 , wherein the query operator execution flow is in accordance with a non-normalized form that is neither CNF nor disjunctive normal form (DNF) based on the query expression being in neither CNF nor DNF.

15. The query processing system of claim 13 , wherein generating the superset-guaranteeing expression includes generating a plurality of superset-guaranteeing sub-expressions based on the query expression, wherein each of the plurality of superset-guaranteeing sub-expressions is non-equivalent with all other ones of the plurality of superset-guaranteeing sub-expressions, and wherein each of the plurality of superset-guaranteeing sub-expressions has a corresponding true resultant that is a proper superset of the of the true resultant of the superset-guaranteeing expression.

16. The query processing system of claim 13 , wherein generating the superset-guaranteeing expression in CNF includes removing at least one nested AND expression within at least one operand of at least one OR expression of the query expression from the query expression, wherein the superset-guaranteeing expression includes no nested AND expressions within any operands of any OR expression.

17. The query processing system of claim 13 , wherein the superset-guaranteeing expression is not logically equivalent to the query expression, and wherein the second subset of rows is a proper subset of the first subset of rows.

18. The query processing system of claim 13 , wherein the at least one additional operator includes:

a plurality of parallel sub-flows of the query operator execution flow; and

at least one serialized set of multiple operators within at least one of the plurality of parallel sub-flows.

19. The query processing system of claim 13 , wherein applying the at least one additional operator to the first subset of rows to identify a second subset of rows as a proper subset of the first subset of rows includes:

assigning each of the first subset of rows an appended identifier by applying an identifier appending operator;

generating a plurality of duplicates of the first subset of rows by applying a tee operator;

processing each of the plurality of duplicates of the first subset of rows applying each of a plurality of parallel sub-flows; and

applying a union distinct operator to remove all remaining duplicated ones the plurality of rows outputted by the plurality of parallel sub-flows based on the appended identifiers.

20. A non-transitory computer readable storage medium comprises:

at least one memory section that stores operational instructions that, when executed by a processing module that includes a processor and a memory, causes the processing module to:

determine a query expression indicating a query for execution against a plurality of rows;

generate a superset-guaranteeing expression in a conjunctive normal form (CNF) based on the query expression, wherein the superset-guaranteeing expression is not logically equivalent to the query expression;

generate a query operator execution flow for the query by selecting an ordered arrangement of a plurality of operators for execution to include:

a plurality of index-based IO operators operable to implement the superset-guaranteeing expression; and

at least one additional operator serially after the plurality of index-based IO operators in the ordered arrangement of the plurality of operators; and

facilitate execution of the query via execution of the query operator execution flow by:

applying the plurality of index-based IO operators to identify a first subset of rows as a proper subset of the plurality of rows based on index data stored for the plurality of rows, wherein the first subset of rows corresponds to a true resultant of the superset-guaranteeing expression, and wherein the first subset of rows corresponds to a proper superset of a true resultant of the query expression; and

applying the at least one additional operator to the first subset of rows to identify a second subset of rows as a proper subset of the first subset of rows, wherein the second subset of rows corresponds to the true resultant of the query expression.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2021
From: ARNOLD, JASON
To: OCIENT HOLDINGS LLC
Reel/Frame 057572/0567 →
Continuity (1)
Related Publication 20230091018A1 · Mar 23, 2023
References Cited (54)
US 5548770A · Bridges · 1996 [cited by applicant]
US 6230200B1 · Forecast · 2001 [cited by applicant]
US 6633772B2 · Ford · 2003 [cited by applicant]
US 7130145B1 · Carret · 2006 [cited by examiner]
US 7499907B2 · Brown · 2009 [cited by applicant]
US 7908242B1 · Achanta · 2011 [cited by applicant]
US 20010051949A1 · Carey · 2001 [cited by applicant]
US 20020032676A1 · Reiner · 2002 [cited by applicant]
US 20030093408A1 · Brown · 2003 [cited by examiner]
US 20030093415A1 · Larson · 2003 [cited by examiner]
US 20040044662A1 · Ganesan · 2004 [cited by examiner]
US 20040162853A1 · Brodersen · 2004 [cited by applicant]
US 20070239673A1 · Barsness · 2007 [cited by examiner]
US 20080133456A1 · Richards · 2008 [cited by applicant]
US 20090063893A1 · Bagepalli · 2009 [cited by applicant]
US 20090183167A1 · Kupferschmidt · 2009 [cited by applicant]
US 20100082577A1 · Mirchandani · 2010 [cited by applicant]
US 20100241646A1 · Friedman · 2010 [cited by applicant]
US 20100274983A1 · Murphy · 2010 [cited by applicant]
US 20100312756A1 · Zhang · 2010 [cited by applicant]
US 20110219169A1 · Zhang · 2011 [cited by applicant]
US 20120109888A1 · Zhang · 2012 [cited by applicant]
US 20120151118A1 · Flynn · 2012 [cited by applicant]
US 20120185866A1 · Couvee · 2012 [cited by applicant]
US 20120254252A1 · Jin · 2012 [cited by applicant]
US 20120311246A1 · McWilliams · 2012 [cited by applicant]
US 20130332484A1 · Gajic · 2013 [cited by applicant]
US 20140047095A1 · Breternitz · 2014 [cited by applicant]
US 20140136510A1 · Parkkinen · 2014 [cited by applicant]
US 20140188841A1 · Sun · 2014 [cited by applicant]
US 20150205607A1 · Lindholm · 2015 [cited by applicant]
US 20150244804A1 · Warfield · 2015 [cited by applicant]
US 20150248366A1 · Bergsten · 2015 [cited by applicant]
US 20150293966A1 · Cai · 2015 [cited by applicant]
US 20150310045A1 · Konik · 2015 [cited by applicant]
US 20160034547A1 · Lerios · 2016 [cited by applicant]
Wikipedia, “Tee Command”, https://web.archive.org/web/20190212104530/https://en.wikipedia.org/wiki/Tee_(command) (Year: 2019). [cited by examiner]
Gupta, “Union vs Union Distinct”, https://nidhig631.medium.com/union-vs-union-distinct-vs-union-all-aa79343d590f (Year: 2021). [cited by examiner]
Seema Singh, “Sampling Techniques”, Towards Data Science, https://towardsdatascience.com/sampling-techniques-a4e34111d808 (Year: 2018). [cited by examiner]
A new high performance fabric for HPC, Michael Feldman, May 2016, Intersect360 Research. [cited by applicant]
Alechina, N. (2006-2007). B-Trees. School of Computer Science, University of Nottingham, http://www.cs.nott.ac.uk/˜psznza/G5BADS06/lecture13-print.pdf. 41 pages. [cited by applicant]
Amazon DynamoDB: ten things you really should know, Nov. 13, 2015, Chandan Patra, http://cloudacademy. .com/blog/amazon-dynamodb-ten-thing. [cited by applicant]
An Inside Look at Google BigQuery, by Kazunori Sato, Solutions Architect, Cloud Solutions team, Google Inc., 2012. [cited by applicant]
Big Table, a NoSQL massively parallel table, Paul Krzyzanowski, Nov. 2011, https://www.cs.rutgers.edu/pxk/417/notes/contentlbigtable_html. [cited by applicant]
Distributed Systems, Fall2012, Mohsen Taheriyan, http://www-scf.usc.edu/-csci57212011Spring/presentations/Taheriyan.pptx. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2017/054773; Feb. 13, 2018; 17 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2017/054784; Dec. 28, 2017; 10 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2017/066145; Mar. 5, 2018; 13 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2017/066169; Mar. 6, 2018; 15 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2018/025729; Jun. 27, 2018; 9 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2018/034859; Oct. 30, 2018; 8 pgs. [cited by applicant]
MapReduce: Simplified Data Processing on Large Clusters, OSDI 2004, Jeffrey Dean and Sanjay Ghemawat, Google, Inc., 13 pgs. [cited by applicant]
Rodero-Merino, L.; Storage of Structured Data: Big Table and HBase, New Trends in Distributed Systems, MSc Software and Systems, Distributed Systems Laboratory; Oct. 17, 2012; 24 pages. [cited by applicant]
Step 2: Examine the data model and implementation details, 2016, Amazon Web Services, Inc., http://docs.aws.amazon.com/amazondynamodb/latestldeveloperguide!Ti . . . . [cited by applicant]