Hello,

I am exploring MonetDB queries performance that are generated based on user parameters/preferences. 
To be more specific the where clause is generated based on a user interface mapping user input parameters straight into SQL statements. 
See below one example of this transformation.

FIELD contains PATTERN (case sensitive/insensitive)

is transformed into 

select ... from TABLE where 
(case when (user_case_sensitive_pref=1) then ("FIELD" like '%PATTERN%')
else  ("FIELD" ilike '%PATTERN%')
end);

Performance of this in comparison with query generated from within the code:

char * query;
if ( user_case_sensitive_pref ) 
  query = "select ... from TABLE where  \"FIELD\" like '%PATTERN%'";
else
  query = "select ... from TABLE where  \"FIELD\" ilike '%PATTERN%'";

query_execute( query);

is huge (second approach takes 0.12 sec, vs 6 sec for first one). 
But it requires a far more complex implementation.

First I thought this has to do with user variables but even if the statement is

select ... from TABLE where 
(case when TRUE then ("FIELD" like '%PATTERN%')
else  ("FIELD" ilike '%PATTERN%')
end);

timing is similarly slow. 

This narrows down to "case" performance issue, as far as I can see.

Am I wrong? 

Thank you,
Dan