Re: [PATCH] Allow multiple recursive self-references

Поиск
Список
Период
Сортировка
От Peter Eisentraut
Тема Re: [PATCH] Allow multiple recursive self-references
Дата
Msg-id 5e5e10d7-2287-7d13-cf12-eeee1627e3d3@enterprisedb.com
обсуждение исходный текст
Ответ на Re: [PATCH] Allow multiple recursive self-references  (Denis Hirn <denis.hirn@uni-tuebingen.de>)
Список pgsql-hackers
On 14.01.22 15:55, Denis Hirn wrote:
>> There is nothing in there that says that certain branches of the UNION in a recursive query mean certain things. In
fact,it doesn't even require the query to contain a UNION at all.  It just says to iterate on evaluating the query
untila fixed point is reached.  I think this supports my claim that the associativity and commutativity of a UNION in a
recursivequery still apply.
 
>>
>> This is all very complicated, so I don't claim this to be authoritative, but I just don't see anything in the spec
thatsupports what you are saying.
 
> 
> I disagree. In SQL:2016, it's discussed in 7.16 <query expression> syntax rule 3) j) i), which defines:
[actually 7.17]
> 
>> 3) Among the WQEi, ... WQEk of a given stratum, there shall be at least one <query expres-
>>     sion>, say WQEj, such that:
>>      A) WQEj is a <query expression body> that immediately contains UNION.
>>      B) WQEj has one operand that does not contain a <query name> referencing any of WQNi,
>>         ..., WQNk. This operand is said to be the non-recursive operand of WQEj.
>>      C) WQEj is said to be an anchor expression, and WQNj an anchor name.
> 
> Where <query expression body> is defined as:
>> <query expression body> ::=
>>      <query term>
>>    | <query expression body> UNION [ALL | DISTINCT]
>>        [ <corresponding spec> ] <query term>
>>
>> <query term> ::=
>>      <query primary>
>>    | ...
>>
>> <query primary> ::= ...
>>    | <left paren> <query expression body> ... <right paren>
> 
> This definition pretty much sums up what I have called RUNION.
> 
> The SQL standard might not impose a strict order on the UNION branches.
> But you have to be able to uniquely identify the anchor expression.

Right, the above text does not impose any ordering of the UNION.  It 
just means that it has to have an operand that it not recursive.  I 
think that is what I was trying to say.

I don't understand what your RUNION examples are meant to show.



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: Parameter for planner estimate of recursive queries
Следующее
От: Maxim Orlov
Дата:
Сообщение: Re: UNIQUE null treatment option