NODO_B_PLUS *memnode = b_plus_crearnodo(idx);
char *disknode = (char*)malloc(idx->tam_bloque);
+ if (num_node < 0) {
+ PERR("Se intento leer nodo negativo!!\n");
+ exit(1);
+ }
if (disknode == NULL) return NULL;
if (memnode == NULL) return NULL;
brother->claves[j] = fullnode->claves[j+minclaves+es_interno];
/* Copio los hijos ya sea para hoja o no hoja. */
- for (j = 0; j < brother->cant_claves; ++j)
+ for (j = 0; j < brother->cant_claves+1; ++j)
brother->hijos[j] = fullnode->hijos[j+minclaves+es_interno];
- /* Encadeno nodos! */
- brother->hijos[maxhijos-1] = fullnode->hijos[maxhijos-1];
-
/* Ahora me ocupo del nodo que se partio */
fullnode->cant_claves = minclaves;
- /* Obtengo numero de nodo para brother, para encadenar */
+ /* Obtengo numero de nodo para brother y encadeno si es hoja */
numbrother = b_plus_get_num_nodo(idx);
- fullnode->hijos[maxhijos-1] = numbrother;
+ if (fullnode->nivel == 0) fullnode->hijos[minclaves] = numbrother;
/* Ahora fixeamos el padre, apuntando al nuevo hijo */
for (j = parent->cant_claves; j > ithchild; --j)
b_plus_destruir_nodo(new_root);
} else
{
- printf ("Entre maaaaaallll\n");
b_plus_insert_nonfull(idx, raiz, 0, query);
}
/* Locals */
INDEX_DAT querydata;
-/*NODO_B_PLUS *memnodo;
-int num_node, i; */
+/*NODO_B_PLUS *memnodo;*/
+int i;
/* Creamos un handler EMUFS, luego un Indice B+ y testing... */
INDEXSPECS indice;
indice.tam_bloque = SIZE_B_PLUS_HEADER + sizeof(int)*5 + sizeof(int)*6;
printf("\nTam Nodo: %i Size Claves: %i Size_Hijos: %i\n",indice.tam_bloque,indice.size_claves,indice.size_hijos);
emufs_b_plus_crear(&indice);
-querydata.num_bloque = 9;
-querydata.clave.i_clave = 8;
+
+for (i=1;i<16;++i)
+{
+querydata.num_bloque = i;
+querydata.clave.i_clave = i;
b_plus_insertar(&indice,&querydata);
-
+}
+
+/*
querydata.num_bloque = 2;
querydata.clave.i_clave = 7;
b_plus_insertar(&indice,&querydata);
for (i = 0; i < indice.size_hijos/sizeof(int); ++i) printf(" %i",memnodo->hijos[i]);
printf("\nEnd Dump\n");
free(memnodo);*/
-
+ /*
querydata.num_bloque = 54;
querydata.clave.i_clave = 1;
b_plus_insertar(&indice, &querydata);