module Sequel::Plugins::InsertReturningSelect::ClassMethods

Constants

RETURN_ALL

Attributes

instance_insert_dataset[R]

The dataset to use to insert new rows. For internal use only.

Private Instance Methods

insert_returning_columns(ds) click to toggle source

Determine the columns to use for the returning clause, or return nil if they can’t be determined and a returning clause should not be added automatically.

   # File lib/sequel/plugins/insert_returning_select.rb
54 def insert_returning_columns(ds)
55   return unless ds.supports_returning?(:insert)
56   return unless values = ds.opts[:select]
57 
58   # SELECT table.* -> RETURNING *
59   if values.length == 1 && values[0].is_a?(Sequel::SQL::ColumnAll)
60     return RETURN_ALL
61   end
62 
63   # SELECT column1, table.column2, ... -> RETURNING column1, column2, ...
64   values = values.map{|v| ds.unqualified_column_for(v)}
65   if values.all?
66     values
67   end
68 end
reset_instance_dataset() click to toggle source

When reseting the instance dataset, also reset the instance_insert_dataset.

Calls superclass method
   # File lib/sequel/plugins/insert_returning_select.rb
36 def reset_instance_dataset
37   ret = super
38   return unless ds = @instance_dataset
39 
40   if columns = insert_returning_columns(ds)
41     ds = ds.returning(*columns)
42   end
43   @instance_insert_dataset = ds
44 
45   ret
46 end