Skip to content

Commit b7b3096

Browse files
committed
Add support for DECIMAL UNSIGNED. Fixes #1272
1 parent 12c64ab commit b7b3096

File tree

3 files changed

+6
-1
lines changed

3 files changed

+6
-1
lines changed

src/MySqlConnector/Core/TypeMapper.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ private TypeMapper()
5050
var typeDouble = AddDbTypeMapping(new(typeof(double), new[] { DbType.Double }, convert: static o => Convert.ToDouble(o, CultureInfo.InvariantCulture)));
5151
var typeFloat = AddDbTypeMapping(new(typeof(float), new[] { DbType.Single }, convert: static o => Convert.ToSingle(o, CultureInfo.InvariantCulture)));
5252
AddColumnTypeMetadata(new("DECIMAL", typeDecimal, MySqlDbType.NewDecimal, createFormat: "DECIMAL({0},{1});precision,scale"));
53+
AddColumnTypeMetadata(new("DECIMAL", typeDecimal, MySqlDbType.NewDecimal, isUnsigned: true, createFormat: "DECIMAL({0},{1}) UNSIGNED;precision,scale"));
5354
AddColumnTypeMetadata(new("DECIMAL", typeDecimal, MySqlDbType.Decimal));
5455
AddColumnTypeMetadata(new("DOUBLE", typeDouble, MySqlDbType.Double));
5556
AddColumnTypeMetadata(new("FLOAT", typeFloat, MySqlDbType.Float));

tests/IntegrationTests/StoredProcedureTests.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,8 +669,9 @@ OUT param2 VARCHAR(100))
669669
#if !MYSQL_DATA
670670
[InlineData("bool", 1)]
671671
[InlineData("tinyint(1)", 1)]
672+
[InlineData("decimal(10)", 10)]
672673
#endif
673-
[InlineData("char(30)", 30)]
674+
[InlineData("char(30)", 30)]
674675
[InlineData("mediumtext", 0)]
675676
[InlineData("varchar(50)", 50)]
676677
// These return nonzero sizes for some versions of MySQL Server 8.0
@@ -713,6 +714,8 @@ public void DeriveParametersParameterSize(string parameterType, int expectedSize
713714
[InlineData("char(30)", MySqlDbType.String)]
714715
[InlineData("mediumtext", MySqlDbType.MediumText)]
715716
[InlineData("varchar(50)", MySqlDbType.VarChar)]
717+
[InlineData("decimal(10, 0)", MySqlDbType.NewDecimal)]
718+
[InlineData("decimal(10, 0) unsigned", MySqlDbType.NewDecimal)]
716719
public void DeriveParametersParameterType(string parameterType, MySqlDbType expectedType)
717720
{
718721
var csb = AppConfig.CreateConnectionStringBuilder();

tests/MySqlConnector.Tests/TypeMapperTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public void ConversionTest(object original, DbType dbType, object expected)
6969
[InlineData("bigint", false, 0, DbType.Int64)]
7070
[InlineData("bigint", true, 0, DbType.UInt64)]
7171
[InlineData("decimal", false, 0, DbType.Decimal)]
72+
[InlineData("decimal", true, 0, DbType.Decimal)]
7273
[InlineData("double", false, 0, DbType.Double)]
7374
[InlineData("float", false, 0, DbType.Single)]
7475
[InlineData("char", false, 0, DbType.StringFixedLength)]

0 commit comments

Comments
 (0)