Exemple #1
0
    def ejecutar(self, tabla, arbol):
        super().ejecutar(tabla, arbol)

        if self.existe == 1:
            error = Excepcion(
                "42P01", "Semantico",
                "El indice " + str(self.id_indice) + " no existe", self.linea,
                self.columna)
            arbol.excepciones.append(error)
            arbol.consola.append(error.toString())
            print('ERROR: tabla no existe')
            return error

        val = self.id_tabla.devolverTabla(tabla, arbol)
        objetoTabla = arbol.devolviendoTablaDeBase(val)
        # objetoTabla.lista_de_indices.remove(self.id_indice)

        for i in objetoTabla.lista_de_indices:
            # print("***", i.nombre.id)
            ind = Indice(i.nombre.id, "Indice")
            # print("---", ind.lRestricciones)
            # ind.lRestricciones.remove('id#[\'ASC\', \'NULLS LAST\']')

            for a in objetoTabla.lista_de_indices:
                if a.nombre.id == self.id_indice:
                    a.nombre.id = ''
Exemple #2
0
    def ejecutar(self, tabla, arbol):
        super().ejecutar(tabla, arbol)
        val = self.idTabla.devolverTabla(tabla, arbol)

        if (val == 0):
            error = Excepcion(
                "42P01", "Semantico", "La tabla " +
                str(self.identificador.devolverId(tabla, arbol)) +
                " no existe", self.linea, self.columna)
            arbol.excepciones.append(error)
            arbol.consola.append(error.toString())
            print('ERROR: tabla no existe')
            return error

        tablaIndex = extractTable(arbol.getBaseDatos(), val)
        arbol.setTablaActual(tablaIndex)
        columnas = arbol.devolverColumnasTabla(val)
        data = np.array((tablaIndex))
        res = []
        for x in range(0, len(columnas)):
            col = columnas[x].obtenerNombre()
            res.append(col)

        arbol.setColumnasActual(res)
        listaMods = []
        if self.where:
            listaMods = self.where.ejecutar(tabla, arbol)

        for x in range(0, len(self.lcol)):
            var = self.lcol[x]
            objetoTabla = arbol.devolviendoTablaDeBase(val)
            try:
                for variable in var:

                    if 'Identificador' in str(variable):
                        idcol = variable.id

                        if self.validar_columna(variable.id, res):
                            if objetoTabla:
                                for indices in objetoTabla.lista_de_indices:
                                    if indices.obtenerNombre == variable.id:
                                        error = Excepcion(
                                            '42P01', "Semántico",
                                            "el indice «" + variable.id +
                                            "» ya fue creado.", self.linea,
                                            self.columna)
                                        arbol.excepciones.append(error)
                                        arbol.consola.append(error.toString())
                                        return error

                            ind = Indice(self.idIndex, "Indice")
                            tipo = ''
                            # try:
                            #     if 'Identificador' in self.lcol[x+1]:
                            #         tipo = ''
                            #         print("===>", self.lcol[x+1])
                            #     else:
                            #         print(">==>", self.lcol[x+1])
                            #         tipo = self.lcol[x+1]
                            # except :
                            #     pass

                            ind.lRestricciones.append(variable.id + '#' +
                                                      str(self.lcol[x]))
                            if self.tipoIndex:
                                ind.lRestricciones.append(self.tipoIndex)

                            objetoTabla.lista_de_indices.append(ind)
                            arbol.consola.append(
                                "Indice agregado con la columna: " +
                                variable.id)
                        else:
                            print(
                                "La columna indicada no pertenece a la tabla: "
                                + self.idTabla)
            except:
                if 'Identificador' in str(var):
                    variable = var
                    idcol = variable.id

                    if self.validar_columna(variable.id, res):
                        if objetoTabla:
                            for indices in objetoTabla.lista_de_indices:
                                if indices.obtenerNombre == variable.id:
                                    error = Excepcion(
                                        '42P01', "Semántico", "el indice «" +
                                        variable.id + "» ya fue creado.",
                                        self.linea, self.columna)
                                    arbol.excepciones.append(error)
                                    arbol.consola.append(error.toString())
                                    return error

                        ind = Indice(self.idIndex, "Indice")
                        tipo = ''
                        try:
                            if 'Identificador' in self.lcol[x + 1]:
                                tipo = ''
                            else:
                                tipo = self.lcol[x + 1]
                        except:
                            pass
                        ind.lRestricciones.append(variable.id + '#' +
                                                  str(tipo))
                        if self.tipoIndex:
                            ind.lRestricciones.append(self.tipoIndex)

                        objetoTabla.lista_de_indices.append(ind)
                        arbol.consola.append(
                            "Indice agregado con la columna: " + variable.id)
                    else:
                        print("La columna indicada no pertenece a la tabla: " +
                              self.idTabla)
Exemple #3
0
    def ejecutar(self, tabla, arbol):
        super().ejecutar(tabla, arbol)

        if self.existe == 1:
            error = Excepcion(
                "42P01", "Semantico",
                "El indice " + str(self.id_indice) + " no existe", self.linea,
                self.columna)
            arbol.excepciones.append(error)
            arbol.consola.append(error.toString())
            print('ERROR: tabla no existe')
            return error

        # objetoTabla.lista_de_indices.remove(self.id_indice)

        print(type(self.columnaNew))

        if type(self.columnaNew) == str:
            # print("*********************************")
            val = self.id_tabla.devolverTabla(tabla, arbol)
            objetoTabla = arbol.devolviendoTablaDeBase(val)

            for i in objetoTabla.lista_de_indices:
                ind = Indice(i.nombre.id, "Indice")
                # print("---", i.lRestricciones)
                # ind.lRestricciones.remove('id#[\'ASC\', \'NULLS LAST\']')

                consideraciones = str(i.lRestricciones).replace(
                    "[",
                    "").replace("'",
                                "").replace("\"",
                                            "").replace("]",
                                                        "").replace(",", "")
                column_index = consideraciones.split("#")

                # print(column_index[0], "<>", self.columnaOld)
                if column_index[
                        0] == self.columnaOld and i.nombre.id == self.idIndex.id:
                    i.lRestricciones = self.columnaNew + '#' + column_index[1]

        elif type(self.columnaNew) == int:
            # print("============================================")
            val = self.id_tabla.devolverTabla(tabla, arbol)
            objetoTabla = arbol.devolviendoTablaDeBase(val)
            iterador = self.columnaNew
            columna_a_cambiar = ''

            for i in objetoTabla.lista_de_campos:
                # print("*.", i.nombre)
                iterador = iterador - 1
                if iterador == 0:
                    columna_a_cambiar = i.nombre
            # print("+++++++++++++++++++++", columna_a_cambiar)

            for i in objetoTabla.lista_de_indices:
                ind = Indice(i.nombre.id, "Indice")
                # print("---", i.lRestricciones)
                # ind.lRestricciones.remove('id#[\'ASC\', \'NULLS LAST\']')

                consideraciones = str(i.lRestricciones).replace(
                    "[",
                    "").replace("'",
                                "").replace("\"",
                                            "").replace("]",
                                                        "").replace(",", "")
                column_index = consideraciones.split("#")

                # print(column_index[0], "<==>", self.columnaOld)
                if column_index[
                        0] == self.columnaOld and i.nombre.id == self.idIndex.id:
                    i.lRestricciones = columna_a_cambiar + '#' + column_index[1]