Skip to content

Conversation

@MaikyOzr
Copy link

@MaikyOzr MaikyOzr commented Jan 12, 2026

Fixes #30930

  • I've read the guidelines for contributing and seen the walkthrough
  • I've posted a comment on an issue with a detailed description of how I am planning to contribute and got approval from a member of the team
  • The code builds and tests pass locally (also verified by our automated build checks)
  • Commit messages follow this format:
        Summary of the changes
        - Detail 1
        - Detail 2

        Fixes #bugnumber
  • Tests for the changes have been added (for bug fixes / features)
  • Code follows the same patterns and style as existing code in this repo

- Bind Int128, UInt128, and BigInteger parameters as TEXT in SQLite.
- Add provider-level tests to verify correct binding of these large numeric types.
- This change only affects parameter binding; reading values back still returns string.
Add support for BigInteger, Int128, and UInt128 in SqliteValueBinder
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@roji roji force-pushed the main branch 2 times, most recently from 249ae47 to 6b86657 Compare January 13, 2026 17:46
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.

Comments suppressed due to low confidence (1)

test/Microsoft.Data.Sqlite.Tests/SqliteParameterTest.cs:670

  • The new types BigInteger, Int128, and UInt128 should be added to the TypesData collection to ensure comprehensive test coverage via the existing SqliteType_is_inferred_from_value test. This would follow the pattern established for other supported types like decimal (line 646) and provide additional test coverage beyond the specific binding tests.
    public static IEnumerable<object[]> TypesData
        => new List<object[]>
        {
            new object[] { default(DateTime), SqliteType.Text },
            new object[] { default(DateTimeOffset), SqliteType.Text },
            new object[] { DBNull.Value, SqliteType.Text },
            new object[] { 0m, SqliteType.Text },
            new object[] { default(Guid), SqliteType.Text },
            new object[] { default(TimeSpan), SqliteType.Text },
            new object[] { default(TimeSpan), SqliteType.Text },
#if NET6_0_OR_GREATER
            new object[] { default(DateOnly), SqliteType.Text },
            new object[] { default(TimeOnly), SqliteType.Text },
#endif
            new object[] { 'A', SqliteType.Text },
            new object[] { "", SqliteType.Text },
            new object[] { false, SqliteType.Integer },
            new object[] { (byte)0, SqliteType.Integer },
            new object[] { 0, SqliteType.Integer },
            new object[] { 0L, SqliteType.Integer },
            new object[] { (sbyte)0, SqliteType.Integer },
            new object[] { (short)0, SqliteType.Integer },
            new object[] { 0u, SqliteType.Integer },
            new object[] { 0ul, SqliteType.Integer },
            new object[] { (ushort)0, SqliteType.Integer },
            new object[] { 0.0, SqliteType.Real },
            new object[] { 0f, SqliteType.Real },
            new object[] { Array.Empty<byte>(), SqliteType.Blob },
            new object[] { new Memory<byte>([]), SqliteType.Blob },
            new object[] { new ReadOnlyMemory<byte>([]), SqliteType.Blob },
        };

Comment on lines 249 to 255
var value1 = (Int128)value;
BindText((value1).ToString(CultureInfo.InvariantCulture));
}
else if (type == typeof(UInt128))
{
var value1 = (UInt128)value;
BindText((value1).ToString(CultureInfo.InvariantCulture));
Copy link

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The variable value1 is unnecessary here, and there are redundant parentheses around (value1) in the ToString call. Inline the cast directly in the ToString call as done for BigInteger on line 244, to maintain consistency.

Suggested change
var value1 = (Int128)value;
BindText((value1).ToString(CultureInfo.InvariantCulture));
}
else if (type == typeof(UInt128))
{
var value1 = (UInt128)value;
BindText((value1).ToString(CultureInfo.InvariantCulture));
BindText(((Int128)value).ToString(CultureInfo.InvariantCulture));
}
else if (type == typeof(UInt128))
{
BindText(((UInt128)value).ToString(CultureInfo.InvariantCulture));

Copilot uses AI. Check for mistakes.
{ typeof(DateOnly), SqliteType.Text },
{ typeof(TimeOnly), SqliteType.Text },
#endif

Copy link

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extra blank line detected. This is inconsistent with the rest of the dictionary initialization. Remove the blank line at line 279 to maintain consistent formatting with the other entries.

Suggested change

Copilot uses AI. Check for mistakes.
}
}


Copy link

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extra blank line. Remove one of the blank lines to maintain consistent spacing between test methods throughout the file.

Copilot uses AI. Check for mistakes.
#if NET7_0_OR_GREATER
else if (type == typeof(Int128))
{
var value1 = (Int128)value;
Copy link

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trailing whitespace detected after the cast. The space after (Int128)value; should be removed to maintain consistent code style.

Suggested change
var value1 = (Int128)value;
var value1 = (Int128)value;

Copilot uses AI. Check for mistakes.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@MaikyOzr
Copy link
Author

MaikyOzr commented Feb 5, 2026

@copilot open a new pull request to apply changes based on the comments in this thread

@MaikyOzr
Copy link
Author

MaikyOzr commented Feb 5, 2026

The current .NET SDK does not support targeting .NET 11.0. Either target .NET 10.0 or lower, or use a version of the .NET SDK that supports .NET 11.0. Download the .NET SDK from https://aka.ms/dotnet/download

.NET 11 SDK is not available for download on the official Microsoft site, so I cannot install it. Please advise which supported .NET version should be used instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Microsoft.Data.Sqlite: Support BigInteger, Int128 & UInt128

3 participants