On Wednesday, September 18, 2013 2:59:02 PM UTC-7, Michael Lang wrote:
> DB[:ulog2].filter("timestamp > ?", now - 5.minutes).select{[
> BIN_TO_IPV4(:ip_saddr).as(:src_ip),
> BIN_TO_IPV4(:ip_daddr).as(:dst_ip),
> "sum(if(left(BIN_TO_IPV4(ip_saddr),11) = '192.168.50.', ip_totlen,
> 0))".lit.as(:outgoing_bytes),
> "sum(if(left(BIN_TO_IPV4(ip_saddr),11) = '192.168.50.', 0,
> ip_totlen))".lit.as(:incoming_bytes),
> sum(:ip_totlen).as(:volume),
> count(:_id).as(:packets),
> min(:timestamp).as(:flow_start),
> max(:timestamp).as(:flow_end)
> ]}.
> group(:ip_saddr, :ip_daddr)
>
> Gives....
>
> NoMethodError: undefined method ‘lit’ for #<String:0x007f91f4378da8>
>
String#lit not being available is unrelated to virtual row blocks.
Starting in Sequel 4, Sequel no longer modifies the core classes. If you
want to keep using String#lit, use:
Sequel.extension :core_extensions
Note that virtual row blocks offer a shortcut in creating literal strings
using the ` method:
DB[:ulog2].filter("timestamp > ?", now - 5.minutes).select{[
BIN_TO_IPV4(:ip_saddr).as(:src_ip),
BIN_TO_IPV4(:ip_daddr).as(:dst_ip),
`sum(if(left(BIN_TO_IPV4(ip_saddr),11) = '192.168.50.', ip_totlen,
0))`.as(:outgoing_bytes),
`sum(if(left(BIN_TO_IPV4(ip_saddr),11) = '192.168.50.', 0,
ip_totlen))`.as(:incoming_bytes),
sum(:ip_totlen).as(:volume),
count(:_id).as(:packets),
min(:timestamp).as(:flow_start),
max(:timestamp).as(:flow_end)
]}.
group(:ip_saddr, :ip_daddr)
Thanks,
Jeremy
>
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/groups/opt_out.