powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / H2 - синтаксис MSSQL - TOP
10 сообщений из 10, страница 1 из 1
H2 - синтаксис MSSQL - TOP
    #39171346
Boksy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кто сталкивался или подскажет в какую сторону смотреть.

Есть класс, который реализует постраничник на уровне бд, т.е загружает не весь список объектов , а только те, которые будут отображаться на страницы. Поддерживается MSSQL, POSTGRESQL, ORACLE. Необходимо написать юнит-тест для проверки, что все правильно селектится, для теста используется H2. Так вот с синтаксисом для POSTGRESQL, ORACLE все хорошо, а вот с MS выдается странный результат

Код: plsql
1.
SELECT TOP (2) t.id FROM table1 t  WHERE t.id NOT IN (SELECT TOP (3) t.id  FROM table1 t ORDER BY t.id DESC) ORDER BY t.id DESC



Почему то происходит игнорирование внутреннего запроса, хотя отдельно он отрабатывает корректно, с чем это может быть связано?

Если попробовать выполнить запрос непосредственно в MSSQL-е все нормально отрабатывает.
...
Рейтинг: 0 / 0
H2 - синтаксис MSSQL - TOP
    #39171514
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
H2 - синтаксис MSSQL - TOP
    #39171531
Boksy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming http://www.h2database.com/html/functions.html

Извините, что-то я не понял, хотите сказать, что использовать TOP нельзя?

Тогда странно, что
Код: plsql
1.
SELECT TOP (3) t.id  FROM table1 t ORDER BY t.id DESC


выдает нормальный результат
...
Рейтинг: 0 / 0
H2 - синтаксис MSSQL - TOP
    #39171544
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoksyИзвините, что-то я не понял, хотите сказать, что использовать TOP нельзя?

TOP это не функция. Вот в списке функций его и нет.
...
Рейтинг: 0 / 0
H2 - синтаксис MSSQL - TOP
    #39171552
Boksy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

http://www.h2database.com/html/features.html

раздел SQL Support -> ORDER BY, GROUP BY, HAVING, UNION, LIMIT, TOP

Как я понимаю TOP поддерживается
...
Рейтинг: 0 / 0
H2 - синтаксис MSSQL - TOP
    #39171594
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Boksy,

авторLimiting the Number of Rows

Before the result is returned to the application, all rows are read by the database. Server side cursors are not supported currently. If only the first few rows are interesting for the application, then the result set size should be limited to improve the performance. This can be done using LIMIT in a query (example: SELECT * FROM TEST LIMIT 100), or by using Statement.setMaxRows(max).
...
Рейтинг: 0 / 0
H2 - синтаксис MSSQL - TOP
    #39171600
Boksy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarAnt,

К сожалению, мне нужно проверить запрос с синтаксисом MSSQL, и вроде как MSSQL не использует LIMIT.

Нашел, что-то похожее
http://stackoverflow.com/questions/26253368/sql-order-by-in-in-subquery-returns-no-results

Есть подозрение, что H2 не устраивает конструкция, когда внутри IN используется TOP, и это только догадки, больше ничего конкретней пока не нашел, может кто-то что-то слышал или видел?
...
Рейтинг: 0 / 0
H2 - синтаксис MSSQL - TOP
    #39171883
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Boksy,

Если хотите тестировать поведение MS SQL, то гоняйте тесты на MS SQL, зачем вообще H2 мучить?
...
Рейтинг: 0 / 0
H2 - синтаксис MSSQL - TOP
    #39171997
Boksy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк,

Ну чтобы при сборке проекта не было обязательности настройки 3-х различных баз, тут одну создал в памяти и проверяй себе что хочешь, по-моему это удобней.

Что касается моей проблемы, походу это баг H2 https://groups.google.com/forum/#!topic/h2-database/d0Is5OTsX04 ситуация похожа, только в IN он использовал LIMIT, а я использую TOP. Попробовал на старой версии все заработало. Спасибо всем, кто действительно старался помочь решить конкретную проблему =)
...
Рейтинг: 0 / 0
H2 - синтаксис MSSQL - TOP
    #39172034
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoksyНу чтобы при сборке проекта не было обязательности настройки 3-х различных баз, тут одну создал в памяти и проверяй себе что хочешь, по-моему это удобней.
Увы, но у каждой свои грабли, поэтому и приходится использовать специфические пути обхода.

А, вообще, если через LIMIT во вложенных запросах работает, а через TOP нет, можно им наверное багу отрепортить. :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / H2 - синтаксис MSSQL - TOP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]