Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
1677d6c
Avoid checking for null on non-nullable property for projection
glen-84 Nov 17, 2023
df81c12
Merge branch 'main' into ga/ef-complex-types
glen-84 Dec 15, 2023
30d0f4e
Merge branch 'main' into ga/ef-complex-types
glen-84 Jan 23, 2024
91d6356
Use collection expression
glen-84 Jan 23, 2024
c5ace90
Merge branch 'main' into ga/ef-complex-types
glen-84 Sep 20, 2024
0653d59
Merge branch 'main' into ga/ef-complex-types
glen-84 Sep 21, 2024
00894fe
Merge branch 'main' into ga/ef-complex-types
glen-84 Oct 1, 2024
8c65711
Updated snapshots
glen-84 Oct 1, 2024
0be65e7
Removed preprocessor directive
glen-84 Oct 1, 2024
88577d7
Merge branch 'main' into ga/ef-complex-types
glen-84 May 17, 2025
2a5d875
Made the _nullabilityInfoContext field static
glen-84 May 17, 2025
d03cf61
Merge branch 'main' into ga/ef-complex-types
glen-84 Feb 17, 2026
c4ffd86
Fixed analyzer errors
glen-84 Feb 17, 2026
41b5b05
Updated snapshots
glen-84 Feb 17, 2026
7b8d5a8
Merge branch 'main' into ga/ef-complex-types
glen-84 Feb 27, 2026
973f000
Fix field name
glen-84 Feb 27, 2026
769b4a1
Remove TODO comment
glen-84 Feb 27, 2026
f817bc4
Address Copilot feedback
glen-84 Mar 2, 2026
c34ef4c
Make NullabilityInfoContext thread-safe
glen-84 Mar 2, 2026
dc80427
Address Copilot feedback
glen-84 Mar 2, 2026
b4c292e
Merge branch 'main' into ga/ef-complex-types
glen-84 Mar 2, 2026
b54f78e
Moved NullabilityInfoContext to projection context
michaelstaib Mar 2, 2026
fb166cd
Remove unnecessary value type handling
glen-84 Mar 2, 2026
a017b0d
Merge branch 'main' into ga/ef-complex-types
glen-84 Mar 2, 2026
1c4d7b6
Merge branch 'main' into ga/ef-complex-types
glen-84 Mar 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,10 @@ public override bool TryHandleLeave(
return true;
}

var nullabilityInfo = context.NullabilityInfoContext.Create(propertyInfo);
var memberInit = queryableScope.CreateMemberInit();

