public override SqlObject VisitOffset_count([NotNull] sqlParser.Offset_countContext context) { Contract.Requires(context != null); SqlOffsetSpec sqlOffsetSpec; if (context.NUMERIC_LITERAL() != null) { sqlOffsetSpec = SqlOffsetSpec.Create( SqlNumberLiteral.Create( CstToAstVisitor.GetNumber64ValueFromNode( context.NUMERIC_LITERAL()))); } else if (context.PARAMETER() != null) { sqlOffsetSpec = SqlOffsetSpec.Create( SqlParameter.Create( context.PARAMETER().GetText())); } else { throw new NotImplementedException(); } return(sqlOffsetSpec); }
public QueryUnderConstruction AddOffsetSpec(SqlOffsetSpec offsetSpec, TranslationContext context) { QueryUnderConstruction result = context.PackageCurrentQueryIfNeccessary(); if (result.offsetSpec != null) { // Skip(A).Skip(B) => Skip(A + B) result.offsetSpec = SqlOffsetSpec.Create(result.offsetSpec.Offset + offsetSpec.Offset); } else { result.offsetSpec = offsetSpec; } return(result); }
public override SqlObject VisitOffset_limit_clause([NotNull] sqlParser.Offset_limit_clauseContext context) { Contract.Requires(context != null); SqlOffsetSpec sqlOffsetSpec = SqlOffsetSpec.Create( SqlNumberLiteral.Create( CstToAstVisitor.GetNumber64ValueFromNode( context.offset_count().NUMERIC_LITERAL()))); SqlLimitSpec sqlLimitSpec = SqlLimitSpec.Create( SqlNumberLiteral.Create( CstToAstVisitor.GetNumber64ValueFromNode( context.limit_count().NUMERIC_LITERAL()))); return(SqlOffsetLimitClause.Create(sqlOffsetSpec, sqlLimitSpec)); }
public QueryUnderConstruction AddOffsetSpec(SqlOffsetSpec offsetSpec, TranslationContext context) { QueryUnderConstruction result = context.PackageCurrentQueryIfNeccessary(); if (result.offsetSpec != null) { // Skip(A).Skip(B) => Skip(A + B) long offsetA = QueryUnderConstruction.GetOffsetCount(result.offsetSpec); long offsetB = QueryUnderConstruction.GetOffsetCount(offsetSpec); result.offsetSpec = SqlOffsetSpec.Create(SqlNumberLiteral.Create(offsetA + offsetB)); } else { result.offsetSpec = offsetSpec; } return(result); }
public override SqlObject Visit(SqlOffsetSpec sqlObject) { return(SqlOffsetSpec.Create(SqlNumberLiteral.Create(0))); }