diff --git a/Directory.Packages.props b/Directory.Packages.props
index a698e8a4a4..a092698942 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -2,7 +2,7 @@
10.0.0-rc.2.25502.106
10.0.0-rc.2.25502.106
- 9.0.3
+ 10.0.0-rc.1
diff --git a/src/EFCore.PG/Extensions/DbFunctionsExtensions/NpgsqlNetworkDbFunctionsExtensions.cs b/src/EFCore.PG/Extensions/DbFunctionsExtensions/NpgsqlNetworkDbFunctionsExtensions.cs
index 570f8c67e9..c9eb4a6885 100644
--- a/src/EFCore.PG/Extensions/DbFunctionsExtensions/NpgsqlNetworkDbFunctionsExtensions.cs
+++ b/src/EFCore.PG/Extensions/DbFunctionsExtensions/NpgsqlNetworkDbFunctionsExtensions.cs
@@ -372,6 +372,21 @@ public static int Subtract(this DbFunctions _, NpgsqlInet inet, NpgsqlInet other
public static string Abbreviate(this DbFunctions _, NpgsqlInet inet)
=> throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(Abbreviate)));
+ ///
+ /// Returns the abbreviated display format as text.
+ ///
+ /// The instance.
+ /// The cidr to abbreviate.
+ ///
+ /// The abbreviated display format as text.
+ ///
+ ///
+ /// This method is only intended for use via SQL translation as part of an EF Core LINQ query.
+ ///
+ public static string Abbreviate(this DbFunctions _, IPNetwork cidr)
+ => throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(Abbreviate)));
+
+#pragma warning disable CS0618 // NpgsqlCidr is obsolete, replaced by .NET IPNetwork
///
/// Returns the abbreviated display format as text.
///
@@ -385,6 +400,7 @@ public static string Abbreviate(this DbFunctions _, NpgsqlInet inet)
///
public static string Abbreviate(this DbFunctions _, NpgsqlCidr cidr)
=> throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(Abbreviate)));
+#pragma warning restore CS0618
///
/// Returns the broadcast address for a network.
@@ -481,7 +497,7 @@ public static NpgsqlInet Netmask(this DbFunctions _, NpgsqlInet inet)
///
/// This method is only intended for use via SQL translation as part of an EF Core LINQ query.
///
- public static NpgsqlCidr Network(this DbFunctions _, NpgsqlInet inet)
+ public static IPNetwork Network(this DbFunctions _, NpgsqlInet inet)
=> throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(Network)));
///
@@ -499,6 +515,22 @@ public static NpgsqlCidr Network(this DbFunctions _, NpgsqlInet inet)
public static NpgsqlInet SetMaskLength(this DbFunctions _, NpgsqlInet inet, int length)
=> throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(SetMaskLength)));
+ ///
+ /// Sets the length of the subnet mask.
+ ///
+ /// The instance.
+ /// The cidr to modify.
+ /// The subnet mask length to set.
+ ///
+ /// The network with a subnet mask of the specified length.
+ ///
+ ///
+ /// This method is only intended for use via SQL translation as part of an EF Core LINQ query.
+ ///
+ public static IPNetwork SetMaskLength(this DbFunctions _, IPNetwork cidr, int length)
+ => throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(SetMaskLength)));
+
+#pragma warning disable CS0618 // NpgsqlCidr is obsolete, replaced by .NET IPNetwork
///
/// Sets the length of the subnet mask.
///
@@ -513,6 +545,7 @@ public static NpgsqlInet SetMaskLength(this DbFunctions _, NpgsqlInet inet, int
///
public static NpgsqlCidr SetMaskLength(this DbFunctions _, NpgsqlCidr cidr, int length)
=> throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(SetMaskLength)));
+#pragma warning restore CS0618
///
/// Extracts the IP address and subnet mask as text.
@@ -555,7 +588,7 @@ public static bool SameFamily(this DbFunctions _, NpgsqlInet inet, NpgsqlInet ot
///
/// This method is only intended for use via SQL translation as part of an EF Core LINQ query.
///
- public static NpgsqlCidr Merge(this DbFunctions _, NpgsqlInet inet, NpgsqlInet other)
+ public static IPNetwork Merge(this DbFunctions _, NpgsqlInet inet, NpgsqlInet other)
=> throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(Merge)));
///
diff --git a/src/EFCore.PG/Query/ExpressionTranslators/Internal/NpgsqlNetworkTranslator.cs b/src/EFCore.PG/Query/ExpressionTranslators/Internal/NpgsqlNetworkTranslator.cs
index 3f607894fd..5dedf94da9 100644
--- a/src/EFCore.PG/Query/ExpressionTranslators/Internal/NpgsqlNetworkTranslator.cs
+++ b/src/EFCore.PG/Query/ExpressionTranslators/Internal/NpgsqlNetworkTranslator.cs
@@ -70,10 +70,12 @@ public NpgsqlNetworkTranslator(
return TranslateInetExtensionMethod(method, arguments);
}
- if (paramType == typeof(NpgsqlCidr))
+#pragma warning disable CS0618 // NpgsqlCidr is obsolete, replaced by .NET IPNetwork
+ if (paramType == typeof(IPNetwork) || paramType == typeof(NpgsqlCidr))
{
return TranslateCidrExtensionMethod(method, arguments);
}
+#pragma warning restore CS0618
if (paramType == typeof(PhysicalAddress))
{
diff --git a/src/EFCore.PG/Query/Internal/NpgsqlQuerySqlGenerator.cs b/src/EFCore.PG/Query/Internal/NpgsqlQuerySqlGenerator.cs
index bc7e0380b1..924642d086 100644
--- a/src/EFCore.PG/Query/Internal/NpgsqlQuerySqlGenerator.cs
+++ b/src/EFCore.PG/Query/Internal/NpgsqlQuerySqlGenerator.cs
@@ -496,11 +496,11 @@ protected virtual Expression VisitPgBinary(PgBinaryExpression binaryExpression)
binaryExpression.OperatorType switch
{
PgExpressionType.Contains
- when binaryExpression.Left.TypeMapping is NpgsqlInetTypeMapping or NpgsqlCidrTypeMapping
+ when binaryExpression.Left.TypeMapping is NpgsqlInetTypeMapping or NpgsqlCidrTypeMapping or NpgsqlLegacyCidrTypeMapping
=> ">>",
PgExpressionType.ContainedBy
- when binaryExpression.Left.TypeMapping is NpgsqlInetTypeMapping or NpgsqlCidrTypeMapping
+ when binaryExpression.Left.TypeMapping is NpgsqlInetTypeMapping or NpgsqlCidrTypeMapping or NpgsqlLegacyCidrTypeMapping
=> "<<",
PgExpressionType.Contains => "@>",
diff --git a/src/EFCore.PG/Query/Internal/NpgsqlSqlTranslatingExpressionVisitor.cs b/src/EFCore.PG/Query/Internal/NpgsqlSqlTranslatingExpressionVisitor.cs
index fbfdfbe781..6ebab68b2e 100644
--- a/src/EFCore.PG/Query/Internal/NpgsqlSqlTranslatingExpressionVisitor.cs
+++ b/src/EFCore.PG/Query/Internal/NpgsqlSqlTranslatingExpressionVisitor.cs
@@ -188,7 +188,11 @@ protected override Expression VisitUnary(UnaryExpression unaryExpression)
// implicit conversion operator to NpgsqlInet. So remove that cast as well.
case ExpressionType.Convert
when unaryExpression.Type == typeof(NpgsqlInet)
- && (unaryExpression.Operand.Type == typeof(IPAddress) || unaryExpression.Operand.Type == typeof(NpgsqlCidr)):
+ && (unaryExpression.Operand.Type == typeof(IPAddress)
+ || unaryExpression.Operand.Type == typeof(IPNetwork)
+#pragma warning disable CS0618 // NpgsqlCidr is obsolete, replaced by .NET IPNetwork
+ || unaryExpression.Operand.Type == typeof(NpgsqlCidr)):
+#pragma warning restore CS0618
return Visit(unaryExpression.Operand);
}
diff --git a/src/EFCore.PG/Storage/Internal/Mapping/NpgsqlCidrLegacyTypeMapping.cs b/src/EFCore.PG/Storage/Internal/Mapping/NpgsqlCidrLegacyTypeMapping.cs
new file mode 100644
index 0000000000..9e2f797439
--- /dev/null
+++ b/src/EFCore.PG/Storage/Internal/Mapping/NpgsqlCidrLegacyTypeMapping.cs
@@ -0,0 +1,127 @@
+using System.Net;
+using System.Text.Json;
+using Microsoft.EntityFrameworkCore.Storage.Json;
+
+namespace Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.Mapping;
+
+#pragma warning disable CS0618 // NpgsqlCidr is obsolete, replaced by .NET IPNetwork
+
+///
+/// The type mapping for the PostgreSQL cidr type.
+///
+///
+/// See: https://www.postgresql.org/docs/current/static/datatype-net-types.html#DATATYPE-CIDR
+///
+public class NpgsqlLegacyCidrTypeMapping : NpgsqlTypeMapping
+{
+ ///
+ /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
+ /// the same compatibility standards as public APIs. It may be changed or removed without notice in
+ /// any release. You should only use it directly in your code with extreme caution and knowing that
+ /// doing so can result in application failures when updating to a new Entity Framework Core release.
+ ///
+ public static NpgsqlLegacyCidrTypeMapping Default { get; } = new();
+
+ ///
+ /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
+ /// the same compatibility standards as public APIs. It may be changed or removed without notice in
+ /// any release. You should only use it directly in your code with extreme caution and knowing that
+ /// doing so can result in application failures when updating to a new Entity Framework Core release.
+ ///
+ public NpgsqlLegacyCidrTypeMapping()
+ : base("cidr", typeof(NpgsqlCidr), NpgsqlDbType.Cidr, JsonCidrLegacyReaderWriter.Instance)
+ {
+ }
+
+ ///
+ /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
+ /// the same compatibility standards as public APIs. It may be changed or removed without notice in
+ /// any release. You should only use it directly in your code with extreme caution and knowing that
+ /// doing so can result in application failures when updating to a new Entity Framework Core release.
+ ///
+ protected NpgsqlLegacyCidrTypeMapping(RelationalTypeMappingParameters parameters)
+ : base(parameters, NpgsqlDbType.Cidr)
+ {
+ }
+
+ ///
+ /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
+ /// the same compatibility standards as public APIs. It may be changed or removed without notice in
+ /// any release. You should only use it directly in your code with extreme caution and knowing that
+ /// doing so can result in application failures when updating to a new Entity Framework Core release.
+ ///
+ protected override RelationalTypeMapping Clone(RelationalTypeMappingParameters parameters)
+ => new NpgsqlLegacyCidrTypeMapping(parameters);
+
+ ///
+ /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
+ /// the same compatibility standards as public APIs. It may be changed or removed without notice in
+ /// any release. You should only use it directly in your code with extreme caution and knowing that
+ /// doing so can result in application failures when updating to a new Entity Framework Core release.
+ ///
+ protected override string GenerateNonNullSqlLiteral(object value)
+ {
+ var cidr = (NpgsqlCidr)value;
+ return $"CIDR '{cidr.Address}/{cidr.Netmask}'";
+ }
+
+ ///
+ /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
+ /// the same compatibility standards as public APIs. It may be changed or removed without notice in
+ /// any release. You should only use it directly in your code with extreme caution and knowing that
+ /// doing so can result in application failures when updating to a new Entity Framework Core release.
+ ///
+ public override Expression GenerateCodeLiteral(object value)
+ {
+ var cidr = (NpgsqlCidr)value;
+ return Expression.New(
+ NpgsqlCidrConstructor,
+ Expression.Call(ParseMethod, Expression.Constant(cidr.Address.ToString())),
+ Expression.Constant(cidr.Netmask));
+ }
+
+ private static readonly MethodInfo ParseMethod = typeof(IPAddress).GetMethod("Parse", [typeof(string)])!;
+
+ private static readonly ConstructorInfo NpgsqlCidrConstructor =
+ typeof(NpgsqlCidr).GetConstructor([typeof(IPAddress), typeof(byte)])!;
+
+ ///
+ /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
+ /// the same compatibility standards as public APIs. It may be changed or removed without notice in
+ /// any release. You should only use it directly in your code with extreme caution and knowing that
+ /// doing so can result in application failures when updating to a new Entity Framework Core release.
+ ///
+ public sealed class JsonCidrLegacyReaderWriter : JsonValueReaderWriter
+ {
+ private static readonly PropertyInfo InstanceProperty = typeof(JsonCidrLegacyReaderWriter).GetProperty(nameof(Instance))!;
+
+ ///
+ /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
+ /// the same compatibility standards as public APIs. It may be changed or removed without notice in
+ /// any release. You should only use it directly in your code with extreme caution and knowing that
+ /// doing so can result in application failures when updating to a new Entity Framework Core release.
+ ///
+ public static JsonCidrLegacyReaderWriter Instance { get; } = new();
+
+ ///
+ /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
+ /// the same compatibility standards as public APIs. It may be changed or removed without notice in
+ /// any release. You should only use it directly in your code with extreme caution and knowing that
+ /// doing so can result in application failures when updating to a new Entity Framework Core release.
+ ///
+ public override NpgsqlCidr FromJsonTyped(ref Utf8JsonReaderManager manager, object? existingObject = null)
+ => new(manager.CurrentReader.GetString()!);
+
+ ///
+ /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
+ /// the same compatibility standards as public APIs. It may be changed or removed without notice in
+ /// any release. You should only use it directly in your code with extreme caution and knowing that
+ /// doing so can result in application failures when updating to a new Entity Framework Core release.
+ ///
+ public override void ToJsonTyped(Utf8JsonWriter writer, NpgsqlCidr value)
+ => writer.WriteStringValue(value.ToString());
+
+ ///
+ public override Expression ConstructorExpression => Expression.Property(null, InstanceProperty);
+ }
+}
diff --git a/src/EFCore.PG/Storage/Internal/Mapping/NpgsqlCidrTypeMapping.cs b/src/EFCore.PG/Storage/Internal/Mapping/NpgsqlCidrTypeMapping.cs
index 7a943d8875..86c4c6ef20 100644
--- a/src/EFCore.PG/Storage/Internal/Mapping/NpgsqlCidrTypeMapping.cs
+++ b/src/EFCore.PG/Storage/Internal/Mapping/NpgsqlCidrTypeMapping.cs
@@ -27,7 +27,7 @@ public class NpgsqlCidrTypeMapping : NpgsqlTypeMapping
/// doing so can result in application failures when updating to a new Entity Framework Core release.
///
public NpgsqlCidrTypeMapping()
- : base("cidr", typeof(NpgsqlCidr), NpgsqlDbType.Cidr, JsonCidrReaderWriter.Instance)
+ : base("cidr", typeof(IPNetwork), NpgsqlDbType.Cidr, JsonCidrReaderWriter.Instance)
{
}
@@ -59,8 +59,8 @@ protected override RelationalTypeMapping Clone(RelationalTypeMappingParameters p
///
protected override string GenerateNonNullSqlLiteral(object value)
{
- var cidr = (NpgsqlCidr)value;
- return $"CIDR '{cidr.Address}/{cidr.Netmask}'";
+ var ipNetwork = (IPNetwork)value;
+ return $"CIDR '{ipNetwork.BaseAddress}/{ipNetwork.PrefixLength}'";
}
///
@@ -71,17 +71,17 @@ protected override string GenerateNonNullSqlLiteral(object value)
///
public override Expression GenerateCodeLiteral(object value)
{
- var cidr = (NpgsqlCidr)value;
+ var cidr = (IPNetwork)value;
return Expression.New(
NpgsqlCidrConstructor,
- Expression.Call(ParseMethod, Expression.Constant(cidr.Address.ToString())),
- Expression.Constant(cidr.Netmask));
+ Expression.Call(ParseMethod, Expression.Constant(cidr.BaseAddress.ToString())),
+ Expression.Constant(cidr.PrefixLength));
}
private static readonly MethodInfo ParseMethod = typeof(IPAddress).GetMethod("Parse", [typeof(string)])!;
private static readonly ConstructorInfo NpgsqlCidrConstructor =
- typeof(NpgsqlCidr).GetConstructor([typeof(IPAddress), typeof(byte)])!;
+ typeof(IPNetwork).GetConstructor([typeof(IPAddress), typeof(int)])!;
///
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
@@ -89,7 +89,7 @@ public override Expression GenerateCodeLiteral(object value)
/// any release. You should only use it directly in your code with extreme caution and knowing that
/// doing so can result in application failures when updating to a new Entity Framework Core release.
///
- public sealed class JsonCidrReaderWriter : JsonValueReaderWriter
+ public sealed class JsonCidrReaderWriter : JsonValueReaderWriter
{
private static readonly PropertyInfo InstanceProperty = typeof(JsonCidrReaderWriter).GetProperty(nameof(Instance))!;
@@ -107,8 +107,8 @@ public sealed class JsonCidrReaderWriter : JsonValueReaderWriter
/// any release. You should only use it directly in your code with extreme caution and knowing that
/// doing so can result in application failures when updating to a new Entity Framework Core release.
///
- public override NpgsqlCidr FromJsonTyped(ref Utf8JsonReaderManager manager, object? existingObject = null)
- => new(manager.CurrentReader.GetString()!);
+ public override IPNetwork FromJsonTyped(ref Utf8JsonReaderManager manager, object? existingObject = null)
+ => IPNetwork.Parse(manager.CurrentReader.GetString()!);
///
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
@@ -116,8 +116,8 @@ public override NpgsqlCidr FromJsonTyped(ref Utf8JsonReaderManager manager, obje
/// any release. You should only use it directly in your code with extreme caution and knowing that
/// doing so can result in application failures when updating to a new Entity Framework Core release.
///
- public override void ToJsonTyped(Utf8JsonWriter writer, NpgsqlCidr value)
- => writer.WriteStringValue(value.ToString());
+ public override void ToJsonTyped(Utf8JsonWriter writer, IPNetwork ipNetwork)
+ => writer.WriteStringValue(ipNetwork.ToString());
///
public override Expression ConstructorExpression => Expression.Property(null, InstanceProperty);
diff --git a/src/EFCore.PG/Storage/Internal/NpgsqlTypeMappingSource.cs b/src/EFCore.PG/Storage/Internal/NpgsqlTypeMappingSource.cs
index 51c977c578..ca7140f19a 100644
--- a/src/EFCore.PG/Storage/Internal/NpgsqlTypeMappingSource.cs
+++ b/src/EFCore.PG/Storage/Internal/NpgsqlTypeMappingSource.cs
@@ -115,7 +115,8 @@ static NpgsqlTypeMappingSource()
private readonly NpgsqlMacaddr8TypeMapping _macaddr8 = NpgsqlMacaddr8TypeMapping.Default;
private readonly NpgsqlInetTypeMapping _inetAsIPAddress = NpgsqlInetTypeMapping.Default;
private readonly NpgsqlInetTypeMapping _inetAsNpgsqlInet = new(typeof(NpgsqlInet));
- private readonly NpgsqlCidrTypeMapping _cidr = NpgsqlCidrTypeMapping.Default;
+ private readonly NpgsqlCidrTypeMapping _cidrAsIPNetwork = NpgsqlCidrTypeMapping.Default;
+ private readonly NpgsqlLegacyCidrTypeMapping _cidrAsNpgsqlCidr = NpgsqlLegacyCidrTypeMapping.Default;
// Built-in geometric types
private readonly NpgsqlPointTypeMapping _point = NpgsqlPointTypeMapping.Default;
@@ -261,7 +262,7 @@ public NpgsqlTypeMappingSource(
{ "macaddr", [_macaddr] },
{ "macaddr8", [_macaddr8] },
{ "inet", [_inetAsIPAddress, _inetAsNpgsqlInet] },
- { "cidr", [_cidr] },
+ { "cidr", [_cidrAsIPNetwork, _cidrAsNpgsqlCidr] },
{ "point", [_point] },
{ "box", [_box] },
{ "line", [_line] },
@@ -324,7 +325,10 @@ public NpgsqlTypeMappingSource(
{ typeof(PhysicalAddress), _macaddr },
{ typeof(IPAddress), _inetAsIPAddress },
{ typeof(NpgsqlInet), _inetAsNpgsqlInet },
- { typeof(NpgsqlCidr), _cidr },
+ { typeof(IPNetwork), _cidrAsIPNetwork },
+#pragma warning disable CS0618 // NpgsqlCidr is obsolete, replaced by .NET IPNetwork
+ { typeof(NpgsqlCidr), _cidrAsNpgsqlCidr },
+#pragma warning restore CS0618
{ typeof(BitArray), _varbit },
{ typeof(ImmutableDictionary), _immutableHstore },
{ typeof(Dictionary), _hstore },
diff --git a/test/EFCore.PG.FunctionalTests/Query/Translations/NetworkTranslationsNpgsqlTest.cs b/test/EFCore.PG.FunctionalTests/Query/Translations/NetworkTranslationsNpgsqlTest.cs
index 8379693afc..99bddfe487 100644
--- a/test/EFCore.PG.FunctionalTests/Query/Translations/NetworkTranslationsNpgsqlTest.cs
+++ b/test/EFCore.PG.FunctionalTests/Query/Translations/NetworkTranslationsNpgsqlTest.cs
@@ -31,11 +31,11 @@ public NetworkTranslationsNpgsqlTest(NetworkAddressQueryNpgsqlFixture fixture, I
public void Demonstrate_ValueTypeParametersAreDuplicated()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ var cidr = new IPNetwork(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.ContainsOrEqual(x.Cidr, cidr))
- .Select(x => x.Cidr.Equals(cidr))
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainsOrEqual(x.IPNetwork, cidr))
+ .Select(x => x.IPNetwork.Equals(cidr))
.ToArray();
AssertSql(
@@ -43,9 +43,9 @@ public void Demonstrate_ValueTypeParametersAreDuplicated()
@cidr='0.0.0.0/0' (DbType = Object)
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Cidr" = @cidr
+SELECT n."IPNetwork" = @cidr
FROM "NetTestEntities" AS n
-WHERE n."Cidr" >>= @p
+WHERE n."IPNetwork" >>= @p
""");
}
@@ -153,21 +153,21 @@ WHERE n."Inet" < INET '192.168.1.7'
}
[Fact]
- public void LessThan_NpgsqlCidr()
+ public void LessThan_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.LessThan(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.LessThan(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" < @p
+WHERE n."IPNetwork" < @p
""");
}
@@ -218,21 +218,21 @@ SELECT count(*)::int
}
[Fact]
- public void LessThanOrEqual_NpgsqlCidr()
+ public void LessThanOrEqual_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.LessThanOrEqual(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.LessThanOrEqual(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" <= @p
+WHERE n."IPNetwork" <= @p
""");
}
@@ -284,21 +284,21 @@ SELECT count(*)::int
}
[Fact]
- public void GreaterThanOrEqual_NpgsqlCidr()
+ public void GreaterThanOrEqual_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.GreaterThanOrEqual(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.GreaterThanOrEqual(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" >= @p
+WHERE n."IPNetwork" >= @p
""");
}
@@ -351,21 +351,21 @@ WHERE n."Inet" > INET '192.168.1.7'
}
[Fact]
- public void GreaterThan_NpgsqlCidr()
+ public void GreaterThan_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.GreaterThan(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.GreaterThan(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" > @p
+WHERE n."IPNetwork" > @p
""");
}
@@ -410,7 +410,7 @@ public void ContainedBy_IPAddress_and_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Where(x => EF.Functions.ContainedBy(x.Inet, inet))
.ToArray();
@@ -418,18 +418,18 @@ public void ContainedBy_IPAddress_and_IPAddress()
"""
@p='0.0.0.0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
WHERE n."Inet" << @p
""");
}
[Fact]
- public void ContainedBy_IPAddress_and_NpgsqlCidr()
+ public void ContainedBy_IPAddress_and_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
.Where(x => EF.Functions.ContainedBy(x.Inet, cidr))
.ToArray();
@@ -437,28 +437,28 @@ public void ContainedBy_IPAddress_and_NpgsqlCidr()
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
WHERE n."Inet" << @p
""");
}
[Fact]
- public void ContainedBy_NpgsqlCidr_and_NpgsqlCidr()
+ public void ContainedBy_IPNetwork_and_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.ContainedBy(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainedBy(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" << @p
+WHERE n."IPNetwork" << @p
""");
}
@@ -467,7 +467,7 @@ public void ContainedByOrEqual_IPAddress_and_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Where(x => EF.Functions.ContainedByOrEqual(x.Inet, inet))
.ToArray();
@@ -475,18 +475,18 @@ public void ContainedByOrEqual_IPAddress_and_IPAddress()
"""
@p='0.0.0.0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
WHERE n."Inet" <<= @p
""");
}
[Fact]
- public void ContainedByOrEqual_IPAddress_and_NpgsqlCidr()
+ public void ContainedByOrEqual_IPAddress_and_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
.Where(x => EF.Functions.ContainedByOrEqual(x.Inet, cidr))
.ToArray();
@@ -494,28 +494,28 @@ public void ContainedByOrEqual_IPAddress_and_NpgsqlCidr()
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
WHERE n."Inet" <<= @p
""");
}
[Fact]
- public void ContainedByOrEqual_NpgsqlCidr_and_NpgsqlCidr()
+ public void ContainedByOrEqual_IPNetwork_and_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.ContainedByOrEqual(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainedByOrEqual(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" <<= @p
+WHERE n."IPNetwork" <<= @p
""");
}
@@ -524,7 +524,7 @@ public void Contains_IPAddress_and_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Where(x => EF.Functions.Contains(x.Inet, inet))
.ToArray();
@@ -532,47 +532,47 @@ public void Contains_IPAddress_and_IPAddress()
"""
@p='0.0.0.0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
WHERE n."Inet" >> @p
""");
}
[Fact]
- public void Contains_NpgsqlCidr_and_IPAddress()
+ public void Contains_IPNetwork_and_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.Contains(x.Cidr, inet))
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.Contains(x.IPNetwork, inet))
.ToArray();
AssertSql(
"""
@p='0.0.0.0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" >> @p
+WHERE n."IPNetwork" >> @p
""");
}
[Fact]
- public void Contains_NpgsqlCidr_and_NpgsqlCidr()
+ public void Contains_IPNetwork_and_IPNetworks()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.Contains(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.Contains(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" >> @p
+WHERE n."IPNetwork" >> @p
""");
}
@@ -581,7 +581,7 @@ public void ContainsOrEqual_IPAddress_and_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Where(x => EF.Functions.ContainsOrEqual(x.Inet, inet))
.ToArray();
@@ -589,47 +589,47 @@ public void ContainsOrEqual_IPAddress_and_IPAddress()
"""
@p='0.0.0.0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
WHERE n."Inet" >>= @p
""");
}
[Fact]
- public void ContainsOrEqual_NpgsqlCidr_and_IPAddress()
+ public void ContainsOrEqual_IPNetwork_and_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.ContainsOrEqual(x.Cidr, inet))
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainsOrEqual(x.IPNetwork, inet))
.ToArray();
AssertSql(
"""
@p='0.0.0.0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" >>= @p
+WHERE n."IPNetwork" >>= @p
""");
}
[Fact]
- public void ContainsOrEqual_NpgsqlCidr_and_NpgsqlCidr()
+ public void ContainsOrEqual_IPNetwork_and_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.ContainsOrEqual(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainsOrEqual(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" >>= @p
+WHERE n."IPNetwork" >>= @p
""");
}
@@ -638,7 +638,7 @@ public void ContainsOrContainedBy_IPAddress_and_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Where(x => EF.Functions.ContainsOrContainedBy(x.Inet, inet))
.ToArray();
@@ -646,18 +646,18 @@ public void ContainsOrContainedBy_IPAddress_and_IPAddress()
"""
@p='0.0.0.0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
WHERE n."Inet" && @p
""");
}
[Fact]
- public void ContainsOrContainedBy_IPAddress_and_NpgsqlCidr()
+ public void ContainsOrContainedBy_IPAddress_and_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
.Where(x => EF.Functions.ContainsOrContainedBy(x.Inet, cidr))
.ToArray();
@@ -665,47 +665,47 @@ public void ContainsOrContainedBy_IPAddress_and_NpgsqlCidr()
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
WHERE n."Inet" && @p
""");
}
[Fact]
- public void ContainsOrContainedBy_NpgsqlCidr_and_IPAddress()
+ public void ContainsOrContainedBy_IPNetwork_and_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.ContainsOrContainedBy(x.Cidr, inet))
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainsOrContainedBy(x.IPNetwork, inet))
.ToArray();
AssertSql(
"""
@p='0.0.0.0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" && @p
+WHERE n."IPNetwork" && @p
""");
}
[Fact]
- public void ContainsOrContainedBy_NpgsqlCidr_and_NpgsqlCidr()
+ public void ContainsOrContainedBy_IPNetwork_and_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Where(x => EF.Functions.ContainsOrContainedBy(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainsOrContainedBy(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
-WHERE n."Cidr" && @p
+WHERE n."IPNetwork" && @p
""");
}
@@ -717,7 +717,7 @@ WHERE n."Cidr" && @p
public void BitwiseNot_IPAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.BitwiseNot(x.Inet))
.ToArray();
@@ -729,16 +729,16 @@ public void BitwiseNot_IPAddress()
}
[Fact]
- public void BitwiseNot_NpgsqlCidr()
+ public void BitwiseNot_IPNetwork()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.BitwiseNot(x.Cidr))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.BitwiseNot(x.IPNetwork))
.ToArray();
AssertSql(
"""
-SELECT ~n."Cidr"
+SELECT ~n."IPNetwork"
FROM "NetTestEntities" AS n
""");
}
@@ -747,7 +747,7 @@ public void BitwiseNot_NpgsqlCidr()
public void BitwiseNot_PhysicalAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.BitwiseNot(x.Macaddr))
.ToArray();
@@ -763,7 +763,7 @@ public void BitwiseNot_PhysicalAddress()
public void BitwiseNot_PhysicalAddress_macaddr8()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.BitwiseNot(x.Macaddr8))
.ToArray();
@@ -793,19 +793,19 @@ SELECT count(*)::int
}
[Fact]
- public void BitwiseAnd_NpgsqlCidr()
+ public void BitwiseAnd_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.BitwiseAnd(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.BitwiseAnd(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Cidr" & @p
+SELECT n."IPNetwork" & @p
FROM "NetTestEntities" AS n
""");
}
@@ -815,7 +815,7 @@ public void BitwiseAnd_PhysicalAddress()
{
using var context = CreateContext();
var macaddr = new PhysicalAddress(new byte[6]);
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.BitwiseAnd(x.Macaddr, macaddr))
.ToArray();
@@ -833,7 +833,7 @@ SELECT n."Macaddr" & @macaddr
public void BitwiseAnd_PhysicalAddress_macaddr8()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.BitwiseAnd(x.Macaddr8, x.Macaddr8))
.ToArray();
@@ -849,7 +849,7 @@ public void BitwiseOr_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.BitwiseOr(x.Inet, inet))
.ToArray();
@@ -863,19 +863,19 @@ SELECT n."Inet" | @p
}
[Fact]
- public void BitwiseOr_NpgsqlCidr()
+ public void BitwiseOr_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.BitwiseOr(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.BitwiseOr(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Cidr" | @p
+SELECT n."IPNetwork" | @p
FROM "NetTestEntities" AS n
""");
}
@@ -885,7 +885,7 @@ public void BitwiseOr_PhysicalAddress()
{
using var context = CreateContext();
var macaddr = new PhysicalAddress(new byte[6]);
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.BitwiseOr(x.Macaddr, macaddr))
.ToArray();
@@ -903,7 +903,7 @@ SELECT n."Macaddr" | @macaddr
public void BitwiseOr_PhysicalAddress_macaddr8()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.BitwiseOr(x.Macaddr8, x.Macaddr8))
.ToArray();
@@ -927,7 +927,7 @@ public void Add_IPAddress_and_int()
Assert.Equal(actual, IPAddress.Parse("192.168.1.1"));
AssertSql(
"""
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
WHERE n."Inet" + 1 = INET '192.168.1.2'
LIMIT 2
@@ -935,16 +935,16 @@ LIMIT 2
}
[Fact]
- public void Add_NpgsqlCidr_and_int()
+ public void Add_IPNetwork_and_int()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.Add(x.Cidr, 1))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Add(x.IPNetwork, 1))
.ToArray();
AssertSql(
"""
-SELECT n."Cidr" + 1
+SELECT n."IPNetwork" + 1
FROM "NetTestEntities" AS n
""");
}
@@ -958,7 +958,7 @@ public void Subtract_IPAddress_and_int()
Assert.Equal(actual, IPAddress.Parse("192.168.1.2"));
AssertSql(
"""
-SELECT n."Id", n."Cidr", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
FROM "NetTestEntities" AS n
WHERE n."Inet" - 1 = INET '192.168.1.1'
LIMIT 2
@@ -966,16 +966,16 @@ LIMIT 2
}
[Fact]
- public void Subtract_NpgsqlCidr_and_int()
+ public void Subtract_IPNetwork_and_int()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.Subtract(x.Cidr, 1))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Subtract(x.IPNetwork, 1))
.ToArray();
AssertSql(
"""
-SELECT n."Cidr" - 1
+SELECT n."IPNetwork" - 1
FROM "NetTestEntities" AS n
""");
}
@@ -985,7 +985,7 @@ public void Subtract_IPAddress_and_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Subtract(x.Inet, inet))
.ToArray();
@@ -999,19 +999,19 @@ SELECT n."Inet" - @p
}
[Fact]
- public void Subtract_NpgsqlCidr_and_NpgsqlCidr()
+ public void Subtract_IPNetwork_and_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.Subtract(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Subtract(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT n."Cidr" - @p
+SELECT n."IPNetwork" - @p
FROM "NetTestEntities" AS n
""");
}
@@ -1024,7 +1024,7 @@ SELECT n."Cidr" - @p
public void Abbreviate_IPAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Abbreviate(x.Inet))
.ToArray();
@@ -1036,16 +1036,16 @@ SELECT abbrev(n."Inet")
}
[Fact]
- public void Abbreviate_NpgsqlCidr()
+ public void Abbreviate_IPNetwork()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.Abbreviate(x.Cidr))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Abbreviate(x.IPNetwork))
.ToArray();
AssertSql(
"""
-SELECT abbrev(n."Cidr")
+SELECT abbrev(n."IPNetwork")
FROM "NetTestEntities" AS n
""");
}
@@ -1054,7 +1054,7 @@ SELECT abbrev(n."Cidr")
public void Broadcast_IPAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Broadcast(x.Inet))
.ToArray();
@@ -1066,16 +1066,16 @@ SELECT broadcast(n."Inet")
}
[Fact]
- public void Broadcast_NpgsqlCidr()
+ public void Broadcast_IPNetwork()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.Broadcast(x.Cidr))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Broadcast(x.IPNetwork))
.ToArray();
AssertSql(
"""
-SELECT broadcast(n."Cidr")
+SELECT broadcast(n."IPNetwork")
FROM "NetTestEntities" AS n
""");
}
@@ -1084,7 +1084,7 @@ SELECT broadcast(n."Cidr")
public void Family_IPAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Family(x.Inet))
.ToArray();
@@ -1096,16 +1096,16 @@ SELECT family(n."Inet")
}
[Fact]
- public void Family_NpgsqlCidr()
+ public void Family_IPNetwork()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.Family(x.Cidr))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Family(x.IPNetwork))
.ToArray();
AssertSql(
"""
-SELECT family(n."Cidr")
+SELECT family(n."IPNetwork")
FROM "NetTestEntities" AS n
""");
}
@@ -1114,7 +1114,7 @@ SELECT family(n."Cidr")
public void Host_IPAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Host(x.Inet))
.ToArray();
@@ -1126,16 +1126,16 @@ SELECT host(n."Inet")
}
[Fact]
- public void Host_NpgsqlCidr()
+ public void Host_IPNetwork()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.Host(x.Cidr))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Host(x.IPNetwork))
.ToArray();
AssertSql(
"""
-SELECT host(n."Cidr")
+SELECT host(n."IPNetwork")
FROM "NetTestEntities" AS n
""");
}
@@ -1144,7 +1144,7 @@ SELECT host(n."Cidr")
public void HostMask_IPAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.HostMask(x.Inet))
.ToArray();
@@ -1156,16 +1156,16 @@ SELECT hostmask(n."Inet")
}
[Fact]
- public void HostMask_NpgsqlCidr()
+ public void HostMask_IPNetwork()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.HostMask(x.Cidr))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.HostMask(x.IPNetwork))
.ToArray();
AssertSql(
"""
-SELECT hostmask(n."Cidr")
+SELECT hostmask(n."IPNetwork")
FROM "NetTestEntities" AS n
""");
}
@@ -1174,7 +1174,7 @@ SELECT hostmask(n."Cidr")
public void MaskLength_IPAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.MaskLength(x.Inet))
.ToArray();
@@ -1186,16 +1186,16 @@ SELECT masklen(n."Inet")
}
[Fact]
- public void MaskLength_NpgsqlCidr()
+ public void MaskLength_IPNetwork()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.MaskLength(x.Cidr))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.MaskLength(x.IPNetwork))
.ToArray();
AssertSql(
"""
-SELECT masklen(n."Cidr")
+SELECT masklen(n."IPNetwork")
FROM "NetTestEntities" AS n
""");
}
@@ -1204,7 +1204,7 @@ SELECT masklen(n."Cidr")
public void Netmask_IPAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Netmask(x.Inet))
.ToArray();
@@ -1216,16 +1216,16 @@ SELECT netmask(n."Inet")
}
[Fact]
- public void Netmask_NpgsqlCidr()
+ public void Netmask_IPNetwork()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.Netmask(x.Cidr))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Netmask(x.IPNetwork))
.ToArray();
AssertSql(
"""
-SELECT netmask(n."Cidr")
+SELECT netmask(n."IPNetwork")
FROM "NetTestEntities" AS n
""");
}
@@ -1234,7 +1234,7 @@ SELECT netmask(n."Cidr")
public void Network_IPAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Network(x.Inet))
.ToArray();
@@ -1246,16 +1246,16 @@ SELECT network(n."Inet")
}
[Fact]
- public void Network_NpgsqlCidr()
+ public void Network_IPNetwork()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.Network(x.Cidr))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Network(x.IPNetwork))
.ToArray();
AssertSql(
"""
-SELECT network(n."Cidr")
+SELECT network(n."IPNetwork")
FROM "NetTestEntities" AS n
""");
}
@@ -1264,7 +1264,7 @@ SELECT network(n."Cidr")
public void SetMaskLength_IPAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.SetMaskLength(x.Inet, default))
.ToArray();
@@ -1276,16 +1276,16 @@ SELECT set_masklen(n."Inet", 0)
}
[Fact]
- public void SetMaskLength_NpgsqlCidr()
+ public void SetMaskLength_IPNetwork()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.SetMaskLength(x.Cidr, default))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.SetMaskLength(x.IPNetwork, default))
.ToArray();
AssertSql(
"""
-SELECT set_masklen(n."Cidr", 0)
+SELECT set_masklen(n."IPNetwork", 0)
FROM "NetTestEntities" AS n
""");
}
@@ -1294,7 +1294,7 @@ SELECT set_masklen(n."Cidr", 0)
public void Text_IPAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Text(x.Inet))
.ToArray();
@@ -1306,16 +1306,16 @@ SELECT text(n."Inet")
}
[Fact]
- public void Text_NpgsqlCidr()
+ public void Text_IPNetwork()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.Text(x.Cidr))
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Text(x.IPNetwork))
.ToArray();
AssertSql(
"""
-SELECT text(n."Cidr")
+SELECT text(n."IPNetwork")
FROM "NetTestEntities" AS n
""");
}
@@ -1325,7 +1325,7 @@ public void SameFamily_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.SameFamily(x.Inet, inet))
.ToArray();
@@ -1339,19 +1339,19 @@ SELECT inet_same_family(n."Inet", @p)
}
[Fact]
- public void SameFamily_NpgsqlCidr()
+ public void SameFamily_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.SameFamily(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.SameFamily(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT inet_same_family(n."Cidr", @p)
+SELECT inet_same_family(n."IPNetwork", @p)
FROM "NetTestEntities" AS n
""");
}
@@ -1361,7 +1361,7 @@ public void Merge_IPAddress()
{
using var context = CreateContext();
var inet = IPAddress.Any;
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Merge(x.Inet, inet))
.ToArray();
@@ -1375,19 +1375,19 @@ SELECT inet_merge(n."Inet", @p)
}
[Fact]
- public void Merge_NpgsqlCidr()
+ public void Merge_IPNetwork()
{
using var context = CreateContext();
- var cidr = new NpgsqlCidr(IPAddress.Any, default);
- var _ = context.NetTestEntities
- .Select(x => EF.Functions.Merge(x.Cidr, cidr))
+ var cidr = new IPNetwork(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Merge(x.IPNetwork, cidr))
.ToArray();
AssertSql(
"""
@p='0.0.0.0/0' (DbType = Object)
-SELECT inet_merge(n."Cidr", @p)
+SELECT inet_merge(n."IPNetwork", @p)
FROM "NetTestEntities" AS n
""");
}
@@ -1396,7 +1396,7 @@ SELECT inet_merge(n."Cidr", @p)
public void Truncate_PhysicalAddress()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Truncate(x.Macaddr))
.ToArray();
@@ -1412,7 +1412,7 @@ SELECT trunc(n."Macaddr")
public void Truncate_PhysicalAddress_macaddr8()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Truncate(x.Macaddr8))
.ToArray();
@@ -1428,7 +1428,7 @@ SELECT trunc(n."Macaddr8")
public void Set7BitMac8_PhysicalAddress_macaddr8()
{
using var context = CreateContext();
- var _ = context.NetTestEntities
+ _ = context.NetTestEntities
.Select(x => EF.Functions.Set7BitMac8(x.Macaddr8))
.ToArray();
@@ -1441,46 +1441,630 @@ SELECT macaddr8_set7bit(n."Macaddr8")
#endregion
- #region Fixtures
+ #region Obsolete (NpgsqlCidr)
- ///
- /// Represents a fixture suitable for testing network address operators.
- ///
- public class NetworkAddressQueryNpgsqlFixture : SharedStoreFixtureBase
+#pragma warning disable CS0618 // NpgsqlCidr is obsolete, replaced by .NET IPNetwork
+
+ [Fact]
+ public void LessThan_NpgsqlCidr()
{
- protected override string StoreName
- => "NetworkQueryTest";
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.LessThan(x.Cidr, cidr))
+ .ToArray();
- protected override ITestStoreFactory TestStoreFactory
- => NpgsqlTestStoreFactory.Instance;
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
- public TestSqlLoggerFactory TestSqlLoggerFactory
- => (TestSqlLoggerFactory)ListLoggerFactory;
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" < @p
+""");
+ }
- protected override Task SeedAsync(NetContext context)
- => NetContext.SeedAsync(context);
+ [Fact]
+ public void LessThanOrEqual_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.LessThanOrEqual(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" <= @p
+""");
}
- ///
- /// Represents an entity suitable for testing network address operators.
- ///
- public class NetTestEntity
+ [Fact]
+ public void GreaterThanOrEqual_NpgsqlCidr()
{
- // ReSharper disable once UnusedMember.Global
- ///
- /// The primary key.
- ///
- [Key]
- public int Id { get; set; }
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.GreaterThanOrEqual(x.Cidr, cidr))
+ .ToArray();
- ///
- /// The network address.
- ///
- public IPAddress Inet { get; set; } = null!;
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" >= @p
+""");
+ }
+
+ [Fact]
+ public void GreaterThan_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.GreaterThan(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" > @p
+""");
+ }
+
+ [Fact]
+ public void ContainedBy_IPAddress_and_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainedBy(x.Inet, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Inet" << @p
+""");
+ }
+
+ [Fact]
+ public void ContainedBy_NpgsqlCidr_and_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainedBy(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" << @p
+""");
+ }
+
+ [Fact]
+ public void ContainedByOrEqual_IPAddress_and_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainedByOrEqual(x.Inet, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Inet" <<= @p
+""");
+ }
+
+ [Fact]
+ public void ContainedByOrEqual_NpgsqlCidr_and_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainedByOrEqual(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" <<= @p
+""");
+ }
+
+ [Fact]
+ public void Contains_NpgsqlCidr_and_IPAddress()
+ {
+ using var context = CreateContext();
+ var inet = IPAddress.Any;
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.Contains(x.Cidr, inet))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" >> @p
+""");
+ }
+
+ [Fact]
+ public void Contains_NpgsqlCidr_and_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.Contains(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" >> @p
+""");
+ }
+
+ [Fact]
+ public void ContainsOrEqual_NpgsqlCidr_and_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainsOrEqual(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" >>= @p
+""");
+ }
+
+ [Fact]
+ public void ContainsOrEqual_NpgsqlCidr_and_IPAddress()
+ {
+ using var context = CreateContext();
+ var inet = IPAddress.Any;
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainsOrEqual(x.Cidr, inet))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" >>= @p
+""");
+ }
+
+ [Fact]
+ public void ContainsOrContainedBy_IPAddress_and_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainsOrContainedBy(x.Inet, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Inet" && @p
+""");
+ }
+
+ [Fact]
+ public void ContainsOrContainedBy_NpgsqlCidr_and_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainsOrContainedBy(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" && @p
+""");
+ }
+
+ [Fact]
+ public void ContainsOrContainedBy_NpgsqlCidr_and_IPAddress()
+ {
+ using var context = CreateContext();
+ var inet = IPAddress.Any;
+ _ = context.NetTestEntities
+ .Where(x => EF.Functions.ContainsOrContainedBy(x.Cidr, inet))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0' (DbType = Object)
+
+SELECT n."Id", n."Cidr", n."IPNetwork", n."Inet", n."Macaddr", n."Macaddr8", n."TextInet", n."TextMacaddr"
+FROM "NetTestEntities" AS n
+WHERE n."Cidr" && @p
+""");
+ }
+
+ [Fact]
+ public void BitwiseAnd_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.BitwiseAnd(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Cidr" & @p
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void BitwiseOr_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.BitwiseOr(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Cidr" | @p
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void Subtract_NpgsqlCidr_and_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Subtract(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT n."Cidr" - @p
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void SameFamily_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.SameFamily(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT inet_same_family(n."Cidr", @p)
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void Merge_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ var cidr = new NpgsqlCidr(IPAddress.Any, default);
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Merge(x.Cidr, cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+@p='0.0.0.0/0' (DbType = Object)
+
+SELECT inet_merge(n."Cidr", @p)
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void BitwiseNot_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.BitwiseNot(x.Cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT ~n."Cidr"
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void Add_NpgsqlCidr_and_int()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Add(x.Cidr, 1))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT n."Cidr" + 1
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void Subtract_NpgsqlCidr_and_int()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Subtract(x.Cidr, 1))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT n."Cidr" - 1
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void Abbreviate_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Abbreviate(x.Cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT abbrev(n."Cidr")
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void Broadcast_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Broadcast(x.Cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT broadcast(n."Cidr")
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void Family_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Family(x.Cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT family(n."Cidr")
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void Host_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Host(x.Cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT host(n."Cidr")
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void HostMask_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.HostMask(x.Cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT hostmask(n."Cidr")
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void MaskLength_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.MaskLength(x.Cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT masklen(n."Cidr")
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void Netmask_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Netmask(x.Cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT netmask(n."Cidr")
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void Network_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Network(x.Cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT network(n."Cidr")
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void SetMaskLength_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.SetMaskLength(x.Cidr, default))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT set_masklen(n."Cidr", 0)
+FROM "NetTestEntities" AS n
+""");
+ }
+
+ [Fact]
+ public void Text_NpgsqlCidr()
+ {
+ using var context = CreateContext();
+ _ = context.NetTestEntities
+ .Select(x => EF.Functions.Text(x.Cidr))
+ .ToArray();
+
+ AssertSql(
+ """
+SELECT text(n."Cidr")
+FROM "NetTestEntities" AS n
+""");
+ }
+
+#pragma warning restore CS0618
+
+ #endregion Obsolete (NpgsqlCidr)
+
+ #region Fixtures
+
+ ///
+ /// Represents a fixture suitable for testing network address operators.
+ ///
+ public class NetworkAddressQueryNpgsqlFixture : SharedStoreFixtureBase
+ {
+ protected override string StoreName
+ => "NetworkQueryTest";
+
+ protected override ITestStoreFactory TestStoreFactory
+ => NpgsqlTestStoreFactory.Instance;
+
+ public TestSqlLoggerFactory TestSqlLoggerFactory
+ => (TestSqlLoggerFactory)ListLoggerFactory;
+
+ protected override Task SeedAsync(NetContext context)
+ => NetContext.SeedAsync(context);
+ }
+
+ ///
+ /// Represents an entity suitable for testing network address operators.
+ ///
+ public class NetTestEntity
+ {
+ // ReSharper disable once UnusedMember.Global
+ ///
+ /// The primary key.
+ ///
+ [Key]
+ public int Id { get; set; }
+
+ ///
+ /// The network address.
+ ///
+ public IPAddress Inet { get; set; } = null!;
+
+ ///
+ /// The network address.
+ ///
+ public IPNetwork IPNetwork { get; set; }
///
/// The network address.
///
+ [Obsolete("NpgsqlCidr is obsolete, replaced by .NET IPNetwork")]
public NpgsqlCidr Cidr { get; set; }
///
@@ -1548,7 +2132,10 @@ public static async Task SeedAsync(NetContext context)
{
Id = i,
Inet = ip,
+#pragma warning disable CS0618 // NpgsqlCidr is obsolete, replaced by .NET IPNetwork
Cidr = new NpgsqlCidr(IPAddress.Parse("192.168.1.0"), 24),
+#pragma warning restore CS0618
+ IPNetwork = new IPNetwork(IPAddress.Parse("192.168.1.0"), 24),
Macaddr = macaddr,
Macaddr8 = macaddr8,
TextInet = ip.ToString(),
diff --git a/test/EFCore.PG.Tests/Storage/NpgsqlTypeMappingSourceTest.cs b/test/EFCore.PG.Tests/Storage/NpgsqlTypeMappingSourceTest.cs
index a347e04c1d..d31012889d 100644
--- a/test/EFCore.PG.Tests/Storage/NpgsqlTypeMappingSourceTest.cs
+++ b/test/EFCore.PG.Tests/Storage/NpgsqlTypeMappingSourceTest.cs
@@ -1,3 +1,5 @@
+using System.Net;
+using System.Net.NetworkInformation;
using Microsoft.EntityFrameworkCore.Storage.Json;
using NetTopologySuite.Geometries;
using Npgsql.EntityFrameworkCore.PostgreSQL.Infrastructure;
@@ -47,6 +49,7 @@ public class NpgsqlTypeMappingSourceTest
[InlineData("xid", typeof(uint), null, null, null, false)]
[InlineData("xid8", typeof(ulong), null, null, null, false)]
[InlineData("jsonpath", typeof(string), null, null, null, false)]
+ [InlineData("cidr", typeof(IPNetwork), null, null, null, false)]
public void By_StoreType(string typeName, Type type, int? size, int? precision, int? scale, bool fixedLength)
{
var mapping = CreateTypeMappingSource().FindMapping(typeName);
@@ -124,6 +127,12 @@ public void Timestamp_without_time_zone_Array_5()
[InlineData(typeof(List>), "int4multirange")]
[InlineData(typeof(Geometry), "geometry")]
[InlineData(typeof(Point), "geometry")]
+ [InlineData(typeof(IPAddress), "inet")]
+ [InlineData(typeof(IPNetwork), "cidr")]
+#pragma warning disable CS0618 // NpgsqlCidr is obsolete, replaced by .NET IPNetwork
+ [InlineData(typeof(NpgsqlCidr), "cidr")] // legacy
+#pragma warning restore CS0618
+ [InlineData(typeof(PhysicalAddress), "macaddr")]
public void By_ClrType(Type clrType, string expectedStoreType)
{
var mapping = CreateTypeMappingSource().FindMapping(clrType);
diff --git a/test/EFCore.PG.Tests/Storage/NpgsqlTypeMappingTest.cs b/test/EFCore.PG.Tests/Storage/NpgsqlTypeMappingTest.cs
index d7a16e8701..bfefb835a6 100644
--- a/test/EFCore.PG.Tests/Storage/NpgsqlTypeMappingTest.cs
+++ b/test/EFCore.PG.Tests/Storage/NpgsqlTypeMappingTest.cs
@@ -282,13 +282,27 @@ public void GenerateCodeLiteral_returns_inet_literal()
[Fact]
public void GenerateSqlLiteral_returns_cidr_literal()
- => Assert.Equal("CIDR '192.168.1.0/24'", GetMapping("cidr").GenerateSqlLiteral(new NpgsqlCidr(IPAddress.Parse("192.168.1.0"), 24)));
+ => Assert.Equal("CIDR '192.168.1.0/24'", GetMapping("cidr").GenerateSqlLiteral(new IPNetwork(IPAddress.Parse("192.168.1.0"), 24)));
[Fact]
public void GenerateCodeLiteral_returns_cidr_literal()
+ => Assert.Equal(
+ """new System.Net.IPNetwork(System.Net.IPAddress.Parse("192.168.1.0"), 24)""",
+ CodeLiteral(new IPNetwork(IPAddress.Parse("192.168.1.0"), 24)));
+
+#pragma warning disable CS0618 // NpgsqlCidr is obsolete, replaced by .NET IPNetwork
+ [Fact]
+ public void GenerateSqlLiteral_returns_legacy_cidr_literal()
+ => Assert.Equal(
+ "CIDR '192.168.1.0/24'",
+ GetMapping(typeof(NpgsqlCidr), "cidr").GenerateSqlLiteral(new NpgsqlCidr(IPAddress.Parse("192.168.1.0"), 24)));
+
+ [Fact]
+ public void GenerateCodeLiteral_returns_legacy_cidr_literal()
=> Assert.Equal(
"""new NpgsqlTypes.NpgsqlCidr(System.Net.IPAddress.Parse("192.168.1.0"), (byte)24)""",
CodeLiteral(new NpgsqlCidr(IPAddress.Parse("192.168.1.0"), 24)));
+#pragma warning restore CS0618
#endregion Networking