Skip to content

Commit b97be26

Browse files
author
Gabriela Martinez
committed
Added support for Json type. (WL # 8132).
1 parent 814c55c commit b97be26

File tree

5 files changed

+75
-21
lines changed

5 files changed

+75
-21
lines changed

CHANGES

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
6.7.9
22
- Changed handshake process to use bytes instead of encoded strings.
33
- Added support for Chinese character set gb18030. (Oracle bug # 21098546).
4+
- Added support for Json type. (WL # 8132).
45

56

67
6.7.8

Source/MySql.Data.Entity/MySql.Data.Entity.csproj

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@
178178
<Compile Include="Generators\Scope.cs" />
179179
<Compile Include="Generators\SelectGenerator.cs" />
180180
<Compile Include="Generators\SqlGenerator.cs" />
181-
<Compile Include="Generators\UpdateGenerator.cs" />
181+
<Compile Include="Generators\UpdateGenerator.cs" />
182182
<Compile Include="MySqlConnectionFactory.cs" Condition="$(Framework) == '4.0' or $(Framework) == '4.5'" />
183183
<Compile Include="MySqlMigrationSqlGenerator.cs" Condition="$(Framework) == '4.0' or $(Framework) == '4.5'" />
184184
<Compile Include="MySqlSpatialServices.cs" Condition="$(Framework) == '4.5'" />
@@ -195,7 +195,7 @@
195195
<Compile Include="Properties\AssemblyInfo.cs" />
196196
<Compile Include="ProviderServices.cs" />
197197
<Compile Include="Statements\SelectStatement.cs" />
198-
<Compile Include="Statements\UpdateStatement.cs" />
198+
<Compile Include="Statements\UpdateStatement.cs" />
199199
<EmbeddedResource Include="Properties\SchemaDefinition-5.0.ssdl" />
200200
<EmbeddedResource Include="Properties\SchemaDefinition-5.5.ssdl" />
201201
<EmbeddedResource Include="Properties\SchemaDefinition-5.1.ssdl" />
@@ -211,28 +211,29 @@
211211
<Project>{E9DF5ED1-4CBD-4226-B931-9A51610AC14D}</Project>
212212
<Name>MySql.Data</Name>
213213
</ProjectReference>
214-
</ItemGroup>
214+
</ItemGroup>
215215
<ItemGroup>
216216
<EmbeddedResource Include="Properties\SchemaDefinition-5.6.ssdl">
217217
<SubType>Designer</SubType>
218218
</EmbeddedResource>
219219
</ItemGroup>
220220
<Choose>
221-
<When Condition="'$(Framework)' == '4.5'">
222-
<ItemGroup>
223-
<EmbeddedResource Include="Properties\4.5\ProviderManifest.xml">
224-
<LogicalName>MySql.Data.Entity.Properties.ProviderManifest.xml</LogicalName>
225-
</EmbeddedResource>
226-
</ItemGroup>
227-
</When>
228-
<Otherwise>
229-
<ItemGroup>
230-
<EmbeddedResource Include="Properties\ProviderManifest.xml" >
231-
<LogicalName>MySql.Data.Entity.Properties.ProviderManifest.xml</LogicalName>
232-
</EmbeddedResource>
233-
</ItemGroup>
234-
</Otherwise>
235-
</Choose>
221+
<When Condition="'$(Framework)' == '4.5'">
222+
<ItemGroup>
223+
<EmbeddedResource Include="Properties\4.5\ProviderManifest.xml">
224+
<LogicalName>MySql.Data.Entity.Properties.ProviderManifest.xml</LogicalName>
225+
<SubType>Designer</SubType>
226+
</EmbeddedResource>
227+
</ItemGroup>
228+
</When>
229+
<Otherwise>
230+
<ItemGroup>
231+
<EmbeddedResource Include="Properties\ProviderManifest.xml">
232+
<LogicalName>MySql.Data.Entity.Properties.ProviderManifest.xml</LogicalName>
233+
</EmbeddedResource>
234+
</ItemGroup>
235+
</Otherwise>
236+
</Choose>
236237
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
237238
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
238239
Other similar extension points exist, see Microsoft.Common.targets.

Source/MySql.Data/Field.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright © 2004, 2013, Oracle and/or its affiliates. All rights reserved.
1+
// Copyright © 2004, 2015, Oracle and/or its affiliates. All rights reserved.
22
//
33
// MySQL Connector/NET is licensed under the terms of the GPLv2
44
// <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most
@@ -374,6 +374,7 @@ public static IMySqlValue GetIMySqlValue(MySqlDbType type)
374374
case MySqlDbType.TinyText:
375375
case MySqlDbType.MediumText:
376376
case MySqlDbType.LongText:
377+
case MySqlDbType.JSON:
377378
case (MySqlDbType)Field_Type.NULL:
378379
return new MySqlString(type, true);
379380
#if !CF

Source/MySql.Data/MysqlDefs.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright © 2004, 2011, 2013, Oracle and/or its affiliates. All rights reserved.
1+
// Copyright © 2004, 2015 Oracle and/or its affiliates. All rights reserved.
22
//
33
// MySQL Connector/NET is licensed under the terms of the GPLv2
44
// <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most
@@ -201,6 +201,10 @@ public enum MySqlDbType
201201
/// </summary>
202202
Bit = 16,
203203
/// <summary>
204+
/// JSON
205+
/// </summary>
206+
JSON = 245,
207+
/// <summary>
204208
/// New Decimal
205209
/// </summary>
206210
NewDecimal = 246,

Tests/MySql.Data.Tests/DataTypeTests.cs

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright © 2013, 2014 Oracle and/or its affiliates. All rights reserved.
1+
// Copyright © 2013, 2015 Oracle and/or its affiliates. All rights reserved.
22
//
33
// MySQL Connector/NET is licensed under the terms of the GPLv2
44
// <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most
@@ -1277,5 +1277,52 @@ public void Timediff()
12771277
var result = cmd.ExecuteScalar();
12781278
Assert.Equal(new TimeSpan(new TimeSpan(-2, -1, -1, -2).Ticks - 1234560), result);
12791279
}
1280+
1281+
[Fact]
1282+
public void CanReadJsonValue()
1283+
{
1284+
st.execSQL("DROP TABLE IF EXISTS test");
1285+
st.execSQL("CREATE TABLE test(Id int NOT NULL PRIMARY KEY, jsoncolumn JSON)");
1286+
1287+
MySqlCommand cmd = new MySqlCommand("INSERT INTO test VALUES (@id, '[1]')", st.conn);
1288+
cmd.Parameters.AddWithValue("@id", 1);
1289+
cmd.ExecuteNonQuery();
1290+
1291+
string command = @"INSERT INTO test VALUES (@id, '[""a"", {""b"": [true, false]}, [10, 20]]')";
1292+
cmd = new MySqlCommand(command, st.conn);
1293+
cmd.Parameters.AddWithValue("@id", 2);
1294+
cmd.ExecuteNonQuery();
1295+
1296+
cmd = new MySqlCommand("SELECT jsoncolumn from test where id = 2 ", st.conn);
1297+
1298+
using (MySqlDataReader reader = cmd.ExecuteReader())
1299+
{
1300+
Assert.True(reader.Read());
1301+
Assert.Equal("[\"a\", {\"b\": [true, false]}, [10, 20]]", reader.GetString(0));
1302+
}
1303+
}
1304+
1305+
[Fact]
1306+
public void CanUpdateJsonValue()
1307+
{
1308+
st.execSQL("DROP TABLE IF EXISTS test");
1309+
st.execSQL("CREATE TABLE test(Id int NOT NULL PRIMARY KEY, jsoncolumn JSON)");
1310+
1311+
MySqlCommand cmd = new MySqlCommand("INSERT INTO test VALUES (@id, '[1]')", st.conn);
1312+
cmd.Parameters.AddWithValue("@id", 1);
1313+
cmd.ExecuteNonQuery();
1314+
1315+
string command = @"UPDATE test set jsoncolumn = '[""a"", {""b"": [true, false]}, [10, 20]]' where id = 1";
1316+
cmd = new MySqlCommand(command, st.conn);
1317+
cmd.ExecuteNonQuery();
1318+
1319+
cmd = new MySqlCommand("SELECT jsoncolumn from test where id = 1 ", st.conn);
1320+
1321+
using (MySqlDataReader reader = cmd.ExecuteReader())
1322+
{
1323+
Assert.True(reader.Read());
1324+
Assert.Equal("[\"a\", {\"b\": [true, false]}, [10, 20]]", reader.GetString(0));
1325+
}
1326+
}
12801327
}
12811328
}

0 commit comments

Comments
 (0)