* Mantis #22249 Mysql BIT type support.

git-svn-id: trunk@21743 -
This commit is contained in:
marco 2012-06-30 17:57:29 +00:00
parent c4ec774c4c
commit b616fca354

View File

@ -530,9 +530,9 @@ begin
C:=Cursor as TCursorName;
if c.FStatementType in [stSelect,stExecProcedure] then
c.FNeedData:=False;
If (C.FRes<>Nil) then
if assigned(C.FRes) then
begin
Mysql_free_result(C.FRes);
mysql_free_result(C.FRes);
C.FRes:=Nil;
end;
SetLength(c.MapDSRowToMSQLRow,0);
@ -588,16 +588,15 @@ var ASize, ADecimals: integer;
begin
Result := True;
ASize := AField^.length;
NewSize := 0;
case AField^.ftype of
FIELD_TYPE_LONGLONG:
begin
NewType := ftLargeint;
NewSize := 0;
end;
FIELD_TYPE_TINY, FIELD_TYPE_SHORT, FIELD_TYPE_YEAR:
begin
NewType := ftSmallint;
NewSize := 0;
end;
FIELD_TYPE_LONG, FIELD_TYPE_INT24:
begin
@ -605,7 +604,6 @@ begin
NewType := ftAutoInc
else
NewType := ftInteger;
NewSize := 0;
end;
{$ifdef mysql50_up}
FIELD_TYPE_NEWDECIMAL,
@ -624,32 +622,25 @@ begin
FIELD_TYPE_FLOAT, FIELD_TYPE_DOUBLE:
begin
NewType := ftFloat;
NewSize := 0;
end;
FIELD_TYPE_TIMESTAMP, FIELD_TYPE_DATETIME:
begin
NewType := ftDateTime;
NewSize := 0;
end;
FIELD_TYPE_DATE:
begin
NewType := ftDate;
NewSize := 0;
end;
FIELD_TYPE_TIME:
begin
NewType := ftTime;
NewSize := 0;
end;
FIELD_TYPE_VAR_STRING, FIELD_TYPE_STRING, FIELD_TYPE_ENUM, FIELD_TYPE_SET:
begin
// Since mysql server version 5.0.3 string-fields with a length of more
// then 256 characters are suported
if ASize>dsMaxStringSize then
begin
NewType := ftMemo;
NewSize := 0;
end
NewType := ftMemo
else
begin
if AField^.ftype = FIELD_TYPE_STRING then
@ -676,8 +667,11 @@ begin
{$ELSE}
NewType := ftBlob;
{$ENDIF}
NewSize := 0;
end
end;
{$IFDEF MYSQL50_UP}
FIELD_TYPE_BIT:
NewType := ftLargeInt;
{$ENDIF}
else
Result := False;
end;
@ -1028,6 +1022,15 @@ begin
end;
FIELD_TYPE_BLOB:
CreateBlob := True;
{$IFDEF MYSQL50_UP}
FIELD_TYPE_BIT:
begin
VL := 0;
for VI := 0 to Len-1 do
VL := VL * 256 + PByte(Source+VI)^;
move(VL, Dest^, sizeof(LargeInt));
end;
{$ENDIF}
end;
Result := True;
end;