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)
{
char *val=new char[40];
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;
for(i=1;i<20;i++)
{
......@@ -94,12 +94,13 @@ void testTable2(void)
{
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++)
{
sprintf(val,"%d",i+10);
t->AddRow((char*)&i,val);
}
printf("deleteing 8-10 elements\n");
for(i=8;i<11;i++)
{
t->DelRow((char*)&i);
......@@ -108,7 +109,7 @@ void testTable2(void)
{
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++)
{
sprintf(val,"%d",i+40);
......@@ -128,11 +129,8 @@ void testTable2(void)
if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val);
}
printf("\ncurrent block = %d\n",t->cur_block);
printf("after reopen:\n");
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++)
{
if(t->FindKeyValue((char*)&i,val)!=0) printf("%s, ",val);
......
......@@ -80,13 +80,13 @@ class TableBlockStorage
{
int max;
TableBlockStorageElem** mem;
FILE *file;
int inf_size, k_size, lim,seekpos;
int k_size, lim,seekpos;
int size,block_size,block_number,full_size;
public:
int cur_block;
FILE *file;
int cur_block,inf_size;
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();
private:
void filewrite(TableBlockStorageElem* tbl,int seek, bool needflush=true);
......
......@@ -53,11 +53,14 @@ TableBlockStorage::TableBlockStorage()
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;
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);
else
file=NULL;
}
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