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