Exemplo n.º 1
0
def p_aux_condition_column(t):
    '''condition_column : DEFAULT op_val
                         | NULL
                         | NOT NULL
	                     | REFERENCE ID
		                 | CONSTRAINT ID key_table
 		                 | '''
    global num_nodo
    try:
        if t[1].lower() == 'default':
            t[0] = condicion_simple(t[1], t[2], None, t.lineno(1), t.lexpos(1),
                                    num_nodo)
            num_nodo += 3
        elif t[1].lower() == 'null':
            t[0] = condicion_simple(t[1], None, None, t.lineno(1), t.lexpos(1),
                                    num_nodo)
            num_nodo += 3
        elif t[1].lower() == 'not':
            t[0] = condicion_simple(t[1], None, None, t.lineno(1), t.lexpos(1),
                                    num_nodo)
            num_nodo += 3
        elif t[1].lower() == 'reference':
            t[0] = condicion_simple(t[1], t[2], None, t.lineno(1), t.lexpos(1),
                                    num_nodo)
            num_nodo += 3
        elif t[1].lower() == 'constraint':
            t[0] = condicion_simple(t[1], t[2], None, t.lineno(1), t.lexpos(1),
                                    num_nodo)
            num_nodo += 3

    except:
        t[0] = None
Exemplo n.º 2
0
    def ejecutar(self, tb_id, id_col):
        id_db = get_actual_use()

        if self.comando.lower() == 'not':
            nodo_simbolo = ts.get_col(id_db, tb_id, id_col)
            nodo_simbolo.condiciones.append(
                condicion_simple(self.comando, self.ID, self.line, self.column,
                                 self.num_nodo + 10000000))
            ts.update_col(id_db, tb_id, id_col, nodo_simbolo)

            add_text('Se agrego la condición NOT NULL\n')
        elif self.comando.lower() == 'default':
            nodo_simbolo = ts.get_col(id_db, tb_id, id_col)
            nodo_simbolo.condiciones.append(
                condicion_simple(self.comando, self.ID, self.line, self.column,
                                 self.num_nodo + 10000000))
            ts.update_col(id_db, tb_id, id_col, nodo_simbolo)

            add_text('Se agrego la condición DEFAULT\n')
        elif self.comando.lower() == 'type':
            size = 0
            tipo = self.ID
            if isinstance(self.ID, tuple):
                size = self.ID[1]
                tipo = self.ID[0]

            nodo_simbolo = ts.get_col(id_db, tb_id, id_col)
            tipo_dominante = tipos_tabla[tipo.value][nodo_simbolo.tipo.value]

            if tipo_dominante != tipo:
                errores.append(
                    nodo_error(
                        self.line, self.column,
                        'ERROR - No puedes cambiar tipo de dato: ' +
                        self.get_str_tipo(nodo_simbolo.tipo) + ' por: ' +
                        self.get_str_tipo(tipo), 'Semántico'))
                add_text('ERROR - No puedes cambiar tipo de dato: ' +
                         self.get_str_tipo(nodo_simbolo.tipo) + ' por: ' +
                         self.get_str_tipo(tipo) + '\n')
                return

            nodo_simbolo.size = size
            nodo_simbolo.tipo = tipo
            ts.update_col(id_db, tb_id, id_col, nodo_simbolo)

            add_text('Se cambió el tipo de dato de la columna ' + id_col +
                     '\n')
Exemplo n.º 3
0
def p_aux_condition_column(t):
    '''condition_column : DEFAULT expression
                        | NOT NULL
                        | UNIQUE PAR_ABRE list_id PAR_CIERRA
                        | CHECK PAR_ABRE expression PAR_CIERRA
 		                | '''
    global num_nodo
    try:
        if t[1].lower() == 'default':
            t[0] = condicion_simple(t[1], t[2], t.lineno(1), t.lexpos(1), num_nodo)
            num_nodo += 3
        elif t[1].lower() == 'not':
            t[0] = condicion_simple(t[1], None, t.lineno(1), t.lexpos(1), num_nodo)
            num_nodo += 3
        elif t[1].lower() == 'unique':
            t[0] = unique_simple(None, t[3], t.lineno(1), t.lexpos(1), num_nodo)
            num_nodo += 4 + len(t[3])
        elif t[1].lower() == 'check':
            t[0] = check_simple(None, t[3], t.lineno(1), t.lexpos(1), num_nodo)
            num_nodo += 6
    except:
        t[0] = None