-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
При пейджинге с сортировкой в PostgresDataService одни и те же записи попадают в несколько страниц, а другие ни в одну 🚀 #67
Comments
g=posts&t=4787#post20825 |
Нужно проверить все ли проблемы, описанные тут были успешно преодолены в текущей версии и если да, то закрыть issue. |
bratchikov
changed the title
При пейджинге с сортировкой в PostgresDataService одни и те же записи попадают в несколько страниц, а другие ни в одну
При пейджинге с сортировкой в PostgresDataService одни и те же записи попадают в несколько страниц, а другие ни в одну 🚀
Sep 13, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Описание ошибки
При пейджинге с сортировкой по полю, в котором есть повторяющиеся значения, некоторые записи попадают на несколько страниц, а некоторые ни на одну. Это связано с неуникальностью результатов отправляемого запроса и является официально задокументированным поведением PostgreSQL: https://stackoverflow.com/questions/13580826/postgresql-repeating-rows-from-limit-offset
Ожидаемое поведение
Необходимо чтобы запросы, в которых есть пейджинг, генерировали всегда одинаковую последовательность строк.
Шаги воспроизведения
Конфигурация
БД: PostgreSQL
ORM: 5.0.0, 5.1
Пути решения
При генерации SQL-запроса в PostgresDataService для LCS, в котором заданы параметры пейджинга, добавлять в параметры сортировки последним параметром STORMMainObjectKey.
Попутно рассмотреть возможность отказа от row_number(), поскольку в PostgreSQL в нем нет необходимости.
Исходный код
Проект на GitHub: https://github.com/Flexberry/NewPlatform.Flexberry.ORM
Ветка в которую нужен будет PR:
develop-v5.0.1
(от неё делаем ветку feature-67-...) иdevelop
Файл: https://github.com/Flexberry/NewPlatform.Flexberry.ORM/blob/develop/ICSSoft.STORMNET.Business.PostgresDataService/PostgresDataService.cs#L851
Тесты
Предлагается реализовать интеграционный тест, который будет сохранять в БД несколько записей с заранее заданными ключами и повторяющимися значениями в дополнительном поле, по которому будет осуществляться сортировка, и проверять, что при постраничной вычитке каждая запись попадает на страницу в соответствии со своим ключом.
Примерная оценка трудоёмкости
8ч
Скриншоты, полезные ссылки
The text was updated successfully, but these errors were encountered: