IP Library Granted Patent US 10,083,016
Granted Patent B1
US 10,083,016 · App. 15/617,949 · Granted Sep 25, 2018

Procedurally specifying calculated database fields, and populating them

Inventor: Timothy R. Norman (Overland Park, KS)
Assignee: LockPath, Inc.
G06F8/40G06F8/42G06F17/30292
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 10,083,016
App. No.
15/617,949
Granted
Sep 25, 2018
Kind
B1
Abstract

A facility for defining a calculated distinguished database field is described. The facility receives a formula usable to calculate the value of the distinguished database field for each of a plurality of database rows, the formula expressed as a method in a distinguished procedural programming language. The facility transforms the formula method into a syntax tree for the distinguished procedural programming language. The facility modifies the syntax tree to provide variable context, field projection, runtimetype dynamic property accessors, and/or field path mapping. The facility transforms the modified syntax tree into a second version of the formula method in the distinguished procedural programming language.

Claims (87)

1. A method in a computing system, comprising:

receiving a formula that, when evaluated with respect to a particular row of each of a plurality of database rows, produces a respective value for a distinguished database field of the particular row, the formula expressed as a method in a distinguished procedural programming language;

transforming the formula method into a first syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, wherein the transforming is based on the distinguished procedural programming language;

traversing the first syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, wherein the traversal identifies one or more prohibited language features of the distinguished procedural programming language;

generating an error in relation to the identified one or more prohibited language features of the distinguished procedural programming language;

receiving a modification to the formula method that excludes the prohibited language features of the distinguished procedural programming language;

transforming the modified formula method into a second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row;

modifying the second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, to provide variable context, field projection, runtimetype dynamic property accessors, and/or field path mapping; and

compiling the modified second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, into a second version of the formula method in the distinguished procedural programming language.

2. The method of claim 1 , further comprising:

compiling the second version of the formula method to obtain machine code for the second version of the formula method.

3. The method of claim 2 , wherein the executed machine code performs bulk commits across the at least a portion of the plurality of database rows.

4. The method of claim 2 , further comprising:

for each particular database row of the plurality of database rows in a database table:

causing the machine code for the second version of the formula method to be executed to determine a value for the distinguished database field of the particular database row based on values of one or more database fields of the particular database row other than the distinguished database field.

5. The method of claim 1 ,

wherein the formula method includes an assignment to a variable with an assigned value; and

wherein the formula method includes multiple references to the value assigned to the variable.

6. The method of claim 1 , further comprising:

before transforming the formula method into the first syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, constructing a translation template around the formula method, the translation template expressed in the distinguished procedural programming language.

7. The method of claim 1 ,

wherein the method further comprises:

analyzing the second syntax tree to determine whether the second syntax tree reflects any of a set of actions prohibited for function methods, and

wherein the compiling the modified second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, into the second version of the formula method is performed in response to the second syntax tree being determined not to reflect any of the set of actions prohibited for function methods.

8. The method of claim 1 , wherein the one or more prohibited language features include one or more of: types not on a list of approved types, calls to methods not on a list of approved methods, invalid field paths; or any combination thereof.

9. The method of claim 1 , further comprising:

before transforming the modified formula method into the second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, embedding the modified formula method in a validation template expressed in the distinguished procedural programming language.

10. The method of claim 1 , wherein the second version of the formula method in the distinguished procedural programming language specifies accessing each database row only once.

11. The method of claim 1 , wherein the modifying the second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, is performed by providing variable context, field projection, and field path mapping.

12. The method of claim 1 , wherein the modifying the second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, is performed by providing a composite projection type having properties comprising distinct field value accessors, unique aggregate calls factoring, a target field of each formula, and an identifier field of the record being operated on.

13. The method of claim 1 , wherein the modifying the second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, is performed by providing a composite projection type having properties comprising distinct field value accessors, a target field of each formula, and an identifier field of the record being operated on.

14. One or more memories collectively having contents adapted to cause a computing system to perform a method, the method comprising:

receiving a formula that, when evaluated with respect to a particular row of each of a plurality of database rows, produces a respective value for a distinguished database field of the particular row, the formula expressed as a method in a distinguished procedural programming language;

transforming the formula method into a first syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row;

traversing the first syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, wherein the traversal identifies one or more prohibited language features of the distinguished procedural programming language;

generating an error in relation to the identified one or more prohibited language features of the distinguished procedural programming language;

receiving a modification to the formula method that excludes the prohibited language features of the distinguished procedural programming language;

transforming the modified formula method into a second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row;

modifying the second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, to provide variable context, field projection, runtimetype dynamic property accessors, and/or field path mapping; and

compiling the modified second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, into a second version of the formula method in the distinguished procedural programming language.

15. The one or more memories of claim 14 , the method further comprising:

compiling the second version of the formula method to obtain machine code for the second version of the formula method.

16. The one or more memories of claim 15 , the method further comprising:

executing the obtained machine code to populate the values into at least a portion of the distinguished database fields.

17. The one or more memories of claim 16 , wherein the executed machine code performs bulk commits across the at least a portion of the distinguished database fields.

18. The one or more memories of claim 15 , the method further comprising:

for each particular database row of the plurality of database rows in a database table:

causing the machine code for the second version of the formula method to be executed to determine a value for the distinguished database field of the particular database row based on values of one or more database fields of the particular database row other than the distinguished database field.

