]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
Ahora si el obtener sig clave funciona bien al menos para tipo3, y devuelve -1 cuando...
authorAlan Kennedy <kennedya@3dgames.com.ar>
Sun, 30 May 2004 22:56:14 +0000 (22:56 +0000)
committerAlan Kennedy <kennedya@3dgames.com.ar>
Sun, 30 May 2004 22:56:14 +0000 (22:56 +0000)
emufs/indice_bplus.c
emufs/tipo3_bplus_main.c

index d2df758199ba77d61309f0871400aca0cb246fd6..1caea328438e815bd43489f9116f6e4ad32eb9f5 100644 (file)
@@ -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) {
index 10a6f45749e9733e14fe58a6280493966483b116..bdc5134c3b44e2d0a8a8666f4cdf00197febdf37 100644 (file)
@@ -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);