module Sequel::JDBC::MySQL::DatabaseMethods

Database instance methods for MySQL databases accessed via JDBC.

Constants

LAST_INSERT_ID

Private Instance Methods

database_exception_use_sqlstates?() click to toggle source

MySQL exception handling with SQLState is less accurate than with regexps.

# File lib/sequel/adapters/jdbc/mysql.rb, line 34
def database_exception_use_sqlstates?
  false
end
database_name() click to toggle source

The database name for the given database. Need to parse it out of the connection string, since the JDBC does no parsing on the given connection string by default.

# File lib/sequel/adapters/jdbc/mysql.rb, line 28
def database_name
  u = URI.parse(uri.sub(/\Ajdbc:/, ''))
  (m = /\/(.*)/.match(u.path)) && m[1]
end
disconnect_error?(exception, opts) click to toggle source

Raise a disconnect error if the SQL state of the cause of the exception indicates so.

Calls superclass method
# File lib/sequel/adapters/jdbc/mysql.rb, line 39
def disconnect_error?(exception, opts)
  exception.message =~ /\ACommunications link failure/ || super
end
execute_statement_insert(stmt, sql) click to toggle source

MySQL 5.1.12 JDBC adapter requires generated keys and previous versions don't mind.

# File lib/sequel/adapters/jdbc/mysql.rb, line 67
def execute_statement_insert(stmt, sql)
  stmt.executeUpdate(sql, JavaSQL::Statement.RETURN_GENERATED_KEYS)
end
last_insert_id(conn, opts=OPTS) click to toggle source

Get the last inserted id using LAST_INSERT_ID().

# File lib/sequel/adapters/jdbc/mysql.rb, line 44
def last_insert_id(conn, opts=OPTS)
  if stmt = opts[:stmt]
    rs = stmt.getGeneratedKeys
    begin
      if rs.next
        rs.getInt(1)
      else
        0
      end
    ensure
      rs.close
    end
  else
    statement(conn) do |st|
      rs = st.executeQuery(LAST_INSERT_ID)
      rs.next
      rs.getInt(1)
    end
  end
end
prepare_jdbc_statement(conn, sql, opts) click to toggle source

Return generated keys for insert statements.

Calls superclass method
# File lib/sequel/adapters/jdbc/mysql.rb, line 72
def prepare_jdbc_statement(conn, sql, opts)
  opts[:type] == :insert ? conn.prepareStatement(sql, JavaSQL::Statement.RETURN_GENERATED_KEYS) : super
end
schema_column_type(db_type) click to toggle source

Convert tinyint(1) type to boolean

# File lib/sequel/adapters/jdbc/mysql.rb, line 77
def schema_column_type(db_type)
  db_type =~ /\Atinyint\(1\)/ ? :boolean : super
end
setup_connection(conn) click to toggle source

Run the default connection setting SQL statements. Apply the connectiong setting SQLs for every new connection.

Calls superclass method
# File lib/sequel/adapters/jdbc/mysql.rb, line 83
def setup_connection(conn)
  mysql_connection_setting_sqls.each{|sql| statement(conn){|s| log_yield(sql){s.execute(sql)}}}
  super
end