Join Firebird!

Join Firebird Foundation to support Firebird SQL development and receive multiple bonuses

Follow Us

Select your media preference

Newsletter

Subscribe to Firebird’s Newsletter to receive the latest news

Developer's Report: QA Stress Testing & Tools Development
February - April 2014

February 2014
  • Benchmarked inserts in v3.0 vs v2.5: compare cases when adding 1 mil rows using 10 attaches at the same time
Result: v3.0 is significantly faster generally, but GEN_ID is much slower in v3.0
  • Tested heavy index load along with nbackup in v3.0 vs v2.5
Result: MON$ tables are inaccessible untill nbackup -N is finished
  • Cancelling of gfix -sweep via delete from mon$attachments seems not working: gfix process is still alive
Result: CORE-4337
  • Non-privileged user can: (1) grant to himself other's role and (2) update rdb$security_classes table
Result: CORE-4341, CORE-4342
  • Benchmarked of bulk inserts into indexed table, single connect, 9999 execute blocks (1000 rows each of them)
Result: no noticable differences between v3.0 and v2.5
  • Benchmarked simultaneous restore of a production database using services
Result: no noticable differences between v3.0 and v2.5
  • Benchmarked hash join in 3.0 vs merge join in 2.5; also hash join vs nested loop join (both in 3.0) 
Result: hash join in almost all cases runs with the same or better performance
  • Found issue when restore of a production database could not be finished on v2.5 but succeeds in v3.0
Result: CORE-4352
  • Compare performance between nested loops in FB 3.0 vs 2.5 in simple query that counts number of 'lucky tickets'
Result: v3.0 looses about 15% in performance
  • Resume checking accuracy with hash join in plan
Result: no errors in result sets, hash join is same or faster than merge join
  • Finish comparing performance and accuracy of  complex queries in FB v3.0 vs MS SQL 2005
Result: no errors found in result sets, FB is a worse performer in medium and big data volumes
 
March 2014
  • Found a few cases when cursor stability does not work as expected
Result: added test cases to CORE-3362
  • Asynchronous cancellation request can be ignored in some cases
Result: CORE-4356
  • Non-priviledged user can block creation of new tables by select ... from rdb$database FOR UPDATE WITH LOCK
Result: CORE-4357
  • GROUP BY from derived table which contains group by on field with LITERAL value returns wrong result
Result: CORE-4360, fixed by Dmitry Yemanov
  • Investigated stored functions: found some issues about no-caching in case of DETERMINISTIC clause
Result: reported to core developers
  • Poor performance of windowed lead()over() function in comparison with explicit cursor (not uses indexes)
Result: reported to core developers
  • Tested index scans vs full table scans
Result: index scan wins when it covers up to 97% of data
  • Wrong result of WHERE predicate when it contains NULL IS NOT DISTINCT FROM (select min(NULL) from ...)
Result: CORE-4366, fixed by Dmitry Yemanov
  • Poor performance of explicit cursors containing correlated subqueries in the select list
Result: CORE-4379, fixed by Dmitry Yemanov
  • Start implementing big test that emulates OLTP activity
 
April 2014
  • Continued implementing OLTP-emulation test, refactored it multiple times in order to increase performance and minimize lock conflicts frequency
  • SELECT WITH LOCK may enter an infinite loop for a single record
Result: CORE-4388, fixed by Dmitry Yemanov
  • Trigger on DISCONNECT does not fire in FB 3.0
Result: regression is fixed by Dmitry Yemanov
  • Inner join (nested loop) does not take in account predicate in WHERE clause when driven source is VIEW based on GROUP BY
Result: CORE-4399
  • MERGE set row_count always to 1 (despite of actual rows affected)
Result: CORE-4400
  • Restore troubles: ERROR:Access to UDF/BLOB-filter module "" is denied by server administrator
Result: supposedy fixed by Dmitry Yemanov
  • FB crashes when fbtracemgr restarts
Result: fixed by Alex Peshkov


Pavel Zotov
Moscow, Russian Federation
February - April 2014

February 2014
  • Benchmarked inserts in v3.0 vs v2.5: compare cases when adding 1 mil rows using 10 attaches at the same time
Result: v3.0 is significantly faster generally, but GEN_ID is much slower in v3.0
  • Tested heavy index load along with nbackup in v3.0 vs v2.5
Result: MON$ tables are inaccessible untill nbackup -N is finished
  • Cancelling of gfix -sweep via delete from mon$attachments seems not working: gfix process is still alive
Result: CORE-4337
  • Non-privileged user can: (1) grant to himself other's role and (2) update rdb$security_classes table
Result: CORE-4341, CORE-4342
  • Benchmarked of bulk inserts into indexed table, single connect, 9999 execute blocks (1000 rows each of them)
Result: no noticable differences between v3.0 and v2.5
  • Benchmarked simultaneous restore of a production database using services
Result: no noticable differences between v3.0 and v2.5
  • Benchmarked hash join in 3.0 vs merge join in 2.5; also hash join vs nested loop join (both in 3.0) 
Result: hash join in almost all cases runs with the same or better performance
  • Found issue when restore of a production database could not be finished on v2.5 but succeeds in v3.0
Result: CORE-4352
  • Compare performance between nested loops in FB 3.0 vs 2.5 in simple query that counts number of 'lucky tickets'
Result: v3.0 looses about 15% in performance
  • Resume checking accuracy with hash join in plan
Result: no errors in result sets, hash join is same or faster than merge join
  • Finish comparing performance and accuracy of  complex queries in FB v3.0 vs MS SQL 2005
Result: no errors found in result sets, FB is a worse performer in medium and big data volumes
 
March 2014
  • Found a few cases when cursor stability does not work as expected
Result: added test cases to CORE-3362
  • Asynchronous cancellation request can be ignored in some cases
Result: CORE-4356
  • Non-priviledged user can block creation of new tables by select ... from rdb$database FOR UPDATE WITH LOCK
Result: CORE-4357
  • GROUP BY from derived table which contains group by on field with LITERAL value returns wrong result
Result: CORE-4360, fixed by Dmitry Yemanov
  • Investigated stored functions: found some issues about no-caching in case of DETERMINISTIC clause
Result: reported to core developers
  • Poor performance of windowed lead()over() function in comparison with explicit cursor (not uses indexes)
Result: reported to core developers
  • Tested index scans vs full table scans
Result: index scan wins when it covers up to 97% of data
  • Wrong result of WHERE predicate when it contains NULL IS NOT DISTINCT FROM (select min(NULL) from ...)
Result: CORE-4366, fixed by Dmitry Yemanov
  • Poor performance of explicit cursors containing correlated subqueries in the select list
Result: CORE-4379, fixed by Dmitry Yemanov
  • Start implementing big test that emulates OLTP activity
 
April 2014
  • Continued implementing OLTP-emulation test, refactored it multiple times in order to increase performance and minimize lock conflicts frequency
  • SELECT WITH LOCK may enter an infinite loop for a single record
Result: CORE-4388, fixed by Dmitry Yemanov
  • Trigger on DISCONNECT does not fire in FB 3.0
Result: regression is fixed by Dmitry Yemanov
  • Inner join (nested loop) does not take in account predicate in WHERE clause when driven source is VIEW based on GROUP BY
Result: CORE-4399
  • MERGE set row_count always to 1 (despite of actual rows affected)
Result: CORE-4400
  • Restore troubles: ERROR:Access to UDF/BLOB-filter module "" is denied by server administrator
Result: supposedy fixed by Dmitry Yemanov
  • FB crashes when fbtracemgr restarts
Result: fixed by Alex Peshkov


Pavel Zotov
Moscow, Russian Federation