A view defined by an adaptive schema
invisify provenance attributes operator -- With Provenance
Non-relational binary operations.
Non-relational binary operations. This includes integer and boolean arithmetic.
See the Arith enum above for a full list of available operations.
Boxed representation of a boolean
Boxed representation of a boolean
Relational binary operations.
Relational binary operations. This includes equality/inequality, ordering operators, and simple string comparators (e.g., SQL's LIKE)
Representation of an If-Then-Else block.
Representation of an If-Then-Else block. Note that this differs from SQL's use of CASE blocks. If-Then-Else is substantially easier to work with for recursive analyses.
For conversion between If-Then-Else and CASE semantics, see the methods
Boxed representation of a date
Boxed representation of a date
Base type for expression trees.
Base type for expression trees. Represents a single node in the tree.
Boxed representation of a double-precision floating point number
Boxed representation of a double-precision floating point number
Invocation of a System- or User-Defined Function.
Invocation of a System- or User-Defined Function.
For Mimir to be completely happy, functions need to be defined with mimir.algebra.FunctionRegistry and have an entry in mimir.algebra.Eval.
TODO: Move inline function definition from Eval to FunctionRegistry
A table with exactly one row --- Corresponds roughly to a SELECT ...
A table with exactly one row --- Corresponds roughly to a SELECT ... That is, a SELECT with no FROM clause, or in Oracle: SELECT ... FROM dual
Not really used, just a placeholder for intermediate optimization.
Boxed representation of a long integer
Boxed representation of a long integer
Boxed Representation of Interval
Boxed Representation of Interval
Representation of a unary IS NULL
Representation of a unary IS NULL
Representation of a JDBC Variable.
Representation of a JDBC Variable.
Relational algebra cartesian product (I know, technically not an actual join)
Relational algebra cartesian product (I know, technically not an actual join)
Slightly more specific base type for nodes without children Like Expression, but handles children/rebuild for free
Slightly more specific base type for nodes without children Like Expression, but handles children/rebuild for free
A left outer join
A left outer join
Indicates that the source operator's output should be truncated after the specified number of rows.
Indicates that the source operator's output should be truncated after the specified number of rows.
Boolean Negation
Boolean Negation
Boxed representation of NULL
Boxed representation of NULL
Abstract parent class of all relational algebra operators
Slightly more specific base type for constant terms.
Slightly more specific base type for constant terms. PrimitiveValue also acts as a boxing type for constants in Mimir.
A placeholder for use in extending Eval; A proc is an expression that can be evaluated, but is not itself part of mimir's grammar.
A placeholder for use in extending Eval; A proc is an expression that can be evaluated, but is not itself part of mimir's grammar.
The proc defines the method of evaluation.
Generalized relational algebra projection
Generalized relational algebra projection
A single column output by a projection
provenance of operator -- Provenance Of
visify provenance attributes operator -- Provenance Of
Boxed representation of a row identifier/provenance token
Boxed representation of a row identifier/provenance token
Representation of a Provenance Token / Row Identifier.
Representation of a Provenance Token / Row Identifier. RowId has a special place in the expression syntax, because unlike classical SQL implicit ROWID attributes, Mimir's ROWID attributes don't need to reference a specific table. If a ROWID appears in an operator that reads from multiple tables, Mimir will synthesize a new, unique ROWID from the ROWIDs of its constituents.
see mimir.provenance.Provenance for more details.
Relational algebra selection
Relational algebra selection
Indicates that the source operator's output should be sorted in the specified order
Indicates that the source operator's output should be sorted in the specified order
A single sort directive
A single sort directive
Consists of a column name, as well as a binary "ascending" or "descending"
(e.g., as in SELECT * FROM FOO ORDER BY bar ASC)
Boxed representation of a string
Boxed representation of a string
A base relation (Table).
A base relation (Table).
Note that schema information is required to make Typechecking self-contained and database-independent
Metadata columns are special implicit attributes used by many database backends. They are specified as follows: (output, input, type) Where: output: The name that the implicit attribute will be referenced by in the output relation input: An expression to extract the implicit attribute type: The type of the implicit attribute. For example: ("MIMIR_ROWID", Var("ROWID"), Type.TRowId()) will extract SQL's implicit ROWID attribute into the new column "MIMIR_ROWID" with the rowid type.
Boxed Representation of Timestamp
Boxed Representation of Timestamp
An enum class defining the type of primitive-valued expressions (e.g., integers, floats, strings, etc...)
Boxed representation of a type object
Boxed representation of a type object
ExpressionChecker wraps around a bit of context that makes recursion through Expression objects easier.
ExpressionChecker wraps around a bit of context that makes recursion through Expression objects easier. Concretely
scope
: ... is a lookup function for the types of variables,
which the Typechecker has no way to figure out on
its own. The easiest way to pull this off is to simply
pass a Map[String,TAny] object, as its apply() method
will do the trick, but it's handy to leave this open
to any lookup function. The scope doesn't need to be
present for the typechecker to work, but if it isn't
then it'll fail if it hits any Var object.
context
: ... is an operator for debugging purposes. If
any typechecker error occurs, then we'll annotate the
error with this operator.
Relational algebra bag union
Relational algebra bag union
Representation of a column reference (a SQL variable).
Representation of a column reference (a SQL variable). Names are all that's needed. Typechecker expects Operators to be self-contained, but not Expressions.
A (maybe materialized) view
A (maybe materialized) view
When initialized by RAToSql, the query field will contain the raw unmodified query that the view was instantiated with. As the view goes through compilation, the nested query will be modified; The metadata field tracks which forms of compilation have been applied to it, so that the system can decide whether it has an appropriate materialized form of the view ready.
Utility class supporting binary arithmetic operations
Utility class supporting binary arithmetic operations
Arith.Op is an Enumeration type for binary arithmetic operations
Enumerator for comparison types
Utility methods for manipulating expressions
A view defined by an adaptive schema
When initialized by RAToSql, the query field will contain the raw unmodified query that the view was instantiated with. As the view goes through compilation, the nested query will be modified; The metadata field tracks which forms of compilation have been applied to it, so that the system can decide whether it has an appropriate materialized form of the view ready.