Optimization hint on virtual types and rewrote JoinType class structure
This commit is contained in:
parent
36ced5d74d
commit
020d32cedc
@ -17,8 +17,10 @@ public interface DatabaseType<@Suppress("unused") RT> {
|
||||
public val name: String
|
||||
|
||||
public abstract class _VirtualType<RT, wRT, wDT : DatabaseType<wRT>>(
|
||||
@Suppress("MemberVisibilityCanBePrivate") @JvmField
|
||||
public val wraps: wDT
|
||||
@JvmField
|
||||
public val wraps: wDT,
|
||||
@JvmField
|
||||
public val allowValuesCaching: Boolean = true
|
||||
) : DatabaseType<RT> {
|
||||
@Suppress("FunctionName")
|
||||
public abstract fun _unwrap(w: wRT): RT
|
||||
|
@ -15,19 +15,29 @@ public interface SelectQuery<out qUE : Any> : _Query<qUE> {
|
||||
ASC, DESC
|
||||
}
|
||||
|
||||
public class JoinType(
|
||||
public val leftNull: LeftNull,
|
||||
public val join: Join
|
||||
) {
|
||||
public enum class LeftNull {
|
||||
NULL_NOT_EXPECTED,
|
||||
AS_ID, SKIP, JOIN_TO_NULL
|
||||
public abstract class JoinType {
|
||||
public class LeftJoin(
|
||||
public val leftNull: Null,
|
||||
public val behaviour: Behaviour
|
||||
) : JoinType() {
|
||||
@Suppress("ClassName")
|
||||
public abstract class Null {
|
||||
public object NULL_NOT_EXPECTED : Null()
|
||||
public object AS_ID : Null()
|
||||
public object SKIP : Null()
|
||||
public object JOIN_TO_NULL : Null()
|
||||
}
|
||||
|
||||
@Suppress("ClassName")
|
||||
public abstract class Behaviour {
|
||||
public object LEFT_TO_UNIQUE_RIGHT : Behaviour()
|
||||
public object LEFT_TO_UNIQUE_RIGHT_OR_TO_NULL : Behaviour()
|
||||
public object LEFT_FOR_EACH_RIGHT : Behaviour()
|
||||
public object LEFT_FOR_EACH_RIGHT_OR_TO_NULL : Behaviour()
|
||||
}
|
||||
}
|
||||
|
||||
public enum class Join {
|
||||
LEFT_TO_FIRST_RIGHT, LEFT_FOR_EACH_RIGHT, LEFT_FOR_EACH_RIGHT_OR_TO_NULL,
|
||||
EACH_LEFT_TO_EACH_RIGHT
|
||||
}
|
||||
public object CrossJoin : JoinType()
|
||||
}
|
||||
|
||||
@Suppress("ClassName")
|
||||
@ -79,8 +89,8 @@ public interface SelectQuery<out qUE : Any> : _Query<qUE> {
|
||||
public val left: _Selectable<lsqUE>
|
||||
public val right: _Selectable<rsqUE>
|
||||
public val joinType: JoinType
|
||||
public val referenceColumn: Column<*, *, lsqUE>
|
||||
public val targetColumn: Column<*, *, rsqUE>
|
||||
public val leftColumnToJoin: Column<*, *, lsqUE>
|
||||
public val rightColumnToJoin: Column<*, *, rsqUE>
|
||||
|
||||
public fun createSelectWithJoin(context: Scope<qUE, lsqUE, rsqUE>): qUE
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user