private boolean addConstraintPredicates ( KuduTable table , KuduScanToken . KuduScanTokenBuilder builder , TupleDomain < ColumnHandle > constraintSummary ) { if ( constraintSummary . isNone ( ) ) { return false ; } else if ( ! constraintSummary . isAll ( ) ) { Schema schema = table . getSchema ( ) ; for ( TupleDomain . ColumnDomain < ColumnHandle > columnDomain : constraintSummary . getColumnDomains ( ) . get ( ) ) { int position = ( ( KuduColumnHandle ) columnDomain . getColumn ( ) ) . getOrdinalPosition ( ) ; ColumnSchema columnSchema = schema . getColumnByIndex ( position ) ; Domain domain = columnDomain . getDomain ( ) ; if ( domain . isNone ( ) ) { return false ; } else if ( domain . isAll ( ) ) { // no restriction } else if ( domain . isOnlyNull ( ) ) { builder . addPredicate ( KuduPredicate . newIsNullPredicate ( columnSchema ) ) ; } else if ( domain . getValues ( ) . isAll ( ) && domain . isNullAllowed ( ) ) { builder . addPredicate ( KuduPredicate . newIsNotNullPredicate ( columnSchema ) ) ; } else if ( domain . isSingleValue ( ) ) { KuduPredicate predicate = createEqualsPredicate ( columnSchema , domain . getSingleValue ( ) ) ; builder . addPredicate ( predicate ) ; } else { ValueSet valueSet = domain . getValues ( ) ; if ( valueSet instanceof EquatableValueSet ) { DiscreteValues discreteValues = valueSet . getDiscreteValues ( ) ; KuduPredicate predicate = createInListPredicate ( columnSchema , discreteValues ) ; builder . addPredicate ( predicate ) ; } else if ( valueSet instanceof SortedRangeSet ) { Ranges ranges = ( ( SortedRangeSet ) valueSet ) . getRanges ( ) ; Range span = ranges . getSpan ( ) ; Marker low = span . getLow ( ) ; if ( ! low . isLowerUnbounded ( ) ) { KuduPredicate . ComparisonOp op = ( low . getBound ( ) == Marker . Bound . ABOVE ) ? KuduPredicate . ComparisonOp . GREATER : KuduPredicate . ComparisonOp . GREATER_EQUAL ; KuduPredicate predicate = createComparisonPredicate ( columnSchema , op , low . getValue ( ) ) ; builder . addPredicate ( predicate ) ; } Marker high = span . getHigh ( ) ; if ( ! high . isUpperUnbounded ( ) ) { KuduPredicate . ComparisonOp op = ( low . getBound ( ) == Marker . Bound . BELOW ) ? KuduPredicate . ComparisonOp . LESS : KuduPredicate . ComparisonOp . LESS_EQUAL ; KuduPredicate predicate = createComparisonPredicate ( columnSchema , op , high . getValue ( ) ) ; builder . addPredicate ( predicate ) ; } } else { throw new IllegalStateException ( "Unexpected domain: " + domain ) ; } } } } return true ; }
translates TupleDomain to KuduPredicates .