ruby-oci8 2.1.4 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.yardopts +1 -0
 - data/ChangeLog +67 -0
 - data/NEWS +21 -0
 - data/VERSION +1 -1
 - data/docs/platform-specific-issues.md +4 -24
 - data/ext/oci8/extconf.rb +2 -1
 - data/ext/oci8/lob.c +39 -26
 - data/ext/oci8/object.c +25 -1
 - data/ext/oci8/oci8.c +12 -42
 - data/ext/oci8/oci8.h +1 -3
 - data/ext/oci8/oci8lib.c +8 -0
 - data/ext/oci8/ocihandle.c +167 -188
 - data/ext/oci8/oraconf.rb +3 -2
 - data/lib/oci8.rb.in +1 -1
 - data/lib/oci8/metadata.rb +59 -67
 - data/lib/oci8/object.rb +0 -1
 - data/lib/oci8/oci8.rb +35 -35
 - data/lib/oci8/oracle_version.rb +7 -14
 - data/ruby-oci8.gemspec +31 -26
 - data/test/test_bind_time.rb +2 -2
 - data/test/test_connection_pool.rb +2 -2
 - data/test/test_metadata.rb +0 -2
 - data/test/test_object.rb +0 -1
 - data/test/test_oci8.rb +10 -2
 - metadata +4 -4
 
    
        data/ext/oci8/oci8.c
    CHANGED
    
    | 
         @@ -38,6 +38,8 @@ extern rb_pid_t rb_w32_getpid(void); 
     | 
|
| 
       38 
38 
     | 
    
         
             
            static VALUE cOCI8;
         
     | 
| 
       39 
39 
     | 
    
         
             
            static VALUE cSession;
         
     | 
| 
       40 
40 
     | 
    
         
             
            static VALUE cServer;
         
     | 
| 
      
 41 
     | 
    
         
            +
            static VALUE cEnvironment;
         
     | 
| 
      
 42 
     | 
    
         
            +
            static VALUE cProcess;
         
     | 
| 
       41 
43 
     | 
    
         
             
            static ID id_at_session_handle;
         
     | 
| 
       42 
44 
     | 
    
         
             
            static ID id_at_server_handle;
         
     | 
| 
       43 
45 
     | 
    
         | 
