ruby-oci8 2.2.0.2 → 2.2.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -6
  3. data/ChangeLog +600 -0
  4. data/NEWS +426 -35
  5. data/README.md +27 -9
  6. data/dist-files +13 -2
  7. data/docs/bind-array-to-in_cond.md +38 -0
  8. data/docs/conflicts-local-connections-and-processes.md +98 -0
  9. data/docs/hanging-after-inactivity.md +63 -0
  10. data/docs/install-binary-package.md +15 -11
  11. data/docs/install-full-client.md +18 -21
  12. data/docs/install-instant-client.md +45 -27
  13. data/docs/install-on-osx.md +31 -117
  14. data/docs/ldap-auth-and-function-interposition.md +123 -0
  15. data/docs/number-type-mapping.md +79 -0
  16. data/docs/platform-specific-issues.md +17 -50
  17. data/docs/report-installation-issue.md +11 -8
  18. data/docs/timeout-parameters.md +94 -0
  19. data/ext/oci8/apiwrap.c.tmpl +2 -5
  20. data/ext/oci8/apiwrap.rb +6 -1
  21. data/ext/oci8/apiwrap.yml +39 -143
  22. data/ext/oci8/attr.c +4 -2
  23. data/ext/oci8/bind.c +421 -9
  24. data/ext/oci8/connection_pool.c +3 -3
  25. data/ext/oci8/encoding.c +5 -5
  26. data/ext/oci8/env.c +8 -2
  27. data/ext/oci8/error.c +24 -16
  28. data/ext/oci8/extconf.rb +35 -63
  29. data/ext/oci8/hook_funcs.c +274 -61
  30. data/ext/oci8/lob.c +31 -75
  31. data/ext/oci8/metadata.c +8 -6
  32. data/ext/oci8/object.c +119 -29
  33. data/ext/oci8/oci8.c +46 -133
  34. data/ext/oci8/oci8.h +40 -123
  35. data/ext/oci8/oci8lib.c +178 -46
  36. data/ext/oci8/ocihandle.c +37 -37
  37. data/ext/oci8/ocinumber.c +24 -35
  38. data/ext/oci8/oraconf.rb +168 -337
  39. data/ext/oci8/oradate.c +19 -19
  40. data/ext/oci8/plthook.h +10 -0
  41. data/ext/oci8/plthook_elf.c +433 -268
  42. data/ext/oci8/plthook_osx.c +40 -9
  43. data/ext/oci8/plthook_win32.c +16 -1
  44. data/ext/oci8/stmt.c +52 -17
  45. data/ext/oci8/win32.c +4 -22
  46. data/lib/oci8/bindtype.rb +10 -17
  47. data/lib/oci8/check_load_error.rb +57 -10
  48. data/lib/oci8/compat.rb +5 -1
  49. data/lib/oci8/connection_pool.rb +74 -3
  50. data/lib/oci8/cursor.rb +70 -31
  51. data/lib/oci8/metadata.rb +9 -1
  52. data/lib/oci8/object.rb +14 -1
  53. data/lib/oci8/oci8.rb +184 -58
  54. data/lib/oci8/ocihandle.rb +0 -16
  55. data/lib/oci8/oracle_version.rb +11 -1
  56. data/lib/oci8/properties.rb +55 -0
  57. data/lib/oci8/version.rb +1 -1
  58. data/lib/oci8.rb +48 -4
  59. data/lib/ruby-oci8.rb +1 -0
  60. data/pre-distclean.rb +1 -3
  61. data/ruby-oci8.gemspec +4 -9
  62. data/setup.rb +11 -2
  63. data/test/README.md +37 -0
  64. data/test/config.rb +8 -1
  65. data/test/setup_test_object.sql +42 -14
  66. data/test/setup_test_package.sql +59 -0
  67. data/test/test_all.rb +4 -0
  68. data/test/test_bind_array.rb +70 -0
  69. data/test/test_bind_boolean.rb +99 -0
  70. data/test/test_bind_integer.rb +47 -0
  71. data/test/test_break.rb +11 -9
  72. data/test/test_clob.rb +5 -17
  73. data/test/test_connstr.rb +142 -0
  74. data/test/test_datetime.rb +8 -3
  75. data/test/test_metadata.rb +2 -1
  76. data/test/test_object.rb +99 -18
  77. data/test/test_oci8.rb +170 -46
  78. data/test/test_oranumber.rb +12 -6
  79. data/test/test_package_type.rb +17 -3
  80. data/test/test_properties.rb +17 -0
  81. metadata +45 -55
  82. data/docs/osx-install-dev-tools.png +0 -0
  83. data/test/README +0 -42
data/ext/oci8/apiwrap.yml CHANGED
@@ -83,6 +83,17 @@ OCIBindByPos:
83
83
  - ub4 *curelep
84
84
  - ub4 mode
85
85
 
86
+ # round trip: 0
87
+ OCIBindDynamic:
88
+ :version: 800
89
+ :args:
90
+ - OCIBind *bindp
91
+ - OCIError *errhp
92
+ - void *ictxp
93
+ - OCICallbackInBind icbfp
94
+ - void *octxp
95
+ - OCICallbackOutBind ocbfp
96
+
86
97
  # round trip: 0
