Exemplo n.º 1
0
int main(){
	chdir("../RunData");
	BDBOpe db_r("REGION.row");
	BDBOpe db_n1("NATION.row");
	BDBOpe db_c("CUSTOMER.row");
	BDBOpe db_o("ORDERS.row");
	BDBOpe db_l("LINEITEM.row");
	BDBOpe db_p("PART.row");
	BDBOpe db_s("SUPPLIER.row");
	BDBOpe db_n2("NATION.row");
	Operator *o1, *o2, *o3, *o4, *o5, *o6, *o7, *o8, *o9, *o10;
	Operator *o11, *o12, *o13, *o14, *o15, *o16, *o17, *o18, *o19, *o20;
	Operator *o21, *o22, *o23, *o24, *o25, *o26, *o27, *o28, *o29, *o30;
	
	db_r.open();
	db_n1.open();
	db_c.open();
	db_o.open();
	db_l.open();
	db_p.open();
	db_s.open();
	db_n2.open();

	TABLE_REC tableRec_r;
	TABLE_REC tableRec_n1;
	TABLE_REC tableRec_c;
	TABLE_REC tableRec_o;
	TABLE_REC tableRec_l;
	TABLE_REC tableRec_p;
	TABLE_REC tableRec_s;
	TABLE_REC tableRec_n2;
	
/* set table info */
	tableRec_r.tableID = 1;
	tableRec_r.attriNum = 3;
	
	tableRec_n1.tableID = 2;
	tableRec_n1.attriNum = 4;
	
	tableRec_c.tableID = 6;
	tableRec_c.attriNum = 8;

	tableRec_o.tableID = 7;
	tableRec_o.attriNum = 9;
	
	tableRec_l.tableID = 8;
	tableRec_l.attriNum = 16;

	tableRec_p.tableID = 4;
	tableRec_p.attriNum = 9;
	
	tableRec_s.tableID = 3;
	tableRec_s.attriNum = 7;
	
	tableRec_n2.tableID = 2;
	tableRec_n2.attriNum = 4;

/* aet attriRec */
	ATTRIBUTE_REC attriRec_r[tableRec_r.attriNum];
	ATTRIBUTE_REC attriRec_n1[tableRec_n1.attriNum];
	ATTRIBUTE_REC attriRec_c[tableRec_c.attriNum];
	ATTRIBUTE_REC attriRec_o[tableRec_o.attriNum];
	ATTRIBUTE_REC attriRec_l[tableRec_l.attriNum];
	ATTRIBUTE_REC attriRec_p[tableRec_p.attriNum];
	ATTRIBUTE_REC attriRec_s[tableRec_s.attriNum];
	ATTRIBUTE_REC attriRec_n2[tableRec_n2.attriNum];

	AttributeManager AM_r;
	AttributeManager AM_n1;
	AttributeManager AM_c;
	AttributeManager AM_o;
	AttributeManager AM_l;
	AttributeManager AM_p;
	AttributeManager AM_s;
	AttributeManager AM_n2;

	AM_r.getForTableID(tableRec_r, attriRec_r);
	for(int i=0 ; i < (int)tableRec_r.attriNum ; i++){
		cout << attriRec_r[i].attributeName << endl;
	}
	AM_n1.getForTableID(tableRec_n1, attriRec_n1);
	for(int i=0 ; i < (int)tableRec_n1.attriNum ; i++){
		cout << attriRec_n1[i].attributeName << endl;
	}
	AM_c.getForTableID(tableRec_c, attriRec_c);
	for(int i=0 ; i < (int)tableRec_c.attriNum ; i++){
		cout << attriRec_c[i].attributeName << endl;
	}
	AM_o.getForTableID(tableRec_o, attriRec_o);
	for(int i=0 ; i < (int)tableRec_o.attriNum ; i++){
		cout << attriRec_o[i].attributeName << endl;
	}
	AM_l.getForTableID(tableRec_l, attriRec_l);
	for(int i=0 ; i < (int)tableRec_l.attriNum ; i++){
		cout << attriRec_l[i].attributeName << endl;
	}
	AM_p.getForTableID(tableRec_p, attriRec_p);
	for(int i=0 ; i < (int)tableRec_p.attriNum ; i++){
		cout << attriRec_p[i].attributeName << endl;
	}
	AM_s.getForTableID(tableRec_s, attriRec_s);
	for(int i=0 ; i < (int)tableRec_s.attriNum ; i++){
		cout << attriRec_s[i].attributeName << endl;
	}
	AM_n2.getForTableID(tableRec_n2, attriRec_n2);
	for(int i=0 ; i < (int)tableRec_n2.attriNum ; i++){
		cout << attriRec_n2[i].attributeName << endl;
	}

/* selection1 */
	FixStrPosVal pv1(1,25);
	string str1("AMERICA");
	pv1.setStr(str1);

	ValueNode vn1 = ValueNode(&pv1);
	ColumnRefNode cn1;
	cn1.tableID = 1;
	cn1.attriID = 2;
	AxprNode an1 = AxprNode(EQ, &cn1, &vn1);
	

/* selection2 */

	DatePosVal pv2(1,(unsigned char *)"1995-01-01");
	DatePosVal pv3(1,(unsigned char *)"1996-12-31");
	

	ValueNode vn2 = ValueNode(&pv2);
	ValueNode vn3 = ValueNode(&pv3);
	ColumnRefNode cn2;
	cn2.tableID = 7;
	cn2.attriID = 5;
	AxprNode an2 = AxprNode(GE, &cn2, &vn2);
	AxprNode an3 = AxprNode(LE, &cn2, &vn3);
	AxprNode an4 = AxprNode(AND, &an2, &an3);

/* selection3 */
	VarStrPosVal pv4(1,25);
	string str2("ECONOMY ANODIZED STEEL");
	pv4.set((unsigned char*)str2.c_str());

	ValueNode vn4 = ValueNode(&pv4);
	ColumnRefNode cn3;
	cn3.tableID = 4;
	cn3.attriID = 5;
	AxprNode an5 = AxprNode(EQ, &cn3, &vn4);
	
	
/* GROUP */
	IntPosVal pv5(1, 1);
	ValueNode vn5 = ValueNode(&pv5);
	ColumnRefNode cn4[2];
	cn4[0].tableID = 8;
	cn4[0].attriID = 6;
	cn4[1].tableID = 8;
	cn4[1].attriID = 7;
	ArithmeticNode arith1(SUB, &vn5, &cn4[1]);
	ArithmeticNode arith2(MUL, &cn4[0], &arith1);
	
	Aggregation *aggre[1];
	aggre[0] = new Sum(&arith2, 2);
	
	
	OPERATION_NODE group[1];
	group[0].tableID = 7;
	group[0].attributeID = 5;




/* Join1 */

	OPERATION_NODE pn1[2];
	pn1[0].tableID = 1;
	pn1[0].attributeID = 1;
	pn1[1].tableID = 2;
	pn1[1].attributeID = 3;
	

	JOIN_OPERATION_NODE jpn1[1];
	jpn1[0].rightNode = pn1[0];
	jpn1[0].leftNode = pn1[1];
	
	
/* Join2 */
	OPERATION_NODE pn2[2];
	pn2[0].tableID = 2;
	pn2[0].attributeID = 1;
	pn2[1].tableID = 6;
	pn2[1].attributeID = 4;

	
	JOIN_OPERATION_NODE jpn2[1];
	jpn2[0].rightNode = pn2[0];
	jpn2[0].leftNode = pn2[1];

/* Join3 */
	OPERATION_NODE pn3[2];
	pn3[0].tableID = 6;
	pn3[0].attributeID = 1;
	pn3[1].tableID = 7;
	pn3[1].attributeID = 2;

	
	JOIN_OPERATION_NODE jpn3[1];
	jpn3[0].rightNode = pn3[0];
	jpn3[0].leftNode = pn3[1];
	
/* Join4 */
	OPERATION_NODE pn4[2];
	pn4[0].tableID = 7;
	pn4[0].attributeID = 1;
	pn4[1].tableID = 8;
	pn4[1].attributeID = 1;

	
	JOIN_OPERATION_NODE jpn4[1];
	jpn4[0].rightNode = pn4[0];
	jpn4[0].leftNode = pn4[1];

/* Join5 */
	OPERATION_NODE pn5[2];
	pn5[0].tableID = 4;
	pn5[0].attributeID = 1;
	pn5[1].tableID = 8;
	pn5[1].attributeID = 2;

	
	JOIN_OPERATION_NODE jpn5[1];
	jpn5[0].rightNode = pn5[0];
	jpn5[0].leftNode = pn5[1];
	
/* Join6 */
	OPERATION_NODE pn6[2];
	pn6[0].tableID = 3;
	pn6[0].attributeID = 1;
	pn6[1].tableID = 8;
	pn6[1].attributeID = 3;

	
	JOIN_OPERATION_NODE jpn6[1];
	jpn6[0].rightNode = pn6[0];
	jpn6[0].leftNode = pn6[1];

/* Join7 */
	OPERATION_NODE pn7[2];
	pn7[0].tableID = 2;
	pn7[0].attributeID = 1;
	pn7[1].tableID = 3;
	pn7[1].attributeID = 4;

	
	JOIN_OPERATION_NODE jpn7[1];
	jpn7[0].rightNode = pn7[0];
	jpn7[0].leftNode = pn7[1];



/* Projection1 */

	OPERATION_NODE pro1[1];
	pro1[0].tableID = 1;
	pro1[0].attributeID = 1;

/* Projection2 */

	OPERATION_NODE pro2[2];
	pro2[0].tableID = 2;
	pro2[0].attributeID = 1;
	pro2[1].tableID = 2;
	pro2[1].attributeID = 3;

/* Projection3 */

	OPERATION_NODE pro3[1];
	pro3[0].tableID = 6;
	pro3[0].attributeID = 1;
	
/* Projection4 */

	OPERATION_NODE pro4[2];
	pro4[0].tableID = 7;
	pro4[0].attributeID = 1;
	pro4[1].tableID = 7;
	pro4[1].attributeID = 5;

/* Projection5 */
	
	OPERATION_NODE pro5[1];
	pro5[0].tableID = 4;
	pro5[0].attributeID = 1;

/* Projection6 */
	
	OPERATION_NODE pro6[2];
	pro6[0].tableID = 3;
	pro6[0].attributeID = 1;
	pro6[1].tableID = 3;
	pro6[1].attributeID = 4;

/* Projection7 */
	
	OPERATION_NODE pro7[2];
	pro7[0].tableID = 2;
	pro7[0].attributeID = 1;
	pro7[1].tableID = 2;
	pro7[1].attributeID = 2;

/* Projection8 */
	
	OPERATION_NODE pro8[7];
	pro8[0].tableID = 7;
	pro8[0].attributeID = 5;
	pro8[1].tableID = 2;
	pro8[1].attributeID = 2;
	pro8[2].tableID = 8;
	pro8[2].attributeID = 6;
	pro8[3].tableID = 8;
	pro8[3].attributeID = 7;
	pro8[4].tableID = 8;
	pro8[4].attributeID = 1;
	pro8[5].tableID = 8;
	pro8[5].attributeID = 2;
	pro8[6].tableID = 8;
	pro8[6].attributeID = 3;
	
	
/* Extract */
	OPERATION_NODE ex[1];
	ex[0].tableID = 7;
	ex[0].attributeID = 5;

/* Sort 1 */
	OPERATION_NODE so1[1];
	so1[0].tableID = 7;
	so1[0].attributeID = 5;
	so1[0].option = 0;

	o1 = new Scan(&db_r, attriRec_r, 3);
	cout << "OK new o1" << endl;
	o2 = new Selection((Node *)&an1 ,(unsigned int)1);
	cout << "OK new o2" << endl;
	o2->setPreOperator(o1);
	o3 = new Projection(pro1, 1);
	o3->setPreOperator(o2);
	cout << "OK new o3" << endl;
	
	o4 = new Scan(&db_n1, attriRec_n1, 4);
	cout << "OK new o4" << endl;
	o5 = new OneSideHashJoin(o3, o4 , jpn1, 1);
	cout << "OK new o5" << endl;
	o6 = new Projection(pro2, 1);
	o6->setPreOperator(o5);
	cout << "OK new o6" << endl;
	
	
	o7 = new Scan(&db_c, attriRec_c, 8);
	cout << "OK new o7" << endl;
	o8 = new OneSideHashJoin(o6, o7 , jpn2, 1);
	cout << "OK new o8" << endl;
	o9 = new Projection(pro3, 1);
	o9->setPreOperator(o8);
	cout << "OK new o9" << endl;
	

	o10 = new Scan(&db_o, attriRec_o, 9);
	cout << "OK new o10" << endl;
	o11 = new Selection((Node *)&an4 ,(unsigned int)2);
	cout << "OK new o11" << endl;
	o11->setPreOperator(o10);
	
	o12 = new OneSideHashJoin(o9, o11 , jpn3, 1);
	cout << "OK new o12" << endl;


	o13 = new Projection(pro4, 2);
	o13->setPreOperator(o12);
	cout << "OK new o13" << endl;
	
	o14 = new Scan(&db_l, attriRec_l, 16);
	cout << "OK new o14" << endl;
	o15 = new OneSideHashJoin(o13, o14 , jpn4, 1);
	cout << "OK new o15" << endl;

	o16 = new Scan(&db_p, attriRec_p, 9);
	cout << "OK new o16" << endl;
	o17 = new Selection((Node *)&an5 ,(unsigned int)1);
	cout << "OK new o17" << endl;
	o17->setPreOperator(o16);
	o18 = new Projection(pro5, 1);
	o18->setPreOperator(o17);
	cout << "OK new o18" << endl;
	o19 = new OneSideHashJoin(o18, o15 , jpn5, 1);
	cout << "OK new o19" << endl;
	
	
	o20 = new Scan(&db_s, attriRec_s, 7);
	cout << "OK new o20" << endl;
	o21 = new Projection(pro6, 2);
	o21->setPreOperator(o20);
	cout << "OK new o21" << endl;
	o22 = new OneSideHashJoin(o21, o19 , jpn6, 1);
	cout << "OK new o22" << endl;
	
	o23 = new Scan(&db_n2, attriRec_n2, 4);
	cout << "OK new o23" << endl;
	o24 = new Projection(pro7, 2);
	o24->setPreOperator(o23);
	cout << "OK new o24" << endl;
	o25 = new OneSideHashJoin(o24, o22 , jpn7, 1);
	cout << "OK new o25" << endl;
	
	o26 = new Extract(ex, true, false, false);
	o26->setPreOperator(o25);
	cout << "OK new o26" << endl;
	
	o27 = new Projection(pro8, 7);
	o27->setPreOperator(o26);
	cout << "OK new o27" << endl;


	o28 = new GroupBy(group, 1, aggre, 1);
	o28->setPreOperator(o27);
	cout << "OK new o28" << endl;

	o29 = new Sort(so1, 1);
	o29->setPreOperator(o28);
	cout << "OK new o29" << endl;


	o30 = new OutPut(STD_OUT);
	cout << "OK new o30" << endl;

	o30->setPreOperator(o29);
	o30->init();
	cout << "TEST START" << endl;
	
	cout << setprecision(2);
	cout << setiosflags(ios::fixed); 
	o30->exec();
}
Exemplo n.º 2
0
int main(){
	chdir(QUERY_DATA_PATH);
	EnvDB *env = new EnvDB();
	env->open();
	
	BDBOpe db_r_1(env->getEnv(), "1.1.DSM");
	BDBOpe db_r_2(env->getEnv(), "1.2.DSM");
	BDBOpe db_n_1(env->getEnv(), "2.1.DSM");
	BDBOpe db_n2_1(env->getEnv(), "2.1.DSM");
	BDBOpe db_n2_2(env->getEnv(), "2.2.DSM");
	BDBOpe db_n_3(env->getEnv(), "2.3.DSM");
	BDBOpe db_s_1(env->getEnv(), "3.1.DSM");
	BDBOpe db_s_4(env->getEnv(), "3.4.DSM");
	BDBOpe db_p_1(env->getEnv(), "4.1.DSM");
	BDBOpe db_p_5(env->getEnv(), "4.5.DSM");
	BDBOpe db_c_1(env->getEnv(), "6.1.DSM");
	BDBOpe db_c_4(env->getEnv(), "6.4.DSM");
	BDBOpe db_o_1(env->getEnv(), "7.1.DSM");
	BDBOpe db_o_2(env->getEnv(), "7.2.DSM");
	BDBOpe db_o_5(env->getEnv(), "7.5.DSM");
	BDBOpe db_l_1(env->getEnv(), "8.1.DSM");
	BDBOpe db_l_2(env->getEnv(), "8.2.DSM");
	BDBOpe db_l_3(env->getEnv(), "8.3.DSM");
	BDBOpe db_l_6(env->getEnv(), "8.6.DSM");
	BDBOpe db_l_7(env->getEnv(), "8.7.DSM");

	Operator *o1, *o2, *o3, *o4, *o5, *o6, *o7, *o8, *o9, *o10;
	Operator *o11, *o12, *o13, *o14, *o15, *o16, *o17, *o18, *o19, *o20;
	Operator *o21, *o22, *o23, *o24, *o25, *o26, *o27, *o28, *o29, *o30;
	Operator *o31, *o32, *o33, *o34, *o35, *o36, *o37, *o38, *o39, *o40;
	Operator *o41, *o42, *o43, *o44, *o45, *o46, *o47, *o48, *o49, *o50, *o51;
	db_r_1.open();
	db_r_2.open();
	db_n_1.open();
	db_n2_1.open();
	db_n2_2.open();
	db_n_3.open();
	db_s_1.open();
	db_s_4.open();
	db_p_1.open();
	db_p_5.open();
	db_c_1.open();
	db_c_4.open();
	db_o_1.open();
	db_o_2.open();
	db_o_5.open();
	
	db_l_1.open();
	db_l_2.open();
	db_l_3.open();
	db_l_6.open();
	db_l_7.open();
	
	TABLE_REC tableRec_r;
	TABLE_REC tableRec_n;
	TABLE_REC tableRec_s;
	TABLE_REC tableRec_p;
	TABLE_REC tableRec_c;
	TABLE_REC tableRec_o;
	TABLE_REC tableRec_l;

	tableRec_r.tableID = 1;
	tableRec_r.attriNum = 3;

	tableRec_n.tableID = 2;
	tableRec_n.attriNum = 4;
	
	tableRec_s.tableID = 3;
	tableRec_s.attriNum = 7;
	
	tableRec_p.tableID = 4;
	tableRec_p.attriNum = 9;
	
	tableRec_c.tableID = 6;
	tableRec_c.attriNum = 8;
	
	tableRec_o.tableID = 7;
	tableRec_o.attriNum = 9;
	
	tableRec_l.tableID = 8;
	tableRec_l.attriNum = 16;
	
	
	ATTRIBUTE_REC attriRec_r[tableRec_r.attriNum];
	ATTRIBUTE_REC attriRec_n[tableRec_n.attriNum];
	ATTRIBUTE_REC attriRec_s[tableRec_s.attriNum];
	ATTRIBUTE_REC attriRec_p[tableRec_p.attriNum];
	ATTRIBUTE_REC attriRec_c[tableRec_c.attriNum];
	ATTRIBUTE_REC attriRec_o[tableRec_o.attriNum];
	ATTRIBUTE_REC attriRec_l[tableRec_l.attriNum];

	AttributeManager AM(env->getEnv());
	
	AM.getForTableID(tableRec_r, attriRec_r);
/*	for(int i=0 ; i < (int)tableRec_r.attriNum ; i++){
		cout << attriRec_r[i].attributeName << endl;
	}
*/
	AM.getForTableID(tableRec_n, attriRec_n);
/*	for(int i=0 ; i < (int)tableRec_n.attriNum ; i++){
		cout << attriRec_n[i].attributeName << endl;
	}
*/
	AM.getForTableID(tableRec_s, attriRec_s);
/*	for(int i=0 ; i < (int)tableRec_s.attriNum ; i++){
		cout << attriRec_s[i].attributeName << endl;
	}
*/
	AM.getForTableID(tableRec_p, attriRec_p);
/*	for(int i=0 ; i < (int)tableRec_p.attriNum ; i++){
		cout << attriRec_p[i].attributeName << endl;
	}
*/
	AM.getForTableID(tableRec_c, attriRec_c);
/*	for(int i=0 ; i < (int)tableRec_c.attriNum ; i++){
		cout << attriRec_c[i].attributeName << endl;
	}
*/
	AM.getForTableID(tableRec_o, attriRec_o);
/*	for(int i=0 ; i < (int)tableRec_o.attriNum ; i++){
		cout << attriRec_o[i].attributeName << endl;
	}
*/
	AM.getForTableID(tableRec_l, attriRec_l);
/*	for(int i=0 ; i < (int)tableRec_l.attriNum ; i++){
		cout << attriRec_l[i].attributeName << endl;
	}
*/

/* selection1 */
	FixStrPosVal pv1(1,25);
	string str1("AMERICA");
	pv1.setStr(str1);

	ValueNode vn1 = ValueNode(&pv1);
	ColumnRefNode cn1;
	cn1.tableID = 1;
	cn1.attriID = 2;
	AxprNode an1 = AxprNode(EQ, &cn1, &vn1);
	

/* selection2 */

	DatePosVal pv2(1,(unsigned char *)"1995-01-01");
	DatePosVal pv3(1,(unsigned char *)"1996-12-31");
	

	ValueNode vn2 = ValueNode(&pv2);
	ValueNode vn3 = ValueNode(&pv3);
	ColumnRefNode cn2;
	cn2.tableID = 7;
	cn2.attriID = 5;
	AxprNode an2 = AxprNode(GE, &cn2, &vn2);
	AxprNode an3 = AxprNode(LE, &cn2, &vn3);
	AxprNode an4 = AxprNode(AND, &an2, &an3);

/* selection3 */
	VarStrPosVal pv4(1,25);
	string str2("ECONOMY ANODIZED STEEL");
	pv4.set((unsigned char*)str2.c_str());

	ValueNode vn4 = ValueNode(&pv4);
	ColumnRefNode cn3;
	cn3.tableID = 4;
	cn3.attriID = 5;
	AxprNode an5 = AxprNode(EQ, &cn3, &vn4);
	

	
/*Join1*/
	OPERATION_NODE jop1, jop2;
	jop1.tableID = 6;
	jop1.attributeID = 4;
	jop2.tableID = 6;
	jop2.attributeID = 1;
	
	JOIN_OPERATION_NODE jon1;
	jon1.rightNode = jop1;
	jon1.leftNode = jop2;

/*Join2*/
	OPERATION_NODE jop3, jop4;
	jop3.tableID = 7;
	jop3.attributeID = 2;
	jop4.tableID = 7;
	jop4.attributeID = 5;
	
	JOIN_OPERATION_NODE jon2;
	jon2.rightNode = jop3;
	jon2.leftNode = jop4;

/*Join3*/
	OPERATION_NODE jop5, jop6;
	jop5.tableID = 7;
	jop5.attributeID = 5;
	jop6.tableID = 7;
	jop6.attributeID = 1;
	
	JOIN_OPERATION_NODE jon3;
	jon3.rightNode = jop5;
	jon3.leftNode = jop6;

/*Join4*/
	OPERATION_NODE jop7, jop8;
	jop7.tableID = 7;
	jop7.attributeID = 1;
	jop8.tableID = 8;
	jop8.attributeID = 1;
	
	JOIN_OPERATION_NODE jon4;
	jon4.rightNode = jop7;
	jon4.leftNode = jop8;
	
/*Join5*/
	OPERATION_NODE jop9, jop10;
	jop9.tableID = 4;
	jop9.attributeID = 1;
	jop10.tableID = 8;
	jop10.attributeID = 2;
	
	JOIN_OPERATION_NODE jon5;
	jon5.rightNode = jop9;
	jon5.leftNode = jop10;

/*Join6*/
	OPERATION_NODE jop11, jop12;
	jop11.tableID = 6;
	jop11.attributeID = 1;
	jop12.tableID = 7;
	jop12.attributeID = 2;
	
	JOIN_OPERATION_NODE jon6;
	jon6.rightNode = jop11;
	jon6.leftNode = jop12;
	
/*Join7*/
	OPERATION_NODE jop13, jop14;
	jop13.tableID = 3;
	jop13.attributeID = 1;
	jop14.tableID = 8;
	jop14.attributeID = 3;
	
	JOIN_OPERATION_NODE jon7;
	jon7.rightNode = jop13;
	jon7.leftNode = jop14;
	
/*Join8*/
	OPERATION_NODE jop15, jop16;
	jop15.tableID = 2;
	jop15.attributeID = 1;
	jop16.tableID = 3;
	jop16.attributeID = 4;
	
	JOIN_OPERATION_NODE jon8;
	jon8.rightNode = jop15;
	jon8.leftNode = jop16;
	
/* Projection1 */

	OPERATION_NODE pro1[1];
	pro1[0].tableID = 6;
	pro1[0].attributeID = 1;
	
	
/* Projection2 */

	OPERATION_NODE pro2[2];
	pro2[0].tableID = 7;
	pro2[0].attributeID = 1;
	pro2[1].tableID = 7;
	pro2[1].attributeID = 5;
	
/* Projection3 */

	OPERATION_NODE pro3[1];
	pro3[0].tableID = 8;
	pro3[0].attributeID = 2;
	
/* Projection4 */

	OPERATION_NODE pro4[2];
	pro4[0].tableID = 8;
	pro4[0].attributeID = 3;
	pro4[1].tableID = 2;
	pro4[1].attributeID = 2;

/* Projection5 */

	OPERATION_NODE pro5[4];
	pro5[0].tableID = 7;
	pro5[0].attributeID = 5;
	pro5[1].tableID = 2;
	pro5[1].attributeID = 2;
	pro5[2].tableID = 8;
	pro5[2].attributeID = 6;
	pro5[3].tableID = 8;
	pro5[3].attributeID = 7;

/* Extract */
	OPERATION_NODE ex[1];
	ex[0].tableID = 7;
	ex[0].attributeID = 5;

/* GROUP */
	IntPosVal pv5(1, 1);
	ValueNode vn5 = ValueNode(&pv5);
	ColumnRefNode cn4[2];
	cn4[0].tableID = 8;
	cn4[0].attriID = 6;
	cn4[1].tableID = 8;
	cn4[1].attriID = 7;
	ArithmeticNode arith1(SUB, &vn5, &cn4[1]);
	ArithmeticNode arith2(MUL, &cn4[0], &arith1);
	
	Aggregation *aggre[1];
	aggre[0] = new Sum(&arith2, 2);
	
	
	OPERATION_NODE group[1];
	group[0].tableID = 7;
	group[0].attributeID = 5;

/* Sort 1 */
	OPERATION_NODE so1[1];
	so1[0].tableID = 7;
	so1[0].attributeID = 5;
	so1[0].option = 0;
	
	


	OPERATION_NODE op1;
	op1.tableID = 2;
	op1.attributeID = 3;
	
	OPERATION_NODE op2;
	op2.tableID = 6;
	op2.attributeID = 4;
	
	OPERATION_NODE op3;
	op3.tableID = 7;
	op3.attributeID = 5;
	
	OPERATION_NODE op4;
	op4.tableID = 8;
	op4.attributeID = 1;
	
	OPERATION_NODE op5;
	op5.tableID = 3;
	op5.attributeID = 4;
	
	OPERATION_NODE op6;
	op6.tableID = 2;
	op6.attributeID = 2;
	
	OPERATION_NODE op7;
	op7.tableID = 8;
	op7.attributeID = 2;


	o1 = new ScanDSM(&db_r_2, &attriRec_r[1], 1);
	
	o2 = new SelectBitOut((Node *)&an1 ,(unsigned int)1);
	o2->setPreOperator(o1);
	
	o3 = new ScanDSM(&db_r_1, &attriRec_r[0], 1); 
	
	o4 = new BitFilter(o3, o2);
	
	o5 = new ScanDSM(&db_n_3, &attriRec_n[2], 1);
	
	o6 = new JoinIndex_OneHash(o4, o5); 
	
	o7 = new ScanDSM(&db_n_1, &attriRec_n[0], 1);
	
	o8 = new ScanFromJI(o7, o6, &op1);

	o9 = new ScanDSM(&db_c_4, &attriRec_c[3], 1);

	o10 = new JoinIndex_OneHash(o8, o9); 
	
	o11 = new ScanDSM(&db_c_1, &attriRec_c[0], 1);
	
	o12 = new ScanFromJI(o11, o10, &op2);
	
	o13 = new Projection(pro1, 1);
	o13->setPreOperator(o12);
	
/*	
	
	o14 = new ScanDSM(&db_o_2, &attriRec_o[1], 1);
//	cout << "OK new o14" << endl;
	
	o15 = new JoinIndex_OneHash(o13, o14); 
//	cout << "OK new o15" << endl;
	
*/
	o14 = new ScanDSM(&db_o_5, &attriRec_o[4], 1);

	o15 = new Selection((Node *)&an4 ,(unsigned int)2);
	o15->setPreOperator(o14);
	
	o16 = new ScanDSM(&db_o_2, &attriRec_o[1], 1);
	
	o17 = new ScanFromJI(o16, o15, &op3);
	
	o18 = new ScanDSM(&db_o_1, &attriRec_o[0], 1);
	
	o19 = new ScanFromJI(o18, o17, &op3);
	
	
	
	o20 = new ScanDSM(&db_p_5, &attriRec_p[4], 1);

	o21 = new SelectBitOut((Node *)&an5 ,1);
	o21->setPreOperator(o20);
	
	o22 = new ScanDSM(&db_p_1, &attriRec_p[0], 1);

	o23 = new BitFilter(o22, o21);
	
	o24 = new ScanDSM(&db_l_2, &attriRec_l[1], 1);
	
	o25 = new JoinIndex_OneHash(o23, o24, &jon5); 



	o26 = new ScanDSM(&db_l_1, &attriRec_l[0], 1);
	o27 = new ScanFromJI(o26, o25, &op7);
	
	
	o28 = new JoinIndex_OneHash(o19, o27, &jon4);
	o29 = new JoinIndex_OneHash(o13, o28, &jon6);
	
	o30 = new ScanDSM(&db_s_4, &attriRec_s[3], 1);
	
	o31 = new ScanDSM(&db_s_1, &attriRec_s[0], 1);
	
	o32 = new ScanFromJI(o31, o30, &op5);
	
	
	
	o33 = new ScanDSM(&db_l_3, &attriRec_l[2], 1);
	o34 = new ScanFromJI(o33, o29, &op7);
	
	o35 = new JoinIndex_OneHash(o32, o34, &jon7);
	
	
	
	o36 = new ScanDSM(&db_n2_1, &attriRec_n[0], 1);
	o37 = new ScanDSM(&db_n2_2, &attriRec_n[1], 1);
	o38 = new ScanFromJI(o36, o37, &op6);
	
	o40 = new JoinIndex_OneHash(o38, o35, &jon8);
	
	
	
	o41 = new ScanDSM(&db_l_6, &attriRec_l[5], 1);
	o42 = new ScanFromJI(o41, o40, &op4);


	o43 = new ScanDSM(&db_l_7, &attriRec_l[6], 1);
	o44 = new ScanFromJI(o43, o42, &op4);

	o45 = new Projection(pro5, 4);
	o45->setPreOperator(o44);
	
	o46 = new Extract(ex, true, false, false);
	o46->setPreOperator(o45);
	
	o47 = new GroupBy(group, 1, aggre, 1);
	o47->setPreOperator(o46);
	
	o48 = new Sort(so1, 1);
	o48->setPreOperator(o47);


	o49 = new OutPut(TIME_OUT);
	o49->setPreOperator(o48);
	o49->init(env->getEnv());
	cout << "TEST START" << endl;
	
	cout << setprecision(2);
	cout << setiosflags(ios::fixed);
	o49->exec();
}
Exemplo n.º 3
0
void PrintVirutalFucAddr()
{
	B1 b1(1), b2(2); D1 d1(3), d2(4);
	B1 * pd1 = &d1, * pd2 = &d2;
	cout << "b1对象地址:" << &b1 << endl;
	cout << "b2对象地址:" << &b2 << endl;
	cout << "d1对象地址:" << &d1 << endl;
	cout << "d2对象地址:" << &d2 << endl;
	cout << "pd1对象地址:" << pd1 << endl;
	cout << "pd2对象地址:" << pd2 << endl;
	cout << "b1虚函数表地址:" << (int*)*(int*)(&b1) << endl;
	cout << "b2虚函数表地址:" << (int*)*(int*)(&b2) << endl;
	cout << "d1虚函数表地址:" << (int*)*(int*)(&d1) << endl;
	cout << "d2虚函数表地址:" << (int*)*(int*)(&d2) << endl;
	cout << "pd1虚函数表地址:" << (int*)*(int*)(pd1) << endl;
	cout << "pd2虚函数表地址:" << (int*)*(int*)(pd2) << endl;
	cout << "b1虚函数表  — 第一个函数地址:" << (int*)*((int*)*(int*)(&b1) + 0) << endl;
	cout << "b2虚函数表  — 第一个函数地址:" << (int*)*((int*)*(int*)(&b2) + 0) << endl;
	cout << "d1虚函数表  — 第一个函数地址:" << (int*)*((int*)*(int*)(&d1) + 0) << endl;
	cout << "d2虚函数表  — 第一个函数地址:" << (int*)*((int*)*(int*)(&d2) + 0) << endl;
	cout << "pd1虚函数表 — 第一个函数地址:" << (int*)*((int*)*(int*)(pd1) + 0) << endl;
	cout << "pd2虚函数表 — 第一个函数地址:" << (int*)*((int*)*(int*)(pd2) + 0) << endl;
	cout << "b1虚函数表  — 第二个函数地址:" << (int*)*((int*)*(int*)(&b1) + 1) << endl;
	cout << "b2虚函数表  — 第二个函数地址:" << (int*)*((int*)*(int*)(&b2) + 1) << endl;
	cout << "d1虚函数表  — 第二个函数地址:" << (int*)*((int*)*(int*)(&d1) + 1) << endl;
	cout << "d2虚函数表  — 第二个函数地址:" << (int*)*((int*)*(int*)(&d2) + 1) << endl;
	cout << "pd1虚函数表 — 第二个函数地址:" << (int*)*((int*)*(int*)(pd1) + 1) << endl;
	cout << "pd2虚函数表 — 第二个函数地址:" << (int*)*((int*)*(int*)(pd2) + 1) << endl;

	
	typedef void (*VFUN)(void);

	cout << "b1 与 d1 执行第一个函数地址" << endl;
	VFUN pv1 = (VFUN)*((int*)*(int*)(&b1));
	VFUN pv2 = (VFUN)*((int*)*(int*)(&d1));
	pv1();
	pv2();
	cout << "b1 与 d1 执行第二个函数地址" << endl;
	pv1 = (VFUN)*((int*)*(int*)(&b1) + 1);
	pv2 = (VFUN)*((int*)*(int*)(&d1) + 1);
	pv1();
	pv2();
	cout << "b1 与 d1 执行第四个函数地址" << endl;
	pv1 = (VFUN)*((int*)*(int*)(&b1) + 3);
	pv2 = (VFUN)*((int*)*(int*)(&d1) + 3);
	//pv1(); error
	//pv2(); error
	typedef void (*VFUN2)(B1*);
	VFUN2 pv3 = (VFUN2)*((int*)*(int*)(&b1) + 3);
	VFUN2 pv4 = (VFUN2)*((int*)*(int*)(&d1) + 3);
	pv3(&b1);
	pv4(&d1);
	
	
	cout << "sizeof(int*): " << sizeof(int*) << endl;
	cout << "sizeof(double): " << sizeof(double) << endl;
	cout << "sizeof(float): " << sizeof(float) << endl;
	cout << "sizeof(unsigned long): " << sizeof(unsigned long) << endl;
	cout << "sizeof(long): " << sizeof(long) << endl;
	cout << "sizeof(unsigned int): " << sizeof(unsigned int) << endl;
	cout << "sizeof(int): " << sizeof(int) << endl;
	cout << "sizeof(unsigned short): " << sizeof(unsigned short) << endl;
	cout << "sizeof(short): " << sizeof(short) << endl;
}
Exemplo n.º 4
0
int main(){
	chdir(QUERY_DATA_PATH);
	EnvDB *env = new EnvDB();
	env->open();
	
	BDBOpe db_r_1(env->getEnv(), "1.1.DSM");
	BDBOpe db_r_2(env->getEnv(), "1.2.DSM");
	BDBOpe db_n_1(env->getEnv(), "2.1.DSM");
	BDBOpe db_n2_1(env->getEnv(), "2.1.DSM");
	BDBOpe db_n2_2(env->getEnv(), "2.2.DSM");
	BDBOpe db_n_3(env->getEnv(), "2.3.DSM");
	BDBOpe db_s_1(env->getEnv(), "3.1.DSM");
	BDBOpe db_s_4(env->getEnv(), "3.4.DSM");
	BDBOpe db_p_1(env->getEnv(), "4.1.DSM");
	BDBOpe db_p_5(env->getEnv(), "4.5.DSM");
	BDBOpe db_c_1(env->getEnv(), "6.1.DSM");
	BDBOpe db_c_4(env->getEnv(), "6.4.DSM");
	BDBOpe db_o(env->getEnv(), "ORDERS.row");
	BDBOpe db_l(env->getEnv(), "LINEITEM.row");
	
	SecondDB *sDB1;
	int (*pf1)(Db *sdbp, const Dbt*pkey, const Dbt *pdata, Dbt *skey);
	pf1 = L_1_secondary;
	sDB1 = new SecondDB(env->getEnv(), "8.1.secondary");
	sDB1->setNumCmp();
	
	SecondDB *sDB2;
	int (*pf2)(Db *sdbp, const Dbt*pkey, const Dbt *pdata, Dbt *skey);
	pf2 = O_2_secondary;
	sDB2 = new SecondDB(env->getEnv(), "7.2.secondary");
	sDB2->setNumCmp();

	Operator *o1, *o2, *o3, *o4, *o5, *o6, *o7, *o8, *o9, *o10;
	Operator *o11, *o12, *o13, *o14, *o15, *o16, *o17, *o18, *o19, *o20;
	Operator *o21, *o22, *o23, *o24, *o25, *o26, *o27, *o28, *o29, *o30;
	Operator *o31, *o32, *o33, *o34, *o35, *o36, *o37, *o38, *o39, *o40;
	Operator *o41, *o42, *o43, *o44, *o45, *o46, *o47, *o48, *o49, *o50, *o51;
	db_r_1.open();
	db_r_2.open();
	db_n_1.open();
	db_n2_1.open();
	db_n2_2.open();
	db_n_3.open();
	db_s_1.open();
	db_s_4.open();
	db_p_1.open();
	db_p_5.open();
	db_c_1.open();
	db_c_4.open();
	
	
	db_o.open();
	sDB2->open(0);
	db_o.associate(sDB2->getDb(), pf2);
	sDB2->openCursor();
	
	db_l.open();
	sDB1->open(0);
	db_l.associate(sDB1->getDb(), pf1);
	sDB1->openCursor();

	TABLE_REC tableRec_r;
	TABLE_REC tableRec_n;
	TABLE_REC tableRec_s;
	TABLE_REC tableRec_p;
	TABLE_REC tableRec_c;
	TABLE_REC tableRec_o;
	TABLE_REC tableRec_l;

	tableRec_r.tableID = 1;
	tableRec_r.attriNum = 3;

	tableRec_n.tableID = 2;
	tableRec_n.attriNum = 4;
	
	tableRec_s.tableID = 3;
	tableRec_s.attriNum = 7;
	
	tableRec_p.tableID = 4;
	tableRec_p.attriNum = 9;
	
	tableRec_c.tableID = 6;
	tableRec_c.attriNum = 8;
	
	tableRec_o.tableID = 7;
	tableRec_o.attriNum = 9;
	
	tableRec_l.tableID = 8;
	tableRec_l.attriNum = 16;
	
	
	ATTRIBUTE_REC attriRec_r[tableRec_r.attriNum];
	ATTRIBUTE_REC attriRec_n[tableRec_n.attriNum];
	ATTRIBUTE_REC attriRec_s[tableRec_s.attriNum];
	ATTRIBUTE_REC attriRec_p[tableRec_p.attriNum];
	ATTRIBUTE_REC attriRec_c[tableRec_c.attriNum];
	ATTRIBUTE_REC attriRec_o[tableRec_o.attriNum];
	ATTRIBUTE_REC attriRec_l[tableRec_l.attriNum];

	AttributeManager AM(env->getEnv());
	
	AM.getForTableID(tableRec_r, attriRec_r);
	AM.getForTableID(tableRec_n, attriRec_n);
	AM.getForTableID(tableRec_s, attriRec_s);
	AM.getForTableID(tableRec_p, attriRec_p);
	AM.getForTableID(tableRec_c, attriRec_c);
	AM.getForTableID(tableRec_o, attriRec_o);
	AM.getForTableID(tableRec_l, attriRec_l);

/* selection1 */
	FixStrPosVal pv1(1,25);
	string str1("AMERICA");
	pv1.setStr(str1);

	ValueNode vn1 = ValueNode(&pv1);
	ColumnRefNode cn1;
	cn1.tableID = 1;
	cn1.attriID = 2;
	AxprNode an1 = AxprNode(EQ, &cn1, &vn1);
	

/* selection2 */

	DatePosVal pv2(1,(unsigned char *)"1995-01-01");
	DatePosVal pv3(1,(unsigned char *)"1996-12-31");
	

	ValueNode vn2 = ValueNode(&pv2);
	ValueNode vn3 = ValueNode(&pv3);
	ColumnRefNode cn2;
	cn2.tableID = 7;
	cn2.attriID = 5;
	AxprNode an2 = AxprNode(GE, &cn2, &vn2);
	AxprNode an3 = AxprNode(LE, &cn2, &vn3);
	AxprNode an4 = AxprNode(AND, &an2, &an3);

/* selection3 */
	VarStrPosVal pv4(1,25);
	string str2("ECONOMY ANODIZED STEEL");
	pv4.set((unsigned char*)str2.c_str());

	ValueNode vn4 = ValueNode(&pv4);
	ColumnRefNode cn3;
	cn3.tableID = 4;
	cn3.attriID = 5;
	AxprNode an5 = AxprNode(EQ, &cn3, &vn4);
	

	
/*Join1*/
	OPERATION_NODE jop1, jop2;
	jop1.tableID = 6;
	jop1.attributeID = 4;
	jop2.tableID = 6;
	jop2.attributeID = 1;
	
	JOIN_OPERATION_NODE jon1;
	jon1.rightNode = jop1;
	jon1.leftNode = jop2;

/*Join2*/
	OPERATION_NODE jop3, jop4;
	jop3.tableID = 7;
	jop3.attributeID = 2;
	jop4.tableID = 7;
	jop4.attributeID = 5;
	
	JOIN_OPERATION_NODE jon2;
	jon2.rightNode = jop3;
	jon2.leftNode = jop4;

/*Join3*/
	OPERATION_NODE jop5, jop6;
	jop5.tableID = 7;
	jop5.attributeID = 5;
	jop6.tableID = 7;
	jop6.attributeID = 1;
	
	JOIN_OPERATION_NODE jon3;
	jon3.rightNode = jop5;
	jon3.leftNode = jop6;

/*Join4*/
	OPERATION_NODE jop7, jop8;
	jop7.tableID = 7;
	jop7.attributeID = 1;
	jop8.tableID = 8;
	jop8.attributeID = 1;
	
	JOIN_OPERATION_NODE jon4;
	jon4.rightNode = jop7;
	jon4.leftNode = jop8;
	
/*Join5*/
	OPERATION_NODE jop9, jop10;
	jop9.tableID = 4;
	jop9.attributeID = 1;
	jop10.tableID = 8;
	jop10.attributeID = 2;
	
	JOIN_OPERATION_NODE jon5;
	jon5.rightNode = jop9;
	jon5.leftNode = jop10;

/*Join6*/
	OPERATION_NODE jop11, jop12;
	jop11.tableID = 3;
	jop11.attributeID = 1;
	jop12.tableID = 8;
	jop12.attributeID = 3;
	
	JOIN_OPERATION_NODE jon6;
	jon6.rightNode = jop11;
	jon6.leftNode = jop12;
	
/* Projection1 */

	OPERATION_NODE pro1[1];
	pro1[0].tableID = 6;
	pro1[0].attributeID = 1;
	
	
/* Projection2 */

	OPERATION_NODE pro2[2];
	pro2[0].tableID = 7;
	pro2[0].attributeID = 1;
	pro2[1].tableID = 7;
	pro2[1].attributeID = 5;
	
/* Projection3 */

	OPERATION_NODE pro3[1];
	pro3[0].tableID = 8;
	pro3[0].attributeID = 2;
	
/* Projection4 */

	OPERATION_NODE pro4[2];
	pro4[0].tableID = 8;
	pro4[0].attributeID = 3;
	pro4[1].tableID = 2;
	pro4[1].attributeID = 2;

/* Projection5 */

	OPERATION_NODE pro5[4];
	pro5[0].tableID = 7;
	pro5[0].attributeID = 5;
	pro5[1].tableID = 2;
	pro5[1].attributeID = 2;
	pro5[2].tableID = 8;
	pro5[2].attributeID = 6;
	pro5[3].tableID = 8;
	pro5[3].attributeID = 7;
	
/* Projection6 */

	OPERATION_NODE pro6[5];
	pro6[0].tableID = 7;
	pro6[0].attributeID = 5;
	pro6[1].tableID = 8;
	pro6[1].attributeID = 2;
	pro6[2].tableID = 8;
	pro6[2].attributeID = 3;
	pro6[3].tableID = 8;
	pro6[3].attributeID = 6;
	pro6[4].tableID = 8;
	pro6[4].attributeID = 7;

/* Projection7 */

	OPERATION_NODE pro7[4];
	pro7[0].tableID = 7;
	pro7[0].attributeID = 5;
	pro7[1].tableID = 8;
	pro7[1].attributeID = 3;
	pro7[2].tableID = 8;
	pro7[2].attributeID = 6;
	pro7[3].tableID = 8;
	pro7[3].attributeID = 7;

/* Projection8 */

	OPERATION_NODE pro8[2];
	pro8[0].tableID = 3;
	pro8[0].attributeID = 1;
	pro8[1].tableID = 2;
	pro8[1].attributeID = 2;

/* Projection9 */

	OPERATION_NODE pro9[4];
	pro9[0].tableID = 2;
	pro9[0].attributeID = 2;
	pro9[1].tableID = 7;
	pro9[1].attributeID = 5;
	pro9[2].tableID = 8;
	pro9[2].attributeID = 6;
	pro9[3].tableID = 8;
	pro9[3].attributeID = 7;

/* Extract */
	OPERATION_NODE ex[1];
	ex[0].tableID = 7;
	ex[0].attributeID = 5;

/* GROUP */
	IntPosVal pv5(1, 1);
	ValueNode vn5 = ValueNode(&pv5);
	ColumnRefNode cn4[2];
	cn4[0].tableID = 8;
	cn4[0].attriID = 6;
	cn4[1].tableID = 8;
	cn4[1].attriID = 7;
	ArithmeticNode arith1(SUB, &vn5, &cn4[1]);
	ArithmeticNode arith2(MUL, &cn4[0], &arith1);
	
	Aggregation *aggre[1];
	aggre[0] = new Sum(&arith2, 2);
	
	
	OPERATION_NODE group[1];
	group[0].tableID = 7;
	group[0].attributeID = 5;

/* Sort 1 */
	OPERATION_NODE so1[1];
	so1[0].tableID = 7;
	so1[0].attributeID = 5;
	so1[0].option = 0;
	
	


	OPERATION_NODE op1;
	op1.tableID = 2;
	op1.attributeID = 3;
	
	OPERATION_NODE op2;
	op2.tableID = 6;
	op2.attributeID = 4;
	
	OPERATION_NODE op3;
	op3.tableID = 7;
	op3.attributeID = 2;
	
	OPERATION_NODE op4;
	op4.tableID = 8;
	op4.attributeID = 1;
	
	OPERATION_NODE op5;
	op5.tableID = 3;
	op5.attributeID = 4;
	
	OPERATION_NODE op6;
	op6.tableID = 2;
	op6.attributeID = 2;
	
	
/* index position */
	
	OPERATION_NODE idx1[1];
	idx1[0].tableID = 7;
	idx1[0].attributeID = 1;
	
/* index position */
	
	OPERATION_NODE idx2[1];
	idx2[0].tableID = 6;
	idx2[0].attributeID = 1;

//===============================================================-


	o1 = new ScanDSM(&db_r_2, &attriRec_r[1], 1);
//	cout << "OK new o1" << endl;
	
	o2 = new SelectBitOut((Node *)&an1 ,(unsigned int)1);
//	cout << "OK new o2" << endl;
	o2->setPreOperator(o1);
	
	o3 = new ScanDSM(&db_r_1, attriRec_r, 1);
//	cout << "OK new o3" << endl;
	
	o4 = new BitFilter(o3, o2);
//	cout << "OK new o4" << endl;
	
	
	o5 = new ScanDSM(&db_n_3, &attriRec_n[2], 1);
//	cout << "OK new o5" << endl;
	
	o6 = new JoinIndex_OneHash(o4, o5); 
//	cout << "OK new o6" << endl;
	
	o7 = new ScanDSM(&db_n_1, &attriRec_n[0], 1);
//	cout << "OK new o7" << endl;
	
	o8 = new ScanFromJI(o7, o6, &op1);
//	cout << "OK new o8" << endl;

	o9 = new ScanDSM(&db_c_4, &attriRec_c[3], 1);
//	cout << "OK new o9" << endl;

	o10 = new JoinIndex_OneHash(o8, o9); 
//	cout << "OK new o10" << endl;
	
	o11 = new ScanDSM(&db_c_1, &attriRec_c[0], 1);
//	cout << "OK new o11" << endl;
	
	o12 = new ScanFromJI(o11, o10, &op2);
//	cout << "OK new o12" << endl;
	
	o13 = new Projection(pro1, 1);
	o13->setPreOperator(o12);
	

/* ======== Nested Loop Join with Index ============ */

	IndexScan *IS2 = new IndexScan((BDBOpe *)sDB2, attriRec_o, 9);
	o14 = new NestedJoin_Index(IS2, o13, idx2);
	//l_partkey, l_suppkey, l_extentdedprice, l_discount, o_orderdate
	//o15 = new Projection(pro6, 5);
	//o15->setPreOperator(o22);
	
/* ======================================================= */
	

	o17 = new Selection((Node *)&an4 ,(unsigned int)2);
//	cout << "OK new o17" << endl;
	o17->setPreOperator(o14);
	

	o21 = new Projection(pro2, 2);
	o21->setPreOperator(o17);
//	cout << "OK new o21" << endl;


/* ======== Nested Loop Join with Index ============ */

	IndexScan *IS1 = new IndexScan((BDBOpe *)sDB1, attriRec_l, 16);
	o22 = new NestedJoin_Index(IS1, o21, idx1);
	//l_partkey, l_suppkey, l_extentdedprice, l_discount, o_orderdate
	o23 = new Projection(pro6, 5);
	o23->setPreOperator(o22);
	
/* ======================================================= */
	
	
	

	o24 = new ScanDSM(&db_p_5, &attriRec_p[4], 1);
//	cout << "OK new o24" << endl;

	o25 = new SelectBitOut((Node *)&an5 ,1);
//	cout << "OK new o25" << endl;
	o25->setPreOperator(o24);
	
	o26 = new ScanDSM(&db_p_1, &attriRec_p[0], 1);
//	cout << "OK new o26" << endl;

	o27 = new BitFilter(o26, o25);
//	cout << "OK new o27" << endl;
	
	
	o29 = new OneSideHashJoin(o27, o23, &jon5, 1); 
//	cout << "OK new o29" << endl;
	
	o30 = new Projection(pro7, 4);
	o30->setPreOperator(o29);
//	cout << "OK new o30" << endl;
	
	
	
	
	o32 = new ScanDSM(&db_n2_1, &attriRec_n[0], 1);
//	cout << "OK new o32" << endl;
	/**/
	o33 = new ScanDSM(&db_n2_2, &attriRec_n[1], 1);
//	cout << "OK new o33" << endl;
	
	o34 = new ScanFromJI(o32, o33, &op6);
//	cout << "OK new o34" << endl;
	/*  */
	o35 = new ScanDSM(&db_s_4, &attriRec_s[3], 1);
//	cout << "OK new o35" << endl;
	
	o36 = new JoinIndex_OneHash(o34, o35); 
//	cout << "OK new o36" << endl;
	
	o37 = new ScanDSM(&db_s_1, &attriRec_s[0], 1);
//	cout << "OK new o37" << endl;
	
	o38 = new ScanFromJI(o37, o36, &op5);
//	cout << "OK new o38" << endl;

	o39 = new Projection(pro8, 2);
	o39->setPreOperator(o38);
	
	
	o40 = new OneSideHashJoin(o39, o30, &jon6,1); 
//	cout << "OK new o40" << endl;
	
	
	
	
	
	
	o41 = new Projection(pro9, 4);
	o41->setPreOperator(o40);
//	cout << "OK new o41" << endl;
	/*l_suppkey, n_name, l_partkey, o_orderdate,*/

	
	o48 = new Extract(ex, true, false, false);
	o48->setPreOperator(o41);
//	cout << "OK new o48" << endl;
	
	o49 = new GroupBy(group, 1, aggre, 1);
	o49->setPreOperator(o48);
//	cout << "OK new o49" << endl;
	
	o50 = new Sort(so1, 1);
	o50->setPreOperator(o49);
//	cout << "OK new o50" << endl;


	o51 = new OutPut(TIME_OUT);
//	cout << "OK new o51" << endl;
	o51->setPreOperator(o50);
	o51->init(env->getEnv());
	cout << "TEST START" << endl;
	
	cout << setprecision(2);
	cout << setiosflags(ios::fixed); 
	o51->exec();
	

}
Exemplo n.º 5
0
int main(){
	chdir("../RunData");
	BDBOpe db_r_1("1.1.DSM");
	BDBOpe db_r_2("1.2.DSM");
	BDBOpe db_n_1("2.1.DSM");
	BDBOpe db_n2_1("2.1.DSM");
	BDBOpe db_n2_2("2.2.DSM");
	BDBOpe db_n_3("2.3.DSM");
	BDBOpe db_s_1("3.1.DSM");
	BDBOpe db_s_4("3.4.DSM");
	BDBOpe db_p_1("4.1.DSM");
	BDBOpe db_p_5("4.5.DSM");
	BDBOpe db_c_1("6.1.DSM");
	BDBOpe db_c_4("6.4.DSM");
	BDBOpe db_o_1("7.1.DSM");
	BDBOpe db_o_2("7.2.DSM");
	BDBOpe db_o_5("7.5.DSM");
	BDBOpe db_l_1("8.1.DSM");
	BDBOpe db_l_2("8.2.DSM");
	BDBOpe db_l_3("8.3.DSM");
	BDBOpe db_l_6("8.6.DSM");
	BDBOpe db_l_7("8.7.DSM");

	Operator *o1, *o2, *o3, *o4, *o5, *o6, *o7, *o8, *o9, *o10;
	Operator *o11, *o12, *o13, *o14, *o15, *o16, *o17, *o18, *o19, *o20;
	Operator *o21, *o22, *o23, *o24, *o25, *o26, *o27, *o28, *o29, *o30;
	Operator *o31, *o32, *o33, *o34, *o35, *o36, *o37, *o38, *o39, *o40;
	Operator *o41, *o42, *o43, *o44, *o45, *o46, *o47, *o48, *o49, *o50, *o51;
	db_r_1.open();
	db_r_2.open();
	db_n_1.open();
	db_n2_1.open();
	db_n2_2.open();
	db_n_3.open();
	db_s_1.open();
	db_s_4.open();
	db_p_1.open();
	db_p_5.open();
	db_c_1.open();
	db_c_4.open();
	db_o_1.open();
	db_o_2.open();
	db_o_5.open();
	db_l_1.open();
	db_l_2.open();
	db_l_3.open();
	db_l_6.open();
	db_l_7.open();
	
	TABLE_REC tableRec_r;
	TABLE_REC tableRec_n;
	TABLE_REC tableRec_s;
	TABLE_REC tableRec_p;
	TABLE_REC tableRec_c;
	TABLE_REC tableRec_o;
	TABLE_REC tableRec_l;

	tableRec_r.tableID = 1;
	tableRec_r.attriNum = 3;

	tableRec_n.tableID = 2;
	tableRec_n.attriNum = 4;
	
	tableRec_s.tableID = 3;
	tableRec_s.attriNum = 7;
	
	tableRec_p.tableID = 4;
	tableRec_p.attriNum = 9;
	
	tableRec_c.tableID = 6;
	tableRec_c.attriNum = 8;
	
	tableRec_o.tableID = 7;
	tableRec_o.attriNum = 9;
	
	tableRec_l.tableID = 8;
	tableRec_l.attriNum = 16;
	
	
	ATTRIBUTE_REC attriRec_r[tableRec_r.attriNum];
	ATTRIBUTE_REC attriRec_n[tableRec_n.attriNum];
	ATTRIBUTE_REC attriRec_s[tableRec_s.attriNum];
	ATTRIBUTE_REC attriRec_p[tableRec_p.attriNum];
	ATTRIBUTE_REC attriRec_c[tableRec_c.attriNum];
	ATTRIBUTE_REC attriRec_o[tableRec_o.attriNum];
	ATTRIBUTE_REC attriRec_l[tableRec_l.attriNum];

	AttributeManager AM_r;
	AttributeManager AM_n;
	AttributeManager AM_s;
	AttributeManager AM_p;
	AttributeManager AM_c;
	AttributeManager AM_o;
	AttributeManager AM_l;
	
	AM_r.getForTableID(tableRec_r, attriRec_r);
	for(int i=0 ; i < (int)tableRec_r.attriNum ; i++){
		cout << attriRec_r[i].attributeName << endl;
	}
	AM_n.getForTableID(tableRec_n, attriRec_n);
	for(int i=0 ; i < (int)tableRec_n.attriNum ; i++){
		cout << attriRec_n[i].attributeName << endl;
	}
	AM_s.getForTableID(tableRec_s, attriRec_s);
	for(int i=0 ; i < (int)tableRec_s.attriNum ; i++){
		cout << attriRec_s[i].attributeName << endl;
	}
	AM_p.getForTableID(tableRec_p, attriRec_p);
	for(int i=0 ; i < (int)tableRec_p.attriNum ; i++){
		cout << attriRec_p[i].attributeName << endl;
	}
	AM_c.getForTableID(tableRec_c, attriRec_c);
	for(int i=0 ; i < (int)tableRec_c.attriNum ; i++){
		cout << attriRec_c[i].attributeName << endl;
	}
	AM_o.getForTableID(tableRec_o, attriRec_o);
	for(int i=0 ; i < (int)tableRec_o.attriNum ; i++){
		cout << attriRec_o[i].attributeName << endl;
	}
	AM_l.getForTableID(tableRec_l, attriRec_l);
	for(int i=0 ; i < (int)tableRec_l.attriNum ; i++){
		cout << attriRec_l[i].attributeName << endl;
	}

/* selection1 */
	FixStrPosVal pv1(1,25);
	string str1("AMERICA");
	pv1.setStr(str1);

	ValueNode vn1 = ValueNode(&pv1);
	ColumnRefNode cn1;
	cn1.tableID = 1;
	cn1.attriID = 2;
	AxprNode an1 = AxprNode(EQ, &cn1, &vn1);
	

/* selection2 */

	DatePosVal pv2(1,(unsigned char *)"1995-01-01");
	DatePosVal pv3(1,(unsigned char *)"1996-12-31");
	

	ValueNode vn2 = ValueNode(&pv2);
	ValueNode vn3 = ValueNode(&pv3);
	ColumnRefNode cn2;
	cn2.tableID = 7;
	cn2.attriID = 5;
	AxprNode an2 = AxprNode(GE, &cn2, &vn2);
	AxprNode an3 = AxprNode(LE, &cn2, &vn3);
	AxprNode an4 = AxprNode(AND, &an2, &an3);

/* selection3 */
	VarStrPosVal pv4(1,25);
	string str2("ECONOMY ANODIZED STEEL");
	pv4.set((unsigned char*)str2.c_str());

	ValueNode vn4 = ValueNode(&pv4);
	ColumnRefNode cn3;
	cn3.tableID = 4;
	cn3.attriID = 5;
	AxprNode an5 = AxprNode(EQ, &cn3, &vn4);
	

	
/*Join1*/
	OPERATION_NODE jop1, jop2;
	jop1.tableID = 6;
	jop1.attributeID = 4;
	jop2.tableID = 6;
	jop2.attributeID = 1;
	
	JOIN_OPERATION_NODE jon1;
	jon1.rightNode = jop1;
	jon1.leftNode = jop2;

/*Join2*/
	OPERATION_NODE jop3, jop4;
	jop3.tableID = 7;
	jop3.attributeID = 2;
	jop4.tableID = 7;
	jop4.attributeID = 5;
	
	JOIN_OPERATION_NODE jon2;
	jon2.rightNode = jop3;
	jon2.leftNode = jop4;

/*Join3*/
	OPERATION_NODE jop5, jop6;
	jop5.tableID = 7;
	jop5.attributeID = 5;
	jop6.tableID = 7;
	jop6.attributeID = 1;
	
	JOIN_OPERATION_NODE jon3;
	jon3.rightNode = jop5;
	jon3.leftNode = jop6;

/*Join4*/
	OPERATION_NODE jop7, jop8;
	jop7.tableID = 7;
	jop7.attributeID = 1;
	jop8.tableID = 8;
	jop8.attributeID = 1;
	
	JOIN_OPERATION_NODE jon4;
	jon4.rightNode = jop7;
	jon4.leftNode = jop8;
	
/*Join5*/
	OPERATION_NODE jop9, jop10;
	jop9.tableID = 4;
	jop9.attributeID = 1;
	jop10.tableID = 8;
	jop10.attributeID = 2;
	
	JOIN_OPERATION_NODE jon5;
	jon5.rightNode = jop9;
	jon5.leftNode = jop10;
	
/* Projection1 */

	OPERATION_NODE pro1[1];
	pro1[0].tableID = 6;
	pro1[0].attributeID = 1;
	
	
/* Projection2 */

	OPERATION_NODE pro2[2];
	pro2[0].tableID = 7;
	pro2[0].attributeID = 1;
	pro2[1].tableID = 7;
	pro2[1].attributeID = 5;
	
/* Projection3 */

	OPERATION_NODE pro3[1];
	pro3[0].tableID = 8;
	pro3[0].attributeID = 2;
	
/* Projection4 */

	OPERATION_NODE pro4[2];
	pro4[0].tableID = 8;
	pro4[0].attributeID = 3;
	pro4[1].tableID = 2;
	pro4[1].attributeID = 2;

/* Projection5 */

	OPERATION_NODE pro5[4];
	pro5[0].tableID = 7;
	pro5[0].attributeID = 5;
	pro5[1].tableID = 2;
	pro5[1].attributeID = 2;
	pro5[2].tableID = 8;
	pro5[2].attributeID = 6;
	pro5[3].tableID = 8;
	pro5[3].attributeID = 7;

/* Extract */
	OPERATION_NODE ex[1];
	ex[0].tableID = 7;
	ex[0].attributeID = 5;

/* GROUP */
	IntPosVal pv5(1, 1);
	ValueNode vn5 = ValueNode(&pv5);
	ColumnRefNode cn4[2];
	cn4[0].tableID = 8;
	cn4[0].attriID = 6;
	cn4[1].tableID = 8;
	cn4[1].attriID = 7;
	ArithmeticNode arith1(SUB, &vn5, &cn4[1]);
	ArithmeticNode arith2(MUL, &cn4[0], &arith1);
	
	Aggregation *aggre[1];
	aggre[0] = new Sum(&arith2, 2);
	
	
	OPERATION_NODE group[1];
	group[0].tableID = 7;
	group[0].attributeID = 5;

/* Sort 1 */
	OPERATION_NODE so1[1];
	so1[0].tableID = 7;
	so1[0].attributeID = 5;
	so1[0].option = 0;
	
	


	OPERATION_NODE op1;
	op1.tableID = 2;
	op1.attributeID = 3;
	
	OPERATION_NODE op2;
	op2.tableID = 6;
	op2.attributeID = 4;
	
	OPERATION_NODE op3;
	op3.tableID = 7;
	op3.attributeID = 2;
	
	OPERATION_NODE op4;
	op4.tableID = 8;
	op4.attributeID = 1;
	
	OPERATION_NODE op5;
	op5.tableID = 3;
	op5.attributeID = 4;
	
	OPERATION_NODE op6;
	op6.tableID = 2;
	op6.attributeID = 2;
	
	


	o1 = new ScanDSM(&db_r_2, &attriRec_r[1], 1);
	cout << "OK new o1" << endl;
	
	o2 = new SelectBitOut((Node *)&an1 ,(unsigned int)1);
	cout << "OK new o2" << endl;
	o2->setPreOperator(o1);
	
	o3 = new ScanDSM(&db_r_1, attriRec_r, 1);
	cout << "OK new o3" << endl;
	
	o4 = new BitFilter(o3, o2);
	cout << "OK new o4" << endl;
	
	
	o5 = new ScanDSM(&db_n_3, &attriRec_n[2], 1);
	cout << "OK new o5" << endl;
	
	o6 = new JoinIndex_OneHash(o4, o5); 
	cout << "OK new o6" << endl;
	
	o7 = new ScanDSM(&db_n_1, &attriRec_n[0], 1);
	cout << "OK new o7" << endl;
	
	o8 = new ScanFromJI(o7, o6, &op1);
	cout << "OK new o8" << endl;

	o9 = new ScanDSM(&db_c_4, &attriRec_c[3], 1);
	cout << "OK new o9" << endl;

	o10 = new JoinIndex_OneHash(o8, o9); 
	cout << "OK new o10" << endl;
	
	o11 = new ScanDSM(&db_c_1, &attriRec_c[0], 1);
	cout << "OK new o11" << endl;
	
	o12 = new ScanFromJI(o11, o10, &op2);
	cout << "OK new o8" << endl;
	
	o13 = new Projection(pro1, 1);
	o13->setPreOperator(o12);
	
	
	
	o14 = new ScanDSM(&db_o_2, &attriRec_o[1], 1);
	cout << "OK new o14" << endl;
	
	o15 = new JoinIndex_OneHash(o13, o14); 
	cout << "OK new o15" << endl;
	

	o16 = new ScanDSM(&db_o_5, &attriRec_o[4], 1);
	cout << "OK new o16" << endl;

	o17 = new Selection((Node *)&an4 ,(unsigned int)2);
	cout << "OK new o17" << endl;
	o17->setPreOperator(o16);
	
	
	o18 = new ScanFromJI(o17, o15, &op3);
	cout << "OK new o18" << endl;
	
	o19 = new ScanDSM(&db_o_1, &attriRec_o[0], 1);
	cout << "OK new o19" << endl;
	
	o20 = new ScanFromJI(o19, o18, &op3);
	cout << "OK new o20" << endl;

	o21 = new Projection(pro2, 2);
	o21->setPreOperator(o20);
	cout << "OK new o21" << endl;
	
	o22 = new ScanDSM(&db_l_1, &attriRec_l[0], 1);
	cout << "OK new o22" << endl;
	/*o_orderkey, o_orderdate, l_orderkey*/
	o23 = new JoinIndex_OneHash(o21, o22, &jon4); 
	cout << "OK new o23" << endl;
	
	

	o24 = new ScanDSM(&db_p_5, &attriRec_p[4], 1);
	cout << "OK new o24" << endl;

	o25 = new SelectBitOut((Node *)&an5 ,1);
	cout << "OK new o25" << endl;
	o25->setPreOperator(o24);
	
	o26 = new ScanDSM(&db_p_1, &attriRec_p[0], 1);
	cout << "OK new o26" << endl;

	o27 = new BitFilter(o26, o25);
	cout << "OK new o27" << endl;
	
	o28 = new ScanDSM(&db_l_2, &attriRec_l[1], 1);
	cout << "OK new o28" << endl;
	
	o29 = new JoinIndex_OneHash(o27, o28, &jon5); 
	cout << "OK new o29" << endl;
	
	o30 = new Projection(pro3, 1);
	o30->setPreOperator(o29);
	cout << "OK new o30" << endl;
	/*l_partkey, o_orderkey, o_orderdate, l_orderkey*/
	o31 = new ScanFromJI(o30, o23, &op4);
	cout << "OK new o31" << endl;	
	
	
	
	
	o32 = new ScanDSM(&db_n2_1, &attriRec_n[0], 1);
	cout << "OK new o32" << endl;
	/**/
	o33 = new ScanDSM(&db_n2_2, &attriRec_n[1], 1);
	cout << "OK new o33" << endl;
	
	o34 = new ScanFromJI(o32, o33, &op6);
	cout << "OK new o34" << endl;
	/*  */
	o35 = new ScanDSM(&db_s_4, &attriRec_s[3], 1);
	cout << "OK new o35" << endl;
	
	o36 = new JoinIndex_OneHash(o34, o35); 
	cout << "OK new o36" << endl;
	
	o37 = new ScanDSM(&db_s_1, &attriRec_s[0], 1);
	cout << "OK new o37" << endl;
	
	o38 = new ScanFromJI(o37, o36, &op5);
	cout << "OK new o38" << endl;
	
	o39 = new ScanDSM(&db_l_3, &attriRec_l[2], 1);
	cout << "OK new o39" << endl;
	
	o40 = new JoinIndex_OneHash(o38, o39); 
	cout << "OK new o40" << endl;
	
	o41 = new Projection(pro4, 2);
	o41->setPreOperator(o40);
	cout << "OK new o41" << endl;
	/*l_suppkey, n_name, l_partkey, o_orderkey, o_orderdate, l_orderkey*/
	o42 = new ScanFromJI(o41, o31, &op4);
	cout << "OK new o42" << endl;
	
	
	o43 = new ScanDSM(&db_l_6, &attriRec_l[5], 1);
	cout << "OK new o43" << endl;
	/*l_extendedproce, l_suppkey, n_name, l_partkey, o_orderkey, o_orderdate, l_orderkey*/
	o44 = new ScanFromJI(o43, o42, &op4);
	cout << "OK new o44" << endl;


	o45 = new ScanDSM(&db_l_7, &attriRec_l[6], 1);
	cout << "OK new o45" << endl;
	/*l_discount, l_extendedproce, l_suppkey, n_name, l_partkey, o_orderkey, o_orderdate, l_orderkey*/
	o46 = new ScanFromJI(o45, o44, &op4);
	cout << "OK new o46" << endl;

	o47 = new Projection(pro5, 4);
	o47->setPreOperator(o46);
	
	o48 = new Extract(ex, true, false, false);
	o48->setPreOperator(o47);
	cout << "OK new o48" << endl;
	
	o49 = new GroupBy(group, 1, aggre, 1);
	o49->setPreOperator(o48);
	cout << "OK new o49" << endl;
	
	o50 = new Sort(so1, 1);
	o50->setPreOperator(o49);
	cout << "OK new o50" << endl;


	o51 = new OutPut(STD_OUT);
	cout << "OK new o51" << endl;
	o51->setPreOperator(o50);
	o51->init();
	cout << "TEST START" << endl;
	o51->exec();
	

}
Exemplo n.º 6
0
int main(){
	chdir(QUERY_DATA_PATH);
	EnvDB *env = new EnvDB();
	env->open();
	
	BDBOpe db_l_5(env->getEnv(), "8.5.DSM");
	BDBOpe db_l_6(env->getEnv(), "8.6.DSM");
	BDBOpe db_l_7(env->getEnv(), "8.7.DSM");
	BDBOpe db_l_11(env->getEnv(), "8.11.DSM");
	
	Operator *o1, *o2, *o3, *o4, *o5, *o6, *o7, *o8, *o9, *o10;
	Operator *o11, *o12;
	
	db_l_5.open();
	db_l_6.open();
	db_l_7.open();
	db_l_11.open();
	
	TABLE_REC tableRec_l;
	tableRec_l.tableID = 8;
	tableRec_l.attriNum = 16;
	ATTRIBUTE_REC attriRec_l[tableRec_l.attriNum];
	AttributeManager AM(env->getEnv());
	
	AM.getForTableID(tableRec_l, attriRec_l);
	
/* selection1 */

	DatePosVal pv1(1,(unsigned char *)"1994-01-01");

	ValueNode vn1 = ValueNode(&pv1);
	ColumnRefNode cn1;
	cn1.tableID = 8;
	cn1.attriID = 11;
	AxprNode an1 = AxprNode(GE, &cn1, &vn1);
	


	DatePosVal pv2(1,(unsigned char *)"1995-01-01");

	ValueNode vn2 = ValueNode(&pv2);
	ColumnRefNode cn2;
	cn2.tableID = 8;
	cn2.attriID = 11;
	AxprNode an2 = AxprNode(LT, &cn2, &vn2);
	
	AxprNode an7 = AxprNode(AND, &an1, &an2);
	
/* selection3 */

	FloatPosVal pv3(1, 0.06-0.01);
	FloatPosVal pv4(1, 0.06+0.01);
	

	ValueNode vn3 = ValueNode(&pv3);
	ValueNode vn4 = ValueNode(&pv4);
	ColumnRefNode cn3;
	cn3.tableID = 8;
	cn3.attriID = 7;
	AxprNode an3 = AxprNode(GE, &cn3, &vn3);
	AxprNode an4 = AxprNode(LE, &cn3, &vn4);
	AxprNode an5 = AxprNode(AND, &an3, &an4);
	
/* selection4 */

	FloatPosVal pv5(1, 24);

	ValueNode vn5 = ValueNode(&pv5);
	ColumnRefNode cn4;
	cn4.tableID = 8;
	cn4.attriID = 5;
	AxprNode an6 = AxprNode(LT, &cn4, &vn5);
	
	
/* AGGREGATION */
	ColumnRefNode cn5[2];
	cn5[0].tableID = 8;
	cn5[0].attriID = 6;
	cn5[1].tableID = 8;
	cn5[1].attriID = 7;
	ArithmeticNode arith1(MUL, &cn5[0], &cn5[1]);
	
	Aggregation *aggre[1];
	aggre[0] = new Sum(&arith1, 2);
	
	
	
	OPERATION_NODE op1;
	op1.tableID = 8;
	op1.attributeID = 7;
	
	
	
	o1 = new ScanDSM(&db_l_11, &attriRec_l[10], 1);
//	cout << "OK new o1" << endl;
	
	o2 = new SelectBitOut((Node *)&an7 ,(unsigned int)2);
//	cout << "OK new o2" << endl;
	o2->setPreOperator(o1);
	
	o3 = new ScanDSM(&db_l_5, &attriRec_l[4], 1);
//	cout << "OK new o3" << endl;
	
	o4 = new BitFilter(o3, o2);
//	cout << "OK new o4" << endl;
	
	o5 = new Selection((Node *)&an6 ,(unsigned int)1);
//	cout << "OK new o5" << endl;
	o5->setPreOperator(o4);
	
	o6 = new ScanDSM(&db_l_7, &attriRec_l[6], 1);
//	cout << "OK new o6" << endl;

	o7 = new Selection((Node *)&an5 ,(unsigned int)2);
//	cout << "OK new o7" << endl;
	o7->setPreOperator(o6);
	
	o8 = new ScanFromJI(o5, o7, &op1);
//	cout << "OK new o8" << endl;
	
	o9 = new ScanDSM(&db_l_6, &attriRec_l[5], 1);
//	cout << "OK new o9" << endl;
	
	o10 = new ScanFromJI(o9, o8, &op1);
//	cout << "OK new o10" << endl;
	
	o11 = new AggreOut(aggre, 1);
	o11->setPreOperator(o10);
//	cout << "OK new o11" << endl;
	
	o12 = new OutPut(STD_OUT);
//	cout << "OK new o12" << endl;
	o12->setPreOperator(o11);
	o12->init(env->getEnv());
	cout << "TEST START" << endl;
	
	cout << setprecision(6);
	cout << setiosflags(ios::fixed); 
	o12->exec();
}