added module to contain optimizations

git-svn-id: http://galileo.dmi.unict.it/svn/relational/trunk@134 014f5005-505e-4b48-8d0a-63407b615a7c
This commit is contained in:
LtWorf 2009-04-28 20:50:04 +00:00
parent 256cd3e4ca
commit 923ac12588
2 changed files with 36 additions and 3 deletions

View File

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
# Relational
# Copyright (C) 2009 Salvo "LtWorf" Tomaselli
#
# Relation is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# author Salvo "LtWorf" Tomaselli <tiposchi@tiscali.it>
'''This module contains functions to perform various optimizations on the expression trees.
The list general_optimizations contains pointers to general functions, so they can be called
within a cycle.'''
def duplicated_select(n):
pass
general_optimizations=[duplicated_select]

View File

@ -20,6 +20,9 @@
'''This module optimizes relational expressions into ones that require less time to be executed
For now it is highly experimental, and it shouldn't be used in 3rd party applications.'''
import optimizations
RELATION=0
UNARY=1
BINARY=2
@ -165,12 +168,14 @@ def tokenize(expression):
def tree(expression):
'''This function parses a relational algebra expression into a tree and returns
the root node using the Node class defined in this module.'''
#isinstance(k,list)
return node(tokenize(expression))
def optimize(expression):
def general_optimize(expression):
'''This function performs general optimizations. Means that it will not need to
know the fields used by the relations'''
n=tree(expression) #Gets the tree
for i in optimizations.general_optimizations:
n=i(n) #Performs the optimization
return n.__str__()
if __name__=="__main__":