87
98
  OCIBindObject:
88
99
  :version: 800
@@ -180,6 +191,15 @@ OCIDefineByPos:
180
191
  - ub2 *rcodep
181
192
  - ub4 mode
182
193
 
194
+ # round trip: 0
195
+ OCIDefineDynamic:
196
+ :version: 800
197
+ :args:
198
+ - OCIDefine *defnp
199
+ - OCIError *errhp
200
+ - dvoid *octxp
201
+ - OCICallbackDefine ocbfp
202
+
183
203
  # round trip: 0
184
204
  OCIDefineObject:
185
205
  :version: 800
@@ -321,13 +341,6 @@ OCILobLocatorIsInit:
321
341
  - CONST OCILobLocator *locp
322
342
  - boolean *is_initialized
323
343
 
324
- # round trip: 1
325
- OCILogoff:
326
- :version: 800
327
- :args:
328
- - OCISvcCtx *svchp
329
- - OCIError *errhp
330
-
331
344
  # round trip: 0
332
345
  OCINumberAbs:
333
346
  :version: 800
@@ -670,6 +683,15 @@ OCIObjectGetInd:
670
683
  - dvoid *instance
671
684
  - dvoid **null_struct
672
685
 
686
+ # round trip: 0
687
+ OCIObjectGetTypeRef:
688
+ :version: 800
689
+ :args:
690
+ - OCIEnv *env
691
+ - OCIError *err
692
+ - dvoid *instance
693
+ - OCIRef *type_ref
694
+
673
695
  # round trip: 0
674
696
  OCIObjectNew:
675
697
  :version: 800
@@ -811,30 +833,6 @@ OCIStmtFetch_nb:
811
833
  - ub2 orientation
812
834
  - ub4 mode
813
835
 
814
- OCIStmtGetPieceInfo:
815
- :version: 800
816
- :args:
817
- - OCIStmt *stmtp
818
- - OCIError *errhp
819
- - dvoid **hndlpp
820
- - ub4 *typep
821
- - ub1 *in_outp
822
- - ub4 *iterp
823
- - ub4 *idxp
824
- - ub1 *piecep
825
-
826
- OCIStmtSetPieceInfo:
827
- :version: 800
828
- :args:
829
- - dvoid *hndlp
830
- - ub4 type
831
- - OCIError *errhp
832
- - CONST dvoid *bufp
833
- - ub4 *alenp
834
- - ub1 piece
835
- - CONST dvoid *indp
836
- - ub2 *rcodep
837
-
838
836
  # round trip: 0
839
837
  OCIStringAssignText:
840
838
  :version: 800
@@ -1003,26 +1001,6 @@ OCINumberIsInt:
1003
1001
  - OCIError *err
1004
1002
  - CONST OCINumber *number
1005
1003
  - boolean *result
1006
- :code_if_not_found: |
1007
- /* pseude code
1008
- * work = trunc(number);
1009
- * if (number == work) {
1010
- * result = TRUE;
1011
- * } else {
1012
- * result = FALSE;
1013
- * }
1014
- */
1015
- OCINumber work;
1016
- sword rv;
1017
- sword cmp;
1018
- rv = oci8_OCINumberTrunc(err, number, 0, &work, file, line);
1019
- if (rv != OCI_SUCCESS)
1020
- return rv;
1021
- rv = oci8_OCINumberCmp(err, number, &work, &cmp, file, line);
1022
- if (rv != OCI_SUCCESS)
1023
- return rv;
1024
- *result = (cmp == 0) ? TRUE : FALSE;
1025
- return OCI_SUCCESS;
1026
1004
 
1027
1005
  # round trip: 0
1028
1006
  OCINumberPrec:
@@ -1040,13 +1018,6 @@ OCINumberSetPi:
1040
1018
  :args:
1041
1019
  - OCIError *err
1042
1020
  - OCINumber *num
1043
- :code_if_not_found: |
1044
- static const OCINumber pi = {
1045
- {0x15, 0xc1, 0x04, 0x0f, 0x10, 0x5d, 0x42, 0x24, 0x5a, 0x50,
1046
- 0x21, 0x27, 0x2f, 0x1b, 0x2c, 0x27, 0x21, 0x50, 0x33, 0x1d,
1047
- 0x55, 0x15}
1048
- };
1049
- *num = pi;
1050
1021
 
1051
1022
  # round trip: 0
1052
1023
  OCINumberShift:
@@ -1064,31 +1035,6 @@ OCINumberSign:
1064
1035
  - OCIError *err
1065
1036
  - CONST OCINumber *number
1066
1037
  - sword *result
1067
- :code_if_not_found: |
1068
- /* pseude code
1069
- * number <=> 0
1070
- */
1071
- OCINumber zero;
1072
- sword rv;
1073
- sword cmp;
1074
- OCINumberSetZero(err, &zero);
1075
- rv = oci8_OCINumberCmp(err, number, &zero, &cmp, file, line);
1076
- if (rv != OCI_SUCCESS)
1077
- return rv;
1078
- if (cmp > 0)
1079
- *result = 1;
1080
- else if (cmp < 0)
1081
- *result = -1;
1082
- else
1083
- *result = 0;
1084
- return OCI_SUCCESS;
1085
-
1086
- # round trip: 0
1087
- OCIReset:
1088
- :version: 810
1089
- :args:
1090
- - dvoid *hndlp
1091
- - OCIError *errhp
1092
1038
 
