CTNF 19/185,644 CTNF 83955 DETAILED ACTION Notice of Pre-AIA or AIA Status 07-03-aia AIA 15-10-aia The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA. 12-151 AIA 26-51 12-51 Status of Claims Claims 1-20 are pending of which claims 1, and 14 are in independent form. Claims 1-20 are rejected under 35 U.S.C. 103. Examiner’ note The claims have been considered under 35 USC 101. Examiner is of the position that independent claims 1 and 14are not directed to a judicial exception. Specifically, claim 1 recites a particular technique for executing a user defined subroutine within a database environment, including receiving an SQL statement referencing a user defined subroutine defined in an imperative language, generating a wrapper subroutine that specifies a datatype conversion for a parameter of the user defined subroutine, and executing the SQL statement through execution of the wrapper subroutine and the user defined subroutine. The claim subject matter is directed to a specific implementation of database query processing and user defined subroutine execution and does not recite a mathematical concept, a method of organizing human activity or a mental process. Accordingly, no rejection under 35 USC 101 is made. Claim Rejections - 35 USC § 103 07-20-aia AIA 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. 07-21-aia AIA Claim (s) 1, 2, 5-7, 11, 14, 15, 17, 18 and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Yuan; Heng et al. (US 20190197156 A1) [Yuan] in view of KLÄBE; Steffen et al. (US 20230080220 A1) [Klabe] . Regarding claims 1 and 14, Yuan discloses, a method comprising in a database session, performing: receiving a structured query language (SQL) statement that references a user-defined subroutine that is defined in an imperative language (Data Manipulation Language (DML) (such as Structured Query Language (SQL))…. user-registered UDF 104, and one or more database supported UDFs ¶ [0019]. The source code 110 for the UDF 104 is an example program for generating a standard deviation. The DML presented is Structured Query Language (SQL) ¶ [0025]); generating, in response to said receiving, a wrapper subroutine that is defined in the imperative language (parser 102 detects the CREATE FUNCTION … creates wrapper code ¶ [0027], The wrapper code 120 is generated as a customized instance ¶ [0029], The wrapper code 120 is generated as a customized instance ¶ [0032], UDF wrapper generator ¶ [0039]-[0055], query parser transparently generates a wrapper for a user-provided UDF ¶ [0059], query parser 402 … generate the UDF wrapper 403 ¶ [0072]-[0073]); and executing the SQL statement (query calling original UDF is rewritten ¶ [0032], query written to call wrapper ¶ [0052], UDF wrapper generator passes the query instructions including a reference to the executable instructions ¶ [0051], generates executable query ¶ [0054], [0056], equivalent instance of a UDF in response to the UDF … when the UDF is called within a query ¶ [0072]), including executing the wrapper subroutine (wrapper executed each time the user-provided UDF is called from a user application ¶ [0016], wrapper code 120 is called ¶ [0032], aggregate UDF 105 through execution of the wrapper code ¶ [0034], UDF wrapper generator is executable instructions ¶ [0039], UDF wrapper generator process an executable version ¶ [0051], wrapper generator rewrites the query to call the instance instead of the UDF ¶ [0052]), including executing the user-defined subroutine (wrapper selectively calls the UDF [Abstract], wrapper source code selectively calls the UDF ¶ [0046], Wrapper code calls the UDF ¶ [0048]). However, Yuan does not explicitly facilitate wherein the wrapper subroutine specifies a datatype conversion for a parameter for the user-defined subroutine. Klabe discloses, wherein the wrapper subroutine specifies a datatype conversion for a parameter for the user-defined subroutine (wrapper function can cast the generic input parameters … and calls the UDF¶ [0025], UDF input values to be converted … using the respective input conversion functions, the compiled UDF can be called using the wrapper function [0027]). It would have been obvious to one ordinary skilled in the art before the effective filing date of the claimed invention to combine the teachings of the cited references because Klabe’s system would have allowed Yuan to facilitate wherein the wrapper subroutine specifies a datatype conversion for a parameter for the user-defined subroutine. The motivation to combine is apparent in the Yuan’s reference, because there is a need to improve aggregate UDF certified and is less likely to have any errors, and is capable of safely running from the database kernel. Regarding claims 2 and 15, the combination of Yuan and Klabe discloses, said SQL statement is a first SQL statement; the method further comprises executing a distinct second SQL statement, including executing a particular wrapper, including executing the user-defined subroutine; the particular wrapper is selected from a group consisting of: the wrapper subroutine and a wrapper that is not the wrapper subroutine (Klabe: a wrapper function and a function definition for multiple possible UDF signatures … wrapper function can cast the generic input parameters as well as the actual UDF and calls the UDF ¶ [0025], query interpreter 124 can determine which of the multiple possible wrapper functions has a signature that matches a signature of the UDF, and can select this wrapper function for executing one or more functions ¶ [0057]-[0059], also see ¶ [0046]). Regarding claims 5 and 17, the combination of Yuan and Klabe discloses, wherein: said user-defined subroutine and a second user-defined subroutine have a same signature (Klabe: a wrapper function and a function definition for multiple possible UDF signatures ¶ [0025], can include a function signature, and can be configured to call a UDF having the same signature ¶ [0057], examiner specifies this teaches multiple UDF signatures recognized); the method further comprising: a) in response to said receiving, generating a subroutine skeleton that represents said same signature (Klabe: a placeholder function type can be defined and a wrapper function and a function definition for multiple possible UDF signatures ¶ [0025], In loading the shared library at block 302, optionally at block 308, a wrapper function can be selected from multiple possible wrapper functions for the UDF based on a signature of the UDF. For example, one or more components of the database system 102, such as query interpreter 124, UDF compiler 126, UDF execution engine(s) 128, etc., in conjunction with one or more processors, a memory 120 storing instructions for executing on a processor and/or related data, etc., may select, based on the signature of the UDF, the wrapper function from the multiple possible wrapper functions for the UDF. For example, multiple possible wrapper functions can be generated for UDFs, as described above. A given wrapper function, for example, can include a function signature, and can be configured to call a UDF having the same signature ¶ [0057]), b) from the subroutine skeleton, generating said wrapper subroutine and a second wrapper subroutine (Klabe: multiple wrapper functions generated from signature information ¶ [0025]). Regarding claim 6, the combination of Yuan and Klabe discloses, wherein: said parameter is a first parameter (Klabe: parameter casting ¶ [0025]) ; said datatype conversion is a first datatype conversion that is specified in a first logic statement in the user-defined subroutine (Klabe: casting generic input parameters ¶ [0025], UDF input values to be converted to PyObject elements using the respective input conversion functions ¶ [0027], conversion functions based on the UDF signature ¶ [0024]); the wrapper subroutine specifies a second datatype conversion for a second parameter for the user-defined subroutine (Klabe:UDF input values to be converted to PyObject elements using the respective input conversion functions ¶ [0027], conversion functions based on the UDF signature ¶ [0024]); the second datatype conversion is specified in a second logic statement in the user-defined subroutine (Klabe: multiple conversion fnctions associated with parameters ¶ [0027]). Regarding claims 7 and 18, the combination of Yuan and Klabe discloses, wherein the wrapper subroutine does not specify (Klabe: specialized wrapper generated for signature ¶ [0025]) at least one selected from a group consisting of iteration and conditional logic (Klabe: he UDF can be executed via the shared library during the invocation of the database query [Abstract], ¶ [0008], [0049], the UDF signature can be initialized and stored as function pointers to avoid branching during execution ¶ [0024], branching during the UDF execution can be avoided ¶ [0025]). Regarding claims 11 and 20, the combination of Yuan and Klabe discloses, wherein said executing the SQL statement comprises: a) from a database table, processing a first table row and a second table row (Klabe: vectorized processing of rows ¶ [0019]), and b) executing the wrapper subroutine exactly once (Klabe: wrapper invoked on vector of values ¶ [0058]) including: i) first executing the user-defined subroutine, wherein said parameter is based on the first table row (Klabe: first value processed ¶ [0058]), and ii) second executing the user-defined subroutine, wherein said parameter is based on the second table row (Klabe: subsequent row values processed ¶ [0058]-[0059]) . 07-21-aia AIA Claim (s) 3, 4, 8, 9, 12, 16 and 18 are rejected under 35 U.S.C. 103 as being unpatentable over Yuan in view of Klabe in view of FENDER; PIT et al. (US 20210064588 A1) [Fender] . Regarding claims 3 and 16, the combination of Yuan and Klabe teaches all the limitations of claims 1. However, neither Yuan nor Klabe explicitly facilitates the first SQL statement specifies a distinct first value for the parameter; the second SQL statement specifies a distinct second value for the parameter; said executing the first SQL statement comprises performing a partial evaluation based on the distinct first value; the partial evaluation is selected from a group consisting of a partial evaluation that is based on the second value and a partial evaluation that is not based on the second distinct value. Fender discloses, the first SQL statement specifies a distinct first value for the parameter (PL/SQL functions … IN/OUT parameters ¶ [0321], UDF function returns… parameters ¶ [0446]); the second SQL statement specifies a distinct second value for the parameter (UDF function returns… parameters ¶ [0446], this can be interpreted repeated execution using different parameters); said executing the first SQL statement comprises performing a partial evaluation based on the distinct first value (AST interpreter is that it is self optimizing by using profiling information and partial evaluation ¶ [0035], Graal may be an MLE's just-in-time compiler (JIT) that can perform partial evaluation of parts of the AST ¶ [0037], partially evaluates subroutine ¶ [0092]); the partial evaluation is selected from a group consisting of a partial evaluation that is based on the second value and a partial evaluation that is not based on the second distinct value (Partial JIT may transform a hot (i.e. repetition exceeding a threshold) fragment of subroutine 170 , such as a tight loop, such as by loop unrolling. As discussed later herein, Futamura projections are architectural transformations that may include partial evaluation (i.e. logic specialization), memoization, (i.e. function result caching that usually has a compound key that contains a name or pointer of a function and its actual argument values) and/or strength reduction (i.e. semantic refactoring; e.g. a) a hotspot with a loop invariant and/or an induction variable, or b) arithmetic operation substitution) ¶ [0074], examiner specifies that this is specialization based on runtime conditions). It would have been obvious to one ordinary skilled in the art before the effective filing date of the claimed invention to combine the teachings of the cited references because Fender’s system would have allowed Yuan and Klabe to facilitate the first SQL statement specifies a distinct first value for the parameter; the second SQL statement specifies a distinct second value for the parameter; said executing the first SQL statement comprises performing a partial evaluation based on the distinct first value; the partial evaluation is selected from a group consisting of a partial evaluation that is based on the second value and a partial evaluation that is not based on the second distinct value. The motivation to combine is apparent in the Yuan and Klabe’s reference, because there is a need to improve polyglot programing of a software system such as a database management system (DBMS). Regarding claim 4, the combination of Yuan, Klabe and Fender discloses, wherein the partial evaluation (Fender: partial evaluation ¶ [0035], [0037]) comprises at least one selected from a group consisting of: an inlining (Fender: AS inlining clause ¶ [0100], DDL … defined inline ¶ [0098], also see ¶ [0426], [0467], [0155]), a dead code elimination (Significant optimizations may include … branch eliminations ¶ [0036]), a constant folding (strength reduction and semantic optimization ¶ [0074]), and a partial evaluation based on polymorphism of the parameter (polymorphic inline cache ¶ [0036]). Regarding claims 8 and 19, the combination of Yuan, Klabe and Fender discloses, wherein said executing the wrapper subroutine comprises after said generating (Yuan: A wrapper for the UDF is generated [abstract], also see ¶ [0016], [0029], [0039]-[0055]), performing at least one action selected from a group consisting of: a) an inlining of the user-defined subroutine into the wrapper subroutine (Fender: function in-lining ¶ [0036], AS inlining clause ¶ [0100], DDL … defined inline ¶ [0098], also see ¶ [0426], [0467], [0155]) and b) to hardware instructions, a compilation of at least a portion of: the wrapper subroutine or the user-defined subroutine (Klabe: executing a compiled (UDF) in an interpreted database query engine using a wrapper function ¶ [0013]. integrating compilation of user defined functions (UDFs) into vectorized database systems, or associated interpreted query engines ¶ [0017]. As the signature may not be known during the compilation of the actual database engine, a placeholder function type can be defined and a wrapper function and a function definition for multiple possible UDF signatures can be generated ¶ [0025], [0027]. Also see ¶ [0020]-[0023], [0044]-[0045], [0047]). Regarding claim 9, the combination of Yuan, Klabe and Fender discloses, wherein the parameter is an output parameter or an input/output parameter (Fender: IN/OUT parameters ¶ [0321]). Regarding claim 12, the combination of Yuan, Klabe and Fender discloses, wherein said generating comprises: from a signature for the user-defined subroutine (Klabe: UDF signature ¶ [0024]-[0025], [0049], [0057]) , generating a subroutine skeleton (Klabe: a placeholder function type can be defined and a wrapper function and a function definition for multiple possible UDF signatures ¶ [0025]) that is defined in an interface description language that is a domain specific language (DSL) (Fender: domain specific languages (DSLs) ¶ [0039], [0058], [0184]); generating an abstract syntax tree (AST) that represents the subroutine skeleton, wherein the AST contains a subtree that contains a leaf node (Fender: Truffle is a language implementation framework to build high-performance abstract syntax tree (AST) ¶ [0035]-[0037], [0092], [0170]); in a copy of the AST, replacing the subtree with a plurality of tree nodes that represent the user-defined subroutine (Fender: Significant optimizations may include type specializations, rewriting indirect function calls, polymorphic inline caches, branch eliminations, and speculative function in-lining, such as discussed herein. If speculative assumptions turn out to be wrong, the specialized AST can be reverted to a more general version that provides functionality for more general cases ¶ [0036]) . 07-21-aia AIA Claim (s) 10 are rejected under 35 U.S.C. 103 as being unpatentable over Yuan in view of Klabe in view of Grosse; Philipp et al. (US 20200233661 A1) [Grosse] . Regarding claim 10, the combination of Yuan and Klabe teaches all the limitations of claims 1. However, neither Yuan nor Klabe explicitly facilitates wherein said generating is responsive to detecting that a count of parameters for the user-defined subroutine does not exceed a threshold that is greater than one. Grosse discloses, wherein said generating is responsive to detecting that a count of parameters for the user-defined subroutine does not exceed a threshold that is greater than one (the UDF groups the join result by pairs of Id_File of common Git commits and aggregates the Hash values of the commits into a list of Hashes. After that, pairs of files are discarded that are below a given threshold of co-occurrence in a commit ¶ [0171], After that a filter UDF removes all pairs of files below a threshold ¶ [0266]). It would have been obvious to one ordinary skilled in the art before the effective filing date of the claimed invention to combine the teachings of the cited references because Fender’s system would have allowed Yuan and Klabe to facilitate wherein said generating is responsive to detecting that a count of parameters for the user-defined subroutine does not exceed a threshold that is greater than one. The motivation to combine is apparent in the Yuan and Klabe’s reference, because there is a need to improve technologies to better address processing large data sets with custom functionality . 07-21-aia AIA Claim (s) 13 are rejected under 35 U.S.C. 103 as being unpatentable over Yuan in view of Klabe in view of De; Subrato Kumar et al. (US 20170300306 A1) [De] . Regarding claim 13, the combination of Yuan and Klabe teaches all the limitations of claims 1. However, neither Yuan nor Klabe explicitly facilitates further comprising from a cache, evicting an AST that represents a subroutine skeleton. De discloses, comprising from a cache, evicting an AST that represents a subroutine skeleton (converted into an intermediate representation (IR) (e.g., abstract-syntax-tree (AST), bytecode, or others forms) ¶ [0004], intermediate representation (e.g., AST or bytecode) is cached … to decide when to delete the cached IR ¶ [0038]). It would have been obvious to one ordinary skilled in the art before the effective filing date of the claimed invention to combine the teachings of the cited references because Fender’s system would have allowed Yuan and Klabe to facilitate further comprising from a cache, evicting an AST that represents a subroutine skeleton. The motivation to combine is apparent in the Yuan and Klabe’s reference, because there is a need for an improved apparatus and methods that reduce the time associated with scripting-language processing are desired. Conclusion The examiner requests, in response to this Office action, support be shown for language added to any original claims on amendment and any new claims. That is, indicate support for newly added claim language by specifically pointing to page(s) and line no(s) in the specification and/or drawing figure(s). This will assist the examiner in prosecuting the application. When responding to this office action, Applicant is advised to clearly point out the patentable novelty which he or she thinks the claims present, in view of the state of the art disclosed by the references cited or the objections made. He or she must also show how the amendments avoid such references or objections See 37 CFR 1.111(c). Any inquiry concerning this communication or earlier communications from the examiner should be directed to MOHAMMAD S ROSTAMI whose telephone number is (571)270-1980. The examiner can normally be reached Mon-Fri From 9 a.m. to 5 p.m.. 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, Boris Gorney can be reached at (571)270-5626. 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. 6/10/2026 /MOHAMMAD S ROSTAMI/ Primary Examiner, Art Unit 2154 Application/Control Number: 19/185,644 Page 2 Art Unit: 2154 Application/Control Number: 19/185,644 Page 3 Art Unit: 2154 Application/Control Number: 19/185,644 Page 4 Art Unit: 2154 Application/Control Number: 19/185,644 Page 5 Art Unit: 2154 Application/Control Number: 19/185,644 Page 6 Art Unit: 2154 Application/Control Number: 19/185,644 Page 7 Art Unit: 2154 Application/Control Number: 19/185,644 Page 8 Art Unit: 2154 Application/Control Number: 19/185,644 Page 9 Art Unit: 2154 Application/Control Number: 19/185,644 Page 10 Art Unit: 2154 Application/Control Number: 19/185,644 Page 11 Art Unit: 2154 Application/Control Number: 19/185,644 Page 12 Art Unit: 2154 Application/Control Number: 19/185,644 Page 13 Art Unit: 2154