0
- TYPES = Hash[*Mysql_c.constants.select {|x| x.include?("MYSQL_TYPE")}.map {|x| [Mysql_c.const_get(x), x.gsub(/^MYSQL_TYPE_/, "")]}.flatten]
0
class Connection < DataObject::Connection
0
+ attr_
accessor :mysql_connection0
def initialize(connection_string)
0
@connection_string = connection_string
0
opts = connection_string.split(" ")
0
@@ -29,22 +26,13 @@ module DataObject
0
- @db = Mysql_c.mysql_init(nil)
0
- raise ConnectionFailed, "could not allocate a MySQL connection" unless @db
0
- conn = Mysql_c.mysql_real_connect(@db, @host, @user, @password, @dbname, @port || 0, @socket, @flags || 0)
0
- raise ConnectionFailed, "Unable to connect to database with provided connection string. \n#{Mysql_c.mysql_error(@db)}" unless conn
0
+ @mysql_connection = RbMysql::Connection.new(@host, @user, @password || '', @dbname, @port || 0, @socket, @flags || 0)
0
+ raise ConnectionFailed, "Unable to connect to database with provided connection string. \n#{Mysql_c.mysql_error(@db)}" unless @mysql_connection
0
- if @state == STATE_OPEN
0
- Mysql_c.mysql_close(@db)
0
+ @mysql_connection.close
0
def create_command(text)
0
@@ -98,52 +86,48 @@ module DataObject
0
@connection.logger.debug(sql)
0
-
Mysql_c.mysql_query(@connection.db, sql)
0
+
@connection.mysql_reader.execute_non_reader(sql)
0
class Reader < DataObject::Reader
0
- def initialize(db, reader)
0
- if Mysql_c.mysql_field_count(db) == 0
0
- @records_affected = Mysql_c.mysql_affected_rows(db)
0
+ def initialize(mysql_reader)
0
+ @mysql_reader = mysql_reader
0
+ if mysql_reader.field_count == 0
0
+ @records_affected = mysql_reader.affected_rows
0
- raise UnknownError, "An unknown error has occured while trying to process a MySQL query.\n#{
Mysql_c.mysql_error(db)}"
0
+ raise UnknownError, "An unknown error has occured while trying to process a MySQL query.\n#{
@mysql_reader.connection.last_error}"
0
- @field_count = @reader.field_count
0
+ @field_count = @mysql_reader.field_count
0
- @native_fields, @fields = Mysql_c.mysql_c_fetch_field_types(@reader, @field_count), Mysql_c.mysql_c_fetch_field_names(@reader, @field_count)
0
- raise UnknownError, "An unknown error has occured while trying to process a MySQL query. There were no fields in the resultset\n#{Mysql_c.mysql_error(db)}" if @native_fields.empty?
0
+ # @native_fields, @fields = Mysql_c.mysql_c_fetch_field_types(@reader, @field_count), Mysql_c.mysql_c_fetch_field_names(@reader, @field_count)
0
+ # raise UnknownError, "An unknown error has occured while trying to process a MySQL query. There were no fields in the resultset\n#{Mysql_c.mysql_error(db)}" if @native_fields.empty?
0
- @has_rows = !(@row =
Mysql_c.mysql_c_fetch_row(@reader)).nil?
0
+ @has_rows = !(@row =
@mysql_reader.fetch_row).nil?
0
+ def set_types(type_array)
0
+ @mysql_reader.set_types type_array
0
- if @state == STATE_OPEN
0
- Mysql_c.mysql_free_result(@reader)
0
+ @
mysql_reader.field_names[col]
0
+ @
mysql_reader.field_names.index(name)
0
@@ -157,12 +141,12 @@ module DataObject
0
-
typecast(@row[idx], idx)0
- @row =
Mysql_c.mysql_c_fetch_row(@reader)0
+ @row =
@mysql_reader.fetch_row0
@@ -176,36 +160,36 @@ module DataObject
0
- TYPES[@native_fields[col].type]
0
- def typecast(val, idx)
0
- return nil if val.nil? || val == "NULL"
0
- field = @native_fields[idx]
0
- when "SHORT", "LONG", "INT24", "LONGLONG"
0
- val == '' ? nil : val.to_i
0
- when "DECIMAL", "NEWDECIMAL", "FLOAT", "DOUBLE", "YEAR"
0
- when "TIMESTAMP", "DATETIME"
0
- DateTime.parse(val) rescue nil
0
- DateTime.parse(val).to_time rescue nil
0
- Date.parse(val) rescue nil
0
+ # def native_type(col)
0
+ # TYPES[@native_fields[col].type]
0
+ # def typecast(val, idx)
0
+ # return nil if val.nil? || val == "NULL"
0
+ # field = @native_fields[idx]
0
+ # when "SHORT", "LONG", "INT24", "LONGLONG"
0
+ # val == '' ? nil : val.to_i
0
+ # when "DECIMAL", "NEWDECIMAL", "FLOAT", "DOUBLE", "YEAR"
0
+ # when "TIMESTAMP", "DATETIME"
0
+ # DateTime.parse(val) rescue nil
0
+ # DateTime.parse(val).to_time rescue nil
0
+ # Date.parse(val) rescue nil
0
class Command < DataObject::Command
0
@@ -214,10 +198,9 @@ module DataObject
0
@connection.logger.debug { sql }
0
- result = Mysql_c.mysql_query(@connection.db, sql)
0
- raise QueryError, "Your query failed.\n#{Mysql_c.mysql_error(@connection.db)}\n#{@text}" unless result == 0
0
- reader = Reader.new(@connection.db, Mysql_c.mysql_use_result(@connection.db))
0
+ mysql_reader = @connection.mysql_connection.execute_reader(sql)
0
+ raise QueryError, "Your query failed.\n#{@connection.db.last_error}\n#{@text}" unless mysql_reader
0
+ reader = Reader.new(mysql_reader)
0
@@ -231,13 +214,10 @@ module DataObject
0
@connection.logger.debug { sql }
0
- result = Mysql_c.mysql_query(@connection.db, sql)
0
- raise QueryError, "Your query failed.\n#{Mysql_c.mysql_error(@connection.db)}\n#{@text}" unless result == 0
0
- reader = Mysql_c.mysql_store_result(@connection.db)
0
- raise QueryError, "You called execute_non_query on a query: #{@text}" if reader
0
- rows_affected = Mysql_c.mysql_affected_rows(@connection.db)
0
- Mysql_c.mysql_free_result(reader)
0
- return ResultData.new(@connection, rows_affected, Mysql_c.mysql_insert_id(@connection.db))
0
+ result = @connection.db.execute_non_reader(sql)
0
+ raise QueryError, "Your query failed.\n#{@connection.db.last_error}\n#{@text}" unless result
0
+ rows_affected = result.affected_rows
0
+ return ResultData.new(@connection, rows_affected, result.inserted_id)
Comments
No one has commented yet.