1093
1039
  #
1094
1040
  # Oracle 9.0
@@ -1160,16 +1106,6 @@ OCIDateTimeGetTime:
1160
1106
  - ub1 *ss
1161
1107
  - ub4 *fsec
1162
1108
 
1163
- # round trip: 0 (not docmented. I guess.)
1164
- OCIIntervalFromText:
1165
- :version: 900
1166
- :args:
1167
- - dvoid *hndl
1168
- - OCIError *err
1169
- - CONST OraText *inpstr
1170
- - size_t str_len
1171
- - OCIInterval *result
1172
-
1173
1109
  # round trip: 0 (not docmented. I guess.)
1174
1110
  OCIDateTimeGetTimeZoneOffset:
1175
1111
  :version: 900
@@ -1226,21 +1162,6 @@ OCIIntervalSetYearMonth:
1226
1162
  - sb4 mnth
1227
1163
  - OCIInterval *result
1228
1164
 
1229
- # round trip: 1
1230
- OCILogon2_nb:
1231
- :version: 900
1232
- :args:
1233
- - OCIEnv *envhp
1234
- - OCIError *errhp
1235
- - OCISvcCtx **svchp
1236
- - CONST text *username
1237
- - ub4 uname_len
1238
- - CONST text *password
1239
- - ub4 passwd_len
1240
- - CONST text *dbname
1241
- - ub4 dbname_len
1242
- - ub4 mode
1243
-
1244
1165
  # round trip: 0 (not docmented. I guess.)
1245
1166
  OCIRowidToChar:
1246
1167
  :version: 900
@@ -1378,25 +1299,6 @@ OCIClientVersion:
1378
1299
  - sword *patch_num
1379
1300
  - sword *port_update_num
1380
1301
 
1381
- # round trip: 1
1382
- OCIDBStartup_nb:
1383
- :version: 1020
1384
- :args:
1385
- - OCISvcCtx *svchp
1386
- - OCIError *errhp
1387
- - OCIAdmin *admhp
1388
- - ub4 mode
1389
- - ub4 flags
1390
-
1391
- # round trip: 1
1392
- OCIDBShutdown_nb:
1393
- :version: 1020
1394
- :args:
1395
- - OCISvcCtx *svchp
1396
- - OCIError *errhp
1397
- - OCIAdmin *admhp
1398
- - ub4 mode
1399
-
1400
1302
  # round trip: 1
1401
1303
  OCIPing_nb:
1402
1304
  :version: 1020
@@ -1406,21 +1308,15 @@ OCIPing_nb:
1406
1308
  - ub4 mode
1407
1309
 
1408
1310
  #
1409
- # Oracle 11.1
1311
+ # Oracle 18.1
1410
1312
  #
1411
-
1412
- OCIArrayDescriptorAlloc:
1413
- :version: 1110
1414
- :args:
1415
- - const void *parenth
1416
- - void **descpp
1417
- - const ub4 type
1418
- - ub4 array_size
1419
- - const size_t xtramem_sz
1420
- - void **usrmempp
1421
-
1422
- OCIArrayDescriptorFree:
1423
- :version: 1110
1313
+ OCIServerRelease2:
1314
+ :version: 1800
1424
1315
  :args:
1425
- - void **descp
1426
- - const ub4 type
1316
+ - dvoid *hndlp
1317
+ - OCIError *errhp
1318
+ - OraText *bufp
1319
+ - ub4 bufsz
1320
+ - ub1 hndltype
1321
+ - ub4 *version
1322
+ - ub4 mode
data/ext/oci8/attr.c CHANGED
@@ -15,8 +15,9 @@ typedef struct {
15
15
  OCIRowid *ridp;
16
16
  } rowid_arg_t;
17
17
 
18
- static VALUE get_rowid_attr(rowid_arg_t *arg)
18
+ static VALUE get_rowid_attr(VALUE varg)
19
19
  {
20
+ rowid_arg_t *arg = (rowid_arg_t *)varg;
20
21
  oci8_base_t *base = arg->base;
21
22
  ub4 attrtype = arg->attrtype;
22
23
  char buf[MAX_ROWID_LEN];
@@ -36,8 +37,9 @@ static VALUE get_rowid_attr(rowid_arg_t *arg)
36
37
  return rb_external_str_new_with_enc(buf, buflen, rb_usascii_encoding());
37
38
  }
38
39
 
39
- static VALUE rowid_ensure(rowid_arg_t *arg)
40
+ static VALUE rowid_ensure(VALUE varg)
40
41
  {
42
+ rowid_arg_t *arg = (rowid_arg_t *)varg;
41
43
  if (arg->ridp != NULL) {
42
44
  OCIDescriptorFree(arg->ridp, OCI_DTYPE_ROWID);
43
45
  }