IP Library Granted Patent US 10,642,582
Granted Patent B2
US 10,642,582 · App. 15/685,048 · Granted May 5, 2020

System of type inference for tuple graph programs method of executing a tuple graph program across a network

Inventors: Gautham Thambidorai (Palo Alto, CA); Matthew Rosencrantz (Menlo Park, CA); Sanjay Ghemawat (Mountainview, CA); Srdjan Petrovic (Palo Alto, CA); Ivan Posva (Mountain View, CA)
Assignee: Google LLC
G06F8/35G06F8/31G06F8/437G06F16/9024
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,642,582
App. No.
15/685,048
Granted
May 5, 2020
Kind
B2
Abstract

A programming model provides a method for type inference in programming operations. Information defining one or more attributes of an operation is received, the information specifying a field including a field name and a field type identifier for each of the attributes. Constraints for the operation are determined at least based on the attributes, wherein the constraints restrict at least one of a type of input for the operation or a type of output for the operation. Information defining an input for the operation is received, and it is determined, based on the constraints and the received information defining the input, the type of output for the operation. The type of output is associated with an output for the operation.

Claims (24)

1. A method for type inference in a program, the method comprising:

receiving, by one or more computing devices, first type information for one or more input streams of the program, wherein the program includes a directed graph wherein nodes in the graph represent operators and wherein edges in the graph represent streams of tuples that flow from one operator to another along the edges during execution of the program;

receiving, by the one or more computing devices, for each operator, an output type annotation;

determining, for each operator in one forward pass through the graph, second type information for one or more output streams based on the first type information associated with one or more incoming streams of the operator and the output type annotation associated with the operator, wherein the second type information includes constraints that restrict the tuples included in the one or more streams; and

associating the second type information with the respective one or more output streams.

2. The method of claim 1 , wherein the output type annotation includes at least one of “+”, “special”, a typespecifier, or combinations thereof, wherein the typespecifier specifies a type as a sequence of [fieldname:typename] tuples.

3. The method of claim 1 , further including the step:

raising an error if the output type annotation of the operator is not consistent with the first type information for one or more incoming streams of the operator.

4. A system for type inference in a program, the system comprising:

a memory; and

one or more processors configured to:

receive first type information for one or more input streams of the program, wherein the program includes a directed graph wherein nodes in the graph represent operators and wherein edges in the graph represent streams of tuples that flow from one operator to another along the edges during execution of the program;

receive, for each operator, an output type annotation;

determine, for each operator in one forward pass through the graph, second type information for one or more output streams based on the first type information associated with one or more incoming streams of the operator and the output type annotation associated with the operator, wherein the second type information includes constraints that restrict the tuples included in the one or more streams; and

associate the second type information with the respective one or more output streams.

5. The system of claim 4 , wherein the output type annotation includes at least one of “+”, “special”, a typespecifier, or combinations thereof, wherein the typespecifier specifies a type as a sequence of [fieldname:typename] tuples.

6. The system of claim 4 , wherein the one or more processors are further configured to raise an error if the output type annotation of the operator is not consistent with the first type information for one or more incoming streams of the operator.

7. A non-transitory computer-readable medium storing instructions executable by one or more processors for performing a method for type inference in a program, comprising:

receiving first type information for one or more input streams of the program, wherein the program includes a directed graph wherein nodes in the graph represent operators and wherein edges in the graph represent streams of tuples that flow from one operator to another along the edges during execution of the program;

receiving, for each operator, an output type annotation;

determining, for each operator in one forward pass through the graph, second type information for one or more output streams based on the first type information associated with one or more incoming streams of the operator and the output type annotation associated with the operator, wherein the second type information includes constraints that restrict the tuples included in the one or more streams; and

associating the second type information with the respective one or more output streams.

8. The non-transitory computer-readable medium of claim 7 , wherein the output type annotation includes at least one of “+”, “special”, a typespecifier, or combinations thereof, wherein the typespecifier specifies a type as a sequence of [fieldname:typename] tuples.

9. The non-transitory computer-readable medium of claim 7 , wherein the method further comprises raising an error if the output type annotation of the operator is not consistent with the first type information for one or more incoming streams of the operator.

Assignments (2)
CHANGE OF NAME Recorded Oct 20, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044567/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2017
From: THAMBIDORAI, GAUTHAM; ROSENCRANTZ, MATTHEW; GHEMAWAT, SANJAY; PETROVIC, SRDJAN; POSVA, IVAN
To: GOOGLE INC.
Reel/Frame 043469/0521 →
Continuity (1)
Related Publication 20190065154A1 · Feb 28, 2019