Module: Sequel::MySQL::DatabaseMethods
- Defined in:
- lib/sequel/adapters/shared/mysql.rb
Overview
Methods shared by Database instances that connect to MySQL, currently supported by the native and JDBC adapters.
Constant Summary collapse
- AUTO_INCREMENT =
'AUTO_INCREMENT'.freeze
- CAST_TYPES =
{String=>:CHAR, Integer=>:SIGNED, Time=>:DATETIME, DateTime=>:DATETIME, Numeric=>:DECIMAL, BigDecimal=>:DECIMAL, File=>:BINARY}
- PRIMARY =
'PRIMARY'.freeze
Instance Method Summary collapse
-
#cast_type_literal(type) ⇒ Object
MySQL’s cast rules are restrictive in that you can’t just cast to any possible database type.
-
#database_type ⇒ Object
MySQL uses the :mysql database type.
-
#indexes(table, opts = {}) ⇒ Object
Use SHOW INDEX FROM to get the index information for the table.
-
#server_version ⇒ Object
Get version of MySQL server, used for determined capabilities.
-
#supports_savepoints? ⇒ Boolean
MySQL supports savepoints.
-
#tables(opts = {}) ⇒ Object
Return an array of symbols specifying table names in the current database.
-
#use(db_name) ⇒ Object
Changes the database in use by issuing a USE statement.
Instance Method Details
#cast_type_literal(type) ⇒ Object
MySQL’s cast rules are restrictive in that you can’t just cast to any possible database type.
29 30 31 |
# File 'lib/sequel/adapters/shared/mysql.rb', line 29 def cast_type_literal(type) CAST_TYPES[type] || super end |
#database_type ⇒ Object
MySQL uses the :mysql database type
34 35 36 |
# File 'lib/sequel/adapters/shared/mysql.rb', line 34 def database_type :mysql end |
#indexes(table, opts = {}) ⇒ Object
Use SHOW INDEX FROM to get the index information for the table.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/sequel/adapters/shared/mysql.rb', line 39 def indexes(table, opts={}) indexes = {} remove_indexes = [] m = output_identifier_meth im = input_identifier_meth .with_sql("SHOW INDEX FROM ?", SQL::Identifier.new(im.call(table))).each do |r| name = r[:Key_name] next if name == PRIMARY name = m.call(name) remove_indexes << name if r[:Sub_part] i = indexes[name] ||= {:columns=>[], :unique=>r[:Non_unique] != 1} i[:columns] << m.call(r[:Column_name]) end indexes.reject{|k,v| remove_indexes.include?(k)} end |
#server_version ⇒ Object
Get version of MySQL server, used for determined capabilities.
56 57 58 59 |
# File 'lib/sequel/adapters/shared/mysql.rb', line 56 def server_version m = /(\d+)\.(\d+)\.(\d+)/.match(get(SQL::Function.new(:version))) @server_version ||= (m[1].to_i * 10000) + (m[2].to_i * 100) + m[3].to_i end |
#supports_savepoints? ⇒ Boolean
MySQL supports savepoints
71 72 73 |
# File 'lib/sequel/adapters/shared/mysql.rb', line 71 def supports_savepoints? true end |
#tables(opts = {}) ⇒ Object
Return an array of symbols specifying table names in the current database.
Options:
-
:server - Set the server to use
65 66 67 68 |
# File 'lib/sequel/adapters/shared/mysql.rb', line 65 def tables(opts={}) m = output_identifier_meth .with_sql('SHOW TABLES').server(opts[:server]).map{|r| m.call(r.values.first)} end |
#use(db_name) ⇒ Object
Changes the database in use by issuing a USE statement. I would be very careful if I used this.
77 78 79 80 81 82 |
# File 'lib/sequel/adapters/shared/mysql.rb', line 77 def use(db_name) disconnect @opts[:database] = db_name if self << "USE #{db_name}" @schemas = {} self end |