Class: SimpleMySQLPartitioning::SQL
- Inherits:
-
Object
- Object
- SimpleMySQLPartitioning::SQL
- Defined in:
- lib/simple_mysql_partitioning/sql.rb
Constant Summary collapse
- PARTITION_RANGE_LESS_VALUE =
'PARTITION %{name} VALUES LESS THAN ("%{value}")'.freeze
Class Method Summary collapse
- .add_sql(table_name, partition_name, value) ⇒ Object
- .create_sql(table_name, column, pairs_name_with_value, max_value = true) ⇒ Object
- .exists_sql(table_name, partition_name) ⇒ Object
- .parge_sql(table_name, partition_name) ⇒ Object
- .reorganize_sql(table_name, partition_name, value, reorganize_partition_name, max_value = 'MAXVALUE') ⇒ Object
Class Method Details
.add_sql(table_name, partition_name, value) ⇒ Object
34 35 36 37 |
# File 'lib/simple_mysql_partitioning/sql.rb', line 34 def add_sql(table_name, partition_name, value) "ALTER TABLE #{table_name} ADD PARTITION ( PARTITION #{partition_name} VALUES LESS THAN #{less_than(value)});" end |
.create_sql(table_name, column, pairs_name_with_value, max_value = true) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/simple_mysql_partitioning/sql.rb', line 20 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 |
.exists_sql(table_name, partition_name) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/simple_mysql_partitioning/sql.rb', line 8 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 |
.parge_sql(table_name, partition_name) ⇒ Object
47 48 49 |
# File 'lib/simple_mysql_partitioning/sql.rb', line 47 def parge_sql(table_name, partition_name) "ALTER TABLE #{table_name} DROP PARTITION #{partition_name};" end |
.reorganize_sql(table_name, partition_name, value, reorganize_partition_name, max_value = 'MAXVALUE') ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/simple_mysql_partitioning/sql.rb', line 39 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 |