SET `value` = `value`*2
, то всё будет работать нормально. Если сначала делается выборка, затем умножение в клиенте, затем запись, то может возникнуть состояние гонки. Чтобы его избежать надо использовать блокировки таблиц/строк, например через SELECT FOR UPDATE
acl badboys1 src 192.168.0.233/32
acl badboys2 src 192.168.0.234/31
acl badboys3 src 192.168.0.236/30
acl badboys4 src 192.168.0.240/28
acl localnet src 192.168.0.0/24
http_access deny badboys1
http_access deny badboys2
http_access deny badboys3
http_access deny badboys4
http_access allow localnet
function nod(m, n) {
var mult = 0;
while (true) {
if (0 == m) {
return n << mult;
}
if (0 == n) {
return m << mult;
}
if (1 == m || 1 == n) {
return 1 << mult;
}
if (m == n) {
return m << mult;
}
if (0 == (m & 1) && 0 == (n & 1)) {
mult++;
m >>= 1;
n >>= 1;
} else if (0 == (m & 1)) {
m >>= 1;
} else if (0 == (n & 1)) {
n >>= 1;
} else if (m > n) {
m = (m-n) >> 1;
} else {
n = (n-m) >> 1;
}
}
}
function reduceFrac(numerator, denomerator) {
var divider = nod(numerator, denomerator);
return {n: numerator/divider, d: denomerator/divider};
}