public static void computePartition(String Query,int counter)	// SELECT, DELETE
	{
		/* zorn start */
		int j;
		ArrayList<Integer> storingDotPosition = new ArrayList<Integer>();
		ArrayList<Integer> storingQuestionMarkPosition = new ArrayList<Integer>();
		ArrayList<Integer> storingspacePosition=new ArrayList<Integer>();

		System.out.println("*******************Proceedure Partition Analyzation*******************************");
		System.out.println("Input Query::-"+Query);
		//Select u.* from User u, Friendship f where f.inviteeId=? and f.ReqId=u.userid and    f.status=confirmed

		String[] splits = Query.split("where");
		System.out.println("splits.size: " + splits.length);

		System.out.println("Line"+splits[0]);
		System.out.println("Line"+splits[1]);

		String[] splits1 = splits[0].split("from");

		printIndexes(splits[1], '.',storingDotPosition);
		printIndexes(splits[1], '?',storingQuestionMarkPosition);
		printIndexes(splits[0], ' ',storingspacePosition);
		
		/* zorn added */
		
		// splits[0] : "SELECT u.* from USER u, PENDFRIENDSHIP f" 
		// splits[1] : " f.InviteeID=? AND u.UserID = f.inviteeID"
		// splits1[0] : "SELECT u.*" 
		// splits1[1] : " USER u, PENDFRIENDSHIP f "
		// splits1[0] from splits1[1] where splits[1]

		// parsing query type	(SELECT, DELETE) 
		String querySplit[] = splits1[0].trim().split("\\s+");
		String queryType = querySplit[0];
		
		// parsing table	(hash map, u = user)
		tableHash = new HashMap<String, String>();
		String tableSplit[] = splits1[1].trim().replace(',', ' ').split("\\s+");
		for(j = 0; j < tableSplit.length; j += 2)
			tableHash.put(tableSplit[j+1], tableSplit[j]);
		if(j != tableSplit.length)
			System.err.println("ERROR parsing table: Check AGAIN this input: " + Query);
		
		// predicate 
		String linkEqual = splits[1].replaceAll("\\s*=\\s*", "=");
		String prediSplit[] = linkEqual.trim().split("\\s+");
		String equalSplit[] = {};
		int addCnt = 0;		// count how many new columns added
		questionTableSet.clear();
		for(j = 0; j < prediSplit.length; j++){
			if(!prediSplit[j].contains("."))
				continue;	// AND, OR, LIMIT etc.
			
			equalSplit = prediSplit[j].split("=");	// at most has 2 split
			if(equalSplit.length <= 1){
				parsingAdd(counter, false, queryType, equalSplit[0]);
				addCnt++;
				continue;
			}
			
			if(equalSplit[0].contains("?")){
				parsingAdd(counter, true, queryType, equalSplit[1]);
				addCnt++;
			}
			else if(equalSplit[1].contains("?")){
				parsingAdd(counter, true, queryType, equalSplit[0]);
				addCnt++;
			}
			else{
				parsingAdd(counter, false, queryType, equalSplit[0]);
				parsingAdd(counter, false, queryType, equalSplit[1]);
				addCnt += 2;
			}
			clearQuestionMarkAttr(addCnt);	// remove columns with the same table name
		}
		
		/* zorn hide
		System.out.println("****************Dot Position Stored Display Logic*************");
		for(int i=0;i<storingDotPosition.size();i++)
		{
			System.out.println("Values"+storingDotPosition.get(i));
		}
		System.out.println("****************Dot Position Stored Display Logic*************");


		System.out.println("****************Question Mark Position Stored Display Logic*************");
		for(int i=0;i<storingQuestionMarkPosition.size();i++)
		{
			System.out.println("Values"+storingQuestionMarkPosition.get(i));
		}
		System.out.println("****************Question Mark Position Stored Display Logic*************");

		System.out.println("****************Printing values between . and ? Putting Attribute Names and Table Names*************");
		String result="";
		String QueryName="";
		int storeIndex=0;

		for(int i=0;i<storingQuestionMarkPosition.size();i++)
		{
			//start=
			result=splits[1].substring(Integer.parseInt(storingDotPosition.get(i).toString())+1,Integer.parseInt(storingQuestionMarkPosition.get(i).toString())-1);
			AttributeNames.add(result);
			System.out.println("Attribute "+AttributeNames.get(i).toString());
			result=splits[1].substring(Integer.parseInt(storingDotPosition.get(i).toString())-1,Integer.parseInt(storingDotPosition.get(i).toString()));
			System.out.println("Result "+result);
			//store=result[0];
			System.out.println("spilits[1]"+splits1[1]);
			printIndexes(splits1[1],result.charAt(0),storingTableposition);
			System.out.println("Table Position Values:-"+storingTableposition.get(i));
			for(int k=Integer.parseInt(storingTableposition.get(i).toString())-2;k>=0;k--)
			{
				if(splits1[1].charAt(k)==' ')
				{
					storeIndex=k+1;
					break;
				}
			}

			QueryName=splits[0].substring(0,Integer.parseInt(storingspacePosition.get(0).toString()));
			QueryNames.add(QueryName);
			System.out.println("Query"+QueryNames.get(i).toString());
			TableNames.add(splits1[1].substring(storeIndex,Integer.parseInt(storingTableposition.get(i).toString())-1));
			System.out.println("Table"+TableNames.get(i).toString());
			ActionNames.add(workloadExtractor[counter].getAction());
			FrequencyNames.add(workloadExtractor[counter].getFrequency());


		}
		for(int i=0;i<AttributeNames.size();i++)
		{
			System.out.println("splits1"+splits1[1]);
			System.out.println("Result:-"+result);
			System.out.println("Attribute Name Values:-"+AttributeNames.get(i));
			System.out.println("Table Name Values:-"+TableNames.get(i));
		}
		for(int i=0;i<QueryNames.size();i++)
		{
			//System.out.println("Result:-"+result);
			System.out.println("Query Name Values:-"+QueryNames.get(i));
		}

		System.out.println("****************Printing values between . and ? Putting Attribute Names and Table Names*************");



		System.out.println("*******************Proceedure Partition Analyzation*******************************");
		*/
	}