module SqlPartitioner
Constants
- VERSION
Public Instance Methods
_execute(sql)
click to toggle source
executes the sql @param [String] sql to be executed @return [Boolean] true
# File lib/sql_partitioner/base_partitions_manager.rb, line 196 def _execute(sql) if @lock_wait_timeout SqlPartitioner::LockWaitTimeoutHandler.with_lock_wait_timeout(@adapter, @lock_wait_timeout) do adapter.execute(sql) end else adapter.execute(sql) end end
_execute_and_display_partition_info(sql, dry_run=true)
click to toggle source
executes the sql and then displays the partition info @param [String] sql to be executed @param [Boolean] dry_run Defaults to true. If true, query wont be executed. @return [String/Boolean] returns SQL
to be executed if dry_run=true
# File lib/sql_partitioner/base_partitions_manager.rb, line 210 def _execute_and_display_partition_info(sql, dry_run=true) if sql if dry_run sql else _execute(sql) log "\n#{Partition.to_log(Partition.all(adapter, table_name))}", false true end else false end end
_raise_arg_err(err_message)
click to toggle source
# File lib/sql_partitioner/base_partitions_manager.rb, line 226 def _raise_arg_err(err_message) raise ArgumentError.new err_message end
_validate_class(parameter_name, parameter, expected_class)
click to toggle source
# File lib/sql_partitioner/base_partitions_manager.rb, line 126 def _validate_class(parameter_name, parameter, expected_class) if !parameter.kind_of?(expected_class) _raise_arg_err("class of #{parameter_name} expected to be #{expected_class} but instead was #{parameter.class}") end true end
_validate_drop_partitions_names(partition_names)
click to toggle source
# File lib/sql_partitioner/base_partitions_manager.rb, line 169 def _validate_drop_partitions_names(partition_names) _validate_partition_names(partition_names) _validate_partition_names_allowed_to_drop(partition_names) true end
_validate_partition_data(partition_data)
click to toggle source
# File lib/sql_partitioner/base_partitions_manager.rb, line 176 def _validate_partition_data(partition_data) _validate_class('partition_data', partition_data, Hash) partition_data.each_pair do |key, value| _validate_partition_name(key) _validate_timestamp(value) if key == FUTURE_PARTITION_NAME && value != FUTURE_PARTITION_VALUE || key != FUTURE_PARTITION_NAME && value == FUTURE_PARTITION_VALUE _raise_arg_err "future partition name '#{FUTURE_PARTITION_NAME}' must use timestamp '#{FUTURE_PARTITION_VALUE}',"\ "but got name #{key} and timestamp #{value}" end end true end
_validate_partition_name(partition_name)
click to toggle source
# File lib/sql_partitioner/base_partitions_manager.rb, line 141 def _validate_partition_name(partition_name) _validate_class('partition_name', partition_name, String) end
_validate_partition_names(partition_names)
click to toggle source
# File lib/sql_partitioner/base_partitions_manager.rb, line 145 def _validate_partition_names(partition_names) _validate_class('partition_names', partition_names, Array) partition_names.each do |name| _validate_partition_name(name) end true end
_validate_partition_names_allowed_to_drop(partition_names)
click to toggle source
# File lib/sql_partitioner/base_partitions_manager.rb, line 155 def _validate_partition_names_allowed_to_drop(partition_names) black_listed_partitions = [FUTURE_PARTITION_NAME] if active_partition = Partition.all(adapter, table_name).current_partition(self.current_timestamp) black_listed_partitions << active_partition.name end if (partition_names & black_listed_partitions).any? _raise_arg_err "current and future partition can never be dropped" end true end
_validate_timestamp(timestamp)
click to toggle source
# File lib/sql_partitioner/base_partitions_manager.rb, line 133 def _validate_timestamp(timestamp) return true if timestamp == FUTURE_PARTITION_VALUE _validate_positive_fixnum(:timestamp, timestamp) true end