table);
// -------------------------------------------------------------------------
// XXX Convenience methods accessing the underlying Connection
// -------------------------------------------------------------------------
/**
* Access the parser API.
*/
@NotNull
Parser parser();
/**
* A JDBC connection that runs each statement through the {@link #parser()}
* first, prior to re-generating and running the SQL.
*
* Static statements are translated eagerly upon execution, e.g. of
* {@link java.sql.Statement#executeQuery(String)}. Prepared statements are
* prepared lazily once all bind variables are available, because the
* specific bind value and type may influence the generated SQL. As such, a
* {@link PreparedStatement} created from a parsing connection does not yet
* allocate any server side resources until it is executed for the first
* time.
*
* The {@link Configuration#cacheProvider()} is called for
* {@link CacheType#CACHE_PARSING_CONNECTION} to provide a translation cache
* to avoid the overhead of re-parsing and re-generating the same SQL string
* all the time. By default, this is an LRU cache.
*
* The resulting {@link Connection} wraps an underlying JDBC connection that
* has been obtained from {@link ConnectionProvider#acquire()} and must be
* released by calling {@link Connection#close()}, which calls
* {@link ConnectionProvider#release(Connection)}.
*/
@NotNull
Connection parsingConnection();
/**
* A JDBC data source that runs each statement through the {@link #parser()}
* first, prior to re-generating and running the SQL.
*
* This simply wraps the {@link #parsingConnection()} in a
* {@link DataSource}.
*/
@NotNull
DataSource parsingDataSource();
/**
* An R2DBC {@link ConnectionFactory} that runs each statement through the
* {@link #parser()} first, prior to re-generating and running the SQL.
*/
@NotNull
ConnectionFactory parsingConnectionFactory();
/**
* A JDBC connection that proxies the underlying connection to run the jOOQ
* Diagnostics Pack on executed queries.
*
* This is experimental functionality.
*/
@NotNull
Connection diagnosticsConnection();
/**
* A JDBC connection that proxies the underlying connection to run the jOOQ
* Diagnostics Pack on executed queries.
*
* This simply wraps the {@link #diagnosticsConnection()} in a {@link DataSource}.
*/
@NotNull
DataSource diagnosticsDataSource();
/**
* The experimental migrations API.
*
* This is EXPERIMENTAL functionality and subject to change in future jOOQ
* versions.
*/
@Experimental
@NotNull
Migrations migrations();
/**
* Access the database meta data.
*
* This method returns meta information provided by
* {@link Configuration#metaProvider()}, which defaults to a wrapper type
* that gives access to your JDBC connection's {@link DatabaseMetaData} as
* obtained from your {@link ConnectionProvider}.
*
* @see #meta(DatabaseMetaData)
*/
@NotNull
Meta meta();
/**
* Access the database meta data from an explicit JDBC
* {@link DatabaseMetaData}.
*/
@NotNull
Meta meta(DatabaseMetaData meta);
/**
* Access the database meta data from explicit catalog information.
*
* This will not connect to your database to get live meta information,
* unlike {@link #meta()} and {@link #meta(DatabaseMetaData)}.
*/
@NotNull
Meta meta(Catalog... catalogs);
/**
* Access the database meta data from explicit schema information.
*
* This will not connect to your database to get live meta information,
* unlike {@link #meta()} and {@link #meta(DatabaseMetaData)}.
*/
@NotNull
Meta meta(Schema... schemas);
/**
* Access the database meta data from explicit table information.
*
* This will not connect to your database to get live meta information,
* unlike {@link #meta()} and {@link #meta(DatabaseMetaData)}.
*/
@NotNull
Meta meta(Table>... tables);
/**
* Access the database meta data from an explicit JAXB-annotated meta model.
*
* This will not connect to your database to get live meta information,
* unlike {@link #meta()} and {@link #meta(DatabaseMetaData)}.
*/
@NotNull
Meta meta(InformationSchema schema);
/**
* Create meta data from a set of sources.
*
* This is convenience for wrapping all argument {@link String}s in
* {@link Source}. The same set of content types are supported as in
* {@link #meta(Source...)}.
*
* @throws DataDefinitionException if the sources do not produce consistent
* meta data.
* @throws ParserException if there is a parser error parsing the sources.
*/
@NotNull
Meta meta(String... sources) throws DataDefinitionException, ParserException;
/**
* Create meta data from a set of sources.
*
* This method creates a {@link Meta} representation from a set of source
* content, which can be any of:
*
* A set of DDL scripts, which will be parsed using
* {@link #parser()}.
* A set of XML files, which will be unmarshalled into
* {@link InformationSchema} objects.
*
*
* This will not connect to your database to get live meta information,
* unlike {@link #meta()} and {@link #meta(DatabaseMetaData)}.
*
* @throws DataDefinitionException if the sources do not produce consistent
* meta data.
* @throws ParserException if there is a parser error parsing the sources.
*/
@NotNull
Meta meta(Source... sources) throws DataDefinitionException, ParserException;
/**
* Create meta data from a set of DDL queries.
*
* This works the same way as {@link #meta(Source...)}, without the need of
* parsing the DDL scripts.
*
* @throws DataDefinitionException if the sources do not produce consistent
* meta data.
*/
@NotNull
Meta meta(Query... queries) throws DataDefinitionException;
/**
* Convenience method for {@link Meta#informationSchema()}.
*
* @see #meta(Catalog...)
* @see Meta#informationSchema()
*/
@NotNull
InformationSchema informationSchema(Catalog catalog);
/**
* Convenience method for {@link Meta#informationSchema()}.
*
* @see #meta(Catalog...)
* @see Meta#informationSchema()
*/
@NotNull
InformationSchema informationSchema(Catalog... catalogs);
/**
* Convenience method for {@link Meta#informationSchema()}.
*
* @see #meta(Schema...)
* @see Meta#informationSchema()
*/
@NotNull
InformationSchema informationSchema(Schema schema);
/**
* Convenience method for {@link Meta#informationSchema()}.
*
* @see #meta(Schema...)
* @see Meta#informationSchema()
*/
@NotNull
InformationSchema informationSchema(Schema... schemas);
/**
* Convenience method for {@link Meta#informationSchema()}.
*
* @see #meta(Table...)
* @see Meta#informationSchema()
*/
@NotNull
InformationSchema informationSchema(Table> table);
/**
* Convenience method for {@link Meta#informationSchema()}.
*
* @see #meta(Table...)
* @see Meta#informationSchema()
*/
@NotNull
InformationSchema informationSchema(Table>... table);
// -------------------------------------------------------------------------
// XXX APIs related to query optimisation
// -------------------------------------------------------------------------
/**
* Run an EXPLAIN
statement in the database to estimate the
* cardinality of the query.
*/
@NotNull
@Support({ H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
Explain explain(Query query);
// -------------------------------------------------------------------------
// XXX APIs for creating scope for transactions, mocking, batching, etc.
// -------------------------------------------------------------------------
/**
* Run a {@link TransactionalCallable} in the context of this
* DSLContext
's underlying {@link #configuration()}'s
* {@link Configuration#transactionProvider()}, and return the
* transactional
's outcome.
*
* The argument transactional code should not capture any scope but derive
* its {@link Configuration} from the
* {@link TransactionalCallable#run(Configuration)} argument in order to
* create new statements.
*
* @param transactional The transactional code
* @return The transactional outcome
* @throws RuntimeException any runtime exception thrown by the
* transactional
logic, indicating that a rollback
* has occurred.
* @throws DataAccessException any database problem that may have arised
* when executing the transactional
logic, or a
* wrapper for any checked exception thrown by the
* transactional
logic, indicating that a rollback
* has occurred.
*/
@Blocking
T transactionResult(TransactionalCallable transactional);
/**
* Run a {@link ContextTransactionalRunnable} in the context of this
* DSLContext
's underlying {@link #configuration()}'s
* {@link Configuration#transactionProvider()}, and return the
* transactional
's outcome.
*
* The argument transactional code may capture scope to derive its
* {@link Configuration} from the "context" in order to create new
* statements. This context can be provided, for instance, by
* {@link ThreadLocalTransactionProvider} automatically.
*
* @param transactional The transactional code
* @return The transactional outcome
* @throws ConfigurationException if the underlying
* {@link Configuration#transactionProvider()} is not able to
* provide context (i.e. currently, it is not a
* {@link ThreadLocalTransactionProvider}).
* @throws RuntimeException any runtime exception thrown by the
* transactional
logic, indicating that a rollback
* has occurred.
* @throws DataAccessException any database problem that may have arised
* when executing the transactional
logic, or a
* wrapper for any checked exception thrown by the
* transactional
logic, indicating that a rollback
* has occurred.
*/
@Blocking
T transactionResult(ContextTransactionalCallable transactional) throws ConfigurationException;
/**
* Run a {@link TransactionalRunnable} in the context of this
* DSLContext
's underlying {@link #configuration()}'s
* {@link Configuration#transactionProvider()}.
*
* The argument transactional code should not capture any scope but derive
* its {@link Configuration} from the
* {@link TransactionalCallable#run(Configuration)} argument in order to
* create new statements.
*
* @param transactional The transactional code
* @throws RuntimeException any runtime exception thrown by the
* transactional
logic, indicating that a rollback
* has occurred.
* @throws DataAccessException any database problem that may have arised
* when executing the transactional
logic, or a
* wrapper for any checked exception thrown by the
* transactional
logic, indicating that a rollback
* has occurred.
*/
@Blocking
void transaction(TransactionalRunnable transactional);
/**
* Run a {@link ContextTransactionalRunnable} in the context of this
* DSLContext
's underlying {@link #configuration()}'s
* {@link Configuration#transactionProvider()}.
*
* The argument transactional code may capture scope to derive its
* {@link Configuration} from the "context" in order to create new
* statements. This context can be provided, for instance, by
* {@link ThreadLocalTransactionProvider} automatically.
*
* @param transactional The transactional code
* @throws ConfigurationException if the underlying
* {@link Configuration#transactionProvider()} is not able to
* provide context (i.e. currently, it is not a
* {@link ThreadLocalTransactionProvider}).
* @throws RuntimeException any runtime exception thrown by the
* transactional
logic, indicating that a rollback
* has occurred.
* @throws DataAccessException any database problem that may have arised
* when executing the transactional
logic, or a
* wrapper for any checked exception thrown by the
* transactional
logic, indicating that a rollback
* has occurred.
*/
@Blocking
void transaction(ContextTransactionalRunnable transactional) throws ConfigurationException;
/**
* Run a {@link TransactionalCallable} asynchronously.
*
* The TransactionCallable
is run in the context of this
* DSLContext
's underlying {@link #configuration()}'s
* {@link Configuration#transactionProvider()}, and returns the
* transactional
's outcome in a new {@link CompletionStage}
* that is asynchronously completed by a task run by an {@link Executor}
* provided by the underlying {@link #configuration()}'s
* {@link Configuration#executorProvider()}.
*
* @param transactional The transactional code
* @return The transactional outcome
* @throws ConfigurationException If this is run with a
* {@link ThreadLocalTransactionProvider}.
*/
@NotNull
CompletionStage transactionResultAsync(TransactionalCallable transactional) throws ConfigurationException;
/**
* Run a {@link TransactionalRunnable} asynchronously.
*
* The TransactionRunnable
is run in the context of this
* DSLContext
's underlying {@link #configuration()}'s
* {@link Configuration#transactionProvider()}, and returns the
* transactional
's outcome in a new {@link CompletionStage}
* that is asynchronously completed by a task run by an {@link Executor}
* provided by the underlying {@link #configuration()}'s
* {@link Configuration#executorProvider()}.
*
* @param transactional The transactional code
* @throws ConfigurationException If this is run with a
* {@link ThreadLocalTransactionProvider}.
*/
@NotNull
CompletionStage transactionAsync(TransactionalRunnable transactional) throws ConfigurationException;
/**
* Run a {@link TransactionalCallable} asynchronously.
*
* The TransactionCallable
is run in the context of this
* DSLContext
's underlying {@link #configuration()}'s
* {@link Configuration#transactionProvider()}, and returns the
* transactional
's outcome in a new {@link CompletionStage}
* that is asynchronously completed by a task run by a given
* {@link Executor}.
*
* @param transactional The transactional code
* @return The transactional outcome
* @throws ConfigurationException If this is run with a
* {@link ThreadLocalTransactionProvider}.
*/
@NotNull
CompletionStage transactionResultAsync(Executor executor, TransactionalCallable transactional) throws ConfigurationException;
/**
* Run a {@link TransactionalRunnable} asynchronously.
*
* The TransactionRunnable
is run in the context of this
* DSLContext
's underlying {@link #configuration()}'s
* {@link Configuration#transactionProvider()}, and returns the
* transactional
's outcome in a new {@link CompletionStage}
* that is asynchronously completed by a task run by a given
* {@link Executor}.
*
* @param transactional The transactional code
* @throws ConfigurationException If this is run with a
* {@link ThreadLocalTransactionProvider}.
*/
@NotNull
CompletionStage transactionAsync(Executor executor, TransactionalRunnable transactional) throws ConfigurationException;
/**
* Run a {@link TransactionalPublishable} reactively.
*
* @param transactional The transactional code
* @return The transactional outcome
* @throws ConfigurationException If this is run with a
* {@link ThreadLocalTransactionProvider}.
*/
@NotNull
Publisher transactionPublisher(TransactionalPublishable transactional);
/**
* Run a {@link ConnectionCallable} in the context of this
* DSLContext
's underlying {@link #configuration()}'s
* {@link Configuration#connectionProvider()}.
*
* @param callable The code running statements against the
* connection
.
* @return The outcome of the callable
*/
@Blocking
T connectionResult(ConnectionCallable callable);
/**
* Run a {@link ConnectionRunnable} in the context of this
* DSLContext
's underlying {@link #configuration()}'s
* {@link Configuration#connectionProvider()}.
*
* @param runnable The code running statements against the
* connection
.
*/
@Blocking
void connection(ConnectionRunnable runnable);
/**
* Run a {@link MockRunnable} in the context of this DSLContext
* 's underlying {@link #configuration()}'s, and of a
* {@link MockDataProvider} and return the mockable
's outcome.
*/
T mockResult(MockDataProvider provider, MockCallable mockable);
/**
* Run a {@link MockRunnable} in the context of this DSLContext
* 's underlying {@link #configuration()}'s, and of a
* {@link MockDataProvider}.
*/
void mock(MockDataProvider provider, MockRunnable mockable);
// -------------------------------------------------------------------------
// XXX RenderContext and BindContext accessors
// -------------------------------------------------------------------------
/**
* Get a new {@link RenderContext} for the context of this DSLContext
.
*
* This will return an initialised render context as such:
*
*
* {@link RenderContext#castMode()} == {@link org.jooq.RenderContext.CastMode#DEFAULT DEFAULT}
*
* {@link RenderContext#declareFields()} == false
* {@link RenderContext#declareTables()} == false
* {@link RenderContext#format()} == false
* {@link RenderContext#paramType()} == {@link ParamType#INDEXED}
* {@link RenderContext#qualify()} == true
* {@link RenderContext#subquery()} == false
*
*
* @deprecated - [#6280] - 3.10 - Do not reuse this method. It will be
* completely internal with jOOQ 4.0
*/
@Deprecated(forRemoval = true, since = "3.10")
@Internal
@NotNull
RenderContext renderContext();
/**
* Render a QueryPart in the context of this DSLContext
.
*
* This is the same as calling renderContext().render(part)
*
* @param part The {@link QueryPart} to be rendered
* @return The rendered SQL
*/
@NotNull
String render(QueryPart part);
/**
* Render a QueryPart in the context of this DSLContext
, rendering bind
* variables as named parameters.
*
* This is the same as calling
* renderContext().paramType(NAMED).render(part)
*
* @param part The {@link QueryPart} to be rendered
* @return The rendered SQL
*/
@NotNull
String renderNamedParams(QueryPart part);
/**
* Render a QueryPart in the context of this DSLContext
, rendering bind
* variables as named parameters, or inlined parameters if they have no name.
*
* This is the same as calling
* renderContext().paramType(NAMED_OR_INLINED).render(part)
*
* @param part The {@link QueryPart} to be rendered
* @return The rendered SQL
*/
@NotNull
String renderNamedOrInlinedParams(QueryPart part);
/**
* Render a QueryPart in the context of this DSLContext
, inlining all bind
* variables.
*
* This is the same as calling
* renderContext().inline(true).render(part)
*
* @param part The {@link QueryPart} to be rendered
* @return The rendered SQL
*/
@NotNull
String renderInlined(QueryPart part);
/**
* Retrieve the bind values that will be bound by a given
* QueryPart
.
*
* The returned List
is immutable. To modify bind values, use
* {@link #extractParams(QueryPart)} instead.
*
* Unlike {@link #extractParams(QueryPart)}, which returns also inlined
* parameters, this returns only actual bind values that will render an
* actual bind value as a question mark "?"
*/
@NotNull
List extractBindValues(QueryPart part);
/**
* Get a Map
of named parameters.
*
* The Map
itself is immutable, but the {@link Param} elements
* allow for modifying bind values on an existing {@link Query} (or any
* other {@link QueryPart}).
*
* Bind values created with {@link DSL#val(Object)} will have their bind
* index as name.
*
* @see Param
* @see DSL#param(String, Object)
*/
@NotNull
Map> extractParams(QueryPart part);
/**
* Get a named parameter from a {@link QueryPart}, provided its name.
*
* Bind values created with {@link DSL#val(Object)} will have their bind
* index as name.
*
* @see Param
* @see DSL#param(String, Object)
*/
@Nullable
Param> extractParam(QueryPart part, String name);
/**
* Get a new {@link BindContext} for the context of this
* DSLContext
.
*
* This will return an initialised bind context as such:
*
* {@link RenderContext#declareFields()} == false
* {@link RenderContext#declareTables()} == false
*
*
* BindContext for JOOQ INTERNAL USE only. Avoid referencing it directly
*
* @deprecated - [#6280] - 3.10 - Do not reuse this method. It will be
* completely internal with jOOQ 4.0
*/
@Deprecated(forRemoval = true, since = "3.10")
@Internal
@NotNull
BindContext bindContext(PreparedStatement stmt);
// -------------------------------------------------------------------------
// XXX Attachable and Serializable API
// -------------------------------------------------------------------------
/**
* Attach this DSLContext
's underlying {@link #configuration()}
* to some attachables.
*/
void attach(Attachable... attachables);
/**
* Attach this DSLContext
's underlying {@link #configuration()}
* to some attachables.
*/
void attach(Collection extends Attachable> attachables);
// -------------------------------------------------------------------------
// XXX Access to the loader API
// -------------------------------------------------------------------------
/**
* Create a new Loader
object to load data from a CSV or XML
* source.
*/
@NotNull @CheckReturnValue
@Support
LoaderOptionsStep loadInto(Table table);
// -------------------------------------------------------------------------
// XXX: Queries
// -------------------------------------------------------------------------
/**
* Wrap a collection of queries.
*
* @see DSL#queries(Query...)
*/
@NotNull @CheckReturnValue
@Support
Queries queries(Query... queries);
/**
* Wrap a collection of queries.
*
* @see DSL#queries(Collection)
*/
@NotNull @CheckReturnValue
@Support
Queries queries(Collection extends Query> queries);
/**
* Wrap a collection of statements in an anonymous procedural block.
*
* @see DSL#begin(Statement...)
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB })
Block begin(Statement... statements);
/**
* Wrap a collection of statements in an anoymous procedural block.
*
* @see DSL#begin(Collection)
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB })
Block begin(Collection extends Statement> statements);
// -------------------------------------------------------------------------
// XXX Plain SQL API
// -------------------------------------------------------------------------
/**
* Create a new query holding plain SQL. There must not be any binding
* variables contained in the SQL.
*
* Example:
*
*
* String sql = "SET SCHEMA 'abc'";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return A query wrapping the plain SQL
* @see SQL
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
RowCountQuery query(SQL sql);
/**
* Create a new query holding plain SQL. There must not be any binding
* variables contained in the SQL.
*
* Example:
*
*
* String sql = "SET SCHEMA 'abc'";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return A query wrapping the plain SQL
* @see SQL
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
RowCountQuery query(String sql);
/**
* Create a new query holding plain SQL. There must be as many bind
* variables contained in the SQL, as passed in the bindings parameter.
*
* Example:
*
*
* String sql = "SET SCHEMA 'abc'";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return A query wrapping the plain SQL
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
RowCountQuery query(String sql, Object... bindings);
/**
* Create a new query holding plain SQL.
*
* Unlike {@link #query(String, Object...)}, the SQL passed to this method
* should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* query("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will render this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return A query wrapping the plain SQL
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
RowCountQuery query(String sql, QueryPart... parts);
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The results from the executed query. This will never be
* null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
@Blocking
Result fetch(SQL sql) throws DataAccessException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The results from the executed query. This will never be
* null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Result fetch(String sql) throws DataAccessException;
/**
* Execute a new query holding plain SQL.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return The results from the executed query. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Result fetch(String sql, Object... bindings) throws DataAccessException;
/**
* Execute a new query holding plain SQL.
*
* Unlike {@link #fetch(String, Object...)}, the SQL passed to this method
* should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetch("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The results from the executed query. This will never be
* null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Result fetch(String sql, QueryPart... parts) throws DataAccessException;
/**
* Execute a new query holding plain SQL and "lazily" return the generated
* result.
*
* The returned {@link Cursor} holds a reference to the executed
* {@link PreparedStatement} and the associated {@link ResultSet}. Data can
* be fetched (or iterated over) lazily, fetching records from the
* {@link ResultSet} one by one.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* Depending on your JDBC driver's default behaviour, this may load the
* whole database result into the driver's memory. In order to indicate to
* the driver that you may not want to fetch all records at once, use
* {@link ResultQuery#fetchSize(int)} and run
* {@link ResultQuery#fetchLazy()} instead, or specify
* {@link Settings#setFetchSize(Integer)} prior to calling this method.
*
* Client code is responsible for closing the cursor after use.
*
* @param sql The SQL
* @return The cursor. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Cursor fetchLazy(SQL sql) throws DataAccessException;
/**
* Execute a new query holding plain SQL and "lazily" return the generated
* result.
*
* The returned {@link Cursor} holds a reference to the executed
* {@link PreparedStatement} and the associated {@link ResultSet}. Data can
* be fetched (or iterated over) lazily, fetching records from the
* {@link ResultSet} one by one.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* Depending on your JDBC driver's default behaviour, this may load the
* whole database result into the driver's memory. In order to indicate to
* the driver that you may not want to fetch all records at once, use
* {@link ResultQuery#fetchSize(int)} and run
* {@link ResultQuery#fetchLazy()} instead, or specify
* {@link Settings#setFetchSize(Integer)} prior to calling this method.
*
* Client code is responsible for closing the cursor after use.
*
* @param sql The SQL
* @return The cursor. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Cursor fetchLazy(String sql) throws DataAccessException;
/**
* Execute a new query holding plain SQL and "lazily" return the generated
* result.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* The returned {@link Cursor} holds a reference to the executed
* {@link PreparedStatement} and the associated {@link ResultSet}. Data can
* be fetched (or iterated over) lazily, fetching records from the
* {@link ResultSet} one by one.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* Depending on your JDBC driver's default behaviour, this may load the
* whole database result into the driver's memory. In order to indicate to
* the driver that you may not want to fetch all records at once, use
* {@link ResultQuery#fetchSize(int)} and run
* {@link ResultQuery#fetchLazy()} instead, or specify
* {@link Settings#setFetchSize(Integer)} prior to calling this method.
*
* Client code is responsible for closing the cursor after use.
*
* @param sql The SQL
* @param bindings The bindings
* @return The cursor. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Cursor fetchLazy(String sql, Object... bindings) throws DataAccessException;
/**
* Execute a new query holding plain SQL and "lazily" return the generated
* result.
*
* The returned {@link Cursor} holds a reference to the executed
* {@link PreparedStatement} and the associated {@link ResultSet}. Data can
* be fetched (or iterated over) lazily, fetching records from the
* {@link ResultSet} one by one.
*
* Unlike {@link #fetchLazy(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetchLazy("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* Depending on your JDBC driver's default behaviour, this may load the
* whole database result into the driver's memory. In order to indicate to
* the driver that you may not want to fetch all records at once, use
* {@link ResultQuery#fetchSize(int)} and run
* {@link ResultQuery#fetchLazy()} instead, or specify
* {@link Settings#setFetchSize(Integer)} prior to calling this method.
*
* Client code is responsible for closing the cursor after use.
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The cursor. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Cursor fetchLazy(String sql, QueryPart... parts) throws DataAccessException;
/**
* Fetch results in a new {@link CompletionStage}.
*
* The result is asynchronously completed by a task running in an
* {@link Executor} provided by the {@link #configuration()}'s
* {@link Configuration#executorProvider()}.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The completion stage. The completed result will never be
* null
.
* @see SQL
*/
@NotNull
@Support
@PlainSQL
CompletionStage> fetchAsync(SQL sql);
/**
* Fetch results in a new {@link CompletionStage}.
*
* The result is asynchronously completed by a task running in an
* {@link Executor} provided by the {@link #configuration()}'s
* {@link Configuration#executorProvider()}.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The completion stage. The completed result will never be
* null
.
* @see SQL
*/
@NotNull
@Support
@PlainSQL
CompletionStage> fetchAsync(String sql);
/**
* Fetch results in a new {@link CompletionStage}.
*
* The result is asynchronously completed by a task running in an
* {@link Executor} provided by the {@link #configuration()}'s
* {@link Configuration#executorProvider()}.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return The completion stage. The completed result will never be
* null
.
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull
@Support
@PlainSQL
CompletionStage> fetchAsync(String sql, Object... bindings);
/**
* Fetch results in a new {@link CompletionStage}.
*
* The result is asynchronously completed by a task running in an
* {@link Executor} provided by the {@link #configuration()}'s
* {@link Configuration#executorProvider()}.
*
* Unlike {@link #fetchLazy(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetchLazy("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The completion stage. The completed result will never be
* null
.
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull
@Support
@PlainSQL
CompletionStage> fetchAsync(String sql, QueryPart... parts);
/**
* Fetch results in a new {@link CompletionStage} that is asynchronously
* completed by a task running in the given executor.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The completion stage. The completed result will never be
* null
.
* @see SQL
*/
@NotNull
@Support
@PlainSQL
CompletionStage> fetchAsync(Executor executor, SQL sql);
/**
* Fetch results in a new {@link CompletionStage} that is asynchronously
* completed by a task running in the given executor.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The completion stage. The completed result will never be
* null
.
* @see SQL
*/
@NotNull
@Support
@PlainSQL
CompletionStage> fetchAsync(Executor executor, String sql);
/**
* Fetch results in a new {@link CompletionStage} that is asynchronously
* completed by a task running in the given executor.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return The completion stage. The completed result will never be
* null
.
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull
@Support
@PlainSQL
CompletionStage> fetchAsync(Executor executor, String sql, Object... bindings);
/**
* Fetch results in a new {@link CompletionStage} that is asynchronously
* completed by a task running in the given executor.
*
* Unlike {@link #fetchLazy(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetchLazy("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The completion stage. The completed result will never be
* null
.
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull
@Support
@PlainSQL
CompletionStage> fetchAsync(Executor executor, String sql, QueryPart... parts);
/**
* Execute a new query holding plain SQL and "lazily" return the generated
* result.
*
* The returned {@link Stream} holds a reference to the executed
* {@link PreparedStatement} and the associated {@link ResultSet}. Data can
* be fetched (or iterated over) lazily, fetching records from the
* {@link ResultSet} one by one.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* Depending on your JDBC driver's default behaviour, this may load the
* whole database result into the driver's memory. In order to indicate to
* the driver that you may not want to fetch all records at once, use
* {@link ResultQuery#fetchSize(int)} and run
* {@link ResultQuery#fetchStream()} instead, or specify
* {@link Settings#setFetchSize(Integer)} prior to calling this method.
*
* Client code is responsible for closing the stream after use.
*
* @param sql The SQL
* @return The results from the executed query. This is never
* null
, even if the database returns no
* {@link ResultSet}
* @throws DataAccessException if something went wrong executing the query
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Stream fetchStream(SQL sql) throws DataAccessException;
/**
* Execute a new query holding plain SQL and "lazily" return the generated
* result.
*
* The returned {@link Stream} holds a reference to the executed
* {@link PreparedStatement} and the associated {@link ResultSet}. Data can
* be fetched (or iterated over) lazily, fetching records from the
* {@link ResultSet} one by one.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* Depending on your JDBC driver's default behaviour, this may load the
* whole database result into the driver's memory. In order to indicate to
* the driver that you may not want to fetch all records at once, use
* {@link ResultQuery#fetchSize(int)} and run
* {@link ResultQuery#fetchStream()} instead, or specify
* {@link Settings#setFetchSize(Integer)} prior to calling this method.
*
* Client code is responsible for closing the stream after use.
*
* @param sql The SQL
* @return The results from the executed query. This is never
* null
, even if the database returns no
* {@link ResultSet}
* @throws DataAccessException if something went wrong executing the query
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Stream fetchStream(String sql) throws DataAccessException;
/**
* Execute a new query holding plain SQL and "lazily" return the generated
* result.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* The returned {@link Stream} holds a reference to the executed
* {@link PreparedStatement} and the associated {@link ResultSet}. Data can
* be fetched (or iterated over) lazily, fetching records from the
* {@link ResultSet} one by one.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* Depending on your JDBC driver's default behaviour, this may load the
* whole database result into the driver's memory. In order to indicate to
* the driver that you may not want to fetch all records at once, use
* {@link ResultQuery#fetchSize(int)} and run
* {@link ResultQuery#fetchStream()} instead, or specify
* {@link Settings#setFetchSize(Integer)} prior to calling this method.
*
* Client code is responsible for closing the stream after use.
*
* @param sql The SQL
* @param bindings The bindings
* @return The results from the executed query. This is never
* null
, even if the database returns no
* {@link ResultSet}
* @throws DataAccessException if something went wrong executing the query
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Stream fetchStream(String sql, Object... bindings) throws DataAccessException;
/**
* Execute a new query holding plain SQL and "lazily" return the generated
* result.
*
* The returned {@link Stream} holds a reference to the executed
* {@link PreparedStatement} and the associated {@link ResultSet}. Data can
* be fetched (or iterated over) lazily, fetching records from the
* {@link ResultSet} one by one.
*
* Unlike {@link #fetchStream(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetchLazy("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* Depending on your JDBC driver's default behaviour, this may load the
* whole database result into the driver's memory. In order to indicate to
* the driver that you may not want to fetch all records at once, use
* {@link ResultQuery#fetchSize(int)} and run
* {@link ResultQuery#fetchStream()} instead, or specify
* {@link Settings#setFetchSize(Integer)} prior to calling this method.
*
* Client code is responsible for closing the stream after use.
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The results from the executed query. This is never
* null
, even if the database returns no
* {@link ResultSet}
* @throws DataAccessException if something went wrong executing the query
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Stream fetchStream(String sql, QueryPart... parts) throws DataAccessException;
/**
* Execute a new query holding plain SQL, possibly returning several result
* sets.
*
* Example (Sybase ASE):
*
*
* String sql = "sp_help 'my_table'";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The results. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Results fetchMany(SQL sql) throws DataAccessException;
/**
* Execute a new query holding plain SQL, possibly returning several result
* sets.
*
* Example (Sybase ASE):
*
*
* String sql = "sp_help 'my_table'";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The results. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Results fetchMany(String sql) throws DataAccessException;
/**
* Execute a new query holding plain SQL, possibly returning several result
* sets.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* Example (Sybase ASE):
*
*
* String sql = "sp_help 'my_table'";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return The results. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Results fetchMany(String sql, Object... bindings) throws DataAccessException;
/**
* Execute a new query holding plain SQL, possibly returning several result
* sets.
*
* Unlike {@link #fetchMany(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetchMany("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The results. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Results fetchMany(String sql, QueryPart... parts) throws DataAccessException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The record or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
*/
@Nullable
@Support
@PlainSQL
@Blocking
Record fetchOne(SQL sql) throws DataAccessException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The record or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
*/
@Nullable
@Support
@PlainSQL
@Blocking
Record fetchOne(String sql) throws DataAccessException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return The record or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
* @see DSL#sql(String, Object...)
*/
@Nullable
@Support
@PlainSQL
@Blocking
Record fetchOne(String sql, Object... bindings) throws DataAccessException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* Unlike {@link #fetchOne(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetchOne("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The record or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@Nullable
@Support
@PlainSQL
@Blocking
Record fetchOne(String sql, QueryPart... parts) throws DataAccessException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The record. This is never null
.
* @throws DataAccessException if something went wrong executing the query
* @throws NoDataFoundException if the query returned no rows
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Record fetchSingle(SQL sql) throws DataAccessException, NoDataFoundException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The record. This is never null
.
* @throws DataAccessException if something went wrong executing the query
* @throws NoDataFoundException if the query returned no rows
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Record fetchSingle(String sql) throws DataAccessException, NoDataFoundException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return The record. This is never null
.
* @throws DataAccessException if something went wrong executing the query
* @throws NoDataFoundException if the query returned no rows
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Record fetchSingle(String sql, Object... bindings) throws DataAccessException, NoDataFoundException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* Unlike {@link #fetchOne(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetchOne("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The record. This is never null
.
* @throws DataAccessException if something went wrong executing the query
* @throws NoDataFoundException if the query returned no rows
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Record fetchSingle(String sql, QueryPart... parts) throws DataAccessException, NoDataFoundException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The results from the executed query
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Optional fetchOptional(SQL sql) throws DataAccessException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The results from the executed query
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Optional fetchOptional(String sql) throws DataAccessException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return The results from the executed query
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Optional fetchOptional(String sql, Object... bindings) throws DataAccessException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* Unlike {@link #fetchOne(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetchOne("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The results from the executed query
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Optional fetchOptional(String sql, QueryPart... parts) throws DataAccessException, TooManyRowsException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The value or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
*/
@Nullable
@Support
@PlainSQL
@Blocking
Object fetchValue(SQL sql) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The value or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
*/
@Nullable
@Support
@PlainSQL
@Blocking
Object fetchValue(String sql) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Execute a new query holding plain SQL.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return The value or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
* @see DSL#sql(String, Object...)
*/
@Nullable
@Support
@PlainSQL
@Blocking
Object fetchValue(String sql, Object... bindings) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Execute a new query holding plain SQL.
*
* Unlike {@link #fetchValue(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetchOne("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The value or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@Nullable
@Support
@PlainSQL
@Blocking
Object fetchValue(String sql, QueryPart... parts) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The result value from the executed query
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Optional> fetchOptionalValue(SQL sql) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The result value from the executed query
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
Optional> fetchOptionalValue(String sql) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Execute a new query holding plain SQL.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return The results from the executed query
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Optional> fetchOptionalValue(String sql, Object... bindings) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Execute a new query holding plain SQL.
*
* Unlike {@link #fetchValue(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetchOne("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The results from the executed query
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
Optional> fetchOptionalValue(String sql, QueryPart... parts) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The values. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
List> fetchValues(SQL sql) throws DataAccessException, InvalidResultException;
/**
* Execute a new query holding plain SQL.
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The values. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
*/
@NotNull
@Support
@PlainSQL
@Blocking
List> fetchValues(String sql) throws DataAccessException, InvalidResultException;
/**
* Execute a new query holding plain SQL.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return The values. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
List> fetchValues(String sql, Object... bindings) throws DataAccessException, InvalidResultException;
/**
* Execute a new query holding plain SQL.
*
* Unlike {@link #fetchValue(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* fetchOne("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The values. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @throws InvalidResultException if the query returned a record with more
* than one value
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull
@Support
@PlainSQL
@Blocking
List> fetchValues(String sql, QueryPart... parts) throws DataAccessException, InvalidResultException;
/**
* Execute a query holding plain SQL.
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The results from the executed query
* @throws DataAccessException if something went wrong executing the query
* @see SQL
*/
@Support
@PlainSQL
@Blocking
int execute(SQL sql) throws DataAccessException;
/**
* Execute a query holding plain SQL.
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return The results from the executed query
* @throws DataAccessException if something went wrong executing the query
* @see SQL
*/
@Support
@PlainSQL
@Blocking
int execute(String sql) throws DataAccessException;
/**
* Execute a new query holding plain SQL.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return The results from the executed query
* @throws DataAccessException if something went wrong executing the query
* @see SQL
* @see DSL#sql(String, Object...)
*/
@Support
@PlainSQL
@Blocking
int execute(String sql, Object... bindings) throws DataAccessException;
/**
* Execute a new query holding plain SQL.
*
* Unlike {@link #execute(String, Object...)}, the SQL passed to this method
* should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* execute("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will execute this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return The results from the executed query
* @throws DataAccessException if something went wrong executing the query
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@Support
@PlainSQL
@Blocking
int execute(String sql, QueryPart... parts) throws DataAccessException;
/**
* Create a new query holding plain SQL.
*
* There must not be any bind variables contained in the SQL
*
* Use this method, when you want to take advantage of the many ways to
* fetch results in jOOQ, using {@link ResultQuery}. Some examples:
*
*
*
* {@link ResultQuery#fetchLazy()}
* Open a cursor and fetch records one by one
*
*
* {@link ResultQuery#fetchInto(Class)}
* Fetch records into a custom POJO (optionally annotated with JPA
* annotations)
*
*
* {@link ResultQuery#fetchInto(RecordHandler)}
* Fetch records into a custom callback (similar to Spring's RowMapper)
*
*
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return An executable query
* @see SQL
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
ResultQuery resultQuery(SQL sql);
/**
* Create a new query holding plain SQL.
*
* There must not be any bind variables contained in the SQL
*
* Use this method, when you want to take advantage of the many ways to
* fetch results in jOOQ, using {@link ResultQuery}. Some examples:
*
*
*
* {@link ResultQuery#fetchLazy()}
* Open a cursor and fetch records one by one
*
*
* {@link ResultQuery#fetchInto(Class)}
* Fetch records into a custom POJO (optionally annotated with JPA
* annotations)
*
*
* {@link ResultQuery#fetchInto(RecordHandler)}
* Fetch records into a custom callback (similar to Spring's RowMapper)
*
*
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @return An executable query
* @see SQL
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
ResultQuery resultQuery(String sql);
/**
* Create a new query holding plain SQL.
*
* There must be as many bind variables contained in the SQL, as passed in
* the bindings parameter
*
* Use this method, when you want to take advantage of the many ways to
* fetch results in jOOQ, using {@link ResultQuery}. Some examples:
*
*
*
* {@link ResultQuery#fetchLazy()}
* Open a cursor and fetch records one by one
*
*
* {@link ResultQuery#fetchInto(Class)}
* Fetch records into a custom POJO (optionally annotated with JPA
* annotations)
*
*
* {@link ResultQuery#fetchInto(RecordHandler)}
* Fetch records into a custom callback (similar to Spring's RowMapper)
*
*
*
* Example (Postgres):
*
*
* String sql = "FETCH ALL IN \"<unnamed cursor 1>\"";
Example
* (SQLite):
*
*
* String sql = "pragma table_info('my_table')";
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @param sql The SQL
* @param bindings The bindings
* @return A query wrapping the plain SQL
* @see SQL
* @see DSL#sql(String, Object...)
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
ResultQuery resultQuery(String sql, Object... bindings);
/**
* Create a new query holding plain SQL.
*
* Unlike {@link #resultQuery(String, Object...)}, the SQL passed to this
* method should not contain any bind variables. Instead, you can pass
* {@link QueryPart} objects to the method which will be rendered at indexed
* locations of your SQL string as such:
* // The following query
* resultQuery("select {0}, {1} from {2}", val(1), inline("test"), name("DUAL"));
*
* // Will render this SQL by default, using SQLDialect.ORACLE:
* select ?, 'test' from "DUAL"
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses! One way to escape
* literals is to use {@link DSL#name(String...)} and similar methods
*
* @param sql The SQL clause, containing {numbered placeholders} where query
* parts can be injected
* @param parts The {@link QueryPart} objects that are rendered at the
* {numbered placeholder} locations
* @return A query wrapping the plain SQL
* @see SQL
* @see DSL#sql(String, QueryPart...)
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
ResultQuery resultQuery(String sql, QueryPart... parts);
// -------------------------------------------------------------------------
// XXX JDBC convenience methods
// -------------------------------------------------------------------------
/**
* Fetch all data from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Result}.
*
* After fetching all data, the JDBC ResultSet will be closed.
*
* Use {@link #fetchLazy(ResultSet)}, to fetch one Record
at a
* time, instead of load the entire ResultSet
into a jOOQ
* Result
at once.
*
* @param rs The JDBC ResultSet to fetch data from
* @return The resulting jOOQ Result. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Result fetch(ResultSet rs) throws DataAccessException;
/**
* Fetch all data from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Result}.
*
* After fetching all data, the JDBC ResultSet will be closed.
*
* Use {@link #fetchLazy(ResultSet)}, to fetch one Record
at a
* time, instead of load the entire ResultSet
into a jOOQ
* Result
at once.
*
* The additional fields
argument is used by jOOQ to coerce
* field names and data types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param fields The fields to use in the desired output
* @return The resulting jOOQ Result. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Result fetch(ResultSet rs, Field>... fields) throws DataAccessException;
/**
* Fetch all data from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Result}.
*
* After fetching all data, the JDBC ResultSet will be closed.
*
* Use {@link #fetchLazy(ResultSet)}, to fetch one Record
at a
* time, instead of load the entire ResultSet
into a jOOQ
* Result
at once.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The resulting jOOQ Result. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Result fetch(ResultSet rs, DataType>... types) throws DataAccessException;
/**
* Fetch all data from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Result}.
*
* After fetching all data, the JDBC ResultSet will be closed.
*
* Use {@link #fetchLazy(ResultSet)}, to fetch one Record
at a
* time, instead of load the entire ResultSet
into a jOOQ
* Result
at once.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The resulting jOOQ Result. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Result fetch(ResultSet rs, Class>... types) throws DataAccessException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* @param rs The JDBC ResultSet to fetch data from
* @return The record or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
*/
@Nullable
@Support
@Blocking
Record fetchOne(ResultSet rs) throws DataAccessException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional fields
argument is used by jOOQ to coerce
* field names and data types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param fields The fields to use in the desired output
* @return The record or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
*/
@Nullable
@Support
@Blocking
Record fetchOne(ResultSet rs, Field>... fields) throws DataAccessException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The record or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
*/
@Nullable
@Support
@Blocking
Record fetchOne(ResultSet rs, DataType>... types) throws DataAccessException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The record. This is never null
.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
*/
@Nullable
@Support
@Blocking
Record fetchOne(ResultSet rs, Class>... types) throws DataAccessException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* @param rs The JDBC ResultSet to fetch data from
* @return The record or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
*/
@NotNull
@Support
@Blocking
Record fetchSingle(ResultSet rs) throws DataAccessException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional fields
argument is used by jOOQ to coerce
* field names and data types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param fields The fields to use in the desired output
* @return The record. This is never null
.
* @throws DataAccessException if something went wrong executing the query
* @throws NoDataFoundException if the query returned no rows
* @throws TooManyRowsException if the query returned more than one record
*/
@NotNull
@Support
@Blocking
Record fetchSingle(ResultSet rs, Field>... fields) throws DataAccessException, NoDataFoundException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The record. This is never null
.
* @throws DataAccessException if something went wrong executing the query
* @throws NoDataFoundException if the query returned no rows
* @throws TooManyRowsException if the query returned more than one record
*/
@NotNull
@Support
@Blocking
Record fetchSingle(ResultSet rs, DataType>... types) throws DataAccessException, NoDataFoundException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The record. This is never null
.
* @throws DataAccessException if something went wrong executing the query
* @throws NoDataFoundException if the query returned no rows
* @throws TooManyRowsException if the query returned more than one record
*/
@NotNull
@Support
@Blocking
Record fetchSingle(ResultSet rs, Class>... types) throws DataAccessException, NoDataFoundException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* @param rs The JDBC ResultSet to fetch data from
* @return The resulting jOOQ record
* @throws DataAccessException if something went wrong executing the query
* @throws NoDataFoundException if the query returned no rows
* @throws TooManyRowsException if the query returned more than one record
*/
@NotNull
@Support
@Blocking
Optional fetchOptional(ResultSet rs) throws DataAccessException, NoDataFoundException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional fields
argument is used by jOOQ to coerce
* field names and data types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param fields The fields to use in the desired output
* @return The resulting jOOQ record
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
*/
@NotNull
@Support
@Blocking
Optional fetchOptional(ResultSet rs, Field>... fields) throws DataAccessException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The resulting jOOQ record
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
*/
@NotNull
@Support
@Blocking
Optional fetchOptional(ResultSet rs, DataType>... types) throws DataAccessException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and transform it to a jOOQ
* {@link Record}.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The resulting jOOQ record
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
*/
@NotNull
@Support
@Blocking
Optional fetchOptional(ResultSet rs, Class>... types) throws DataAccessException, TooManyRowsException;
/**
* Fetch a record from a JDBC {@link ResultSet} and return the only
* contained value.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* @param rs The JDBC ResultSet to fetch data from
* @return The value or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@Nullable
@Support
@Blocking
Object fetchValue(ResultSet rs) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Fetch a record from a JDBC {@link ResultSet} and return the only
* contained value.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional field
argument is used by jOOQ to coerce
* field names and data types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param field The field to use in the desired output
* @return The value or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@Nullable
@Support
@Blocking
T fetchValue(ResultSet rs, Field field) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Fetch a record from a JDBC {@link ResultSet} and return the only
* contained value.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional type
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param type The data type to use in the desired output
* @return The value or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@Nullable
@Support
@Blocking
T fetchValue(ResultSet rs, DataType type) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Fetch a record from a JDBC {@link ResultSet} and return the only
* contained value.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional type
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param type The data types to use in the desired output
* @return The value or null
, if no record was found.
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@Nullable
@Support
@Blocking
T fetchValue(ResultSet rs, Class type) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Fetch a record from a JDBC {@link ResultSet} and return the only
* contained value.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* @param rs The JDBC ResultSet to fetch data from
* @return The resulting value
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@NotNull
@Support
@Blocking
Optional> fetchOptionalValue(ResultSet rs) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Fetch a record from a JDBC {@link ResultSet} and return the only
* contained value.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional field
argument is used by jOOQ to coerce
* field names and data types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param field The field to use in the desired output
* @return The resulting value
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@NotNull
@Support
@Blocking
Optional fetchOptionalValue(ResultSet rs, Field field) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Fetch a record from a JDBC {@link ResultSet} and return the only
* contained value.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional type
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param type The data type to use in the desired output
* @return The resulting value
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@NotNull
@Support
@Blocking
Optional fetchOptionalValue(ResultSet rs, DataType type) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Fetch a record from a JDBC {@link ResultSet} and return the only
* contained value.
*
* This will internally fetch all records and throw an exception if there
* was more than one resulting record.
*
* The additional type
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param type The data types to use in the desired output
* @return The resulting value
* @throws DataAccessException if something went wrong executing the query
* @throws TooManyRowsException if the query returned more than one record
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@NotNull
@Support
@Blocking
Optional fetchOptionalValue(ResultSet rs, Class type) throws DataAccessException, TooManyRowsException, InvalidResultException;
/**
* Fetch a result from a JDBC {@link ResultSet} and return the only
* contained column's values.
*
* @param rs The JDBC ResultSet to fetch data from
* @return The values. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@NotNull
@Support
@Blocking
List> fetchValues(ResultSet rs) throws DataAccessException, InvalidResultException;
/**
* Fetch a result from a JDBC {@link ResultSet} and return the only
* contained column's values.
*
* The additional field
argument is used by jOOQ to coerce
* field names and data types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param field The field to use in the desired output
* @return The values. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@NotNull
@Support
@Blocking
List fetchValues(ResultSet rs, Field field) throws DataAccessException, InvalidResultException;
/**
* Fetch a result from a JDBC {@link ResultSet} and return the only
* contained column's values.
*
* The additional type
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param type The data type to use in the desired output
* @return The values. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@NotNull
@Support
@Blocking
List fetchValues(ResultSet rs, DataType type) throws DataAccessException, InvalidResultException;
/**
* Fetch a result from a JDBC {@link ResultSet} and return the only
* contained column's values.
*
* The additional type
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param type The data types to use in the desired output
* @return The values. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
* @throws InvalidResultException if the query returned a record with more
* than one value
*/
@NotNull
@Support
@Blocking
List fetchValues(ResultSet rs, Class type) throws DataAccessException, InvalidResultException;
/**
* Wrap a JDBC {@link ResultSet} into a jOOQ {@link Cursor}.
*
* Use {@link #fetch(ResultSet)}, to load the entire ResultSet
* into a jOOQ Result
at once.
*
* @param rs The JDBC ResultSet to fetch data from
* @return The cursor. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Cursor fetchLazy(ResultSet rs) throws DataAccessException;
/**
* Wrap a JDBC {@link ResultSet} into a jOOQ {@link Cursor}.
*
* Use {@link #fetch(ResultSet)}, to load the entire ResultSet
* into a jOOQ Result
at once.
*
* The additional fields
argument is used by jOOQ to coerce
* field names and data types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param fields The fields to use in the desired output
* @return The cursor. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Cursor fetchLazy(ResultSet rs, Field>... fields) throws DataAccessException;
/**
* Wrap a JDBC {@link ResultSet} into a jOOQ {@link Cursor}.
*
* Use {@link #fetch(ResultSet)}, to load the entire ResultSet
* into a jOOQ Result
at once.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The cursor. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Cursor fetchLazy(ResultSet rs, DataType>... types) throws DataAccessException;
/**
* Wrap a JDBC {@link ResultSet} into a jOOQ {@link Cursor}.
*
* Use {@link #fetch(ResultSet)}, to load the entire ResultSet
* into a jOOQ Result
at once.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The cursor. This will never be null
.
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Cursor fetchLazy(ResultSet rs, Class>... types) throws DataAccessException;
/**
* Fetch results in a new {@link CompletionStage}.
*
* The result is asynchronously completed by a task running in an
* {@link Executor} provided by the {@link #configuration()}'s
* {@link Configuration#executorProvider()}.
*
* @param rs The JDBC ResultSet to fetch data from
* @return The completion stage. The completed result will never be
* null
.
*/
@NotNull
@Support
CompletionStage> fetchAsync(ResultSet rs);
/**
* Fetch results in a new {@link CompletionStage}.
*
* The result is asynchronously completed by a task running in an
* {@link Executor} provided by the {@link #configuration()}'s
* {@link Configuration#executorProvider()}.
*
* The additional fields
argument is used by jOOQ to coerce
* field names and data types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param fields The fields to use in the desired output
* @return The completion stage. The completed result will never be
* null
.
*/
@NotNull
@Support
CompletionStage> fetchAsync(ResultSet rs, Field>... fields);
/**
* Fetch results in a new {@link CompletionStage}.
*
* The result is asynchronously completed by a task running in an
* {@link Executor} provided by the {@link #configuration()}'s
* {@link Configuration#executorProvider()}.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The completion stage. The completed result will never be
* null
.
*/
@NotNull
@Support
CompletionStage> fetchAsync(ResultSet rs, DataType>... types);
/**
* Fetch results in a new {@link CompletionStage}.
*
* The result is asynchronously completed by a task running in an
* {@link Executor} provided by the {@link #configuration()}'s
* {@link Configuration#executorProvider()}.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The completion stage. The completed result will never be
* null
.
*/
@NotNull
@Support
CompletionStage> fetchAsync(ResultSet rs, Class>... types);
/**
* Fetch results in a new {@link CompletionStage} that is asynchronously
* completed by a task running in the given executor.
*
* @param rs The JDBC ResultSet to fetch data from
* @return The completion stage. The completed result will never be
* null
.
*/
@NotNull
@Support
CompletionStage> fetchAsync(Executor executor, ResultSet rs);
/**
* Fetch results in a new {@link CompletionStage} that is asynchronously
* completed by a task running in the given executor.
*
* The additional fields
argument is used by jOOQ to coerce
* field names and data types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param fields The fields to use in the desired output
* @return The completion stage. The completed result will never be
* null
.
*/
@NotNull
@Support
CompletionStage> fetchAsync(Executor executor, ResultSet rs, Field>... fields);
/**
* Fetch results in a new {@link CompletionStage} that is asynchronously
* completed by a task running in the given executor.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The completion stage. The completed result will never be
* null
.
*/
@NotNull
@Support
CompletionStage> fetchAsync(Executor executor, ResultSet rs, DataType>... types);
/**
* Fetch results in a new {@link CompletionStage} that is asynchronously
* completed by a task running in the given executor.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The completion stage. The completed result will never be
* null
.
*/
@NotNull
@Support
CompletionStage> fetchAsync(Executor executor, ResultSet rs, Class>... types);
/**
* Wrap a JDBC {@link ResultSet} into a jOOQ {@link Stream}.
*
* Use {@link #fetch(ResultSet)}, to load the entire ResultSet
* into a jOOQ Result
at once.
*
* @param rs The JDBC ResultSet to fetch data from
* @return The resulting stream
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Stream fetchStream(ResultSet rs) throws DataAccessException;
/**
* Wrap a JDBC {@link ResultSet} into a jOOQ {@link Stream}.
*
* Use {@link #fetch(ResultSet)}, to load the entire ResultSet
* into a jOOQ Result
at once.
*
* The additional fields
argument is used by jOOQ to coerce
* field names and data types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param fields The fields to use in the desired output
* @return The resulting stream
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Stream fetchStream(ResultSet rs, Field>... fields) throws DataAccessException;
/**
* Wrap a JDBC {@link ResultSet} into a jOOQ {@link Stream}.
*
* Use {@link #fetch(ResultSet)}, to load the entire ResultSet
* into a jOOQ Result
at once.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The resulting stream
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Stream fetchStream(ResultSet rs, DataType>... types) throws DataAccessException;
/**
* Wrap a JDBC {@link ResultSet} into a jOOQ {@link Stream}.
*
* Use {@link #fetch(ResultSet)}, to load the entire ResultSet
* into a jOOQ Result
at once.
*
* The additional types
argument is used by jOOQ to coerce data
* types to the desired output
*
* @param rs The JDBC ResultSet to fetch data from
* @param types The data types to use in the desired output
* @return The resulting stream
* @throws DataAccessException if something went wrong executing the query
*/
@NotNull
@Support
@Blocking
Stream fetchStream(ResultSet rs, Class>... types) throws DataAccessException;
/**
* Fetch all data from a formatted string.
*
* The supplied string is supposed to be formatted in a human-readable way.
* This is the same as calling fetchFromTXT(string, "{null}")
*
* @param string The formatted string
* @return The transformed result. This will never be null
.
* @see #fetchFromTXT(String, String)
* @throws DataAccessException If the supplied string does not adhere to the
* above format rules.
*/
@NotNull
@Support
Result fetchFromTXT(String string) throws DataAccessException;
/**
* Fetch all data from a formatted string.
*
* This method supports parsing results from two types of human-readable
* formats:
*
The jOOQ {@link Result#format()}
*
* This format is recognised by the fact that the first line starts with a
* "plus" sign:
* +-----+-----+--------------------------+
* |COL1 |COL2 |COL3 containing whitespace|
* +-----+-----+--------------------------+
* |val1 |1 |some text |
* |val2 | 2 | more text |
* +-----+-----+--------------------------+
*
This method will decode the above formatted string
* according to the following rules:
*
* The number of columns is defined by the number of dash groups in the
* first line. Groups are separated by exactly one "plus" sign
* The column types are VARCHAR(N)
where
* N = number of dashes per dash group
* The column names are defined by the trimmed text contained in the
* second row
* The data is defined by the trimmed text contained in the subsequent
* rows
*
* The H2 database test data format
*
* The supplied string is supposed to be formatted in the following,
* human-readable way:
* COL1 COL2 COL3 containing whitespace
* ----- ---- --------------------------
* val1 1 some text
* val2 2 more text
*
This method will decode the above formatted string
* according to the following rules:
*
* The number of columns is defined by the number of dash groups in the
* second line. Groups are separated by space(s)
* The column types are VARCHAR(N)
where
* N = number of dashes per dash group
* The column names are defined by the trimmed text contained in the
* first row
* The data is defined by the trimmed text contained in the subsequent
* rows
*
* Both parsing methods
*
* Both parsing methods make no assumption about the resulting data types.
* Instead, all data is string-based.
*
* @param string The formatted string
* @param nullLiteral The string literal to be used as null
* value.
* @return The transformed result. This will never be null
.
* @throws DataAccessException If the supplied string does not adhere to the
* above format rules.
*/
@NotNull
@Support
Result fetchFromTXT(String string, String nullLiteral) throws DataAccessException;
/**
* Convert an HTML table into a jOOQ {@link Result}.
*
* This is the inverse operation of {@link Result#formatHTML()}. It works
* according to the following parsing rules:
*
* The input is expected to be well-formed XML. XHTML conformance is not
* required - i.e. unknown elements / attributes, or elements / attributes
* not specified here, such as <caption>
,
* <thead>
, <tbody>
are simply ignored.
* The surrounding <table>
element is optional, but it
* may appear only once
* A single row containing table headings <th>
is
* allowed. Further rows containing table headings are ignored. Table
* headings define field names. In the absence of table headings, field
* names are generated.
* The first row <tr>
specifies the number of columns in
* the table (regardless if it contains table headings or not). Subsequent
* rows containing less columns will be padded. Subsequent rows containing
* more columns will be truncated.
* Comments are ignored
* Nested tables are not supported
*
*
* Ideal input looks like this:
* <table>
* <tr><th>COL1</th><th>COL2</th></tr>
* <tr><td>1</td><td>a</td></tr>
* <tr><td>2</td><td>b</td></tr>
* </table>
*
*
*
* @param string The HTML-formatted string.
* @return The transformed result. This will never be null
.
* @throws DataAccessException If the supplied string does not adhere to the
* above format rules.
*/
@NotNull
@Support
Result fetchFromHTML(String string) throws DataAccessException;
/**
* Fetch all data from a CSV string.
*
* This is the same as calling fetchFromCSV(string, ',')
and
* the inverse of calling {@link Result#formatCSV()}. The first row of the
* CSV data is required to hold field name information. Subsequent rows may
* contain data, which is interpreted as {@link String}. Use the various
* conversion methods to retrieve other data types from the
* Result
:
*
* {@link Result#getValues(Field, Class)}
* {@link Result#getValues(int, Class)}
* {@link Result#getValues(String, Class)}
* {@link Result#getValues(Field, Converter)}
* {@link Result#getValues(int, Converter)}
* {@link Result#getValues(String, Converter)}
*
*
* Missing values result in null
. Empty values result in empty
* Strings
*
* @param string The CSV string
* @return The transformed result. This will never be null
.
* @throws DataAccessException If anything went wrong parsing the CSV file
* @see #fetchFromCSV(String, char)
*/
@NotNull
@Support
Result fetchFromCSV(String string) throws DataAccessException;
/**
* Fetch all data from a CSV string.
*
* This is inverse of calling {@link Result#formatCSV(char)}. The first row
* of the CSV data is required to hold field name information. Subsequent
* rows may contain data, which is interpreted as {@link String}. Use the
* various conversion methods to retrieve other data types from the
* Result
:
*
* {@link Result#getValues(Field, Class)}
* {@link Result#getValues(int, Class)}
* {@link Result#getValues(String, Class)}
* {@link Result#getValues(Field, Converter)}
* {@link Result#getValues(int, Converter)}
* {@link Result#getValues(String, Converter)}
*
*
* Missing values result in null
. Empty values result in empty
* Strings
*
* @param string The CSV string
* @param delimiter The delimiter to expect between records
* @return The transformed result. This will never be null
.
* @throws DataAccessException If anything went wrong parsing the CSV file
* @see #fetchFromCSV(String)
* @see #fetchFromStringData(List)
*/
@NotNull
@Support
Result fetchFromCSV(String string, char delimiter) throws DataAccessException;
/**
* Fetch all data from a CSV string.
*
* This is the same as calling fetchFromCSV(string, ',')
and
* the inverse of calling {@link Result#formatCSV(boolean)}. Rows may
* contain data, which is interpreted as {@link String}. Use the various
* conversion methods to retrieve other data types from the
* Result
:
*
* {@link Result#getValues(Field, Class)}
* {@link Result#getValues(int, Class)}
* {@link Result#getValues(String, Class)}
* {@link Result#getValues(Field, Converter)}
* {@link Result#getValues(int, Converter)}
* {@link Result#getValues(String, Converter)}
*
*
* Missing values result in null
. Empty values result in empty
* Strings
*
* @param string The CSV string
* @param header Whether to parse the first line as a CSV header line
* @return The transformed result. This will never be null
.
* @throws DataAccessException If anything went wrong parsing the CSV file
* @see #fetchFromCSV(String, char)
*/
@NotNull
@Support
Result fetchFromCSV(String string, boolean header) throws DataAccessException;
/**
* Fetch all data from a CSV string.
*
* This is inverse of calling {@link Result#formatCSV(boolean, char)}. Rows
* may contain data, which are interpreted as {@link String}. Use the
* various conversion methods to retrieve other data types from the
* Result
:
*
* {@link Result#getValues(Field, Class)}
* {@link Result#getValues(int, Class)}
* {@link Result#getValues(String, Class)}
* {@link Result#getValues(Field, Converter)}
* {@link Result#getValues(int, Converter)}
* {@link Result#getValues(String, Converter)}
*
*
* Missing values result in null
. Empty values result in empty
* Strings
*
* @param string The CSV string
* @param header Whether to parse the first line as a CSV header line
* @param delimiter The delimiter to expect between records
* @return The transformed result. This will never be null
.
* @throws DataAccessException If anything went wrong parsing the CSV file
* @see #fetchFromCSV(String)
* @see #fetchFromStringData(List)
*/
@NotNull
@Support
Result fetchFromCSV(String string, boolean header, char delimiter) throws DataAccessException;
/**
* Fetch all data from a JSON string.
*
* This is the inverse of calling {@link Result#formatJSON()}. Use the
* various conversion methods to retrieve other data types from the
* Result
:
*
* {@link Result#getValues(Field, Class)}
* {@link Result#getValues(int, Class)}
* {@link Result#getValues(String, Class)}
* {@link Result#getValues(Field, Converter)}
* {@link Result#getValues(int, Converter)}
* {@link Result#getValues(String, Converter)}
*
*
* Missing values result in null
. Empty values result in empty
* Strings
*
* @param string The JSON string
* @return The transformed result. This will never be null
.
* @throws DataAccessException If anything went wrong parsing the JSON file
*/
@NotNull
@Support
Result fetchFromJSON(String string);
/**
* Fetch all data from an XML string.
*
* This is the inverse of calling {@link Result#formatXML()}. Use the
* various conversion methods to retrieve other data types from the
* Result
:
*
* {@link Result#getValues(Field, Class)}
* {@link Result#getValues(int, Class)}
* {@link Result#getValues(String, Class)}
* {@link Result#getValues(Field, Converter)}
* {@link Result#getValues(int, Converter)}
* {@link Result#getValues(String, Converter)}
*
*
* Missing values result in null
. Empty values result in empty
* Strings
*
* @param string The XML string
* @return The transformed result. This will never be null
.
* @throws DataAccessException If anything went wrong parsing the XML file
*/
@NotNull
@Support
Result fetchFromXML(String string);
/**
* Fetch all data from a list of strings.
*
* This is used by methods such as
*
* {@link #fetchFromCSV(String)}
* {@link #fetchFromTXT(String)}
*
* The first element of the argument list should contain column names.
* Subsequent elements contain actual data. The degree of all arrays
* contained in the argument should be the same, although this is not a
* requirement. jOOQ will ignore excess data, and fill missing data with
* null
.
*
* @param data The data to be transformed into a Result
* @return The transformed result. This will never be null
.
* @see #fetchFromStringData(List)
*/
@NotNull
@Support
Result fetchFromStringData(String[]... data);
/**
* Fetch all data from a list of strings.
*
* This is used by methods such as
*
* {@link #fetchFromCSV(String)}
* {@link #fetchFromTXT(String)}
*
* The first element of the argument list should contain column names.
* Subsequent elements contain actual data. The degree of all arrays
* contained in the argument should be the same, although this is not a
* requirement. jOOQ will ignore excess data, and fill missing data with
* null
.
*
* @param data The data to be transformed into a Result
* @return The transformed result. This will never be null
.
*/
@NotNull
@Support
Result fetchFromStringData(List data);
/**
* Fetch all data from a list of strings.
*
* This is used by methods such as
*
* {@link #fetchFromCSV(String)}
* {@link #fetchFromTXT(String)}
*
* The degree of all arrays contained in the argument should be the same,
* although this is not a requirement. jOOQ will ignore excess data, and
* fill missing data with null
.
*
* @param data The data to be transformed into a Result
* @param header Whether to interpret the first line as a set of column
* names.
* @return The transformed result. This will never be null
.
*/
@NotNull
@Support
Result fetchFromStringData(List data, boolean header);
// -------------------------------------------------------------------------
// XXX Global Query factory
// -------------------------------------------------------------------------
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String)} for strictly non-recursive CTE
* and {@link #withRecursive(String)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep with(String alias);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep with(String alias, String... fieldAliases);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep with(String alias, Collection fieldAliases);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(Name)} for strictly non-recursive CTE
* and {@link #withRecursive(Name)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep with(Name alias);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(Name, Name...)} for strictly non-recursive CTE
* and {@link #withRecursive(Name, Name...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep with(Name alias, Name... fieldAliases);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(Name, Name...)} for strictly non-recursive CTE
* and {@link #withRecursive(Name, Name...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep with(Name alias, Collection extends Name> fieldAliases);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE and
* {@link #withRecursive(String, String...)} for strictly recursive CTE.
*
* This works in a similar way as {@link #with(String, String...)}, except
* that all column names are produced by a function that receives the CTE's
* {@link Select} columns as input.
*
* @deprecated - 3.14.0 - [#10156] - These methods will be removed without
* replacement from a future jOOQ. They offer convenience that
* is unidiomatic for jOOQ's DSL, without offering functionality
* that would not be possible otherwise - yet they add
* complexity in jOOQ's internals.
*/
@Deprecated(forRemoval = true, since = "3.14")
@NotNull @CheckReturnValue
@Support
WithAsStep with(String alias, Function super Field>, ? extends String> fieldNameFunction);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE and
* {@link #withRecursive(String, String...)} for strictly recursive CTE.
*
* This works in a similar way as {@link #with(String, String...)}, except
* that all column names are produced by a function that receives the CTE's
* {@link Select} columns and their column indexes as input.
*
* @deprecated - 3.14.0 - [#10156] - These methods will be removed without
* replacement from a future jOOQ. They offer convenience that
* is unidiomatic for jOOQ's DSL, without offering functionality
* that would not be possible otherwise - yet they add
* complexity in jOOQ's internals.
*/
@Deprecated(forRemoval = true, since = "3.14")
@NotNull @CheckReturnValue
@Support
WithAsStep with(String alias, BiFunction super Field>, ? super Integer, ? extends String> fieldNameFunction);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep1 with(String alias, String fieldAlias1);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep2 with(String alias, String fieldAlias1, String fieldAlias2);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep3 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep4 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep5 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep6 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep7 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep8 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep9 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep10 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep11 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep12 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep13 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep14 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep15 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep16 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep17 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep18 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17, String fieldAlias18);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep19 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17, String fieldAlias18, String fieldAlias19);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep20 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17, String fieldAlias18, String fieldAlias19, String fieldAlias20);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep21 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17, String fieldAlias18, String fieldAlias19, String fieldAlias20, String fieldAlias21);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep22 with(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17, String fieldAlias18, String fieldAlias19, String fieldAlias20, String fieldAlias21, String fieldAlias22);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep1 with(Name alias, Name fieldAlias1);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep2 with(Name alias, Name fieldAlias1, Name fieldAlias2);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep3 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep4 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep5 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep6 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep7 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep8 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep9 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep10 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep11 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep12 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep13 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep14 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep15 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep16 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep17 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep18 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17, Name fieldAlias18);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep19 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17, Name fieldAlias18, Name fieldAlias19);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep20 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17, Name fieldAlias18, Name fieldAlias19, Name fieldAlias20);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep21 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17, Name fieldAlias18, Name fieldAlias19, Name fieldAlias20, Name fieldAlias21);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithAsStep22 with(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17, Name fieldAlias18, Name fieldAlias19, Name fieldAlias20, Name fieldAlias21, Name fieldAlias22);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* Reusable {@link CommonTableExpression} types can be constructed through
*
* {@link DSL#name(String...)}
* {@link Name#fields(String...)}
*
* {@link DerivedColumnList#as(ResultQuery)}
*
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(CommonTableExpression...)} for strictly non-recursive CTE
* and {@link #withRecursive(CommonTableExpression...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithStep with(CommonTableExpression>... tables);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* Reusable {@link CommonTableExpression} types can be constructed through
*
* {@link DSL#name(String...)}
* {@link Name#fields(String...)}
*
* {@link DerivedColumnList#as(ResultQuery)}
*
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(CommonTableExpression...)} for strictly non-recursive CTE
* and {@link #withRecursive(CommonTableExpression...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support
WithStep with(Collection extends CommonTableExpression>> tables);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String)} for strictly non-recursive CTE
* and {@link #withRecursive(String)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep withRecursive(String alias);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep withRecursive(String alias, String... fieldAliases);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep withRecursive(String alias, Collection fieldAliases);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(Name)} for strictly non-recursive CTE
* and {@link #withRecursive(Name)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep withRecursive(Name alias);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(Name, Name...)} for strictly non-recursive CTE
* and {@link #withRecursive(Name, Name...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep withRecursive(Name alias, Name... fieldAliases);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(Name, Name...)} for strictly non-recursive CTE
* and {@link #withRecursive(Name, Name...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep withRecursive(Name alias, Collection extends Name> fieldAliases);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*
* This works in a similar way as {@link #with(String, String...)}, except
* that all column names are produced by a function that receives the CTE's
* {@link Select} columns as input.
*
* @deprecated - 3.14.0 - [#10156] - These methods will be removed without
* replacement from a future jOOQ. They offer convenience that
* is unidiomatic for jOOQ's DSL, without offering functionality
* that would not be possible otherwise - yet they add
* complexity in jOOQ's internals.
*/
@Deprecated(forRemoval = true, since = "3.14")
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep withRecursive(String alias, Function super Field>, ? extends String> fieldNameFunction);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*
* This works in a similar way as {@link #with(String, String...)}, except
* that all column names are produced by a function that receives the CTE's
* {@link Select} columns and their column indexes as input.
*
* @deprecated - 3.14.0 - [#10156] - These methods will be removed without
* replacement from a future jOOQ. They offer convenience that
* is unidiomatic for jOOQ's DSL, without offering functionality
* that would not be possible otherwise - yet they add
* complexity in jOOQ's internals.
*/
@Deprecated(forRemoval = true, since = "3.14")
@NotNull @CheckReturnValue
@Support({ FIREBIRD, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB })
WithAsStep withRecursive(String alias, BiFunction super Field>, ? super Integer, ? extends String> fieldNameFunction);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep1 withRecursive(String alias, String fieldAlias1);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep2 withRecursive(String alias, String fieldAlias1, String fieldAlias2);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep3 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep4 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep5 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep6 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep7 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep8 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep9 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep10 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep11 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep12 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep13 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep14 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep15 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep16 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep17 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep18 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17, String fieldAlias18);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep19 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17, String fieldAlias18, String fieldAlias19);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep20 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17, String fieldAlias18, String fieldAlias19, String fieldAlias20);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep21 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17, String fieldAlias18, String fieldAlias19, String fieldAlias20, String fieldAlias21);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep22 withRecursive(String alias, String fieldAlias1, String fieldAlias2, String fieldAlias3, String fieldAlias4, String fieldAlias5, String fieldAlias6, String fieldAlias7, String fieldAlias8, String fieldAlias9, String fieldAlias10, String fieldAlias11, String fieldAlias12, String fieldAlias13, String fieldAlias14, String fieldAlias15, String fieldAlias16, String fieldAlias17, String fieldAlias18, String fieldAlias19, String fieldAlias20, String fieldAlias21, String fieldAlias22);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep1 withRecursive(Name alias, Name fieldAlias1);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep2 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep3 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep4 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep5 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep6 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep7 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep8 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep9 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep10 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep11 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep12 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep13 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep14 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep15 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep16 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep17 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep18 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17, Name fieldAlias18);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep19 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17, Name fieldAlias18, Name fieldAlias19);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep20 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17, Name fieldAlias18, Name fieldAlias19, Name fieldAlias20);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep21 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17, Name fieldAlias18, Name fieldAlias19, Name fieldAlias20, Name fieldAlias21);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(String, String...)} for strictly non-recursive CTE
* and {@link #withRecursive(String, String...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithAsStep22 withRecursive(Name alias, Name fieldAlias1, Name fieldAlias2, Name fieldAlias3, Name fieldAlias4, Name fieldAlias5, Name fieldAlias6, Name fieldAlias7, Name fieldAlias8, Name fieldAlias9, Name fieldAlias10, Name fieldAlias11, Name fieldAlias12, Name fieldAlias13, Name fieldAlias14, Name fieldAlias15, Name fieldAlias16, Name fieldAlias17, Name fieldAlias18, Name fieldAlias19, Name fieldAlias20, Name fieldAlias21, Name fieldAlias22);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* Reusable {@link CommonTableExpression} types can be constructed through
*
* {@link DSL#name(String...)}
* {@link Name#fields(String...)}
*
* {@link DerivedColumnList#as(ResultQuery)}
*
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(CommonTableExpression...)} for strictly non-recursive CTE
* and {@link #withRecursive(CommonTableExpression...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithStep withRecursive(CommonTableExpression>... tables);
/**
* Create a WITH
clause to supply subsequent
* SELECT
, UPDATE
, INSERT
,
* DELETE
, and MERGE
statements with
* {@link CommonTableExpression}s.
*
* Reusable {@link CommonTableExpression} types can be constructed through
*
* {@link DSL#name(String...)}
* {@link Name#fields(String...)}
*
* {@link DerivedColumnList#as(ResultQuery)}
*
*
* The RECURSIVE
keyword may be optional or unsupported in some
* databases, in case of which it will not be rendered. For optimal database
* interoperability and readability, however, it is suggested that you use
* {@link #with(CommonTableExpression...)} for strictly non-recursive CTE
* and {@link #withRecursive(CommonTableExpression...)} for strictly
* recursive CTE.
*/
@NotNull @CheckReturnValue
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB })
WithStep withRecursive(Collection extends CommonTableExpression>> tables);
/**
* Create a new DSL select statement, projecting the known columns from a
* table.
*
* This will project the known columns from the argument table querying
* {@link Table#fields()}. If no known columns are available (e.g. because
* the table has been created using {@link DSL#table(String)}), then
* SELECT *
is projected.
*
* Example:
*
*
* SELECT table.col1, table.col2 FROM table
*
*/
@NotNull @CheckReturnValue
@Support
SelectWhereStep selectFrom(TableLike table);
/**
* Create a new DSL select statement, projecting *
.
*
* Without knowing any columns from the argument table (see
* {@link #selectFrom(TableLike)}), this will project SELECT *
.
*
* Example:
*
*
* SELECT * FROM table
*
*
* @see DSL#table(Name)
*/
@NotNull @CheckReturnValue
@Support
SelectWhereStep selectFrom(Name table);
/**
* Create a new DSL select statement, projecting *
.
*
* Without knowing any columns from the argument table (see
* {@link #selectFrom(TableLike)}), this will project SELECT *
.
*
* Example:
*
*
* SELECT * FROM table
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @see DSL#table(SQL)
* @see SQL
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
SelectWhereStep selectFrom(SQL sql);
/**
* Create a new DSL select statement, projecting *
.
*
* Without knowing any columns from the argument table (see
* {@link #selectFrom(TableLike)}), this will project SELECT *
.
*
* Example:
*
*
* SELECT * FROM table
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @see DSL#table(String)
* @see DSL#sql(String)
* @see SQL
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
SelectWhereStep selectFrom(String sql);
/**
* Create a new DSL select statement, projecting *
.
*
* Without knowing any columns from the argument table (see
* {@link #selectFrom(TableLike)}), this will project SELECT *
.
*
* Example:
*
*
* SELECT * FROM table
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @see DSL#table(String, Object...)
* @see DSL#sql(String, Object...)
* @see SQL
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
SelectWhereStep selectFrom(String sql, Object... bindings);
/**
* Create a new DSL select statement, projecting *
.
*
* Without knowing any columns from the argument table (see
* {@link #selectFrom(TableLike)}), this will project SELECT *
.
*
* Example:
*
*
* SELECT * FROM table
*
*
* NOTE : When inserting plain SQL into jOOQ objects, you must
* guarantee syntax integrity. You may also create the possibility of
* malicious SQL injection. Be sure to properly use bind variables and/or
* escape literals when concatenated into SQL clauses!
*
* @see DSL#table(String, QueryPart...)
* @see DSL#sql(String, QueryPart...)
* @see SQL
*/
@NotNull @CheckReturnValue
@Support
@PlainSQL
SelectWhereStep selectFrom(String sql, QueryPart... parts);
/**
* Create a new DSL select statement.
*
* This creates an attached, renderable and executable SELECT
* statement from this {@link DSLContext}. If you don't need to render or
* execute this SELECT
statement (e.g. because you want to
* create a subselect), consider using the static
* {@link DSL#select(Collection)} instead.
*
* Example:
* DSLContext create = DSL.using(configuration);
*
* create.select(fields)
* .from(table1)
* .join(table2).on(field1.equal(field2))
* .where(field1.greaterThan(100))
* .orderBy(field2);
*
*
* Note that passing an empty collection conveniently produces
* SELECT *
semantics, i.e. it:
*
* Renders SELECT tab1.col1, tab1.col2, …, tabN.colN
if
* all columns are known
* Renders SELECT *
if not all columns are known, e.g. when
* using plain SQL
*
*
* @see DSL#select(Collection)
*/
@NotNull @CheckReturnValue
@Support
SelectSelectStep select(Collection extends SelectFieldOrAsterisk> fields);
/**
* Create a new DSL select statement.
*
* This creates an attached, renderable and executable SELECT
* statement from this {@link DSLContext}. If you don't need to render or
* execute this SELECT
statement (e.g. because you want to
* create a subselect), consider using the static
* {@link DSL#select(SelectFieldOrAsterisk...)} instead.
*
* Example:
* DSLContext create = DSL.using(configuration);
*
* create.select(field1, field2)
* .from(table1)
* .join(table2).on(field1.equal(field2))
* .where(field1.greaterThan(100))
* .orderBy(field2)
* .execute();
*
*
* Note that passing an empty collection conveniently produces
* SELECT *
semantics, i.e. it:
*
* Renders SELECT tab1.col1, tab1.col2, …, tabN.colN
if
* all columns are known
* Renders SELECT *
if not all columns are known, e.g. when
* using plain SQL
*
*
* @see DSL#select(SelectFieldOrAsterisk...)
*/
@NotNull @CheckReturnValue
@Support
SelectSelectStep select(SelectFieldOrAsterisk... fields);
/**
* Create a new DSL select statement.
*
* This is the same as {@link #select(SelectFieldOrAsterisk...)}, except that it
* declares additional record-level typesafety, which is needed by
* {@link Field#in(Select)}, {@link Field#equal(Select)} and other predicate
* building methods taking subselect arguments.
*
* This creates an attached, renderable and executable SELECT
* statement from this {@link DSLContext}. If you don't need to render or
* execute this SELECT
statement (e.g. because you want to
* create a subselect), consider using the static
* {@link DSL#select(SelectField)} instead.
*
* Example:
* using(configuration)
* .select(field1)
* .from(table1)
* .join(table2).on(field1.equal(field2))
* .where(field1.greaterThan(100))
* .orderBy(field2);
*
*
* @see DSL#selectDistinct(SelectFieldOrAsterisk...)
* @see #selectDistinct(SelectFieldOrAsterisk...)
*/
@NotNull @CheckReturnValue
@Support
SelectSelectStep> select(SelectField field1);
/**
* Create a new DSL select statement.
*
* This is the same as {@link #select(SelectFieldOrAsterisk...)}, except that it
* declares additional record-level typesafety, which is needed by
* {@link Row2#in(Select)}, {@link Row2#equal(Select)} and other predicate
* building methods taking subselect arguments.
*
* This creates an attached, renderable and executable SELECT
* statement from this {@link DSLContext}. If you don't need to render or
* execute this SELECT
statement (e.g. because you want to
* create a subselect), consider using the static
* {@link DSL#select(SelectField, SelectField)} instead.
*
* Example:
* using(configuration)
* .select(field1, field2)
* .from(table1)
* .join(table2).on(field1.equal(field2))
* .where(field1.greaterThan(100))
* .orderBy(field2);
*
*
* @see DSL#selectDistinct(SelectFieldOrAsterisk...)
* @see #selectDistinct(SelectFieldOrAsterisk...)
*/
@NotNull @CheckReturnValue
@Support
SelectSelectStep> select(SelectField field1, SelectField field2);
/**
* Create a new DSL select statement.
*
* This is the same as {@link #select(SelectFieldOrAsterisk...)}, except that it
* declares additional record-level typesafety, which is needed by
* {@link Row3#in(Select)}, {@link Row3#equal(Select)} and other predicate
* building methods taking subselect arguments.
*
* This creates an attached, renderable and executable SELECT
* statement from this {@link DSLContext}. If you don't need to render or
* execute this SELECT
statement (e.g. because you want to
* create a subselect), consider using the static
* {@link DSL#select(SelectField, SelectField, SelectField)} instead.
*
* Example:
* using(configuration)
* .select(field1, field2, field3)
* .from(table1)
* .join(table2).on(field1.equal(field2))
* .where(field1.greaterThan(100))
* .orderBy(field2);
*
*
* @see DSL#selectDistinct(SelectFieldOrAsterisk...)
* @see #selectDistinct(SelectFieldOrAsterisk...)
*/
@NotNull @CheckReturnValue
@Support
SelectSelectStep> select(SelectField field1, SelectField field2, SelectField field3);
/**
* Create a new DSL select statement.
*
* This is the same as {@link #select(SelectFieldOrAsterisk...)}, except that it
* declares additional record-level typesafety, which is needed by
* {@link Row4#in(Select)}, {@link Row4#equal(Select)} and other predicate
* building methods taking subselect arguments.
*
* This creates an attached, renderable and executable SELECT
* statement from this {@link DSLContext}. If you don't need to render or
* execute this SELECT
statement (e.g. because you want to
* create a subselect), consider using the static
* {@link DSL#select(SelectField, SelectField, SelectField, SelectField)} instead.
*
* Example:
* using(configuration)
* .select(field1, field2, field3, field4)
* .from(table1)
* .join(table2).on(field1.equal(field2))
* .where(field1.greaterThan(100))
* .orderBy(field2);
*
*
* @see DSL#selectDistinct(SelectFieldOrAsterisk...)
* @see #selectDistinct(SelectFieldOrAsterisk...)
*/
@NotNull @CheckReturnValue
@Support
SelectSelectStep> select(SelectField field1, SelectField field2, SelectField field3, SelectField field4);
/**
* Create a new DSL select statement.
*
* This is the same as {@link #select(SelectFieldOrAsterisk...)}, except that it
* declares additional record-level typesafety, which is needed by
* {@link Row5#in(Select)}, {@link Row5#equal(Select)} and other predicate
* building methods taking subselect arguments.
*
* This creates an attached, renderable and executable SELECT
* statement from this {@link DSLContext}. If you don't need to render or
* execute this SELECT
statement (e.g. because you want to
* create a subselect), consider using the static
* {@link DSL#select(SelectField, SelectField, SelectField, SelectField, SelectField)} instead.
*
* Example:
* using(configuration)
* .select(field1, field2, field3, field4, field5)
* .from(table1)
* .join(table2).on(field1.equal(field2))
* .where(field1.greaterThan(100))
* .orderBy(field2);
*
*
* @see DSL#selectDistinct(SelectFieldOrAsterisk...)
* @see #selectDistinct(SelectFieldOrAsterisk...)
*/
@NotNull @CheckReturnValue
@Support
SelectSelectStep> select(SelectField field1, SelectField field2, SelectField field3, SelectField field4, SelectField field5);
/**
* Create a new DSL select statement.
*
* This is the same as {@link #select(SelectFieldOrAsterisk...)}, except that it
* declares additional record-level typesafety, which is needed by
* {@link Row6#in(Select)}, {@link Row6#equal(Select)} and other predicate
* building methods taking subselect arguments.
*
* This creates an attached, renderable and executable SELECT
* statement from this {@link DSLContext}. If you don't need to render or
* execute this SELECT
statement (e.g. because you want to
* create a subselect), consider using the static
* {@link DSL#select(SelectField, SelectField, SelectField, SelectField, SelectField, SelectField)} instead.
*
* Example:
* using(configuration)
* .select(field1, field2, field3, .., field5, field6)
* .from(table1)
* .join(table2).on(field1.equal(field2))
* .where(field1.greaterThan(100))
* .orderBy(field2);
*
*
* @see DSL#selectDistinct(SelectFieldOrAsterisk...)
* @see #selectDistinct(SelectFieldOrAsterisk...)
*/
@NotNull @CheckReturnValue
@Support
SelectSelectStep> select(SelectField field1, SelectField field2, SelectField field3, SelectField field4, SelectField field5, SelectField field6);
/**
* Create a new DSL select statement.
*
* This is the same as {@link #select(SelectFieldOrAsterisk...)}, except that it
* declares additional record-level typesafety, which is needed by
* {@link Row7#in(Select)}, {@link Row7#equal(Select)} and other predicate
* building methods taking subselect arguments.
*
* This creates an attached, renderable and executable SELECT
* statement from this {@link DSLContext}. If you don't need to render or
* execute this SELECT
statement (e.g. because you want to
* create a subselect), consider using the static
* {@link DSL#select(SelectField, SelectField, SelectField, SelectField, SelectField, SelectField, SelectField)} instead.
*
* Example:
* using(configuration)
* .select(field1, field2, field3, .., field6, field7)
* .from(table1)
* .join(table2).on(field1.equal(field2))
* .where(field1.greaterThan(100))
* .orderBy(field2);
*
*
* @see DSL#selectDistinct(SelectFieldOrAsterisk...)
* @see #selectDistinct(SelectFieldOrAsterisk...)
*/
@NotNull @CheckReturnValue
@Support
SelectSelectStep> select(SelectField field1, SelectField field2, SelectField field3, SelectField