def execute_change(self, sparql_up, sparql_down, execution_log=None):
        """ Final Step. Execute the changes to the Database """

        file_up = None
        file_down = None
        try:
            file_up = Utils.write_temporary_file(("set echo on;\n%s" %
                                                                    sparql_up),
                                                 "file_up")

            #db = self.connect()
            stdout_value, stderr_value = self._run_isql(file_up, True)
            if len(stderr_value) > 0:
                #rollback
                file_down = Utils.write_temporary_file(("set echo on;\n%s" %
                                                                sparql_down),
                                                       "file_down")
                _, stderr_value_rollback = self._run_isql(file_down, True)
                if len(stderr_value_rollback) > 0:
                    raise MigrationException("\nerror executing migration\
                                        statement: %s\n\nRollback done\
                                        partially: error executing rollback\
                                        statement: %s" % (stderr_value,
                                                        stderr_value_rollback))
                else:
                    raise MigrationException("\nerror executing migration\
                                             statement: %s\n\nRollback done\
                                             successfully!!!" % stderr_value)

            if execution_log:
                execution_log(stdout_value)
        finally:
            if file_up and os.path.exists(file_up):
                os.unlink(file_up)

            if file_down and os.path.exists(file_down):
                os.unlink(file_down)