diff --git a/relational/optimizations.py b/relational/optimizations.py index 3b1ee38..3089312 100644 --- a/relational/optimizations.py +++ b/relational/optimizations.py @@ -289,10 +289,7 @@ def futile_renames(n): # Scans dictionary to locate things like "a->b,b->c" and replace them # with "a->c" for key in list(_vars.keys()): - try: - value = _vars[key] - except: - value = None + value = _vars.get(key) if key == value: _vars.pop(value) # Removes the unused one # Reset prop var @@ -332,10 +329,7 @@ def subsequent_renames(n): # Scans dictionary to locate things like "a->b,b->c" and replace them # with "a->c" for key in list(_vars.keys()): - try: - value = _vars[key] - except: - value = None + value = _vars.get(key) if value in _vars.keys(): if _vars[value] != key: # Double rename on attribute @@ -593,8 +587,7 @@ def selection_and_product(n, rels): n.child.right = r_node while len(right) > 0: c = right.pop(0) - for i in c: - r_node.prop += i + ' ' + r_node.prop += ' '.join(c) if len(right) > 0: r_node.prop += ' and ' if '(' in r_node.prop: @@ -604,8 +597,7 @@ def selection_and_product(n, rels): if len(both) != 0: while len(both) > 0: c = both.pop(0) - for i in c: - n.prop += i + ' ' + n.prop += ' '.join(c) if len(both) > 0: n.prop += ' and ' if '(' in n.prop: @@ -616,8 +608,17 @@ def selection_and_product(n, rels): return changes + recoursive_scan(selection_and_product, n, rels) general_optimizations = [ - duplicated_select, down_to_unions_subtractions_intersections, duplicated_projection, selection_inside_projection, - subsequent_renames, swap_rename_select, futile_union_intersection_subtraction, swap_union_renames, swap_rename_projection, select_union_intersect_subtract] + duplicated_select, + down_to_unions_subtractions_intersections, + duplicated_projection, + selection_inside_projection, + subsequent_renames, + swap_rename_select, + futile_union_intersection_subtraction, + swap_union_renames, + swap_rename_projection, + select_union_intersect_subtract +] specific_optimizations = [selection_and_product] if __name__ == "__main__":