Это цитаты из Документы Oracle :
[Необязательно] Объединение путем объединения двух контекстов агрегации и возврата одного контекста. Эта операция объединяет результаты агрегирования по подмножествам, чтобы получить агрегирование по всему набору. Этот дополнительный шаг может потребоваться во время последовательной или параллельной оценки агрегата. Если необходимо, это выполняется перед шагом 4:
Интерфейс ODCIAggregateMerge () вызывается для вычисления суперагрегированных значений в таких операциях свертки.
У нас есть агрегатная функция, которую мы НЕ хотим запускать параллельно.
Причина в том, что объединение контекстов потребляло бы много ресурсов и заставляло бы нас использовать другие структуры данных, чем мы используем сейчас, что эффективно компенсирует любые преимущества в производительности при параллельном выполнении.
Таким образом, мы не объявили нашу функцию как parallel_enabled и вместо этого возвратили ODCIconst.Error в ODCIAggregateMerge «на всякий случай».
Однако в первой цитате говорится, что слияние может произойти даже при последовательной оценке.
Суперагрегаты (свертка, куб) - очевидные примеры, но есть ли другие?
Мне совершенно не удалось воспроизвести его с помощью простой группы, слияние никогда не вызывается без parallel_enabled, и кажется, что внутри группы всегда создается только один контекст.
Безопасно ли предполагать, что без набора parallel_enabled слияние никогда не будет выполнено?
Вы когда-нибудь встречали контрпример к этому правилу?