DETAILED ACTION
1. The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
2. In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
3. Claims 1-20, filed on 8/26/2025, are pending in this office action.
Priority
4. Applicant’s claim for the benefit of prior-filed application 18/609,939, now US Patent 12,423,302, filed 3/19/2024, under 35 U.S.C. 119(e) or under 35 U.S.C. 120, 121, or 365(c) is acknowledged.
Information Disclosure Statement
5. Initialed and dated copy of Applicant’s IDS form 1449, filed 8/26/2025, is attached to the instant Office Action.
Double Patenting
6. The nonstatutory double patenting rejection is based on a judicially created doctrine grounded in public policy (a policy reflected in the statute) so as to prevent the unjustified or improper timewise extension of the “right to exclude” granted by a patent and to prevent possible harassment by multiple assignees. A nonstatutory double patenting rejection is appropriate where the conflicting claims are not identical, but at least one examined application claim is not patentably distinct from the reference claim(s) because the examined application claim is either anticipated by, or would have been obvious over, the reference claim(s). See, e.g., In re Berg, 140 F.3d 1428, 46 USPQ2d 1226 (Fed. Cir. 1998); In re Goodman, 11 F.3d 1046, 29 USPQ2d 2010 (Fed. Cir. 1993); In re Longi, 759 F.2d 887, 225 USPQ 645 (Fed. Cir. 1985); In re Van Ornum, 686 F.2d 937, 214 USPQ 761 (CCPA 1982); In re Vogel, 422 F.2d 438, 164 USPQ 619 (CCPA 1970); In re Thorington, 418 F.2d 528, 163 USPQ 644 (CCPA 1969).
A timely filed terminal disclaimer in compliance with 37 CFR 1.321(c) or 1.321(d) may be used to overcome an actual or provisional rejection based on nonstatutory double patenting provided the reference application or patent either is shown to be commonly owned with the examined application, or claims an invention made as a result of activities undertaken within the scope of a joint research agreement. See MPEP § 717.02 for applications subject to examination under the first inventor to file provisions of the AIA as explained in MPEP § 2159. See MPEP § 2146 et seq. for applications not subject to examination under the first inventor to file provisions of the AIA . A terminal disclaimer must be signed in compliance with 37 CFR 1.321(b).
The filing of a terminal disclaimer by itself is not a complete reply to a nonstatutory double patenting (NSDP) rejection. A complete reply requires that the terminal disclaimer be accompanied by a reply requesting reconsideration of the prior Office action. Even where the NSDP rejection is provisional the reply must be complete. See MPEP § 804, subsection I.B.1. For a reply to a non-final Office action, see 37 CFR 1.111(a). For a reply to final Office action, see 37 CFR 1.113(c). A request for reconsideration while not provided for in 37 CFR 1.113(c) may be filed after final for consideration. See MPEP §§ 706.07(e) and 714.13.
The USPTO Internet website contains terminal disclaimer forms which may be used. Please visit www.uspto.gov/patent/patents-forms. The actual filing date of the application in which the form is filed determines what form (e.g., PTO/SB/25, PTO/SB/26, PTO/AIA /25, or PTO/AIA /26) should be used. A web-based eTerminal Disclaimer may be filled out completely online using web-screens. An eTerminal Disclaimer that meets all requirements is auto-processed and approved immediately upon submission. For more information about eTerminal Disclaimers, refer to www.uspto.gov/patents/apply/applying-online/eterminal-disclaimer.
7. Claims 1, 10, and 16 are rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1, 11, and 21 of U.S. Patent No. 12,423,302 B1 in view of Wang et al. (US Publication 2024/0256426 A1).
Claims 1, 11, and 21 of US Patent 12,423,302 teach all the limitations of claims 1, 10, and 16 of the instant application, respectively, except for “determining, for each hash-join-build operation, a memory amount for performing a broadcast; selecting a subset of hash-join-build operations for broadcast join distribution based on a comparison of the memory amount to a broadcast memory threshold”, as recited in claim 1 and similarly in claims 10 and 16.
Wang teaches determining, for each hash-join-build operation, a memory amount for performing a broadcast; selecting a subset of hash-join-build operations for broadcast join distribution based on a comparison of the memory amount to a broadcast memory threshold. (paragraph 0018, 0019, 0059, 0063, the memory usage required for operators in an execution plan are determined and able to be performed without an error).
It would have been obvious for one of ordinary skill in the art at the time the invention was made to combine the instant applications, system, method, and computer storage medium to process database queries utilizing hash-join broadcast decisions with Wang’s ability to determine memory usage of operators in an execution plan. This gives the user the ability to optimize a query plan based on estimated memory usage. The motivation for doing so would be to minimize runtime errors when executing a database query (paragraph 0003).
Claim Rejections - 35 USC § 103
8. The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
The factual inquiries for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
9. Claim(s) 1-20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Willems (US Patent 12,061,603 B1, cited in IDS form filed 8/26/2025) in view of Wang et al. (US Publication 2024/0256426 A1)
As per claim 1, Willems teaches A system comprising: (see Abstract)
at least one hardware processor; (Figure 4 reference 510, processor)
and at least one memory storing instructions that cause the at least one hardware processor to perform operations comprising: (Figure 4 reference 520, memory)
generating a query plan for a received query, the query plan comprising a plurality of hash-join-build operations and a plurality of hash-join-probe operations; (column 4 lines 35-61, a query execution plan is generated based on a received query, column 6 lines 4-34, column 8 lines 4-48, the query plan including two pipelines, a build side with hash join build operators and a probe side with hash join probe operators)
configuring a primary decision node in the query plan; (column 3 line 66 – column 4 line 34, column 5 lines 15-53, a query execution plan is in the form of a directed acyclic graph (DAG) comprised of nodes, the graph representing sets of operators divided into pipelines, column 6 lines 4-34, a first pipeline being optimized and selected for query execution, first pipeline interpreted as a primary decision node)
receiving, by the primary decision node, build-side data information from the plurality of hash-join-build operations; (column 6 lines 4-51, first pipeline of hash join build operations are analyzed to determine matches for the joins, based on build side data)
selecting a subset of hash-join-build operations for broadcast join distribution (column 11 lines 46 – column 12 line 57, operator pruning conditions are utilized to select join operators)
selecting a broadcast join distribution for the subset and a hash-hash join distribution for remaining hash-join-build operations; (column 6 line 52 - column 7 line 31, different types of join conditions and pruning conditions are determined for optimization, column 10 line 57 – column 11 line 29, a query execution engine are configured to handle different types of database with different storage layer types)
and executing the query plan using the broadcast join distribution for the subset of hash-join-build operations and the hash-hash join distribution for the remaining hash-join-build operations. (column 9 line 65 – column 10 line 14, column 11 lines 15-29, the query plan is executed after optimization)
Willems does not explicitly indicate determining, for each hash-join-build operation, a memory amount for performing a broadcast; selecting a subset of hash-join-build operations for broadcast join distribution based on a comparison of the memory amount to a broadcast memory threshold.
Wang teaches determining, for each hash-join-build operation, a memory amount for performing a broadcast; selecting a subset of hash-join-build operations for broadcast join distribution based on a comparison of the memory amount to a broadcast memory threshold. (paragraph 0018, 0019, 0059, 0063, the memory usage required for operators in an execution plan are determined and able to be performed without an error).
It would have been obvious for one of ordinary skill in the art at the time the invention was made to combine Willems’ system of generating and optimizing a query plan based on analyzing and pruning join operators in the query plan with Wang’s ability to determine memory usage of operators in an execution plan. This gives the user the ability to optimize a query plan based on estimated memory usage. The motivation for doing so would be to minimize runtime errors when executing a database query (paragraph 0003).
As per claim 2, Willems and Wang are taught as per claim 1 above. Wang additionally teaches the broadcast memory threshold is reduced by a predetermined factor in each iteration until a total memory amount for the subset of hash-join-build operations selected for broadcast join distribution is within the broadcast memory threshold. (paragraph 0027, memory requirements, paragraph 0059, 0063, threshold amount of memory)
As per claim 3, Willems and Wang are taught as per claim 2 above. Wang additionally teaches the primary decision node computes the total memory amount for the subset of hash-join-build operations selected for broadcast join distribution after each reduction of the broadcast memory threshold. (paragraph 0059, 0063, threshold amount of memory)
As per claim 4, Willems and Wang are taught as per claim 1 above. Wang additionally teaches adding at least one hash-join-build operation of the plurality of hash-join-build operations having a memory amount less than the broadcast memory threshold to the subset selected for broadcast join distribution. (paragraph 0059, 0063, threshold amount of memory)
As per claim 5, Willems and Wang are taught as per claim 4 above. Wang additionally teaches the build-side data information received by the primary decision node includes an estimate of memory consumption for the at least one hash-join-build operation. (paragraph 0019, 0059, memory usage)
As per claim 6, Willems teaches the primary decision node selects the hash-hash join distribution for each hash-join-build operation not included in the subset selected for broadcast join distribution. (column 6 lines 4-34, probe side)
As per claim 7, Willems teaches the query plan further comprises at least one decision node configured as a secondary decision node to provide local join distribution decisions for a corresponding hash-join-build operation. (column 6 lines 25-51, column 11 line 46 – column 12 line 58, second pipeline)
As per claim 8, Willems teaches the primary decision node sorts the hash-join-build operations by memory amount prior to selecting the subset for broadcast join distribution. (column 7 lines 18-31, column 12 lines 8-24, empty state)
As per claim 9, Willems and Wang are taught as per claim 1 above. Wang additionally teaches the broadcast memory threshold is automatically adjusted based on a number of queries executing in parallel on the system. (paragraph 0019, 0059, memory usage)
As per claim 10, Willems teaches A method comprising: (see Abstract)
generating, by at least one hardware processor, a query plan for a received query, the query plan comprising a plurality of hash-join-build operations and a plurality of hash-join-probe operations; (column 4 lines 35-61, a query execution plan is generated based on a received query, column 6 lines 4-34, column 8 lines 4-48, the query plan including two pipelines, a build side with hash join build operators and a probe side with hash join probe operators)
configuring a primary decision node in the query plan; (column 3 line 66 – column 4 line 34, column 5 lines 15-53, a query execution plan is in the form of a directed acyclic graph (DAG) comprised of nodes, the graph representing sets of operators divided into pipelines, column 6 lines 4-34, a first pipeline being optimized and selected for query execution, first pipeline interpreted as a primary decision node)
receiving, by the primary decision node, build-side data information from the plurality of hash-join-build operations; (column 6 lines 4-51, first pipeline of hash join build operations are analyzed to determine matches for the joins, based on build side data)
selecting a subset of hash-join-build operations for broadcast join distribution (column 11 lines 46 – column 12 line 57, operator pruning conditions are utilized to select join operators)
selecting a broadcast join distribution for the subset and a hash-hash join distribution for remaining hash-join-build operations; (column 6 line 52 - column 7 line 31, different types of join conditions and pruning conditions are determined for optimization, column 10 line 57 – column 11 line 29, a query execution engine are configured to handle different types of database with different storage layer types)
and executing the query plan using the broadcast join distribution for the subset of hash-join-build operations and the hash-hash join distribution for the remaining hash-join-build operations.
(column 9 line 65 – column 10 line 14, column 11 lines 15-29, the query plan is executed after optimization)
Willems does not explicitly indicate determining, for each hash-join-build operation, a memory amount for performing a broadcast; selecting a subset of hash-join-build operations for broadcast join distribution based on a comparison of the memory amount to a broadcast memory threshold.
Wang teaches determining, for each hash-join-build operation, a memory amount for performing a broadcast; selecting a subset of hash-join-build operations for broadcast join distribution based on a comparison of the memory amount to a broadcast memory threshold. (paragraph 0018, 0019, 0059, 0063, the memory usage required for operators in an execution plan are determined and able to be performed without an error).
It would have been obvious for one of ordinary skill in the art at the time the invention was made to combine Willems’ system of generating and optimizing a query plan based on analyzing and pruning join operators in the query plan with Wang’s ability to determine memory usage of operators in an execution plan. This gives the user the ability to optimize a query plan based on estimated memory usage. The motivation for doing so would be to minimize runtime errors when executing a database query (paragraph 0003).
As per claim 11, Willems and Wang are taught as per claim 10 above. Wang additionally teaches the broadcast memory threshold is reduced by a predetermined factor in each iteration until a total memory amount for the subset of hash-join-build operations selected for broadcast join distribution is within the broadcast memory threshold. (paragraph 0027, memory requirements, paragraph 0059, 0063, threshold amount of memory)
As per claim 12, Willems and Wang are taught as per claim 11 above. Wang additionally teaches the primary decision node computes the total memory amount for the subset of hash-join-build operations selected for broadcast join distribution after each reduction of the broadcast memory threshold. (paragraph 0059, 0063, threshold amount of memory)
As per claim 13, Willems and Wang are taught as per claim 10 above. Wang additionally teaches adding at least one hash-join-build operation of the plurality of hash-join-build operations having a memory amount less than the broadcast memory threshold to the subset selected for broadcast join distribution. (paragraph 0059, 0063, threshold amount of memory)
As per claim 14, Willems and Wang are taught as per claim 13 above. Wang additionally teaches the build-side data information received by the primary decision node includes an estimate of memory consumption for the at least one hash-join-build operation. (paragraph 0019, 0059, memory usage)
As per claim 15, Willems teaches the primary decision node selects the hash-hash join distribution for each hash-join-build operation not included in the subset selected for broadcast join distribution. (column 6 lines 4-34, probe side)
As per claim 16, Willems teaches A computer-storage medium comprising instructions that, when executed by one or more processors of a machine, configure the machine to perform operations comprising: (see Abstract)
generating a query plan for a received query, the query plan comprising a plurality of hash-join-build operations and a plurality of hash-join-probe operations; (column 4 lines 35-61, a query execution plan is generated based on a received query, column 6 lines 4-34, column 8 lines 4-48, the query plan including two pipelines, a build side with hash join build operators and a probe side with hash join probe operators)
configuring a primary decision node in the query plan; (column 3 line 66 – column 4 line 34, column 5 lines 15-53, a query execution plan is in the form of a directed acyclic graph (DAG) comprised of nodes, the graph representing sets of operators divided into pipelines, column 6 lines 4-34, a first pipeline being optimized and selected for query execution, first pipeline interpreted as a primary decision node)
receiving, by the primary decision node, build-side data information from the plurality of hash-join-build operations; (column 6 lines 4-51, first pipeline of hash join build operations are analyzed to determine matches for the joins, based on build side data)
selecting a subset of hash-join-build operations for broadcast join distribution (column 11 lines 46 – column 12 line 57, operator pruning conditions are utilized to select join operators)
selecting a broadcast join distribution for the subset and a hash-hash join distribution for remaining hash-join-build operations; (column 6 line 52 - column 7 line 31, different types of join conditions and pruning conditions are determined for optimization, column 10 line 57 – column 11 line 29, a query execution engine are configured to handle different types of database with different storage layer types)
and executing the query plan using the broadcast join distribution for the subset of hash-join-build operations and the hash-hash join distribution for the remaining hash-join-build operations. (column 9 line 65 – column 10 line 14, column 11 lines 15-29, the query plan is executed after optimization)
Willems does not explicitly indicate determining, for each hash-join-build operation, a memory amount for performing a broadcast; selecting a subset of hash-join-build operations for broadcast join distribution based on a comparison of the memory amount to a broadcast memory threshold.
Wang teaches determining, for each hash-join-build operation, a memory amount for performing a broadcast; selecting a subset of hash-join-build operations for broadcast join distribution based on a comparison of the memory amount to a broadcast memory threshold. (paragraph 0018, 0019, 0059, 0063, the memory usage required for operators in an execution plan are determined and able to be performed without an error).
It would have been obvious for one of ordinary skill in the art at the time the invention was made to combine Willems’ system of generating and optimizing a query plan based on analyzing and pruning join operators in the query plan with Wang’s ability to determine memory usage of operators in an execution plan. This gives the user the ability to optimize a query plan based on estimated memory usage. The motivation for doing so would be to minimize runtime errors when executing a database query (paragraph 0003).
As per claim 17, Willems and Wang are taught as per claim 16 above. Wang additionally teaches the broadcast memory threshold is reduced by a predetermined factor in each iteration until a total memory amount for the subset of hash-join-build operations selected for broadcast join distribution is within the broadcast memory threshold. (paragraph 0027, memory requirements, paragraph 0059, 0063, threshold amount of memory)
As per claim 18, Willems and Wang are taught as per claim 17 above. Wang additionally teaches the primary decision node computes the total memory amount for the subset of hash-join-build operations selected for broadcast join distribution after each reduction of the broadcast memory threshold. (paragraph 0059, 0063, threshold amount of memory)
As per claim 19, Willems and Wang are taught as per claim 16 above. Wang additionally teaches adding at least one hash-join-build operation of the plurality of hash-join-build operations having a memory amount less than the broadcast memory threshold to the subset selected for broadcast join distribution. (paragraph 0059, 0063, threshold amount of memory)
As per claim 20, Willems and Wang are taught as per claim 19 above. Wang additionally teaches the build-side data information received by the primary decision node includes an estimate of memory consumption for the at least one hash-join-build operation. (paragraph 0019, 0059, memory usage)
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Tokuda (US Publication 2015/0112965 A1)
Kim (US Publication 2021/0149897 A1)
Any inquiry concerning this communication or earlier communications from the examiner should be directed to DANGELINO N GORTAYO whose telephone number is (571)272-7204. The examiner can normally be reached Monday-Friday 7:00am - 3:30pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Charles Rones can be reached at 571-272-4085. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/DANGELINO N GORTAYO/ Primary Examiner, Art Unit 2168