/**#*#*#*#*#**#*#*#*#*#* Private prototypes*#*#*#*#*#**#*#*#*#*#**#*#*#*/
/* numerando los bloques */
int b_plus_grabar_nodo(INDEXSPECS *idx, NODO_B_PLUS *nodo, int num_node);
-NODO_B_PLUS *b_plus_leer_nodo(INDEXSPECS *idx, int num_node);
+/*NODO_B_PLUS *b_plus_leer_nodo(INDEXSPECS *idx, int num_node);*/
NODO_B_PLUS *b_plus_crearnodo(INDEXSPECS *idx);
int b_plus_destruir_nodo(NODO_B_PLUS *nodo);
-int b_plus_insertar_clave(INDEXSPECS *idx, INDEX_DAT *query);
+/*int b_plus_insertar_clave(INDEXSPECS *idx, INDEX_DAT *query);*/
/**#*#*#*#*#**#*#*#*#*#*FIN PROTOTYPES*#*#*#*#*#**#*#*#*#*#**#*#*#*#*#*/
}
/* aca tengo el nodo donde deberia ir la clave, y su padre */
- if ( curnode->cant_claves < idx->size_claves ){
+ if ( curnode->cant_claves < idx->size_claves/sizeof(int) ){
int *claves_aux = (int*)malloc(idx->size_claves);
int *hijos_aux = (int*)malloc(idx->size_hijos);
+ memset(claves_aux,-1,idx->size_claves);
+ memset(hijos_aux,-1,idx->size_hijos);
i = 0;
while ( (curnode->claves[i] < query->clave.i_clave) && (i < curnode->cant_claves)){
claves_aux[i] = curnode->claves[i];
b_plus_grabar_nodo(idx, curnode, prox_nodo);
b_plus_destruir_nodo(curnode);
}
-
-
-
+
/* si el nodo esta lleno tengo que splitear */
if ( curnode->cant_claves == idx->size_claves )
{
b_plus_destruir_nodo(curnode);
return 0;
}
-
+ PERR("TENGO LA HOJA");
/* Mientras no encontre la hoja con la clave, busco.. */
/* RECORDAR QUE LAS CLAVES DEBEN ESTAR ORDENADAS PARA QUE ESTO FUNCIONE !! */
while (curnode->nivel > 0 && curnode){
/* Llamo a la funcion que mete una clave nueva en el arbol y le paso el bloque a donde
tiene que apuntar */
b_plus_insertar_clave(idx, query);
+ b_plus_destruir_nodo(curnode);
return 1; /* SE INSERTO NODO NUEVO */
} else {
query->num_bloque = curnode->hijos[i-1];