Почему в h2 in memory запрос не возвращает результатов, если я делаю вложенный select во from
Есть иерархический запрос в ftl файле. В таком виде он четко отрабатывает:
WITH parentProcess (id, superProcessInstanceId, processDefinitionKey, idLevel, endTime) AS
(
SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, 0 idLevel, b.endtime
FROM bpmsHistoricProcessInstanceEntityImpl b
WHERE id = '${parameter}'
UNION ALL
SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, idLevel - 1, b.endTime
FROM bpmsHistoricProcessInstanceEntityImpl b
INNER JOIN parentProcess
ON b.id = parentProcess.superProcessInstanceId
),
childProcess (id, superProcessInstanceId, processDefinitionKey, idLevel, endTime) AS
(
SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, 0 idLevel, b.endtime
FROM bpmsHistoricProcessInstanceEntityImpl b
WHERE id = '${parameter}'
UNION ALL
SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, idLevel + 1, b.endTime
FROM bpmsHistoricProcessInstanceEntityImpl b
INNER JOIN childProcess
ON b.superProcessInstanceId = childProcess.id
)
SELECT * FROM parentProcess WHERE endTime IS NULL
UNION
SELECT * FROM childProcess WHERE endTime IS NULL
Как только эту часть добавляю во from, запрос перестает возвращать данные
SELECT * FROM parentProcess WHERE endTime IS NULL
UNION
SELECT * FROM childProcess WHERE endTime IS NULL
Запрос, который перестает вовзращать результаты
WITH parentProcess (id, superProcessInstanceId, processDefinitionKey, idLevel, endTime) AS
(
SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, 0 idLevel, b.endtime
FROM bpmsHistoricProcessInstanceEntityImpl b
WHERE id = '${parameter}'
UNION ALL
SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, idLevel - 1, b.endTime
FROM bpmsHistoricProcessInstanceEntityImpl b
INNER JOIN parentProcess
ON b.id = parentProcess.superProcessInstanceId
),
childProcess (id, superProcessInstanceId, processDefinitionKey, idLevel, endTime) AS
(
SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, 0 idLevel, b.endtime
FROM bpmsHistoricProcessInstanceEntityImpl b
WHERE id = '${parameter}'
UNION ALL
SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, idLevel + 1, b.endTime
FROM bpmsHistoricProcessInstanceEntityImpl b
INNER JOIN childProcess
ON b.superProcessInstanceId = childProcess.id
)
SELECT * FROM (
SELECT * FROM parentProcess WHERE endTime IS NULL
UNION
SELECT * FROM childProcess WHERE endTime IS NULL
)
Данный запрос используется для тестов на базе данных h2. Внешний select мне необходим, так как я еще хочу сделать DENSE_RANK() для поля level, чтобы получить уровень иерархии.