Skip to content

Commit

Permalink
Make Alias non-nullable for selected table-like expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
roji committed Nov 22, 2020
1 parent 1e0ae00 commit 947e2c3
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 13 deletions.
6 changes: 0 additions & 6 deletions src/EFCore.Relational/Query/QuerySqlGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -303,8 +303,6 @@ protected override Expression VisitSqlFunction(SqlFunctionExpression sqlFunction
protected override Expression VisitTableValuedFunction(TableValuedFunctionExpression tableValuedFunctionExpression)
{
Check.NotNull(tableValuedFunctionExpression, nameof(tableValuedFunctionExpression));
Check.DebugAssert(tableValuedFunctionExpression.Alias is not null,
$"{nameof(tableValuedFunctionExpression.Alias)} is null on {nameof(tableValuedFunctionExpression)}");

if (!string.IsNullOrEmpty(tableValuedFunctionExpression.StoreFunction.Schema))
{
Expand Down Expand Up @@ -415,8 +413,6 @@ private void GenerateFromSql(FromSqlExpression fromSqlExpression)
protected override Expression VisitFromSql(FromSqlExpression fromSqlExpression)
{
Check.NotNull(fromSqlExpression, nameof(fromSqlExpression));
Check.DebugAssert(fromSqlExpression.Alias is not null,
$"{nameof(fromSqlExpression.Alias)} is null on {nameof(fromSqlExpression)}");

_relationalCommandBuilder.AppendLine("(");

Expand Down Expand Up @@ -1101,8 +1097,6 @@ protected virtual void GenerateSetOperationOperand([NotNull] SetOperationBase se

private void GenerateSetOperationHelper(SetOperationBase setOperation)
{
Check.DebugAssert(setOperation.Alias is not null, $"{nameof(setOperation.Alias)} is null on {nameof(setOperation)}");

_relationalCommandBuilder.AppendLine("(");
using (_relationalCommandBuilder.Indent())
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public virtual ExceptExpression Update([NotNull] SelectExpression source1, [NotN
Check.NotNull(source2, nameof(source2));

return source1 != Source1 || source2 != Source2
? new ExceptExpression(Alias!, source1, source2, IsDistinct)
? new ExceptExpression(Alias, source1, source2, IsDistinct)
: this;
}

Expand Down
13 changes: 12 additions & 1 deletion src/EFCore.Relational/Query/SqlExpressions/FromSqlExpression.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System.Linq.Expressions;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Utilities;
using CA = System.Diagnostics.CodeAnalysis;

#nullable enable

Expand Down Expand Up @@ -54,6 +55,16 @@ public FromSqlExpression([NotNull] string alias, [NotNull] string sql, [NotNull]
Arguments = arguments;
}

/// <summary>
/// The alias assigned to this table source.
/// </summary>
[CA.NotNull]
public override string? Alias
{
get => base.Alias!;
internal set => base.Alias = value;
}

/// <summary>
/// The user-provided custom SQL for the table source.
/// </summary>
Expand All @@ -75,7 +86,7 @@ public virtual FromSqlExpression Update([NotNull] Expression arguments)
Check.NotNull(arguments, nameof(arguments));

return arguments != Arguments
? new FromSqlExpression(Alias!, Sql, arguments)
? new FromSqlExpression(Alias, Sql, arguments)
: this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public virtual IntersectExpression Update([NotNull] SelectExpression source1, [N
Check.NotNull(source2, nameof(source2));

return source1 != Source1 || source2 != Source2
? new IntersectExpression(Alias!, source1, source2, IsDistinct)
? new IntersectExpression(Alias, source1, source2, IsDistinct)
: this;
}

Expand Down
11 changes: 11 additions & 0 deletions src/EFCore.Relational/Query/SqlExpressions/SetOperationBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Utilities;
using CA = System.Diagnostics.CodeAnalysis;

#nullable enable

Expand Down Expand Up @@ -42,6 +43,16 @@ protected SetOperationBase(
Source2 = source2;
}

/// <summary>
/// The alias assigned to this table source.
/// </summary>
[CA.NotNull]
public override string? Alias
{
get => base.Alias!;
internal set => base.Alias = value;
}

/// <summary>
/// The bool value indicating whether result will remove duplicate rows.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Utilities;
using CA = System.Diagnostics.CodeAnalysis;

#nullable enable

Expand Down Expand Up @@ -44,6 +45,16 @@ private TableValuedFunctionExpression(string alias, IStoreFunction storeFunction
Arguments = arguments;
}

/// <summary>
/// The alias assigned to this table source.
/// </summary>
[CA.NotNull]
public override string? Alias
{
get => base.Alias!;
internal set => base.Alias = value;
}

/// <summary>
/// The store function.
/// </summary>
Expand All @@ -68,7 +79,7 @@ protected override Expression VisitChildren(ExpressionVisitor visitor)
}

return changed
? new TableValuedFunctionExpression(Alias!, StoreFunction, arguments)
? new TableValuedFunctionExpression(Alias, StoreFunction, arguments)
: this;
}

Expand All @@ -83,7 +94,7 @@ public virtual TableValuedFunctionExpression Update([NotNull] IReadOnlyList<SqlE
Check.NotNull(arguments, nameof(arguments));

return !arguments.SequenceEqual(Arguments)
? new TableValuedFunctionExpression(Alias!, StoreFunction, arguments)
? new TableValuedFunctionExpression(Alias, StoreFunction, arguments)
: this;
}

Expand All @@ -99,7 +110,7 @@ protected override void Print(ExpressionPrinter expressionPrinter)
expressionPrinter.Append("(");
expressionPrinter.VisitCollection(Arguments);
expressionPrinter.Append(") AS ");
expressionPrinter.Append(Alias!);
expressionPrinter.Append(Alias);
}

/// <inheritdoc />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public virtual UnionExpression Update([NotNull] SelectExpression source1, [NotNu
Check.NotNull(source2, nameof(source2));

return source1 != Source1 || source2 != Source2
? new UnionExpression(Alias!, source1, source2, IsDistinct)
? new UnionExpression(Alias, source1, source2, IsDistinct)
: this;
}

Expand Down

0 comments on commit 947e2c3

Please sign in to comment.