Package com.twilio.kudu.sql.rules
-
Class Summary Class Description KuduAggregationLimitRule Rule to match a limit over a sort over aggregation.KuduFilterIntoJoinRule KuduFilterRule KuduLimitRule KuduNestedJoinRule KuduPredicatePushDownVisitor KuduPredicatePushDownVisitor returns a List of a List of CalciteKuduPredicates.KuduProjectRule KuduProjectValuesRule KuduRules KuduSortedAggregationRule Rule that matches a sort over an aggregation with both sort and aggregation using the same columns.KuduSortRule Two Sort Rules that look to push the Sort into the Kudu RPC.KuduSortRule.KuduFilterVisitor SearchesRexNode
to see if the Kudu column index -- stored asKuduSortRule.KuduFilterVisitor.mustHave
is present in theRexNode
and is required.KuduSortRule.KuduSortWithFilter Rule to match a Sort aboveFilter
and it is aboveKuduQuery
.KuduSortRule.KuduSortWithoutFilter Rule to match a Sort aboveKuduQuery
.KuduToEnumerableConverter Rule to convert a relational expression fromKuduRelNode.CONVENTION
toEnumerableConvention
.KuduValuesRule KuduWriteRule RowValueExpressionConverter Used to paginate through rows in the order of the primary key columns by comparing row expressions with a greater than operator If the the PK of the table is(A asc, B asc, C asc) (A, B, C) > ('a1', 'b1', * 'c1')
is transformed to(A > 'a1') OR ((A = 'a1') AND (B > 'b1')) OR ((A = 'a1') AND (B = 'b1') AND (C > 'c1'))
If the the PK of the table is(A asc, B desc, C asc) (A, B, C) > ('a1', 'b1', 'c1')
is transformed to(A > 'a1') OR ((A = 'a1') AND (B < 'b1')) OR ((A = 'a1') AND (B = 'b1') AND (C > 'c1'))
This implementation is different from the SQL-92 standard see https://stackoverflow.com/questions/32981903/sql-syntax-term-for-where-col1-col2-val1-val2/32982077#32982077SortInnerJoinTranspose