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

Columnas en iterador de proyección #43

Open
TomasAlcalde opened this issue Jul 7, 2024 · 2 comments
Open

Columnas en iterador de proyección #43

TomasAlcalde opened this issue Jul 7, 2024 · 2 comments

Comments

@TomasAlcalde
Copy link

TomasAlcalde commented Jul 7, 2024

Hola, estuve revisando los iteradores que venían como base y creo que encontré un pequeño error. En especifico es como se asignan las columnas de la proyección:

auto child_cols = child->get_columns();
auto& child_out = child->get_output();
for (size_t i = 0; i < projected_columns.size(); i++) {
    for (auto& child_col : child_cols) {
        if (child_col == projected_columns[i]) {
            out.values[i] = child_out.values[i];
        }
    }
    assert(out.values[i] != nullptr);
}

Pero esto implica que la columna que se le asigna al out en las proyecciones tiene el mismo índice que las columnas del iterador hijo. Esto genera errores cuando por ejemplo hago un join y quiero proyectar la primera y cuarta columna. En ese caso se retornaría supuestamente la primera y cuarta columna del join, pero con los valores de la primera y segunda.

@TomasAlcalde
Copy link
Author

Una forma de solucionarlo sería usar un índice para recorrer las columnas del iterador hijo. Quedaría como sigue:

auto child_cols = child->get_columns();
auto& child_out = child->get_output();
for (size_t i = 0; i < projected_columns.size(); i++) {
    for (size_t j = 0; j < child_cols.size(); j++) {
        if (child_cols[j] == projected_columns[i]) {
            out.values[i] = child_out.values[j];
        }
    }
    assert(out.values[i] != nullptr);
}

@cirojas
Copy link
Collaborator

cirojas commented Jul 7, 2024

tienes razón, gracias por encontrar un bug y proponer la solución, si hablas con @DiegoEmilio01 deberías tener algún bonus de nota.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants