Skip to content

Commit c3b65a5

Browse files
committed
Clean up broken AI code.
Signed-off-by: Bradley Grainger <[email protected]>
1 parent 52b2736 commit c3b65a5

File tree

5 files changed

+10
-62
lines changed

5 files changed

+10
-62
lines changed

src/MySqlConnector/Core/TypeMapper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ private TypeMapper()
5656
AddColumnTypeMetadata(new("FLOAT", typeFloat, MySqlDbType.Float));
5757

5858
// vector
59-
var typeFloatArray = AddDbTypeMapping(new(typeof(float[]), [DbType.Object], convert: static o => (float[])o));
59+
var typeFloatArray = AddDbTypeMapping(new(typeof(float[]), [DbType.Object]));
6060
AddColumnTypeMetadata(new("VECTOR", typeFloatArray, MySqlDbType.Vector, binary: true, simpleDataTypeName: "VECTOR", createFormat: "VECTOR({0})"));
6161

6262
// string

src/MySqlConnector/MySqlDataReader.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -428,14 +428,6 @@ public override T GetFieldValue<T>(int ordinal)
428428
return (T) (object) GetDateOnly(ordinal);
429429
if (typeof(T) == typeof(TimeOnly))
430430
return (T) (object) GetTimeOnly(ordinal);
431-
if (typeof(T) == typeof(ReadOnlySpan<float>))
432-
{
433-
var value = GetValue(ordinal);
434-
if (value is float[] floatArray)
435-
{
436-
return (T) (object) new ReadOnlySpan<float>(floatArray);
437-
}
438-
}
439431
#endif
440432

441433
return base.GetFieldValue<T>(ordinal);

src/MySqlConnector/MySqlParameter.cs

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Diagnostics.CodeAnalysis;
44
using System.Globalization;
55
using System.Numerics;
6+
using System.Runtime.InteropServices;
67
using System.Text;
78
#if NET8_0_OR_GREATER
89
using System.Text.Unicode;
@@ -282,7 +283,7 @@ internal void AppendSqlString(ByteBufferWriter writer, StatementPreparerOptions
282283
{
283284
writer.WriteString(ulongValue);
284285
}
285-
else if (Value is byte[] or ReadOnlyMemory<byte> or Memory<byte> or ArraySegment<byte> or MySqlGeometry or MemoryStream)
286+
else if (Value is byte[] or ReadOnlyMemory<byte> or Memory<byte> or ArraySegment<byte> or MySqlGeometry or MemoryStream or float[])
286287
{
287288
var inputSpan = Value switch
288289
{
@@ -291,6 +292,7 @@ internal void AppendSqlString(ByteBufferWriter writer, StatementPreparerOptions
291292
Memory<byte> memory => memory.Span,
292293
MySqlGeometry geometry => geometry.ValueSpan,
293294
MemoryStream memoryStream => memoryStream.TryGetBuffer(out var streamBuffer) ? streamBuffer.AsSpan() : memoryStream.ToArray().AsSpan(),
295+
float[] floatArray => MemoryMarshal.AsBytes(floatArray.AsSpan()),
294296
_ => ((ReadOnlyMemory<byte>) Value).Span,
295297
};
296298

@@ -554,17 +556,6 @@ internal void AppendSqlString(ByteBufferWriter writer, StatementPreparerOptions
554556
{
555557
writer.WriteString((ulong) Value);
556558
}
557-
else if (Value is float[] floatArrayValue)
558-
{
559-
writer.Write((byte) '[');
560-
for (int i = 0; i < floatArrayValue.Length; i++)
561-
{
562-
if (i > 0)
563-
writer.Write((byte) ',');
564-
writer.WriteString(floatArrayValue[i]);
565-
}
566-
writer.Write((byte) ']');
567-
}
568559
else
569560
{
570561
throw new NotSupportedException($"Parameter type {Value.GetType().Name} is not supported; see https://mysqlconnector.net/param-type. Value: {Value}");
@@ -740,6 +731,11 @@ private void AppendBinary(ByteBufferWriter writer, object value, StatementPrepar
740731
{
741732
writer.Write(unchecked((ulong) BitConverter.DoubleToInt64Bits(doubleValue)));
742733
}
734+
else if (value is float[] floatArrayValue)
735+
{
736+
writer.WriteLengthEncodedInteger(unchecked((ulong) floatArrayValue.Length * 4));
737+
writer.Write(MemoryMarshal.AsBytes(floatArrayValue.AsSpan()));
738+
}
743739
else if (value is decimal decimalValue)
744740
{
745741
writer.WriteLengthEncodedAsciiString(decimalValue.ToString(CultureInfo.InvariantCulture));
@@ -882,14 +878,6 @@ private void AppendBinary(ByteBufferWriter writer, object value, StatementPrepar
882878
{
883879
writer.Write((ulong) value);
884880
}
885-
else if (value is float[] floatArrayValue)
886-
{
887-
writer.WriteLengthEncodedInteger((ulong) (floatArrayValue.Length * 4));
888-
foreach (var floatValue in floatArrayValue)
889-
{
890-
writer.Write(BitConverter.GetBytes(floatValue));
891-
}
892-
}
893881
else
894882
{
895883
throw new NotSupportedException($"Parameter type {value.GetType().Name} is not supported; see https://mysqlconnector.net/param-type. Value: {value}");

src/MySqlConnector/Protocol/ColumnType.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ internal enum ColumnType
2424
Bit = 16,
2525
Timestamp2 = 17,
2626
DateTime2 = 18,
27+
Vector = 242,
2728
Json = 0xF5,
2829
NewDecimal = 0xF6,
2930
Enum = 0xF7,

tests/MySqlConnector.Tests/MySqlParameterTests.cs

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -423,37 +423,4 @@ public void ScaleMixed()
423423
((IDbDataParameter) parameter).Scale = 12;
424424
Assert.Equal((byte) 12, ((MySqlParameter) parameter).Scale);
425425
}
426-
427-
[Fact]
428-
public void SetValueToFloatArrayInfersType()
429-
{
430-
var parameter = new MySqlParameter { Value = new float[] { 1.0f, 2.0f, 3.0f } };
431-
Assert.Equal(DbType.Object, parameter.DbType);
432-
Assert.Equal(MySqlDbType.Vector, parameter.MySqlDbType);
433-
}
434-
435-
[Fact]
436-
public void ConstructorNameTypeVector()
437-
{
438-
var parameter = new MySqlParameter("@vector", MySqlDbType.Vector);
439-
Assert.Equal("@vector", parameter.ParameterName);
440-
Assert.Equal(MySqlDbType.Vector, parameter.MySqlDbType);
441-
Assert.Equal(DbType.Object, parameter.DbType);
442-
Assert.False(parameter.IsNullable);
443-
Assert.Null(parameter.Value);
444-
Assert.Equal(ParameterDirection.Input, parameter.Direction);
445-
Assert.Equal(0, parameter.Precision);
446-
Assert.Equal(0, parameter.Scale);
447-
Assert.Equal(0, parameter.Size);
448-
#if MYSQL_DATA
449-
Assert.Equal(DataRowVersion.Default, parameter.SourceVersion);
450-
#else
451-
Assert.Equal(DataRowVersion.Current, parameter.SourceVersion);
452-
#endif
453-
#if MYSQL_DATA
454-
Assert.Null(parameter.SourceColumn);
455-
#else
456-
Assert.Equal("", parameter.SourceColumn);
457-
#endif
458-
}
459426
}

0 commit comments

Comments
 (0)