Skip to content

Commit a1f1022

Browse files
authored
Make the cidr<->IPNetwork mapping the default (npgsql#5950)
Closes npgsql#5891
1 parent d606795 commit a1f1022

File tree

4 files changed

+19
-12
lines changed

4 files changed

+19
-12
lines changed

src/Npgsql/Internal/Converters/Networking/NpgsqlCidrConverter.cs

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// ReSharper disable once CheckNamespace
44
namespace Npgsql.Internal.Converters;
55

6+
#pragma warning disable CS0618 // NpgsqlCidr is obsolete
67
sealed class NpgsqlCidrConverter : PgBufferedConverter<NpgsqlCidr>
78
{
89
public override bool CanConvert(DataFormat format, out BufferRequirements bufferRequirements)
@@ -20,3 +21,4 @@ protected override NpgsqlCidr ReadCore(PgReader reader)
2021
protected override void WriteCore(PgWriter writer, NpgsqlCidr value)
2122
=> NpgsqlInetConverter.WriteImpl(writer, (value.Address, value.Netmask), isCidr: true);
2223
}
24+
#pragma warning restore CS0618

src/Npgsql/Internal/ResolverFactories/NetworkTypeInfoResolverFactory.cs

+9-5
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,13 @@ static TypeInfoMappingCollection AddMappings(TypeInfoMappingCollection mappings)
4848
static (options, mapping, _) => mapping.CreateInfo(options, new NpgsqlInetConverter()));
4949

5050
// cidr
51-
mappings.AddStructType<NpgsqlCidr>(DataTypeNames.Cidr,
52-
static (options, mapping, _) => mapping.CreateInfo(options, new NpgsqlCidrConverter()), isDefault: true);
53-
5451
mappings.AddStructType<IPNetwork>(DataTypeNames.Cidr,
55-
static (options, mapping, _) => mapping.CreateInfo(options, new IPNetworkConverter()));
52+
static (options, mapping, _) => mapping.CreateInfo(options, new IPNetworkConverter()), isDefault: true);
53+
54+
#pragma warning disable CS0618 // NpgsqlCidr is obsolete
55+
mappings.AddStructType<NpgsqlCidr>(DataTypeNames.Cidr,
56+
static (options, mapping, _) => mapping.CreateInfo(options, new NpgsqlCidrConverter()));
57+
#pragma warning restore CS0618
5658

5759
return mappings;
5860
}
@@ -77,8 +79,10 @@ static TypeInfoMappingCollection AddMappings(TypeInfoMappingCollection mappings)
7779
mappings.AddStructArrayType<NpgsqlInet>(DataTypeNames.Inet);
7880

7981
// cidr
80-
mappings.AddStructArrayType<NpgsqlCidr>(DataTypeNames.Cidr);
8182
mappings.AddStructArrayType<IPNetwork>(DataTypeNames.Cidr);
83+
#pragma warning disable CS0618 // NpgsqlCidr is obsolete
84+
mappings.AddStructArrayType<NpgsqlCidr>(DataTypeNames.Cidr);
85+
#pragma warning restore CS0618
8286

8387
return mappings;
8488
}

src/Npgsql/NpgsqlTypes/NpgsqlTypes.cs

+1
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,7 @@ static void CheckAddressFamily(IPAddress address)
488488
/// <remarks>
489489
/// https://www.postgresql.org/docs/current/static/datatype-net-types.html
490490
/// </remarks>
491+
[Obsolete("Use .NET IPNetwork instead of NpgsqlCidr to map to PostgreSQL cidr")]
491492
public readonly record struct NpgsqlCidr
492493
{
493494
public IPAddress Address { get; }

test/Npgsql.Tests/Types/NetworkTypeTests.cs

+7-7
Original file line numberDiff line numberDiff line change
@@ -53,23 +53,23 @@ public Task IPAddress_Any()
5353
=> AssertTypeWrite(IPAddress.Any, "0.0.0.0/32", "inet", NpgsqlDbType.Inet, skipArrayCheck: true);
5454

5555
[Test]
56-
public Task Cidr()
56+
public Task IPNetwork_as_cidr()
5757
=> AssertType(
58-
new NpgsqlCidr(IPAddress.Parse("192.168.1.0"), netmask: 24),
58+
new IPNetwork(IPAddress.Parse("192.168.1.0"), 24),
5959
"192.168.1.0/24",
6060
"cidr",
61-
NpgsqlDbType.Cidr,
62-
isDefaultForWriting: false);
61+
NpgsqlDbType.Cidr);
6362

63+
#pragma warning disable CS0618 // NpgsqlCidr is obsolete
6464
[Test]
65-
public Task IPNetwork_as_cidr()
65+
public Task NpgsqlCidr_as_Cidr()
6666
=> AssertType(
67-
new IPNetwork(IPAddress.Parse("192.168.1.0"), 24),
67+
new NpgsqlCidr(IPAddress.Parse("192.168.1.0"), netmask: 24),
6868
"192.168.1.0/24",
6969
"cidr",
7070
NpgsqlDbType.Cidr,
71-
isDefaultForWriting: false,
7271
isDefaultForReading: false);
72+
#pragma warning restore CS0618
7373

7474
[Test]
7575
public Task Inet_v4_as_NpgsqlInet()

0 commit comments

Comments
 (0)