#include "indice_b.h"
+#include "common.h"
/* Cantidad de claves por nodo */
#define CANT_HIJOS(x) ((x->tam_bloque-sizeof(B_NodoHeader))/sizeof(B_NodoEntry))
header.hijo_izquierdo = -1;
fp = fopen(idx->filename, "w");
+ PERR("Creando indice");
+ fprintf(stderr, "Archivo = (%s)\n", idx->filename);
+ if (fp == NULL) {
+ PERR("Error al crear el archivo");
+ return;
+ }
/* Creo el archivo con el Nodo raiz */
bloque = (char *)malloc(idx->tam_bloque);
return 0;
} else {
if (i == 0) {
- if (header.nivel != 0) {
- nodo = b_leer_nodo(idx, header.hijo_izquierdo);
- nodo_id = header.hijo_izquierdo;
- } else {
- nodo = NULL;
- nodo_id = -1;
- }
+ nodo = b_leer_nodo(idx, header.hijo_izquierdo);
+ nodo_id = header.hijo_izquierdo;
} else {
- if (header.nivel != 0) {
- nodo = b_leer_nodo(idx, claves[i-1].dato.bloque);
- nodo_id = claves[i-1].dato.bloque;
- } else {
- nodo = NULL;
- nodo_id = -1;
- }
+ nodo = b_leer_nodo(idx, claves[i-1].hijo_derecho);
+ nodo_id = claves[i-1].hijo_derecho;
}
}
}
if (i == 0) {
nodo = b_leer_nodo(idx, header.hijo_izquierdo);
} else {
- nodo = b_leer_nodo(idx, claves[i-1].dato.bloque);
+ nodo = b_leer_nodo(idx, claves[i-1].hijo_derecho);
}
free(tmp);
}
}
tmp_claves[i].clave = clave;
tmp_claves[i].dato = dato;
+ tmp_claves[i].hijo_derecho = hijo1;
+ tmp_claves[i+1].hijo_derecho = hijo2;
while (i < nodo_header.cant) {
tmp_claves[i+1] = claves[i];
i++;
if (nodo_id != 0) {
clave = tmp_claves[total/2].clave;
- dato.bloque = nuevo_id;
+ /* XXX dato.bloque = nuevo_id; */
b_grabar_nodo(idx, nodo_id, nodo);
b_grabar_nodo(idx, nuevo_id, nuevo);
nodo = tmp_nuevo;
clave = tmp_claves[total/2].clave;
- dato.bloque = nuevo_id;
+ /* XXX dato.bloque = nuevo_id; */
b_grabar_nodo(idx, nuevo_id+1, nodo);
b_grabar_nodo(idx, nuevo_id, nuevo);
nodo_header.cant++;
claves[i].clave = clave;
claves[i].dato = dato;
+ claves[i].hijo_derecho = hijo2;
nodo_header.hijo_izquierdo = b_elegir_izquierdo(idx, nodo_header.hijo_izquierdo, hijo1);
b_actualizar_header(nodo, &nodo_header);