Exemple #1
0
    def execute(self, environment):
        name = self.idIndex
        if self.existIndex(name):
            return "Error: ya existe un index con el nombre " + name

        try:
            Index = File.importFile("Index")
            indexBody = {}
            indexBody["Table"] = self.idTable
            indexBody["Unique"] = self.unique
            indexBody["Method"] = self.usingMethod
            indexBody["Columns"] = []
            for c in self.optList:
                col = {}
                col["Name"] = c[0]
                col["Order"] = c[1]
                if c[2]:
                    nulls = c[2][0]
                    if c[2][1]:
                        nulls += " " + c[2][1]
                else:
                    if col["Order"] == "DESC":
                        nulls = "NULLS FIRST"
                    else:
                        nulls = "NULLS LAST"

                col["Nulls"] = nulls
                indexBody["Columns"].append(col)

            Index[name] = indexBody
            File.exportFile(Index, "Index")
            return "Index " + name + " creado"
        except:
            return "Error fatal"
Exemple #2
0
def alterDatabaseRename(databaseOld, databaseNew):
    Databases = File.importFile()
    for data in Databases:
        if data["name"] == databaseOld:
            data["name"] = databaseNew
            File.exportFile(Databases)
            return
    return
Exemple #3
0
def createDatabase(name, mode, owner):
    database = {}
    database["name"] = name
    database["mode"] = mode
    database["owner"] = owner
    database["tables"] = []
    Databases = File.importFile()
    Databases.append(database)
    File.exportFile(Databases)
Exemple #4
0
def alterTable(dbName, tableOld, tableNew):
    Databases = File.importFile()
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tableOld:
                    table["name"] = tableNew
                    File.exportFile(Databases)
                    break
            break
Exemple #5
0
def alterDatabaseOwner(database, ownerNew):
    Databases = File.importFile()
    if ownerNew == "CURRENT_USER" or ownerNew == "SESSION_USER":
        ownerNew = "root"
    for data in Databases:
        if data["name"] == database:
            data["owner"] = ownerNew
            File.exportFile(Databases)
            return 0
    return 1
Exemple #6
0
def extractColmn(dbName, tableName, colName):
    Databases = File.importFile()
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tableName:
                    for col in table["columns"]:
                        if col["name"] == colName:
                            return col
                    return None
Exemple #7
0
    def execute(self, environment):
        Index = File.importFile("Index")
        exists = Index.get(self.name)
        result = []
        if not exists:
            if self.exists:
                result.append("El INDEX : " + self.name + " no existe")
            else:
                result.append("Error: El INDEX : " + self.name + " no existe")
            return result

        if not self.id:
            exists = Index.get(self.newName)
            if not exists:
                Index[self.newName] = Index.pop(self.name)
                result.append("Se cambio el nombre del INDEX : " + self.name +
                              " a " + self.newName)
            else:
                result.append("Error: El INDEX : " + self.newName +
                              " ya existe")
        else:
            column = self.newName
            index = Index[self.name]
            for c in index["Columns"]:
                if c["Name"] == column:
                    if type(self.id) == int:
                        table = index["Table"]
                        columns = Struct.extractColumns(
                            instruction.dbtemp, table)
                        if columns:
                            if self.id > len(columns):
                                result.append("Error fatal: INDEX " +
                                              self.name +
                                              "numero de columna invalido")
                            else:
                                col = columns[self.id - 1].name
                                c["Name"] = col
                                result.append("INDEX : " + self.name +
                                              " cambio la columna " + column +
                                              " por " + col)
                        else:
                            result.append("Error fatal: INDEX " + self.name)
                    else:
                        c["Name"] = self.id
                        result.append("INDEX : " + self.name +
                                      " cambio la columna " + column +
                                      " por " + self.id)

                    Index[self.name] = index
                    break
        if result == []:
            result.append("Error fatal: INDEX " + self.name +
                          " columna invalida : " + self.newName)
        File.exportFile(Index, "Index")
        return result
