1313 */
1414package io .trino .spi .connector ;
1515
16+ import com .fasterxml .jackson .annotation .JsonCreator ;
17+ import com .fasterxml .jackson .annotation .JsonProperty ;
1618import io .trino .spi .expression .ConnectorExpression ;
1719import 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