]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
Ya casi lo tenemo al muchacho insertar...
authorAlan Kennedy <kennedya@3dgames.com.ar>
Wed, 26 May 2004 00:15:24 +0000 (00:15 +0000)
committerAlan Kennedy <kennedya@3dgames.com.ar>
Wed, 26 May 2004 00:15:24 +0000 (00:15 +0000)
emufs/b_plus.c
emufs/b_plus_test.c

index 20eac04c47192926ba7673fb807a13fec062e51e..f061515c5b506c1afc6f5a74c0db1ec8b69ef96c 100644 (file)
@@ -340,31 +340,37 @@ int b_plus_insert_nonfull(INDEXSPECS *idx, NODO_B_PLUS *nodo, int num_nodo, INDE
     int i, num_nodo_hijo;
     NODO_B_PLUS *hijo;
     
-    i = nodo->cant_claves;
+    i = nodo->cant_claves-1; 
     if ( nodo->nivel == 0 ){
-        while ( i >= 1 && query->clave.i_clave < nodo->claves[i] ){
+        while ( i >= 0 && query->clave.i_clave < nodo->claves[i] ){
             nodo->claves[i+1] = nodo->claves[i];
+                       nodo->hijos[i+1] = nodo->hijos[i];
             i--;
         }
         nodo->claves[i+1] = query->clave.i_clave;
+               nodo->hijos[i+1] = query->num_bloque;
         nodo->cant_claves++;
-        b_plus_destruir_nodo(nodo);
         b_plus_grabar_nodo(idx, nodo, num_nodo);
+               b_plus_destruir_nodo(nodo);             
+               printf("Pero men yo grabee..\n");
     } else { 
-        while ( i >= 1 && query->clave.i_clave < nodo->claves[i] ) 
+        while ( i >= 0 && query->clave.i_clave < nodo->claves[i] ) 
             i--;
         i++;
-        num_nodo_hijo = nodo->hijos[i-1];
+        num_nodo_hijo = nodo->hijos[i];
         hijo = b_plus_leer_nodo(idx, num_nodo_hijo);
         if ( hijo->cant_claves == idx->size_claves/sizeof(int) ) {
-            b_plus_split_child(idx, 9999, nodo, i, hijo);
+            b_plus_split_child(idx, num_nodo, nodo, i, hijo);
             if ( query->clave.i_clave > nodo->claves[i] )
                 i++;
         }
-        b_plus_insert_nonfull(idx, hijo, num_nodo_hijo, query);
+               b_plus_destruir_nodo(hijo);
+               hijo = b_plus_leer_nodo(idx, nodo->hijos[i]);
+        b_plus_insert_nonfull(idx, hijo, nodo->hijos[i], query);
+               b_plus_destruir_nodo(hijo);     
     }
-    b_plus_destruir_nodo(hijo);
-    return 0;
+       
+       return 0;
 }    
 
 int b_plus_insertar(INDEXSPECS *idx, INDEX_DAT *query)
@@ -382,8 +388,8 @@ int b_plus_insertar(INDEXSPECS *idx, INDEX_DAT *query)
         b_plus_insert_nonfull(idx, new_root, 0, query);
     } else 
        {
-               b_plus_insert_nonfull(idx, raiz, 0, query);
                printf ("Entre maaaaaallll\n");
+               b_plus_insert_nonfull(idx, raiz, 0, query);
        }
     
     return 0;
index 72e2c833f349f879c5f3ad22b4a10e00378b86d0..ccb5573c42c6890827f3e01acd81a47add005c6e 100644 (file)
@@ -18,23 +18,23 @@ emufs_b_plus_crear(&indice);
        
 querydata.num_bloque = 9;
 querydata.clave.i_clave = 5;
-b_plus_insertar_clave(&indice,&querydata);
+b_plus_insertar(&indice,&querydata);
        
 querydata.num_bloque = 2;
 querydata.clave.i_clave = 4;
-b_plus_insertar_clave(&indice,&querydata);
+b_plus_insertar(&indice,&querydata);
 
 querydata.num_bloque = 7;
 querydata.clave.i_clave = 3;
-b_plus_insertar_clave(&indice,&querydata);
+b_plus_insertar(&indice,&querydata);
 
 querydata.num_bloque = 5;
 querydata.clave.i_clave = 2;
-b_plus_insertar_clave(&indice,&querydata);
+b_plus_insertar(&indice,&querydata);
 
 querydata.num_bloque = 8;
 querydata.clave.i_clave = 63;
-b_plus_insertar_clave(&indice,&querydata);
+b_plus_insertar(&indice,&querydata);
 
 num_node = 0;
 memnodo = b_plus_leer_nodo(&indice, num_node);
@@ -47,9 +47,9 @@ memnodo = b_plus_leer_nodo(&indice, num_node);
        printf("\nEnd Dump\n"); 
 free(memnodo);
        
-querydata.num_bloque = 54;
+/*querydata.num_bloque = 54;
 querydata.clave.i_clave = 15;
-b_plus_insertar(&indice, &querydata);
+b_plus_insertar(&indice, &querydata);*/
 return 0;
 
 }