def print_field_assignment(roots, stats_file, args):
    cond_list = args['prefix'][:]
    fields = util.collectAllTags(roots, cond_list)
    print "fields = "
    print fields
    field_const = []
    field_funcdep = []
    field_no_input = []
    data = {}
    for f in fields:
        cond_list = args['prefix'][:]
        cond_list.append(f)
        r = util.calculateAllActions(roots, cond_list, to_float=False)
        only_from_const = True
        only_from_otherq = True
        for k in r:
            if k != None and ("query" in k or "util_func" in k
                              or "user_input" in k):
                only_from_const = False
                break
        for k in r:
            if k != None and ("user_input" in k or "util_func" in k
                              or "const" in k):
                only_from_otherq = False
                break
        if only_from_const:
            field_const.append(f)
        if only_from_otherq:
            field_funcdep.append(f)
        uses_user_input = False
        for k in r:
            if k != None and "user_input" in k:
                uses_user_input = True
                break
        if uses_user_input == False:
            field_no_input.append(f)

    for f in args['tableFields']:
        if f not in fields:
            field_no_input.append(f)
            if "created_at" not in f and "updated_at" not in f and "created_on" not in f and "updated_on" not in f:
                chs = f.split(".")
                if chs[1] != "id":
                    field_const.append(f)

    stats_file.write("\t<fieldOnlyConst>\n")
    stats_file.write("\t\t<onlyConst>%d</onlyConst>\n" % len(field_const))
    stats_file.write("\t\t<onlyOtherQuery>%d</onlyOtherQuery>\n" %
                     len(field_funcdep))
    stats_file.write("\t\t<otherWithoutInput>%d</otherWithoutInput>\n" %
                     (len(field_no_input) - len(field_const)))
    stats_file.write("\t\t<hasInput>%d</hasInput>\n" %
                     (len(args['tableFields']) - len(field_no_input)))
    stats_file.write("\t</fieldOnlyConst>\n")

    stats_file.write("\t<fieldNoInput>\n")
    stats_file.write("\t\t<noInput>%d</noInput>\n" % len(field_no_input))
    stats_file.write("\t\t<hasInput>%d</hasInput>\n" %
                     (len(args['tableFields']) - len(field_no_input)))
    stats_file.write("\t</fieldNoInput>\n")
Exemplo n.º 2
0
def print_field_assignment(roots, stats_file, args):
	cond_list = args['prefix'][:]
	fields = util.collectAllTags(roots, cond_list)
	print "fields = "
	print fields
	field_const = []
	field_funcdep = []
	field_no_input = []
	data = {}
	for f in fields:
		cond_list = args['prefix'][:]
		cond_list.append(f)
		r = util.calculateAllActions(roots, cond_list, to_float=False)
		only_from_const = True
		only_from_otherq = True
		for k in r:
			if k != None and ("query" in k or "util_func" in k or "user_input" in k):
				only_from_const = False
				break
		for k in r:
			if k != None and ("user_input" in k or "util_func" in k or "const" in k):
				only_from_otherq = False
				break
		if only_from_const:
			field_const.append(f)
		if only_from_otherq:
			field_funcdep.append(f)
		uses_user_input = False
		for k in r:
			if k != None and "user_input" in k:
				uses_user_input = True
				break
		if uses_user_input == False:
			field_no_input.append(f)
	
	for f in args['tableFields']:
		if f not in fields:
			field_no_input.append(f)
			if "created_at" not in f and "updated_at" not in f and "created_on" not in f and "updated_on" not in f:
				chs = f.split(".")
				if chs[1] != "id":
					field_const.append(f)

	stats_file.write("\t<fieldOnlyConst>\n")
	stats_file.write("\t\t<onlyConst>%d</onlyConst>\n"%len(field_const))
	stats_file.write("\t\t<onlyOtherQuery>%d</onlyOtherQuery>\n"%len(field_funcdep))
	stats_file.write("\t\t<otherWithoutInput>%d</otherWithoutInput>\n"%(len(field_no_input)-len(field_const)))
	stats_file.write("\t\t<hasInput>%d</hasInput>\n"%(len(args['tableFields'])-len(field_no_input)))
	stats_file.write("\t</fieldOnlyConst>\n")

	stats_file.write("\t<fieldNoInput>\n")
	stats_file.write("\t\t<noInput>%d</noInput>\n"%len(field_no_input))
	stats_file.write("\t\t<hasInput>%d</hasInput>\n"%(len(args['tableFields'])-len(field_no_input)))
	stats_file.write("\t</fieldNoInput>\n")
Exemplo n.º 3
0
def print_redundant_table(roots, stats_file, args):
    cond_list = args['prefix'][:]
    tables = util.collectAllTags(roots, cond_list)
    data = {}
    print tables
    for t in tables:
        cond_list = args['prefix'][:]
        cond_list.append(t)
        r = util.calculateAllActions(roots, cond_list, to_float=False)
        data[t] = len(r)

    stats_file.write("\t<redundantTable>\n")
    for k, v in data.items():
        stats_file.write("\t\t<%s>%d</%s>\n" % (k, v, k))
    stats_file.write("\t</redundantTable>\n")
Exemplo n.º 4
0
def print_redundant_table(roots, stats_file, args):
	cond_list = args['prefix'][:]
	tables = util.collectAllTags(roots, cond_list)	
	data = {}
	print tables
	for t in tables:
		cond_list = args['prefix'][:]
		cond_list.append(t)
		r = util.calculateAllActions(roots, cond_list, to_float=False)
		data[t] = len(r)

	stats_file.write("\t<redundantTable>\n")
	for k,v in data.items():
		stats_file.write("\t\t<%s>%d</%s>\n"%(k,v,k))
	stats_file.write("\t</redundantTable>\n")
Exemplo n.º 5
0
def print_branch_on_query_stats(roots, stats_file, args):
    data = {}
    tags = []
    cond_list = args['prefix'][:]
    tags = util.collectAllTags(roots, cond_list)
    print tags
    for t in tags:
        cond_list = args['prefix'][:]
        cond_list.append(t)
        r = util.calculateAllActions(roots, cond_list)
        data[t] = sum(r)  #util.getAverage(r)

    stats_file.write("\t<branchOnQueryType>\n")
    for k, v in data.items():
        stats_file.write("\t\t<%s>%f</%s>\n" % (k, v, k))
    stats_file.write("\t</branchOnQueryType>\n")
Exemplo n.º 6
0
def print_branch_on_query_stats(roots, stats_file, args):
	data = {}
	tags = []
	cond_list = args['prefix'][:]
	tags = util.collectAllTags(roots, cond_list)
	print tags
	for t in tags:
		cond_list = args['prefix'][:]
		cond_list.append(t)
		r = util.calculateAllActions(roots, cond_list)
		data[t] = sum(r)#util.getAverage(r)

	stats_file.write("\t<branchOnQueryType>\n")
	for k,v in data.items():
		stats_file.write("\t\t<%s>%f</%s>\n"%(k,v,k))
	stats_file.write("\t</branchOnQueryType>\n")