コード例 #1
0
def executeSelect(selected_tables, selected_columns, conditions_string):
    global error

    #print "[executeSelect] Start"
    #print "[executeSelect] selected_columns"
    #print selected_columns

    result_bt = btree.BPlusTree(_bt_order)
    result_list = list()
    index_count = 0
    index_list = list()

    #	Load the indexes
    #	Fix this, should be looping through CONDITIONS not COLUMNS
    #for i in range(0,len(selected_columns)):
    for i in range(0, 1):

        #Definitions
        cur_table_name = selected_columns[i][0]
        cur_column_name = selected_columns[i][1]
        cur_index_bt = btree.BPlusTree(_bt_order)

        #Pickle load
        cur_index_bt = pickle.load(
            open(
                _install_dir + "scripts\\indexes\\" + cur_table_name.lower() +
                "_" + cur_column_name.upper() + "_index_bt.pkl", 'rb'))

        #Operations
        index_count += 1
        index_list.append(cur_index_bt)

        #Load all
        #if conditions_string == "":

        cur_results = cur_index_bt.values()
        #print "cur_results"
        #print cur_results
        #print "----------------------"

        for count in range(0, len(cur_results)):
            #print " [executeInsert] cur_results["+str(count)+"] : " + str(cur_results[count])
            cur_row_filename = cur_results[count]
            if result_bt[cur_row_filename] is None:
                result_bt.insert(cur_results[count], 0)

                #perhaps load shit here?

                cur_row_file = open(cur_row_filename[0], 'r')
                cur_row_string = cur_row_file.read()
                #print cur_row_string
                #for col_cnt in range(0,len(selected_columns)):

                result_list.append(cur_row_string)

            else:
                print "[executeSelect] Duplicate file"

    #print "[executeSelect] End"
    return True, selected_columns, result_list, error
コード例 #2
0
    def indexing(self, col_name, key):
        """ Create an indexing for a table, indexing on colName
        Args:
            colName: column name of the column we want to index after
        """

        if self.get_column(
                col_name) is not None and not self.indexes.has_key(col_name):
            if key:
                self.indexes[col_name] = [bt.BPlusTree(20), hashing.EH()]
            else:
                self.indexes[col_name] = [bt.BPlusTree(20), None]
            return True, None
        else:
            return False, "Invalid indexing column"
コード例 #3
0
    def __init__(self, dbname, user, passw, server):
        self.dbname = dbname
        self.user = user
        self.passw = passw
        self.server = server
        self.papers = []
        self.b_plus_tree = btree.BPlusTree(2)
        self.data_file = 'publications_new.txt'

        with open(self.data_file) as f:
            i = 0
            p = Paper()

            for line in f:
                i = i + 1
                if i > 100000:
                    break
                p.update(line)

                if line.strip() == '':
                    self.papers.append(p)
                    p = Paper()
コード例 #4
0
def executeInsert(target_columns, values_list):
    global error

    target_schema = list()
    loadSchema(target_columns[0][0], True, target_schema)

    index_bt = list()

    outputString = ""
    row_filename = ""

    delimitFlag = False
    print values_list

    #	Generate the output string and filename
    for i in range(0, len(target_schema)):

        new_bt = btree.BPlusTree(_bt_order)

        new_bt = pickle.load(
            open(
                _install_dir + "scripts\\indexes\\" +
                str(target_schema[i][0]).lower() + "_" +
                str(target_schema[i][1]).upper() + "_index_bt.pkl", 'rb'))
        #print "\n[executeInsert] Load new_bt SUCCESS:" + "scripts\\indexes\\" + str(target_columns[i][0]).lower() + "_" + str(target_columns[i][1]).upper() + "_index_bt.pkl"

        index_bt.append(new_bt)
        #print "\n[executeInsert] Append to index_bt list SUCCESS"

        for j in range(0, len(target_columns)):
            #print "\n Compare: " + str(target_schema[i][1]) + " / " + str(target_columns[j][1])
            if target_schema[i][1] == target_columns[j][1]:
                print str(i) + "/" + str(j)

                if i == 0:
                    row_filename = _install_dir + "scripts\\data\\" + str(
                        target_schema[0][0]) + "_" + str(
                            values_list[j]) + _rowfile_extension

                if delimitFlag == False:
                    outputString = str(values_list[j])
                    delimitFlag = True
                else:
                    outputString += _row_delimiter + str(values_list[j])

                #	Add a new index bt node with a blank filename_list
                if index_bt[i][values_list[j]] is None:
                    filename_list = list()
                    filename_list.append(row_filename)
                    index_bt[i].insert(str(values_list[j]), filename_list)
                    print "\n SOMECHECK: " + str(values_list[j]) + "//" + str(
                        values_list[i])
                    print index_bt[i][values_list[j]]
                else:
                    print "\n[executeInsert] Existing index bt node found"
                    print values_list[j]
                    print index_bt[i][values_list[j]]

                pickle.dump(index_bt[i],
                            open(
                                _install_dir + "scripts\\indexes\\" +
                                str(target_schema[i][0]).lower() + "_" +
                                str(target_schema[i][1]).upper() +
                                "_index_bt.pkl", 'wb'),
                            protocol=pickle.HIGHEST_PROTOCOL)

                print "\n[executeInsert] Save new_bt SUCCESS:" + str(
                    target_schema[i][0]).lower() + "_" + str(
                        target_schema[i][1]).upper() + "_index_bt.pkl"
    print "\n Final output string:"
    print outputString

    f = open(row_filename, 'w')
    f.write(outputString)
コード例 #5
0
            #error +=   "\n tables_string : "
            #error +=   "\n" + tables_string
            return False, error
    return False, error


#	------------------------------------------------------
#	Start of Main Program

input_sql_file = open(_install_dir + "test_input.sql", "r")
input_sql = input_sql_file.read()
global error

returnValue, error = isValidSQL(input_sql)

new_bt = btree.BPlusTree(_bt_order)

new_bt = pickle.load(
    open(_install_dir + "scripts\\indexes\\student_STUDNO_index_bt.pkl", 'rb'))
print "\n\n STUDNO"
print new_bt.items()

new_bt = pickle.load(
    open(_install_dir + "scripts\\indexes\\student_DEGREE_index_bt.pkl", 'rb'))
print "\n\n DEGREE"
print new_bt.items()

new_bt = pickle.load(
    open(_install_dir + "scripts\\indexes\\student_birthday_index_bt.pkl",
         'rb'))
print "\n\n BIRTHDAY"