Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ public static TryCatch<IQueryPipelineStage> MonadicCreate(
}
else if (queryInfo.HasLimit && (queryInfo.Limit.Value > 0))
{
top = (queryInfo.Offset ?? 0) + queryInfo.Limit.Value;
top = Math.Min((queryInfo.Offset ?? 0) + queryInfo.Limit.Value, int.MaxValue);
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,19 @@ FROM root
ORDER BY root["FamilyId"] ASC]]></SqlQuery>
</Output>
</Result>
<Result>
<Input>
<Description><![CDATA[OrderBy -> Skip]]></Description>
<Expression><![CDATA[query.OrderBy(f => f.FamilyId).Skip(1)]]></Expression>
</Input>
<Output>
<SqlQuery><![CDATA[
SELECT VALUE root
FROM root
ORDER BY root["FamilyId"] ASC
OFFSET 1 LIMIT 2147483647]]></SqlQuery>
</Output>
</Result>
<Result>
<Input>
<Description><![CDATA[Select -> order by]]></Description>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -949,6 +949,26 @@ public async Task LinqSelectEverythingWithoutQueryableTest()
Assert.AreEqual(2, (await this.FetchResults<ToDoActivity>(queryDefinition)).Count);
}

[TestMethod]
public async Task LinqSkipOrderBy()
{
IList<ToDoActivity> itemList = await ToDoActivity.CreateRandomItems(this.Container, 3, randomPartitionKey: true);
IQueryable<ToDoActivity> queryable = this.Container.GetItemLinqQueryable<ToDoActivity>()
.OrderBy(x => x.cost)
.Skip(1);

FeedIterator<ToDoActivity> feedIterator = queryable.ToFeedIterator();

int count = 0;
while (feedIterator.HasMoreResults)
{
FeedResponse<ToDoActivity> feedResponse = feedIterator.ReadNextAsync().Result;
count += feedResponse.Count;
}

Assert.AreEqual(2, count);
}

private class NumberLinqItem
{
public string id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1983,7 +1983,8 @@ orderby f.FamilyId
select f.FamilyId));
inputs.Add(new LinqTestInput("OrderBy -> Select", b => getQuery(b).OrderBy(f => f.FamilyId).Select(f => f.FamilyId)));
inputs.Add(new LinqTestInput("OrderBy -> Select -> Take", b => getQuery(b).OrderBy(f => f.FamilyId).Select(f => f.FamilyId).Take(10)));
inputs.Add(new LinqTestInput("OrderBy -> Select -> Select", b => getQuery(b).OrderBy(f => f.FamilyId).Select(f => f.FamilyId).Select(x => x)));
inputs.Add(new LinqTestInput("OrderBy -> Select -> Select", b => getQuery(b).OrderBy(f => f.FamilyId).Select(f => f.FamilyId).Select(x => x)));
inputs.Add(new LinqTestInput("OrderBy -> Skip", b => getQuery(b).OrderBy(f => f.FamilyId).Skip(1)));

// Descending
inputs.Add(new LinqTestInput("Select -> order by", b => getQuery(b).Select(family => family.FamilyId).OrderByDescending(id => id)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ namespace Microsoft.Azure.Cosmos.EmulatorTests.Query
using System.Collections.ObjectModel;
using System.Linq;
using System.Threading.Tasks;
using Azure;
using Microsoft.Azure.Cosmos.CosmosElements;
using Microsoft.Azure.Cosmos.CosmosElements.Numbers;
using Microsoft.Azure.Cosmos.Json;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@
using Microsoft.Azure.Cosmos.Query.Core;
using Microsoft.Azure.Cosmos.Query.Core.QueryPlan;
using Microsoft.Azure.Documents;
using Microsoft.Azure.Cosmos.Diagnostics;
using Microsoft.Azure.Cosmos.Query.Core.Monads;
using Microsoft.Azure.Cosmos.Query.Core.Pipeline;
using Microsoft.Azure.Cosmos.Tracing;
using Microsoft.Azure.Cosmos.Query.Core.Pipeline.Pagination;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ async Task ImplementationAsync(Container container, IReadOnlyList<CosmosObject>
("QueryInfo.Offset", "SELECT c.name FROM c OFFSET 2147483648 LIMIT 10"),
("QueryInfo.Limit", "SELECT c.name FROM c OFFSET 10 LIMIT 2147483648"),
("QueryInfo.Top", "SELECT TOP 2147483648 c.name FROM c"),
("QueryInfo.Offset", "SELECT c.name FROM c ORDER BY c.name OFFSET 2147483648 LIMIT 10"),
("QueryInfo.Limit", "SELECT c.name FROM c ORDER BY c.name OFFSET 10 LIMIT 2147483648")
})
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,10 @@
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.Cosmos.CosmosElements;
using Microsoft.Azure.Cosmos.Query.Core.Metrics;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Azure.Documents;
using Newtonsoft.Json;
using Microsoft.Azure.Cosmos.SDK.EmulatorTests.QueryOracle;

[TestClass]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,10 @@ namespace Microsoft.Azure.Cosmos.EmulatorTests.Query
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.Cosmos.CosmosElements;
using Microsoft.Azure.Cosmos.Query.Core.Metrics;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Azure.Documents;
using Newtonsoft.Json;
using Microsoft.Azure.Cosmos.SDK.EmulatorTests.QueryOracle;

[TestClass]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,11 @@ namespace Microsoft.Azure.Cosmos.EmulatorTests.Query
using System.Collections.ObjectModel;
using System.Linq;
using System.Net;
using System.Runtime.CompilerServices;
using System.Runtime.ExceptionServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Azure.Cosmos.CosmosElements;
using Microsoft.Azure.Cosmos.Query.Core.Pipeline;
using Microsoft.Azure.Cosmos.Routing;
using Microsoft.Azure.Cosmos.SDK.EmulatorTests;
using Microsoft.Azure.Cosmos.Tracing;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ namespace Microsoft.Azure.Cosmos.EmulatorTests.Query
using Microsoft.Azure.Cosmos.CosmosElements;
using Microsoft.Azure.Cosmos.CosmosElements.Numbers;
using Microsoft.Azure.Cosmos.Query.Core;
using Microsoft.Azure.Cosmos.Query.Core.QueryPlan;
using Microsoft.Azure.Cosmos.SDK.EmulatorTests.QueryOracle;
using Microsoft.Azure.Cosmos.Tracing;
using Microsoft.Azure.Documents;
Expand Down
Loading