Пример #1
0
 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
Пример #2
0
 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"""
Пример #3
0
 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"""
Пример #4
0
 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
Пример #5
0
 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"""
Пример #6
0
 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"""