Re: xml_is_document and selective pg_re_throw
От | Tom Lane |
---|---|
Тема | Re: xml_is_document and selective pg_re_throw |
Дата | |
Msg-id | 18314.1339518477@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | xml_is_document and selective pg_re_throw (Nikhil Sontakke <nikkhils@gmail.com>) |
Ответы |
Re: xml_is_document and selective pg_re_throw
|
Список | pgsql-hackers |
Nikhil Sontakke <nikkhils@gmail.com> writes: > Consider: > SELECT xml '<foo>bar</foo><bar>foo</bar>' IS DOCUMENT; > And I was looking at xml_is_document() source code. It calls xml_parse > which throws an error with code set to ERRCODE_INVALID_XML_DOCUMENT. The > catch block of xml_parse then rethrows. > Now xml_is_document does a selective rethrow only if the error is not > ERRCODE_INVALID_XML_DOCUMENT. I can understand that this function does this > to return true/false, but doesn't this behavior of not propagating the > error up all the way dangerous? InterruptHoldoffCount inconsistencies for > instance? No, I don't see any particular risk there. The places that might throw ERRCODE_INVALID_XML_DOCUMENT are sufficiently few (as in, exactly one, in this usage) that we can have reasonable confidence we know what the system state is when we catch that error. > A better way would have been to modify xml_parse to take an additional > boolean argument "to_rethrow" and not to rethrow if that is false? We could do that, but it would greatly complicate xml_parse IMO, since it still needs its own PG_TRY block to handle other error cases, and only one of those error cases ought to optionally return failure instead of re-throwing. regards, tom lane
В списке pgsql-hackers по дате отправления: