Skip to content

Commit

Permalink
Fix error "Can't write CLR type System.Guid with handler type TextHan…
Browse files Browse the repository at this point in the history
…dler" when running with npgsql 5.0.7. (#786)

(cherry picked from commit ece0bfc)
  • Loading branch information
claudiamurialdo committed Mar 28, 2023
1 parent 1859d1f commit 370420d
Showing 1 changed file with 22 additions and 15 deletions.
37 changes: 22 additions & 15 deletions dotnet/src/dotnetframework/GxClasses/Data/GXDataPostgreSQL.cs
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,14 @@ public override long GetBytes(IGxDbCommand cmd, IDataRecord DR, int i, long fiel
return count;
}
}
//ByteArrayToByteaTextEscaped
public override void SetParameter(IDbDataParameter parameter, object value)
{
if (value is Guid)
{
value = value.ToString();
}
base.SetParameter(parameter, value);
}
protected override void SetBinary(IDbDataParameter parameter, byte[] byteArray)
{
if (_byteaOutputEscape)
Expand Down Expand Up @@ -372,20 +379,20 @@ private byte[] ByteaTextToByteArray(byte[] BackendData)
byte b = BackendData[byteAPosition];
if (b >= 0x20 && b < 0x7F && b != 0x27 && b != 0x5C)
{
octalValue = BackendData[byteAPosition];
byteAPosition++;
ms.WriteByte((Byte)octalValue);
}
else if (BackendData[byteAPosition] == ASCIIByteBackSlash &&
byteAPosition + 3 < byteALength &&
BackendData[byteAPosition + 1] >= ASCIIByteb0 && BackendData[byteAPosition + 1] <= ASCIIByteb7 &&
BackendData[byteAPosition + 2] >= ASCIIByteb0 && BackendData[byteAPosition + 2] <= ASCIIByteb7 &&
BackendData[byteAPosition + 3] >= ASCIIByteb0 && BackendData[byteAPosition + 3] <= ASCIIByteb7)
{
octalValue = FastConverter.ToByteEscapeFormat(BackendData, byteAPosition + 1);
byteAPosition += 4;
ms.WriteByte((Byte)octalValue);
}
octalValue = BackendData[byteAPosition];
byteAPosition++;
ms.WriteByte((Byte)octalValue);
}
else if (BackendData[byteAPosition] == ASCIIByteBackSlash &&
byteAPosition + 3 < byteALength &&
BackendData[byteAPosition + 1] >= ASCIIByteb0 && BackendData[byteAPosition + 1] <= ASCIIByteb7 &&
BackendData[byteAPosition + 2] >= ASCIIByteb0 && BackendData[byteAPosition + 2] <= ASCIIByteb7 &&
BackendData[byteAPosition + 3] >= ASCIIByteb0 && BackendData[byteAPosition + 3] <= ASCIIByteb7)
{
octalValue = FastConverter.ToByteEscapeFormat(BackendData, byteAPosition + 1);
byteAPosition += 4;
ms.WriteByte((Byte)octalValue);
}
else
{
return BackendData;
Expand Down

0 comments on commit 370420d

Please sign in to comment.