Patents by Inventor Steven Freedman

Steven Freedman has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20240045865
    Abstract: Methods, systems, and computer program products are provided that construct and execute multi-step query plans in a database application. A database application accepts a query such as, for example, a graph query. The database application generates a physical query plan comprising a set of execution steps that perform the query. The set of execution steps comprises at least an initial step, an intermediate step and a final step. The database executes the query by passing control to the initial step that, when complete, passes execution control to some other step. The intermediate step executes and when complete, may pass execution control to any other step including itself. Steps may be configured to communicate arbitrary data between steps. The generated query plan may also comprise multiple multi-step sequences, and such sequences may be configured to execute in the alternative based on intermediate query results, or a parameter included in the query.
    Type: Application
    Filed: October 16, 2023
    Publication date: February 8, 2024
    Inventors: Craig Steven FREEDMAN, Chandrashekhar KADIAM, Devin L. RIDER, Daniel Georg SCHALL
  • Publication number: 20230394028
    Abstract: Example aspects include techniques for anomaly detection via sparse judgmental samples. These techniques may include generating a qualified timestamp corresponding to execution of a first operation of a first transaction over a database and determining, based on the qualified timestamp, that a row of a table is not locked by a second operation of a second transaction over the database. In addition, the techniques may include determining that the row meets a condition of the first operation. Further, the techniques may include updating, based on the qualified timestamp, the row in response to the row meeting the condition, the updating including acquiring a lock on the row of the table.
    Type: Application
    Filed: June 2, 2022
    Publication date: December 7, 2023
    Inventors: Chaitanya Sreenivas RAVELLA, Hanumantha Rao KODAVALLA, Prashanth PURNANANDA, Craig Steven FREEDMAN, Vasileios PAPADIMOS
  • Patent number: 11829363
    Abstract: Methods, systems, and computer program products are provided that construct and execute multi-step query plans in a database application. A database application accepts a query such as, for example, a graph query. The database application generates a physical query plan comprising a set of execution steps that perform the query. The set of execution steps comprises at least an initial step, an intermediate step and a final step. The database executes the query by passing control to the initial step that, when complete, passes execution control to some other step. The intermediate step executes and when complete, may pass execution control to any other step including itself. Steps may be configured to communicate arbitrary data between steps. The generated query plan may also comprise multiple multi-step sequences, and such sequences may be configured to execute in the alternative based on intermediate query results, or a parameter included in the query.
    Type: Grant
    Filed: October 6, 2018
    Date of Patent: November 28, 2023
    Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventors: Craig Steven Freedman, Chandrashekhar Kadiam, Devin L Rider, Daniel Georg Schall
  • Patent number: 11755558
    Abstract: A computing device is provided, including non-volatile memory storing a database including a table having a plurality of rows. The computing device may further include a processor configured to receive a request to perform a first transaction on a row. The processor may assign a first transaction identifier (TID) of the first transaction to the row. The processor may impose a first exclusive TID lock on the first TID of the row and may impose a first exclusive data lock associated with the first transaction on the row. The processor may perform the first transaction on the row. Performing the first transaction may include modifying the table as stored in the memory. In response to completing the first transaction, the processor may release the first exclusive data lock on the row and release the first exclusive TID lock on the first TID of the row.
    Type: Grant
    Filed: June 25, 2021
    Date of Patent: September 12, 2023
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Chaitanya Sreenivas Ravella, Prashanth Purnananda, Raghavendra Thallam Kodandaramaih, Peter Byrne, Hanumantha Rao Kodavalla, Girish Mittur Venkataramanappa, Panagiotis Antonopoulos, Adrian-Leonard Radu, Wei Chen, Craig Steven Freedman
  • Publication number: 20220414081
    Abstract: A computing device is provided, including non-volatile memory storing a database including a table having a plurality of rows. The computing device may further include a processor configured to receive a request to perform a first transaction on a row. The processor may assign a first transaction identifier (TID) of the first transaction to the row. The processor may impose a first exclusive TID lock on the first TID of the row and may impose a first exclusive data lock associated with the first transaction on the row. The processor may perform the first transaction on the row. Performing the first transaction may include modifying the table as stored in the memory. In response to completing the first transaction, the processor may release the first exclusive data lock on the row and release the first exclusive TID lock on the first TID of the row.
    Type: Application
    Filed: June 25, 2021
    Publication date: December 29, 2022
    Applicant: Microsoft Technology Licensing, LLC
    Inventors: Chaitanya Sreenivas RAVELLA, Prashanth PURNANANDA, Raghavendra THALLAM KODANDARAMAIH, Peter BYRNE, Hanumantha Rao KODAVALLA, Girish MITTUR VENKATARAMANAPPA, Panagiotis ANTONOPOULOS, Adrian-Leonard RADU, Wei CHEN, Craig Steven FREEDMAN
  • Publication number: 20220335047
    Abstract: Methods, systems, apparatuses, and computer-readable storage mediums described herein are directed to dynamic memory allocation for query execution. A memory grant engine is configured to analyze query runtime execution statistics of instances of a query to detect whether memory allocation operations performed for the query in accordance with a first memory allocation policy (e.g., a last used grant-based policy) changes across executions of that query. Upon detecting such a pattern, the engine dynamically switches to utilizing a second memory allocation policy, such as a percentile-grant based policy. In accordance with such a policy, the engine determines an amount of memory space to be allocated for subsequent instances of the query based on an analysis of query runtime execution statistics of previous instances of the query. The determined amount of memory space is configured to satisfy a predetermined percentile value of the previous instances of the query.
    Type: Application
    Filed: September 23, 2021
    Publication date: October 20, 2022
    Inventors: Prabhas Kumar SAMANTA, Craig Steven FREEDMAN, Anamika Abhoypada DAS
  • Patent number: 11093499
    Abstract: Examples described herein generally relate to executing a received graph database query. The received graph database query can be converted into a recursive common table expression (CTE). Multiple alternative processes for executing the recursive CTE can be generated based on the recursive CTE. A cost associated with each of the multiple alternative processes can be determined. One of the multiple alternative processes can be converted into a multi-step sequence based on the associated cost. The multi-step sequence can be executed on a database to retrieve a set of results in response to the received graph database query.
    Type: Grant
    Filed: March 8, 2019
    Date of Patent: August 17, 2021
    Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventors: Chandrashekhar Kadiam, Craig Steven Freedman, Daniel Georg Schall, Devin Leo Rider, Nitish Jindal
  • Patent number: 11048691
    Abstract: An in-memory database system stores an entirety of a database within main memory of the computer system. The database includes a table comprising a plurality of rows including a particular row. A first transaction updating the particular row is executed to create a first version of the particular row. A second transaction updating the particular row is executed to create a second version of the particular row. The first version is visible only to the first transaction, and the second version is visible only to the second transaction. The in-memory database system may associate an index with the database table, the index referencing the plurality of rows, including referencing the first version of the particular row and the second version of the particular row. The in-memory database system may initiate garbage collection of the first version of the particular row and/or the second version of the particular row.
    Type: Grant
    Filed: March 11, 2019
    Date of Patent: June 29, 2021
    Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventors: Cristian Diaconu, Craig Steven Freedman, Per-Ake Larson, Michael James Zwilling
  • Patent number: 10872085
    Abstract: A database system includes a query optimizer which applies transformations to a logical representation of an input query in a declarative query language to generate expressions for a query execution plan. The query optimizer stores information, for each rule application, indicating a transformation applied and bindings for the transformation, the bindings indicating expressions input to the transformation. When a new query execution plan is to be generated for the input query, the query optimizer uses this stored information, for expressions in an original query execution plan, to guide the query optimizer to produce a current query execution plan while avoiding transformations not used to generate expressions in the original query execution plan.
    Type: Grant
    Filed: November 2, 2018
    Date of Patent: December 22, 2020
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Craig Steven Freedman, Vasileios Papadimos
  • Publication number: 20200285643
    Abstract: Examples described herein generally relate to executing a received graph database query. The received graph database query can be converted into a recursive common table expression (CTE). Multiple alternative processes for executing the recursive CTE can be generated based on the recursive CTE. A cost associated with each of the multiple alternative processes can be determined. One of the multiple alternative processes can be converted into a multi-step sequence based on the associated cost. The multi-step sequence can be executed on a database to retrieve a set of results in response to the received graph database query.
    Type: Application
    Filed: March 8, 2019
    Publication date: September 10, 2020
    Inventors: Chandrashekhar KADIAM, Craig Steven FREEDMAN, Daniel Georg SCHALL, Devin Leo RIDER, Nitish JINDAL
  • Publication number: 20200142990
    Abstract: A database system includes a query optimizer which applies transformations to a logical representation of an input query in a declarative query language to generate expressions for a query execution plan. The query optimizer stores information, for each rule application, indicating a transformation applied and bindings for the transformation, the bindings indicating expressions input to the transformation. When a new query execution plan is to be generated for the input query, the query optimizer uses this stored information, for expressions in an original query execution plan, to guide the query optimizer to produce a current query execution plan while avoiding transformations not used to generate expressions in the original query execution plan.
    Type: Application
    Filed: November 2, 2018
    Publication date: May 7, 2020
    Inventors: Craig Steven FREEDMAN, Vasileios PAPADIMOS
  • Publication number: 20200110827
    Abstract: Methods, systems, and computer program products are provided that construct and execute multi-step query plans in a database application. A database application accepts a query such as, for example, a graph query. The database application generates a physical query plan comprising a set of execution steps that perform the query. The set of execution steps comprises at least an initial step, an intermediate step and a final step. The database executes the query by passing control to the initial step that, when complete, passes execution control to some other step. The intermediate step executes and when complete, may pass execution control to any other step including itself. Steps may be configured to communicate arbitrary data between steps. The generated query plan may also comprise multiple multi-step sequences, and such sequences may be configured to execute in the alternative based on intermediate query results, or a parameter included in the query.
    Type: Application
    Filed: October 6, 2018
    Publication date: April 9, 2020
    Inventors: Craig Steven Freedman, Chandrashekhar Kadiam, Devin L. Rider, Daniel Georg Schall
  • Patent number: 10606830
    Abstract: A data system in which a parent transaction that has multiple nested transactions has isolation between the nested transactions. Each of at least some of the plurality of operations are included within a nested transaction within the parent transaction. For each of at least some of the nested transactions, a begin transaction identifier is assigned to the nested transaction; and on or around completion of the nested transaction, a completion transaction identifier is assigned as a statement identifier at least one object version operated upon by the nested transaction. Visibility of a particular version of an object to an active nested transaction may be verified by comparing the begin transaction identifier of the active nested transaction to the statement identifier of the particular version of the object. The comparison is done such that visibility achieves the proper isolation between nested transactions.
    Type: Grant
    Filed: June 22, 2018
    Date of Patent: March 31, 2020
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Nikola Vujic, Milos Andelkovic, Marko Zivanovic, Craig Steven Freedman, Erik Ismert
  • Patent number: 10474645
    Abstract: Running a transaction against a database that allows the transaction to be automatically retried when the transaction fails such that certain transaction failures that cause the transaction to be automatically retried are not visible to an entity that receives data as a result of the execution of the transaction. A first set of statements of a transaction is identified by identifying statements that will cause a change in the database state. A second set of statements is identified, that result in data being generated to be sent to the entity. The method further includes executing the first set of statements to change the database. The method further includes running the second set of statements separately from the first set of statements to generate data to be sent to the entity.
    Type: Grant
    Filed: February 24, 2014
    Date of Patent: November 12, 2019
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Craig Steven Freedman, Michael James Zwilling, Erik Ismert
  • Publication number: 20190205295
    Abstract: An in-memory database system stores an entirety of a database within main memory of the computer system. The database includes a table comprising a plurality of rows including a particular row. A first transaction updating the particular row is executed to create a first version of the particular row. A second transaction updating the particular row is executed to create a second version of the particular row. The first version is visible only to the first transaction, and the second version is visible only to the second transaction. The in-memory database system may associate an index with the database table, the index referencing the plurality of rows, including referencing the first version of the particular row and the second version of the particular row. The in-memory database system may initiate garbage collection of the first version of the particular row and/or the second version of the particular row.
    Type: Application
    Filed: March 11, 2019
    Publication date: July 4, 2019
    Inventors: Cristian DIACONU, Craig Steven FREEDMAN, Per-Ake LARSON, Michael James ZWILLING
  • Patent number: 10296615
    Abstract: An in-memory database system stores the entirety of a database that is being operated on by a database system within main memory. The database includes a table that comprises a plurality of rows including a particular row. The database table comprises a first version of the particular row having a first valid time, and a second version having a second valid time. Index(es) are associated with the database table. Each index references the plurality of rows, including referencing the first and second versions of the particular row. A transaction acting on the first version of the particular row is executed. The first version of the particular row is visible to the transaction based on the first valid time and the second version of the particular row being not visible to the transaction based on the second valid time.
    Type: Grant
    Filed: August 3, 2018
    Date of Patent: May 21, 2019
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Cristian Diaconu, Craig Steven Freedman, Per-Ake Larson, Michael James Zwilling
  • Publication number: 20180341674
    Abstract: An in-memory database system stores the entirety of a database that is being operated on by a database system within main memory. The database includes a table that comprises a plurality of rows including a particular row. The database table comprises a first version of the particular row having a first valid time, and a second version having a second valid time. Index(es) are associated with the database table. Each index references the plurality of rows, including referencing the first and second versions of the particular row. A transaction acting on the first version of the particular row is executed. The first version of the particular row is visible to the transaction based on the first valid time and the second version of the particular row being not visible to the transaction based on the second valid time.
    Type: Application
    Filed: August 3, 2018
    Publication date: November 29, 2018
    Inventors: Cristian DIACONU, Craig Steven FREEDMAN, Per-Ake LARSON, Michael James ZWILLING
  • Publication number: 20180307721
    Abstract: A data system in which a parent transaction that has multiple nested transactions has isolation between the nested transactions. Each of at least some of the plurality of operations are included within a nested transaction within the parent transaction. For each of at least some of the nested transactions, a begin transaction identifier is assigned to the nested transaction; and on or around completion of the nested transaction, a completion transaction identifier is assigned as a statement identifier at least one object version operated upon by the nested transaction. Visibility of a particular version of an object to an active nested transaction may be verified by comparing the begin transaction identifier of the active nested transaction to the statement identifier of the particular version of the object. The comparison is done such that visibility achieves the proper isolation between nested transactions.
    Type: Application
    Filed: June 22, 2018
    Publication date: October 25, 2018
    Inventors: Nikola Vujic, Milos Andelkovic, Marko Zivanovic, Craig Steven Freedman, Erik Ismert
  • Patent number: 10055449
    Abstract: An in-memory database system stores the entirety of a database that is being operated on by a database system within main memory. The database includes a table that comprises a plurality of rows including a particular row. The database table comprises a first version of the particular row having a first valid time, and a second version having a second valid time. Index(es) are associated with the database table. Each index is implemented as a lock-free data structure and references the plurality of rows, including referencing the first and second versions of the particular row. A transaction acting on the first version of the particular row is executed. The first version of the particular row is visible to the transaction based on the first valid time and the second version of the particular row being not visible to the transaction based on the second valid time.
    Type: Grant
    Filed: November 27, 2017
    Date of Patent: August 21, 2018
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Cristian Diaconu, Craig Steven Freedman, Per-Ake Larson, Michael James Zwilling
  • Patent number: 10019476
    Abstract: A data system in which a parent transaction that has multiple nested transactions has isolation between the nested transactions. Each of at least some of the plurality of operations are included within a nested transaction within the parent transaction. For each of at least some of the nested transactions, a begin transaction identifier is assigned to the nested transaction; and on or around completion of the nested transaction, a completion transaction identifier is assigned as a statement identifier at least one object version operated upon by the nested transaction. Visibility of a particular version of an object to an active nested transaction may be verified by comparing the begin transaction identifier of the active nested transaction to the statement identifier of the particular version of the object. The comparison is done such that visibility achieves the proper isolation between nested transactions.
    Type: Grant
    Filed: May 27, 2015
    Date of Patent: July 10, 2018
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Nikola Vujić, Milo{hacek over (s)} Andelković, Marko {hacek over (Z)}ivanović, Craig Steven Freedman, Erik Ismert