Open TomasAlcalde opened 1 week ago
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);
}
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.
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:
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.