From 17410a0b190eebb2b3561f226f1253d6e340bc1d Mon Sep 17 00:00:00 2001 From: Salvo 'LtWorf' Tomaselli Date: Sun, 3 Jan 2016 16:55:10 +0100 Subject: [PATCH] Styled code --- relational/optimizations.py | 47 +++++++++++++++---------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/relational/optimizations.py b/relational/optimizations.py index e53b5e0..62478f0 100644 --- a/relational/optimizations.py +++ b/relational/optimizations.py @@ -156,7 +156,9 @@ def futile_union_intersection_subtraction(n): replace_node(n, n.right) # Subtraction and selection of the same thing - elif (n.name == DIFFERENCE and (n.right.name == SELECTION and n.right.child == n.left)): # Subtraction of two equal things, but one has a selection + elif n.name == DIFFERENCE and \ + n.right.name == SELECTION and \ + n.right.child == n.left: n.name = n.right.name n.kind = n.right.kind n.child = n.right.child @@ -164,7 +166,7 @@ def futile_union_intersection_subtraction(n): n.left = n.right = None # Subtraction of the same thing or with selection on the left child - elif (n.name == DIFFERENCE and ((n.left == n.right) or (n.left.name == SELECTION and n.left.child == n.right))): # Empty relation + elif n.name == DIFFERENCE and (n.left == n.right or (n.left.name == SELECTION and n.left.child == n.right)): changes = 1 n.kind = parser.UNARY n.name = SELECTION @@ -291,16 +293,11 @@ def futile_renames(n): value = _vars.get(key) if key == value: _vars.pop(value) # Removes the unused one - # Reset prop var - n.prop = "" - # Generates new prop var - for i in _vars.items(): - n.prop += u"%s%s%s," % (i[0], ARROW, i[1]) - n.prop = n.prop[:-1] # Removing ending comma - - if len(n.prop) == 0: # Nothing to rename, removing the rename op + if len(_vars) == 0: # Nothing to rename, removing the rename op replace_node(n, n.child) + else: + n.prop = ','.join('%s%s%s' % (i[0], ARROW, i[1]) for i in _vars.items()) return changes + recoursive_scan(futile_renames, n) @@ -313,7 +310,7 @@ def subsequent_renames(n): futile_renames(n) changes = 0 - if n.name == RENAME and n.child.name == n.name: + if n.name == RENAME and n.child.name == RENAME: # Located two nested renames. changes = 1 # Joining the attribute into one @@ -338,16 +335,10 @@ def subsequent_renames(n): _vars.pop(value) # Removes the unused one _vars.pop(key) # Removes the unused one - # Reset prop var - n.prop = "" - - # Generates new prop var - for i in _vars.items(): - n.prop += u"%s%s%s," % (i[0], ARROW, i[1]) - n.prop = n.prop[:-1] # Removing ending comma - - if len(n.prop) == 0: # Nothing to rename, removing the rename op + if len(_vars) == 0: # Nothing to rename, removing the rename op replace_node(n, n.child) + else: + n.prop = ','.join('%s%s%s' % (i[0], ARROW, i[1]) for i in _vars.items()) return changes + recoursive_scan(subsequent_renames, n) @@ -419,10 +410,8 @@ def swap_rename_projection(n): if i not in _pr_reborn: _vars.pop(i) n.name = n.child.name - n.prop = '' - for i in _vars.keys(): - n.prop += u'%s%s%s,' % (_vars[i], ARROW, i) - n.prop = n.prop[:-1] + + n.prop = ','.join('%s%s%s' % (i[1], ARROW, i[0]) for i in _vars.items()) n.child.name = PROJECTION n.child.prop = '' @@ -465,9 +454,7 @@ def swap_rename_select(n): n.child.name = SELECTION n.prop = n.child.prop - n.child.prop = '' - for i in _tokens: - n.child.prop += i + ' ' + n.child.prop = ' '.join(_tokens) return changes + recoursive_scan(swap_rename_select, n) @@ -477,7 +464,10 @@ def select_union_intersect_subtract(n): and replaces them with σ (i OR q) (a) Removing a O(n²) operation like the union''' changes = 0 - if n.name in (UNION, INTERSECTION, DIFFERENCE) and n.left.name == SELECTION and n.right.name == SELECTION and n.left.child == n.right.child: + if n.name in {UNION, INTERSECTION, DIFFERENCE} and \ + n.left.name == SELECTION and \ + n.right.name == SELECTION and \ + n.left.child == n.right.child: changes = 1 d = {UNION: 'or', INTERSECTION: 'and', DIFFERENCE: 'and not'} @@ -544,6 +534,7 @@ def union_and_product(n): changes = 1 return changes + recoursive_scan(union_and_product, n) + def projection_and_union(n, rels): ''' Turns