Re: [BUGS] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception

Поиск
Список
Период
Сортировка
От Stefan Reiser
Тема Re: [BUGS] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception
Дата
Msg-id 50F04D82.7020202@tu-braunschweig.de
обсуждение исходный текст
Ответ на Re: [BUGS] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception  (Kris Jurka <books@ejurka.com>)
Ответы Re: [BUGS] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception
Список pgsql-jdbc
Kris Jurka schrieb:
>
> On Fri, 11 Jan 2013, Dave Cramer wrote:
>
>> Ok, I've pushed this fix into master
>>
> You've made any failure to parse the affected row count return
> SUCCESS_NO_INFO.  Shouldn't you change the integer parsing to a long
> parsing and only modify the response if the value is > INT_MAX while still
> throwing an exception if we get something that is truly undecipherable?
>
> Kris Jurka
>
>
Dave,
I'm completely unfamiliar with the driver's code, so I better won't take
part in the further discussion -- just one thing: Now "insert_oid" won't
be assigned correctly when the assignment of update_count fails:

[QueryExecutorImpl.java]
             try
             {
                 update_count = Integer.parseInt(status.substring(1 +
status.lastIndexOf(' ')));
                 if (status.startsWith("INSERT"))
                     insert_oid = Long.parseLong(status.substring(1 +
status.indexOf(' '),
                                                 status.lastIndexOf(' ')));
             }
             catch (NumberFormatException nfe)
             {
                 update_count=Statement.SUCCESS_NO_INFO;
             }

better be something like this: ?

             try
             {
                 update_count = Integer.parseInt(status.substring(1 +
status.lastIndexOf(' ')));
             }
             catch (NumberFormatException nfe)
             {
                 update_count=Statement.SUCCESS_NO_INFO;
             }
             try {
                 if (status.startsWith("INSERT"))
                     insert_oid = Long.parseLong(status.substring(1 +
status.indexOf(' '),
                                                 status.lastIndexOf(' ')));
             } catch ( ...
                  // don't know what expected behaviour should be ...
}

regards
Stefan Reiser


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

Предыдущее
От: Kris Jurka
Дата:
Сообщение: Re: [BUGS] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception
Следующее
От: Dave Cramer
Дата:
Сообщение: Re: [BUGS] BUG #7766: Running a DML statement that affects more than 4 billion rows results in an exception