Class: PG::Result
- Inherits:
-
Object
- Object
- PG::Result
- Defined in:
- lib/tep/pg.rb
Instance Attribute Summary collapse
-
#rh ⇒ Object
Returns the value of attribute rh.
Instance Method Summary collapse
- #clear ⇒ Object
- #cmd_status ⇒ Object
- #cmd_tuples ⇒ Object
- #column_values(col) ⇒ Object
-
#each ⇒ Object
Hash-yielding iteration – matches ruby-pg’s #each.
-
#each_row ⇒ Object
Array-yielding iteration.
- #error_field(code) ⇒ Object
- #error_message ⇒ Object
- #fformat(col) ⇒ Object
- #fields ⇒ Object
- #fmod(col) ⇒ Object
- #fname(col) ⇒ Object
- #fnumber(name) ⇒ Object
- #ftype(col) ⇒ Object
- #getisnull(row, col) ⇒ Object
- #getlength(row, col) ⇒ Object
- #getvalue(row, col) ⇒ Object
-
#initialize(rh) ⇒ Result
constructor
A new instance of Result.
- #nfields ⇒ Object
- #ntuples ⇒ Object
- #num_fields ⇒ Object
-
#num_tuples ⇒ Object
ruby-pg aliases for ntuples / nfields.
-
#ok? ⇒ Boolean
True when the query reached the server and produced a non-error result (rows, command success, or empty query).
-
#sql_state ⇒ Object
ruby-pg’s PG::Result#error_field shortcut: 5-char SQLSTATE string.
- #status ⇒ Object
-
#value(row, col) ⇒ Object
ruby-pg’s #value is an alias for #getvalue.
- #values ⇒ Object
Constructor Details
#initialize(rh) ⇒ Result
Returns a new instance of Result.
614 615 616 |
# File 'lib/tep/pg.rb', line 614 def initialize(rh) @rh = rh end |
Instance Attribute Details
#rh ⇒ Object
Returns the value of attribute rh.
612 613 614 |
# File 'lib/tep/pg.rb', line 612 def rh @rh end |
Instance Method Details
#clear ⇒ Object
788 789 790 791 792 793 794 |
# File 'lib/tep/pg.rb', line 788 def clear if @rh >= 0 Pg.tep_pg_clear(@rh) @rh = -1 end 0 end |
#cmd_status ⇒ Object
638 639 640 |
# File 'lib/tep/pg.rb', line 638 def cmd_status @rh < 0 ? "" : Pg.tep_pg_cmd_status(@rh) end |
#cmd_tuples ⇒ Object
648 649 650 |
# File 'lib/tep/pg.rb', line 648 def cmd_tuples @rh < 0 ? 0 : Pg.tep_pg_cmd_tuples(@rh) end |
#column_values(col) ⇒ Object
733 734 735 736 737 738 739 740 741 742 743 |
# File 'lib/tep/pg.rb', line 733 def column_values(col) out = [""] out.delete_at(0) n = ntuples i = 0 while i < n out.push(getvalue(i, col)) i += 1 end out end |
#each ⇒ Object
Hash-yielding iteration – matches ruby-pg’s #each. Pre-builds the field-name array to skip a per-row fname call. The Hash shape is pinned to str_str_hash via a seed in lib/tep.rb; without that seed spinel widens to poly_poly_hash on first use.
770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 |
# File 'lib/tep/pg.rb', line 770 def each flds = fields n = ntuples w = flds.length i = 0 while i < n row = Tep.str_hash j = 0 while j < w row[flds[j]] = getvalue(i, j) j += 1 end yield row i += 1 end self end |
#each_row ⇒ Object
Array-yielding iteration. Cleaner shape than #each for hot paths – no Hash allocation per row.
747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 |
# File 'lib/tep/pg.rb', line 747 def each_row n = ntuples w = nfields i = 0 while i < n row = [""] row.delete_at(0) j = 0 while j < w row.push(getvalue(i, j)) j += 1 end yield row i += 1 end self end |
#error_field(code) ⇒ Object
634 635 636 |
# File 'lib/tep/pg.rb', line 634 def error_field(code) @rh < 0 ? "" : Pg.tep_pg_result_error_field(@rh, code) end |
#error_message ⇒ Object
630 631 632 |
# File 'lib/tep/pg.rb', line 630 def @rh < 0 ? "" : Pg.(@rh) end |
#fformat(col) ⇒ Object
676 677 678 |
# File 'lib/tep/pg.rb', line 676 def fformat(col) @rh < 0 ? 0 : Pg.tep_pg_fformat(@rh, col) end |
#fields ⇒ Object
701 702 703 704 705 706 707 708 709 710 711 |
# File 'lib/tep/pg.rb', line 701 def fields out = [""] out.delete_at(0) w = nfields j = 0 while j < w out.push(fname(j)) j += 1 end out end |
#fmod(col) ⇒ Object
680 681 682 |
# File 'lib/tep/pg.rb', line 680 def fmod(col) @rh < 0 ? -1 : Pg.tep_pg_fmod(@rh, col) end |
#fname(col) ⇒ Object
664 665 666 |
# File 'lib/tep/pg.rb', line 664 def fname(col) @rh < 0 ? "" : Pg.tep_pg_fname(@rh, col) end |
#fnumber(name) ⇒ Object
668 669 670 |
# File 'lib/tep/pg.rb', line 668 def fnumber(name) @rh < 0 ? -1 : Pg.tep_pg_fnumber(@rh, name) end |
#ftype(col) ⇒ Object
672 673 674 |
# File 'lib/tep/pg.rb', line 672 def ftype(col) @rh < 0 ? 0 : Pg.tep_pg_ftype(@rh, col) end |
#getisnull(row, col) ⇒ Object
688 689 690 |
# File 'lib/tep/pg.rb', line 688 def getisnull(row, col) @rh < 0 ? true : Pg.tep_pg_getisnull(@rh, row, col) == 1 end |
#getlength(row, col) ⇒ Object
692 693 694 |
# File 'lib/tep/pg.rb', line 692 def getlength(row, col) @rh < 0 ? 0 : Pg.tep_pg_getlength(@rh, row, col) end |
#getvalue(row, col) ⇒ Object
684 685 686 |
# File 'lib/tep/pg.rb', line 684 def getvalue(row, col) @rh < 0 ? "" : Pg.tep_pg_getvalue(@rh, row, col) end |
#nfields ⇒ Object
656 657 658 |
# File 'lib/tep/pg.rb', line 656 def nfields @rh < 0 ? 0 : Pg.tep_pg_nfields(@rh) end |
#ntuples ⇒ Object
652 653 654 |
# File 'lib/tep/pg.rb', line 652 def ntuples @rh < 0 ? 0 : Pg.tep_pg_ntuples(@rh) end |
#num_fields ⇒ Object
662 |
# File 'lib/tep/pg.rb', line 662 def num_fields; nfields; end |
#num_tuples ⇒ Object
ruby-pg aliases for ntuples / nfields.
661 |
# File 'lib/tep/pg.rb', line 661 def num_tuples; ntuples; end |
#ok? ⇒ Boolean
True when the query reached the server and produced a non-error result (rows, command success, or empty query). Inspect ‘error_message` / `error_field(5)` on a non-ok result.
625 626 627 628 |
# File 'lib/tep/pg.rb', line 625 def ok? st = status st == Pg::RES_TUPLES || st == Pg::RES_COMMAND || st == Pg::RES_EMPTY end |
#sql_state ⇒ Object
ruby-pg’s PG::Result#error_field shortcut: 5-char SQLSTATE string. Empty when the result isn’t an error.
644 645 646 |
# File 'lib/tep/pg.rb', line 644 def sql_state error_field(PG::DIAG_SQLSTATE) end |
#status ⇒ Object
618 619 620 |
# File 'lib/tep/pg.rb', line 618 def status @rh < 0 ? Pg::RES_ERROR : Pg.tep_pg_result_status(@rh) end |
#value(row, col) ⇒ Object
ruby-pg’s #value is an alias for #getvalue.
697 698 699 |
# File 'lib/tep/pg.rb', line 697 def value(row, col) getvalue(row, col) end |
#values ⇒ Object
713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 |
# File 'lib/tep/pg.rb', line 713 def values rows = [[""]] rows.delete_at(0) n = ntuples w = nfields i = 0 while i < n row = [""] row.delete_at(0) j = 0 while j < w row.push(getvalue(i, j)) j += 1 end rows.push(row) i += 1 end rows end |