Search in sources :

Example 6 with BoundarySpec

use of com.sap.hadoop.windowing.query2.specification.WindowFrameSpec.BoundarySpec in project SQLWindowing by hbutani.

the class QSpecBuilder2 method rowsboundary.

// $ANTLR end window_range_expression
// $ANTLR start rowsboundary
// QSpecBuilder2.g:186:1: rowsboundary returns [BoundarySpec bs] : ( ^( PRECEDING UNBOUNDED ) | ^( FOLLOWING UNBOUNDED ) | CURRENT | ^( PRECEDING n= Number ) | ^( FOLLOWING n= Number ) );
public final BoundarySpec rowsboundary() throws RecognitionException {
    BoundarySpec bs = null;
    CommonTree n = null;
    RangeBoundarySpec rbs = new RangeBoundarySpec();
    bs = rbs;
    try {
        // QSpecBuilder2.g:191:3: ( ^( PRECEDING UNBOUNDED ) | ^( FOLLOWING UNBOUNDED ) | CURRENT | ^( PRECEDING n= Number ) | ^( FOLLOWING n= Number ) )
        int alt37 = 5;
        switch(input.LA(1)) {
            case PRECEDING:
                {
                    int LA37_1 = input.LA(2);
                    if ((LA37_1 == DOWN)) {
                        int LA37_4 = input.LA(3);
                        if ((LA37_4 == Number)) {
                            alt37 = 4;
                        } else if ((LA37_4 == UNBOUNDED)) {
                            alt37 = 1;
                        } else {
                            if (backtracking > 0) {
                                failed = true;
                                return bs;
                            }
                            NoViableAltException nvae = new NoViableAltException("186:1: rowsboundary returns [BoundarySpec bs] : ( ^( PRECEDING UNBOUNDED ) | ^( FOLLOWING UNBOUNDED ) | CURRENT | ^( PRECEDING n= Number ) | ^( FOLLOWING n= Number ) );", 37, 4, input);
                            throw nvae;
                        }
                    } else {
                        if (backtracking > 0) {
                            failed = true;
                            return bs;
                        }
                        NoViableAltException nvae = new NoViableAltException("186:1: rowsboundary returns [BoundarySpec bs] : ( ^( PRECEDING UNBOUNDED ) | ^( FOLLOWING UNBOUNDED ) | CURRENT | ^( PRECEDING n= Number ) | ^( FOLLOWING n= Number ) );", 37, 1, input);
                        throw nvae;
                    }
                }
                break;
            case FOLLOWING:
                {
                    int LA37_2 = input.LA(2);
                    if ((LA37_2 == DOWN)) {
                        int LA37_5 = input.LA(3);
                        if ((LA37_5 == Number)) {
                            alt37 = 5;
                        } else if ((LA37_5 == UNBOUNDED)) {
                            alt37 = 2;
                        } else {
                            if (backtracking > 0) {
                                failed = true;
                                return bs;
                            }
                            NoViableAltException nvae = new NoViableAltException("186:1: rowsboundary returns [BoundarySpec bs] : ( ^( PRECEDING UNBOUNDED ) | ^( FOLLOWING UNBOUNDED ) | CURRENT | ^( PRECEDING n= Number ) | ^( FOLLOWING n= Number ) );", 37, 5, input);
                            throw nvae;
                        }
                    } else {
                        if (backtracking > 0) {
                            failed = true;
                            return bs;
                        }
                        NoViableAltException nvae = new NoViableAltException("186:1: rowsboundary returns [BoundarySpec bs] : ( ^( PRECEDING UNBOUNDED ) | ^( FOLLOWING UNBOUNDED ) | CURRENT | ^( PRECEDING n= Number ) | ^( FOLLOWING n= Number ) );", 37, 2, input);
                        throw nvae;
                    }
                }
                break;
            case CURRENT:
                {
                    alt37 = 3;
                }
                break;
            default:
                if (backtracking > 0) {
                    failed = true;
                    return bs;
                }
                NoViableAltException nvae = new NoViableAltException("186:1: rowsboundary returns [BoundarySpec bs] : ( ^( PRECEDING UNBOUNDED ) | ^( FOLLOWING UNBOUNDED ) | CURRENT | ^( PRECEDING n= Number ) | ^( FOLLOWING n= Number ) );", 37, 0, input);
                throw nvae;
        }
        switch(alt37) {
            case 1:
                // QSpecBuilder2.g:192:3: ^( PRECEDING UNBOUNDED )
                {
                    match(input, PRECEDING, FOLLOW_PRECEDING_in_rowsboundary870);
                    if (failed)
                        return bs;
                    match(input, Token.DOWN, null);
                    if (failed)
                        return bs;
                    match(input, UNBOUNDED, FOLLOW_UNBOUNDED_in_rowsboundary872);
                    if (failed)
                        return bs;
                    match(input, Token.UP, null);
                    if (failed)
                        return bs;
                    if (backtracking == 0) {
                        rbs.setDirection(Direction.PRECEDING);
                        rbs.setAmt(BoundarySpec.UNBOUNDED_AMOUNT);
                    }
                }
                break;
            case 2:
                // QSpecBuilder2.g:193:3: ^( FOLLOWING UNBOUNDED )
                {
                    match(input, FOLLOWING, FOLLOW_FOLLOWING_in_rowsboundary883);
                    if (failed)
                        return bs;
                    match(input, Token.DOWN, null);
                    if (failed)
                        return bs;
                    match(input, UNBOUNDED, FOLLOW_UNBOUNDED_in_rowsboundary885);
                    if (failed)
                        return bs;
                    match(input, Token.UP, null);
                    if (failed)
                        return bs;
                    if (backtracking == 0) {
                        rbs.setDirection(Direction.FOLLOWING);
                        rbs.setAmt(BoundarySpec.UNBOUNDED_AMOUNT);
                    }
                }
                break;
            case 3:
                // QSpecBuilder2.g:194:3: CURRENT
                {
                    match(input, CURRENT, FOLLOW_CURRENT_in_rowsboundary894);
                    if (failed)
                        return bs;
                    if (backtracking == 0) {
                        bs = new CurrentRowSpec();
                    }
                }
                break;
            case 4:
                // QSpecBuilder2.g:195:3: ^( PRECEDING n= Number )
                {
                    match(input, PRECEDING, FOLLOW_PRECEDING_in_rowsboundary903);
                    if (failed)
                        return bs;
                    match(input, Token.DOWN, null);
                    if (failed)
                        return bs;
                    n = (CommonTree) input.LT(1);
                    match(input, Number, FOLLOW_Number_in_rowsboundary907);
                    if (failed)
                        return bs;
                    match(input, Token.UP, null);
                    if (failed)
                        return bs;
                    if (backtracking == 0) {
                        rbs.setDirection(Direction.PRECEDING);
                        rbs.setAmt(Integer.parseInt(n.getText()));
                    }
                }
                break;
            case 5:
                // QSpecBuilder2.g:196:3: ^( FOLLOWING n= Number )
                {
                    match(input, FOLLOWING, FOLLOW_FOLLOWING_in_rowsboundary917);
                    if (failed)
                        return bs;
                    match(input, Token.DOWN, null);
                    if (failed)
                        return bs;
                    n = (CommonTree) input.LT(1);
                    match(input, Number, FOLLOW_Number_in_rowsboundary921);
                    if (failed)
                        return bs;
                    match(input, Token.UP, null);
                    if (failed)
                        return bs;
                    if (backtracking == 0) {
                        rbs.setDirection(Direction.FOLLOWING);
                        rbs.setAmt(Integer.parseInt(n.getText()));
                    }
                }
                break;
        }
    } catch (RecognitionException re) {
        reportError(re);
        recover(input, re);
    } finally {
    }
    return bs;
}
Also used : CurrentRowSpec(com.sap.hadoop.windowing.query2.specification.WindowFrameSpec.CurrentRowSpec) BoundarySpec(com.sap.hadoop.windowing.query2.specification.WindowFrameSpec.BoundarySpec) ValueBoundarySpec(com.sap.hadoop.windowing.query2.specification.WindowFrameSpec.ValueBoundarySpec) RangeBoundarySpec(com.sap.hadoop.windowing.query2.specification.WindowFrameSpec.RangeBoundarySpec) RangeBoundarySpec(com.sap.hadoop.windowing.query2.specification.WindowFrameSpec.RangeBoundarySpec)

Aggregations

RangeBoundarySpec (com.sap.hadoop.windowing.query2.specification.WindowFrameSpec.RangeBoundarySpec)6 ValueBoundarySpec (com.sap.hadoop.windowing.query2.specification.WindowFrameSpec.ValueBoundarySpec)6 BoundarySpec (com.sap.hadoop.windowing.query2.specification.WindowFrameSpec.BoundarySpec)5 CurrentRowSpec (com.sap.hadoop.windowing.query2.specification.WindowFrameSpec.CurrentRowSpec)3 WindowingException (com.sap.hadoop.windowing.WindowingException)2 WindowFrameDef (com.sap.hadoop.windowing.query2.definition.WindowFrameDef)1 CurrentRowDef (com.sap.hadoop.windowing.query2.definition.WindowFrameDef.CurrentRowDef)1 RangeBoundaryDef (com.sap.hadoop.windowing.query2.definition.WindowFrameDef.RangeBoundaryDef)1 ValueBoundaryDef (com.sap.hadoop.windowing.query2.definition.WindowFrameDef.ValueBoundaryDef)1 ExprNodeEvaluator (org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator)1 ExprNodeDesc (org.apache.hadoop.hive.ql.plan.ExprNodeDesc)1 ObjectInspector (org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector)1