Browse Source

+ Added experimental support for Sybase ASE connector in database tests
+ Indicated how to use MS SQL Server trusted authentication/SSPI in database tests

git-svn-id: trunk@22639 -

reiniero 13 years ago
parent
commit
91f1a8736c
2 changed files with 18 additions and 4 deletions
  1. 11 0
      packages/fcl-db/tests/database.ini.txt
  2. 7 4
      packages/fcl-db/tests/sqldbtoolsunit.pas

+ 11 - 0
packages/fcl-db/tests/database.ini.txt

@@ -116,10 +116,21 @@ name=test.db
 connector=sql
 connector=sql
 connectorparams=mssql
 connectorparams=mssql
 name=pubs
 name=pubs
+; If you want to use trusted authentication/SSPI, leave
+; user and password blank
 user=sa
 user=sa
 password=
 password=
 hostname=127.0.0.1
 hostname=127.0.0.1
 
 
+; Sybase ASE database
+[sybase]
+connector=sql
+connectorparams=sybase
+name=testdb
+usser=sa
+password=
+hostname=127.0.0.1
+
 ; TDBf: DBase/FoxPro database:
 ; TDBf: DBase/FoxPro database:
 [dbf]
 [dbf]
 connector=dbf
 connector=dbf

+ 7 - 4
packages/fcl-db/tests/sqldbtoolsunit.pas

@@ -19,11 +19,11 @@ uses
   ,mssqlconn
   ,mssqlconn
   ;
   ;
 
 
-type TSQLDBTypes = (mysql40,mysql41,mysql50,mysql51,mysql55,postgresql,interbase,odbc,oracle,sqlite3,mssql);
+type TSQLDBTypes = (mysql40,mysql41,mysql50,mysql51,mysql55,postgresql,interbase,odbc,oracle,sqlite3,mssql,sybase);
 
 
 const MySQLdbTypes = [mysql40,mysql41,mysql50,mysql51,mysql55];
 const MySQLdbTypes = [mysql40,mysql41,mysql50,mysql51,mysql55];
       DBTypesNames : Array [TSQLDBTypes] of String[19] =
       DBTypesNames : Array [TSQLDBTypes] of String[19] =
-        ('MYSQL40','MYSQL41','MYSQL50','MYSQL51','MYSQL55','POSTGRESQL','INTERBASE','ODBC','ORACLE','SQLITE3','MSSQL');
+        ('MYSQL40','MYSQL41','MYSQL50','MYSQL51','MYSQL55','POSTGRESQL','INTERBASE','ODBC','ORACLE','SQLITE3','MSSQL','SYBASE');
              
              
       FieldtypeDefinitionsConst : Array [TFieldType] of String[20] =
       FieldtypeDefinitionsConst : Array [TFieldType] of String[20] =
         (
         (
@@ -168,7 +168,8 @@ begin
   {$IFNDEF Win64}
   {$IFNDEF Win64}
   if SQLDbType = ORACLE then Fconnection := TOracleConnection.Create(nil);
   if SQLDbType = ORACLE then Fconnection := TOracleConnection.Create(nil);
   {$ENDIF Win64}
   {$ENDIF Win64}
-  if SQLDbType = MSSQL then
+  if SQLDbType in [MSSQL,Sybase] then
+    // todo: Sybase: copied over MSSQL; verify correctness
     begin
     begin
     Fconnection := TMSSQLConnection.Create(nil);
     Fconnection := TMSSQLConnection.Create(nil);
     FieldtypeDefinitions[ftBoolean] := 'BIT';
     FieldtypeDefinitions[ftBoolean] := 'BIT';
@@ -194,7 +195,7 @@ begin
         testValues[ftDateTime,t] := copy(testValues[ftDateTime,t],1,19)+'.000';
         testValues[ftDateTime,t] := copy(testValues[ftDateTime,t],1,19)+'.000';
       end;
       end;
     end;
     end;
-  if SQLDbType in [postgresql,interbase,mssql] then
+  if SQLDbType in [postgresql,interbase,mssql,sybase] then
     begin
     begin
     // Some db's do not support times > 24:00:00
     // Some db's do not support times > 24:00:00
     testTimeValues[3]:='13:25:15.000';
     testTimeValues[3]:='13:25:15.000';
@@ -216,6 +217,7 @@ begin
   // SQLite does not support fixed length CHAR datatype
   // SQLite does not support fixed length CHAR datatype
   // MySQL by default trimms trailing spaces on retrieval; so set sql-mode="PAD_CHAR_TO_FULL_LENGTH" - supported from MySQL 5.1.20
   // MySQL by default trimms trailing spaces on retrieval; so set sql-mode="PAD_CHAR_TO_FULL_LENGTH" - supported from MySQL 5.1.20
   // MSSQL set SET ANSI_PADDING ON
   // MSSQL set SET ANSI_PADDING ON
+  // todo: verify Sybase behaviour
   if SQLDbType in [sqlite3] then
   if SQLDbType in [sqlite3] then
     for t := 0 to testValuesCount-1 do
     for t := 0 to testValuesCount-1 do
       testValues[ftFixedChar,t] := PadRight(testValues[ftFixedChar,t], 10);
       testValues[ftFixedChar,t] := PadRight(testValues[ftFixedChar,t], 10);
@@ -237,6 +239,7 @@ begin
       if not(fileexists(dbname)) then
       if not(fileexists(dbname)) then
         FConnection.CreateDB; //Create testdb
         FConnection.CreateDB; //Create testdb
     end;
     end;
+
     if length(dbQuoteChars)>1 then
     if length(dbQuoteChars)>1 then
       begin
       begin
         FieldNameQuoteChars:=dbquotechars;
         FieldNameQuoteChars:=dbquotechars;