All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jooq.SelectSeekStep20 Maven / Gradle / Ivy

There is a newer version: 3.19.15
Show newest version
/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Other licenses:
 * -----------------------------------------------------------------------------
 * Commercial licenses for this work are available. These replace the above
 * Apache-2.0 license and offer limited warranties, support, maintenance, and
 * commercial database integrations.
 *
 * For more information, please visit: http://www.jooq.org/licenses
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */
package org.jooq;

import org.jetbrains.annotations.NotNull;

/**
 * This type is used for the {@link Select}'s DSL API when selecting generic
 * {@link Record} types.
 * 

* Example:


 * -- get all authors' first and last names, and the number
 * -- of books they've written in German, if they have written
 * -- more than five books in German in the last three years
 * -- (from 2011), and sort those authors by last names
 * -- limiting results to the second and third row
 *
 *   SELECT T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, COUNT(*)
 *     FROM T_AUTHOR
 *     JOIN T_BOOK ON T_AUTHOR.ID = T_BOOK.AUTHOR_ID
 *    WHERE T_BOOK.LANGUAGE = 'DE'
 *      AND T_BOOK.PUBLISHED > '2008-01-01'
 * GROUP BY T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME
 *   HAVING COUNT(*) > 5
 * ORDER BY T_AUTHOR.LAST_NAME ASC NULLS FIRST
 *    LIMIT 2
 *   OFFSET 1
 *      FOR UPDATE
 *       OF FIRST_NAME, LAST_NAME
 *       NO WAIT
 * 
Its equivalent in jOOQ

 * create.select(TAuthor.FIRST_NAME, TAuthor.LAST_NAME, create.count())
 *       .from(T_AUTHOR)
 *       .join(T_BOOK).on(TBook.AUTHOR_ID.equal(TAuthor.ID))
 *       .where(TBook.LANGUAGE.equal("DE"))
 *       .and(TBook.PUBLISHED.greaterThan(parseDate('2008-01-01')))
 *       .groupBy(TAuthor.FIRST_NAME, TAuthor.LAST_NAME)
 *       .having(create.count().greaterThan(5))
 *       .orderBy(TAuthor.LAST_NAME.asc().nullsFirst())
 *       .limit(2)
 *       .offset(1)
 *       .forUpdate()
 *       .of(TAuthor.FIRST_NAME, TAuthor.LAST_NAME)
 *       .noWait();
 * 
Refer to the manual for more details * * @author Lukas Eder */ public interface SelectSeekStep20 extends SelectLimitStep { /** * Add a synthetic SEEK AFTER clause to the query. *

* The synthetic SEEK AFTER clause is an alternative way to specify * an OFFSET, and thus to perform paging in a SQL query. This * can be advantageous for two reasons: *

*

    *
  1. The SQL generated from the SEEK AFTER clause is a regular * predicate, which can be used by query plan optimisers to choose an * appropriate index. The SQL standard OFFSET clause will need * to skip N rows in memory.
  2. *
  3. The SEEK AFTER clause is stable with respect to new data being * inserted or data being deleted while paging through pages.
  4. *
*

* Example:


     * DSL.using(configuration)
     *    .selectFrom(TABLE)
     *    .orderBy(ID, CODE)
     *    .seek(3, "abc")
     *    .fetch();
     * 
*

* The above query will render the following SQL statement: *

*


     * SELECT table.col1, table.col2, ... FROM table
     * WHERE (id, code) > (3, 'abc')
     * ORDER BY id ASC, code ASC
     * 
*

* The actual row value expression predicate may be expanded into this * equivalent predicate: *

*


     * WHERE (id > 3) OR (id = 3 AND code > 'abc')
     * 
*

* The SEEK AFTER method currently does not support seeking * NULL values, or operating with NULLS FIRST, * NULLS LAST clauses in the ORDER BY clause. * * @see http://use-the-index-luke.com/sql/partial-results/fetch-next-page * @see https://blog.jooq.org/faster-sql-paging-with-jooq-using-the-seek-method * @see #seekAfter(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object) */ @NotNull @CheckReturnValue @Support SelectSeekLimitStep seek(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20); /** * Add a synthetic SEEK AFTER clause to the query. *

* The synthetic SEEK AFTER clause is an alternative way to specify * an OFFSET, and thus to perform paging in a SQL query. This * can be advantageous for two reasons: *

*

    *
  1. The SQL generated from the SEEK AFTER clause is a regular * predicate, which can be used by query plan optimisers to choose an * appropriate index. The SQL standard OFFSET clause will need * to skip N rows in memory.
  2. *
  3. The SEEK AFTER clause is stable with respect to new data being * inserted or data being deleted while paging through pages.
  4. *
*

* Example:


     * DSL.using(configuration)
     *    .selectFrom(TABLE)
     *    .orderBy(ID, CODE)
     *    .seek(3, "abc")
     *    .fetch();
     * 
*

* The above query will render the following SQL statement: *

*


     * SELECT table.col1, table.col2, ... FROM table
     * WHERE (id, code) > (3, 'abc')
     * ORDER BY id ASC, code ASC
     * 
*

* The actual row value expression predicate may be expanded into this * equivalent predicate: *

*


     * WHERE (id > 3) OR (id = 3 AND code > 'abc')
     * 
*

* The SEEK AFTER method currently does not support seeking * NULL values, or operating with NULLS FIRST, * NULLS LAST clauses in the ORDER BY clause. * * @see http://use-the-index-luke.com/sql/partial-results/fetch-next-page * @see https://blog.jooq.org/faster-sql-paging-with-jooq-using-the-seek-method * @see #seekAfter(Field, Field, Field, Field, Field, Field, Field, Field, Field, Field, Field, Field, Field, Field, Field, Field, Field, Field, Field, Field) */ @NotNull @CheckReturnValue @Support SelectSeekLimitStep seek(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20); /** * Add a synthetic SEEK AFTER clause to the query. *

* The synthetic SEEK AFTER clause is an alternative way to specify * an OFFSET, and thus to perform paging in a SQL query. This * can be advantageous for two reasons: *

*

    *
  1. The SQL generated from the SEEK AFTER clause is a regular * predicate, which can be used by query plan optimisers to choose an * appropriate index. The SQL standard OFFSET clause will need * to skip N rows in memory.
  2. *
  3. The SEEK AFTER clause is stable with respect to new data being * inserted or data being deleted while paging through pages.
  4. *
*

* Example:


     * DSL.using(configuration)
     *    .selectFrom(TABLE)
     *    .orderBy(ID, CODE)
     *    .seekAfter(3, "abc")
     *    .fetch();
     * 
*

* The above query will render the following SQL statement: *

*


     * SELECT table.col1, table.col2, ... FROM table
     * WHERE (id, code) > (3, 'abc')
     * ORDER BY id ASC, code ASC
     * 
*

* The actual row value expression predicate may be expanded into this * equivalent predicate: *

*


     * WHERE (id > 3) OR (id = 3 AND code > 'abc')
     * 
*

* The SEEK AFTER method currently does not support seeking * NULL values, or operating with NULLS FIRST, * NULLS LAST clauses in the ORDER BY clause. * * @see http://use-the-index-luke.com/sql/partial-results/fetch-next-page * @see https://blog.jooq.org/faster-sql-paging-with-jooq-using-the-seek-method */ @NotNull @CheckReturnValue @Support SelectSeekLimitStep seekAfter(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20); /** * Add a synthetic SEEK AFTER clause to the query. *

* The synthetic SEEK AFTER clause is an alternative way to specify * an OFFSET, and thus to perform paging in a SQL query. This * can be advantageous for two reasons: *

*

    *
  1. The SQL generated from the SEEK AFTER clause is a regular * predicate, which can be used by query plan optimisers to choose an * appropriate index. The SQL standard OFFSET clause will need * to skip N rows in memory.
  2. *
  3. The SEEK AFTER clause is stable with respect to new data being * inserted or data being deleted while paging through pages.
  4. *
*

* Example:


     * DSL.using(configuration)
     *    .selectFrom(TABLE)
     *    .orderBy(ID, CODE)
     *    .seekAfter(3, "abc")
     *    .fetch();
     * 
*

* The above query will render the following SQL statement: *

*


     * SELECT table.col1, table.col2, ... FROM table
     * WHERE (id, code) > (3, 'abc')
     * ORDER BY id ASC, code ASC
     * 
*

* The actual row value expression predicate may be expanded into this * equivalent predicate: *

*


     * WHERE (id > 3) OR (id = 3 AND code > 'abc')
     * 
*

* The SEEK AFTER method currently does not support seeking * NULL values, or operating with NULLS FIRST, * NULLS LAST clauses in the ORDER BY clause. * * @see http://use-the-index-luke.com/sql/partial-results/fetch-next-page * @see https://blog.jooq.org/faster-sql-paging-with-jooq-using-the-seek-method */ @NotNull @CheckReturnValue @Support SelectSeekLimitStep seekAfter(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20); /** * Add a synthetic SEEK BEFORE clause to the query. *

* The synthetic SEEK BEFORE clause is an alternative way to specify * an OFFSET, and thus to perform paging in a SQL query. This * can be advantageous for two reasons: *

*

    *
  1. The SQL generated from the SEEK BEFORE clause is a regular * predicate, which can be used by query plan optimisers to choose an * appropriate index. The SQL standard OFFSET clause will need * to skip N rows in memory.
  2. *
  3. The SEEK BEFORE clause is stable with respect to new data being * inserted or data being deleted while paging through pages.
  4. *
*

* Example:


     * DSL.using(configuration)
     *    .selectFrom(TABLE)
     *    .orderBy(ID, CODE)
     *    .seekBefore(3, "abc")
     *    .fetch();
     * 
*

* The above query will render the following SQL statement: *

*


     * SELECT table.col1, table.col2, ... FROM table
     * WHERE (id, code) < (3, 'abc')
     * ORDER BY id ASC, code ASC
     * 
*

* The actual row value expression predicate may be expanded into this * equivalent predicate: *

*


     * WHERE (id < 3) OR (id = 3 AND code < 'abc')
     * 
*

* The SEEK BEFORE method currently does not support seeking * NULL values, or operating with NULLS FIRST, * NULLS LAST clauses in the ORDER BY clause. * * @see http://use-the-index-luke.com/sql/partial-results/fetch-next-page * @see https://blog.jooq.org/faster-sql-paging-with-jooq-using-the-seek-method * @deprecated - [#7461] - SEEK BEFORE is not implemented correctly */ @Deprecated @NotNull @CheckReturnValue @Support SelectSeekLimitStep seekBefore(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16, T17 t17, T18 t18, T19 t19, T20 t20); /** * Add a synthetic SEEK BEFORE clause to the query. *

* The synthetic SEEK BEFORE clause is an alternative way to specify * an OFFSET, and thus to perform paging in a SQL query. This * can be advantageous for two reasons: *

*

    *
  1. The SQL generated from the SEEK BEFORE clause is a regular * predicate, which can be used by query plan optimisers to choose an * appropriate index. The SQL standard OFFSET clause will need * to skip N rows in memory.
  2. *
  3. The SEEK BEFORE clause is stable with respect to new data being * inserted or data being deleted while paging through pages.
  4. *
*

* Example:


     * DSL.using(configuration)
     *    .selectFrom(TABLE)
     *    .orderBy(ID, CODE)
     *    .seekBefore(3, "abc")
     *    .fetch();
     * 
*

* The above query will render the following SQL statement: *

*


     * SELECT table.col1, table.col2, ... FROM table
     * WHERE (id, code) < (3, 'abc')
     * ORDER BY id ASC, code ASC
     * 
*

* The actual row value expression predicate may be expanded into this * equivalent predicate: *

*


     * WHERE (id < 3) OR (id = 3 AND code < 'abc')
     * 
*

* The SEEK BEFORE method currently does not support seeking * NULL values, or operating with NULLS FIRST, * NULLS LAST clauses in the ORDER BY clause. * * @see http://use-the-index-luke.com/sql/partial-results/fetch-next-page * @see https://blog.jooq.org/faster-sql-paging-with-jooq-using-the-seek-method * @deprecated - [#7461] - SEEK BEFORE is not implemented correctly */ @Deprecated @NotNull @CheckReturnValue @Support SelectSeekLimitStep seekBefore(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy