Subject Re: [IBO] Re: For Fabiano Bonin
Author Helen Borrie
At 10:06 PM 19/03/2004 +0000, you wrote:


>IBO 4.3 Aa
>Employee.fdb database took about 30s to open the query, and
>teste.gdb took about 3m30s to do the same (probably because it's
>metadata is much more complex).
>
>
>Let me know if the steps shown in my IBO 4.3 logs are different of
>yours, because it should be identical. The only difference between
>the IBO version in my computer (4.3Aa) and the out-of-the box
>version, is the change in the procedure
>TIBODataSet.CheckFieldCompatibility that Jason sent to me to solve
>another bug that was affecting me. Below is the code:

[lots of snip]

Boy, Fabiano, you have some *serious* network problems there.
At the bottom of this message I post the diffs report for exactly the same operation on your network and on mine.

Here, the server (duck) is Firebird Classic 1.5.0.4306 running on Win98SE (as an application, of course). The machine is AMD Duron 850 MHz with 492 Mb RAM. The network is an ordinary Ethernet 100 Mbps setup with dumb switch.

Below are the diffs for the IBOQuery test, with your results on the left:

Comparison of E:\IBO\Private\customers\fabio_bonio\ibo_4.3_employee.fdb.txt and E:\IBO\Private\customers\fabio_bonio\ibo_4.3_employee.fdb.hb.txt
20/03/2004 10:32:35 AM
Mode: All Lines

-----------------------------------------------------
/*--- = /*---
-----------------------------------------------------
[ 19/03/2004 18:01:09 ] <> [ 20/03/2004 10:19:59 AM ]
CONNECT DATABASE servidor.tecotton.com.br:/opt/firebird/examples/employee.fdb CONNECT DATABASE duck:c:\Program Files\Firebird\Firebird_1_5\examples\employee.fdb
DB_HANDLE = 10451212 DB_HANDLE = 13856952
-----------------------------------------------------
=
-----------------------------------------------------
SECONDS = 0.521 <> SECONDS = 0.180
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:10 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
DATABASE INFO = DATABASE INFO
-----------------------------------------------------
DB_HANDLE = 10451212 <> DB_HANDLE = 13856952

SECONDS = 0.581
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:11 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
START TRANSACTION = START TRANSACTION
DB HANDLE COUNT 1 DB HANDLE COUNT 1
-----------------------------------------------------
TR_HANDLE = 10450436 <> TR_HANDLE = 13856028

SECONDS = 0.070
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:11 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
PREPARE STATEMENT = PREPARE STATEMENT
-----------------------------------------------------
TR_HANDLE = 10450436 <> TR_HANDLE = 13856028
STMT_HANDLE = 10450844 STMT_HANDLE = 13856084
-----------------------------------------------------
=
/* OldParameterOrder test query */ /* OldParameterOrder test query */
SELECT R.RDB$RELATION_NAME, SELECT R.RDB$RELATION_NAME,
(SELECT RDB$FIELD_NAME (SELECT RDB$FIELD_NAME
FROM RDB$RELATION_FIELDS F FROM RDB$RELATION_FIELDS F
WHERE F.RDB$RELATION_NAME=R.RDB$RELATION_NAME WHERE F.RDB$RELATION_NAME=R.RDB$RELATION_NAME
AND F.RDB$FIELD_POSITION=? /* PRM_0 */ ) AS TESTFIELD AND F.RDB$FIELD_POSITION=? /* PRM_0 */ ) AS TESTFIELD
FROM RDB$RELATIONS R FROM RDB$RELATIONS R
WHERE R.RDB$RELATION_NAME=? /* PRM_1 */ WHERE R.RDB$RELATION_NAME=? /* PRM_1 */

PLAN (F INDEX (RDB$INDEX_4)) PLAN (F INDEX (RDB$INDEX_4))
PLAN (R INDEX (RDB$INDEX_0)) PLAN (R INDEX (RDB$INDEX_0))

FIELDS = [ Version 1 SQLd 2 SQLn 30 FIELDS = [ Version 1 SQLd 2 SQLn 30
RDB$RELATIONS.RDB$RELATION_NAME = <NIL> RDB$RELATIONS.RDB$RELATION_NAME = <NIL>
[TESTFIELD] = <NIL> ] [TESTFIELD] = <NIL> ]

-----------------------------------------------------
SECONDS = 3.054 <> SECONDS = 0.030
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:14 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
START TRANSACTION = START TRANSACTION
DB HANDLE COUNT 1 DB HANDLE COUNT 1
-----------------------------------------------------
TR_HANDLE = 10450340 <> TR_HANDLE = 13855836

SECONDS = 0.060
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:14 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
PREPARE STATEMENT = PREPARE STATEMENT
-----------------------------------------------------
TR_HANDLE = 10450436 <> TR_HANDLE = 13856028
STMT_HANDLE = 10450124 STMT_HANDLE = 13855620
-----------------------------------------------------
=
SELECT RDB$PROCEDURE_NAME SELECT RDB$PROCEDURE_NAME
FROM RDB$PROCEDURES FROM RDB$PROCEDURES
ORDER BY RDB$PROCEDURE_NAME ASC ORDER BY RDB$PROCEDURE_NAME ASC

PLAN (RDB$PROCEDURES ORDER RDB$INDEX_21) PLAN (RDB$PROCEDURES ORDER RDB$INDEX_21)

FIELDS = [ Version 1 SQLd 1 SQLn 30 FIELDS = [ Version 1 SQLd 1 SQLn 30
RDB$PROCEDURES.RDB$PROCEDURE_NAME = <NIL> ] RDB$PROCEDURES.RDB$PROCEDURE_NAME = <NIL> ]

-----------------------------------------------------
SECONDS = 2.934 <> SECONDS = 0.010
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:17 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
EXECUTE STATEMENT = EXECUTE STATEMENT
-----------------------------------------------------
TR_HANDLE = 10450436 <> TR_HANDLE = 13856028
STMT_HANDLE = 10450124 STMT_HANDLE = 13855620
-----------------------------------------------------
PARAMS = [ ] = PARAMS = [ ]
-----------------------------------------------------
<>
SECONDS = 0.170
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:17 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
COMMIT = COMMIT
-----------------------------------------------------
TR_HANDLE = 10450436 <> TR_HANDLE = 13856028

SECONDS = 0.071
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:17 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
START TRANSACTION = START TRANSACTION
DB HANDLE COUNT 1 DB HANDLE COUNT 1
-----------------------------------------------------
TR_HANDLE = 10450436 <> TR_HANDLE = 13856028

SECONDS = 0.060
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:18 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
PREPARE STATEMENT = PREPARE STATEMENT
-----------------------------------------------------
TR_HANDLE = 10450436 <> TR_HANDLE = 13856028
STMT_HANDLE = 10450124 STMT_HANDLE = 13855620
-----------------------------------------------------
=
SELECT S.RDB$FIELD_NAME SELECT S.RDB$FIELD_NAME
, I.RDB$RELATION_NAME , I.RDB$RELATION_NAME
FROM RDB$RELATION_CONSTRAINTS C FROM RDB$RELATION_CONSTRAINTS C
, RDB$INDICES I , RDB$INDICES I
, RDB$INDEX_SEGMENTS S , RDB$INDEX_SEGMENTS S
WHERE C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY' WHERE C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY'
AND C.RDB$RELATION_NAME = I.RDB$RELATION_NAME AND C.RDB$RELATION_NAME = I.RDB$RELATION_NAME
AND C.RDB$INDEX_NAME = I.RDB$INDEX_NAME AND C.RDB$INDEX_NAME = I.RDB$INDEX_NAME
AND I.RDB$INDEX_NAME = S.RDB$INDEX_NAME AND I.RDB$INDEX_NAME = S.RDB$INDEX_NAME
ORDER BY I.RDB$RELATION_NAME ASC ORDER BY I.RDB$RELATION_NAME ASC
, S.RDB$FIELD_POSITION ASC , S.RDB$FIELD_POSITION ASC

PLAN SORT (JOIN (C NATURAL,I INDEX (RDB$INDEX_5),S INDEX (RDB$INDEX_6))) PLAN SORT (JOIN (C NATURAL,I INDEX (RDB$INDEX_5),S INDEX (RDB$INDEX_6)))

FIELDS = [ Version 1 SQLd 2 SQLn 30 FIELDS = [ Version 1 SQLd 2 SQLn 30
RDB$INDEX_SEGMENTS.RDB$FIELD_NAME = <NIL> RDB$INDEX_SEGMENTS.RDB$FIELD_NAME = <NIL>
RDB$INDICES.RDB$RELATION_NAME = <NIL> ] RDB$INDICES.RDB$RELATION_NAME = <NIL> ]

-----------------------------------------------------
SECONDS = 2.974 <> SECONDS = 0.010
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:21 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
EXECUTE STATEMENT = EXECUTE STATEMENT
-----------------------------------------------------
TR_HANDLE = 10450436 <> TR_HANDLE = 13856028
STMT_HANDLE = 10450124 STMT_HANDLE = 13855620
-----------------------------------------------------
PARAMS = [ ] = PARAMS = [ ]

-----------------------------------------------------
SECONDS = 0.160 <> SECONDS = 0.010
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:21 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
COMMIT = COMMIT
-----------------------------------------------------
TR_HANDLE = 10450436 <> TR_HANDLE = 13856028

SECONDS = 0.070
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:21 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
PREPARE STATEMENT = PREPARE STATEMENT
-----------------------------------------------------
TR_HANDLE = 10450340 <> TR_HANDLE = 13855836
STMT_HANDLE = 10450844 STMT_HANDLE = 13856084
-----------------------------------------------------
=
select * from employee select * from employee
ORDER BY emp_no ASC ORDER BY emp_no ASC

PLAN (EMPLOYEE ORDER RDB$PRIMARY7) PLAN (EMPLOYEE ORDER RDB$PRIMARY7)

FIELDS = [ Version 1 SQLd 11 SQLn 30 FIELDS = [ Version 1 SQLd 11 SQLn 30
EMPLOYEE.EMP_NO = <NIL> EMPLOYEE.EMP_NO = <NIL>
EMPLOYEE.FIRST_NAME = <NIL> EMPLOYEE.FIRST_NAME = <NIL>
-----------------------------------------------------
EMPLOYEE.LAST_NAME = <NIL> <> EMPLOYEE.LAST_NAME[LAST_NAME] = <NIL>
EMPLOYEE.PHONE_EXT = <NIL> EMPLOYEE.PHONE_EXT[PHONE_EXT] = <NIL>
EMPLOYEE.HIRE_DATE = <NIL> EMPLOYEE.HIRE_DATE[HIRE_DATE] = <NIL>
-----------------------------------------------------
EMPLOYEE.DEPT_NO = <NIL> = EMPLOYEE.DEPT_NO = <NIL>
EMPLOYEE.JOB_CODE = <NIL> EMPLOYEE.JOB_CODE = <NIL>
EMPLOYEE.JOB_GRADE = <NIL> EMPLOYEE.JOB_GRADE = <NIL>
EMPLOYEE.JOB_COUNTRY = <NIL> EMPLOYEE.JOB_COUNTRY = <NIL>
EMPLOYEE.SALARY = <NIL> EMPLOYEE.SALARY = <NIL>
EMPLOYEE.FULL_NAME = <NIL> ] EMPLOYEE.FULL_NAME = <NIL> ]

