]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
al parecer el tipo3 tambien anda... ahora falta debug de eliminacion e implemetar...
authorNicolás Dimov <ndimov@gmail.com>
Sat, 29 May 2004 06:06:19 +0000 (06:06 +0000)
committerNicolás Dimov <ndimov@gmail.com>
Sat, 29 May 2004 06:06:19 +0000 (06:06 +0000)
emufs/Makefile
emufs/tipo1.c
emufs/tipo3.c
emufs/tipo3_bplus_main.c [new file with mode: 0644]

index 134226f02c2a6053d3e971baccd3a008f978baef..e1c92c98055e9e9730df056034240013ec6545ab 100644 (file)
@@ -5,7 +5,7 @@ LDFLAGS= -lm -lmenu -lncurses -lxml2
 
 EMUFS_COMMON=emufs.o tipo1.o tipo2.o tipo3.o idx.o did.o fsc.o common.o indices.o indice_b.o indice_bplus.o 
 
-TARGETS=libemufs.a tipo1_main tipo2_main tipo3_main b_plus_test tipo1_bplus_main
+TARGETS=libemufs.a tipo1_main tipo2_main tipo3_main b_plus_test tipo1_bplus_main tipo3_bplus_main 
 
 all: $(TARGETS)
 
@@ -19,6 +19,8 @@ b_plus_test: b_plus_test.o $(EMUFS_COMMON)
 
 tipo1_bplus_main: tipo1_bplus_main.o $(EMUFS_COMMON)
 
+tipo3_bplus_main: tipo3_bplus_main.o $(EMUFS_COMMON)
+
 #b_plus_test: b_plus_test.o b_plus.o indices.o emufs.o
 
 #b_test: b_test.o indice_b.o
index 1af58b462bd9b8f622cdc238a8a27a68cdaff750..d93efd4f3e092627cd6a6a2d0338d0c3177c5f49 100644 (file)
@@ -864,7 +864,6 @@ int emufs_tipo1_insertar_ordenado(EMUFS *emu, void *ptr, EMUFS_REG_SIZE size, in
                                clave = grabar_ordenado_en_bloque(emu,ptr,size,new_bloque,query.num_bloque, emu->tam_bloque-move_size,err);
                                /*actualizo el arbol con la nueva clave*/
                                query.clave = clave;
-                               printf("clave enviada = %d\n", clave);
                                emufs_b_plus_insertar(emu->indices, &query);
                                /*grabo el bloque original*/
                                emufs_tipo1_grabar_bloque_fsc(emu, bloque, num_bloque, EMUFS_NOT_FOUND, err);
index 744f5fe5fd272e2864bd86123b4edff1f845b96b..f9905ecfef879fe909f00d3b7f3370d457e415aa 100644 (file)
@@ -287,10 +287,8 @@ EMUFS_REG_ID emufs_tipo3_grabar_registro(EMUFS *emu, void *ptr, EMUFS_REG_SIZE t
                        if ( emu->tam_bloque-sizeof(EMUFS_REG_ID) < emu->tam_reg ){
                                /*Si el registro ocupa mas de un bloque  (original) resto = emu->tam_bloque-sizeof(EMUFS_REG_ID)*/
                                resto += sizeof(EMUFS_REG_ID);
-                               /*resto = emu->tam_reg - i*(emu->tam_bloque - sizeof(EMUFS_REG_ID)) + sizeof(EMUFS_REG_ID);*/
                                if ( cant_bloques-1 == i )
                                        resto = emu->tam_reg - i*(emu->tam_bloque - sizeof(EMUFS_REG_ID))+sizeof(EMUFS_REG_ID);
-                               /*printf("fs-resto = %d\n", fs-resto);*/
                                if ( emufs_fsc_agregar(emu, num_bloque+i, fs-resto) !=0 ){
                                        fclose(file);
                                        if (bloque) free(bloque);
diff --git a/emufs/tipo3_bplus_main.c b/emufs/tipo3_bplus_main.c
new file mode 100644 (file)
index 0000000..fb2f0c2
--- /dev/null
@@ -0,0 +1,125 @@
+#include <stdio.h>
+#include <string.h>
+#include "emufs.h"
+#include "tipo3.h"
+#include "indices.h"
+#include "indice_bplus.h"
+
+
+char* cargar_registro(char* texto_ini,int len_ini, CLAVE clave, char *texto_fin, int len_fin)
+{
+       char *reg;
+       reg = (char*)malloc(len_ini+sizeof(CLAVE)+len_fin+1); /* +1 para el \0 */
+       memcpy(reg, texto_ini, len_ini);
+       memcpy(reg+len_ini, &clave, sizeof(CLAVE));
+       strcpy(reg+len_ini+sizeof(CLAVE), texto_fin);
+       return reg;
+}
+
+
+void imprimir_reg(char* reg, int off, int len)
+{
+       CLAVE clave;
+       int i;
+       memcpy(&clave, reg+off, sizeof(CLAVE));
+       printf("CLAVE = %d\n", clave);
+       printf("REGISTRO =");
+       for(i=0; i<len; i++) printf("%c",reg[i]);
+               printf("\n");
+       printf("TAMANIO REGISTRO = %d\n\n", len);
+}
+
+
+
+int main (int argc,char* argv[])
+{
+       CLAVE clave;
+       char *texto, *texto2;
+       char *r;
+       EMUFS *emu;
+       int tam_nodo = SIZE_B_PLUS_HEADER + sizeof(CLAVE)*5 + sizeof(CLAVE)*6;
+       EMUFS_REG_SIZE len;
+       int err=0, i;
+       
+       texto = "PARTE COSNSTANTE, clave =";
+       texto2= "FIN DE REGISTRO DE LONG CONSTANTE";
+       emu = emufs_crear("test",T1,512,strlen(texto2));
+       emufs_agregar_indice(emu,"claveidx",IND_PRIMARIO,IND_B_PLUS,IDX_INT,strlen(texto),tam_nodo);
+       
+       
+/*REGISTRO 1*/ 
+       clave.i_clave = 77;     
+       r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+       imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+       len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+       emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+       PERR("REGISTRO 1 GRABADO");
+       free(r);
+
+/*REGISTRO 2*/ 
+       clave.i_clave = 90;     
+       r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+       imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+       len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+       emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+       PERR("REGISTRO 2 GRABADO");
+       free(r);
+
+/*REGISTRO 3   */
+       clave.i_clave = 95;     
+       r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+       imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+       len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+       emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+       PERR("REGISTRO 3 GRABADO");
+       free(r);
+       
+/*REGISTRO 4   */
+       clave.i_clave = 99;     
+       r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+       imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+       len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+       emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+       free(r);
+
+/*REGISTRO 5   */
+       clave.i_clave = 102;    
+       r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+       imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+       len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+       emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+       PERR("REGISTRO 5 GRABADO");
+       free(r);
+
+/*REGISTRO 6*/ 
+       clave.i_clave = 93;     
+       r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+       imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+       len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+       emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+       PERR("REGISTRO 6 GRABADO");
+       free(r);
+
+/*REGISTRO 7*/ 
+       clave.i_clave = 80;     
+       r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+       imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+       len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+       emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+       PERR("REGISTRO 7 GRABADO");
+       free(r);
+
+for ( i=0; i<10000; i++){
+       srandom(i);
+       clave.i_clave = random();       
+       r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+       len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+       emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+       free(r);
+}
+
+emufs_destruir(emu);
+
+       return 0;
+       
+}