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 execute(self, table: SymbolTable, tree): super().execute(table, tree) result_name = self.name.execute(table, tree) result_inherits_from = self.inherits_from.execute( table, tree) if self.inherits_from else None result_fields = [] if result_inherits_from: # get inheritance table, if doesn't exists throws semantic error, else append result result_fields.append( table.get_fields_from_table(result_inherits_from)) result = createTable('db_from_st', result_name, len(result_fields)) if result == 1: raise Error(0, 0, ErrorType.RUNTIME, '5800: system_error') return False elif result == 2: raise Error(0, 0, ErrorType.RUNTIME, '42P04: database_does_not_exists') return False elif result == 3: raise Error(0, 0, ErrorType.RUNTIME, '42P07: duplicate_table') return False else: table.add(TableSymbol(table.get_current_db().name, result_name)) result_fields = self.fields.execute( table, tree) # A list of TableField assumed for field in result_fields: field.table_name = result_name table.add(field) return
def execute(self, table: SymbolTable, tree): super().execute(table, tree) result_values = [] for val in self.value_list: result_values.append(val.execute(table, tree)) symbol = TypeSymbol(self.name, result_values) table.add(symbol) print(f'[AST] ENUM {self.name} created.') return f'[AST] ENUM {self.name} created.'
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 execute(self, table: SymbolTable, tree): super().execute(table, tree) #result_name = self.name.execute(table, tree) result_name = self.name result_inherits_from = self.inherits_from.execute(table, tree) if self.inherits_from else None result_fields = self.fields if result_inherits_from: # get inheritance table, if doesn't exists throws semantic error, else append result result_fields.append(table.get_fields_from_table(result_inherits_from)) result = createTable(table.get_current_db().name, result_name, len(result_fields)) if result == 1: raise Error(0, 0, ErrorType.RUNTIME, '5800: system_error') return False elif result == 2: raise Error(0, 0, ErrorType.RUNTIME, '42P04: database_does_not_exists') return False elif result == 3: raise Error(0, 0, ErrorType.RUNTIME, '42P07: duplicate_table') return False else: #add primary keys, jsonMode needs the number of the column to set it to primarykey keys = list( map( lambda x: result_fields.index(x), filter(lambda key: key.is_pk == True, result_fields) ) ) if(len(keys)>0): result = alterAddPK(table.get_current_db().name, result_name, keys) table.add(TableSymbol(table.get_current_db().id, result_name, self.check_exp)) ##result_fields = self.fields.execute(table, tree) # A list of TableField assumed field_index = 0 for field in result_fields: field.table_name = result_name field.field_index = field_index field.type = SymbolType.FIELD field_index += 1 table.add(field) return "Table: " +str(result_name) +" created."
def execute(self, table: SymbolTable, tree): super().execute(table, tree) result_name = self.name result_inherits_from = self.inherits_from.val if self.inherits_from else None result_fields = self.fields if result_inherits_from: # get inheritance table, if doesn't exists throws semantic error, else append result result_fields += table.get_fields_from_table(result_inherits_from) result = createTable(table.get_current_db().name, result_name, len(result_fields)) if result == 1: raise Error(self.line, self.column, ErrorType.RUNTIME, '5800: system_error') elif result == 2: raise Error(self.line, self.column, ErrorType.RUNTIME, '42P04: database_does_not_exists') elif result == 3: raise Error(self.line, self.column, ErrorType.RUNTIME, '42P07: duplicate_table') else: # add primary keys, jsonMode needs the number of the column to set it to primarykey keys = list( map(lambda x: result_fields.index(x), filter(lambda key: key.is_pk is True, result_fields))) if len(keys) > 0: result = alterAddPK(table.get_current_db().name, result_name, keys) table.add( TableSymbol(table.get_current_db().id, result_name, self.check_exp)) field_index = 0 for field in result_fields: nuevo = FieldSymbol(table.get_current_db().name, result_name, field_index, field.name, field.field_type, field.length, field.allows_null, field.is_pk, None, None) field_index += 1 table.add(nuevo) return "Table: " + str(result_name) + " created."
def execute(self, table: SymbolTable, tree): super().execute(table, tree) result_values = self.value_list.execute(table, tree) symbol = TypeSymbol(self.name, result_values) return table.add(symbol)