| 
         @@ -48,7 +50,7 @@ static VALUE dummy_env_method_missing(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       48 
50 
     | 
    
         | 
| 
       49 
51 
     | 
    
         
             
                if (self == obj) {
         
     | 
| 
       50 
52 
     | 
    
         
             
                    oci8_base_t *base;
         
     | 
| 
       51 
     | 
    
         
            -
                    obj = rb_obj_alloc( 
     | 
| 
      
 53 
     | 
    
         
            +
                    obj = rb_obj_alloc(cEnvironment);
         
     | 
| 
       52 
54 
     | 
    
         
             
                    base = DATA_PTR(obj);
         
     | 
| 
       53 
55 
     | 
    
         
             
                    base->type = OCI_HTYPE_ENV;
         
     | 
| 
       54 
56 
     | 
    
         
             
                    base->hp.ptr = oci8_envhp;
         
     | 
| 
         @@ -61,21 +63,16 @@ static VALUE dummy_env_method_missing(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       61 
63 
     | 
    
         
             
                return rb_apply(obj, SYM2ID(method_id), args);
         
     | 
| 
       62 
64 
     | 
    
         
             
            }
         
     | 
| 
       63 
65 
     | 
    
         | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
                oci8_base_t base;
         
     | 
| 
       66 
     | 
    
         
            -
                oci8_svcctx_t *svcctx;
         
     | 
| 
       67 
     | 
    
         
            -
            } oci8_svcctx_associate_t;
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
            static void oci8_svcctx_associate_free(oci8_base_t *base)
         
     | 
| 
      
 66 
     | 
    
         
            +
            static void oci8_dont_free_handle_free(oci8_base_t *base)
         
     | 
| 
       70 
67 
     | 
    
         
             
            {
         
     | 
| 
       71 
68 
     | 
    
         
             
                base->type = 0;
         
     | 
| 
       72 
69 
     | 
    
         
             
                base->hp.ptr = NULL;
         
     | 
| 
       73 
70 
     | 
    
         
             
            }
         
     | 
| 
       74 
71 
     | 
    
         | 
| 
       75 
     | 
    
         
            -
            static oci8_base_vtable_t  
     | 
| 
      
 72 
     | 
    
         
            +
            static oci8_base_vtable_t oci8_dont_free_handle_vtable = {
         
     | 
| 
       76 
73 
     | 
    
         
             
                NULL,
         
     | 
| 
       77 
     | 
    
         
            -
                 
     | 
| 
       78 
     | 
    
         
            -
                sizeof( 
     | 
| 
      
 74 
     | 
    
         
            +
                oci8_dont_free_handle_free,
         
     | 
| 
      
 75 
     | 
    
         
            +
                sizeof(oci8_base_t),
         
     | 
| 
       79 
76 
     | 
    
         
             
            };
         
     | 
| 
       80 
77 
     | 
    
         | 
| 
       81 
78 
     | 
    
         
             
            static void copy_session_handle(oci8_svcctx_t *svcctx)
         
     | 
| 
         @@ -163,8 +160,6 @@ static oci8_base_vtable_t oci8_svcctx_vtable = { 
     | 
|
| 
       163 
160 
     | 
    
         
             
            };
         
     | 
| 
       164 
161 
     | 
    
         | 
| 
       165 
162 
     | 
    
         
             
            static VALUE oracle_client_vernum; /* Oracle client version number */
         
     | 
| 
       166 
     | 
    
         
            -
            static ID id_at_prefetch_rows;
         
     | 
| 
       167 
     | 
    
         
            -
            static ID id_set_prefetch_rows;
         
     | 
| 
       168 
163 
     | 
    
         | 
| 
       169 
164 
     | 
    
         
             
            static VALUE oci8_s_oracle_client_vernum(VALUE klass)
         
     | 
| 
       170 
165 
     | 
    
         
             
            {
         
     | 
| 
         @@ -776,23 +771,6 @@ static VALUE oci8_break(VALUE self) 
     | 
|
| 
       776 
771 
     | 
    
         
             
                return Qtrue;
         
     | 
| 
       777 
772 
     | 
    
         
             
            }
         
     | 
| 
       778 
773 
     | 
    
         | 
| 
       779 
     | 
    
         
            -
            /*
         
     | 
| 
       780 
     | 
    
         
            -
             * call-seq:
         
     | 
| 
       781 
     | 
    
         
            -
             *   prefetch_rows = number
         
     | 
| 
       782 
     | 
    
         
            -
             *
         
     | 
| 
       783 
     | 
    
         
            -
             * Sets the prefetch rows size. The default value is one.
         
     | 
| 
       784 
     | 
    
         
            -
             * When a select statement is executed, the OCI library allocate
         
     | 
| 
       785 
     | 
    
         
            -
             * prefetch buffer to reduce the number of network round trips by
         
     | 
| 
       786 
     | 
    
         
            -
             * retrieving specified number of rows in one round trip.
         
     | 
| 
       787 
     | 
    
         
            -
             *
         
     | 
| 
       788 
     | 
    
         
            -
             * Note: Active record adaptors set 100 by default.
         
     | 
| 
       789 
     | 
    
         
            -
             */
         
     | 
| 
       790 
     | 
    
         
            -
            static VALUE oci8_set_prefetch_rows(VALUE self, VALUE val)
         
     | 
| 
       791 
     | 
    
         
            -
            {
         
     | 
| 
       792 
     | 
    
         
            -
                rb_ivar_set(self, id_at_prefetch_rows, val);
         
     | 
| 
       793 
     | 
    
         
            -
                return val;
         
     | 
| 
       794 
     | 
    
         
            -
            }
         
     | 
| 
       795 
     | 
    
         
            -
             
     | 
| 
       796 
774 
     | 
    
         
             
            /*
         
     | 
| 
       797 
775 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       798 
776 
     | 
    
         
             
             *   oracle_server_vernum -> an integer
         
     | 
| 
         @@ -1124,8 +1102,10 @@ void Init_oci8(VALUE *out) 
     | 
|
| 
       1124 
1102 
     | 
    
         
             
                cOCI8 = rb_define_class("OCI8", oci8_cOCIHandle);
         
     | 
| 
       1125 
1103 
     | 
    
         
             
            #endif
         
     | 
| 
       1126 
1104 
     | 
    
         
             
                cOCI8 = oci8_define_class("OCI8", &oci8_svcctx_vtable);
         
     | 
| 
       1127 
     | 
    
         
            -
                cSession = oci8_define_class_under(cOCI8, "Session", & 
     | 
| 
       1128 
     | 
    
         
            -
                cServer = oci8_define_class_under(cOCI8, "Server", & 
     | 
| 
      
 1105 
     | 
    
         
            +
                cSession = oci8_define_class_under(cOCI8, "Session", &oci8_dont_free_handle_vtable);
         
     | 
| 
      
 1106 
     | 
    
         
            +
                cServer = oci8_define_class_under(cOCI8, "Server", &oci8_dont_free_handle_vtable);
         
     | 
| 
      
 1107 
     | 
    
         
            +
                cEnvironment = oci8_define_class_under(cOCI8, "Environment", &oci8_dont_free_handle_vtable);
         
     | 
| 
      
 1108 
     | 
    
         
            +
                cProcess = oci8_define_class_under(cOCI8, "Process", &oci8_dont_free_handle_vtable);
         
     | 
| 
       1129 
1109 
     | 
    
         
             
                id_at_session_handle = rb_intern("@session_handle");
         
     | 
| 
       1130 
1110 
     | 
    
         
             
                id_at_server_handle = rb_intern("@server_handle");
         
     | 
| 
       1131 
1111 
     | 
    
         | 
| 
         @@ -1135,7 +1115,7 @@ void Init_oci8(VALUE *out) 
     | 
|
| 
       1135 
1115 
     | 
    
         
             
                rb_cv_set(cOCI8, "@@environment_handle", obj);
         
     | 
| 
       1136 
1116 
     | 
    
         | 
| 
       1137 
1117 
     | 
    
         
             
                /* setup the process handle */
         
     | 
| 
       1138 
     | 
    
         
            -
                obj = rb_obj_alloc( 
     | 
| 
      
 1118 
     | 
    
         
            +
                obj = rb_obj_alloc(cProcess);
         
     | 
| 
       1139 
1119 
     | 
    
         
             
                base = DATA_PTR(obj);
         
     | 
| 
       1140 
1120 
     | 
    
         
             
                base->type = OCI_HTYPE_PROC;
         
     | 
| 
       1141 
1121 
     | 
    
         
             
                base->self = Qnil;
         
     | 
| 
         @@ -1148,9 +1128,6 @@ void Init_oci8(VALUE *out) 
     | 
|
| 
       1148 
1128 
     | 
    
         
             
                    oracle_client_vernum = INT2FIX(ORAVERNUM(major, minor, update, patch, port_update));
         
     | 
| 
       1149 
1129 
     | 
    
         
             
                }
         
     | 
| 
       1150 
1130 
     | 
    
         | 
| 
       1151 
     | 
    
         
            -
                id_at_prefetch_rows = rb_intern("@prefetch_rows");
         
     | 
| 
       1152 
     | 
    
         
            -
                id_set_prefetch_rows = rb_intern("prefetch_rows=");
         
     | 
| 
       1153 
     | 
    
         
            -
             
     | 
| 
       1154 
1131 
     | 
    
         
             
                rb_define_const(cOCI8, "VERSION", rb_obj_freeze(rb_usascii_str_new_cstr(OCI8LIB_VERSION)));
         
     | 
| 
       1155 
1132 
     | 
    
         
             
                rb_define_singleton_method_nodoc(cOCI8, "oracle_client_vernum", oci8_s_oracle_client_vernum, 0);
         
     | 
| 
       1156 
1133 
     | 
    
         
             
                rb_define_singleton_method(cOCI8, "__get_prop", oci8_s_get_prop, 1);
         
     | 
| 
         @@ -1171,7 +1148,6 @@ void Init_oci8(VALUE *out) 
     | 
|
| 
       1171 
1148 
     | 
    
         
             
                rb_define_method(cOCI8, "long_read_len", oci8_long_read_len, 0);
         
     | 
| 
       1172 
1149 
     | 
    
         
             
                rb_define_method(cOCI8, "long_read_len=", oci8_set_long_read_len, 1);
         
     | 
| 
       1173 
1150 
     | 
    
         
             
                rb_define_method(cOCI8, "break", oci8_break, 0);
         
     | 
| 
       1174 
     | 
    
         
            -
                rb_define_method(cOCI8, "prefetch_rows=", oci8_set_prefetch_rows, 1);
         
     | 
| 
       1175 
1151 
     | 
    
         
             
                rb_define_private_method(cOCI8, "oracle_server_vernum", oci8_oracle_server_vernum, 0);
         
     | 
| 
       1176 
1152 
     | 
    
         
             
                rb_define_method(cOCI8, "ping", oci8_ping, 0);
         
     | 
| 
       1177 
1153 
     | 
    
         
             
                rb_define_method(cOCI8, "client_identifier=", oci8_set_client_identifier, 1);
         
     | 
| 
         @@ -1186,12 +1162,6 @@ oci8_svcctx_t *oci8_get_svcctx(VALUE obj) 
     | 
|
| 
       1186 
1162 
     | 
    
         
             
                return (oci8_svcctx_t *)oci8_get_handle(obj, cOCI8);
         
     | 
| 
       1187 
1163 
     | 
    
         
             
            }
         
     | 
| 
       1188 
1164 
     | 
    
         | 
| 
       1189 
     | 
    
         
            -
            OCISvcCtx *oci8_get_oci_svcctx(VALUE obj)
         
     | 
| 
       1190 
     | 
    
         
            -
            {
         
     | 
| 
       1191 
     | 
    
         
            -
                oci8_svcctx_t *svcctx = oci8_get_svcctx(obj);
         
     | 
| 
       1192 
     | 
    
         
            -
                return svcctx->base.hp.svc;
         
     | 
| 
       1193 
     | 
    
         
            -
            }
         
     | 
| 
       1194 
     | 
    
         
            -
             
     | 
| 
       1195 
1165 
     | 
    
         
             
            OCISession *oci8_get_oci_session(VALUE obj)
         
     | 
| 
       1196 
1166 
     | 
    
         
             
            {
         
     | 
| 
       1197 
1167 
     | 
    
         
             
                oci8_svcctx_t *svcctx = oci8_get_svcctx(obj);
         
     | 
    
        data/ext/oci8/oci8.h
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            /*
         
     | 
| 
       3 
3 
     | 
    
         
             
             * oci8.h - part of ruby-oci8
         
     | 
| 
       4 
4 
     | 
    
         
             
             *
         
     | 
| 
       5 
     | 
    
         
            -
             * Copyright (C) 2002- 
     | 
| 
      
 5 
     | 
    
         
            +
             * Copyright (C) 2002-2013 Kubo Takehiro <kubo@jiubao.org>
         
     | 
| 
       6 
6 
     | 
    
         
             
             */
         
     | 
| 
       7 
7 
     | 
    
         
             
            #ifndef _RUBY_OCI_H_
         
     | 
| 
       8 
8 
     | 
    
         
             
            #define _RUBY_OCI_H_ 1
         
     | 
| 
         @@ -494,10 +494,8 @@ void Init_oci8_handle(void); 
     | 
|
| 
       494 
494 
     | 
    
         
             
            void Init_oci8(VALUE *out);
         
     | 
| 
       495 
495 
     | 
    
         
             
            void oci8_do_parse_connect_string(VALUE conn_str, VALUE *user, VALUE *pass, VALUE *dbname, VALUE *mode);
         
     | 
| 
       496 
496 
     | 
    
         
             
            oci8_svcctx_t *oci8_get_svcctx(VALUE obj);
         
     | 
| 
       497 
     | 
    
         
            -
            OCISvcCtx *oci8_get_oci_svcctx(VALUE obj);
         
     | 
| 
       498 
497 
     | 
    
         
             
            OCISession *oci8_get_oci_session(VALUE obj);
         
     | 
| 
       499 
498 
     | 
    
         
             
            void oci8_check_pid_consistency(oci8_svcctx_t *svcctx);
         
     | 
| 
       500 
     | 
    
         
            -
            #define TO_SVCCTX oci8_get_oci_svcctx
         
     | 
| 
       501 
499 
     | 
    
         
             
            #define TO_SESSION oci8_get_oci_session
         
     | 
| 
       502 
500 
     | 
    
         | 
| 
       503 
501 
     | 
    
         
             
            /* connection_pool.c */
         
     | 
    
        data/ext/oci8/oci8lib.c
    CHANGED
    
    | 
         @@ -22,6 +22,14 @@ ID oci8_id_div_op; 
     | 
|
| 
       22 
22 
     | 
    
         
             
            int oci8_in_finalizer = 0;
         
     | 
| 
       23 
23 
     | 
    
         
             
            VALUE oci8_cOCIHandle;
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
            #if defined __sun && defined __i386 && defined __GNUC__
         
     | 
| 
      
 26 
     | 
    
         
            +
            /* When a main function is invisible from Oracle instant
         
     | 
| 
      
 27 
     | 
    
         
            +
             * client 11.2.0.3 for Solaris x86 (32-bit), OCIEnvCreate()
         
     | 
| 
      
 28 
     | 
    
         
            +
             * fails by unknown reasons. We export it from ruby-oci8 instead
         
     | 
| 
      
 29 
     | 
    
         
            +
             * of ruby itself.
         
     | 
| 
      
 30 
     | 
    
         
            +
             */
         
     | 
| 
      
 31 
     | 
    
         
            +
            int main() { return 0; }
         
     | 
| 
      
 32 
     | 
    
         
            +
            #endif
         
     | 
| 
       25 
33 
     | 
    
         | 
| 
       26 
34 
     | 
    
         
             
            static VALUE mOCI8BindType;
         
     | 
| 
       27 
35 
     | 
    
         
             
            static VALUE cOCI8BindTypeBase;
         
     | 
    
        data/ext/oci8/ocihandle.c
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            /*
         
     | 
| 
       3 
3 
     | 
    
         
             
             * ocihandle.c
         
     | 
| 
       4 
4 
     | 
    
         
             
             *
         
     | 
| 
       5 
     | 
    
         
            -
             * Copyright (C) 2009- 
     | 
| 
      
 5 
     | 
    
         
            +
             * Copyright (C) 2009-2013 Kubo Takehiro <kubo@jiubao.org>
         
     | 
| 
       6 
6 
     | 
    
         
             
             *
         
     | 
| 
       7 
7 
     | 
    
         
             
             * implement OCIHandle
         
     | 
| 
       8 
8 
     | 
    
         
             
             *
         
     | 
| 
         @@ -103,243 +103,272 @@ static VALUE oci8_s_allocate(VALUE klass) 
     | 
|
| 
       103 
103 
     | 
    
         
             
                return obj;
         
     | 
| 
       104 
104 
     | 
    
         
             
            }
         
     | 
| 
       105 
105 
     | 
    
         | 
| 
      
 106 
     | 
    
         
            +
            enum datatype {
         
     | 
| 
      
 107 
     | 
    
         
            +
                DATATYPE_UB1,
         
     | 
| 
      
 108 
     | 
    
         
            +
                DATATYPE_UB2,
         
     | 
| 
      
 109 
     | 
    
         
            +
                DATATYPE_UB4,
         
     | 
| 
      
 110 
     | 
    
         
            +
                DATATYPE_UB8,
         
     | 
| 
      
 111 
     | 
    
         
            +
                DATATYPE_SB1,
         
     | 
| 
      
 112 
     | 
    
         
            +
                DATATYPE_SB2,
         
     | 
| 
      
 113 
     | 
    
         
            +
                DATATYPE_SB4,
         
     | 
| 
      
 114 
     | 
    
         
            +
                DATATYPE_SB8,
         
     | 
| 
      
 115 
     | 
    
         
            +
                DATATYPE_BOOLEAN,
         
     | 
| 
      
 116 
     | 
    
         
            +
                DATATYPE_STRING,
         
     | 
| 
      
 117 
     | 
    
         
            +
                DATATYPE_BINARY,
         
     | 
| 
      
 118 
     | 
    
         
            +
                DATATYPE_INTEGER,
         
     | 
| 
      
 119 
     | 
    
         
            +
                DATATYPE_ORADATE,
         
     | 
| 
      
 120 
     | 
    
         
            +
            };
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
            static VALUE attr_get_common(int argc, VALUE *argv, VALUE self, enum datatype datatype)
         
     | 
| 
      
 123 
     | 
    
         
            +
            {
         
     | 
| 
      
 124 
     | 
    
         
            +
                oci8_base_t *base = DATA_PTR(self);
         
     | 
| 
      
 125 
     | 
    
         
            +
                VALUE attr_type;
         
     | 
| 
      
 126 
     | 
    
         
            +
                VALUE strict;
         
     | 
| 
      
 127 
     | 
    
         
            +
                union {
         
     | 
| 
      
 128 
     | 
    
         
            +
                    ub1 ub1val;
         
     | 
| 
      
 129 
     | 
    
         
            +
                    ub2 ub2val;
         
     | 
| 
      
 130 
     | 
    
         
            +
                    ub4 ub4val;
         
     | 
| 
      
 131 
     | 
    
         
            +
                    ub8 ub8val;
         
     | 
| 
      
 132 
     | 
    
         
            +
                    sb1 sb1val;
         
     | 
| 
      
 133 
     | 
    
         
            +
                    sb2 sb2val;
         
     | 
| 
      
 134 
     | 
    
         
            +
                    sb4 sb4val;
         
     | 
| 
      
 135 
     | 
    
         
            +
                    sb8 sb8val;
         
     | 
| 
      
 136 
     | 
    
         
            +
                    boolean booleanval;
         
     | 
| 
      
 137 
     | 
    
         
            +
                    char *charptr;
         
     | 
| 
      
 138 
     | 
    
         
            +
                    ub1 *ub1ptr;
         
     | 
| 
      
 139 
     | 
    
         
            +
                } v;
         
     | 
| 
      
 140 
     | 
    
         
            +
                ub4 size = 0;
         
     | 
| 
      
 141 
     | 
    
         
            +
                sword rv;
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
                v.ub8val = MAGIC_NUMBER;
         
     | 
| 
      
 144 
     | 
    
         
            +
                rb_scan_args(argc, argv, "11", &attr_type, &strict);
         
     | 
| 
      
 145 
     | 
    
         
            +
                if (argc == 1) {
         
     | 
| 
      
 146 
     | 
    
         
            +
                    strict = Qtrue;
         
     | 
| 
      
 147 
     | 
    
         
            +
                }
         
     | 
| 
      
 148 
     | 
    
         
            +
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
      
 149 
     | 
    
         
            +
                rv = OCIAttrGet(base->hp.ptr, base->type, &v, &size, FIX2INT(attr_type), oci8_errhp);
         
     | 
| 
      
 150 
     | 
    
         
            +
                if (!RTEST(strict)) {
         
     | 
| 
      
 151 
     | 
    
         
            +
                    if (rv == OCI_ERROR && oci8_get_error_code(oci8_errhp) == 24328) {
         
     | 
| 
      
 152 
     | 
    
         
            +
            			/* ignore ORA-24328: illegal attribute value */
         
     | 
| 
      
 153 
     | 
    
         
            +
                        return Qnil;
         
     | 
| 
      
 154 
     | 
    
         
            +
                    }
         
     | 
| 
      
 155 
     | 
    
         
            +
                }
         
     | 
| 
      
 156 
     | 
    
         
            +
                chker2(rv, base);
         
     | 
| 
      
 157 
     | 
    
         
            +
                switch (datatype) {
         
     | 
| 
      
 158 
     | 
    
         
            +
                    OCINumber onum;
         
     | 
| 
      
 159 
     | 
    
         
            +
                    static VALUE cOraDate = Qnil;
         
     | 
| 
      
 160 
     | 
    
         
            +
                case DATATYPE_UB1:
         
     | 
| 
      
 161 
     | 
    
         
            +
                    return INT2FIX(v.ub1val);
         
     | 
| 
      
 162 
     | 
    
         
            +
                case DATATYPE_UB2:
         
     | 
| 
      
 163 
     | 
    
         
            +
                    return INT2FIX(v.ub2val);
         
     | 
| 
      
 164 
     | 
    
         
            +
                case DATATYPE_UB4:
         
     | 
| 
      
 165 
     | 
    
         
            +
                    return UINT2NUM(v.ub4val);
         
     | 
| 
      
 166 
     | 
    
         
            +
                case DATATYPE_UB8:
         
     | 
| 
      
 167 
     | 
    
         
            +
                    return ULL2NUM(v.ub8val);
         
     | 
| 
      
 168 
     | 
    
         
            +
                case DATATYPE_SB1:
         
     | 
| 
      
 169 
     | 
    
         
            +
                    return INT2FIX(v.sb1val);
         
     | 
| 
      
 170 
     | 
    
         
            +
                case DATATYPE_SB2:
         
     | 
| 
      
 171 
     | 
    
         
            +
                    return INT2FIX(v.sb2val);
         
     | 
| 
      
 172 
     | 
    
         
            +
                case DATATYPE_SB4:
         
     | 
| 
      
 173 
     | 
    
         
            +
                    return INT2NUM(v.sb4val);
         
     | 
| 
      
 174 
     | 
    
         
            +
                case DATATYPE_SB8:
         
     | 
| 
      
 175 
     | 
    
         
            +
                    return LL2NUM(v.sb8val);
         
     | 
| 
      
 176 
     | 
    
         
            +
                case DATATYPE_BOOLEAN:
         
     | 
| 
      
 177 
     | 
    
         
            +
                    return v.booleanval ? Qtrue : Qfalse;
         
     | 
| 
      
 178 
     | 
    
         
            +
                case DATATYPE_STRING:
         
     | 
| 
      
 179 
     | 
    
         
            +
                    if (size == 0 && !RTEST(strict)) {
         
     | 
| 
      
 180 
     | 
    
         
            +
                        return Qnil;
         
     | 
| 
      
 181 
     | 
    
         
            +
                    }
         
     | 
| 
      
 182 
     | 
    
         
            +
                    return rb_external_str_new_with_enc(v.charptr, size, oci8_encoding);
         
     | 
| 
      
 183 
     | 
    
         
            +
                case DATATYPE_BINARY:
         
     | 
| 
      
 184 
     | 
    
         
            +
                    return rb_tainted_str_new(v.charptr, size);
         
     | 
| 
      
 185 
     | 
    
         
            +
                case DATATYPE_INTEGER:
         
     | 
| 
      
 186 
     | 
    
         
            +
                    if (size > sizeof(onum.OCINumberPart) - 1) {
         
     | 
| 
      
 187 
     | 
    
         
            +
                        rb_raise(rb_eRuntimeError, "Too long size %u", size);
         
     | 
| 
      
 188 
     | 
    
         
            +
                    }
         
     | 
| 
      
 189 
     | 
    
         
            +
                    memset(&onum, 0, sizeof(onum));
         
     | 
| 
      
 190 
     | 
    
         
            +
                    onum.OCINumberPart[0] = size;
         
     | 
| 
      
 191 
     | 
    
         
            +
                    memcpy(&onum.OCINumberPart[1], v.ub1ptr, size);
         
     | 
| 
      
 192 
     | 
    
         
            +
                    return oci8_make_integer(&onum, oci8_errhp);
         
     | 
| 
      
 193 
     | 
    
         
            +
                case DATATYPE_ORADATE:
         
     | 
| 
      
 194 
     | 
    
         
            +
                    if (NIL_P(cOraDate))
         
     | 
| 
      
 195 
     | 
    
         
            +
                        cOraDate = rb_eval_string("OraDate");
         
     | 
| 
      
 196 
     | 
    
         
            +
                    return rb_funcall(cOraDate, oci8_id_new, 6,
         
     | 
| 
      
 197 
     | 
    
         
            +
                                      INT2FIX((v.ub1ptr[0] - 100) * 100 + (v.ub1ptr[1] - 100)),
         
     | 
| 
      
 198 
     | 
    
         
            +
                                      INT2FIX(v.ub1ptr[2]),
         
     | 
| 
      
 199 
     | 
    
         
            +
                                      INT2FIX(v.ub1ptr[3]),
         
     | 
| 
      
 200 
     | 
    
         
            +
                                      INT2FIX(v.ub1ptr[4] - 1),
         
     | 
| 
      
 201 
     | 
    
         
            +
                                      INT2FIX(v.ub1ptr[5] - 1),
         
     | 
| 
      
 202 
     | 
    
         
            +
                                      INT2FIX(v.ub1ptr[6] - 1));
         
     | 
| 
      
 203 
     | 
    
         
            +
                }
         
     | 
| 
      
 204 
     | 
    
         
            +
                return Qnil;
         
     | 
| 
      
 205 
     | 
    
         
            +
            }
         
     | 
