Re: Speed dblink using alternate libpq tuple storage
От | Tom Lane |
---|---|
Тема | Re: Speed dblink using alternate libpq tuple storage |
Дата | |
Msg-id | 29747.1333142322@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Speed dblink using alternate libpq tuple storage (Marko Kreen <markokr@gmail.com>) |
Ответы |
Re: Speed dblink using alternate libpq tuple storage
|
Список | pgsql-hackers |
Marko Kreen <markokr@gmail.com> writes: > On Wed, Mar 07, 2012 at 03:14:57PM +0900, Kyotaro HORIGUCHI wrote: >>> My suggestion - check in getAnotherTuple whether resultStatus is >>> already error and do nothing then. This allows internal pqAddRow >>> to set regular "out of memory" error. Otherwise give generic >>> "row processor error". >> Current implement seems already doing this in >> parseInput3(). Could you give me further explanation? > The suggestion was about getAnotherTuple() - currently it sets > always "error in row processor". With such check, the callback > can set the error result itself. Currently only callbacks that > live inside libpq can set errors, but if we happen to expose > error-setting function in outside API, then the getAnotherTuple() > would already be ready for it. I'm pretty dissatisfied with the error reporting situation for row processors. You can't just decide not to solve it, which seems to be the current state of affairs. What I'm inclined to do is to add a "char **" parameter to the row processor, and say that when the processor returns -1 it can store an error message string there. If it does so, that's what we report. If it doesn't (which we'd detect by presetting the value to NULL), then use a generic "error in row processor" message. This is cheap and doesn't prevent the row processor from using some application-specific error reporting method if it wants; but it does allow the processor to make use of libpq's error mechanism when that's preferable. regards, tom lane
В списке pgsql-hackers по дате отправления: