mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 13:09:22 +02:00
fcl-db: mysql: when checking for max. field buffer size take into account also CharSize. Bug#31445
git-svn-id: trunk@35544 -
This commit is contained in:
parent
5dd6232c0e
commit
94b8beb3c2
@ -1042,9 +1042,6 @@ begin
|
|||||||
exit;
|
exit;
|
||||||
SetString(Src, Source, Len);
|
SetString(Src, Source, Len);
|
||||||
|
|
||||||
if Len > FieldDef.Size then
|
|
||||||
Len := FieldDef.Size;
|
|
||||||
|
|
||||||
case FieldDef.DataType of
|
case FieldDef.DataType of
|
||||||
ftSmallint:
|
ftSmallint:
|
||||||
begin
|
begin
|
||||||
@ -1072,10 +1069,10 @@ begin
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
if Src <> '' then
|
if Src <> '' then
|
||||||
VL := StrToInt64(Src)
|
VL := StrToInt64(Src)
|
||||||
else
|
else
|
||||||
VL := 0;
|
VL := 0;
|
||||||
Move(VL, Dest^, SizeOf(LargeInt));
|
Move(VL, Dest^, SizeOf(LargeInt));
|
||||||
end;
|
end;
|
||||||
ftFloat:
|
ftFloat:
|
||||||
@ -1127,16 +1124,21 @@ begin
|
|||||||
// String-fields which can contain more then dsMaxStringSize characters
|
// String-fields which can contain more then dsMaxStringSize characters
|
||||||
// are mapped to ftBlob fields, while their mysql-datatype is FIELD_TYPE_BLOB
|
// are mapped to ftBlob fields, while their mysql-datatype is FIELD_TYPE_BLOB
|
||||||
begin
|
begin
|
||||||
|
if Len > FieldDef.Size*FieldDef.CharSize then Len := FieldDef.Size*FieldDef.CharSize;
|
||||||
Move(Source^, Dest^, Len);
|
Move(Source^, Dest^, Len);
|
||||||
(Dest+Len)^ := #0;
|
(Dest+Len)^ := #0;
|
||||||
end;
|
end;
|
||||||
ftVarBytes:
|
ftVarBytes:
|
||||||
begin
|
begin
|
||||||
|
if Len > FieldDef.Size then Len := FieldDef.Size;
|
||||||
PWord(Dest)^ := Len;
|
PWord(Dest)^ := Len;
|
||||||
Move(Source^, (Dest+sizeof(Word))^, Len);
|
Move(Source^, (Dest+sizeof(Word))^, Len);
|
||||||
end;
|
end;
|
||||||
ftBytes:
|
ftBytes:
|
||||||
|
begin
|
||||||
|
if Len > FieldDef.Size then Len := FieldDef.Size;
|
||||||
Move(Source^, Dest^, Len);
|
Move(Source^, Dest^, Len);
|
||||||
|
end;
|
||||||
ftBlob, ftMemo:
|
ftBlob, ftMemo:
|
||||||
CreateBlob := True;
|
CreateBlob := True;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user