While testing the 10.3.1.4 release candidate I ran across a significant
performance regression involving CASE expressions. I filed Jira-2986 to
document this problem. The evaluation time of case expressions now seems
grow in a non-linear manner with the number of 'WHEN booleanExpression THEN
thenExpression' present.
I believe the problem was introduced with the implementation of Jira-1620.
I removed the code changed by this Jira and the times returned to those in
10.2.2.0.
Using ij and a script similar to:
connect 'jdbc:derby:test';
elapsedtime on;
Values CASE WHEN 0=1 THEN 'a'
WHEN 0=2 THEN 'b'
ELSE '*'
END;
exit;
I see the following results:
Number of WHEN/THEN 10.2.2.0 10.3.1.4 Trunk
(562762) with Jira-1620 Removed
============================================================================
==========================
2 312 ms 312 ms
328 ms
4 297 ms 312 ms
328 ms
8 297 ms 516 ms
343 ms
16 313 ms 3750 ms
359 ms
18 315 ms 26219 ms
360 ms
20 328 ms 103797 ms
359 ms
I am hoping someone with more experience could help look into this problem.