FAQ Help On-line Trustware License News Contributed Code
Join IBO List List Archive What is IB Objects? Downloads
Events Tech Info Sheets IBO Community Links Home
IBO and Firebird 2.0 Issues

During your field tests with the Firebird 2 Alphas, we would greatly appreciate your reporting any problems you find with v.2 that you didn't have with v.1.5. Please provide good reports, including simplified code samples and error messages, where appropriate. Email reports to hborrie -at- ibobjects.com.

Date Raised by Issue Resolution
2006-01-06 Thomas Steinmaurer Fixing IB_Schema.pas regarding table name/alias usage is only half of the story for Firebird 2.0 support. I've encountered another issue, namely full qualified table names in properties like MasterLinks, ...

Have a look in IBF_Browse.pas, for instance the query "qrConstraintInf". This query has the following MasterLinks property:

  RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME=RDB$RELATIONS.RDB$RELATION_NAME
Opening the query (double-click a TIB_Connection component and select Browse Database) will fail. The following MasterLinks entry will fix that problem:
  RC.RDB$RELATION_NAME=RDB$RELATIONS.RDB$RELATION_NAME
With Firebird 2.0, one needs to be extremely careful using full qualifed table/field pair values, when there is a table alias used in the SQL statement.
None
2005-07-28 Martijn Tonies From what I can see, IBO doesn't do "execute block" properly when "ParamCheck = True". Here's the description from the Fb 2 Alpha 3 developer notes:
SQL Language Extension: EXECUTE BLOCK
Function: Allow execute PL-SQL block as if it is stored procedure. Supports input and output parameters (Author Vlad Horsun).

Syntax:

EXECUTE BLOCK [ (param datatype = ?, param datatype = ?, ...) ]
[ RETURNS (param datatype, param datatype, ...) }
AS
[DECLARE VARIABLE var datatype; ...]
BEGIN
  ...
END
Client-side:
The call isc_dsql_sql_info with parameter isc_info_sql_stmt_type returns:
- isc_info_sql_stmt_select, if block has output parameters. Semantics of a call is similar to SELECT query - client has open cursor, can fetch data from it, and must close it after use.

- isc_info_sql_stmt_exec_procedure, if block has no output parameters.

Semantics of a call is similar to EXECUTE query - client has no cursor, execution runs until first SUSPEND or end of block. The client should preprocess only head of the SQL statement or use '?' instead of ':' as parameter indicator because in a body of the block may be links to local variables and \ or parameters with a colon ahead.

Example:
User SQL is

EXECUTE BLOCK (X INTEGER = :X) RETURNS (Y VARCHAR)
AS
DECLARE V INTEGER;
BEGIN
  INSERT INTO T(...) VALUES (... :X ...);
  SELECT ... FROM T INTO :Y;
  SUSPEND;
END
Preprocessed SQL is
EXECUTE BLOCK (X INTEGER = ?) RETURNS (Y VARCHAR)
AS
DECLARE V INTEGER;
BEGIN
  INSERT INTO T(...) VALUES (... :X ...);
  SELECT ... FROM T INTO :Y;
SUSPEND;
END
None
2005-03-26 Thomas Steinmaurer IBO system table queries will fail with Firebird 2.0. Firebird 2.0 got more restrictive with using table names where a table alias has been already defined. For example, one of IBObjects system table query is:
SELECT RDB$INDEX_SEGMENTS.RDB$FIELD_NAME
      , RDB$INDICES.RDB$RELATION_NAME
FROM RDB$RELATION_CONSTRAINTS C
    , RDB$INDICES I
    , RDB$INDEX_SEGMENTS S
WHERE RDB$CONSTRAINT_TYPE = 'FOREIGN KEY'
   AND C.RDB$RELATION_NAME = I.RDB$RELATION_NAME
   AND C.RDB$INDEX_NAME = I.RDB$INDEX_NAME
   AND I.RDB$INDEX_NAME = S.RDB$INDEX_NAME
ORDER BY 1 ASC
        , S.RDB$FIELD_POSITION ASC
The query will fail with the following error message:

Dynamic SQL Error SQL error code = -206 Column unknown RDB$INDEX_SEGMENTS.RDB$FIELD_NAME At line 1, column 27.

The query will work, if using table aliases in the SELECT field list. For example:

SELECT S.RDB$FIELD_NAME
      , I.RDB$RELATION_NAME
FROM RDB$RELATION_CONSTRAINTS C
    , RDB$INDICES I
    , RDB$INDEX_SEGMENTS S
WHERE RDB$CONSTRAINT_TYPE = 'FOREIGN KEY'
   AND C.RDB$RELATION_NAME = I.RDB$RELATION_NAME
   AND C.RDB$INDEX_NAME = I.RDB$INDEX_NAME
   AND I.RDB$INDEX_NAME = S.RDB$INDEX_NAME
ORDER BY 1 ASC
        , S.RDB$FIELD_POSITION ASC
None
2005-04-09 Luc Vigato Recently I tested FB 2.0 A1 with IBO 4.5Ai. I have converted a database with ODS Version 10.0 to the new ODS 11.0. My application is divided in two pieces. One part an exe-file the other part a DLL-file. I pass the db_handle of the Connection to the DLL.

Now if I open a query or a cursor in the DLL an exception is raised “ISC_Error”. This problem occurs only when the database is in ODS 11.0.

Screenshots..

None
2005-04-28 Ryan Mills
Project Leader
Marathon Opensource Project
I've installed IBOv4.5B and FB2.0 and have been running tests against the database using the Marathon 3.0.0.50 RC1 codebase and simple delphi projects to test specific functionality.

The first function I tried to do was create a new database and I used all of the following methods:

   IB_Database.CreateDatabase;
   //Making sure to set all of the appropriate fields before the call

   IB_Database.IB_Session.CreateDatabase('c:\testdb.fdb',......);
   //Also making sure to set all of the remaining fields before the call
   //and calling the ISC_Create_Database and ISC_dsql_execute_immediate
   //functions directly.
At this time I don't know if it's a FB2.0 problem or an IBO with FB2.0 problem. I do know that I can use ISQL and create a database so I know it can be done.

The error message I'm getting, with every attempt, is:

   ISC ERROR CODE:335544375
   ISC ERROR MESSAGE:
   unavailable database
Any thoughts about this? Do you need anymore information?
None
yyyy-mm-dd xxx xxx None