|
@@ -50,11 +50,11 @@ type
|
|
procedure TestGetFieldNames;
|
|
procedure TestGetFieldNames;
|
|
procedure TestUpdateIndexDefs;
|
|
procedure TestUpdateIndexDefs;
|
|
procedure TestMultipleFieldPKIndexDefs;
|
|
procedure TestMultipleFieldPKIndexDefs;
|
|
|
|
+ procedure TestGetIndexDefs;
|
|
procedure TestSetBlobAsMemoParam;
|
|
procedure TestSetBlobAsMemoParam;
|
|
procedure TestSetBlobAsBlobParam;
|
|
procedure TestSetBlobAsBlobParam;
|
|
procedure TestSetBlobAsStringParam;
|
|
procedure TestSetBlobAsStringParam;
|
|
procedure TestNonNullableParams;
|
|
procedure TestNonNullableParams;
|
|
- procedure TestGetIndexDefs;
|
|
|
|
procedure TestDblQuoteEscComments;
|
|
procedure TestDblQuoteEscComments;
|
|
procedure TestpfInUpdateFlag; // bug 7565
|
|
procedure TestpfInUpdateFlag; // bug 7565
|
|
procedure TestInt;
|
|
procedure TestInt;
|
|
@@ -567,12 +567,6 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure TTestFieldTypes.TestSetBlobAsStringParam;
|
|
|
|
-
|
|
|
|
-begin
|
|
|
|
- TestSetBlobAsParam(1);
|
|
|
|
-end;
|
|
|
|
-
|
|
|
|
|
|
|
|
procedure TTestFieldTypes.TestBlob;
|
|
procedure TTestFieldTypes.TestBlob;
|
|
|
|
|
|
@@ -803,6 +797,11 @@ begin
|
|
TestXXParamQuery(ftDate,FieldtypeDefinitions[ftDate],testDateValuesCount);
|
|
TestXXParamQuery(ftDate,FieldtypeDefinitions[ftDate],testDateValuesCount);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TTestFieldTypes.TestCrossStringDateParam;
|
|
|
|
+begin
|
|
|
|
+ TestXXParamQuery(ftDate,FieldtypeDefinitions[ftDate],testDateValuesCount,True);
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TTestFieldTypes.TestTimeParamQuery;
|
|
procedure TTestFieldTypes.TestTimeParamQuery;
|
|
begin
|
|
begin
|
|
TestXXParamQuery(ftTime,FieldtypeDefinitions[ftTime],testValuesCount);
|
|
TestXXParamQuery(ftTime,FieldtypeDefinitions[ftTime],testValuesCount);
|
|
@@ -939,10 +938,12 @@ begin
|
|
TSQLDBConnector(DBConnector).Transaction.CommitRetaining;
|
|
TSQLDBConnector(DBConnector).Transaction.CommitRetaining;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+
|
|
procedure TTestFieldTypes.TestSetBlobAsParam(asWhat: integer);
|
|
procedure TTestFieldTypes.TestSetBlobAsParam(asWhat: integer);
|
|
|
|
+const
|
|
|
|
+ TestValue='Test deze BLob';
|
|
var
|
|
var
|
|
ASQL : TSQLQuery;
|
|
ASQL : TSQLQuery;
|
|
-
|
|
|
|
begin
|
|
begin
|
|
CreateTableWithFieldType(ftBlob,FieldtypeDefinitions[ftBlob]);
|
|
CreateTableWithFieldType(ftBlob,FieldtypeDefinitions[ftBlob]);
|
|
TestFieldDeclaration(ftBlob,0);
|
|
TestFieldDeclaration(ftBlob,0);
|
|
@@ -952,9 +953,9 @@ begin
|
|
begin
|
|
begin
|
|
sql.Text := 'insert into FPDEV2 (FT) values (:BlobParam)';
|
|
sql.Text := 'insert into FPDEV2 (FT) values (:BlobParam)';
|
|
case asWhat of
|
|
case asWhat of
|
|
- 0: Params.ParamByName('blobParam').AsMemo := 'Test deze BLob';
|
|
|
|
- 1: Params.ParamByName('blobParam').AsString := 'Test deze BLob';
|
|
|
|
- 2: Params.ParamByName('blobParam').AsBlob := 'Test deze BLob';
|
|
|
|
|
|
+ 0: Params.ParamByName('blobParam').AsMemo := TestValue;
|
|
|
|
+ 1: Params.ParamByName('blobParam').AsString := TestValue;
|
|
|
|
+ 2: Params.ParamByName('blobParam').AsBlob := TestValue;
|
|
end;
|
|
end;
|
|
ExecSQL;
|
|
ExecSQL;
|
|
end;
|
|
end;
|
|
@@ -963,11 +964,29 @@ begin
|
|
begin
|
|
begin
|
|
Open;
|
|
Open;
|
|
if not eof then
|
|
if not eof then
|
|
- AssertEquals('Test deze BLob',fields[0].AsString);
|
|
|
|
|
|
+ AssertEquals(TestValue, Fields[0].AsString);
|
|
close;
|
|
close;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TTestFieldTypes.TestSetBlobAsMemoParam;
|
|
|
|
+begin
|
|
|
|
+ // Firebird/Interbase ODBC driver : if parameter of ValueType=SQL_C_CHAR is bind to BLOB column
|
|
|
|
+ // driver interprets character data as hexadecimal string and performs conversion ('FF10'=#255#16)
|
|
|
|
+ TestSetBlobAsParam(0);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TTestFieldTypes.TestSetBlobAsStringParam;
|
|
|
|
+begin
|
|
|
|
+ TestSetBlobAsParam(1);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TTestFieldTypes.TestSetBlobAsBlobParam;
|
|
|
|
+begin
|
|
|
|
+ TestSetBlobAsParam(2);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+
|
|
procedure TTestFieldTypes.TestAggregates;
|
|
procedure TTestFieldTypes.TestAggregates;
|
|
begin
|
|
begin
|
|
TSQLDBConnector(DBConnector).Connection.ExecuteDirect('create table FPDEV2 (FIELD1 INT, FIELD2 INT)');
|
|
TSQLDBConnector(DBConnector).Connection.ExecuteDirect('create table FPDEV2 (FIELD1 INT, FIELD2 INT)');
|
|
@@ -1032,24 +1051,6 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure TTestFieldTypes.SetUp;
|
|
|
|
-begin
|
|
|
|
- InitialiseDBConnector;
|
|
|
|
-end;
|
|
|
|
-
|
|
|
|
-procedure TTestFieldTypes.TearDown;
|
|
|
|
-begin
|
|
|
|
- if assigned(DBConnector) then
|
|
|
|
- TSQLDBConnector(DBConnector).Transaction.Rollback;
|
|
|
|
- FreeDBConnector;
|
|
|
|
-end;
|
|
|
|
-
|
|
|
|
-procedure TTestFieldTypes.RunTest;
|
|
|
|
-begin
|
|
|
|
-// if (SQLConnType in TSQLConnType) then
|
|
|
|
- inherited RunTest;
|
|
|
|
-end;
|
|
|
|
-
|
|
|
|
procedure TTestFieldTypes.TestQueryAfterReconnect;
|
|
procedure TTestFieldTypes.TestQueryAfterReconnect;
|
|
var DS: TDataset;
|
|
var DS: TDataset;
|
|
begin
|
|
begin
|
|
@@ -1807,11 +1808,6 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure TTestFieldTypes.TestCrossStringDateParam;
|
|
|
|
-begin
|
|
|
|
- TestXXParamQuery(ftDate,'DATE',testDateValuesCount,True);
|
|
|
|
-end;
|
|
|
|
-
|
|
|
|
procedure TTestFieldTypes.TestGetFieldNames;
|
|
procedure TTestFieldTypes.TestGetFieldNames;
|
|
var FieldNames : TStringList;
|
|
var FieldNames : TStringList;
|
|
begin
|
|
begin
|
|
@@ -2066,6 +2062,11 @@ end;
|
|
procedure TTestFieldTypes.TestUpdateIndexDefs;
|
|
procedure TTestFieldTypes.TestUpdateIndexDefs;
|
|
var ds : TSQLQuery;
|
|
var ds : TSQLQuery;
|
|
begin
|
|
begin
|
|
|
|
+ // Firebird/Interbase ODBC driver returns for :
|
|
|
|
+ // SQLPrimaryKeys (PK_NAME): RDB$RELATION_CONSTRAINTS(RDB$CONSTRAINT_NAME)
|
|
|
|
+ // SQLStatistics (INDEX_NAME): RDB$INDICES(RDB$INDEX_NAME)
|
|
|
|
+ // these two names can differ (when PRIMARY KEY is created without giving constraint name),
|
|
|
|
+ // therefore two indexes may be created instead of one (see TODBCConnection.UpdateIndexDefs)
|
|
ds := DBConnector.GetNDataset(1) as TSQLQuery;
|
|
ds := DBConnector.GetNDataset(1) as TSQLQuery;
|
|
ds.Prepare;
|
|
ds.Prepare;
|
|
ds.ServerIndexDefs.Update;
|
|
ds.ServerIndexDefs.Update;
|
|
@@ -2099,17 +2100,33 @@ begin
|
|
Asserttrue(ds.ServerIndexDefs[0].Options=[ixPrimary,ixUnique]);
|
|
Asserttrue(ds.ServerIndexDefs[0].Options=[ixPrimary,ixUnique]);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TTestFieldTypes.TestGetIndexDefs;
|
|
|
|
|
|
-procedure TTestFieldTypes.TestSetBlobAsMemoParam;
|
|
|
|
-begin
|
|
|
|
- TestSetBlobAsParam(0);
|
|
|
|
-end;
|
|
|
|
|
|
+var ds : TSQLQuery;
|
|
|
|
+ inddefs : TIndexDefs;
|
|
|
|
|
|
-procedure TTestFieldTypes.TestSetBlobAsBlobParam;
|
|
|
|
begin
|
|
begin
|
|
- TestSetBlobAsParam(2);
|
|
|
|
|
|
+ ds := DBConnector.GetNDataset(1) as TSQLQuery;
|
|
|
|
+ ds.Open;
|
|
|
|
+ AssertEquals('ServerIndexDefs.Count', 1, ds.ServerIndexDefs.Count);
|
|
|
|
+ inddefs := HackedDataset(ds).GetIndexDefs(ds.ServerIndexDefs,[ixPrimary]);
|
|
|
|
+ AssertEquals('ixPrimary', 1, inddefs.count);
|
|
|
|
+ AssertTrue(CompareText('ID',inddefs[0].Fields)=0);
|
|
|
|
+ AssertTrue(inddefs[0].Options=[ixPrimary,ixUnique]);
|
|
|
|
+ inddefs.Free;
|
|
|
|
+
|
|
|
|
+ inddefs := HackedDataset(ds).GetIndexDefs(ds.ServerIndexDefs,[ixPrimary,ixUnique]);
|
|
|
|
+ AssertEquals('ixPrimary,ixUnique', 1, inddefs.count);
|
|
|
|
+ AssertTrue(CompareText('ID',inddefs[0].Fields)=0);
|
|
|
|
+ AssertTrue(inddefs[0].Options=[ixPrimary,ixUnique]);
|
|
|
|
+ inddefs.Free;
|
|
|
|
+
|
|
|
|
+ inddefs := HackedDataset(ds).GetIndexDefs(ds.ServerIndexDefs,[ixDescending]);
|
|
|
|
+ AssertEquals('ixDescending', 0, inddefs.count);
|
|
|
|
+ inddefs.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+
|
|
procedure TTestFieldTypes.TestTemporaryTable;
|
|
procedure TTestFieldTypes.TestTemporaryTable;
|
|
begin
|
|
begin
|
|
// Tests rev.6481: "Do not use a new connection for every statement that is executed";
|
|
// Tests rev.6481: "Do not use a new connection for every statement that is executed";
|
|
@@ -2147,32 +2164,6 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure TTestFieldTypes.TestGetIndexDefs;
|
|
|
|
-
|
|
|
|
-var ds : TSQLQuery;
|
|
|
|
- inddefs : TIndexDefs;
|
|
|
|
-
|
|
|
|
-begin
|
|
|
|
- ds := DBConnector.GetNDataset(1) as TSQLQuery;
|
|
|
|
- ds.Open;
|
|
|
|
- AssertEquals('ServerIndexDefs.Count', 1, ds.ServerIndexDefs.Count);
|
|
|
|
- inddefs := HackedDataset(ds).GetIndexDefs(ds.ServerIndexDefs,[ixPrimary]);
|
|
|
|
- AssertEquals('ixPrimary', 1, inddefs.count);
|
|
|
|
- AssertTrue(CompareText('ID',inddefs[0].Fields)=0);
|
|
|
|
- AssertTrue(inddefs[0].Options=[ixPrimary,ixUnique]);
|
|
|
|
- inddefs.Free;
|
|
|
|
-
|
|
|
|
- inddefs := HackedDataset(ds).GetIndexDefs(ds.ServerIndexDefs,[ixPrimary,ixUnique]);
|
|
|
|
- AssertEquals('ixPrimary,ixUnique', 1, inddefs.count);
|
|
|
|
- AssertTrue(CompareText('ID',inddefs[0].Fields)=0);
|
|
|
|
- AssertTrue(inddefs[0].Options=[ixPrimary,ixUnique]);
|
|
|
|
- inddefs.Free;
|
|
|
|
-
|
|
|
|
- inddefs := HackedDataset(ds).GetIndexDefs(ds.ServerIndexDefs,[ixDescending]);
|
|
|
|
- AssertEquals('ixDescending', 0, inddefs.count);
|
|
|
|
- inddefs.Free;
|
|
|
|
-end;
|
|
|
|
-
|
|
|
|
procedure TTestFieldTypes.TestDblQuoteEscComments;
|
|
procedure TTestFieldTypes.TestDblQuoteEscComments;
|
|
begin
|
|
begin
|
|
with TSQLDBConnector(DBConnector).Query do
|
|
with TSQLDBConnector(DBConnector).Query do
|
|
@@ -2259,6 +2250,26 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+
|
|
|
|
+procedure TTestFieldTypes.SetUp;
|
|
|
|
+begin
|
|
|
|
+ InitialiseDBConnector;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TTestFieldTypes.TearDown;
|
|
|
|
+begin
|
|
|
|
+ if assigned(DBConnector) then
|
|
|
|
+ TSQLDBConnector(DBConnector).Transaction.Rollback;
|
|
|
|
+ FreeDBConnector;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TTestFieldTypes.RunTest;
|
|
|
|
+begin
|
|
|
|
+// if (SQLConnType in TSQLConnType) then
|
|
|
|
+ inherited RunTest;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+
|
|
initialization
|
|
initialization
|
|
if uppercase(dbconnectorname)='SQL' then RegisterTest(TTestFieldTypes);
|
|
if uppercase(dbconnectorname)='SQL' then RegisterTest(TTestFieldTypes);
|
|
end.
|
|
end.
|