| 
      
 206 
     | 
    
         
            +
             
     | 
| 
       106 
207 
     | 
    
         
             
            /*
         
     | 
| 
       107 
208 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       108 
     | 
    
         
            -
             *   attr_get_ub1(attr_type)
         
     | 
| 
      
 209 
     | 
    
         
            +
             *   attr_get_ub1(attr_type, strict = true)
         
     | 
| 
       109 
210 
     | 
    
         
             
             *
         
     | 
| 
       110 
211 
     | 
    
         
             
             * Gets the value of an attribute as `ub1' datatype.
         
     | 
| 
       111 
212 
     | 
    
         
             
             *
         
     | 
| 
       112 
213 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 214 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       113 
215 
     | 
    
         
             
             * @return [Fixnum]
         
     | 
| 
       114 
216 
     | 
    
         
             
             *
         
     | 
| 
       115 
217 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       116 
218 
     | 
    
         
             
             * @private
         
     | 
| 
       117 
219 
     | 
    
         
             
             */
         
     | 
| 
       118 
     | 
    
         
            -
            static VALUE attr_get_ub1(VALUE  
     | 
| 
      
 220 
     | 
    
         
            +
            static VALUE attr_get_ub1(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       119 
221 
     | 
    
         
             
            {
         
     | 
| 
       120 
     | 
    
         
            -
                 
     | 
| 
       121 
     | 
    
         
            -
                union {
         
     | 
| 
       122 
     | 
    
         
            -
                    ub1 value;
         
     | 
| 
       123 
     | 
    
         
            -
                    ub8 dummy; /* padding for incorrect attrtype to protect the stack */
         
     | 
| 
       124 
     | 
    
         
            -
                } v;
         
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
                v.dummy = MAGIC_NUMBER;
         
     | 
| 
       127 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       128 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, NULL, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       129 
     | 
    
         
            -
                return INT2FIX(v.value);
         
     | 
| 
      
 222 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_UB1);
         
     | 
| 
       130 
223 
     | 
    
         
             
            }
         
     | 
| 
       131 
224 
     | 
    
         | 
| 
       132 
225 
     | 
    
         
             
            /*
         
     | 
| 
       133 
226 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       134 
     | 
    
         
            -
             *   attr_get_ub2(attr_type)
         
     | 
| 
      
 227 
     | 
    
         
            +
             *   attr_get_ub2(attr_type, strict = true)
         
     | 
| 
       135 
228 
     | 
    
         
             
             *
         
     | 
| 
       136 
229 
     | 
    
         
             
             * Gets the value of an attribute as `ub2' datatype.
         
     | 
| 
       137 
230 
     | 
    
         
             
             *
         
     | 
| 
       138 
231 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 232 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       139 
233 
     | 
    
         
             
             * @return [Fixnum]
         
     | 
| 
       140 
234 
     | 
    
         
             
             *
         
     | 
| 
       141 
235 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       142 
236 
     | 
    
         
             
             * @private
         
     | 
| 
       143 
237 
     | 
    
         
             
             */
         
     | 
| 
       144 
     | 
    
         
            -
            static VALUE attr_get_ub2(VALUE  
     | 
| 
      
 238 
     | 
    
         
            +
            static VALUE attr_get_ub2(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       145 
239 
     | 
    
         
             
            {
         
     | 
| 
       146 
     | 
    
         
            -
                 
     | 
| 
       147 
     | 
    
         
            -
                union {
         
     | 
| 
       148 
     | 
    
         
            -
                    ub2 value;
         
     | 
| 
       149 
     | 
    
         
            -
                    ub8 dummy; /* padding for incorrect attrtype to protect the stack */
         
     | 
| 
       150 
     | 
    
         
            -
                } v;
         
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
     | 
    
         
            -
                v.dummy = MAGIC_NUMBER;
         
     | 
| 
       153 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       154 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, NULL, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       155 
     | 
    
         
            -
                return INT2FIX(v.value);
         
     | 
| 
      
 240 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_UB2);
         
     | 
| 
       156 
241 
     | 
    
         
             
            }
         
     | 
| 
       157 
242 
     | 
    
         | 
| 
       158 
243 
     | 
    
         
             
            /*
         
     | 
| 
       159 
244 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       160 
     | 
    
         
            -
             *   attr_get_ub4(attr_type)
         
     | 
| 
      
 245 
     | 
    
         
            +
             *   attr_get_ub4(attr_type, strict = true)
         
     | 
| 
       161 
246 
     | 
    
         
             
             *
         
     | 
| 
       162 
247 
     | 
    
         
             
             * Gets the value of an attribute as `ub4' datatype.
         
     | 
| 
       163 
248 
     | 
    
         
             
             *
         
     | 
| 
       164 
249 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 250 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       165 
251 
     | 
    
         
             
             * @return [Integer]
         
     | 
| 
       166 
252 
     | 
    
         
             
             *
         
     | 
| 
       167 
253 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       168 
254 
     | 
    
         
             
             * @private
         
     | 
| 
       169 
255 
     | 
    
         
             
             */
         
     | 
| 
       170 
     | 
    
         
            -
            static VALUE attr_get_ub4(VALUE  
     | 
| 
      
 256 
     | 
    
         
            +
            static VALUE attr_get_ub4(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       171 
257 
     | 
    
         
             
            {
         
     | 
| 
       172 
     | 
    
         
            -
                 
     | 
| 
       173 
     | 
    
         
            -
                union {
         
     | 
| 
       174 
     | 
    
         
            -
                    ub4 value;
         
     | 
| 
       175 
     | 
    
         
            -
                    ub8 dummy; /* padding for incorrect attrtype to protect the stack */
         
     | 
| 
       176 
     | 
    
         
            -
                } v;
         
     | 
| 
       177 
     | 
    
         
            -
             
     | 
| 
       178 
     | 
    
         
            -
                v.dummy = MAGIC_NUMBER;
         
     | 
| 
       179 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       180 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, NULL, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       181 
     | 
    
         
            -
                return UINT2NUM(v.value);
         
     | 
| 
      
 258 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_UB4);
         
     | 
| 
       182 
259 
     | 
    
         
             
            }
         
     | 
| 
       183 
260 
     | 
    
         | 
| 
       184 
261 
     | 
    
         
             
            /*
         
     | 
| 
       185 
262 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       186 
     | 
    
         
            -
             *   attr_get_ub8(attr_type)
         
     | 
| 
      
 263 
     | 
    
         
            +
             *   attr_get_ub8(attr_type, strict = true)
         
     | 
| 
       187 
264 
     | 
    
         
             
             *
         
     | 
| 
       188 
265 
     | 
    
         
             
             * Gets the value of an attribute as `ub8' datatype.
         
     | 
| 
       189 
266 
     | 
    
         
             
             *
         
     | 
| 
       190 
267 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 268 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       191 
269 
     | 
    
         
             
             * @return [Integer]
         
     | 
| 
       192 
270 
     | 
    
         
             
             *
         
     | 
| 
       193 
271 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       194 
272 
     | 
    
         
             
             * @private
         
     | 
| 
       195 
273 
     | 
    
         
             
             */
         
     | 
| 
       196 
     | 
    
         
            -
            static VALUE attr_get_ub8(VALUE  
     | 
| 
      
 274 
     | 
    
         
            +
            static VALUE attr_get_ub8(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       197 
275 
     | 
    
         
             
            {
         
     | 
| 
       198 
     | 
    
         
            -
                 
     | 
| 
       199 
     | 
    
         
            -
                union {
         
     | 
| 
       200 
     | 
    
         
            -
                    ub8 value;
         
     | 
| 
       201 
     | 
    
         
            -
                    ub8 dummy;
         
     | 
| 
       202 
     | 
    
         
            -
                } v;
         
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
                v.dummy = MAGIC_NUMBER;
         
     | 
| 
       205 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       206 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, NULL, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       207 
     | 
    
         
            -
                return ULL2NUM(v.value);
         
     | 
| 
      
 276 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_UB8);
         
     | 
| 
       208 
277 
     | 
    
         
             
            }
         
     | 
| 
       209 
278 
     | 
    
         | 
| 
       210 
279 
     | 
    
         
             
            /*
         
     | 
| 
       211 
280 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       212 
     | 
    
         
            -
             *   attr_get_sb1(attr_type)
         
     | 
| 
      
 281 
     | 
    
         
            +
             *   attr_get_sb1(attr_type, strict = true)
         
     | 
| 
       213 
282 
     | 
    
         
             
             *
         
     | 
| 
       214 
283 
     | 
    
         
             
             * Gets the value of an attribute as `sb1' datatype.
         
     | 
| 
       215 
284 
     | 
    
         
             
             *
         
     | 
| 
       216 
285 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 286 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       217 
287 
     | 
    
         
             
             * @return [Fixnum]
         
     | 
| 
       218 
288 
     | 
    
         
             
             *
         
     | 
| 
       219 
289 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       220 
290 
     | 
    
         
             
             * @private
         
     | 
| 
       221 
291 
     | 
    
         
             
             */
         
     | 
| 
       222 
     | 
    
         
            -
            static VALUE attr_get_sb1(VALUE  
     | 
| 
      
 292 
     | 
    
         
            +
            static VALUE attr_get_sb1(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       223 
293 
     | 
    
         
             
            {
         
     | 
| 
       224 
     | 
    
         
            -
                 
     | 
| 
       225 
     | 
    
         
            -
                union {
         
     | 
| 
       226 
     | 
    
         
            -
                    sb1 value;
         
     | 
| 
       227 
     | 
    
         
            -
                    ub8 dummy; /* padding for incorrect attrtype to protect the stack */
         
     | 
| 
       228 
     | 
    
         
            -
                } v;
         
     | 
| 
       229 
     | 
    
         
            -
             
     | 
| 
       230 
     | 
    
         
            -
                v.dummy = MAGIC_NUMBER;
         
     | 
| 
       231 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       232 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, NULL, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       233 
     | 
    
         
            -
                return INT2FIX(v.value);
         
     | 
| 
      
 294 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_SB1);
         
     | 
| 
       234 
295 
     | 
    
         
             
            }
         
     | 
| 
       235 
296 
     | 
    
         | 
| 
       236 
297 
     | 
    
         
             
            /*
         
     | 
| 
       237 
298 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       238 
     | 
    
         
            -
             *   attr_get_sb2(attr_type)
         
     | 
| 
      
 299 
     | 
    
         
            +
             *   attr_get_sb2(attr_type, strict = true)
         
     | 
| 
       239 
300 
     | 
    
         
             
             *
         
     | 
| 
       240 
301 
     | 
    
         
             
             * Gets the value of an attribute as `sb2' datatype.
         
     | 
| 
       241 
302 
     | 
    
         
             
             *
         
     | 
| 
       242 
303 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 304 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       243 
305 
     | 
    
         
             
             * @return [Fixnum]
         
     | 
| 
       244 
306 
     | 
    
         
             
             *
         
     | 
| 
       245 
307 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       246 
308 
     | 
    
         
             
             * @private
         
     | 
| 
       247 
309 
     | 
    
         
             
             */
         
     | 
| 
       248 
     | 
    
         
            -
            static VALUE attr_get_sb2(VALUE  
     | 
| 
      
 310 
     | 
    
         
            +
            static VALUE attr_get_sb2(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       249 
311 
     | 
    
         
             
            {
         
     | 
| 
       250 
     | 
    
         
            -
                 
     | 
| 
       251 
     | 
    
         
            -
                union {
         
     | 
| 
       252 
     | 
    
         
            -
                    sb2 value;
         
     | 
| 
       253 
     | 
    
         
            -
                    ub8 dummy; /* padding for incorrect attrtype to protect the stack */
         
     | 
| 
       254 
     | 
    
         
            -
                } v;
         
     | 
| 
       255 
     | 
    
         
            -
             
     | 
| 
       256 
     | 
    
         
            -
                v.dummy = MAGIC_NUMBER;
         
     | 
| 
       257 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       258 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, NULL, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       259 
     | 
    
         
            -
                return INT2FIX(v.value);
         
     | 
| 
      
 312 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_SB2);
         
     | 
| 
       260 
313 
     | 
    
         
             
            }
         
     | 
| 
       261 
314 
     | 
    
         | 
| 
       262 
315 
     | 
    
         
             
            /*
         
     | 
| 
       263 
316 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       264 
     | 
    
         
            -
             *   attr_get_sb4(attr_type)
         
     | 
| 
      
 317 
     | 
    
         
            +
             *   attr_get_sb4(attr_type, strict = true)
         
     | 
| 
       265 
318 
     | 
    
         
             
             *
         
     | 
| 
       266 
319 
     | 
    
         
             
             * Gets the value of an attribute as `sb4' datatype.
         
     | 
| 
       267 
320 
     | 
    
         
             
             *
         
     | 
| 
       268 
321 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 322 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       269 
323 
     | 
    
         
             
             * @return [Integer]
         
     | 
| 
       270 
324 
     | 
    
         
             
             *
         
     | 
| 
       271 
325 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       272 
326 
     | 
    
         
             
             * @private
         
     | 
| 
       273 
327 
     | 
    
         
             
             */
         
     | 
| 
       274 
     | 
    
         
            -
            static VALUE attr_get_sb4(VALUE  
     | 
| 
      
 328 
     | 
    
         
            +
            static VALUE attr_get_sb4(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       275 
329 
     | 
    
         
             
            {
         
     | 
| 
       276 
     | 
    
         
            -
                 
     | 
| 
       277 
     | 
    
         
            -
                union {
         
     | 
| 
       278 
     | 
    
         
            -
                    sb4 value;
         
     | 
| 
       279 
     | 
    
         
            -
                    ub8 dummy;
         
     | 
| 
       280 
     | 
    
         
            -
                } v;
         
     | 
| 
       281 
     | 
    
         
            -
             
     | 
| 
       282 
     | 
    
         
            -
                v.dummy = MAGIC_NUMBER;
         
     | 
| 
       283 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       284 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, NULL, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       285 
     | 
    
         
            -
                return INT2NUM(v.value);
         
     | 
| 
      
 330 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_SB4);
         
     | 
| 
       286 
331 
     | 
    
         
             
            }
         
     | 
| 
       287 
332 
     | 
    
         | 
| 
       288 
333 
     | 
    
         
             
            /*
         
     | 
| 
       289 
334 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       290 
     | 
    
         
            -
             *   attr_get_sb8(attr_type)
         
     | 
| 
      
 335 
     | 
    
         
            +
             *   attr_get_sb8(attr_type, strict = true)
         
     | 
| 
       291 
336 
     | 
    
         
             
             *
         
     | 
| 
       292 
337 
     | 
    
         
             
             * Gets the value of an attribute as `sb8' datatype.
         
     | 
| 
       293 
338 
     | 
    
         
             
             *
         
     | 
| 
       294 
339 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 340 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       295 
341 
     | 
    
         
             
             * @return [Integer]
         
     | 
| 
       296 
342 
     | 
    
         
             
             *
         
     | 
| 
       297 
343 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       298 
344 
     | 
    
         
             
             * @private
         
     | 
| 
       299 
345 
     | 
    
         
             
             */
         
     | 
| 
       300 
     | 
    
         
            -
            static VALUE attr_get_sb8(VALUE  
     | 
| 
      
 346 
     | 
    
         
            +
            static VALUE attr_get_sb8(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       301 
347 
     | 
    
         
             
            {
         
     | 
| 
       302 
     | 
    
         
            -
                 
     | 
| 
       303 
     | 
    
         
            -
                union {
         
     | 
| 
       304 
     | 
    
         
            -
                    sb8 value;
         
     | 
| 
       305 
     | 
    
         
            -
                    ub8 dummy; /* padding for incorrect attrtype to protect the stack */
         
     | 
| 
       306 
     | 
    
         
            -
                } v;
         
     | 
| 
       307 
     | 
    
         
            -
             
     | 
| 
       308 
     | 
    
         
            -
                v.dummy = MAGIC_NUMBER;
         
     | 
| 
       309 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       310 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, NULL, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       311 
     | 
    
         
            -
                return LL2NUM(v.value);
         
     | 
| 
      
 348 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_SB8);
         
     | 
| 
       312 
349 
     | 
    
         
             
            }
         
     | 
| 
       313 
350 
     | 
    
         | 
| 
       314 
351 
     | 
    
         
             
            /*
         
     | 
| 
       315 
352 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       316 
     | 
    
         
            -
             *   attr_get_boolean(attr_type)
         
     | 
| 
      
 353 
     | 
    
         
            +
             *   attr_get_boolean(attr_type, strict = true)
         
     | 
| 
       317 
354 
     | 
    
         
             
             *
         
     | 
| 
       318 
355 
     | 
    
         
             
             * Gets the value of an attribute as `boolean' datatype.
         
     | 
| 
       319 
356 
     | 
    
         
             
             *
         
     | 
| 
       320 
357 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 358 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       321 
359 
     | 
    
         
             
             * @return [true of false]
         
     | 
| 
       322 
360 
     | 
    
         
             
             *
         
     | 
| 
       323 
361 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       324 
362 
     | 
    
         
             
             * @private
         
     | 
| 
       325 
363 
     | 
    
         
             
             */
         
     | 
| 
       326 
     | 
    
         
            -
            static VALUE attr_get_boolean(VALUE  
     | 
| 
      
 364 
     | 
    
         
            +
            static VALUE attr_get_boolean(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       327 
365 
     | 
    
         
             
            {
         
     | 
| 
       328 
     | 
    
         
            -
                 
     | 
| 
       329 
     | 
    
         
            -
                union {
         
     | 
| 
       330 
     | 
    
         
            -
                    boolean value;
         
     | 
| 
       331 
     | 
    
         
            -
                    ub8 dummy; /* padding for incorrect attrtype to protect the stack */
         
     | 
| 
       332 
     | 
    
         
            -
                } v;
         
     | 
| 
       333 
     | 
    
         
            -
             
     | 
| 
       334 
     | 
    
         
            -
                v.dummy = MAGIC_NUMBER;
         
     | 
| 
       335 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       336 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, NULL, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       337 
     | 
    
         
            -
                return v.value ? Qtrue : Qfalse;
         
     | 
| 
      
 366 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_BOOLEAN);
         
     | 
| 
       338 
367 
     | 
    
         
             
            }
         
     | 
| 
       339 
368 
     | 
    
         | 
| 
       340 
369 
     | 
    
         
             
            /*
         
     | 
| 
       341 
370 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       342 
     | 
    
         
            -
             *   attr_get_string(attr_type)
         
     | 
| 
      
 371 
     | 
    
         
            +
             *   attr_get_string(attr_type, strict = true)
         
     | 
| 
       343 
372 
     | 
    
         
             
             *
         
     | 
| 
       344 
373 
     | 
    
         
             
             * Gets the value of an attribute as `oratext *' datatype.
         
     | 
| 
       345 
374 
     | 
    
         
             
             * The return value is converted to Encoding.default_internal or
         
     | 
| 
         @@ -349,29 +378,20 @@ static VALUE attr_get_boolean(VALUE self, VALUE attr_type) 
     | 
|
| 
       349 
378 
     | 
    
         
             
             *   pointer type, it causes a segmentation fault.
         
     | 
| 
       350 
379 
     | 
    
         
             
             *
         
     | 
| 
       351 
380 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 381 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       352 
382 
     | 
    
         
             
             * @return [String]
         
     | 
| 
       353 
383 
     | 
    
         
             
             *
         
     | 
| 
       354 
384 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       355 
385 
     | 
    
         
             
             * @private
         
     | 
| 
       356 
386 
     | 
    
         
             
             */
         
     | 
| 
       357 
     | 
    
         
            -
            static VALUE attr_get_string(VALUE  
     | 
| 
      
 387 
     | 
    
         
            +
            static VALUE attr_get_string(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       358 
388 
     | 
    
         
             
            {
         
     | 
| 
       359 
     | 
    
         
            -
                 
     | 
| 
       360 
     | 
    
         
            -
                union {
         
     | 
| 
       361 
     | 
    
         
            -
                    char *value;
         
     | 
| 
       362 
     | 
    
         
            -
                    ub8 dummy; /* padding for incorrect attrtype to protect the stack */
         
     | 
| 
       363 
     | 
    
         
            -
                } v;
         
     | 
| 
       364 
     | 
    
         
            -
                ub4 size = 0;
         
     | 
| 
       365 
     | 
    
         
            -
             
     | 
| 
       366 
     | 
    
         
            -
                v.dummy = MAGIC_NUMBER;
         
     | 
| 
       367 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       368 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, &size, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       369 
     | 
    
         
            -
                return rb_external_str_new_with_enc(v.value, size, oci8_encoding);
         
     | 
| 
      
 389 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_STRING);
         
     | 
| 
       370 
390 
     | 
    
         
             
            }
         
     | 
| 
       371 
391 
     | 
    
         | 
| 
       372 
392 
     | 
    
         
             
            /*
         
     | 
| 
       373 
393 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       374 
     | 
    
         
            -
             *   attr_get_binary(attr_type)
         
     | 
| 
      
 394 
     | 
    
         
            +
             *   attr_get_binary(attr_type, strict = true)
         
     | 
| 
       375 
395 
     | 
    
         
             
             *
         
     | 
| 
       376 
396 
     | 
    
         
             
             * Gets the value of an attribute as `ub1 *' datatype.
         
     | 
| 
       377 
397 
     | 
    
         
             
             * The return value is tagged with ASCII-8BIT when the ruby version is 1.9.
         
     | 
| 
         @@ -380,29 +400,20 @@ static VALUE attr_get_string(VALUE self, VALUE attr_type) 
     | 
|
| 
       380 
400 
     | 
    
         
             
             *   pointer type, it causes a segmentation fault.
         
     | 
| 
       381 
401 
     | 
    
         
             
             *
         
     | 
| 
       382 
402 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 403 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       383 
404 
     | 
    
         
             
             * @return [String]
         
     | 
| 
       384 
405 
     | 
    
         
             
             *
         
     | 
| 
       385 
406 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       386 
407 
     | 
    
         
             
             * @private
         
     | 
| 
       387 
408 
     | 
    
         
             
             */
         
     | 
| 
       388 
     | 
    
         
            -
            static VALUE attr_get_binary(VALUE  
     | 
| 
      
 409 
     | 
    
         
            +
            static VALUE attr_get_binary(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       389 
410 
     | 
    
         
             
            {
         
     | 
| 
       390 
     | 
    
         
            -
                 
     | 
| 
       391 
     | 
    
         
            -
                union {
         
     | 
| 
       392 
     | 
    
         
            -
                    char *value;
         
     | 
| 
       393 
     | 
    
         
            -
                    ub8 dummy; /* padding for incorrect attrtype to protect the stack */
         
     | 
| 
       394 
     | 
    
         
            -
                } v;
         
     | 
| 
       395 
     | 
    
         
            -
                ub4 size = 0;
         
     | 
| 
       396 
     | 
    
         
            -
             
     | 
| 
       397 
     | 
    
         
            -
                v.dummy = 0;
         
     | 
| 
       398 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       399 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, &size, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       400 
     | 
    
         
            -
                return rb_tainted_str_new(v.value, size);
         
     | 
| 
      
 411 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_BINARY);
         
     | 
| 
       401 
412 
     | 
    
         
             
            }
         
     | 
| 
       402 
413 
     | 
    
         | 
| 
       403 
414 
     | 
    
         
             
            /*
         
     | 
| 
       404 
415 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       405 
     | 
    
         
            -
             *   attr_get_integer(attr_type 
     | 
| 
      
 416 
     | 
    
         
            +
             *   attr_get_integer(attr_type, strict = true)
         
     | 
| 
       406 
417 
     | 
    
         
             
             *
         
     | 
| 
       407 
418 
     | 
    
         
             
             * Gets the value of an attribute as `ub1 *' datatype.
         
     | 
| 
       408 
419 
     | 
    
         
             
             * The return value is converted to Integer from internal Oracle NUMBER format.
         
     | 
| 
         @@ -411,34 +422,20 @@ static VALUE attr_get_binary(VALUE self, VALUE attr_type) 
     | 
|
| 
       411 
422 
     | 
    
         
             
             *   pointer type, it causes a segmentation fault.
         
     | 
| 
       412 
423 
     | 
    
         
             
             *
         
     | 
| 
       413 
424 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 425 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       414 
426 
     | 
    
         
             
             * @return [Fixnum]
         
     | 
| 
       415 
427 
     | 
    
         
             
             *
         
     | 
| 
       416 
428 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       417 
429 
     | 
    
         
             
             * @private
         
     | 
| 
       418 
430 
     | 
    
         
             
             */
         
     | 
| 
       419 
     | 
    
         
            -
            static VALUE attr_get_integer(VALUE  
     | 
| 
      
 431 
     | 
    
         
            +
            static VALUE attr_get_integer(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       420 
432 
     | 
    
         
             
            {
         
     | 
| 
       421 
     | 
    
         
            -
                 
     | 
| 
       422 
     | 
    
         
            -
                OCINumber onum;
         
     | 
| 
       423 
     | 
    
         
            -
                union {
         
     | 
| 
       424 
     | 
    
         
            -
                    void *value;
         
     | 
| 
       425 
     | 
    
         
            -
                    ub8 dummy; /* padding for incorrect attrtype to protect the stack */
         
     | 
| 
       426 
     | 
    
         
            -
                } v;
         
     | 
| 
       427 
     | 
    
         
            -
                ub4 size = 0;
         
     | 
| 
       428 
     | 
    
         
            -
             
     | 
| 
       429 
     | 
    
         
            -
                v.dummy = 0;
         
     | 
| 
       430 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       431 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, &size, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       432 
     | 
    
         
            -
             
     | 
| 
       433 
     | 
    
         
            -
                memset(&onum, 0, sizeof(onum));
         
     | 
| 
       434 
     | 
    
         
            -
                onum.OCINumberPart[0] = size;
         
     | 
| 
       435 
     | 
    
         
            -
                memcpy(&onum.OCINumberPart[1], v.value, size);
         
     | 
| 
       436 
     | 
    
         
            -
                return oci8_make_integer(&onum, oci8_errhp);
         
     | 
| 
      
 433 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_INTEGER);
         
     | 
| 
       437 
434 
     | 
    
         
             
            }
         
     | 
| 
       438 
435 
     | 
    
         | 
| 
       439 
436 
     | 
    
         
             
            /*
         
     | 
| 
       440 
437 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       441 
     | 
    
         
            -
             *   attr_get_oradate(attr_type 
     | 
| 
      
 438 
     | 
    
         
            +
             *   attr_get_oradate(attr_type, strict = true)
         
     | 
| 
       442 
439 
     | 
    
         
             
             *
         
     | 
| 
       443 
440 
     | 
    
         
             
             * Gets the value of an attribute as `ub1 *' datatype.
         
     | 
| 
       444 
441 
     | 
    
         
             
             * The return value is converted to OraDate.
         
     | 
| 
         @@ -447,33 +444,15 @@ static VALUE attr_get_integer(VALUE self, VALUE attr_type) 
     | 
|
| 
       447 
444 
     | 
    
         
             
             *   pointer type, it causes a segmentation fault.
         
     | 
| 
       448 
445 
     | 
    
         
             
             *
         
     | 
| 
       449 
446 
     | 
    
         
             
             * @param [Fixnum] attr_type
         
     | 
| 
      
 447 
     | 
    
         
            +
             * @param [Boolean] strict If false, "ORA-24328: illegal attribute value" is ignored.
         
     | 
| 
       450 
448 
     | 
    
         
             
             * @return [OraDate]
         
     | 
| 
       451 
449 
     | 
    
         
             
             *
         
     | 
| 
       452 
450 
     | 
    
         
             
             * @since 2.0.4
         
     | 
| 
       453 
451 
     | 
    
         
             
             * @private
         
     | 
| 
       454 
452 
     | 
    
         
             
             */
         
     | 
| 
       455 
     | 
    
         
            -
            static VALUE attr_get_oradate(VALUE  
     | 
| 
      
 453 
     | 
    
         
            +
            static VALUE attr_get_oradate(int argc, VALUE *argv, VALUE self)
         
     | 
| 
       456 
454 
     | 
    
         
             
            {
         
     | 
| 
       457 
     | 
    
         
            -
                 
     | 
| 
       458 
     | 
    
         
            -
                union {
         
     | 
| 
       459 
     | 
    
         
            -
                    ub1 *value;
         
     | 
| 
       460 
     | 
    
         
            -
                    ub8 dummy; /* padding for incorrect attrtype to protect the stack */
         
     | 
| 
       461 
     | 
    
         
            -
                } v;
         
     | 
| 
       462 
     | 
    
         
            -
                ub4 size = 0;
         
     | 
| 
       463 
     | 
    
         
            -
                static VALUE cOraDate = Qnil;
         
     | 
| 
       464 
     | 
    
         
            -
             
     | 
| 
       465 
     | 
    
         
            -
                v.dummy = 0;
         
     | 
| 
       466 
     | 
    
         
            -
                Check_Type(attr_type, T_FIXNUM);
         
     | 
| 
       467 
     | 
    
         
            -
                chker2(OCIAttrGet(base->hp.ptr, base->type, &v.value, &size, FIX2INT(attr_type), oci8_errhp), base);
         
     | 
| 
       468 
     | 
    
         
            -
                if (NIL_P(cOraDate))
         
     | 
| 
       469 
     | 
    
         
            -
                    cOraDate = rb_eval_string("OraDate");
         
     | 
| 
       470 
     | 
    
         
            -
                return rb_funcall(cOraDate, oci8_id_new, 6,
         
     | 
| 
       471 
     | 
    
         
            -
                                  INT2FIX((v.value[0] - 100) * 100 + (v.value[1] - 100)),
         
     | 
| 
       472 
     | 
    
         
            -
                                  INT2FIX(v.value[2]),
         
     | 
| 
       473 
     | 
    
         
            -
                                  INT2FIX(v.value[3]),
         
     | 
| 
       474 
     | 
    
         
            -
                                  INT2FIX(v.value[4] - 1),
         
     | 
| 
       475 
     | 
    
         
            -
                                  INT2FIX(v.value[5] - 1),
         
     | 
| 
       476 
     | 
    
         
            -
                                  INT2FIX(v.value[6] - 1));
         
     | 
| 
      
 455 
     | 
    
         
            +
                return attr_get_common(argc, argv, self, DATATYPE_ORADATE);
         
     | 
| 
       477 
456 
     | 
    
         
             
            }
         
     | 
| 
       478 
457 
     | 
    
         | 
| 
       479 
458 
     | 
    
         
             
            /*
         
     | 
| 
         @@ -836,19 +815,19 @@ void Init_oci8_handle(void) 
     | 
|
| 
       836 
815 
     | 
    
         
             
                rb_ivar_set(oci8_cOCIHandle, oci8_id_oci8_vtable, obj);
         
     | 
| 
       837 
816 
     | 
    
         | 
| 
       838 
817 
     | 
    
         
             
                /* methods to get attributes */
         
     | 
| 
       839 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_ub1", attr_get_ub1, 1);
         
     | 
| 
       840 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_ub2", attr_get_ub2, 1);
         
     | 
| 
       841 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_ub4", attr_get_ub4, 1);
         
     | 
| 
       842 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_ub8", attr_get_ub8, 1);
         
     | 
| 
       843 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_sb1", attr_get_sb1, 1);
         
     | 
| 
       844 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_sb2", attr_get_sb2, 1);
         
     | 
| 
       845 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_sb4", attr_get_sb4, 1);
         
     | 
| 
       846 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_sb8", attr_get_sb8, 1);
         
     | 
| 
       847 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_boolean", attr_get_boolean, 1);
         
     | 
| 
       848 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_string", attr_get_string, 1);
         
     | 
| 
       849 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_binary", attr_get_binary, 1);
         
     | 
| 
       850 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_integer", attr_get_integer, 1);
         
     | 
| 
       851 
     | 
    
         
            -
                rb_define_private_method(oci8_cOCIHandle, "attr_get_oradate", attr_get_oradate, 1);
         
     | 
| 
      
 818 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_ub1", attr_get_ub1, -1);
         
     | 
| 
      
 819 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_ub2", attr_get_ub2, -1);
         
     | 
| 
      
 820 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_ub4", attr_get_ub4, -1);
         
     | 
| 
      
 821 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_ub8", attr_get_ub8, -1);
         
     | 
| 
      
 822 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_sb1", attr_get_sb1, -1);
         
     | 
| 
      
 823 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_sb2", attr_get_sb2, -1);
         
     | 
| 
      
 824 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_sb4", attr_get_sb4, -1);
         
     | 
| 
      
 825 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_sb8", attr_get_sb8, -1);
         
     | 
| 
      
 826 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_boolean", attr_get_boolean, -1);
         
     | 
| 
      
 827 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_string", attr_get_string, -1);
         
     | 
| 
      
 828 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_binary", attr_get_binary, -1);
         
     | 
| 
      
 829 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_integer", attr_get_integer, -1);
         
     | 
| 
      
 830 
     | 
    
         
            +
                rb_define_private_method(oci8_cOCIHandle, "attr_get_oradate", attr_get_oradate, -1);
         
     | 
| 
       852 
831 
     | 
    
         | 
| 
       853 
832 
     | 
    
         
             
                /* methods to set attributes */
         
     | 
| 
       854 
833 
     | 
    
         
             
                rb_define_private_method(oci8_cOCIHandle, "attr_set_ub1", attr_set_ub1, 2);
         
     |