Mutating Table no Oracle 11 causada por uma função

Atualizamos recentemente do Oracle 10 para o Oracle 11.2. Após a atualização, comecei a ver um erro de tabela de mutação causado por uma função em vez de um gatilho (que eu nunca havia encontrado antes). É um código antigo que funcionava em versões anteriores do Oracle.

Aqui está um cenário que causará o erro:

create table mutate (
    x NUMBER,
    y NUMBER
);

insert into mutate (x, y)
values (1,2);

insert into mutate (x, y)
values (3,4);

Eu criei duas linhas. Agora, dobrarei minhas linhas chamando esta declaração:

insert into mutate (x, y)
select x + 1, y + 1 
from mutate;

Isso não é estritamente necessário duplicar o erro, mas ajuda na minha demonstração mais tarde. Portanto, o conteúdo da tabela agora fica assim:

X,Y
1,2
3,4
2,3
4,5

Tudo está bem. Agora a parte divertida

create or replace function mutate_count
return PLS_INTEGER
is
    v_dummy PLS_INTEGER;
begin
    select count(*) 
    into v_dummy
    from mutate;

    return v_dummy;
end mutate_count;
/

Eu criei uma função para consultar minha tabela e retornar uma contagem. Agora, combinarei isso com uma instrução INSERT:

insert into mutate (x, y)
select x + 2, y + 2
from mutate
where mutate_count() = 4;

O resultado? Esse erro

ORA-04091: table MUTATE is mutating, trigger/function may not see it
ORA-06512: at "MUTATE_COUNT", line 6

Então sei o que causa o erro, mas estou curioso quanto àporqu. O Oracle não está executando o SELECT, recuperando o conjunto de resultados eentã realizando uma inserção em massa desses resultados? Eu esperaria apenas um erro de tabela de mutação se os registros já estivessem sendo inseridos antes da conclusão da consulta. Mas se a Oracle fez isso, a declaração anterior não seria:

insert into mutate (x, y)
select x + 1, y + 1 
from mutate;

iniciar um loop infinito?

ATUALIZAR

Através do link de Jeffrey, encontrei isso emos documentos da Oracle:

Por padrão, o Oracle garante consistência de leitura no nível da instrução. O conjunto de dados retornados por uma única consulta é consistente em relação a um único moment

Há também um comentário do autor emhis post:

@One poderia argumentar por que a Oracle não garante essa 'consistência de leitura no nível da instrução' para chamadas de função repetidas que aparecem dentro de uma instrução SQL. Pode ser considerado um bug, no que me diz respeito. Mas é assim que funciona atualmente.

stou correto ao assumir que esse comportamento mudou entre as versões 10 e 11 do Oracl