algeon-cudf 0.1.2

Safe libcudf execution component for Algeon
Documentation
use super::{AstExpression, Exec, FilterJoinInputs, MixedJoinTables, ResolvedExecution, Result, TableView};

pub(super) fn compatible_join_indices_domain(
    left_keys: &TableView<'_>,
    right_keys: &TableView<'_>,
    ctx: Exec<'_>,
    operation: &'static str,
) -> Result<ResolvedExecution> {
    ResolvedExecution::binary(left_keys.execution_domain(), right_keys.execution_domain(), ctx, operation)
}

pub(super) fn compatible_conditional_join_domain(
    left: &TableView<'_>,
    right: &TableView<'_>,
    predicate: &AstExpression,
    ctx: Exec<'_>,
    operation: &'static str,
) -> Result<ResolvedExecution> {
    let mut secondaries = Vec::new();
    secondaries.push(right.execution_domain());
    predicate.literal_domains(&mut secondaries);
    ResolvedExecution::many(left.execution_domain(), secondaries, ctx, operation)
}

pub(super) fn compatible_mixed_join_domain(
    tables: MixedJoinTables<'_, '_>,
    predicate: &AstExpression,
    ctx: Exec<'_>,
    operation: &'static str,
) -> Result<ResolvedExecution> {
    let mut secondaries = Vec::new();
    secondaries.push(tables.right_equality.execution_domain());
    secondaries.push(tables.left_conditional.execution_domain());
    secondaries.push(tables.right_conditional.execution_domain());
    predicate.literal_domains(&mut secondaries);
    ResolvedExecution::many(tables.left_equality.execution_domain(), secondaries, ctx, operation)
}

pub(super) fn compatible_filter_join_indices_domain(
    inputs: FilterJoinInputs<'_, '_>,
    ctx: Exec<'_>,
    operation: &'static str,
) -> Result<ResolvedExecution> {
    let mut secondaries = Vec::new();
    secondaries.push(inputs.right_indices.execution_domain());
    secondaries.push(inputs.left.execution_domain());
    secondaries.push(inputs.right.execution_domain());
    inputs.predicate.literal_domains(&mut secondaries);
    ResolvedExecution::many(inputs.left_indices.execution_domain(), secondaries, ctx, operation)
}