/usr/lib/ruby/vendor_ruby/sequel/extensions/select_remove.rb is in ruby-sequel 3.36.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # The select_remove extension adds Sequel::Dataset#select_remove for removing existing selected
# columns from a dataset. It's not part of Sequel core as it is rarely needed and has
# some corner cases where it can't work correctly.
module Sequel
class Dataset
# Remove columns from the list of selected columns. If any of the currently selected
# columns use expressions/aliases, this will remove selected columns with the given
# aliases. It will also remove entries from the selection that match exactly:
#
# # Assume columns a, b, and c in items table
# DB[:items] # SELECT * FROM items
# DB[:items].select_remove(:c) # SELECT a, b FROM items
# DB[:items].select(:a, :b___c, :c___b).select_remove(:c) # SELECT a, c AS b FROM items
# DB[:items].select(:a, :b___c, :c___b).select_remove(:c___b) # SELECT a, b AS c FROM items
#
# Note that there are a few cases where this method may not work correctly:
#
# * This dataset joins multiple tables and does not have an existing explicit selection.
# In this case, the code will currently use unqualified column names for all columns
# the dataset returns, except for the columns given.
# * This dataset has an existing explicit selection containing an item that returns
# multiple database columns (e.g. :table.*, 'column1, column2'.lit). In this case,
# the behavior is undefined and this method should not be used.
#
# There may be other cases where this method does not work correctly, use it with caution.
def select_remove(*cols)
if (sel = @opts[:select]) && !sel.empty?
select(*(columns.zip(sel).reject{|c, s| cols.include?(c)}.map{|c, s| s} - cols))
else
select(*(columns - cols))
end
end
end
end
|