From 22129809c55e0ff4619ff5879ca6f870dc6a0250 Mon Sep 17 00:00:00 2001 From: Alan Kennedy Date: Sun, 30 May 2004 22:56:14 +0000 Subject: [PATCH] Ahora si el obtener sig clave funciona bien al menos para tipo3, y devuelve -1 cuando no hay siguiente --- emufs/indice_bplus.c | 19 +++++++++++-------- emufs/tipo3_bplus_main.c | 6 +++--- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/emufs/indice_bplus.c b/emufs/indice_bplus.c index d2df758..1caea32 100644 --- a/emufs/indice_bplus.c +++ b/emufs/indice_bplus.c @@ -750,7 +750,7 @@ CLAVE emufs_b_plus_obtener_sig_clave(EMUFS *emu, CLAVE key) { INDICE *idx = emu->indices; INDEX_DAT query; - int i = 0; + int i = 0; query.clave = key; /* Si aun no tengo un array, obtengo uno */ @@ -790,17 +790,20 @@ CLAVE emufs_b_plus_obtener_sig_clave(EMUFS *emu, CLAVE key) { /* Veo si ya devolvi la ultima */ if (idx->keybucket != NULL) if (idx->keybucket->current_key == idx->keybucket->cant_keys) { - /* Debo obtener un nuevo bucket de claves */ - if (b_plus_buscar_prepost(idx,idx->keybucket->claves[0],0,&query,1) != -1) { + /* Debo obtener un nuevo bucket de claves */ + if (b_plus_buscar_prepost(idx,idx->keybucket->claves[0],0,&query,1) != -1) { free(idx->keybucket->claves); free(idx->keybucket); - idx->keybucket = emufs_tipo3_obtener_claves_raw(emu,query.num_bloque); + idx->keybucket = emufs_tipo3_obtener_claves_raw(emu,query.num_bloque); printf ("\nLevante bloque nro: %li y obtuve un bucket con %i keys\n",query.num_bloque,idx->keybucket->cant_keys); - printf ("La primera clave del bucket que devuelvo es: %i\n",idx->keybucket->claves[0].i_clave); + printf ("La primera clave del bucket que devuelvo es: %i\n",idx->keybucket->claves[0].i_clave); } - else return key; - } - + else { + /* No hay mas o hubo error, cortamos */ + key.i_clave = -1; + return key; + } + } /* Devuelvo el siguiente elemento del array solo si es mayor. Si es menor, lo skipeo */ if (idx->keybucket->current_key < idx->keybucket->cant_keys) { diff --git a/emufs/tipo3_bplus_main.c b/emufs/tipo3_bplus_main.c index 10a6f45..bdc5134 100644 --- a/emufs/tipo3_bplus_main.c +++ b/emufs/tipo3_bplus_main.c @@ -242,14 +242,14 @@ prekey.clave = emu->indices->obtener_menor_clave(emu->indices); postkey.clave = emufs_b_plus_obtener_mayor_clave(emu->indices); querydata = prekey; -while (emufs_indice_es_menor(emu->indices,querydata.clave,postkey.clave)) +while (querydata.clave.i_clave != -1) { q = querydata; querydata.clave = emu->indices->obtener_sig_clave_isam(emu,querydata.clave); printf("Sig de %i es %i\n",q.clave.i_clave,querydata.clave.i_clave); } -printf("Comienzo nuevo pedido de siguiente\n"); +/*printf("Comienzo nuevo pedido de siguiente\n"); q.clave.i_clave = 2100; querydata = q; while (emufs_indice_es_menor(emu->indices,querydata.clave,postkey.clave)) @@ -257,7 +257,7 @@ while (emufs_indice_es_menor(emu->indices,querydata.clave,postkey.clave)) q = querydata; querydata.clave = emu->indices->obtener_sig_clave_isam(emu,querydata.clave); printf("Sig de %i es %i\n",q.clave.i_clave,querydata.clave.i_clave); -} +}*/ ver_arbol(emu); -- 2.43.0