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.

Reply via email to