Terminating a SETOF function call sequence

Поиск
Список
Период
Сортировка
От Thomas Hallgren
Тема Terminating a SETOF function call sequence
Дата
Msg-id thhal-05vjvAvGSxicdUgw3oZ3y508WzP9lKS@mailblocks.com
обсуждение исходный текст
Ответы Re: Terminating a SETOF function call sequence  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Some SQL constructs will be satisfied before all rows of a set has been 
examined. I'm thinking of for instance:

EXISTS(SELECT * FROM y WHERE y.a > 0)

If the first row of collection y fulfills the WHERE predicate, there's 
no reason to continue perusing the rest of the rows. Now, what if 'y' is 
a function returning SETOF something? I see only one possible way for a 
C-function to detect that it doesn't need to return more rows and that 
would be if the FuncCallContext call_cntr reaches max_calls.

My question is, what happens when the evaluator doesn't need more rows? 
Will it:
a) call the function with call_cntr >= max_calls?
b) continue calling until the set is exhausted anyway?
c) simply stop calling?

a) seems unlikely since max_calls is set by the user, b) doesn't seem 
very optimal, and c) would be very bad since it doesn't give me any 
chance to release the resources that where used in order to produce the 
rows.

Regards,
Thomas Hallgren




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

Предыдущее
От: Christopher Kings-Lynne
Дата:
Сообщение: Re: Urgent problem: Unicode characters greater than or
Следующее
От: Christopher Kings-Lynne
Дата:
Сообщение: Re: Help me recovering data