Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2/2] Removes temp SqlFnProvider #1587

Merged
merged 5 commits into from
Sep 20, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ import org.partiql.plan.v1.operator.rex.RexTable
import org.partiql.plan.v1.operator.rex.RexVar
import org.partiql.plan.v1.operator.rex.RexVisitor
import org.partiql.spi.catalog.Session
import org.partiql.spi.fn.Agg
import org.partiql.spi.fn.Aggregation
import org.partiql.spi.value.Datum
import org.partiql.types.PType
import org.partiql.plan.Rel as IRel
Expand Down Expand Up @@ -166,7 +166,7 @@ internal class SqlCompiler(
else -> Operator.Aggregation.SetQuantifier.ALL
}
object : Operator.Aggregation {
override val delegate: Agg = agg
override val delegate: Aggregation = agg
override val args: List<Operator.Expr> = args
override val setQuantifier: Operator.Aggregation.SetQuantifier = setq
}
Expand Down Expand Up @@ -382,7 +382,7 @@ internal class SqlCompiler(
val fn = rex.getFunction()
val args = rex.getArgs().map { compile(it, ctx) }
val fnTakesInMissing = fn.signature.parameters.any {
it.type.kind == PType.Kind.DYNAMIC // TODO: Is this needed?
it.getType().kind == PType.Kind.DYNAMIC // TODO: Is this needed?
}
return when (fnTakesInMissing) {
true -> ExprCallStatic(fn, args.map { it.catch() }.toTypedArray())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package org.partiql.eval.internal.operator

import org.partiql.eval.internal.Environment
import org.partiql.eval.internal.Record
import org.partiql.spi.fn.Agg
import org.partiql.spi.value.Datum

internal sealed interface Operator {
Expand All @@ -27,7 +26,7 @@ internal sealed interface Operator {

interface Aggregation : Operator {

val delegate: Agg
val delegate: org.partiql.spi.fn.Aggregation

val args: List<Expr>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package org.partiql.eval.internal.operator.rel
import org.partiql.eval.internal.Environment
import org.partiql.eval.internal.Record
import org.partiql.eval.internal.operator.Operator
import org.partiql.spi.fn.Agg
import org.partiql.spi.fn.Aggregation
import org.partiql.spi.value.Datum
import java.util.TreeMap
import java.util.TreeSet
Expand All @@ -19,12 +19,12 @@ internal class RelOpAggregate(
private val aggregationMap = TreeMap<Array<Datum>, List<AccumulatorWrapper>>(DatumArrayComparator)

/**
* Wraps an [Agg.Accumulator] to help with filtering distinct values.
* Wraps an [Aggregation.Accumulator] to help with filtering distinct values.
*
* @property seen maintains which values have already been seen. If null, we accumulate all values coming through.
*/
class AccumulatorWrapper(
val delegate: Agg.Accumulator,
val delegate: Aggregation.Accumulator,
val args: List<Operator.Expr>,
val seen: TreeSet<Array<Datum>>?
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package org.partiql.eval.internal.operator.rex
import org.partiql.errors.TypeCheckException
import org.partiql.eval.internal.Environment
import org.partiql.eval.internal.operator.Operator
import org.partiql.spi.fn.Fn
import org.partiql.spi.fn.Function
import org.partiql.spi.value.Datum
import org.partiql.types.PType
import org.partiql.value.PartiQLValue
Expand All @@ -30,14 +30,14 @@ import org.partiql.value.PartiQLValue
*/
internal class ExprCallDynamic(
private val name: String,
candidateFns: Array<Fn>,
candidateFns: Array<Function>,
private val args: Array<Operator.Expr>
) : Operator.Expr {

private val candidates = Array(candidateFns.size) { Candidate(candidateFns[it]) }
private val paramIndices: IntRange = args.indices
private val paramTypes: List<List<PType>> = this.candidates.map { candidate -> candidate.fn.signature.parameters.map { it.type } }
private val paramFamilies: List<List<CoercionFamily>> = this.candidates.map { candidate -> candidate.fn.signature.parameters.map { family(it.type.kind) } }
private val paramTypes: List<List<PType>> = this.candidates.map { candidate -> candidate.fn.signature.parameters.map { it.getType() } }
private val paramFamilies: List<List<CoercionFamily>> = this.candidates.map { candidate -> candidate.fn.signature.parameters.map { family(it.getType().kind) } }
private val cachedMatches: MutableMap<List<PType>, Int> = mutableMapOf()

override fun eval(env: Environment): Datum {
Expand Down Expand Up @@ -154,7 +154,7 @@ internal class ExprCallDynamic(
* @see ExprCallDynamic
*/
private class Candidate(
val fn: Fn,
val fn: Function,
) {

/**
Expand All @@ -168,7 +168,7 @@ internal class ExprCallDynamic(
return nil.invoke()
}
val argType = arg.type
val paramType = fn.signature.parameters[i].type
val paramType = fn.signature.parameters[i].getType()
when (paramType == argType) {
true -> arg
false -> CastTable.cast(arg, paramType)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@ package org.partiql.eval.internal.operator.rex

import org.partiql.eval.internal.Environment
import org.partiql.eval.internal.operator.Operator
import org.partiql.spi.fn.Fn
import org.partiql.spi.fn.Function
import org.partiql.spi.value.Datum
import org.partiql.value.PartiQLValueExperimental

@OptIn(PartiQLValueExperimental::class)
internal class ExprCallStatic(
private val fn: Fn,
private val fn: Function,
private val inputs: Array<Operator.Expr>,
) : Operator.Expr {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.MethodSource
import org.partiql.eval.internal.Environment
import org.partiql.eval.internal.helpers.ValueUtility.check
import org.partiql.spi.fn.Fn
import org.partiql.spi.fn.FnParameter
import org.partiql.spi.fn.FnSignature
import org.partiql.spi.fn.Function
import org.partiql.spi.fn.Parameter
import org.partiql.spi.value.Datum
import org.partiql.spi.value.Datum.bag
import org.partiql.spi.value.Datum.bool
Expand Down Expand Up @@ -64,14 +64,14 @@ class ExprCallDynamicTest {
)

@OptIn(PartiQLValueExperimental::class)
internal val candidates: Array<Fn> = params.mapIndexed { index, it ->
object : Fn {
internal val candidates: Array<Function> = params.mapIndexed { index, it ->
object : Function {
override val signature: FnSignature = FnSignature(
name = "example_function",
returns = PType.integer(),
parameters = listOf(
FnParameter("first", type = it.first.toPType()),
FnParameter("second", type = it.second.toPType()),
Parameter("first", type = it.first.toPType()),
Parameter("second", type = it.second.toPType()),
)
)

Expand Down
Loading
Loading