Skip to content

Commit 97074dc

Browse files
committed
Implement MySqlParameter.Precision and Scale.
1 parent 1e06c0a commit 97074dc

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

src/MySqlConnector/MySql.Data.MySqlClient/MySqlParameter.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,26 @@ public MySqlParameter(string name, MySqlDbType mySqlDbType, int size, string sou
4545
#endif
4646
}
4747

48+
#if !NETSTANDARD1_3
49+
public MySqlParameter(string name, MySqlDbType mySqlDbType, int size, ParameterDirection direction, bool isNullable, byte precision, byte scale, string sourceColumn, DataRowVersion sourceVersion, object value)
50+
: this(name, mySqlDbType, size, sourceColumn)
51+
{
52+
Direction = direction;
53+
IsNullable = isNullable;
54+
#if NET45
55+
if (precision != 0)
56+
throw new PlatformNotSupportedException("'precision' parameter is not supported on .NET 4.5.");
57+
if (scale != 0)
58+
throw new PlatformNotSupportedException("'scale' parameter is not supported on .NET 4.5.");
59+
#else
60+
Precision = precision;
61+
Scale = scale;
62+
#endif
63+
SourceVersion = sourceVersion;
64+
Value = value;
65+
}
66+
#endif
67+
4868
public override DbType DbType
4969
{
5070
get => m_dbType;
@@ -83,6 +103,11 @@ public override ParameterDirection Direction
83103

84104
public override bool IsNullable { get; set; }
85105

106+
#if !NET45
107+
public override byte Precision { get; set; }
108+
public override byte Scale { get; set; }
109+
#endif
110+
86111
public override string ParameterName
87112
{
88113
get => m_name;

tests/SideBySide/ParameterTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,30 @@ public void ConstructorNameTypeSizeSourceColumn()
159159
Assert.Equal("source", parameter.SourceColumn);
160160
}
161161

162+
#if !NETCOREAPP1_1_2
163+
[Fact]
164+
public void ConstructorEverything()
165+
{
166+
#if !NET452
167+
var parameter = new MySqlParameter("@name", MySqlDbType.Float, 4, ParameterDirection.Output, true, 1, 2, "source", DataRowVersion.Original, 3.0);
168+
Assert.Equal(1, parameter.Precision);
169+
Assert.Equal(2, parameter.Scale);
170+
#else
171+
// The .NET 4.5.2 tests use the .NET 4.5 library, which does not support Precision and Scale (they were added in .NET 4.5.1)
172+
var parameter = new MySqlParameter("@name", MySqlDbType.Float, 4, ParameterDirection.Output, true, 0, 0, "source", DataRowVersion.Original, 3.0);
173+
#endif
174+
Assert.Equal("@name", parameter.ParameterName);
175+
Assert.Equal(MySqlDbType.Float, parameter.MySqlDbType);
176+
Assert.Equal(DbType.Single, parameter.DbType);
177+
Assert.Equal(3.0, parameter.Value);
178+
Assert.True(parameter.IsNullable);
179+
Assert.Equal(ParameterDirection.Output, parameter.Direction);
180+
Assert.Equal(4, parameter.Size);
181+
Assert.Equal(DataRowVersion.Original, parameter.SourceVersion);
182+
Assert.Equal("source", parameter.SourceColumn);
183+
}
184+
#endif
185+
162186
[Theory]
163187
[InlineData(1, DbType.Int32, MySqlDbType.Int32)]
164188
[InlineData(1.0, DbType.Double, MySqlDbType.Double)]

0 commit comments

Comments
 (0)