Last Modified
  2013-07-28 22:14:36 +0000
Requires

## Description

The pg_array_ops extension adds support to Sequel's DSL to make it easier to call PostgreSQL array functions and operators.

To load the extension:

    Sequel.extension :pg_array_ops

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

    ia = Sequel.pg_array_op(:int_array_column)

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

    ia = Sequel.pg_array(:int_array_column)

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

    ia = Sequel.expr(:int_array_column).pg_array

If you have loaded the core_extensions extension), or you have loaded the core_refinements extension) and have activated refinements for the file, you can also use Symbol#pg_array:

    ia = :int_array_column.pg_array

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

    ia[1]     # int_array_column[1]
    ia[1][2]  # int_array_column[1][2]

    ia.contains(:other_int_array_column)     # @>
    ia.contained_by(:other_int_array_column) # <@
    ia.overlaps(:other_int_array_column)     # &&
    ia.concat(:other_int_array_column)       # ||

    ia.push(1)         # int_array_column || 1
    ia.unshift(1)      # 1 || int_array_column

    ia.any             # ANY(int_array_column)
    ia.all             # ALL(int_array_column)
    ia.dims            # array_dims(int_array_column)
    ia.length          # array_length(int_array_column, 1)
    ia.length(2)       # array_length(int_array_column, 2)
    ia.lower           # array_lower(int_array_column, 1)
    ia.lower(2)        # array_lower(int_array_column, 2)
    ia.join            # array_to_string(int_array_column, '', NULL)
    ia.join(':')       # array_to_string(int_array_column, ':', NULL)
    ia.join(':', ' ')  # array_to_string(int_array_column, ':', ' ')
    ia.unnest          # unnest(int_array_column)

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

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