apache / apache/arrow

[C#] Inconsistent String Comparisons in Schema Field Retrieval Methods

Open
#44,650 5 comments 0 reactions 0 assignees View on GitHub
Component: C# Type: bug
Dominant language
C++
Stars
17.1k
Forks
4.3k
Avg merge
3d 13h
Merged PRs (30d)
88

Description

In the Schema class, there are three methods used to retrieve individual fields:

```csharp
public class Schema
{
// ...

public Field GetFieldByName(string name) => FieldsLookup[name].FirstOrDefault();

public int GetFieldIndex(string name, StringComparer comparer)
{
IEqualityComparer equalityComparer = (IEqualityComparer)comparer;
return GetFieldIndex(name, equalityComparer);
}

public int GetFieldIndex(string name, IEqualityComparer comparer = default)
{
// Implementation using the specified comparer
}
}
```

The first method (GetFieldByName) use the default string comparer, while the latter two (GetFieldIndex overloads) are using a culture aware comparator by default (`StringComparer.CurrentCulture`). This inconsistency can be confusing, as it is unclear when custom comparers are utilized.

### Component(s)

C#

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.