Skip to content

Commit 76b65c2

Browse files
authored
Generalize column management to use ColNum alias, which can be short or int (for backward compatibility) (#186)
* Optimize `ColumnIndexesToBeLoaded` * Make `ColumnIndexesToBeLoaded` to be `List<short>` * Generalize to ColNum type * Generalize to ColNum type * Generalize to ColNum type * Generalize to ColNum type * Fix Materializer * Fix GetTupleAccessArgument() * Fix translation * Fix translation * Fix translation
1 parent ee1c8dd commit 76b65c2

File tree

109 files changed

+531
-545
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+531
-545
lines changed

Directory.Build.props

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
<!-- hard binding to net8, no property and env variable allowed-->
5252
<TargetFrameworks>net8.0</TargetFrameworks>
5353
</PropertyGroup>
54-
54+
5555
<!-- Debug-NET7, Release-NET7 are mostly for development convenience -->
5656
<PropertyGroup Condition = "$(Configuration.Contains('NET7')) == 'true'">
5757
<!-- hard binding to net7, no property and env variable allowed-->
@@ -86,7 +86,7 @@
8686
<PropertyGroup>
8787
<NoLogo>true</NoLogo>
8888
<SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage>
89-
<LangVersion>10.0</LangVersion>
89+
<LangVersion>12.0</LangVersion>
9090
<SolutionDir Condition="$(SolutionDir) == ''">$([MSBuild]::EnsureTrailingSlash(
9191
$([MSBuild]::GetDirectoryNameOfFileAbove('$(MSBuildThisFileDirectory)', 'Orm.sln'))))</SolutionDir>
9292
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
@@ -131,6 +131,8 @@
131131
<PackagePath>.</PackagePath>
132132
<Pack>true</Pack>
133133
</None>
134+
135+
<Using Include="System.Int16" Alias="ColNum" />
134136
</ItemGroup>
135137

136138
<Import Condition="Exists('User.Directory.Build.props')" Project="User.Directory.Build.props" />

Orm/Xtensive.Orm.Tests.Core/Collections/CollectionUtilsTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ public void RangeToArrayTest()
2626
[Test]
2727
public void RangeToListTest()
2828
{
29-
Assert.That(CollectionUtils.RangeToList(1, 10).SequenceEqual(Enumerable.Range(1, 10)));
30-
Assert.That(CollectionUtils.RangeToList(-1, 10).SequenceEqual(Enumerable.Range(-1, 10)));
29+
Assert.That(CollectionUtils.RangeToList(1, 10).SequenceEqual(Enumerable.Range(1, 10).Select(i => (ColNum)i)));
30+
Assert.That(CollectionUtils.RangeToList(-1, 10).SequenceEqual(Enumerable.Range(-1, 10).Select(i => (ColNum) i)));
3131
_ = Assert.Throws<ArgumentOutOfRangeException>(() => CollectionUtils.RangeToList(1, -10));
3232
}
3333

Orm/Xtensive.Orm.Tests.Core/Tuples/Transform/MapTransformTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class MapTransformTest
1717
public void MainTest()
1818
{
1919
Xtensive.Tuples.Tuple source = Tuple.Create(1);
20-
MapTransform transform = new MapTransform(true, TupleDescriptor.Create<byte, int, string>(), new[] {-1, 0});
20+
MapTransform transform = new MapTransform(true, TupleDescriptor.Create<byte, int, string>(), new ColNum[] {-1, 0});
2121
Xtensive.Tuples.Tuple result = transform.Apply(TupleTransformType.TransformedTuple, source);
2222
Assert.AreEqual(TupleFieldState.Default, result.GetFieldState(0));
2323
Assert.AreEqual(TupleFieldState.Available, result.GetFieldState(1));

Orm/Xtensive.Orm.Tests.Core/Tuples/Transform/MergeTransformTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public void PerformanceTest2()
120120
AdvancedComparerStruct<Xtensive.Tuples.Tuple> comparer = AdvancedComparerStruct<Xtensive.Tuples.Tuple>.Default;
121121
Xtensive.Tuples.Tuple t = Xtensive.Tuples.Tuple.Create(1);
122122
CombineTransform mt = new CombineTransform(false, t.Descriptor, t.Descriptor, t.Descriptor, t.Descriptor);
123-
SegmentTransform st = new SegmentTransform(false, mt.Descriptor, new Segment<int>(1,2));
123+
SegmentTransform st = new SegmentTransform(false, mt.Descriptor, new Segment<ColNum>(1,2));
124124
Xtensive.Tuples.Tuple wt1 = st.Apply(TupleTransformType.TransformedTuple, mt.Apply(TupleTransformType.TransformedTuple, t, t, t, t));
125125
Xtensive.Tuples.Tuple wt2 = st.Apply(TupleTransformType.TransformedTuple, mt.Apply(TupleTransformType.TransformedTuple, t, t, t, t));
126126
Xtensive.Tuples.Tuple ct1 = st.Apply(TupleTransformType.Tuple, mt.Apply(TupleTransformType.Tuple, t, t, t, t));

Orm/Xtensive.Orm.Tests.Core/Tuples/Transform/SegmentTransformTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ public void BaseTest()
2626
Xtensive.Tuples.Tuple t = Xtensive.Tuples.Tuple.Create(1, "2", 3, 4.0);
2727
TestLog.Info("Original: {0}", t);
2828

29-
SegmentTransform st = new SegmentTransform(false, t.Descriptor, new Segment<int>(1,2));
30-
SegmentTransform stro = new SegmentTransform(true, t.Descriptor, new Segment<int>(1,2));
29+
SegmentTransform st = new SegmentTransform(false, t.Descriptor, new Segment<ColNum>(1,2));
30+
SegmentTransform stro = new SegmentTransform(true, t.Descriptor, new Segment<ColNum>(1,2));
3131

3232
Xtensive.Tuples.Tuple wt1 = st.Apply(TupleTransformType.TransformedTuple, t);
3333
TestLog.Info("Wrapper: {0}", wt1);
@@ -65,7 +65,7 @@ public void PerformanceTest()
6565
{
6666
AdvancedComparerStruct<Xtensive.Tuples.Tuple> comparer = AdvancedComparerStruct<Xtensive.Tuples.Tuple>.Default;
6767
Xtensive.Tuples.Tuple t = Xtensive.Tuples.Tuple.Create(1, 2, 3, 4);
68-
SegmentTransform st = new SegmentTransform(false, t.Descriptor, new Segment<int>(1,2));
68+
SegmentTransform st = new SegmentTransform(false, t.Descriptor, new Segment<ColNum>(1,2));
6969
Xtensive.Tuples.Tuple wt1 = st.Apply(TupleTransformType.TransformedTuple, t);
7070
Xtensive.Tuples.Tuple wt2 = st.Apply(TupleTransformType.TransformedTuple, t);
7171
Xtensive.Tuples.Tuple ct1 = st.Apply(TupleTransformType.Tuple, t);

Orm/Xtensive.Orm.Tests/Rse/HeaderParseTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void MainTest()
5454
ResetState(state);
5555

5656
// Select Id, TypeId, Title
57-
CompilableProvider rsTitle = rsMain.Select(new[] { 0, 1, 2 });
57+
CompilableProvider rsTitle = rsMain.Select(new ColNum[] { 0, 1, 2 });
5858
UpdateCache(session, rsTitle.GetRecordSetReader(session, parameterContext));
5959
state = Session.Current.EntityStateCache[key, true];
6060
Assert.IsNotNull(state);
@@ -63,7 +63,7 @@ public void MainTest()
6363
ResetState(state);
6464

6565
// Select Id, TypeId, Text
66-
CompilableProvider rsText = rsMain.Select(new[] { 0, 1, 3 });
66+
CompilableProvider rsText = rsMain.Select(new ColNum[] { 0, 1, 3 });
6767
UpdateCache(session, rsText.GetRecordSetReader(session, parameterContext));
6868
state = Session.Current.EntityStateCache[key, true];
6969
Assert.IsNotNull(state);
@@ -72,7 +72,7 @@ public void MainTest()
7272
ResetState(state);
7373

7474
// Select a.Id, a.TypeId, a.Title, b.Id, b.TypeId, b.Text
75-
CompilableProvider rsJoin = rsTitle.Alias("a").Join(rsText.Alias("b"), new Pair<int>(0, 0), new Pair<int>(1, 1));
75+
CompilableProvider rsJoin = rsTitle.Alias("a").Join(rsText.Alias("b"), new Pair<ColNum>(0, 0), new Pair<ColNum>(1, 1));
7676
UpdateCache(session, rsJoin.GetRecordSetReader(session, parameterContext));
7777
state = Session.Current.EntityStateCache[key, true];
7878
Assert.IsNotNull(state);

Orm/Xtensive.Orm.Tests/Rse/IncludeProviderTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void SimpleTest()
2626
var ids = tracks.Select(supplier => (Tuple)Tuple.Create(supplier.TrackId));
2727

2828
var trackRs = Domain.Model.Types[typeof (Track)].Indexes.PrimaryIndex.GetQuery();
29-
var inRs = trackRs.Include(context => ids, "columnName", new[] {0});
29+
var inRs = trackRs.Include(context => ids, "columnName", new ColNum[] { 0 });
3030
var inIndex = inRs.Header.Columns.Count-1;
3131
var whereRs = inRs.Filter(tuple => tuple.GetValueOrDefault<bool>(inIndex));
3232
var parameterContext = new ParameterContext();

Orm/Xtensive.Orm.Tests/Storage/Prefetch/PrefetchManagerBasicTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ public void ReferencedEntityByKnownForeignKeyPrefetchTest()
373373
var parameterContext = new ParameterContext();
374374
var orderPrimaryIndex = OrderType.Indexes.PrimaryIndex;
375375
var selectedColumns = orderPrimaryIndex.ColumnIndexMap.System
376-
.Concat(EmployeeField.Columns.Select(column => orderPrimaryIndex.Columns.IndexOf(column))).ToArray();
376+
.Concat(EmployeeField.Columns.Select(column => (ColNum) orderPrimaryIndex.Columns.IndexOf(column))).ToArray();
377377
var orderQuery = OrderType.Indexes.PrimaryIndex.GetQuery()
378378
.Filter(t => t.GetValue<int>(0)==orderKey.Value.GetValue<int>(0)).Select(selectedColumns);
379379
orderQuery.GetRecordSetReader(session, parameterContext).ToEntities(0).Single();

Orm/Xtensive.Orm.Tests/Storage/Providers/Sql/CharSupportTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public void SelectCharTest()
6666
var rs = GetRseQuery<MyEntity>();
6767
var parameterContext = new ParameterContext();
6868
var result = rs
69-
.Select(new[] { rs.Header.IndexOf(charColumn) })
69+
.Select(new ColNum[] { (ColNum) rs.Header.IndexOf(charColumn) })
7070
.GetRecordSetReader(Session.Current, parameterContext)
7171
.ToEnumerable()
7272
.Select(i => i.GetValueOrDefault<char>(0))
@@ -88,7 +88,7 @@ public void CharParameterTest()
8888
var rs = GetRseQuery<MyEntity>();
8989
var parameterContext = new ParameterContext();
9090
var result = rs
91-
.Select(new[] { rs.Header.IndexOf(charColumn) })
91+
.Select(new ColNum[] { (ColNum) rs.Header.IndexOf(charColumn) })
9292
.Filter(t => t.GetValueOrDefault<char>(0) == y)
9393
.GetRecordSetReader(Session.Current, parameterContext)
9494
.ToEnumerable()
@@ -108,7 +108,7 @@ public void CharConstantTest()
108108
var rs = GetRseQuery<MyEntity>();
109109
var parameterContext = new ParameterContext();
110110
var result = rs
111-
.Select(new[] { rs.Header.IndexOf(charColumn) })
111+
.Select(new ColNum[] { (ColNum) rs.Header.IndexOf(charColumn) })
112112
.Filter(t => t.GetValueOrDefault<char>(0)=='Y')
113113
.GetRecordSetReader(Session.Current, parameterContext)
114114
.ToEnumerable()

Orm/Xtensive.Orm.Tests/Storage/Providers/Sql/TotalBatchingTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ private void CreateQueries(int amount)
9393
{
9494
for (int i = 0; i < amount; i++) {
9595
var rs = Domain.Model.Types[typeof (X)].Indexes.PrimaryIndex.GetQuery()
96-
.Aggregate(System.Array.Empty<int>(),
96+
.Aggregate(System.Array.Empty<ColNum>(),
9797
new AggregateColumnDescriptor("_count_", 0, AggregateType.Count));
9898
var compiledProvider = session.Compile(rs);
9999
var task = new QueryTask(compiledProvider, session.GetLifetimeToken(), null);

0 commit comments

Comments
 (0)