freeradius. cdrtool. patch
*** Warning: Linking the shared library rlm_sqlcounter.la against the loadable module
*** rlm_sql.so is not portable!
gcc -shared .libs/rlm_sqlcounter.o -L/usr/local/lib -lfreeradius-radius -lrlm_sql -lnsl -lresolv -lpthread -Wl,-soname -Wl,rlm_sqlcounte counter-2.1.12.so
/usr/bin/ld: cannot find -lrlm_sql
collect2: error: ld returned 1 exit status
libtool: install: error: relink `rlm_sqlcounter.la’ with the above command before installing it
Решение найдено в интеренет, как работает хуй знает – от этого тошно, но все же выглядит оно так:
надо конфигурить с параметром:
./configure --disable-cxx Эх, где ж вы спецы линуксовые хорошие. PS: помогло то, что скачал пакет из репозитория вместо того чтобы скачивать командой apt-get source freeradius.6.11.2014
Mysql. With recursive. Суммировать результаты запроса. Having.
Привет, давеча обнаружил что в таблице со звонками есть двойные звонки. Соответственно возникают две задачи:
1. Удалить дублирующися записи (легко),
2. Делать выборку без дублирующихся записей (легко),
3. Посчитать сумму звонков в продублированных записях. (интересно).
1 и 2 я опущу, это не интересно. А вот третий пункт делается так:
with recursive mytable as (select max(duration) from acc where time > ‘2014-08-01 00:00:00’ and srcip like ‘ip address’ and duration > 0 group by callid having count(callid) > 1) select sum(max) from mytable;
но это не включает секунды третьего звонка которые тоже есть.
создадим темповою табличку для экспериментов:
create temporary table acc2 as (select * from acc order by time desc limit 1000);
yooxy# delete from acc3 where id in (select max(id) from acc3 where time > ‘2014-08-01 00:00:00’ and srcip like ‘address’ and duration > 0 group by callid having count(callid) > 1);
DELETE 224
yooxy_1711=# delete from acc3 where id in (select max(id) from acc3 where time > ‘2014-08-01 00:00:00’ and srcip like ‘address’ and duration > 0 group by callid having count(callid) > 1);
DELETE 27
yooxy_1711=# delete from acc3 where id in (select max(id) from acc3 where time > ‘2014-08-01 00:00:00’ and srcip like ‘address’ and duration > 0 group by callid having count(callid) > 1);
DELETE 0.
правда это вручную, зато все под контролем. ну и удалим таблицу.
drop table acc2.
| Posted in Unix вопросы | No Comments »