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

org.partiql.lang.eval.physical.UndefinedVariableUtil.kt Maven / Gradle / Ivy

There is a newer version: 1.0.0-perf.1
Show newest version
package org.partiql.lang.eval.physical

import com.amazon.ionelement.api.MetaContainer
import org.partiql.lang.errors.ErrorCode
import org.partiql.lang.errors.Property
import org.partiql.lang.errors.UNBOUND_QUOTED_IDENTIFIER_HINT
import org.partiql.lang.eval.BindingCase
import org.partiql.lang.eval.BindingName
import org.partiql.lang.eval.EvaluationException
import org.partiql.lang.eval.errorContextFrom
import org.partiql.lang.util.propertyValueMapOf

internal fun throwUndefinedVariableException(
    bindingName: BindingName,
    metas: MetaContainer?
): Nothing {
    val (errorCode, hint) = when (bindingName.bindingCase) {
        BindingCase.SENSITIVE ->
            ErrorCode.EVALUATOR_QUOTED_BINDING_DOES_NOT_EXIST to " $UNBOUND_QUOTED_IDENTIFIER_HINT"
        BindingCase.INSENSITIVE ->
            ErrorCode.EVALUATOR_BINDING_DOES_NOT_EXIST to ""
    }
    throw EvaluationException(
        message = "No such binding: ${bindingName.name}.$hint",
        errorCode = errorCode,
        errorContext = (metas?.let { errorContextFrom(metas) } ?: propertyValueMapOf()).also {
            it[Property.BINDING_NAME] = bindingName.name
        },
        internal = false
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy