def execute(self, table: SymbolTable, tree): super().execute(table, tree) result_table_name = self.table_name result_field_name = self.field_name result_field_type = self.field_type.val result_field_length = self.field_length result = alterAddColumn(table.get_current_db().name, result_table_name, None) if result == 1: raise Error(0, 0, ErrorType.RUNTIME, '5800: system_error') elif result == 2: raise Error(0, 0, ErrorType.RUNTIME, '42P04: database_does_not_exists') elif result == 3: raise Error(0, 0, ErrorType.RUNTIME, '42P04: table_does_not_exists') else: total_fields = len(table.get_fields_from_table(result_table_name)) column_symbol = FieldSymbol(table.get_current_db().name, result_table_name, total_fields + 1, result_field_name, result_field_type, result_field_length, self.allows_null, False, None, None) table.add(column_symbol) return True
def ejecutar(self): global resultadotxt global cont global tabla global NombreDB for alteracion in self.altertb2: if alteracion.texto and alteracion.texto.lower() == "add": if alteracion.addprop.texto and alteracion.addprop.texto.lower( ) == "column": NuevaColumna = alteracion.addprop.lista try: resultado = func.alterAddColumn( NombreDB, self.iden, NuevaColumna.iden) if resultado == 2: resultadotxt += "No existe la base de datos " + NombreDB + "\n" elif resultado == 3: resultadotxt += "No existe la tabla " + self.iden + "\n" else: BuscarTabla = tabla.BuscarNombre(self.iden) BuscarTabla.coltab += 1 tabla.actualizar(BuscarTabla) NuevoSimboloColumna = TS.Simbolo( cont, NuevaColumna.iden, TS.TIPO.COLUMN, BuscarTabla.id, 0, NuevaColumna.tipo, 0, "", "", False, "", (BuscarTabla.coltab - 1)) cont += 1 tabla.agregar(NuevoSimboloColumna) resultadotxt += "Se agrego la columna " + NuevoSimboloColumna.nombre + " a la tabla " + self.iden + "\n" except: """ERROR SEMANTICO""" if alteracion.texto and alteracion.texto.lower() == "drop column": try: ColumnaABorrar = tabla.BuscarNombre(alteracion.iden) resultado = func.alterDropColumn(NombreDB, self.iden, ColumnaABorrar.numcol) if resultado == 2: resultadotxt += "La base de datos " + NombreDB + " No existe \n" elif resultado == 3: resultadotxt += "No se encontro la tabla " + self.iden + " en la base de datos " + NombreDB + "\n" elif resultado == 4: resultadotxt += "La columna " + ColumnaABorrar.nombre + " Es llave primaria" + "\n" elif resultado == 5: resultadotxt += "La columna " + ColumnaABorrar.nombre + " No existe" + "\n" else: tabla.simbolos.pop(ColumnaABorrar.id) resultadotxt += "Se elimino la columna " + ColumnaABorrar.nombre + " de la tabla " + self.iden + "\n" except: """ERROR SEMANTICO"""
def ejecutar(self): global resultadotxt global cont global tabla global NombreDB if self.altertb2.text.lower() == "add column": try: resultado = func.alterAddColumn(NombreDB, self.iden, self.altertb2.iden) if resultado == 2: resultadotxt += "No existe la base de datos " + NombreDB + "\n" elif resultado == 3: resultadotxt += "No existe la tabla " + self.iden + "\n" else: buscar = tabla.BuscarNombre(self.iden) columna = self.altertb2 buscar.coltab += 1 tabla.actualizar(buscar) NuevaColumna = TS.Simbolo(cont, columna.iden, TS.TIPO.COLUMN, buscar.id, 0, columna.tipo, 0, "", "", False, "", (buscar.coltab - 1)) cont += 1 tabla.agregar(NuevaColumna) resultadotxt += "Se agrego la columna " + self.altertb2.iden + " a la tabla " + self.iden + "\n" except: """ERROR SEMANTICO""" elif self.altertb2.text.lower() == "drop column": try: delcolumna = tabla.BuscarNombre(self.altertb2.iden) resultado = func.alterDropColumn(NombreDB, self.iden, delcolumna.numcol) if resultado == 2: resultadotxt += "La base de datos " + NombreDB + " No existe \n" elif resultado == 3: resultadotxt += "No se encontro la tabla " + self.iden + " en la base de datos " + NombreDB + "\n" elif resultado == 4: resultadotxt += "La columna " + self.altertb2.iden + " Es llave primaria" + "\n" elif resultado == 5: resultadotxt += "La columna " + self.altertb2.iden + " No existe" + "\n" else: tabla.simbolos.pop(delcolumna.id) resultadotxt += "Se elimino la columna " + self.altertb2.iden + " de la tabla " + self.iden + "\n" except: """ERROR SEMANTICO"""
def execute(self, table, tree): super().execute(table, tree) result_table_name = self.table_name.execute(table, tree) result_field_name = self.field_name.execute(table, tree) result_field_type = self.field_type.execute(table, tree) result_field_length = self.field_length.execute(table, tree) result = alterAddColumn('db_name_from_st', result_field_name, None) if result == 1: # log error on operation return False elif result == 2: # log error, old database name does not exists return False elif result == 3: # log error, table does not exists return False else: return True
def ejecutar(self): global resultadotxt global cont global tabla global NombreDB if self.altertb2.text.lower() == "add column": try: resultado = func.alterAddColumn(NombreDB,self.iden,self.altertb2.iden) if resultado == 2: resultadotxt += "No existe la base de datos: " + NombreDB + "\n" elif resultado == 3: resultadotxt += "No existe la tabla: " + self.iden + "\n" else: resultadotxt += "Se agrego la columna " + self.altertb2.iden + " a la tabla " + self.iden + "\n" buscar = tabla.BuscarNombre(self.iden) ncolumna = TS.Simbolo(cont,self.altertb2.tipo,self.altertb2.iden,buscar.id) cont+=1 tabla.agregar(ncolumna) except: """ERROR SEMANTICO""" elif self.altertb2.text.lower() == "drop column": try: basedatos = tabla.BuscarNombre(NombreDB) tablas = tabla.BuscarNombre(self.iden) print("BUSCANDO: " + self.altertb2.iden) bcol = tabla.BuscarNombre(self.altertb2.iden) print("ENCONTRADO: " + bcol.valor) if basedatos: print("AAAAAAAAA") if tabla: print("BBBBBBBBB") if bcol: print("CCCCCCCCCCC") tabla.simbolos.pop(bcol.id) resultadotxt += "Se elimino la columna " + self.altertb2.iden + " de la tabla " + self.iden + "\n" else: resultadotxt += "No se encontro la columna: " + self.altertb2.iden + " en la tabla " + self.iden + "\n" else: resultadotxt += "No se encontro la tabla: " + self.iden + " en la base de datos " + NombreDB + "\n" else: resultadotxt += "La base de datos " + NombreDB + " No existe \n" except: """ERROR SEMANTICO"""
def ejecutar(self): global resultadotxt global cont global tabla global NombreDB try: resultado = func.createTable(NombreDB, self.iden, 0) if (resultado == 2): resultadotxt += "No existe la base de datos: " + NombreDB + "\n" elif (resultado == 3): resultadotxt += "La tabla ya existe: " + self.iden + "\n" else: buscar = tabla.BuscarNombre(NombreDB) NuevoSimbolo = TS.Simbolo(cont, self.iden, TS.TIPO.TABLE, buscar.id, 0) cont += 1 tabla.agregar(NuevoSimbolo) """SE CREAN LAS COLUMNAS PARA LA TABLA""" inicio = 0 for columna in self.coltb: try: if "primary key " in columna.key.lower(): NuevaColumna = TS.Simbolo( cont, columna.iden, TS.TIPO.COLUMN, NuevoSimbolo.id, 0, columna.tipo, 1, columna.references, columna.default, False, columna.constraint, inicio) listacol = [] listacol.append(NuevaColumna.numcol) print(max(listacol)) print(min(listacol)) resultado = func.alterAddPK( NombreDB, NuevoSimbolo.nombre, listacol) resultado2 = func.alterAddColumn( NombreDB, self.iden, columna) else: NuevaColumna = TS.Simbolo( cont, columna.iden, TS.TIPO.COLUMN, NuevoSimbolo.id, 0, columna.tipo, 0, columna.references, columna.default, False, columna.constraint, inicio) resultado = func.alterAddColumn( NombreDB, self.iden, columna) if resultado == 2: resultadotxt += "No existe la base de datos " + NombreDB + "\n" elif resultado == 3: resultadotxt += "No existe la tabla " + self.iden + "\n" elif resultado == 4: resultadotxt += "Ya existe una llave primaria en " + self.iden + "\n" else: if columna.notnull.lower() == "not null": NuevaColumna.nullcol = True else: NuevaColumna.nullcol = False cont += 1 inicio += 1 NuevoSimbolo.coltab += 1 tabla.actualizar(NuevoSimbolo) tabla.agregar(NuevaColumna) resultadotxt += "Se agrego la columna " + columna.iden + " a la tabla " + self.iden + "\n" except: """ERROR SEMANTICO""" resultadotxt += "Se creo la tabla: " + self.iden + " En la base de datos: " + NombreDB + "\n" except: """ERROR SEMANTICO"""