@@ -37,7 +37,7 @@ void shouldRenderSingleColumn() {
3737 Table bar = SQL .table ("bar" );
3838 Column foo = bar .column ("foo" );
3939
40- Select select = Select .builder ().select (foo ).from (bar ).limitOffset ( 1 , 2 ). build ();
40+ Select select = Select .builder ().select (foo ).from (bar ).build ();
4141
4242 assertThat (SqlRenderer .toString (select )).isEqualTo ("SELECT bar.foo FROM bar" );
4343 }
@@ -480,6 +480,65 @@ void shouldRenderCast() {
480480 assertThat (rendered ).isEqualTo ("SELECT CAST(User.name AS VARCHAR2) FROM User" );
481481 }
482482
483+ @ Test // GH-1076
484+ void rendersLimitAndOffset () {
485+
486+ Table table_user = SQL .table ("User" );
487+ Select select = StatementBuilder .select (table_user .column ("name" )).from (table_user ).limitOffset (10 , 5 ).build ();
488+
489+ final String rendered = SqlRenderer .toString (select );
490+ assertThat (rendered ).isEqualTo ("SELECT User.name FROM User OFFSET 5 ROWS FETCH FIRST 10 ROWS ONLY" );
491+ }
492+
493+ @ Test // GH-1076
494+ void rendersLimit () {
495+
496+ Table table_user = SQL .table ("User" );
497+ Select select = StatementBuilder .select (table_user .column ("name" )).from (table_user ) //
498+ .limit (3 ) //
499+ .build ();
500+
501+ final String rendered = SqlRenderer .toString (select );
502+ assertThat (rendered ).isEqualTo ("SELECT User.name FROM User FETCH FIRST 3 ROWS ONLY" );
503+ }
504+
505+ @ Test // GH-1076
506+ void rendersLock () {
507+
508+ Table table_user = SQL .table ("User" );
509+ Select select = StatementBuilder .select (table_user .column ("name" )).from (table_user ) //
510+ .lock (LockMode .PESSIMISTIC_READ ) //
511+ .build ();
512+
513+ final String rendered = SqlRenderer .toString (select );
514+ assertThat (rendered ).isEqualTo ("SELECT User.name FROM User FOR UPDATE" );
515+ }
516+
517+ @ Test // GH-1076
518+ void rendersLockAndOffset () {
519+
520+ Table table_user = SQL .table ("User" );
521+ Select select = StatementBuilder .select (table_user .column ("name" )).from (table_user ).offset (3 ) //
522+ .lock (LockMode .PESSIMISTIC_WRITE ) //
523+ .build ();
524+
525+ final String rendered = SqlRenderer .toString (select );
526+ assertThat (rendered ).isEqualTo ("SELECT User.name FROM User FOR UPDATE OFFSET 3 ROWS" );
527+ }
528+
529+ @ Test // GH-1076
530+ void rendersLockAndOffsetUsingDialect () {
531+
532+ Table table_user = SQL .table ("User" );
533+ Select select = StatementBuilder .select (table_user .column ("name" )).from (table_user ).limitOffset (3 , 6 ) //
534+ .lock (LockMode .PESSIMISTIC_WRITE ) //
535+ .build ();
536+
537+ String rendered = SqlRenderer .create (new RenderContextFactory (PostgresDialect .INSTANCE ).createRenderContext ())
538+ .render (select );
539+ assertThat (rendered ).isEqualTo ("SELECT User.name FROM User LIMIT 3 OFFSET 6 FOR UPDATE OF User" );
540+ }
541+
483542 @ Test // GH-1007
484543 void shouldRenderConditionAsExpression () {
485544
0 commit comments