Re: Recursive containment of composite types
От | Tom Lane |
---|---|
Тема | Re: Recursive containment of composite types |
Дата | |
Msg-id | 17825.1301327034@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Recursive containment of composite types (Andrew Dunstan <andrew@dunslane.net>) |
Ответы |
Re: Recursive containment of composite types
|
Список | pgsql-hackers |
Andrew Dunstan <andrew@dunslane.net> writes: > On 03/28/2011 11:14 AM, Tom Lane wrote: >>> I think the most straightforward and reliable fix for this would be to >>> forbid recursive containment of a rowtype in itself --- ie, the first >>> ALTER should have been rejected. Can anyone think of a situation where >>> it would be sane to allow such a thing? > I think we should forbid it for now. If someone comes up with a) a good > way to make it works and b) a good use case, we can look at it then. I > expect the PostgreSQL type system to be a good deal more constrained > than a general in-memory programming language type system. If lack of > working type recursion were a serious problem surely we'd have seen more > squawks about this by now. The immediate issue in CheckAttributeType() could be fixed by tracking which types it was processing and not recursing into an already-open type. Which, not at all coincidentally, is 90% the same code it'll need to have to throw error. The issue for really "making it work" is how do we know if there are any other places that need a recursion defense? I'm pretty sure that find_composite_type_dependencies would, and I don't know where else there might be a hidden assumption that column references don't loop. So I think that it's mostly about testing rather than anything else. If I were fairly confident that I knew where all the risk spots were, I'd just fix them rather than trying to forbid the construction. regards, tom lane
В списке pgsql-hackers по дате отправления: