Sha256: dbb6030fa41ec939df059183168b4337e1f5304aff72c6c4a054c86532472f9a
Contents?: true
Size: 1.76 KB
Versions: 2
Compression:
Stored size: 1.76 KB
Contents
module SimpleMySQLPartitioning class SQL PARTITION_RANGE_LESS_VALUE = 'PARTITION %{name} VALUES LESS THAN ("%{value}")'.freeze class << self def exists_sql(table_name, partition_name) "SELECT table_schema, table_name, partition_name, partition_ordinal_position, table_rows FROM information_schema.partitions WHERE table_name='#{table_name}' AND partition_name='#{partition_name}' LIMIT 1;" end def create_sql(table_name, column, pairs_name_with_value, max_value = true) alter = "ALTER TABLE #{table_name} PARTITION BY RANGE COLUMNS(#{column})" partitions = pairs_name_with_value.map do |pair| format( PARTITION_RANGE_LESS_VALUE, name: pair.first, value: pair.last ) end alter + ' ' + "(#{partitions.join(',')})" end def add_sql(table_name, partition_name, value) "ALTER TABLE #{table_name} ADD PARTITION ( PARTITION #{partition_name} VALUES LESS THAN #{less_than(value)});" end def reorganize_sql(table_name, partition_name, value, reorganize_partition_name, max_value = 'MAXVALUE') "ALTER TABLE #{table_name} REORGANIZE PARTITION #{reorganize_partition_name} INTO ( PARTITION #{partition_name} VALUES LESS THAN ('#{value}'), PARTITION #{reorganize_partition_name} VALUES LESS THAN #{less_than(max_value)} );" end def parge_sql(table_name, partition_name) "ALTER TABLE #{table_name} DROP PARTITION #{partition_name};" end private def less_than(value) value == 'MAXVALUE' ? value : "('#{value}')" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
simple_mysql_partitioning-1.0.0 | lib/simple_mysql_partitioning/sql.rb |
simple_mysql_partitioning-0.3.0 | lib/simple_mysql_partitioning/sql.rb |