DiegoEmilio01 / IIC3413

Repositorio del curso Implementación de Sistemas de Bases de Datos
16 stars 2 forks source link

Duda sobre iniciación de current_leaf #22

Open sebaterrazas opened 2 months ago

sebaterrazas commented 2 months ago

Hola!

Estoy probando el test_t2, y al borrar la carpeta test_example en data, la primera vez que corro ./build/Debug/tests/test_t2 funciona bien, pero si vuelvo a correr ./build/Debug/tests/test_t2 (sin borrar la carpeta de datos) ocurre un "error". En particular, la segunda vez que corro el código me retorna una hoja inicial erronea, lo cual me deja iterando sobre una dirección errónea.

Primera vez:

void IsamNonClusteredIter::begin(Record& _out) {
    out = &_out;
    current_leaf = std::make_unique<IsamNonClusteredLeaf>(isam, start_page_number); 
    std::cout << start_page_number << " – " << current_leaf << std::endl;  // 161 – 0x1466d49c0
    ...

Segunda vez:

void IsamNonClusteredIter::begin(Record& _out) {
    out = &_out;
    current_leaf = std::make_unique<IsamNonClusteredLeaf>(isam, start_page_number); 
    std::cout << start_page_number << " – " <<current_leaf << std::endl;  // 161 – 0x1058011c0
    ...

Quería confirmar que este no es un funcionamiento correcto, para arreglarlo si así es el caso.

cirojas commented 2 months ago

Tienes un error en el código, el resultado debería ser el mismo la primera ejecución y las ejecuciones posteriores. En las ejecuciones posteriores no se crea ni la tabla ni el isam, así que algo se guardó algo mal en tu caso.

Por otro lado no entiendo que es lo que buscas imprimiendo las posiciones de memoria 0x1466d49c0 y 0x1058011c0. Es normal que en ejecuciones distintas las instancias de tus objetos queden en diferentes posiciones, lo que importa es el valor de sus atributos (contenido de la pagina).