Re: Receiving many more rows than expected

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: Receiving many more rows than expected
Дата
Msg-id 536CDDA1.7070905@aklaver.com
обсуждение исходный текст
Ответ на Re: Receiving many more rows than expected  (Vincent de Phily <vincent.dephily@mobile-devices.fr>)
Ответы Re: Receiving many more rows than expected
Список pgsql-general
On 05/09/2014 05:36 AM, Vincent de Phily wrote:
> On Friday 09 May 2014 07:01:32 Tom Lane wrote:
>> Vincent de Phily <vincent.dephily@mobile-devices.fr> writes:
>>> In case it changes anything, this is the uncut (but still anonimized)
>>>
>>> function:
>>>      query = """UPDATE foo SET processing = 't' WHERE id IN
>>>
>>>             (SELECT id FROM foo WHERE processing = 'f' ORDER BY id ASC
>>>             LIMIT %d
>>>
>>>              FOR UPDATE)
>>>
>>>             RETURNING *""" % (conf_getint('DEFAULT', 'push_count', 5000),)
>>
>> Well, of course this view of things exposes a relevant failure mode
>> you hadn't mentioned: maybe sometimes the conf_getint() call returns
>> something other than 5000?
>
> True. But I've commented already that I'd be very surprised (and wouldn't know
> how to begin) if that value was faulty (even though it would explain things
> nicely), because
> * It is parsed once at program start (using python's ConfigParser library)

What is parsed?

> * It has the correct value of 5000 in most cases (as demonstrated by the
>    frequency of number of rows returned)

Yes, but those are not the ones of interest.

> * There is no sign that I exited the loop (and therefore got the opportunity
>    to change the value of the query) before I start receiving overlong results.

Not sure I follow, You are passing a function as a parameter, it
would be re-run each time the query was run in:

curs.execute(query)

FYI, the psycopg2 docs recommend you not use the parameter passing
method above as it is susceptible to SQL injection:

http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries

>
> Still, I agree it's suspicious, so I'm now logging the query string whenever I
> get over 5000 results (hardcoded). We'll see next time it happens.
>


--
Adrian Klaver
adrian.klaver@aklaver.com


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

Предыдущее
От: Albe Laurenz
Дата:
Сообщение: Re: Oracle to PostgreSQL replication
Следующее
От: Adrian Klaver
Дата:
Сообщение: Re: Receiving many more rows than expected