Browse Source

--- Merging r22607 into '.':
C packages/fcl-db/fpmake.pp
C packages/fcl-db/tests/sqldbtoolsunit.pas
--- Merging r22608 into '.':
U packages/fcl-db/tests/database.ini.txt
G packages/fcl-db/tests/sqldbtoolsunit.pas
--- Merging r22639 into '.':
G packages/fcl-db/tests/database.ini.txt
G packages/fcl-db/tests/sqldbtoolsunit.pas
Summary of conflicts:
Text conflicts: 2

# revisions: 22607,22608,22639
r22607 | michael | 2012-10-10 09:20:06 +0200 (Wed, 10 Oct 2012) | 1 line
Changed paths:
M /trunk/packages/fcl-db/fpmake.pp
M /trunk/packages/fcl-db/tests/sqldbtoolsunit.pas

* Enable 64-bit compilation
r22608 | ludob | 2012-10-10 09:40:23 +0200 (Wed, 10 Oct 2012) | 1 line
Changed paths:
M /trunk/packages/fcl-db/tests/database.ini.txt
M /trunk/packages/fcl-db/tests/sqldbtoolsunit.pas

Added support for fbembedded to DBtestframework mantis 23008 patch from Reinier
r22639 | reiniero | 2012-10-14 09:17:04 +0200 (Sun, 14 Oct 2012) | 2 lines
Changed paths:
M /trunk/packages/fcl-db/tests/database.ini.txt
M /trunk/packages/fcl-db/tests/sqldbtoolsunit.pas

+ 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: branches/fixes_2_6@23948 -

marco 12 years ago
parent
commit
345d157790

+ 24 - 21
packages/fcl-db/fpmake.pp

@@ -11,7 +11,7 @@ const
   SqliteOSes          = [beos,haiku,linux,freebsd,darwin,iphonesim,solaris,netbsd,openbsd,win32,wince,aix];
   SqliteOSes          = [beos,haiku,linux,freebsd,darwin,iphonesim,solaris,netbsd,openbsd,win32,wince,aix];
   DBaseOSes           = [beos,haiku,linux,freebsd,darwin,iphonesim,solaris,netbsd,openbsd,win32,win64,wince,aix];
   DBaseOSes           = [beos,haiku,linux,freebsd,darwin,iphonesim,solaris,netbsd,openbsd,win32,win64,wince,aix];
   MSSQLOSes           = [beos,haiku,linux,freebsd,netbsd,openbsd,win32,win64];
   MSSQLOSes           = [beos,haiku,linux,freebsd,netbsd,openbsd,win32,win64];
-  SqldbWithoutPostgresOSes = [win64];
+
 
 
 Var
 Var
   P : TPackage;
   P : TPackage;
@@ -38,13 +38,14 @@ begin
     P.SourcePath.Add('src/base');
     P.SourcePath.Add('src/base');
     P.SourcePath.Add('src/paradox');
     P.SourcePath.Add('src/paradox');
     P.SourcePath.Add('src/sqldb');
     P.SourcePath.Add('src/sqldb');
-    P.SourcePath.Add('src/sqldb/postgres');
-    P.SourcePath.Add('src/sqldb/sqlite');
-    P.SourcePath.Add('src/sqldb/interbase');
-    P.SourcePath.Add('src/sqldb/mysql');
-    P.SourcePath.Add('src/sqldb/odbc');
-    P.SourcePath.Add('src/sqldb/examples');
-    P.SourcePath.Add('src/sqldb/oracle');
+    P.SourcePath.Add('src/sqldb/postgres', SqldbConnectionOSes);
+    P.SourcePath.Add('src/sqldb/sqlite', SqldbConnectionOSes);
+    P.SourcePath.Add('src/sqldb/interbase', SqldbConnectionOSes);
+    P.SourcePath.Add('src/sqldb/mysql', SqldbConnectionOSes);
+    P.SourcePath.Add('src/sqldb/odbc', SqldbConnectionOSes);
+    P.SourcePath.Add('src/sqldb/examples', SqldbConnectionOSes);
+    P.SourcePath.Add('src/sqldb/oracle', SqldbConnectionOSes-SqldbWithoutOracleOSes);
+    P.SourcePath.Add('src/sqldb/mssql', MSSQLOSes);
     P.SourcePath.Add('src/sdf');
     P.SourcePath.Add('src/sdf');
     P.SourcePath.Add('src/json');
     P.SourcePath.Add('src/json');
     P.SourcePath.Add('src/datadict');
     P.SourcePath.Add('src/datadict');
@@ -55,8 +56,8 @@ begin
     P.SourcePath.Add('src/dbase');
     P.SourcePath.Add('src/dbase');
     P.IncludePath.Add('src/base');
     P.IncludePath.Add('src/base');
     P.IncludePath.Add('src/sqldb');
     P.IncludePath.Add('src/sqldb');
-    P.IncludePath.Add('src/sqldb/postgres');
-    P.IncludePath.Add('src/sqldb/mysql');
+    P.IncludePath.Add('src/sqldb/postgres', SqldbConnectionOSes);
+    P.IncludePath.Add('src/sqldb/mysql', SqldbConnectionOSes);
     P.IncludePath.Add('src/sdf');
     P.IncludePath.Add('src/sdf');
     P.IncludePath.Add('src/memds');  
     P.IncludePath.Add('src/memds');  
     P.IncludePath.Add('src/sqlite');
     P.IncludePath.Add('src/sqlite');
@@ -65,13 +66,15 @@ begin
 
 
     P.Dependencies.Add('fcl-base');
     P.Dependencies.Add('fcl-base');
     P.Dependencies.Add('fcl-xml');
     P.Dependencies.Add('fcl-xml');
-    P.Dependencies.Add('ibase');
-    P.Dependencies.Add('mysql');
-    P.Dependencies.Add('odbc');
-    P.Dependencies.Add('oracle');
-    P.Dependencies.Add('postgres');
-    P.Dependencies.Add('sqlite');
-    P.Dependencies.Add('pxlib');
+    P.Dependencies.Add('ibase', SqldbConnectionOSes);
+    P.Dependencies.Add('mysql', SqldbConnectionOSes);
+    P.Dependencies.Add('odbc', SqldbConnectionOSes);
+    P.Dependencies.Add('oracle', SqldbConnectionOSes-SqldbWithoutOracleOSes);
+    P.Dependencies.Add('postgres', SqldbConnectionOSes);
+    P.Dependencies.Add('sqlite', SqldbConnectionOSes+SqliteOSes);
+    P.Dependencies.Add('dblib', MSSQLOSes);
+    P.Dependencies.Add('pxlib',ParadoxOSes);
+    P.Dependencies.Add('fcl-json');
 
 
     P.Options.Add('-S2h');
     P.Options.Add('-S2h');
 
 
@@ -422,7 +425,7 @@ begin
           AddUnit('fpddsqldb');
           AddUnit('fpddsqldb');
           AddUnit('oracleconnection');
           AddUnit('oracleconnection');
         end;
         end;
-    T:=P.Targets.AddUnit('fpddpq.pp');
+    T:=P.Targets.AddUnit('fpddpq.pp', DatadictOSes);
       with T.Dependencies do
       with T.Dependencies do
         begin
         begin
           AddUnit('sqldb');
           AddUnit('sqldb');
@@ -430,7 +433,7 @@ begin
           AddUnit('fpddsqldb');
           AddUnit('fpddsqldb');
           AddUnit('pqconnection');
           AddUnit('pqconnection');
         end;
         end;
-    T:=P.Targets.AddUnit('fpddregstd.pp');
+    T:=P.Targets.AddUnit('fpddregstd.pp', DatadictOSes-SqldbWithoutOracleOSes);
       with T.Dependencies do
       with T.Dependencies do
         begin
         begin
           AddUnit('fpdatadict');
           AddUnit('fpdatadict');
@@ -636,7 +639,7 @@ begin
           AddUnit('db');
           AddUnit('db');
           AddUnit('bufdataset_parser');
           AddUnit('bufdataset_parser');
         end;
         end;
-    T:=P.Targets.AddUnit('pqconnection.pp');
+    T:=P.Targets.AddUnit('pqconnection.pp', SqldbConnectionOSes);
     T.ResourceStrings:=true;
     T.ResourceStrings:=true;
       with T.Dependencies do
       with T.Dependencies do
         begin
         begin
@@ -645,7 +648,7 @@ begin
           AddUnit('dbconst');
           AddUnit('dbconst');
           AddUnit('bufdataset');
           AddUnit('bufdataset');
         end;
         end;
-    T:=P.Targets.AddUnit('pqeventmonitor.pp', SqldbConnectionOSes-SqldbWithoutPostgresOSes);
+    T:=P.Targets.AddUnit('pqeventmonitor.pp', SqldbConnectionOSes);
       with T.Dependencies do
       with T.Dependencies do
         begin
         begin
           AddUnit('sqldb');
           AddUnit('sqldb');

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

@@ -79,6 +79,23 @@ user=sysdba
 password=masterkey
 password=masterkey
 hostname=localhost
 hostname=localhost
 
 
+; Firebird embedded
+; Same as Firebird, except we leave the host name blank
+; and specify a db without path.
+; Make sure your Firebird embedded library files (.dll/.so/.dylib)
+; are installed; e.g. on Windows, you can put them in this
+; directory.
+; Test code will create db if it doesn't exist; you can
+; delete an existing db file before the test to start
+; fresh.
+[firebirdembedded]
+connector=sql
+connectorparams=interbase
+name=fbembedtest.fdb
+user=sysdba
+password=masterkey
+hostname=
+
 ; ODBC database:
 ; ODBC database:
 [odbc]
 [odbc]
 connector=sql
 connector=sql
@@ -99,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

+ 15 - 8
packages/fcl-db/tests/sqldbtoolsunit.pas

@@ -9,10 +9,7 @@ uses
   ,db, sqldb
   ,db, sqldb
   ,mysql40conn, mysql41conn, mysql50conn, mysql51conn, mysql55conn
   ,mysql40conn, mysql41conn, mysql50conn, mysql51conn, mysql55conn
   ,ibconnection
   ,ibconnection
-  {$IFNDEF WIN64}
-  {See packages\fcl-db\src\sqldb\postgres\fpmake.pp: postgres connector won't be present on Win64}
   ,pqconnection
   ,pqconnection
-  {$ENDIF WIN64}
   ,odbcconn
   ,odbcconn
   {$IFNDEF WIN64}
   {$IFNDEF WIN64}
   {See packages\fcl-db\fpmake.pp: Oracle connector is not built if PostgreSQL connectoris not built}
   {See packages\fcl-db\fpmake.pp: Oracle connector is not built if PostgreSQL connectoris not built}
@@ -22,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] =
         (
         (
@@ -162,7 +159,6 @@ begin
     FieldtypeDefinitions[ftMemo] := 'TEXT';
     FieldtypeDefinitions[ftMemo] := 'TEXT';
     FieldtypeDefinitions[ftGraphic] := '';
     FieldtypeDefinitions[ftGraphic] := '';
     end;
     end;
-  {$ENDIF Win64}
   if SQLDbType = INTERBASE then
   if SQLDbType = INTERBASE then
     begin
     begin
     Fconnection := tIBConnection.Create(nil);
     Fconnection := tIBConnection.Create(nil);
@@ -173,7 +169,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';
@@ -199,7 +196,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';
@@ -221,6 +218,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);
@@ -234,6 +232,15 @@ begin
     UserName := dbuser;
     UserName := dbuser;
     Password := dbpassword;
     Password := dbpassword;
     HostName := dbhostname;
     HostName := dbhostname;
+    if (dbhostname='') and (SQLDbType=interbase) then
+    begin
+      // Firebird embedded: create database file if it doesn't yet exist
+      // Note: pagesize parameter has influence on behavior. We're using
+      // Firebird default here.
+      if not(fileexists(dbname)) then
+        FConnection.CreateDB; //Create testdb
+    end;
+
     if length(dbQuoteChars)>1 then
     if length(dbQuoteChars)>1 then
       begin
       begin
         FieldNameQuoteChars:=dbquotechars;
         FieldNameQuoteChars:=dbquotechars;