Это не связано с CONNECT BY, а с артефактом вашего неправильного использования ROWNUM.
Чтобы процитировать из документацию :
Для каждой строки, возвращаемой запросом, псевдоколонка ROWNUM возвращает номер, указывающий порядок, в котором Oracle выбирает строку из таблицы или набора соединенных строк. Первая выбранная строка имеет ROWNUM из 1, вторая имеет 2 и т. Д.
ROWNUM является фактором набора результатов, а не запроса. Хотя они связаны, они не совсем одинаковы; 6-й результат невозможен, если первый не имеет значения.
Это также объясняется в документации:
Проверка условий для значений ROWNUM больше положительного integer всегда false. Например, этот запрос не возвращает строк:
SELECT * FROM employees WHERE ROWNUM > 1;
В первой строке присваивается ROWNUM из 1 и делает условие ложным. Вторая строка, которая будет выбрана, теперь является первой строкой и также назначается ROWNUM из 1 и делает условие ложным. Все строки впоследствии не удовлетворяют условию, поэтому строки не возвращаются.