if (context.InMemory)
if (context.InMemory && nullabilityInfo.ReadState == NullabilityState.Nullable)
{
parentScope.Level
.Peek()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Linq.Expressions;
using System.Reflection;
using HotChocolate.Resolvers;
using HotChocolate.Types;

Expand All @@ -17,4 +18,6 @@ public QueryableProjectionContext(
}

public bool InMemory { get; }

internal NullabilityInfoContext NullabilityInfoContext { get; } = new();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
using HotChocolate.Execution;
using Microsoft.EntityFrameworkCore;

namespace HotChocolate.Data.Projections;

public class QueryableProjectionComplexTypeTests
{
private static readonly Foo[] s_fooEntities =
[
new() { Bar = new Bar { Baz = "testatest" } },
new() { Bar = new Bar { Baz = "testbtest" } }
];

private readonly SchemaCache _cache = new SchemaCache();

[Fact]
public async Task Create_Complex_Type()
{
// arrange
var tester = _cache.CreateSchema(s_fooEntities, OnModelCreating);

// act
var res1 = await tester.ExecuteAsync(
OperationRequestBuilder.New()
.SetDocument(
"""
{
root {
bar {
baz
}
}
}
""")
.Build());

// assert
await Snapshot
.Create()
.AddResult(res1)
.MatchAsync();
}
Comment thread
glen-84 marked this conversation as resolved.

private static void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Foo>().ComplexProperty(f => f.Bar);
}

public class Foo
{
public int Id { get; set; }

public Bar Bar { get; set; } = null!;
}

public record Bar
{
public string Baz { get; set; } = null!;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
Result:
---------------
{
"data": {
"root": [
{
"bar": {
"baz": "testatest"
}
},
{
"bar": {
"baz": "testbtest"
}
}
]
}
}
---------------

SQL:
---------------
SELECT "d"."Bar_Baz"
FROM "Data" AS "d"
---------------
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ SQL:
---------------
.param set @p 'a'

SELECT 1, "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
WHERE "f0"."BarString" = @p
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ SQL:
---------------
.param set @__p_0 'a'

SELECT 1, "d"."Id", "f"."Id", "t"."c", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
SELECT "d"."Id", "f"."Id", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
WHERE "f0"."BarString" = @__p_0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ SQL:
---------------
.param set @__p_0 'a'

SELECT 1, "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
WHERE "f0"."BarString" = @__p_0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ SQL:
---------------
.param set @p 'a'

SELECT 1, "f"."BarString", "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "f"."BarString", "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
WHERE "f0"."BarString" = @p
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ SQL:
---------------
.param set @__p_0 'a'

SELECT 1, "f"."BarString", "d"."Id", "f"."Id", "t"."c", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
SELECT "f"."BarString", "d"."Id", "f"."Id", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
WHERE "f0"."BarString" = @__p_0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ SQL:
---------------
.param set @__p_0 'a'

SELECT 1, "f"."BarString", "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "f"."BarString", "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
WHERE "f0"."BarString" = @__p_0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ Result:

SQL:
---------------
SELECT 1, "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "s" ON "f"."Id" = "s"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ Result:

SQL:
---------------
SELECT 1, "d"."Id", "f"."Id", "t"."c", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
SELECT "d"."Id", "f"."Id", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "t" ON "f"."Id" = "t"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ Result:

SQL:
---------------
SELECT 1, "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "s" ON "f"."Id" = "s"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ Result:

SQL:
---------------
SELECT 1, "f"."BarString", "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "f"."BarString", "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "s" ON "f"."Id" = "s"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ Result:

SQL:
---------------
SELECT 1, "f"."BarString", "d"."Id", "f"."Id", "t"."c", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
SELECT "f"."BarString", "d"."Id", "f"."Id", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "t" ON "f"."Id" = "t"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ Result:

SQL:
---------------
SELECT 1, "f"."BarString", "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "f"."BarString", "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "s" ON "f"."Id" = "s"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ Result:

SQL:
---------------
SELECT 1, "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "s" ON "f"."Id" = "s"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ Result:

SQL:
---------------
SELECT 1, "d"."Id", "f"."Id", "t"."c", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
SELECT "d"."Id", "f"."Id", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "t" ON "f"."Id" = "t"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ Result:

SQL:
---------------
SELECT 1, "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "s" ON "f"."Id" = "s"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ Result:

SQL:
---------------
SELECT 1, "f"."BarString", "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "f"."BarString", "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "s" ON "f"."Id" = "s"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ Result:

SQL:
---------------
SELECT 1, "f"."BarString", "d"."Id", "f"."Id", "t"."c", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
SELECT "f"."BarString", "d"."Id", "f"."Id", "t"."BarString", "t"."BarShort", "t"."Id", "t"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "t" ON "f"."Id" = "t"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ Result:

SQL:
---------------
SELECT 1, "f"."BarString", "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "f"."BarString", "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "s" ON "f"."Id" = "s"."FooId"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Result:

SQL:
---------------
SELECT 1, "a"."d" = 'bar', "a"."Name", "a"."BarProp", "a"."d" = 'foo', "a"."FooProp"
SELECT "a"."d" = 'bar', "a"."Name", "a"."BarProp", "a"."d" = 'foo', "a"."FooProp"
FROM "Data" AS "d"
INNER JOIN "AbstractType" AS "a" ON "d"."NestedId" = "a"."Id"
---------------
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Result:

SQL:
---------------
SELECT 1, "f"."BarString"
SELECT "f"."BarString"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
---------------
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ Result:

SQL:
---------------
SELECT 1, "d"."Id", "f"."Id", "s"."c", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
SELECT "d"."Id", "f"."Id", "s"."BarString", "s"."BarShort", "s"."Id", "s"."Id0"
FROM "Data" AS "d"
INNER JOIN "Foo" AS "f" ON "d"."FooId" = "f"."Id"
LEFT JOIN (
SELECT 1 AS "c", "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
SELECT "f0"."BarString", "f0"."BarShort", "b"."Id", "f0"."Id" AS "Id0", "b"."FooId"
FROM "BarDeep" AS "b"
INNER JOIN "FooDeep" AS "f0" ON "b"."FooId1" = "f0"."Id"
) AS "s" ON "f"."Id" = "s"."FooId"
Expand Down
Loading
Loading