# pg_range_ops.rb

Path: | lib/sequel/extensions/pg_range_ops.rb
Last Update: | Sun May 19 07:59:58 +0000 2013

The pg_range_ops extension adds support to Sequel‘s DSL to make it easier to call PostgreSQL range functions and operators.

To load the extension:

      Sequel.extension :pg_range_ops

The most common usage is passing an expression to Sequel.pg_range_op:

      r = Sequel.pg_range_op(:range)

If you have also loaded the pg_range extension, you can use Sequel.pg_range as well:

      r = Sequel.pg_range(:range)

Also, on most Sequel expression objects, you can call the pg_range method:

      r = Sequel.expr(:range).pg_range

If you have loaded the core_extensions extension), you can also call Symbol#pg_range:

      r = :range.pg_range

This creates a Sequel::Postgres::RangeOp object that can be used for easier querying:

      r.contains(:other)      # range @> other
      r.contained_by(:other)  # range <@ other
      r.overlaps(:other)      # range && other
      r.left_of(:other)       # range << other
      r.right_of(:other)      # range >> other
      r.starts_before(:other) # range &< other
      r.ends_after(:other)    # range &> other
      r.adjacent_to(:other)   # range -|- other

      r.lower            # lower(range)
      r.upper            # upper(range)
      r.isempty          # isempty(range)
      r.lower_inc        # lower_inc(range)
      r.upper_inc        # upper_inc(range)
      r.lower_inf        # lower_inf(range)
      r.upper_inf        # upper_inf(range)

See the PostgreSQL range function and operator documentation for more details on what these functions and operators do.

If you are also using the pg_range extension, you should load it before loading this extension. Doing so will allow you to use PGArray#op to get an RangeOp, allowing you to perform range operations on range literals.

[Validate]