Browse Source

+ Add StringQuery and InsertQuery functions.
* Call FreeQueryResults if TQueryResult is discarded.

git-svn-id: trunk@26207 -

pierre 11 years ago
parent
commit
85f138b409
1 changed files with 40 additions and 10 deletions
  1. 40 10
      tests/utils/dbtests.pp

+ 40 - 10
tests/utils/dbtests.pp

@@ -37,12 +37,14 @@ Type
 
 
 Function  ConnectToDatabase(DatabaseName,Host,User,Password,Port : String) : Boolean;
 Function  ConnectToDatabase(DatabaseName,Host,User,Password,Port : String) : Boolean;
 Procedure DisconnectDatabase;
 Procedure DisconnectDatabase;
+Function  InsertQuery(const Query : string) : Integer;
 Function  RunQuery (Qry : String; Var res : TQueryResult) : Boolean ;
 Function  RunQuery (Qry : String; Var res : TQueryResult) : Boolean ;
 Procedure FreeQueryResult (Res : TQueryResult);
 Procedure FreeQueryResult (Res : TQueryResult);
 Function  GetResultField (Res : TQueryResult; Id : Integer) : String;
 Function  GetResultField (Res : TQueryResult; Id : Integer) : String;
 Function  IDQuery(Qry : String) : Integer;
 Function  IDQuery(Qry : String) : Integer;
+Function  StringQuery(Qry : String) : String;
 Function  EscapeSQL( S : String) : String;
 Function  EscapeSQL( S : String) : String;
-Function SQLDate(D : TDateTime) : String;
+Function  SQLDate(D : TDateTime) : String;
 
 
 var
 var
   RelSrcDir,
   RelSrcDir,
@@ -166,6 +168,20 @@ begin
     end;
     end;
 end;
 end;
 
 
+Function StringQuery(Qry : String) : String;
+
+Var
+  Res : TQueryResult;
+
+begin
+  Result:='';
+  If RunQuery(Qry,Res) then
+    begin
+    Result:=GetResultField(Res,0);
+    FreeQueryResult(Res);
+    end;
+end;
+
 Function EscapeSQL( S : String) : String;
 Function EscapeSQL( S : String) : String;
 
 
 begin
 begin
@@ -245,6 +261,20 @@ begin
   Result:=IDQuery(Format(SFromIDS,[OSID,CPUID,VERSIONID,SQLDate(Date)]));
   Result:=IDQuery(Format(SFromIDS,[OSID,CPUID,VERSIONID,SQLDate(Date)]));
 end;
 end;
 
 
+Function InsertQuery(const Query : string) : Integer;
+Var
+  Res : TQueryResult;
+
+begin
+  If RunQuery(Query,Res) then
+    begin
+      Result:=mysql_insert_id(connection);
+      FreeQueryResult(Res);
+    end
+  else
+    Result:=-1;
+end;
+
 Function AddRun(OSID, CPUID, VERSIONID, CATEGORYID : Integer; Date : TDateTime) : Integer;
 Function AddRun(OSID, CPUID, VERSIONID, CATEGORYID : Integer; Date : TDateTime) : Integer;
 
 
 Const
 Const
@@ -252,15 +282,11 @@ Const
                '(TU_OS_FK,TU_CPU_FK,TU_VERSION_FK,TU_CATEGORY_FK,TU_DATE)'+
                '(TU_OS_FK,TU_CPU_FK,TU_VERSION_FK,TU_CATEGORY_FK,TU_DATE)'+
                ' VALUES '+
                ' VALUES '+
                '(%d,%d,%d,%d,"%s")';
                '(%d,%d,%d,%d,"%s")';
-
-Var
-  Res : TQueryResult;
-
+var
+  Qry : string;
 begin
 begin
-  If RunQuery(Format(SInsertRun,[OSID,CPUID,VERSIONID,CATEGORYID,SQLDate(Date)]),Res) then
-    Result:=mysql_insert_id(connection)
-  else
-    Result:=-1;
+  qry:=Format(SInsertRun,[OSID,CPUID,VERSIONID,CATEGORYID,SQLDate(Date)]);
+  Result:=InsertQuery(Qry);
 end;
 end;
 
 
 function posr(c : Char; const s : AnsiString) : integer;
 function posr(c : Char; const s : AnsiString) : integer;
@@ -361,6 +387,7 @@ begin
     begin
     begin
     If RunQuery(Format(SInsertTest,[Name]),Res) then
     If RunQuery(Format(SInsertTest,[Name]),Res) then
       begin
       begin
+      FreeQueryResult(Res);
       Result:=GetTestID(Name);
       Result:=GetTestID(Name);
       If Result=-1 then
       If Result=-1 then
         Verbose(V_WARNING,'Could not find newly added test!')
         Verbose(V_WARNING,'Could not find newly added test!')
@@ -411,7 +438,8 @@ begin
                              Source,
                              Source,
                              ID
                              ID
      ]);
      ]);
-  Result:=RunQuery(Qry,res)
+  Result:=RunQuery(Qry,res);
+  FreeQueryResult(Res);
 end;
 end;
 
 
 Function AddTestResult(TestID,RunID,TestRes : Integer;
 Function AddTestResult(TestID,RunID,TestRes : Integer;
@@ -452,6 +480,7 @@ begin
         begin
         begin
           Verbose(V_Warning,'Insert Log failed');
           Verbose(V_Warning,'Insert Log failed');
         end;
         end;
+      FreeQueryResult(Res);
     end;
     end;
   { If test already existed, return false for is_new to avoid double counting }
   { If test already existed, return false for is_new to avoid double counting }
   is_new:=not updateValues;
   is_new:=not updateValues;
@@ -477,6 +506,7 @@ Var
 
 
 begin
 begin
   Result:=RunQuery(Format(SDeleteRun,[ID]),Res);
   Result:=RunQuery(Format(SDeleteRun,[ID]),Res);
+  FreeQueryResult(Res);
 end;
 end;
 
 
 begin
 begin