Skip to content

Commit 0de3590

Browse files
committed
Feedback.
1 parent bc936c5 commit 0de3590

File tree

1 file changed

+36
-39
lines changed

1 file changed

+36
-39
lines changed

src/EFCore.Sqlite.Core/Query/Internal/SqliteQueryableMethodTranslatingExpressionVisitor.cs

Lines changed: 36 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -470,54 +470,51 @@ protected override ShapedQueryExpression TransformJsonQueryToTable(JsonQueryExpr
470470
Expression index,
471471
bool returnDefault)
472472
{
473-
if (!returnDefault
474-
&& source.QueryExpression is SelectExpression
473+
if (!returnDefault)
474+
{
475+
switch (source.QueryExpression)
475476
{
476-
Tables: [ValuesExpression { ValuesParameter: { } valuesParameter }],
477-
Predicate: null,
478-
GroupBy: [],
479-
Having: null,
480-
IsDistinct: false,
477+
// index on parameter using a column
478+
// translate via JSON because SQLite can't use columns in OFFSET
479+
case SelectExpression
480+
{
481+
Tables: [ValuesExpression { ValuesParameter: { } valuesParameter }],
482+
Predicate: null,
483+
GroupBy: [],
484+
Having: null,
485+
IsDistinct: false,
481486
#pragma warning disable EF1001
482-
Orderings: [{ Expression: ColumnExpression { Name: ValuesOrderingColumnName }, IsAscending: true }],
487+
Orderings: [{ Expression: ColumnExpression { Name: ValuesOrderingColumnName }, IsAscending: true }],
483488
#pragma warning restore EF1001
484-
Limit: null,
485-
Offset: null
486-
} selectExpression1
487-
&& TranslateExpression(index) is { } translatedIndex1)
488-
{
489-
// index on parameter using a column
490-
// translate via JSON because SQLite can't use columns in OFFSET
491-
if (TryTranslate(selectExpression1, valuesParameter, translatedIndex1, out var result))
492-
{
493-
return result;
494-
}
495-
}
496-
else if (!returnDefault
497-
&& source.QueryExpression is SelectExpression
498-
{
499-
Tables:
489+
Limit: null,
490+
Offset: null
491+
} selectExpression
492+
when TranslateExpression(index) is { } translatedIndex
493+
&& TryTranslate(selectExpression, valuesParameter, translatedIndex, out var result):
494+
return result;
495+
496+
// Index on JSON array
497+
case SelectExpression
498+
{
499+
Tables:
500500
[
501501
TableValuedFunctionExpression
502502
{
503503
Name: "json_each", Schema: null, IsBuiltIn: true, Arguments: [var jsonArrayColumn]
504504
} jsonEachExpression
505505
],
506-
Predicate: null,
507-
GroupBy: [],
508-
Having: null,
509-
IsDistinct: false,
510-
Orderings: [{ Expression: ColumnExpression { Name: JsonEachKeyColumnName } orderingColumn, IsAscending: true }],
511-
Limit: null,
512-
Offset: null
513-
} selectExpression2
514-
&& orderingColumn.TableAlias == jsonEachExpression.Alias
515-
&& TranslateExpression(index) is { } translatedIndex2)
516-
{
517-
// Index on JSON array
518-
if (TryTranslate(selectExpression2, jsonArrayColumn, translatedIndex2, out var result))
519-
{
520-
return result;
506+
Predicate: null,
507+
GroupBy: [],
508+
Having: null,
509+
IsDistinct: false,
510+
Orderings: [{ Expression: ColumnExpression { Name: JsonEachKeyColumnName } orderingColumn, IsAscending: true }],
511+
Limit: null,
512+
Offset: null
513+
} selectExpression
514+
when orderingColumn.TableAlias == jsonEachExpression.Alias
515+
&& TranslateExpression(index) is { } translatedIndex
516+
&& TryTranslate(selectExpression, jsonArrayColumn, translatedIndex, out var result):
517+
return result;
521518
}
522519
}
523520

0 commit comments

Comments
 (0)