These two queries don't work:
-- STMT_SELECT_WORKING_NODE_CHILDREN_1
SELECT local_relpath FROM nodes
WHERE wc_id = ?1 AND parent_relpath = ?2
AND op_depth = (SELECT MAX(op_depth) FROM nodes
WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth > 0);
-- STMT_COUNT_WORKING_NODE_CHILDREN_1
SELECT COUNT(*) FROM nodes
WHERE wc_id = ?1 AND parent_relpath = ?2
AND op_depth = (SELECT MAX(op_depth) FROM nodes
WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth > 0);
The problem is that they determine the higest op_depth for the
children and return only the children with that op_depth. This
happens to work if all the children have the same highest op_depth but
that's just an accident.
I can fix the first one as follows:
-- STMT_SELECT_WORKING_NODE_CHILDREN_1
SELECT local_relpath FROM nodes
WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth > 0
GROUP BY local_relpath;
but I don't know how to fix the second one. How do I count the number
of rows returned by that GROUP BY query?
This leads on to the problem of selecting just the highest op_depth
for each child. Is it possible to get one query to return just the
highest op_depth for each child?
--
Philip