Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.NotImplementedException;
Expand Down Expand Up @@ -747,6 +748,7 @@ public Map<String, LogicalColumn> generateNameMapping( List<LogicalTable> tables


@AllArgsConstructor
@Getter
public static class Filters {

public final Map<RequestColumn, List<Pair<Operator, PolyValue>>> literalFilters;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -311,11 +311,11 @@ AlgBuilder tableScans( AlgBuilder algBuilder, RexBuilder rexBuilder, List<Logica
boolean firstTable = true;
for ( LogicalTable catalogTable : tables ) {
if ( firstTable ) {
algBuilder = algBuilder.relScan( catalogTable.getNamespaceName(), catalogTable.name );
algBuilder = algBuilder.relScan( catalogTable.getNamespaceName(), catalogTable.getName() );
firstTable = false;
} else {
algBuilder = algBuilder
.relScan( catalogTable.getNamespaceName(), catalogTable.name )
.relScan( catalogTable.getNamespaceName(), catalogTable.getName() )
.join( JoinAlgType.INNER, rexBuilder.makeLiteral( true ) );
}
}
Expand All @@ -325,7 +325,7 @@ AlgBuilder tableScans( AlgBuilder algBuilder, RexBuilder rexBuilder, List<Logica

@VisibleForTesting
List<RexNode> filters( Statement statement, AlgBuilder algBuilder, RexBuilder rexBuilder, Filters filters, HttpServletRequest req ) {
if ( filters.literalFilters != null ) {
if ( filters.getLiteralFilters() != null ) {
if ( req != null && log.isDebugEnabled() ) {
log.debug( "Starting to process filters. Session ID: {}.", req.getSession().getId() );
}
Expand All @@ -336,15 +336,15 @@ List<RexNode> filters( Statement statement, AlgBuilder algBuilder, RexBuilder re
Map<String, AlgDataTypeField> filterMap = new HashMap<>();
filtersRows.forEach( ( r ) -> filterMap.put( r.getName(), r ) );
int index = 0;
for ( RequestColumn column : filters.literalFilters.keySet() ) {
for ( Pair<Operator, PolyValue> filterOperationPair : filters.literalFilters.get( column ) ) {
AlgDataTypeField typeField = filterMap.get( column.getColumn().name );
for ( RequestColumn column : filters.getLiteralFilters().keySet() ) {
for ( Pair<Operator, PolyValue> filterOperationPair : filters.getLiteralFilters().get( column ) ) {
AlgDataTypeField typeField = filterMap.get( column.getColumn().getName() );
RexNode inputRef = rexBuilder.makeInputRef( baseNodeForFilters, typeField.getIndex() );
PolyValue param = filterOperationPair.right;
PolyValue param = filterOperationPair.getRight();
statement.getDataContext().addParameterValues( index, typeField.getType(), ImmutableList.of( param ) );
RexNode rightHandSide = rexBuilder.makeDynamicParam( typeField.getType(), index );
index++;
RexNode call = rexBuilder.makeCall( filterOperationPair.left, inputRef, rightHandSide );
RexNode call = rexBuilder.makeCall( filterOperationPair.getLeft(), inputRef, rightHandSide );
filterNodes.add( call );
}
}
Expand All @@ -365,11 +365,12 @@ List<RexNode> filters( Statement statement, AlgBuilder algBuilder, RexBuilder re
}


@VisibleForTesting
List<String> valuesColumnNames( List<List<Pair<RequestColumn, PolyValue>>> values ) {
List<String> valueColumnNames = new ArrayList<>();
List<Pair<RequestColumn, PolyValue>> rowsToInsert = values.get( 0 );
for ( Pair<RequestColumn, PolyValue> insertValue : rowsToInsert ) {
valueColumnNames.add( insertValue.left.getColumn().name );
valueColumnNames.add( insertValue.getLeft().getColumn().getName() );
}

return valueColumnNames;
Expand Down Expand Up @@ -417,6 +418,7 @@ List<List<RexLiteral>> valuesLiteral( AlgBuilder algBuilder, RexBuilder rexBuild
}


@VisibleForTesting
AlgBuilder initialProjection( AlgBuilder algBuilder, RexBuilder rexBuilder, List<RequestColumn> columns ) {
AlgNode baseNode = algBuilder.peek();
List<RexNode> inputRefs = new ArrayList<>();
Expand All @@ -433,6 +435,7 @@ AlgBuilder initialProjection( AlgBuilder algBuilder, RexBuilder rexBuilder, List
}


@VisibleForTesting
AlgBuilder finalProjection( AlgBuilder algBuilder, RexBuilder rexBuilder, List<RequestColumn> columns ) {
AlgNode baseNode = algBuilder.peek();
List<RexNode> inputRefs = new ArrayList<>();
Expand All @@ -451,6 +454,7 @@ AlgBuilder finalProjection( AlgBuilder algBuilder, RexBuilder rexBuilder, List<R
}


@VisibleForTesting
AlgBuilder aggregates( AlgBuilder algBuilder, RexBuilder rexBuilder, List<RequestColumn> requestColumns, List<RequestColumn> groupings ) {
AlgNode baseNodeForAggregation = algBuilder.peek();

Expand Down Expand Up @@ -504,6 +508,7 @@ AlgBuilder aggregates( AlgBuilder algBuilder, RexBuilder rexBuilder, List<Reques
}


@VisibleForTesting
AlgBuilder sort( AlgBuilder algBuilder, RexBuilder rexBuilder, List<Pair<RequestColumn, Boolean>> sorts, int limit, int offset ) {
if ( (sorts == null || sorts.isEmpty()) && (limit >= 0 || offset >= 0) ) {
algBuilder = algBuilder.limit( offset, limit );
Expand Down Expand Up @@ -538,6 +543,7 @@ private Transaction getTransaction() {
}


@VisibleForTesting
String executeAndTransformPolyAlg( AlgRoot algRoot, final Statement statement, final Context ctx ) {
RestResult restResult;
try {
Expand Down
Loading