When I execute following query:
SELECT count(*) as count, $new_source as name
from news
LET $new_source = if(eval("source.indexof('Other') === 0"), "Other", source)
where country_id = "111111"
group by $new_source
it throws an error saying:
com.orientechnologies.orient.core.exception.OCommandExecutionException: expression item 'source' cannot be resolved because current record is NULL
It works well if there is at least one record for given country_id in the "news" class, but if there is no record for given country_id then it is throwing this error.
As I am using generic query for all news records irrespective of country_id, I want empty record set should be return if no record is there for specific country.
I have also tried with using orientdb's ifnull function to skip null values, something like this:
SELECT count(*) as count, $new_source as name from news LET $new_source = ifnull(source, 0, if(eval("source.indexof('Other') === 0"), "Other", source)) where country_id = "111111" group by $new_source
but it is not working, and throwing the same error.
I am using OrientDb 2.1.8. I don't want to use javascript function and call it from console (as suggested here)
Is there any way, I can skip null values while using if with group by?
I tried to modify your query and maybe I found a solution:
I have no errors and correctly no results.
Here correctly I have results
Hope it helps.