private void HandleSelectStatementLimitOffset(SelectStatement selectStatement, KoraliumParser.Select_statementContext context) { if (context.limit != null || context.offset != null) { OffsetLimitClause offsetLimitClause = new OffsetLimitClause(); if (context.limit != null) { var limit = Visit(context.limit) as ScalarExpression; if (limit == null) { throw new SqlParserException("Could not parse limit"); } offsetLimitClause.Limit = limit; } if (context.offset != null) { var offset = Visit(context.offset) as ScalarExpression; if (offset == null) { throw new SqlParserException("Could not parse offset"); } offsetLimitClause.Offset = offset; } selectStatement.OffsetLimitClause = offsetLimitClause; } }
public void TestOffsetLimitClauseAccept() { Mock <KoraliumSqlVisitor> mock = new Mock <KoraliumSqlVisitor>(); OffsetLimitClause offsetLimitClause = new OffsetLimitClause(); offsetLimitClause.Accept(mock.Object); mock.Verify(x => x.VisitOffsetLimitClause(offsetLimitClause)); }
public override void VisitOffsetLimitClause(OffsetLimitClause offsetLimitClause) { if (offsetLimitClause.Offset != null) { VisitOffsetExpression(offsetLimitClause.Offset); } if (offsetLimitClause.Limit != null) { VisitFetchExpression(offsetLimitClause.Limit); } }
public void TestOffsetNoLimit() { var actual = new OffsetLimitClause() { Offset = new IntegerLiteral() { Value = 17 } }.Print(); var expected = "OFFSET 17"; actual.Should().Be(expected); }
public void TestLimitNoOffset() { var actual = new OffsetLimitClause() { Limit = new IntegerLiteral() { Value = 17 } }.Print(); var expected = "LIMIT 17"; actual.Should().Be(expected); }
public static OffsetStage GetOffsetStage(IQueryStage previousStage, OffsetLimitClause offsetClause, VisitorMetadata visitorMetadata) { OffsetVisitor offsetVisitor = new OffsetVisitor(visitorMetadata); offsetClause.Accept(offsetVisitor); return(new OffsetStage( previousStage.TypeInfo, previousStage.ParameterExpression, previousStage.CurrentType, previousStage.FromAliases, offsetVisitor.OffsetCount, offsetVisitor.TakeCount )); }
public void TestVisitOffsetLimitClause() { Mock <ScalarExpression> limitMock = new Mock <ScalarExpression>(); Mock <ScalarExpression> offsetMock = new Mock <ScalarExpression>(); OffsetLimitClause offsetLimitClause = new OffsetLimitClause() { Limit = limitMock.Object, Offset = offsetMock.Object }; KoraliumSqlVisitor koraliumSqlVisitor = new KoraliumSqlVisitor(); koraliumSqlVisitor.Visit(offsetLimitClause); limitMock.Verify(x => x.Accept(koraliumSqlVisitor)); offsetMock.Verify(x => x.Accept(koraliumSqlVisitor)); }
public void TestCloneOffsetLimitClause() { OffsetLimitClause offsetLimitClause = new OffsetLimitClause() { Limit = new IntegerLiteral() { Value = 3 }, Offset = new IntegerLiteral() { Value = 17 } }; var clone = offsetLimitClause.Clone() as OffsetLimitClause; Assert.AreEqual(offsetLimitClause, clone); Assert.IsFalse(ReferenceEquals(offsetLimitClause, clone)); Assert.IsFalse(ReferenceEquals(offsetLimitClause.Limit, clone.Limit)); Assert.IsFalse(ReferenceEquals(offsetLimitClause.Offset, clone.Offset)); }
public virtual void VisitOffsetLimitClause(OffsetLimitClause offsetLimitClause) { Visit(offsetLimitClause.Limit); Visit(offsetLimitClause.Offset); //DONE }
public void TestOffsetLimitClauseEquals() { OffsetLimitClause first = new OffsetLimitClause() { Limit = new IntegerLiteral() { Value = 3 }, Offset = new IntegerLiteral() { Value = 17 } }; OffsetLimitClause firstClone = new OffsetLimitClause() { Limit = new IntegerLiteral() { Value = 3 }, Offset = new IntegerLiteral() { Value = 17 } }; OffsetLimitClause second = new OffsetLimitClause() { Limit = new IntegerLiteral() { Value = 4 }, Offset = new IntegerLiteral() { Value = 17 } }; OffsetLimitClause third = new OffsetLimitClause() { Limit = new IntegerLiteral() { Value = 3 }, Offset = new IntegerLiteral() { Value = 18 } }; //Equals Assert.IsTrue(Equals(first, firstClone)); Assert.IsFalse(Equals(first, null)); Assert.IsFalse(Equals(first, second)); Assert.IsFalse(Equals(first, third)); Assert.IsFalse(Equals(first, "other type")); //Hash code Assert.AreEqual(first.GetHashCode(), firstClone.GetHashCode()); Assert.AreNotEqual(first.GetHashCode(), second.GetHashCode()); Assert.AreNotEqual(first.GetHashCode(), third.GetHashCode()); }