Skip to content

Commit fbabd0b

Browse files
committed
Make Constraint serializable
1 parent 179db6a commit fbabd0b

1 file changed

Lines changed: 19 additions & 8 deletions

File tree

core/trino-spi/src/main/java/io/trino/spi/connector/Constraint.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
*/
1414
package io.trino.spi.connector;
1515

16+
import com.fasterxml.jackson.annotation.JsonCreator;
17+
import com.fasterxml.jackson.annotation.JsonProperty;
1618
import io.trino.spi.expression.ConnectorExpression;
1719
import io.trino.spi.predicate.TupleDomain;
1820

@@ -33,6 +35,19 @@ public class Constraint
3335
// variables referenced in the for ConnectorExpressionEvaluator to evaluate conjuncts of expression.
3436
private final Map<String, ColumnHandle> evaluationAssignments;
3537

38+
@JsonCreator
39+
public Constraint(
40+
@JsonProperty("summary") TupleDomain<ColumnHandle> summary,
41+
@JsonProperty("expression") ConnectorExpression expression,
42+
@JsonProperty("assignments") Map<String, ColumnHandle> assignments,
43+
@JsonProperty("evaluationAssignments") Map<String, ColumnHandle> evaluationAssignments)
44+
{
45+
this.summary = requireNonNull(summary, "summary is null");
46+
this.expression = requireNonNull(expression, "expression is null");
47+
this.assignments = Map.copyOf(requireNonNull(assignments, "assignments is null"));
48+
this.evaluationAssignments = Map.copyOf(requireNonNull(evaluationAssignments, "evaluationAssignments is null"));
49+
}
50+
3651
public static Constraint alwaysTrue()
3752
{
3853
return ALWAYS_TRUE;
@@ -53,17 +68,10 @@ public Constraint(TupleDomain<ColumnHandle> summary, ConnectorExpression express
5368
this(summary, expression, assignments, assignments);
5469
}
5570

56-
public Constraint(TupleDomain<ColumnHandle> summary, ConnectorExpression expression, Map<String, ColumnHandle> assignments, Map<String, ColumnHandle> evaluationAssignments)
57-
{
58-
this.summary = requireNonNull(summary, "summary is null");
59-
this.expression = requireNonNull(expression, "expression is null");
60-
this.assignments = Map.copyOf(requireNonNull(assignments, "assignments is null"));
61-
this.evaluationAssignments = Map.copyOf(requireNonNull(evaluationAssignments, "evaluationAssignments is null"));
62-
}
63-
6471
/**
6572
* @return a predicate which is equivalent to, or looser than {@link #getExpression}, and should be AND-ed with, {@link #getExpression}.
6673
*/
74+
@JsonProperty("summary")
6775
public TupleDomain<ColumnHandle> getSummary()
6876
{
6977
return summary;
@@ -73,6 +81,7 @@ public TupleDomain<ColumnHandle> getSummary()
7381
* @return an expression predicate which is different from, and should be AND-ed with, {@link #getSummary}.
7482
* May include an engine-internal {@code $engine_predicate} conjunct that connectors should treat as opaque.
7583
*/
84+
@JsonProperty("expression")
7685
public ConnectorExpression getExpression()
7786
{
7887
return expression;
@@ -82,6 +91,7 @@ public ConnectorExpression getExpression()
8291
* @return mappings from variable names to column handles for the connector-translatable conjuncts of {@link #getExpression}.
8392
* Connectors may use {@code getAssignments().values()} to determine which columns are referenced by the predicate.
8493
*/
94+
@JsonProperty("assignments")
8595
public Map<String, ColumnHandle> getAssignments()
8696
{
8797
return assignments;
@@ -92,6 +102,7 @@ public Map<String, ColumnHandle> getAssignments()
92102
* Pass this to {@code ConnectorExpressionEvaluator} so it can resolve all variable bindings when evaluating
93103
* {@link #getExpression()} end-to-end. Empty means no $engine_predicate conjunct to evaluate.
94104
*/
105+
@JsonProperty("evaluationAssignments")
95106
public Map<String, ColumnHandle> getEvaluationAssignments()
96107
{
97108
return evaluationAssignments;

0 commit comments

Comments
 (0)