Hi,

I have created a custom function called SIMILARITY to measure similarity 
between two strings. It works fine when I use it like this:

SELECT name, SIMILARITY(name, 'alex') AS siml
  FROM Person
  ORDER BY siml DESC
  LIMIT 10;



However, when querying a large table, this is slow. To speed it up, I want 
to filter away names whose similarity is very low (so that result set would 
be smaller and sorting would be faster). I am not allowed to use the siml 
alias in the WHERE clause, so I tried using a CTE:

WITH cte(name, siml) AS (
  SELECT name, SIMILARITY(name, 'alex') AS siml
      FROM Person
)
SELECT * FROM cte
  WHERE cte.siml > 0.1
  ORDER BY cte.siml DESC
  LIMIT 10;


This syntax works fine in Postgresql. But in H2, it gives this error:
*Syntax error in SQL statement "recursive queries without UNION ALL"; 
expected {1};*

>From the past messages in this group, it seems like WITH statement is not 
yet fully supported. But this seems to be a simple variant. Just wondering 
if there is a quick solution possible.

Thanks,
Harshad

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to