def execute(self, table: SymbolTable, tree): super().execute(table, tree) # result_name = self.name.execute(table, tree) result_name = self.name result_owner = self.owner.execute( table, tree ) if self.owner else None # Owner seems to be stored only to ST result_mode = self.mode( table, tree ) if self.mode is not None else 6 # Change to 1 when default mode available if self.replace: dropDatabase(result_name) result = 0 if result_mode == 6: # add more ifs when modes from EDD available result = createDatabase(result_name) if result == 1: # log error on operation raise Error(0, 0, ErrorType.RUNTIME, '5800: system_error') return False elif result == 2: # log error because db already exists raise Error(0, 0, ErrorType.RUNTIME, '42P04: duplicate_database') return False else: return table.add( DatabaseSymbol(result_name, result_owner, result_mode))
def ejecutar(self): global resultadotxt global cont global tabla global contambito try: resultado = func.createDatabase(self.iden) if resultado == 0: resultadotxt += "Se creo la base de datos " + self.iden + "\n" NuevoSimbolo = TS.Simbolo(cont, self.iden, TS.TIPO.DATABASE, contambito) cont += 1 contambito += 1 tabla.agregar(NuevoSimbolo) elif resultado == 2 and not self.replacedb: resultadotxt += "Ya existe la base de datos " + self.iden + "\n" elif resultado == 2 and self.replacedb: func.dropDatabase(self.iden) buscar = tabla.BuscarNombre(self.iden) tabla.simbolos.pop(buscar.id) func.createDatabase(self.iden) NuevoSimbolo = TS.Simbolo(cont, self.iden, TS.TIPO.DATABASE, contambito) cont += 1 contambito += 1 tabla.agregar(NuevoSimbolo) resultadotxt += "Se reemplazo la base de datos: " + self.iden + "\n" else: resultadotxt += "Error al crear base de datos: " + self.iden + "\n" except: """ERROR SEMANTICO"""
def execute(self, table: SymbolTable, tree): super().execute(table, tree) #result_name = self.name.execute(table, tree) #result_owner = self.owner.execute(table, tree) if self.owner else None # Owner seems to be stored only to ST #result_mode = self.owner.mode(table, tree) if self.mode else 6 # Change to 1 when default mode from EDD available result_name = self.name.execute(table, tree) result_owner = self.owner result_mode = self.mode result = 0 if self.replace: dropDatabase(result_name) #if result_mode == 6: # add more ifs when modes from EDD available result = createDatabase(result_name) if result == 1: # log error on operation raise Error(0, 0, ErrorType.RUNTIME, '5800: system_error') return False elif result == 2 and self.exists == False: # log error because db already exists raise Error(0, 0, ErrorType.RUNTIME, '42P04: duplicate_database') return False else: #return table.add(DatabaseSymbol(result_name, result_owner, result_mode)) #chaged by loadDatabases table.LoadDataBases() return ['Database \'' + result_name + '\' was created successfully!']
def ejecutar(self): global resultadotxt global cont global tabla try: resultado = func.dropDatabase(self.iden) if (resultado == 2): resultadotxt += "No existe la base de datos " + self.iden + "\n" else: BaseDatos = tabla.BuscarNombre(self.iden) eliminar = [] for simbolo in tabla.simbolos: if tabla.simbolos[ simbolo].ambito == BaseDatos.id and not tabla.simbolos[ simbolo].tipo == TS.TIPO.DATABASE: TablaExistente = tabla.simbolos[simbolo] eliminar.append(TablaExistente) for simbolo2 in tabla.simbolos: if tabla.simbolos[ simbolo2].ambito == TablaExistente.id and not tabla.simbolos[ simbolo2].tipo == TS.TIPO.DATABASE and not tabla.simbolos[ simbolo2].tipo == TS.TIPO.TABLE: eliminar.append(tabla.simbolos[simbolo2]) for element in eliminar: tabla.simbolos.pop(element.id) tabla.simbolos.pop(BaseDatos.id) resultadotxt += "Se elimino la base de datos " + self.iden + "\n" except: """ERROR SEMANTICO"""
def execute(self, table: SymbolTable, tree): super().execute(table, tree) result_name = self.name.execute(table, tree) result = 0 if self.if_exists: dropDatabase(result_name) return "Database " + str(result_name) + " has been dropped" else: result = dropDatabase(result_name) if result == 0: # successful operation table.drop_data_base(result_name) return "Database " + str(result_name) + " has been dropped." elif result == 1: # operation error raise Error(0, 0, ErrorType.RUNTIME, '58000: system_error') elif result == 2: # database does not exist. raise Error(0, 0, ErrorType.RUNTIME, '42P04: database_does_not_exists')
def execute(self,enviroment = None): #Se debe llamar al metodo showDatabases() -> list: if(self.hijos[1].hijos[0].nombreNodo == "DATABASE"): ######### DATABASES use_if_exists = len(self.hijos[1].hijos) == 3 dbname = "" if use_if_exists: dbname = self.hijos[1].hijos[2].valor else: dbname = self.hijos[1].hijos[1].valor resultado = dropDatabase(dbname) if resultado == 0: tc.deleteDatabase(dbname) return {"Code":"0000","Message": "The database <"+dbname+"> has been successfully dropped"} elif resultado == 1: return {"Code":"42602","Message": "invalid_name: The identifier <"+dbname+"> is incorrect"} elif resultado == 2: return {"Code":"42P12","Message": "invalid_database_definition: The database <"+dbname+"> doesn´t exists"} elif(self.hijos[1].hijos[0].nombreNodo == "TABLE"): ######### TABLES table_name = self.hijos[1].hijos[1].valor with open('src/Config/Config.json') as file: config = json.load(file) dbUse = config['databaseIndex'] if dbUse == None: return {"Code":"42P12","Message": "invalid_database_definition: There is no selected database "} else: dbUse = config['databaseIndex'].upper() res = dropTable(dbUse,table_name) if res == 0: tc.drop_table(dbUse,table_name) return {"Code":"0000","Message": "The table <"+table_name+"> has been successfully dropped"} elif res == 1: return {"Code":"42602","Message": "invalid_name: The identifier <"+dbUse+"> is incorrect"} elif res == 2: return {"Code":"42P12","Message": "invalid_database_definition: The database <"+dbUse+"> doesn´t exists"} elif res == 3: return {"Code":"42P01","Message": "undefined_table: The table <"+table_name+"> doesn´t exists"} elif(self.hijos[1].hijos[0].nombreNodo == "INDEX"): identificador = self.hijos[1].hijos[1].valor with open('src/Config/Config.json') as file: config = json.load(file) dbUse = config['databaseIndex'] if dbUse == None: return {"Code":"42P12","Message": "invalid_database_definition: There is no selected database "} else: dbUse = config['databaseIndex'].upper() resp = tc.drop_index(dbUse, identificador) if resp == None: return {"Code":"42P01","Message": "undefined_index: The index <"+identificador+"> doesn´t exists"} else: return {"Code":"0000","Message": "The index <"+identificador+"> has been successfully dropped"} elif(self.hijos[1].hijos[0].nombreNodo == "PROCEDURE"): identificador = self.hijos[1].hijos[1].valor return {"Code":"0000","Message": "The procedure <"+identificador+"> has been successfully dropped"}
def execute(self, table, tree): super().execute(table, tree) result_name = self.name.execute(table, tree) result_owner = self.owner.execute(table, tree) if self.owner else None # Owner seems to be stored only to ST result_mode = self.owner.mode(table, tree) if self.mode else 6 # Change to 1 when default mode from EDD available if self.replace: dropDatabase(result_name) result = 0 if result_mode == 6: # add more ifs when modes from EDD available result = createDatabase(result_name) if result == 1: # log error on operation return False elif result == 2: # log error because db already exists return False else: return True
def ejecutar(self): global resultadotxt global cont global tabla try: resultado = func.dropDatabase(self.iden) if(resultado == 2): resultadotxt += "No existe la base de datos: " + self.iden + "\n" else: resultadotxt += "Se elimino la base de datos: " + self.iden + "\n" buscar = tabla.BuscarNombre(self.iden) tabla.simbolos.pop(buscar.id) except: """ERROR SEMANTICO"""
def ejecutar(self, tabalSimbolos, listaErrores): bandera = tabalSimbolos.comprobarNombreBaseDatos(self.nombre) if bandera == 1: #Si existe la db respuesta = jsonMode.dropDatabase(self.nombre) if respuesta == 0: eliminar = tabalSimbolos.eliminarBaseDatos(self.nombre) if eliminar == 0: errorEnviar = errorReportar.ErrorReportar( self.fila, self.columna, "Ejecucion", "Error 3D000, no existe la base de datos") listaErrores.append(errorEnviar) return elif respuesta == 1: errorEnviar = errorReportar.ErrorReportar( self.fila, self.columna, "Ejecucion", "Error en la operacion") listaErrores.append(errorEnviar) return elif respuesta == 2: errorEnviar = errorReportar.ErrorReportar( self.fila, self.columna, "Ejecucion", "Error 3D000, no existe la base de datos") listaErrores.append(errorEnviar) return elif bandera == 0 and self.si_existe == False: #No existe la db errorEnviar = errorReportar.ErrorReportar( self.fila, self.columna, "Ejecucion", "Error 3D000, no existe la base de datos") listaErrores.append(errorEnviar) return elif bandera == 0 and self.si_existe == True: return pass
def ejecutar(self, tabalSimbolos, listaErrores): bandera = tabalSimbolos.comprobarNombreBaseDatos(self.identificador) if bandera == 1 and self.reemplazar == None: if self.si_no_existe == None: errorEnviar = errorReportar.ErrorReportar( self.fila, self.columna, "Ejecucion", "Error 42P04") listaErrores.append(errorEnviar) return else: #si es un id repetido pero dice crear si no existe return elif bandera == 1 and self.reemplazar != None: #si es un id repetido pero hay que eliminarlo y reemplazarlo #eliminarlo respuesta = jsonMode.dropDatabase(self.identificador) if respuesta == 0: tabalSimbolos.eliminarBaseDatos(self.identificador) elif respuesta == 1: errorEnviar = errorReportar.ErrorReportar( self.fila, self.columna, "Ejecucion", "Error en la operacion") listaErrores.append(errorEnviar) return elif respuesta == 2: errorEnviar = errorReportar.ErrorReportar( self.fila, self.columna, "Ejecucion", "Error 3D000, no existe la base de datos") listaErrores.append(errorEnviar) return print( "si es un id repetido pero hay que eliminarlo y reemplazarlo " + str(respuesta)) #reemplazarlo respuesta2 = jsonMode.createDatabase(self.identificador) if respuesta2 == 0: dbGuardar = simboloBaseDatos.SimboloBaseDatos( self.identificador) for i in range(len(self.opciones)): try: if self.opciones[i].nombreNodo == "OWNER": print(self.opciones[i + 2].valor) dbGuardar.setearPropietario(self.opciones[i + 2].valor) elif self.opciones[i].nombreNodo == "modo": print(self.opciones[i].hijos[3]) dbGuardar.setearModo(self.opciones[i].hijos[3]) except: pass tabalSimbolos.guardarBaseDatos(dbGuardar) else: errorEnviar = errorReportar.ErrorReportar( self.fila, self.columna, "Ejecucion", "Error 42P04") listaErrores.append(errorEnviar) return print("reemplazo " + str(respuesta)) else: #Llamar funcion de ingeniero respuesta = jsonMode.createDatabase(self.identificador) if respuesta == 0: dbGuardar = simboloBaseDatos.SimboloBaseDatos( self.identificador) for i in range(len(self.opciones)): try: if self.opciones[i].nombreNodo == "OWNER": print(self.opciones[i + 2].valor) dbGuardar.setearPropietario(self.opciones[i + 2].valor) elif self.opciones[i].nombreNodo == "modo": print(self.opciones[i].hijos[3]) dbGuardar.setearModo(self.opciones[i].hijos[3]) except: pass tabalSimbolos.guardarBaseDatos(dbGuardar) else: errorEnviar = errorReportar.ErrorReportar( self.fila, self.columna, "Ejecucion", "Error 42P04") listaErrores.append(errorEnviar) return pass
def execute(self, table, tree): super().execute(table, tree) result_name = self.name.execute(table, tree) dropDatabase(result_name) return True