2015-03-18 1 views
1

Я пытаюсь выполнить следующий запрос к PostgreSQL с помощью npgsql:Является ли постгрессивным способом мои запросы?

SELECT product_id, product_id_type, asin 
FROM products 
WHERE invalid_id = FALSE and last_update is null or last_update < (CURRENT_DATE - 1) AND product_id_type IN ('EAN', 'UPC'); 

Когда я запускаю его из 0xDBE я получаю ResultSet 500. Если изменить запрос просто SELECT COUNT (*) ... то он говорит мне, что есть> 6000 строк.

Когда я запускаю его из Ngpgsql, я получаю 0 результатов. Мой IDataReader возвращает «false» для HasRows и Read() также возвращает false. Однако, если я ограничу свой запрос до 1000 результатов, добавив «LIMIT 1000», я получаю результаты.

Есть ли «регулятор ресурсов» где-то в Postgres, который контролирует это?

Да, я понимаю, что я не должен был возвращать это много, я ленился. Я исправил проблему, но поскольку я пытаюсь узнать больше о postgres, я хотел бы знать, где этот параметр управляется, и какую тему я могу прочитать, чтобы узнать больше об этом.

Благодаря

Update @ Питер-объезда ответил, что PostgreSQL не является источником этого вопроса, который технически отвечает на мой вопрос. Однако корень моего вопроса заключается в том, какова фактическая причина. Я ничего не вижу в документации Npgsql для учета этого поведения. Зачем мне нужно добавить LIMIT в мой запрос, чтобы получить какие-либо результаты?

+0

Вы воспроизвели проблему? Это позволит устранить риск открытия открытой транзакции. –

+0

Не знаете, что вы имеете в виду, воспроизведя проблему, если вы не имеете в виду разработанный воспроизводимый пример? Еще нет, но это, вероятно, поможет мне получить ответ, так что я получу один из них. Тем не менее, нет открытой транзакции, данные в таблице статичны - это список продуктов, которые я хочу ежедневно проверять. Раньше он работал с базой данных SQL Server, и я просто переносил данные в Postgres, заменив моего провайдера и выполнив миграцию моих запросов sql. –

ответ

2

База данных PostgreSQL вернет все строки, выбранные запросом; нет секретного лимитера («ресурсный губернатор»). Любые несоответствия, которые вы наблюдаете, являются артефактами используемых вами инструментов или результатом незавершенных транзакций (что может привести к тому, что различные наборы строк будут видны в разных контекстах). Инструменты могут добавлять ограничения на размер набора результатов, который они извлекают; эти ограничения могут настраиваться внутри инструментов, но не влияют на основное поведение базы данных.

+0

Спасибо, что отвечает на вопрос, который я задал, но я до сих пор не знаю, что заставляет его делать это. Мне нужно иметь возможность работать с этим в будущем, но я ничего не могу найти в документации Npgsql для этого. –