diff --git a/stmts.py b/stmts.py index feb5b751655d01f29892718cbdd439d1c84f3eae_c3RtdHMucHk=..e31e4c6c6aae1c080f6e7f39f880100ed725fa40_c3RtdHMucHk= 100644 --- a/stmts.py +++ b/stmts.py @@ -628,7 +628,7 @@ self.undo_manager.add_operation(RemoveGroupOperation(vref)) def remove_groups(self): - for vref in self.groupby: + for vref in self.groupby[:]: self.remove_group_var(vref) def add_sort_var(self, var, asc=True): @@ -656,7 +656,7 @@ def remove_sort_terms(self): if self.orderby: - for term in self.orderby: + for term in self.orderby[:]: self.remove_sort_term(term) def remove_sort_term(self, term): diff --git a/test/unittest_nodes.py b/test/unittest_nodes.py index feb5b751655d01f29892718cbdd439d1c84f3eae_dGVzdC91bml0dGVzdF9ub2Rlcy5weQ==..e31e4c6c6aae1c080f6e7f39f880100ed725fa40_dGVzdC91bml0dGVzdF9ub2Rlcy5weQ== 100644 --- a/test/unittest_nodes.py +++ b/test/unittest_nodes.py @@ -143,6 +143,17 @@ tree.recover() tree.check_references() self.assertEquals(tree.as_string(), 'Any X GROUPBY X') + + def test_select_remove_groups(self): + tree = self._parse('Any X,Y GROUPBY X,Y') + tree.save_state() + select = tree.children[0] + select.remove_groups() + tree.check_references() + self.assertEquals(tree.as_string(), 'Any X,Y') + tree.recover() + tree.check_references() + self.assertEquals(tree.as_string(), 'Any X,Y GROUPBY X,Y') def test_select_base_1(self): tree = self._parse("Any X WHERE X is Person")