Commit be7d9acc authored by terrymanu's avatar terrymanu
Browse files

skip top for sqlserver

parent 2fab4395
Loading
Loading
Loading
Loading
+0 −36
Original line number Diff line number Diff line
/*
 * Copyright 1999-2015 dangdang.com.
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * </p>
 */

package com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit;

import com.dangdang.ddframe.rdb.sharding.parsing.parser.expression.SQLExpression;
import lombok.Getter;
import lombok.Setter;

/**
 * SQLServer分页对象.
 * 
 * @author zhangliang
 */
@Getter
@Setter
public final class Top implements SQLExpression {
    
    private SQLExpression expr;
    
    private boolean percent;
}
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ public final class SQLServerDeleteParser extends AbstractDeleteParser {
    
    @Override
    protected void skipBetweenDeleteAndTable() {
        ((SQLServerParser) getSqlParser()).parseTop();
        ((SQLServerParser) getSqlParser()).skipTop();
        ((SQLServerParser) getSqlParser()).skipOutput();
        getSqlParser().skipIfEqual(DefaultKeyword.FROM);
    }
+5 −27
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.Limit;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.OffsetLimit;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.RowCountLimit;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.Top;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingException;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingUnsupportedException;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.select.SelectStatement;
@@ -44,32 +43,11 @@ public final class SQLServerParser extends SQLParser {
        getLexer().nextToken();
    }
    
    public Top parseTop() {
        // TODO
//        if (getLexer().equalAny(SQLServerKeyword.TOP)) {
//            SQLServerTop top = new SQLServerTop();
//            getLexer().nextToken();
//            
//            boolean paren = false;
//            if (getLexer().equalAny(Symbol.LEFT_PAREN)) {
//                paren = true;
//                getLexer().nextToken();
//            }
//            
//            top.setExpr(primary());
//            
//            if (paren) {
//                getLexer().accept(Symbol.RIGHT_PAREN);
//            }
//            
//            if (getLexer().equalAny(SQLServerKeyword.PERCENT)) {
//                getLexer().nextToken();
//                top.setPercent(true);
//            }
//            
//            return top;
//        }
        return null;
    public void skipTop() {
        if (skipIfEqual(SQLServerKeyword.TOP)) {
            parseExpression();
            skipIfEqual(SQLServerKeyword.PERCENT);
        }
    }
    
    protected void skipOutput() {
+1 −2
Original line number Diff line number Diff line
@@ -45,8 +45,7 @@ public class SQLServerSelectParser extends AbstractSelectParser {
        if (getSqlParser().skipIfEqual(DefaultKeyword.SELECT)) {
            parseDistinct();
            if (getSqlParser().equalAny(SQLServerKeyword.TOP)) {
                // TODO save topContext
                ((SQLServerParser) getSqlParser()).parseTop();
                ((SQLServerParser) getSqlParser()).skipTop();
            }
            parseSelectList();
        }
+1 −1
Original line number Diff line number Diff line
@@ -33,6 +33,6 @@ public final class SQLServerUpdateParser extends AbstractUpdateParser {
    
    @Override
    protected void skipBetweenUpdateAndTable() {
        ((SQLServerParser) getSqlParser()).parseTop();
        ((SQLServerParser) getSqlParser()).skipTop();
    }
}