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
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"
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()
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)
#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"