Skip to content

Commit 8c7223c

Browse files
fix: seaparate array data types to their own table
1 parent 16271ea commit 8c7223c

27 files changed

Lines changed: 2728 additions & 1870 deletions

end2end/EndToEndScaffold/Templates/PostgresTests.cs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ public async Task TestPostgresArrayTypes(
225225
DateTime[] cDateArray,
226226
DateTime[] cTimestampArray)
227227
{
228-
await QuerySql.InsertPostgresTypes(new QuerySql.InsertPostgresTypesArgs
228+
await QuerySql.InsertPostgresArrayTypes(new QuerySql.InsertPostgresArrayTypesArgs
229229
{
230230
CBytea = cBytea,
231231
CBooleanArray = cBooleanArray,
@@ -236,7 +236,7 @@ await QuerySql.InsertPostgresTypes(new QuerySql.InsertPostgresTypesArgs
236236
CTimestampArray = cTimestampArray
237237
});
238238
239-
var expected = new QuerySql.GetPostgresTypesRow
239+
var expected = new QuerySql.GetPostgresArrayTypesRow
240240
{
241241
CBytea = cBytea,
242242
CBooleanArray = cBooleanArray,
@@ -246,10 +246,10 @@ await QuerySql.InsertPostgresTypes(new QuerySql.InsertPostgresTypesArgs
246246
CDateArray = cDateArray,
247247
CTimestampArray = cTimestampArray
248248
};
249-
var actual = await QuerySql.GetPostgresTypes();
249+
var actual = await QuerySql.GetPostgresArrayTypes();
250250
AssertSingularEquals(expected, actual{{Consts.UnknownRecordValuePlaceholder}});
251251
252-
void AssertSingularEquals(QuerySql.GetPostgresTypesRow x, QuerySql.GetPostgresTypesRow y)
252+
void AssertSingularEquals(QuerySql.GetPostgresArrayTypesRow x, QuerySql.GetPostgresArrayTypesRow y)
253253
{
254254
Assert.That(x.CBytea, Is.EqualTo(y.CBytea));
255255
Assert.That(x.CTextArray, Is.EqualTo(y.CTextArray));
@@ -597,21 +597,25 @@ public async Task TestArrayCopyFrom(
597597
byte[] cBytea)
598598
{
599599
var batchArgs = Enumerable.Range(0, batchSize)
600-
.Select(_ => new QuerySql.InsertPostgresTypesBatchArgs
600+
.Select(_ => new QuerySql.InsertPostgresArrayTypesBatchArgs
601601
{
602602
CBytea = cBytea
603603
})
604604
.ToList();
605-
await QuerySql.InsertPostgresTypesBatch(batchArgs);
606-
var expected = new QuerySql.GetPostgresTypesCntRow
605+
await QuerySql.InsertPostgresArrayTypesBatch(batchArgs);
606+
var expected = new QuerySql.GetPostgresArrayTypesCntRow
607607
{
608608
Cnt = batchSize,
609609
CBytea = cBytea
610610
};
611-
var actual = await QuerySql.GetPostgresTypesCnt();
611+
612+
var actual = await QuerySql.GetPostgresArrayTypesCnt();
613+
AssertSingularEquals(expected, actual{{Consts.UnknownRecordValuePlaceholder}});
612614
613-
Assert.That(actual{{Consts.UnknownRecordValuePlaceholder}}.Cnt, Is.EqualTo(expected.Cnt));
614-
Assert.That(actual{{Consts.UnknownRecordValuePlaceholder}}.CBytea, Is.EqualTo(expected.CBytea));
615+
void AssertSingularEquals(QuerySql.GetPostgresArrayTypesCntRow x, QuerySql.GetPostgresArrayTypesCntRow y)
616+
{
617+
Assert.That(x.Cnt, Is.EqualTo(y.Cnt));
618+
}
615619
}
616620
"""
617621
},

end2end/EndToEndTests/NpgsqlDapperTester.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ public async Task EmptyTestsTable()
1616
await QuerySql.TruncateAuthors();
1717
await QuerySql.TruncatePostgresTypes();
1818
await QuerySql.TruncatePostgresGeoTypes();
19+
await QuerySql.TruncatePostgresArrayTypes();
1920
}
2021
}

end2end/EndToEndTests/NpgsqlDapperTester.generated.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -406,8 +406,8 @@ private static IEnumerable<TestCaseData> PostgresArrayTypesTestCases
406406
[TestCaseSource(nameof(PostgresArrayTypesTestCases))]
407407
public async Task TestPostgresArrayTypes(byte[] cBytea, bool[] cBooleanArray, string[] cTextArray, int[] cIntegerArray, decimal[] cDecimalArray, DateTime[] cDateArray, DateTime[] cTimestampArray)
408408
{
409-
await QuerySql.InsertPostgresTypes(new QuerySql.InsertPostgresTypesArgs { CBytea = cBytea, CBooleanArray = cBooleanArray, CTextArray = cTextArray, CIntegerArray = cIntegerArray, CDecimalArray = cDecimalArray, CDateArray = cDateArray, CTimestampArray = cTimestampArray });
410-
var expected = new QuerySql.GetPostgresTypesRow
409+
await QuerySql.InsertPostgresArrayTypes(new QuerySql.InsertPostgresArrayTypesArgs { CBytea = cBytea, CBooleanArray = cBooleanArray, CTextArray = cTextArray, CIntegerArray = cIntegerArray, CDecimalArray = cDecimalArray, CDateArray = cDateArray, CTimestampArray = cTimestampArray });
410+
var expected = new QuerySql.GetPostgresArrayTypesRow
411411
{
412412
CBytea = cBytea,
413413
CBooleanArray = cBooleanArray,
@@ -417,9 +417,9 @@ public async Task TestPostgresArrayTypes(byte[] cBytea, bool[] cBooleanArray, st
417417
CDateArray = cDateArray,
418418
CTimestampArray = cTimestampArray
419419
};
420-
var actual = await QuerySql.GetPostgresTypes();
420+
var actual = await QuerySql.GetPostgresArrayTypes();
421421
AssertSingularEquals(expected, actual);
422-
void AssertSingularEquals(QuerySql.GetPostgresTypesRow x, QuerySql.GetPostgresTypesRow y)
422+
void AssertSingularEquals(QuerySql.GetPostgresArrayTypesRow x, QuerySql.GetPostgresArrayTypesRow y)
423423
{
424424
Assert.That(x.CBytea, Is.EqualTo(y.CBytea));
425425
Assert.That(x.CTextArray, Is.EqualTo(y.CTextArray));
@@ -700,16 +700,19 @@ void AssertSingularEquals(QuerySql.GetPostgresTypesCntRow x, QuerySql.GetPostgre
700700
[TestCase(10, null)]
701701
public async Task TestArrayCopyFrom(int batchSize, byte[] cBytea)
702702
{
703-
var batchArgs = Enumerable.Range(0, batchSize).Select(_ => new QuerySql.InsertPostgresTypesBatchArgs { CBytea = cBytea }).ToList();
704-
await QuerySql.InsertPostgresTypesBatch(batchArgs);
705-
var expected = new QuerySql.GetPostgresTypesCntRow
703+
var batchArgs = Enumerable.Range(0, batchSize).Select(_ => new QuerySql.InsertPostgresArrayTypesBatchArgs { CBytea = cBytea }).ToList();
704+
await QuerySql.InsertPostgresArrayTypesBatch(batchArgs);
705+
var expected = new QuerySql.GetPostgresArrayTypesCntRow
706706
{
707707
Cnt = batchSize,
708708
CBytea = cBytea
709709
};
710-
var actual = await QuerySql.GetPostgresTypesCnt();
711-
Assert.That(actual.Cnt, Is.EqualTo(expected.Cnt));
712-
Assert.That(actual.CBytea, Is.EqualTo(expected.CBytea));
710+
var actual = await QuerySql.GetPostgresArrayTypesCnt();
711+
AssertSingularEquals(expected, actual);
712+
void AssertSingularEquals(QuerySql.GetPostgresArrayTypesCntRow x, QuerySql.GetPostgresArrayTypesCntRow y)
713+
{
714+
Assert.That(x.Cnt, Is.EqualTo(y.Cnt));
715+
}
713716
}
714717

715718
private static IEnumerable<TestCaseData> PostgresGeoTypesTestCases

end2end/EndToEndTests/NpgsqlTester.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ public async Task EmptyTestsTables()
1616
await QuerySql.TruncateAuthors();
1717
await QuerySql.TruncatePostgresTypes();
1818
await QuerySql.TruncatePostgresGeoTypes();
19+
await QuerySql.TruncatePostgresArrayTypes();
1920
}
2021
}

end2end/EndToEndTests/NpgsqlTester.generated.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -406,8 +406,8 @@ private static IEnumerable<TestCaseData> PostgresArrayTypesTestCases
406406
[TestCaseSource(nameof(PostgresArrayTypesTestCases))]
407407
public async Task TestPostgresArrayTypes(byte[] cBytea, bool[] cBooleanArray, string[] cTextArray, int[] cIntegerArray, decimal[] cDecimalArray, DateTime[] cDateArray, DateTime[] cTimestampArray)
408408
{
409-
await QuerySql.InsertPostgresTypes(new QuerySql.InsertPostgresTypesArgs { CBytea = cBytea, CBooleanArray = cBooleanArray, CTextArray = cTextArray, CIntegerArray = cIntegerArray, CDecimalArray = cDecimalArray, CDateArray = cDateArray, CTimestampArray = cTimestampArray });
410-
var expected = new QuerySql.GetPostgresTypesRow
409+
await QuerySql.InsertPostgresArrayTypes(new QuerySql.InsertPostgresArrayTypesArgs { CBytea = cBytea, CBooleanArray = cBooleanArray, CTextArray = cTextArray, CIntegerArray = cIntegerArray, CDecimalArray = cDecimalArray, CDateArray = cDateArray, CTimestampArray = cTimestampArray });
410+
var expected = new QuerySql.GetPostgresArrayTypesRow
411411
{
412412
CBytea = cBytea,
413413
CBooleanArray = cBooleanArray,
@@ -417,9 +417,9 @@ public async Task TestPostgresArrayTypes(byte[] cBytea, bool[] cBooleanArray, st
417417
CDateArray = cDateArray,
418418
CTimestampArray = cTimestampArray
419419
};
420-
var actual = await QuerySql.GetPostgresTypes();
420+
var actual = await QuerySql.GetPostgresArrayTypes();
421421
AssertSingularEquals(expected, actual.Value);
422-
void AssertSingularEquals(QuerySql.GetPostgresTypesRow x, QuerySql.GetPostgresTypesRow y)
422+
void AssertSingularEquals(QuerySql.GetPostgresArrayTypesRow x, QuerySql.GetPostgresArrayTypesRow y)
423423
{
424424
Assert.That(x.CBytea, Is.EqualTo(y.CBytea));
425425
Assert.That(x.CTextArray, Is.EqualTo(y.CTextArray));
@@ -700,16 +700,19 @@ void AssertSingularEquals(QuerySql.GetPostgresTypesCntRow x, QuerySql.GetPostgre
700700
[TestCase(10, null)]
701701
public async Task TestArrayCopyFrom(int batchSize, byte[] cBytea)
702702
{
703-
var batchArgs = Enumerable.Range(0, batchSize).Select(_ => new QuerySql.InsertPostgresTypesBatchArgs { CBytea = cBytea }).ToList();
704-
await QuerySql.InsertPostgresTypesBatch(batchArgs);
705-
var expected = new QuerySql.GetPostgresTypesCntRow
703+
var batchArgs = Enumerable.Range(0, batchSize).Select(_ => new QuerySql.InsertPostgresArrayTypesBatchArgs { CBytea = cBytea }).ToList();
704+
await QuerySql.InsertPostgresArrayTypesBatch(batchArgs);
705+
var expected = new QuerySql.GetPostgresArrayTypesCntRow
706706
{
707707
Cnt = batchSize,
708708
CBytea = cBytea
709709
};
710-
var actual = await QuerySql.GetPostgresTypesCnt();
711-
Assert.That(actual.Value.Cnt, Is.EqualTo(expected.Cnt));
712-
Assert.That(actual.Value.CBytea, Is.EqualTo(expected.CBytea));
710+
var actual = await QuerySql.GetPostgresArrayTypesCnt();
711+
AssertSingularEquals(expected, actual.Value);
712+
void AssertSingularEquals(QuerySql.GetPostgresArrayTypesCntRow x, QuerySql.GetPostgresArrayTypesCntRow y)
713+
{
714+
Assert.That(x.Cnt, Is.EqualTo(y.Cnt));
715+
}
713716
}
714717

715718
private static IEnumerable<TestCaseData> PostgresGeoTypesTestCases

end2end/EndToEndTestsLegacy/NpgsqlDapperTester.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public async Task EmptyTestsTable()
1616
await QuerySql.TruncateAuthors();
1717
await QuerySql.TruncatePostgresTypes();
1818
await QuerySql.TruncatePostgresGeoTypes();
19+
await QuerySql.TruncatePostgresArrayTypes();
1920
}
2021
}
2122
}

end2end/EndToEndTestsLegacy/NpgsqlDapperTester.generated.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -406,8 +406,8 @@ private static IEnumerable<TestCaseData> PostgresArrayTypesTestCases
406406
[TestCaseSource(nameof(PostgresArrayTypesTestCases))]
407407
public async Task TestPostgresArrayTypes(byte[] cBytea, bool[] cBooleanArray, string[] cTextArray, int[] cIntegerArray, decimal[] cDecimalArray, DateTime[] cDateArray, DateTime[] cTimestampArray)
408408
{
409-
await QuerySql.InsertPostgresTypes(new QuerySql.InsertPostgresTypesArgs { CBytea = cBytea, CBooleanArray = cBooleanArray, CTextArray = cTextArray, CIntegerArray = cIntegerArray, CDecimalArray = cDecimalArray, CDateArray = cDateArray, CTimestampArray = cTimestampArray });
410-
var expected = new QuerySql.GetPostgresTypesRow
409+
await QuerySql.InsertPostgresArrayTypes(new QuerySql.InsertPostgresArrayTypesArgs { CBytea = cBytea, CBooleanArray = cBooleanArray, CTextArray = cTextArray, CIntegerArray = cIntegerArray, CDecimalArray = cDecimalArray, CDateArray = cDateArray, CTimestampArray = cTimestampArray });
410+
var expected = new QuerySql.GetPostgresArrayTypesRow
411411
{
412412
CBytea = cBytea,
413413
CBooleanArray = cBooleanArray,
@@ -417,9 +417,9 @@ public async Task TestPostgresArrayTypes(byte[] cBytea, bool[] cBooleanArray, st
417417
CDateArray = cDateArray,
418418
CTimestampArray = cTimestampArray
419419
};
420-
var actual = await QuerySql.GetPostgresTypes();
420+
var actual = await QuerySql.GetPostgresArrayTypes();
421421
AssertSingularEquals(expected, actual);
422-
void AssertSingularEquals(QuerySql.GetPostgresTypesRow x, QuerySql.GetPostgresTypesRow y)
422+
void AssertSingularEquals(QuerySql.GetPostgresArrayTypesRow x, QuerySql.GetPostgresArrayTypesRow y)
423423
{
424424
Assert.That(x.CBytea, Is.EqualTo(y.CBytea));
425425
Assert.That(x.CTextArray, Is.EqualTo(y.CTextArray));
@@ -700,16 +700,19 @@ void AssertSingularEquals(QuerySql.GetPostgresTypesCntRow x, QuerySql.GetPostgre
700700
[TestCase(10, null)]
701701
public async Task TestArrayCopyFrom(int batchSize, byte[] cBytea)
702702
{
703-
var batchArgs = Enumerable.Range(0, batchSize).Select(_ => new QuerySql.InsertPostgresTypesBatchArgs { CBytea = cBytea }).ToList();
704-
await QuerySql.InsertPostgresTypesBatch(batchArgs);
705-
var expected = new QuerySql.GetPostgresTypesCntRow
703+
var batchArgs = Enumerable.Range(0, batchSize).Select(_ => new QuerySql.InsertPostgresArrayTypesBatchArgs { CBytea = cBytea }).ToList();
704+
await QuerySql.InsertPostgresArrayTypesBatch(batchArgs);
705+
var expected = new QuerySql.GetPostgresArrayTypesCntRow
706706
{
707707
Cnt = batchSize,
708708
CBytea = cBytea
709709
};
710-
var actual = await QuerySql.GetPostgresTypesCnt();
711-
Assert.That(actual.Cnt, Is.EqualTo(expected.Cnt));
712-
Assert.That(actual.CBytea, Is.EqualTo(expected.CBytea));
710+
var actual = await QuerySql.GetPostgresArrayTypesCnt();
711+
AssertSingularEquals(expected, actual);
712+
void AssertSingularEquals(QuerySql.GetPostgresArrayTypesCntRow x, QuerySql.GetPostgresArrayTypesCntRow y)
713+
{
714+
Assert.That(x.Cnt, Is.EqualTo(y.Cnt));
715+
}
713716
}
714717

715718
private static IEnumerable<TestCaseData> PostgresGeoTypesTestCases

end2end/EndToEndTestsLegacy/NpgsqlTester.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public async Task EmptyTestsTable()
1616
await QuerySql.TruncateAuthors();
1717
await QuerySql.TruncatePostgresTypes();
1818
await QuerySql.TruncatePostgresGeoTypes();
19+
await QuerySql.TruncatePostgresArrayTypes();
1920
}
2021
}
2122
}

end2end/EndToEndTestsLegacy/NpgsqlTester.generated.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -406,8 +406,8 @@ private static IEnumerable<TestCaseData> PostgresArrayTypesTestCases
406406
[TestCaseSource(nameof(PostgresArrayTypesTestCases))]
407407
public async Task TestPostgresArrayTypes(byte[] cBytea, bool[] cBooleanArray, string[] cTextArray, int[] cIntegerArray, decimal[] cDecimalArray, DateTime[] cDateArray, DateTime[] cTimestampArray)
408408
{
409-
await QuerySql.InsertPostgresTypes(new QuerySql.InsertPostgresTypesArgs { CBytea = cBytea, CBooleanArray = cBooleanArray, CTextArray = cTextArray, CIntegerArray = cIntegerArray, CDecimalArray = cDecimalArray, CDateArray = cDateArray, CTimestampArray = cTimestampArray });
410-
var expected = new QuerySql.GetPostgresTypesRow
409+
await QuerySql.InsertPostgresArrayTypes(new QuerySql.InsertPostgresArrayTypesArgs { CBytea = cBytea, CBooleanArray = cBooleanArray, CTextArray = cTextArray, CIntegerArray = cIntegerArray, CDecimalArray = cDecimalArray, CDateArray = cDateArray, CTimestampArray = cTimestampArray });
410+
var expected = new QuerySql.GetPostgresArrayTypesRow
411411
{
412412
CBytea = cBytea,
413413
CBooleanArray = cBooleanArray,
@@ -417,9 +417,9 @@ public async Task TestPostgresArrayTypes(byte[] cBytea, bool[] cBooleanArray, st
417417
CDateArray = cDateArray,
418418
CTimestampArray = cTimestampArray
419419
};
420-
var actual = await QuerySql.GetPostgresTypes();
420+
var actual = await QuerySql.GetPostgresArrayTypes();
421421
AssertSingularEquals(expected, actual);
422-
void AssertSingularEquals(QuerySql.GetPostgresTypesRow x, QuerySql.GetPostgresTypesRow y)
422+
void AssertSingularEquals(QuerySql.GetPostgresArrayTypesRow x, QuerySql.GetPostgresArrayTypesRow y)
423423
{
424424
Assert.That(x.CBytea, Is.EqualTo(y.CBytea));
425425
Assert.That(x.CTextArray, Is.EqualTo(y.CTextArray));
@@ -700,16 +700,19 @@ void AssertSingularEquals(QuerySql.GetPostgresTypesCntRow x, QuerySql.GetPostgre
700700
[TestCase(10, null)]
701701
public async Task TestArrayCopyFrom(int batchSize, byte[] cBytea)
702702
{
703-
var batchArgs = Enumerable.Range(0, batchSize).Select(_ => new QuerySql.InsertPostgresTypesBatchArgs { CBytea = cBytea }).ToList();
704-
await QuerySql.InsertPostgresTypesBatch(batchArgs);
705-
var expected = new QuerySql.GetPostgresTypesCntRow
703+
var batchArgs = Enumerable.Range(0, batchSize).Select(_ => new QuerySql.InsertPostgresArrayTypesBatchArgs { CBytea = cBytea }).ToList();
704+
await QuerySql.InsertPostgresArrayTypesBatch(batchArgs);
705+
var expected = new QuerySql.GetPostgresArrayTypesCntRow
706706
{
707707
Cnt = batchSize,
708708
CBytea = cBytea
709709
};
710-
var actual = await QuerySql.GetPostgresTypesCnt();
711-
Assert.That(actual.Cnt, Is.EqualTo(expected.Cnt));
712-
Assert.That(actual.CBytea, Is.EqualTo(expected.CBytea));
710+
var actual = await QuerySql.GetPostgresArrayTypesCnt();
711+
AssertSingularEquals(expected, actual);
712+
void AssertSingularEquals(QuerySql.GetPostgresArrayTypesCntRow x, QuerySql.GetPostgresArrayTypesCntRow y)
713+
{
714+
Assert.That(x.Cnt, Is.EqualTo(y.Cnt));
715+
}
713716
}
714717

715718
private static IEnumerable<TestCaseData> PostgresGeoTypesTestCases

examples/NpgsqlDapperExample/Models.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,6 @@ public class PostgresType
5353
public PhysicalAddress? CMacaddr { get; init; }
5454
public string? CMacaddr8 { get; init; }
5555
public Guid? CUuid { get; init; }
56-
public byte[]? CBytea { get; init; }
57-
public bool[]? CBooleanArray { get; init; }
58-
public string[]? CTextArray { get; init; }
59-
public int[]? CIntegerArray { get; init; }
60-
public decimal[]? CDecimalArray { get; init; }
61-
public DateTime[]? CDateArray { get; init; }
62-
public DateTime[]? CTimestampArray { get; init; }
6356
};
6457
public class PostgresGeometricType
6558
{
@@ -70,4 +63,14 @@ public class PostgresGeometricType
7063
public NpgsqlPath? CPath { get; init; }
7164
public NpgsqlPolygon? CPolygon { get; init; }
7265
public NpgsqlCircle? CCircle { get; init; }
66+
};
67+
public class PostgresArrayType
68+
{
69+
public byte[]? CBytea { get; init; }
70+
public bool[]? CBooleanArray { get; init; }
71+
public string[]? CTextArray { get; init; }
72+
public int[]? CIntegerArray { get; init; }
73+
public decimal[]? CDecimalArray { get; init; }
74+
public DateTime[]? CDateArray { get; init; }
75+
public DateTime[]? CTimestampArray { get; init; }
7376
};

0 commit comments

Comments
 (0)