#include?#include?#include?#include?#include?#include?#include?“../include/client.h“#include?“./tokenize0.h“#include?“./split_csv0.h“//#include?//using?namespace?std;map?>?table2name;//由表名稱對應列名稱map?>?table2type;//由表名稱對應列類型map?>?table2pkey;//由表名稱對應主碼名稱map?column2table;//由列名稱對應表名稱mapcolumn2index;//由列名稱對應表中的列索引號map?>?>table2info;//表名稱對應表的內容,使快速查找map?>?>table2info_temp;map?>table2filename;//表名稱對應表文件名稱map?file2line;//表文件名對應文件內行數vector?result;//結果寄存map?output_line;//行號vector?out_line;//行號typedef?struct?{ int?col_index; int?op_num; string?comp;}Cond;void?doInsert(const?string?&?insert_table_nameconst?vector?&?insert_table_values);void?doSelect(const?vector&?output_table?const?vector&?output_index?const?vector&?table?const?vector&?condition);void?doJoin(const?vector&?output_table??const?vector&?output_index??const?vector&?table?const?vector?>&?join_table_compareconst?vector?>&join_index_compareint?depth);//void?show?(?const?string?&?table_name?);void?doJoin0(const?vector&?output?const?vector&?table?const?int?&?depthconst?int?&?num);void?done(const?vector&?output_table?const?vector&?output_index??const?vector&table?const?int?&?depth) //遞歸對每一的表做查找連接{ if(table2info_temp.size()?==?0)?{ int?size?=?table2info[table[depth]].size();//表示當前表的行數 if?(?depth?==?table.size()-1?){ for(int?i=0;?i output_line[table[depth]]?=?i; string?str?=?table2info[output_table[0]][output_line[output_table[0]]][output_index[0]]; for(?int?j=1?;?j str?+=?““?+?table2info[output_table[j]][output_line[output_table[j]]][output_index[j]]; str[str.size()]?=?‘\0‘; result.push_back(str); } return; } for(int?i=0?;?i output_line[table[depth]]?=?i; done(output_tableoutput_indextabledepth+1); } } else { int?size?=?table2info_temp[table[depth]].size();//表示當前表的行數 if?(?depth?==?table.size()-1?){ for(int?i=0;?i output_line[table[depth]]?=?i; string?str?=?table2info_temp[output_table[0]][output_line[output_table[0]]][output_index[0]]; for(?int?j=1?;?j str?+=?““?+?table2info_temp[output_table[j]][output_line[output_table[j]]][output_index[j]]; str[str.size()]?=?‘\0‘; result.push_back(str); } return; } for(int?i=0?;?i output_line[table[depth]]?=?i; done(output_tableoutput_indextabledepth+1); } } }void?create(const?string&?table?const?vector&?column const?ve
共有 條評論