Class: Sequel::Mysql2::Database

Constant Summary

Constants included from Sequel::MySQL::MysqlMysql2::DatabaseMethods

Sequel::MySQL::MysqlMysql2::DatabaseMethods::MYSQL_DATABASE_DISCONNECT_ERRORS

Constants included from Sequel::MySQL::DatabaseMethods

Sequel::MySQL::DatabaseMethods::CAST_TYPES, Sequel::MySQL::DatabaseMethods::COLUMN_DEFINITION_ORDER

Constants inherited from Database

Database::ADAPTERS, Database::COLUMN_DEFINITION_ORDER, Database::COLUMN_SCHEMA_DATETIME_TYPES, Database::COLUMN_SCHEMA_STRING_TYPES, Database::COMBINABLE_ALTER_TABLE_OPS, Database::DEFAULT_DATABASE_ERROR_REGEXPS, Database::DEFAULT_STRING_COLUMN_SIZE, Database::EXTENSIONS, Database::OPTS, Database::SCHEMA_TYPE_CLASSES, Database::TRANSACTION_ISOLATION_LEVELS

Instance Attribute Summary collapse

Attributes included from Sequel::MySQL::DatabaseMethods

#default_charset, #default_collate, #default_engine

Attributes inherited from Database

#cache_schema, #check_string_typecast_bytesize, #dataset_class, #default_string_column_size, #log_connection_info, #log_warn_duration, #loggers, #opts, #pool, #prepared_statements, #sql_log_level, #timezone, #transaction_isolation_level

Instance Method Summary collapse

Methods included from Sequel::MySQL::MysqlMysql2::DatabaseMethods

#call_sproc, #execute

Methods included from Sequel::MySQL::DatabaseMethods

#cast_type_literal, #commit_prepared_transaction, #database_type, #foreign_key_list, #global_index_namespace?, #indexes, #mariadb?, #rename_tables, #rollback_prepared_transaction, #supports_create_table_if_not_exists?, #supports_generated_columns?, #supports_prepared_transactions?, #supports_savepoints?, #supports_savepoints_in_prepared_transactions?, #supports_timestamp_usecs?, #supports_transaction_isolation_levels?, #tables, #views, #with_advisory_lock

Methods inherited from Database

#<<, #[], adapter_class, adapter_scheme, #adapter_scheme, #add_column, #add_index, #add_servers, #after_commit, after_initialize, #after_rollback, #alter_table, #alter_table_generator, #call, #cast_type_literal, connect, #create_join_table, #create_join_table!, #create_join_table?, #create_or_replace_view, #create_table, #create_table!, #create_table?, #create_table_generator, #create_view, #database_type, #dataset, #disconnect, #disconnect_connection, #drop_column, #drop_index, #drop_join_table, #drop_table, #drop_table?, #drop_view, #execute_ddl, #extend_datasets, #extension, extension, #fetch, #from, #from_application_timestamp, #get, #global_index_namespace?, #in_transaction?, #initialize, #inspect, #literal, #literal_symbol, #literal_symbol_set, load_adapter, #log_connection_yield, #log_exception, #log_info, #logger=, #new_connection, #prepared_statement, #quote_identifier, register_extension, #remove_servers, #rename_column, #rename_table, #rollback_checker, #rollback_on_exit, #run, run_after_initialize, #schema, #schema_type_class, #select, #serial_primary_key_options, #servers, #set_column_default, #set_column_type, #set_prepared_statement, set_shared_adapter_scheme, #sharded?, #single_threaded?, #supports_create_table_if_not_exists?, #supports_deferrable_constraints?, #supports_deferrable_foreign_key_constraints?, #supports_drop_table_if_exists?, #supports_foreign_key_parsing?, #supports_index_parsing?, #supports_partial_indexes?, #supports_prepared_transactions?, #supports_savepoints?, #supports_savepoints_in_prepared_transactions?, #supports_schema_parsing?, #supports_table_listing?, #supports_transaction_isolation_levels?, #supports_transactional_ddl?, #supports_view_listing?, #supports_views_with_check_option?, #supports_views_with_local_check_option?, #synchronize, #table_exists?, #test_connection, #to_application_timestamp, #transaction, #typecast_value, #uri, #url, #valid_connection?

Constructor Details

This class inherits a constructor from Sequel::Database

Instance Attribute Details

#convert_tinyint_to_boolObject

Whether to convert tinyint columns to bool for this database



23
24
25
# File 'lib/sequel/adapters/mysql2.rb', line 23

def convert_tinyint_to_bool
  @convert_tinyint_to_bool
end

Instance Method Details

#connect(server) ⇒ Object

Connect to the database. In addition to the usual database options, the following options have effect:

:auto_is_null

Set to true to use MySQL default behavior of having a filter for an autoincrement column equals NULL to return the last inserted row.

:charset

Same as :encoding (:encoding takes precendence)

:encoding

Set all the related character sets for this connection (connection, client, database, server, and results).

The options hash is also passed to mysql2, and can include mysql2 options such as :local_infile.



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/sequel/adapters/mysql2.rb', line 37

def connect(server)
  opts = server_opts(server)
  opts[:username] ||= opts.delete(:user)
  opts[:flags] ||= 0
  opts[:flags] |= ::Mysql2::Client::FOUND_ROWS if ::Mysql2::Client.const_defined?(:FOUND_ROWS)
  opts[:encoding] ||= opts[:charset]
  conn = ::Mysql2::Client.new(opts)
  conn.query_options.merge!(:symbolize_keys=>true, :cache_rows=>false)
    
  if NativePreparedStatements
    conn.instance_variable_set(:@sequel_default_query_options, conn.query_options.dup)
  end

  sqls = mysql_connection_setting_sqls

  # Set encoding a slightly different way after connecting,
  # in case the READ_DEFAULT_GROUP overrode the provided encoding.
  # Doesn't work across implicit reconnects, but Sequel doesn't turn on
  # that feature.
  if encoding = opts[:encoding]
    sqls.unshift("SET NAMES #{conn.escape(encoding.to_s)}")
  end

  sqls.each{|sql| log_connection_yield(sql, conn){conn.query(sql)}}

  add_prepared_statements_cache(conn)
  conn
end

#execute_dui(sql, opts = OPTS) ⇒ Object



66
67
68
# File 'lib/sequel/adapters/mysql2.rb', line 66

def execute_dui(sql, opts=OPTS)
  execute(sql, opts){|c| return c.affected_rows}
end

#execute_insert(sql, opts = OPTS) ⇒ Object



70
71
72
# File 'lib/sequel/adapters/mysql2.rb', line 70

def execute_insert(sql, opts=OPTS)
  execute(sql, opts){|c| return c.last_id}
end

#freezeObject



74
75
76
77
# File 'lib/sequel/adapters/mysql2.rb', line 74

def freeze
  server_version
  super
end

#server_version(_server = nil) ⇒ Object

Return the version of the MySQL server to which we are connecting.



80
81
82
# File 'lib/sequel/adapters/mysql2.rb', line 80

def server_version(_server=nil)
  @server_version ||= super()
end