19. The one or more memories of claim 14 , wherein the distinguished procedural programming language is a variant of the C programming language.

20. The one or more memories of claim 14 , wherein the distinguished procedural programming language is C#.

21. The one or more memories of claim 14 ,

wherein the formula method includes an assignment to a variable with an assigned value; and

wherein the formula method includes multiple references to the value assigned to the variable.

22. The one or more memories of claim 14 ,

wherein the method further comprises:

analyzing the second syntax tree to determine whether the second syntax tree reflects any of a set of actions prohibited for function methods, and

wherein the compiling the modified second syntax tree into the second version of the formula method is performed in response to the second syntax tree being determined not to reflect any of the set of actions prohibited for function methods.

23. The one or more memories of claim 14 , wherein the second version of the formula method in the distinguished procedural programming language specifies accessing each database row only once.

24. The one or more memories of claim 14 , wherein the modifying the second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, is performed by providing variable context, field projection, and field path mapping.

25. The one or more memories of claim 14 , wherein the modifying the second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, is performed by providing a composite projection type having properties comprising distinct field value accessors, unique aggregate calls factoring, a target field of each formula, and an identifier field of the record being operated on.

26. The one or more memories of claim 14 , wherein the modifying the second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, is performed by providing a composite projection type having properties comprising distinct field value accessors, a target field of each formula, and an identifier field of the record being operated on.

27. One or more memories collectively containing a formula method data structure, comprising:

a method definition expressed in procedural source code that returns a calculated field value for a database row against which it is invoked, wherein the method definition was created by:

transforming—

a formula method, that, when evaluated with respect to a particular row of each of a plurality of database rows, produces a respective value for a distinguished database field of the particular row,

into a first syntax tree that defines that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row;

traversing the first syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, wherein the traversal identifies one or more prohibited language features of the distinguished procedural programming language;

generating an error in relation to the identified one or more prohibited language features of the distinguished procedural programming language;

receiving a modification to the formula method that excludes the prohibited language features of the distinguished procedural programming language;

transforming the modified formula method into a second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row;

modifying the second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row; and

compiling the modified second syntax tree that defines, for the particular row of each of the plurality of database rows, the respective value for the distinguished database field of the particular row, into the method definition.

28. The one or more memories of claim 27 , the data structure further comprising:

procedural source code constituting a template providing contextual resources usable to validate the method definition.

29. The one or more memories of claim 27 , the data structure further comprising:

procedural source code constituting a template providing contextual resources usable to translate the method definition for compiling.

30. One or more memories collectively containing a formula method data structure, comprising:

a second method definition expressed in procedural source code that returns a calculated field value for a database row against which it is invoked,

wherein the second method definition is obtained by:

receiving a method definition that, when evaluated with respect to a particular row of each of a plurality of database rows, produces a respective value for a distinguished database field of the particular row, the method definition expressed in a distinguished procedural programming language;

transforming the method definition into a first syntax tree;

traversing the first syntax tree, wherein the traversal identifies one or more prohibited language features of the distinguished procedural programming language;

generating an error in relation to the identified one or more prohibited language features of the distinguished procedural programming language;

receiving a modification to the method definition that excludes the prohibited, language features of the distinguished procedural programming language;

transforming the modified method definition into a second syntax tree;

modifying the second syntax tree by adding variable context, field projection, runtimetype dynamic property accessors, and/or field path mapping; and

using the second syntax tree to generate the second method definition expressed in the procedural source code.

Assignments (11)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2026
From: LOCKPATH, INC.
To: NAVEX GLOBAL, INC.
Reel/Frame 073421/0392 →
MERGER Recorded Jan 9, 2026
From: HORNET SUB, INC.
To: LOCKPATH, INC.
Reel/Frame 073421/0398 →
SECURITY INTEREST Recorded Oct 15, 2025
From: NAVEX GLOBAL, INC.
To: ANTARES CAPITAL LP, AS COLLATERAL AGENT
Reel/Frame 072574/0356 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 065519/0345 Recorded Oct 15, 2025
From: ANTARES CAPITAL LP, AS COLLATERAL AGENT
To: NAVEX GLOBAL, INC.
Reel/Frame 073069/0677 →
RELEASE OF SECURITY INTEREST IN PATENTS AT REEL 050911, FRAME 0873 Recorded Nov 17, 2023
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: LOCKPATH, INC.
Reel/Frame 065612/0945 →
RELEASE OF SECURITY INTEREST IN PATENTS AT REEL 050911, FRAME 0969 Recorded Nov 17, 2023
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: LOCKPATH, INC.
Reel/Frame 065613/0004 →
SECURITY INTEREST Recorded Nov 10, 2023
From: NAVEX GLOBAL, INC.
To: ANTARES CAPITAL LP, AS COLLATERAL AGENT
Reel/Frame 065519/0345 →
MERGER Recorded Feb 22, 2022
From: LOCKPATH, INC.
To: HORNET SUB, INC.
Reel/Frame 059066/0040 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 1, 2019
From: LOCKPATH, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 050911/0873 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 1, 2019
From: LOCKPATH, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 050911/0969 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2017
From: NORMAN, TIMOTHY R.
To: LOCKPATH, INC.
Reel/Frame 042661/0775 →