136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
# File 'lib/active_record/pg_extensions/postgresql_adapter.rb', line 136
def vacuum(*table_and_columns,
full: false,
freeze: false,
verbose: false,
analyze: false,
disable_page_skipping: false,
skip_locked: false,
index_cleanup: false,
truncate: false,
parallel: nil)
if parallel && !(parallel.is_a?(Integer) && parallel.positive?)
raise ArgumentError, "parallel must be a positive integer"
end
sql = +"VACUUM"
sql << " FULL" if full
sql << " FREEZE" if freeze
sql << " VERBOSE" if verbose
sql << " ANALYZE" if analyze
sql << " DISABLE_PAGE_SKIPPING" if disable_page_skipping
sql << " SKIP_LOCKED" if skip_locked
sql << " INDEX_CLEANUP" if index_cleanup
sql << " TRUNCATE" if truncate
sql << " PARALLEL #{parallel}" if parallel
sql << " " unless table_and_columns.empty?
sql << table_and_columns.map do |table|
if table.is_a?(Hash)
raise ArgumentError, "columns may only be specified if a analyze is specified" unless analyze
table.map do |table_name, columns|
"#{quote_table_name(table_name)} (#{Array.wrap(columns).map { |c| quote_column_name(c) }.join(", ")})"
end.join(", ")
else
quote_table_name(table)
end
end.join(", ")
execute(sql)
end
|