Merged revisions 1374,1389,1396 via svnmerge from

svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/trunk

r1374 (marco)
 * TUpdatestatusset (kbmmw port missed this)


r1389 (joost)
 + Fix bug #4376, varchar without size specification

r1396 (joost)
 + fixed some memory issues when using parameters

git-svn-id: branches/fixes_2_0@1430 -
This commit is contained in:
peter 2005-10-16 19:50:03 +00:00
parent 093b45ec18
commit 3c0f6f85fe
2 changed files with 16 additions and 7 deletions

View File

@ -53,6 +53,7 @@ type
deParentScroll);
TUpdateStatus = (usUnmodified, usModified, usInserted, usDeleted);
TUpdateStatusSet = SET OF TUpdateStatus;
TUpdateMode = (upWhereAll, upWhereChanged, upWhereKeyOnly);

View File

@ -466,9 +466,9 @@ end;
procedure TPQConnection.Execute(cursor: TSQLCursor;atransaction:tSQLtransaction;AParams : TParams);
var ar : array of pchar;
i : integer;
s : string;
var ar : array of pointer;
i : integer;
s : string;
begin
with cursor as TPQCursor do
@ -479,13 +479,18 @@ begin
begin
setlength(ar,Aparams.count);
for i := 0 to AParams.count -1 do
begin
case AParams[i].DataType of
ftdatetime : ar[i] := pchar(formatdatetime('YYYY-MM-DD',AParams[i].AsDateTime));
ftdatetime : s := formatdatetime('YYYY-MM-DD',AParams[i].AsDateTime);
else
ar[i] := pchar(AParams[i].asstring);
writeln(ar[i]);
s := AParams[i].asstring;
end; {case}
GetMem(ar[i],length(s)+1);
StrMove(PChar(ar[i]),Pchar(s),Length(S)+1);
end;
res := PQexecPrepared(tr,pchar('prepst'+nr),Aparams.count,@Ar[0],nil,nil,0)
res := PQexecPrepared(tr,pchar('prepst'+nr),Aparams.count,@Ar[0],nil,nil,0);
for i := 0 to AParams.count -1 do
FreeMem(ar[i]);
end
else
res := PQexecPrepared(tr,pchar('prepst'+nr),0,nil,nil,nil,0);
@ -539,7 +544,10 @@ begin
fieldtype := TranslateFldType(PQftype(BaseRes, i));
if (fieldtype = ftstring) and (size = -1) then
begin
size := pqfmod(baseres,i)-3;
if size = -4 then size := dsMaxStringSize;
end;
if fieldtype = ftdate then
size := sizeof(double);