Revision 5366
Added by Aaron Marcuse-Kubitza over 12 years ago
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
sql.py: Added true_expr, false_expr and use them where their values are used