Commit 745e9631 authored by Ivan Donchevskiy's avatar Ivan Donchevskiy

added parameter create to initializer of TableBlockStorage (bug 4115)

parent d90d1d24
...@@ -77,7 +77,7 @@ void testTable2(void) ...@@ -77,7 +77,7 @@ void testTable2(void)
{ {
char *val=new char[40]; char *val=new char[40];
TableBlockStorage *t; TableBlockStorage *t;
t = new TableBlockStorage("big_file.test", 4, 40, 20000, 5,28,0); t = new TableBlockStorage("big_file.test", 4, 40, 20000, 5,28,0,true);
int i; int i;
for(i=1;i<20;i++) for(i=1;i<20;i++)
{ {
...@@ -94,12 +94,13 @@ void testTable2(void) ...@@ -94,12 +94,13 @@ void testTable2(void)
{ {
if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val); if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val);
} }
printf("\ncurrent block = %d\n",t->cur_block); printf("\ncurrent block = %d, rewriting first 7 with values=keys+10\n",t->cur_block);
for(i=1;i<8;i++) for(i=1;i<8;i++)
{ {
sprintf(val,"%d",i+10); sprintf(val,"%d",i+10);
t->AddRow((char*)&i,val); t->AddRow((char*)&i,val);
} }
printf("deleteing 8-10 elements\n");
for(i=8;i<11;i++) for(i=8;i<11;i++)
{ {
t->DelRow((char*)&i); t->DelRow((char*)&i);
...@@ -108,7 +109,7 @@ void testTable2(void) ...@@ -108,7 +109,7 @@ void testTable2(void)
{ {
if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val); if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val);
} }
printf("\ncurrent block = %d\n",t->cur_block); printf("\ncurrent block = %d, rewriting 3-10 elements with values=keys+40\n",t->cur_block);
for(i=3;i<11;i++) for(i=3;i<11;i++)
{ {
sprintf(val,"%d",i+40); sprintf(val,"%d",i+40);
...@@ -128,11 +129,8 @@ void testTable2(void) ...@@ -128,11 +129,8 @@ void testTable2(void)
if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val); if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val);
} }
printf("\ncurrent block = %d\n",t->cur_block); printf("\ncurrent block = %d\n",t->cur_block);
printf("after reopen:\n");
t->Open("big_file.test", 4, 40, 20000, 5,28,0); t->Open("big_file.test", 4, 40, 20000, 5,28,0);
i=11;
sprintf(val,"%d",i);
t->AddRow((char*)&i,val);
for(i=1;i<20;i++) for(i=1;i<20;i++)
{ {
if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val); if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val);
......
...@@ -80,13 +80,13 @@ class TableBlockStorage ...@@ -80,13 +80,13 @@ class TableBlockStorage
{ {
int max; int max;
TableBlockStorageElem** mem; TableBlockStorageElem** mem;
FILE *file; int k_size, lim,seekpos;
int inf_size, k_size, lim,seekpos;
int size,block_size,block_number,full_size; int size,block_size,block_number,full_size;
public: public:
int cur_block; FILE *file;
int cur_block,inf_size;
TableBlockStorage(); TableBlockStorage();
TableBlockStorage(const char* name, int key_sz, int inf_sz, int sz, int block_num, int block_lim, int seek); TableBlockStorage(const char* name, int key_sz, int inf_sz, int sz, int block_num, int block_lim, int seek, bool create=false);
~TableBlockStorage(); ~TableBlockStorage();
private: private:
void filewrite(TableBlockStorageElem* tbl,int seek, bool needflush=true); void filewrite(TableBlockStorageElem* tbl,int seek, bool needflush=true);
......
...@@ -53,11 +53,14 @@ TableBlockStorage::TableBlockStorage() ...@@ -53,11 +53,14 @@ TableBlockStorage::TableBlockStorage()
file=NULL; file=NULL;
} }
TableBlockStorage::TableBlockStorage(const char* name, int key_sz, int inf_sz, int sz, int block_num, int block_lim, int seek) TableBlockStorage::TableBlockStorage(const char* name, int key_sz, int inf_sz, int sz, int block_num, int block_lim, int seek, bool create)
{ {
file=NULL; file=NULL;
if(!Open(name, key_sz, inf_sz, sz, block_num, block_lim, seek)) if(!Open(name, key_sz, inf_sz, sz, block_num, block_lim, seek))
if(create)
Create(name, key_sz, inf_sz, sz, block_num, block_lim, seek); Create(name, key_sz, inf_sz, sz, block_num, block_lim, seek);
else
file=NULL;
} }
TableBlockStorage::~TableBlockStorage() TableBlockStorage::~TableBlockStorage()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment