add(Ops.MOD, "{0} % {1}", Precedence.ARITH_HIGH);
add(Ops.MATCHES, "{0} ~ {1}");
add(Ops.INDEX_OF, "strpos({0},{1})-1", Precedence.ARITH_LOW);
add(Ops.INDEX_OF_2ARGS, "strpos({0},{1})-1", Precedence.ARITH_LOW);
add(Ops.StringOps.LOCATE, "strpos({1},{0})");
add(Ops.StringOps.LOCATE2, "strpos(repeat('^',{2s}-1) || substr({1},{2s}),{0})");
add(Ops.LIKE_ESCAPE_IC, "{0} ilike {1} escape '{2s}'");
add(Ops.LIKE, "{0} like {1}");
add(Ops.LIKE_IC, "{0} ilike {1}");
add(Ops.ENDS_WITH, "{0} like {%1}");
add(Ops.ENDS_WITH_IC, "{0} ilike {%1}");
add(Ops.STARTS_WITH, "{0} like {1%}");
add(Ops.STARTS_WITH_IC, "{0} ilike {1%}");
add(Ops.STRING_CONTAINS, "{0} like {%1%}");
add(Ops.STRING_CONTAINS_IC, "{0} ilike {%1%}");
} else {
add(Ops.LIKE_IC, "{0} ilike {1} escape '" + escape + "'");
add(Ops.ENDS_WITH_IC, "{0} ilike {%1} escape '" + escape + "'");
add(Ops.STARTS_WITH_IC, "{0} ilike {1%} escape '" + escape + "'");
add(Ops.STRING_CONTAINS_IC, "{0} ilike {%1%} escape '" + escape + "'");
add(Ops.MathOps.RANDOM, "random()");
add(Ops.MathOps.LN, "ln({0})");
add(Ops.MathOps.LOG, "log({1},{0})");
add(Ops.MathOps.COSH, "(exp({0}) + exp({0} * -1)) / 2");