Skip to content

Commit a70a9e7

Browse files
committed
TableQueryBuilder ref fix
1 parent 81af096 commit a70a9e7

File tree

3 files changed

+13
-16
lines changed

3 files changed

+13
-16
lines changed

src/ElCamino.Azure.Data.Tables/ElCamino.Azure.Data.Tables.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<RepositoryType>git</RepositoryType>
2121
<RepositoryUrl>https://github.com/dlmelendez/identityazuretable.git</RepositoryUrl>
2222
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
23-
<Version>9.0.3</Version>
23+
<Version>9.0.4</Version>
2424
<PackageProjectUrl>https://dlmelendez.github.io/identityazuretable</PackageProjectUrl>
2525
<!--<DebugType>Full</DebugType>-->
2626
<!-- DebugType Full is needed for test code coverage, but .nuget symbols doesn't like it-->

src/ElCamino.Azure.Data.Tables/TableQueryBuilder.cs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
#if NET9_0_OR_GREATER
2-
1+

32
using System;
43
using System.Collections.Generic;
54
using System.Text;
@@ -10,15 +9,15 @@ namespace ElCamino.Azure.Data.Tables
109
/// <summary>
1110
/// This class allows for a fluent query builder for Azure Table Storage using OData.
1211
/// </summary>
13-
public ref struct TableQueryBuilder
12+
public class TableQueryBuilder
1413
{
1514
/// <summary>
1615
/// Initializes a new instance of the <see cref="TableQueryBuilder"/> class for fluent query building for Azure Table Storage using OData.
1716
/// </summary>
1817
public TableQueryBuilder() { }
1918

2019
private const int BufferSize = 1024;
21-
private Span<char> _bufferQuery = new(new char[BufferSize]);
20+
private char[] _bufferQuery = new char[BufferSize];
2221
private int _currentQueryLength = 0;
2322
private uint _filterCount = 0;
2423
private uint _beginGroupCount = 0;
@@ -32,15 +31,15 @@ public TableQueryBuilder() { }
3231
/// <summary>
3332
/// Gets the current query filter.
3433
/// </summary>
35-
public ReadOnlySpan<char> QueryFilter => _bufferQuery.Slice(0, _currentQueryLength);
34+
public ReadOnlySpan<char> QueryFilter => _bufferQuery.AsSpan().Slice(0, _currentQueryLength);
3635

3736
private void AllocateBuffer(int lengthToAdd)
3837
{
3938
if ((_currentQueryLength + lengthToAdd > _bufferQuery.Length))
4039
{
4140
Span<char> newBuffer = stackalloc char[_bufferQuery.Length + BufferSize];
4241
QueryFilter.CopyTo(newBuffer);
43-
_bufferQuery = new Span<char>([..newBuffer]);
42+
_bufferQuery = [..newBuffer];
4443
}
4544
}
4645

@@ -51,7 +50,7 @@ private void AppendCondition(ReadOnlySpan<char> condition)
5150
if (_currentQueryLength <= 0)
5251
{
5352
_bufferQuery[0] = '(';
54-
condition.CopyTo(_bufferQuery[1..]);
53+
condition.CopyTo(_bufferQuery.AsSpan()[1..]);
5554
_bufferQuery[condition.Length + 1] = ')';
5655
}
5756
else
@@ -352,4 +351,3 @@ public override string ToString()
352351
}
353352
}
354353
}
355-
#endif

tests/ElCamino.Azure.Data.Tables.Tests/TableQueryBuilderTests.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// MIT License Copyright 2020 (c) David Melendez. All rights reserved. See License.txt in the project root for license information.
2-
#if NET9_0_OR_GREATER
32

43
using System;
54
using System.Collections.Concurrent;
@@ -431,15 +430,16 @@ public async Task QueryBuilderNullPropertyBool()
431430

432431
sw.Start();
433432
TableQueryBuilder queryBuilderNull = new TableQueryBuilder();
434-
string filterNullBuilder = queryBuilderNull
433+
string filterNullBuilder = string.Empty;
434+
queryBuilderNull
435435
.BeginGroup()
436436
.AddFilter(nameof(TableEntity.PartitionKey), QueryComparison.Equal, addedEntity.PartitionKey)
437437
.CombineFilters(TableOperator.And)
438438
.AddFilter(nameof(TableEntity.RowKey), QueryComparison.Equal, addedEntity.RowKey)
439-
.EndGroup()
440-
.CombineFilters(TableOperator.And)
441-
.AddFilterBool(propertyName, QueryComparison.Equal, null)
442-
.ToString();
439+
.EndGroup().ToString();
440+
queryBuilderNull.CombineFilters(TableOperator.And)
441+
.AddFilterBool(propertyName, QueryComparison.Equal, null);
442+
filterNullBuilder = queryBuilderNull.ToString();
443443
sw.Stop();
444444
_output.WriteLine($"{nameof(filterNullBuilder)}: {sw.Elapsed.TotalMilliseconds}ms");
445445
_output.WriteLine($"{nameof(filterNullBuilder)}:{filterNullBuilder}");
@@ -550,4 +550,3 @@ public async Task QueryBuilderPropertyDate()
550550

551551
}
552552
}
553-
#endif

0 commit comments

Comments
 (0)