-----------------------------------------------------
SECONDS = 2.964 <> SECONDS = 0.020
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:24 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
START TRANSACTION = START TRANSACTION
DB HANDLE COUNT 1 DB HANDLE COUNT 1
-----------------------------------------------------
TR_HANDLE = 10439360 <> TR_HANDLE = 13855976
-----------------------------------------------------
=
-----------------------------------------------------
SECONDS = 0.070 <> SECONDS = 0.010
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:24 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
PREPARE STATEMENT = PREPARE STATEMENT
-----------------------------------------------------
TR_HANDLE = 10439360 <> TR_HANDLE = 13855976
STMT_HANDLE = 10450124 STMT_HANDLE = 13855620
-----------------------------------------------------
=
SELECT R.RDB$FIELD_NAME SELECT R.RDB$FIELD_NAME
, R.RDB$RELATION_NAME , R.RDB$RELATION_NAME
FROM RDB$RELATION_FIELDS R, RDB$FIELDS F FROM RDB$RELATION_FIELDS R, RDB$FIELDS F
WHERE R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME WHERE R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME
AND F.RDB$COMPUTED_SOURCE IS NOT NULL AND F.RDB$COMPUTED_SOURCE IS NOT NULL
AND NOT R.RDB$RELATION_NAME STARTING WITH 'RDB$' AND NOT R.RDB$RELATION_NAME STARTING WITH 'RDB$'
ORDER BY 1 ASC ORDER BY 1 ASC

PLAN SORT (JOIN (F NATURAL,R INDEX (RDB$INDEX_3))) PLAN SORT (JOIN (F NATURAL,R INDEX (RDB$INDEX_3)))

FIELDS = [ Version 1 SQLd 2 SQLn 30 FIELDS = [ Version 1 SQLd 2 SQLn 30
RDB$RELATION_FIELDS.RDB$FIELD_NAME = <NIL> RDB$RELATION_FIELDS.RDB$FIELD_NAME = <NIL>
RDB$RELATION_FIELDS.RDB$RELATION_NAME = <NIL> ] RDB$RELATION_FIELDS.RDB$RELATION_NAME = <NIL> ]

-----------------------------------------------------
SECONDS = 2.974 <> SECONDS = 0.010
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:27 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
EXECUTE STATEMENT = EXECUTE STATEMENT
-----------------------------------------------------
TR_HANDLE = 10439360 <> TR_HANDLE = 13855976
STMT_HANDLE = 10450124 STMT_HANDLE = 13855620
-----------------------------------------------------
PARAMS = [ ] = PARAMS = [ ]
-----------------------------------------------------
<>
SECONDS = 0.161
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:28 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
COMMIT = COMMIT
-----------------------------------------------------
TR_HANDLE = 10439360 <> TR_HANDLE = 13855976

SECONDS = 0.060
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:28 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
START TRANSACTION = START TRANSACTION
DB HANDLE COUNT 1 DB HANDLE COUNT 1
-----------------------------------------------------
TR_HANDLE = 10439392 <> TR_HANDLE = 13855188

