Class: KnjDB_mysql_unbuffered_result
- Defined in:
- lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb
Instance Method Summary collapse
- #each ⇒ Object
- #fetch ⇒ Object
-
#initialize(conn, opts, result) ⇒ KnjDB_mysql_unbuffered_result
constructor
A new instance of KnjDB_mysql_unbuffered_result.
- #load_keys ⇒ Object
Constructor Details
#initialize(conn, opts, result) ⇒ KnjDB_mysql_unbuffered_result
Returns a new instance of KnjDB_mysql_unbuffered_result.
374 375 376 377 378 379 380 381 382 383 384 385 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb', line 374 def initialize(conn, opts, result) @conn = conn @result = result if !opts.key?(:result) or opts[:result] == "hash" @as_hash = true elsif opts[:result] == "array" @as_hash = false else raise "Unknown type of result: '#{opts[:result]}'." end end |
Instance Method Details
#each ⇒ Object
434 435 436 437 438 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb', line 434 def each while data = self.fetch yield(data) end end |
#fetch ⇒ Object
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb', line 395 def fetch if @enum begin ret = @enum.next rescue StopIteration @enum = nil @res = nil end end if !ret and !@res and !@enum begin @res = @conn.use_result @enum = @res.to_enum ret = @enum.next rescue Mysql::Error #Reset it to run non-unbuffered again and then return false. @conn.query_with_result = true return false rescue StopIteration sleep 0.1 retry end end if !@as_hash return ret else self.load_keys if !@keys ret_h = {} @keys.each_index do |key_no| ret_h[@keys[key_no]] = ret[key_no] end return ret_h end end |
#load_keys ⇒ Object
387 388 389 390 391 392 393 |
# File 'lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb', line 387 def load_keys @keys = [] keys = @res.fetch_fields keys.each do |key| @keys << key.name.to_sym end end |