diff --git a/relational/optimizer.py b/relational/optimizer.py
index 1fb2ee1..4c0dc1c 100644
--- a/relational/optimizer.py
+++ b/relational/optimizer.py
@@ -25,7 +25,6 @@
from relational import optimizations
from relational import parser
-from relational import querysplit
from relational.maintenance import UserInterface
@@ -58,8 +57,8 @@ def optimize_program(code, rels):
parsed = parser.tree(query)
optimizations.replace_leaves(parsed, context)
context[res] = parsed
- node = optimize_all(context[last_res], rels, tostr=False)
- return querysplit.split(node, rels)
+ result = optimize_all(context[last_res], rels)
+ return result
def optimize_all(expression, rels, specific=True, general=True, debug=None,tostr=True):
diff --git a/relational/querysplit.py b/relational/querysplit.py
index d6cd699..a80d07a 100644
--- a/relational/querysplit.py
+++ b/relational/querysplit.py
@@ -19,52 +19,6 @@
# This module splits a query into a program.
-from relational import parser
-
-
-class Program:
- def __init__(self, rels):
- self.queries = []
- self.dictionary = {} # Key is the query, value is the relation
- self.vgen = vargen(rels, 'optm_')
-
- def __str__(self):
- r = ''
- for q in self.queries:
- r += '%s = %s' % (q[0], q[1]) + '\n'
- return r.rstrip()
-
- def append_query(self, node):
- strnode = str(node)
-
- rel = self.dictionary.get(strnode)
- if rel:
- return rel
-
- qname = next(self.vgen)
- self.queries.append((qname, node))
- n = parser.Node()
- n.kind = parser.RELATION
- n.name = qname
- self.dictionary[strnode] = n
- return n
-
-def _separate(node, program):
- if node.kind == parser.UNARY and node.child.kind != parser.RELATION:
- _separate(node.child, program)
- rel = program.append_query(node.child)
- node.child = rel
- elif node.kind == parser.BINARY:
- if node.left.kind != parser.RELATION:
- _separate(node.left, program)
- rel = program.append_query(node.left)
- node.left = rel
- if node.right.kind != parser.RELATION:
- _separate(node.right, program)
- rel = program.append_query(node.right)
- node.right = rel
- program.append_query(node)
-
def vargen(avoid, prefix=''):
'''
Generates temp variables.
@@ -86,14 +40,3 @@ def vargen(avoid, prefix=''):
if r not in avoid:
yield r
count += 1
-
-def split(node, rels):
- '''
- Split a query into a program.
-
- The idea is that if there are duplicated subdtrees they
- get executed only once.
- '''
- p = Program(rels)
- _separate(node, p)
- return str(p)
diff --git a/relational_gui/guihandler.py b/relational_gui/guihandler.py
index 342f569..4cb7973 100644
--- a/relational_gui/guihandler.py
+++ b/relational_gui/guihandler.py
@@ -15,7 +15,6 @@
# along with this program. If not, see .
#
# author Salvo "LtWorf" Tomaselli
-import base64
import sys
from PyQt5 import QtCore, QtWidgets, QtGui
@@ -363,13 +362,10 @@ class relForm(QtWidgets.QMainWindow):
self.settings.setValue('maingui/geometry', self.saveGeometry())
self.settings.setValue('maingui/windowState', self.saveState())
self.settings.setValue('maingui/splitter', self.ui.splitter.saveState())
- self.settings.setValue('maingui/relations', base64.b64encode(self.user_interface.session_dump()).decode())
+ self.settings.setValue('maingui/relations', self.user_interface.session_dump())
def _restore_settings(self):
- try:
- self.user_interface.session_restore(base64.b64decode(self.settings.value('maingui/relations')))
- except:
- pass
+ self.user_interface.session_restore(self.settings.value('maingui/relations'))
self.updateRelations()
self.setMultiline(self.settings.value('multiline', 'false') == 'true')