Project

General

Profile

« Previous | Next » 

Revision 5366

sql.py: Added true_expr, false_expr and use them where their values are used

View differences:

lib/sql.py
1021 1021

  
1022 1022
#### Expressions
1023 1023

  
1024
true_re = r'true'
1025
false_re = r'false'
1024
true_expr = 'true'
1025
false_expr = 'false'
1026

  
1027
true_re = true_expr
1028
false_re = false_expr
1026 1029
bool_re = r'(?:'+true_re+r'|'+false_re+r')'
1027 1030
atom_re = r'(?:'+bool_re+r'|\([^()]*\)'+r')'
1028 1031

  
......
1048 1051
def simplify_expr(expr):
1049 1052
    def simplify_logic_ops(expr):
1050 1053
        total_n = 0
1051
        expr, n = re.subn(and_false_re, 'false', expr)
1054
        expr, n = re.subn(and_false_re, false_expr, expr)
1052 1055
        total_n += n
1053 1056
        expr, n = re.subn(or_and_true_re, r'', expr)
1054 1057
        total_n += n
1055 1058
        return expr, total_n
1056 1059
    
1057
    expr = expr.replace('(NULL IS NULL)', 'true')
1058
    expr = expr.replace('(NULL IS NOT NULL)', 'false')
1060
    expr = expr.replace('(NULL IS NULL)', true_expr)
1061
    expr = expr.replace('(NULL IS NOT NULL)', false_expr)
1059 1062
    expr = simplify_recursive(simplify_logic_ops, expr)
1060 1063
    return expr
1061 1064

  

Also available in: Unified diff