Browse Source

--- Merging r20884 into 'packages/fcl-db/src':
U packages/fcl-db/src/base/dataset.inc
U packages/fcl-db/src/base/datasource.inc
U packages/fcl-db/src/base/bufdataset.pas
U packages/fcl-db/src/base/db.pas
--- Merging r20885 into 'packages/fcl-db/src':
G packages/fcl-db/src/base/datasource.inc
G packages/fcl-db/src/base/bufdataset.pas
--- Merging r20917 into 'packages/fcl-db/src':
U packages/fcl-db/src/sqldb/mysql/mysqlconn.inc
--- Merging r20919 into 'packages/fcl-db/src':
U packages/fcl-db/src/sqldb/sqldb.pp

# revisions: 20884,20885,20917,20919
r20884 | michael | 2012-04-15 16:00:06 +0200 (Sun, 15 Apr 2012) | 1 line
Changed paths:
M /trunk/packages/fcl-db/src/base/bufdataset.pas
M /trunk/packages/fcl-db/src/base/dataset.inc
M /trunk/packages/fcl-db/src/base/datasource.inc
M /trunk/packages/fcl-db/src/base/db.pas

* Reinstated SetFound
r20885 | michael | 2012-04-15 16:02:16 +0200 (Sun, 15 Apr 2012) | 1 line
Changed paths:
M /trunk/packages/fcl-db/src/base/bufdataset.pas
M /trunk/packages/fcl-db/src/base/datasource.inc

* Reverse erronous commit of unchecked patch
r20917 | marco | 2012-04-18 12:45:21 +0200 (Wed, 18 Apr 2012) | 3 lines
Changed paths:
M /trunk/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc

* Patch from Lacak2 (Mantis #14519) that fixes "Check Table" having a
resultset (folding it onto select)
r20919 | marco | 2012-04-18 15:31:35 +0200 (Wed, 18 Apr 2012) | 2 lines
Changed paths:
M /trunk/packages/fcl-db/src/sqldb/sqldb.pp

* Patch from Lacak2 for #16842. Fix parsing of FROM (mysql show..from)

git-svn-id: branches/fixes_2_6@21378 -

marco 13 years ago
parent
commit
4f453eb3bc

+ 4 - 0
packages/fcl-db/src/base/dataset.inc

@@ -1311,6 +1311,10 @@ begin
   FFiltered := value;
 end;
 
+procedure TDataSet.SetFound(const Value: Boolean);
+begin
+  FFound := Value;
+end;
 
 Procedure TDataset.SetModified(Value: Boolean);
 

+ 1 - 0
packages/fcl-db/src/base/db.pas

@@ -1487,6 +1487,7 @@ type
     procedure SetFilterOptions(Value: TFilterOptions); virtual;
     procedure SetFilterText(const Value: string); virtual;
     procedure SetFieldValues(const fieldname: string; Value: Variant); virtual;
+    procedure SetFound(const Value: Boolean); virtual;
     procedure SetModified(Value: Boolean);
     procedure SetName(const Value: TComponentName); override;
     procedure SetOnFilterRecord(const Value: TFilterRecordEvent); virtual;

+ 13 - 10
packages/fcl-db/src/sqldb/mysql/mysqlconn.inc

@@ -230,7 +230,7 @@ Resourcestring
   SErrVersionMismatch = '%s can not work with the installed MySQL client version: Expected (%s), got (%s).';
   SErrSettingParameter = 'Error setting parameter "%s"';
 
-Procedure MySQlError(R : PMySQL;Msg: String;Comp : TComponent);
+Procedure MySQLError(R : PMySQL;Msg: String;Comp : TComponent);
 
 Var
   MySQLMsg : String;
@@ -263,10 +263,13 @@ end;
 function TConnectionName.StrToStatementType(s : string) : TStatementType;
 
 begin
-  S:=Lowercase(s);
-  if s = 'show' then exit(stSelect);
-  if s = 'call' then exit(stExecProcedure);
-  result := inherited StrToStatementType(s);
+  s:=Lowercase(s);
+  if (s='analyze') or (s='check') or (s='checksum') or (s='optimize') or (s='repair') or (s='show') then
+    exit(stSelect)
+  else if s='call' then
+    exit(stExecProcedure)
+  else
+    Result := inherited StrToStatementType(s);
 end;
 
 
@@ -313,13 +316,13 @@ begin
       else
         Opt := pchar(OptStr);
       if mysql_options(HMySQL,AMysql_Option,Opt) <> 0 then
-          MySQlError(HMySQL,Format(SErrSettingParameter,[params.Names[i]]),Self);
+          MySQLError(HMySQL,Format(SErrSettingParameter,[params.Names[i]]),Self);
       end;
     end;
 
   HMySQL:=mysql_real_connect(HMySQL,PChar(H),PChar(U),Pchar(P),Nil,APort,Nil,CLIENT_MULTI_RESULTS); //CLIENT_MULTI_RESULTS is required by CALL SQL statement(executes stored procedure), that produces result sets
   If (HMySQL=Nil) then
-    MySQlError(Nil,SErrServerConnectFailed,Self);
+    MySQLError(Nil,SErrServerConnectFailed,Self);
 
   // MySQL _Server_ version 4.1 and later
   // major_version*10000 + minor_version *100 + sub_version
@@ -328,7 +331,7 @@ begin
     // Only available for mysql 5.0.7 and later...
     // if (mysql_set_character_set(HMySQL, PChar(CharSet)) <> 0) then
     if mysql_query(FMySQL,PChar('SET CHARACTER SET ''' + EscapeString(CharSet) +''''))<>0 then
-      MySQLError(HMySQL,Format(SErrExecuting,[StrPas(mysql_error(HMySQL))]),Self);
+      MySQLError(HMySQL,SErrExecuting,Self);
     end;
 end;
 
@@ -406,7 +409,7 @@ begin
     ConnectMySQL(AMySQL,pchar(H),pchar(U),pchar(P));
     try
       if mysql_query(AMySQL,pchar(query))<>0 then
-        MySQLError(AMySQL,Format(SErrExecuting,[StrPas(mysql_error(AMySQL))]),Self);
+        MySQLError(AMySQL,SErrExecuting,Self);
     finally
       mysql_close(AMySQL);
     end;
@@ -554,7 +557,7 @@ begin
       C.FStatement := stringsreplace(C.FStatement,ParamNames,ParamValues,[rfReplaceAll]);
       end;
     if mysql_query(FMySQL,Pchar(C.FStatement))<>0 then
-      MySQLError(FMYSQL,Format(SErrExecuting,[StrPas(mysql_error(FMySQL))]),Self)
+      MySQLError(FMYSQL,SErrExecuting,Self)
     else
       begin
       C.RowsAffected := mysql_affected_rows(FMYSQL);

+ 1 - 2
packages/fcl-db/src/sqldb/sqldb.pp

@@ -1279,8 +1279,7 @@ begin
         case ParsePart of
           ppStart  : begin
                      Result := TSQLConnection(Database).StrToStatementType(s);
-                     if Result = stSelect then ParsePart := ppSelect
-                       else break;
+                     if s = 'SELECT' then ParsePart := ppSelect else break;
                      if not FParseSQL then break;
                      PStatementPart := CurrentP;
                      end;