SECONDS = 0.070
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:28 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
PREPARE STATEMENT = PREPARE STATEMENT
-----------------------------------------------------
TR_HANDLE = 10439392 <> TR_HANDLE = 13855188
STMT_HANDLE = 10450124 STMT_HANDLE = 13855620
-----------------------------------------------------
=
SELECT F.RDB$FIELD_NAME F_FieldName SELECT F.RDB$FIELD_NAME F_FieldName
, F.RDB$RELATION_NAME F_RelationName , F.RDB$RELATION_NAME F_RelationName
, F.RDB$DEFAULT_SOURCE F_DefaultSource , F.RDB$DEFAULT_SOURCE F_DefaultSource
, D.RDB$DEFAULT_SOURCE D_DefaultSource , D.RDB$DEFAULT_SOURCE D_DefaultSource
, D.RDB$FIELD_TYPE D_FieldType , D.RDB$FIELD_TYPE D_FieldType
FROM RDB$RELATION_FIELDS F FROM RDB$RELATION_FIELDS F
INNER JOIN RDB$FIELDS D INNER JOIN RDB$FIELDS D
ON D.RDB$FIELD_NAME = F.RDB$FIELD_SOURCE ON D.RDB$FIELD_NAME = F.RDB$FIELD_SOURCE
WHERE (( F.RDB$DEFAULT_SOURCE IS NOT NULL ) OR ( D.RDB$DEFAULT_SOURCE IS NOT NULL )) WHERE (( F.RDB$DEFAULT_SOURCE IS NOT NULL ) OR ( D.RDB$DEFAULT_SOURCE IS NOT NULL ))
AND NOT F.RDB$RELATION_NAME STARTING WITH 'RDB$' AND NOT F.RDB$RELATION_NAME STARTING WITH 'RDB$'
ORDER BY 1 ASC ORDER BY 1 ASC

PLAN SORT (JOIN (F NATURAL,D INDEX (RDB$INDEX_2))) PLAN SORT (JOIN (F NATURAL,D INDEX (RDB$INDEX_2)))

FIELDS = [ Version 1 SQLd 5 SQLn 30 FIELDS = [ Version 1 SQLd 5 SQLn 30
RDB$RELATION_FIELDS.RDB$FIELD_NAME[F_FIELDNAME] = <NIL> RDB$RELATION_FIELDS.RDB$FIELD_NAME[F_FIELDNAME] = <NIL>
RDB$RELATION_FIELDS.RDB$RELATION_NAME[F_RELATIONNAME] = <NIL> RDB$RELATION_FIELDS.RDB$RELATION_NAME[F_RELATIONNAME] = <NIL>
RDB$RELATION_FIELDS.RDB$DEFAULT_SOURCE[F_DEFAULTSOURCE] = <NIL> RDB$RELATION_FIELDS.RDB$DEFAULT_SOURCE[F_DEFAULTSOURCE] = <NIL>
RDB$FIELDS.RDB$DEFAULT_SOURCE[D_DEFAULTSOURCE] = <NIL> RDB$FIELDS.RDB$DEFAULT_SOURCE[D_DEFAULTSOURCE] = <NIL>
RDB$FIELDS.RDB$FIELD_TYPE[D_FIELDTYPE] = <NIL> ] RDB$FIELDS.RDB$FIELD_TYPE[D_FIELDTYPE] = <NIL> ]

-----------------------------------------------------
SECONDS = 2.984 <> SECONDS = 0.010
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:31 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
EXECUTE STATEMENT = EXECUTE STATEMENT
-----------------------------------------------------
TR_HANDLE = 10439392 <> TR_HANDLE = 13855188
STMT_HANDLE = 10450124 STMT_HANDLE = 13855620
-----------------------------------------------------
PARAMS = [ ] = PARAMS = [ ]

-----------------------------------------------------
SECONDS = 0.171 <> SECONDS = 0.010
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:36 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
COMMIT = COMMIT
-----------------------------------------------------
TR_HANDLE = 10439392 <> TR_HANDLE = 13855188

SECONDS = 0.060
-----------------------------------------------------
----*/ = ----*/
/*--- /*---
-----------------------------------------------------
[ 19/03/2004 18:01:36 ] <> [ 20/03/2004 10:20:00 AM ]
-----------------------------------------------------
EXECUTE STATEMENT = EXECUTE STATEMENT
-----------------------------------------------------
TR_HANDLE = 10450340 <> TR_HANDLE = 13855836
STMT_HANDLE = 10450844 STMT_HANDLE = 13856084
-----------------------------------------------------
PARAMS = [ ] = PARAMS = [ ]
-----------------------------------------------------
<>
SECONDS = 0.151
-----------------------------------------------------
----*/ = ----*/