SelectQueryBuilder
Defines the public API for building SQL SELECT queries.
Functions
Converts this builder to a StepBuilder that enables lazy execution within a transaction. Returns a wrapper with terminal methods that create TransactionStep instead of executing the query.
Switches the builder to streaming mode, optimal for large datasets. Requires using streaming-specific terminal methods like forEachRow(). REQUIRES ACTIVE TRANSACTION. This method must be called inside a DataAccess.transaction { ... } block. Otherwise, PostgreSQL will ignore fetchSize and load everything into RAM.
Switches the builder to asynchronous mode. Requires providing a CoroutineScope in which operations will be launched.
Creates and returns a deep copy of this builder. Returns the concrete builder type (e.g., SelectQueryBuilder), maintaining API fluency.
Appends a FOR UPDATE locking clause to the query.
Defines the data source (FROM clause).
Uses the result of another query as a data source (derived table). Automatically wraps the subquery in parentheses and adds an alias when provided.
Defines row grouping (GROUP BY clause).
Filters results after grouping (HAVING clause).
Limits the number of returned rows (LIMIT clause).
Specifies the number of rows to skip (OFFSET clause).
Defines result ordering (ORDER BY clause).
Configures pagination by setting LIMIT and OFFSET.
Marks the WITH clause as recursive.
Fetches a single value from the first column of the first row. Always returns Failure if no rows are found, regardless of nullability. Nullability only controls whether a null value in the column is allowed: use toFieldStrict<Int>() to fail on null, or toFieldStrict<Int?>() to allow null values.
Maps results to a list of objects of the given type. Requires that column names/aliases in SQL (in snake_case convention) match property names in the target class (in camelCase convention) or have a @MapKey annotation with the stored column name.
Convenient inline extension function for toListOf. Uses reified to automatically infer the target type.
Maps the result to a single object of the given type. Works on the same mapping principle as toListOf. Nullability is determined by the KType: use toSingleOf<User>() for non-null or toSingleOf<User?>() for nullable results.
Convenient inline extension function for toSingleOf. Uses reified to automatically infer the target type.
Fetches a single row as Map
Defines a filter condition (WHERE clause).
Adds a Common Table Expression (CTE) to the query.