Exemple #8
0
def createTable(dbName, tableName, inherits):
    table = {}
    table["name"] = tableName
    table["inherits"] = inherits
    table["columns"] = []
    Databases = File.importFile()
    for db in Databases:
        if db["name"] == dbName:
            db["tables"].append(table)
            break
    File.exportFile(Databases)
Exemple #9
0
def insertColumns(dbName, tName, columns):
    Databases = File.importFile()
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tName:
                    for column in columns:
                        if column[0]:
                            table = constraint(table, column, dbName)
                        else:
                            table["columns"].append(getCol(column))
                    break
    File.exportFile(Databases)
Exemple #10
0
def dropTable(dbName, tableName):
    tbl = {}
    Databases = File.importFile()
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tableName:
                    tbl = table
            if tbl != {}:
                db["tables"].remove(tbl)
                File.exportFile(Databases)
                # print("Drop Table")
        break
Exemple #11
0
def indexReport():
    index = File.importFile("Index")
    enc = [["Nombre", "Tabla", "Unico", "Metodo", "Columnas"]]
    filas = []
    for (name, Index) in index.items():
        columns = ""
        for column in Index["Columns"]:
            columns += ", " + column["Name"]
        filas.append(
            [name, Index["Table"], Index["Unique"], Index["Method"], columns[1:]]
        )
    enc.append(filas)
    return enc
Exemple #12
0
def alterDrop(dbName, tableName, colName):
    clm = {}
    Databases = File.importFile()
    for db in Databases:
        if db["name"] == dbName:
            for table in db["tables"]:
                if table["name"] == tableName:
                    for col in table["columns"]:
                        if col["name"] == colName:
                            clm = col
                    if clm != {}:
                        table["columns"].remove(clm)
                    # print("Drop Table")
                    return
Exemple #13
0
def dropDatabase(name):
    element = {}
    Databases = File.importFile()
    for data in Databases:
        if data["name"] == name:
            element = data
            break

    if element != {}:
        Databases.remove(element)
        # print("Drop database")
        File.exportFile(Databases)
        return
    # print("Database not found")
    return
Exemple #14
0
    def execute(self, environment):
        Index = File.importFile("Index")
        result = []
        for name in self.names:
            exists = Index.get(name)
            if not exists:
                if self.exists:
                    result.append("El INDEX : " + name + " no existe")
                else:
                    result.append("Error: El INDEX : " + name + " no existe")
            else:
                Index.pop(name)
                result.append("INDEX : " + name + " eliminado")

        File.exportFile(Index, "Index")
        return result
Exemple #15
0
    def execute(self, environment):
        Struct.load()
        name = self.idIndex
        if self.existIndex(name):
            return "Error: ya existe un index con el nombre " + name
        table = Struct.extractTable(instruction.dbtemp, self.idTable)
        if table == 1 or table == 0:
            return ("Error: no existe la tabla " + self.idTable +
                    " en la base de datos " + instruction.dbtemp)
        try:
            Index = File.importFile("Index")
            indexBody = {}
            indexBody["Table"] = self.idTable
            indexBody["Unique"] = self.unique
            indexBody["Method"] = self.usingMethod
            indexBody["Columns"] = []
            for c in self.optList:
                col = {}
                col["Name"] = c[0]
                col["Order"] = c[1]
                if c[2]:
                    nulls = c[2][0]
                    if c[2][1]:
                        nulls += " " + c[2][1]
                else:
                    if col["Order"] == "DESC":
                        nulls = "NULLS FIRST"
                    else:
                        nulls = "NULLS LAST"

                col["Nulls"] = nulls
                indexBody["Columns"].append(col)

            Index[name] = indexBody
            File.exportFile(Index, "Index")
            return "Index " + name + " creado"
        except:
            return "Error fatal"
Exemple #16
0
def load():
    global Databases
    global Types
    Databases = File.importFile("Databases")
    Types = File.importFile("Types")
Exemple #17
0
 def existIndex(self, name):
     Index = File.importFile("Index")
     exists = Index.get(name)
     if exists != None:
         return True
     return False