ibm_db 4.0.0-x86-mingw32 → 5.0.2-x86-mingw32

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.
Files changed (570) hide show
  1. checksums.yaml +5 -5
  2. data/MANIFEST +14 -14
  3. data/README +208 -208
  4. data/ext/Makefile +269 -0
  5. data/ext/Makefile.nt32 +181 -181
  6. data/ext/Makefile.nt32.191 +212 -212
  7. data/ext/extconf.rb +322 -291
  8. data/ext/gil_release_version +3 -0
  9. data/ext/ibm_db.c +11879 -11887
  10. data/ext/mkmf.log +110 -0
  11. data/ext/ruby_ibm_db.h +241 -241
  12. data/ext/ruby_ibm_db_cli.c +866 -866
  13. data/ext/ruby_ibm_db_cli.h +500 -500
  14. data/ext/unicode_support_version +3 -0
  15. data/init.rb +41 -41
  16. data/lib/IBM_DB.rb +27 -27
  17. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +3533 -3452
  18. data/lib/active_record/connection_adapters/ibmdb_adapter.rb +5 -5
  19. data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
  20. data/lib/mswin32/ibm_db.rb +90 -90
  21. data/lib/mswin32/rb2x/i386/ibm_db.so +0 -0
  22. data/test/active_record/connection_adapters/fake_adapter.rb +49 -49
  23. data/test/assets/example.log +1 -1
  24. data/test/assets/test.txt +1 -1
  25. data/test/cases/adapter_test.rb +351 -351
  26. data/test/cases/adapters/mysql2/active_schema_test.rb +193 -193
  27. data/test/cases/adapters/mysql2/bind_parameter_test.rb +50 -50
  28. data/test/cases/adapters/mysql2/boolean_test.rb +100 -100
  29. data/test/cases/adapters/mysql2/case_sensitivity_test.rb +63 -63
  30. data/test/cases/adapters/mysql2/charset_collation_test.rb +54 -54
  31. data/test/cases/adapters/mysql2/connection_test.rb +210 -210
  32. data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +45 -45
  33. data/test/cases/adapters/mysql2/enum_test.rb +26 -26
  34. data/test/cases/adapters/mysql2/explain_test.rb +21 -21
  35. data/test/cases/adapters/mysql2/json_test.rb +195 -195
  36. data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +83 -83
  37. data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -152
  38. data/test/cases/adapters/mysql2/schema_migrations_test.rb +59 -59
  39. data/test/cases/adapters/mysql2/schema_test.rb +126 -126
  40. data/test/cases/adapters/mysql2/sp_test.rb +36 -36
  41. data/test/cases/adapters/mysql2/sql_types_test.rb +14 -14
  42. data/test/cases/adapters/mysql2/table_options_test.rb +42 -42
  43. data/test/cases/adapters/mysql2/unsigned_type_test.rb +66 -66
  44. data/test/cases/adapters/postgresql/active_schema_test.rb +98 -98
  45. data/test/cases/adapters/postgresql/array_test.rb +339 -339
  46. data/test/cases/adapters/postgresql/bit_string_test.rb +82 -82
  47. data/test/cases/adapters/postgresql/bytea_test.rb +134 -134
  48. data/test/cases/adapters/postgresql/case_insensitive_test.rb +26 -26
  49. data/test/cases/adapters/postgresql/change_schema_test.rb +38 -38
  50. data/test/cases/adapters/postgresql/cidr_test.rb +25 -25
  51. data/test/cases/adapters/postgresql/citext_test.rb +78 -78
  52. data/test/cases/adapters/postgresql/collation_test.rb +53 -53
  53. data/test/cases/adapters/postgresql/composite_test.rb +132 -132
  54. data/test/cases/adapters/postgresql/connection_test.rb +257 -257
  55. data/test/cases/adapters/postgresql/datatype_test.rb +92 -92
  56. data/test/cases/adapters/postgresql/domain_test.rb +47 -47
  57. data/test/cases/adapters/postgresql/enum_test.rb +91 -91
  58. data/test/cases/adapters/postgresql/explain_test.rb +20 -20
  59. data/test/cases/adapters/postgresql/extension_migration_test.rb +63 -63
  60. data/test/cases/adapters/postgresql/full_text_test.rb +44 -44
  61. data/test/cases/adapters/postgresql/geometric_test.rb +378 -378
  62. data/test/cases/adapters/postgresql/hstore_test.rb +382 -382
  63. data/test/cases/adapters/postgresql/infinity_test.rb +69 -69
  64. data/test/cases/adapters/postgresql/integer_test.rb +25 -25
  65. data/test/cases/adapters/postgresql/json_test.rb +237 -237
  66. data/test/cases/adapters/postgresql/ltree_test.rb +53 -53
  67. data/test/cases/adapters/postgresql/money_test.rb +96 -96
  68. data/test/cases/adapters/postgresql/network_test.rb +94 -94
  69. data/test/cases/adapters/postgresql/numbers_test.rb +49 -49
  70. data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +405 -405
  71. data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -22
  72. data/test/cases/adapters/postgresql/quoting_test.rb +44 -44
  73. data/test/cases/adapters/postgresql/range_test.rb +343 -343
  74. data/test/cases/adapters/postgresql/referential_integrity_test.rb +111 -111
  75. data/test/cases/adapters/postgresql/rename_table_test.rb +34 -34
  76. data/test/cases/adapters/postgresql/schema_authorization_test.rb +119 -119
  77. data/test/cases/adapters/postgresql/schema_test.rb +597 -597
  78. data/test/cases/adapters/postgresql/serial_test.rb +154 -154
  79. data/test/cases/adapters/postgresql/statement_pool_test.rb +41 -41
  80. data/test/cases/adapters/postgresql/timestamp_test.rb +90 -90
  81. data/test/cases/adapters/postgresql/type_lookup_test.rb +33 -33
  82. data/test/cases/adapters/postgresql/utils_test.rb +62 -62
  83. data/test/cases/adapters/postgresql/uuid_test.rb +294 -294
  84. data/test/cases/adapters/postgresql/xml_test.rb +54 -54
  85. data/test/cases/adapters/sqlite3/collation_test.rb +53 -53
  86. data/test/cases/adapters/sqlite3/copy_table_test.rb +98 -98
  87. data/test/cases/adapters/sqlite3/explain_test.rb +21 -21
  88. data/test/cases/adapters/sqlite3/quoting_test.rb +101 -101
  89. data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +441 -441
  90. data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -24
  91. data/test/cases/adapters/sqlite3/statement_pool_test.rb +20 -20
  92. data/test/cases/aggregations_test.rb +168 -168
  93. data/test/cases/ar_schema_test.rb +146 -146
  94. data/test/cases/associations/association_scope_test.rb +16 -16
  95. data/test/cases/associations/belongs_to_associations_test.rb +1141 -1141
  96. data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +41 -41
  97. data/test/cases/associations/callbacks_test.rb +190 -190
  98. data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
  99. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
  100. data/test/cases/associations/eager_load_nested_include_test.rb +126 -126
  101. data/test/cases/associations/eager_singularization_test.rb +148 -148
  102. data/test/cases/associations/eager_test.rb +1514 -1514
  103. data/test/cases/associations/extension_test.rb +87 -87
  104. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +1004 -1004
  105. data/test/cases/associations/has_many_associations_test.rb +2501 -2501
  106. data/test/cases/associations/has_many_through_associations_test.rb +1271 -1271
  107. data/test/cases/associations/has_one_associations_test.rb +707 -707
  108. data/test/cases/associations/has_one_through_associations_test.rb +383 -383
  109. data/test/cases/associations/inner_join_association_test.rb +139 -139
  110. data/test/cases/associations/inverse_associations_test.rb +733 -733
  111. data/test/cases/associations/join_model_test.rb +777 -777
  112. data/test/cases/associations/left_outer_join_association_test.rb +88 -88
  113. data/test/cases/associations/nested_through_associations_test.rb +579 -579
  114. data/test/cases/associations/required_test.rb +102 -102
  115. data/test/cases/associations_test.rb +385 -385
  116. data/test/cases/attribute_decorators_test.rb +126 -125
  117. data/test/cases/attribute_methods/read_test.rb +60 -60
  118. data/test/cases/attribute_methods_test.rb +1009 -1009
  119. data/test/cases/attribute_set_test.rb +270 -270
  120. data/test/cases/attribute_test.rb +246 -246
  121. data/test/cases/attributes_test.rb +253 -253
  122. data/test/cases/autosave_association_test.rb +1708 -1708
  123. data/test/cases/base_test.rb +1713 -1713
  124. data/test/cases/batches_test.rb +489 -489
  125. data/test/cases/binary_test.rb +44 -44
  126. data/test/cases/bind_parameter_test.rb +110 -110
  127. data/test/cases/cache_key_test.rb +26 -25
  128. data/test/cases/calculations_test.rb +798 -798
  129. data/test/cases/callbacks_test.rb +636 -636
  130. data/test/cases/clone_test.rb +40 -40
  131. data/test/cases/coders/json_test.rb +15 -15
  132. data/test/cases/coders/yaml_column_test.rb +63 -63
  133. data/test/cases/collection_cache_key_test.rb +115 -115
  134. data/test/cases/column_alias_test.rb +17 -17
  135. data/test/cases/column_definition_test.rb +92 -92
  136. data/test/cases/comment_test.rb +145 -143
  137. data/test/cases/connection_adapters/adapter_leasing_test.rb +56 -56
  138. data/test/cases/connection_adapters/connection_handler_test.rb +160 -160
  139. data/test/cases/connection_adapters/connection_specification_test.rb +12 -12
  140. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +255 -255
  141. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +69 -69
  142. data/test/cases/connection_adapters/quoting_test.rb +13 -13
  143. data/test/cases/connection_adapters/schema_cache_test.rb +61 -61
  144. data/test/cases/connection_adapters/type_lookup_test.rb +118 -118
  145. data/test/cases/connection_management_test.rb +112 -112
  146. data/test/cases/connection_pool_test.rb +521 -521
  147. data/test/cases/connection_specification/resolver_test.rb +131 -131
  148. data/test/cases/core_test.rb +112 -112
  149. data/test/cases/counter_cache_test.rb +214 -214
  150. data/test/cases/custom_locking_test.rb +17 -17
  151. data/test/cases/database_statements_test.rb +34 -34
  152. data/test/cases/date_test.rb +44 -44
  153. data/test/cases/date_time_precision_test.rb +107 -106
  154. data/test/cases/date_time_test.rb +61 -61
  155. data/test/cases/defaults_test.rb +219 -218
  156. data/test/cases/dirty_test.rb +763 -763
  157. data/test/cases/disconnected_test.rb +30 -30
  158. data/test/cases/dup_test.rb +157 -157
  159. data/test/cases/enum_test.rb +444 -444
  160. data/test/cases/errors_test.rb +16 -16
  161. data/test/cases/explain_subscriber_test.rb +64 -64
  162. data/test/cases/explain_test.rb +87 -87
  163. data/test/cases/finder_respond_to_test.rb +60 -60
  164. data/test/cases/finder_test.rb +1294 -1294
  165. data/test/cases/fixture_set/file_test.rb +156 -156
  166. data/test/cases/fixtures_test.rb +988 -988
  167. data/test/cases/forbidden_attributes_protection_test.rb +165 -165
  168. data/test/cases/habtm_destroy_order_test.rb +61 -61
  169. data/test/cases/helper.rb +204 -204
  170. data/test/cases/hot_compatibility_test.rb +142 -142
  171. data/test/cases/i18n_test.rb +45 -45
  172. data/test/cases/inheritance_test.rb +606 -606
  173. data/test/cases/integration_test.rb +155 -155
  174. data/test/cases/invalid_connection_test.rb +24 -24
  175. data/test/cases/invertible_migration_test.rb +387 -387
  176. data/test/cases/json_serialization_test.rb +311 -311
  177. data/test/cases/locking_test.rb +493 -493
  178. data/test/cases/log_subscriber_test.rb +225 -225
  179. data/test/cases/migration/change_schema_test.rb +458 -458
  180. data/test/cases/migration/change_table_test.rb +256 -256
  181. data/test/cases/migration/column_attributes_test.rb +176 -176
  182. data/test/cases/migration/column_positioning_test.rb +56 -56
  183. data/test/cases/migration/columns_test.rb +310 -310
  184. data/test/cases/migration/command_recorder_test.rb +350 -350
  185. data/test/cases/migration/compatibility_test.rb +118 -118
  186. data/test/cases/migration/create_join_table_test.rb +157 -157
  187. data/test/cases/migration/foreign_key_test.rb +362 -360
  188. data/test/cases/migration/helper.rb +39 -39
  189. data/test/cases/migration/index_test.rb +218 -218
  190. data/test/cases/migration/logger_test.rb +36 -36
  191. data/test/cases/migration/pending_migrations_test.rb +52 -52
  192. data/test/cases/migration/references_foreign_key_test.rb +221 -216
  193. data/test/cases/migration/references_index_test.rb +101 -101
  194. data/test/cases/migration/references_statements_test.rb +136 -136
  195. data/test/cases/migration/rename_table_test.rb +93 -93
  196. data/test/cases/migration_test.rb +1157 -1157
  197. data/test/cases/migrator_test.rb +471 -470
  198. data/test/cases/mixin_test.rb +68 -68
  199. data/test/cases/modules_test.rb +172 -172
  200. data/test/cases/multiparameter_attributes_test.rb +372 -372
  201. data/test/cases/multiple_db_test.rb +122 -122
  202. data/test/cases/nested_attributes_test.rb +1098 -1098
  203. data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
  204. data/test/cases/persistence_test.rb +1001 -1001
  205. data/test/cases/pooled_connections_test.rb +81 -81
  206. data/test/cases/primary_keys_test.rb +376 -376
  207. data/test/cases/query_cache_test.rb +446 -446
  208. data/test/cases/quoting_test.rb +202 -202
  209. data/test/cases/readonly_test.rb +119 -119
  210. data/test/cases/reaper_test.rb +85 -85
  211. data/test/cases/reflection_test.rb +509 -509
  212. data/test/cases/relation/delegation_test.rb +63 -63
  213. data/test/cases/relation/merging_test.rb +157 -157
  214. data/test/cases/relation/mutation_test.rb +183 -183
  215. data/test/cases/relation/or_test.rb +92 -92
  216. data/test/cases/relation/predicate_builder_test.rb +16 -16
  217. data/test/cases/relation/record_fetch_warning_test.rb +40 -40
  218. data/test/cases/relation/where_chain_test.rb +105 -105
  219. data/test/cases/relation/where_clause_test.rb +182 -182
  220. data/test/cases/relation/where_test.rb +322 -322
  221. data/test/cases/relation_test.rb +328 -328
  222. data/test/cases/relations_test.rb +2026 -2026
  223. data/test/cases/reload_models_test.rb +22 -22
  224. data/test/cases/result_test.rb +90 -90
  225. data/test/cases/sanitize_test.rb +176 -176
  226. data/test/cases/schema_dumper_test.rb +457 -457
  227. data/test/cases/schema_loading_test.rb +52 -52
  228. data/test/cases/scoping/default_scoping_test.rb +528 -528
  229. data/test/cases/scoping/named_scoping_test.rb +561 -561
  230. data/test/cases/scoping/relation_scoping_test.rb +400 -400
  231. data/test/cases/secure_token_test.rb +32 -32
  232. data/test/cases/serialization_test.rb +104 -104
  233. data/test/cases/serialized_attribute_test.rb +364 -364
  234. data/test/cases/statement_cache_test.rb +136 -136
  235. data/test/cases/store_test.rb +195 -195
  236. data/test/cases/suppressor_test.rb +63 -63
  237. data/test/cases/tasks/database_tasks_test.rb +462 -462
  238. data/test/cases/tasks/mysql_rake_test.rb +345 -345
  239. data/test/cases/tasks/postgresql_rake_test.rb +304 -304
  240. data/test/cases/tasks/sqlite_rake_test.rb +220 -220
  241. data/test/cases/test_case.rb +131 -131
  242. data/test/cases/test_fixtures_test.rb +36 -36
  243. data/test/cases/time_precision_test.rb +103 -102
  244. data/test/cases/timestamp_test.rb +501 -501
  245. data/test/cases/touch_later_test.rb +121 -121
  246. data/test/cases/transaction_callbacks_test.rb +518 -518
  247. data/test/cases/transaction_isolation_test.rb +106 -106
  248. data/test/cases/transactions_test.rb +835 -834
  249. data/test/cases/type/adapter_specific_registry_test.rb +133 -133
  250. data/test/cases/type/date_time_test.rb +14 -14
  251. data/test/cases/type/integer_test.rb +27 -27
  252. data/test/cases/type/string_test.rb +22 -22
  253. data/test/cases/type/type_map_test.rb +177 -177
  254. data/test/cases/type_test.rb +39 -39
  255. data/test/cases/types_test.rb +24 -24
  256. data/test/cases/unconnected_test.rb +33 -33
  257. data/test/cases/validations/absence_validation_test.rb +73 -73
  258. data/test/cases/validations/association_validation_test.rb +97 -97
  259. data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
  260. data/test/cases/validations/i18n_validation_test.rb +86 -86
  261. data/test/cases/validations/length_validation_test.rb +79 -79
  262. data/test/cases/validations/presence_validation_test.rb +103 -103
  263. data/test/cases/validations/uniqueness_validation_test.rb +548 -548
  264. data/test/cases/validations_repair_helper.rb +19 -19
  265. data/test/cases/validations_test.rb +194 -194
  266. data/test/cases/view_test.rb +216 -216
  267. data/test/cases/yaml_serialization_test.rb +121 -121
  268. data/test/config.example.yml +97 -97
  269. data/test/config.rb +5 -5
  270. data/test/connections/native_ibm_db/connection.rb +44 -0
  271. data/test/fixtures/accounts.yml +29 -29
  272. data/test/fixtures/admin/accounts.yml +2 -2
  273. data/test/fixtures/admin/users.yml +10 -10
  274. data/test/fixtures/author_addresses.yml +17 -17
  275. data/test/fixtures/author_favorites.yml +3 -3
  276. data/test/fixtures/authors.yml +23 -23
  277. data/test/fixtures/bad_posts.yml +9 -9
  278. data/test/fixtures/binaries.yml +133 -133
  279. data/test/fixtures/books.yml +31 -31
  280. data/test/fixtures/bulbs.yml +5 -5
  281. data/test/fixtures/cars.yml +9 -9
  282. data/test/fixtures/categories.yml +19 -19
  283. data/test/fixtures/categories/special_categories.yml +9 -9
  284. data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -4
  285. data/test/fixtures/categories_ordered.yml +7 -7
  286. data/test/fixtures/categories_posts.yml +31 -31
  287. data/test/fixtures/categorizations.yml +23 -23
  288. data/test/fixtures/clubs.yml +8 -8
  289. data/test/fixtures/collections.yml +3 -3
  290. data/test/fixtures/colleges.yml +3 -3
  291. data/test/fixtures/comments.yml +65 -65
  292. data/test/fixtures/companies.yml +67 -67
  293. data/test/fixtures/computers.yml +10 -10
  294. data/test/fixtures/content.yml +3 -3
  295. data/test/fixtures/content_positions.yml +3 -3
  296. data/test/fixtures/courses.yml +8 -8
  297. data/test/fixtures/customers.yml +25 -25
  298. data/test/fixtures/dashboards.yml +6 -6
  299. data/test/fixtures/dead_parrots.yml +5 -5
  300. data/test/fixtures/developers.yml +22 -22
  301. data/test/fixtures/developers_projects.yml +16 -16
  302. data/test/fixtures/dog_lovers.yml +7 -7
  303. data/test/fixtures/dogs.yml +4 -4
  304. data/test/fixtures/doubloons.yml +3 -3
  305. data/test/fixtures/edges.yml +5 -5
  306. data/test/fixtures/entrants.yml +14 -14
  307. data/test/fixtures/essays.yml +6 -6
  308. data/test/fixtures/faces.yml +11 -11
  309. data/test/fixtures/fk_test_has_fk.yml +3 -3
  310. data/test/fixtures/fk_test_has_pk.yml +1 -1
  311. data/test/fixtures/friendships.yml +4 -4
  312. data/test/fixtures/funny_jokes.yml +10 -10
  313. data/test/fixtures/interests.yml +33 -33
  314. data/test/fixtures/items.yml +3 -3
  315. data/test/fixtures/jobs.yml +7 -7
  316. data/test/fixtures/legacy_things.yml +3 -3
  317. data/test/fixtures/live_parrots.yml +4 -4
  318. data/test/fixtures/mateys.yml +4 -4
  319. data/test/fixtures/member_details.yml +8 -8
  320. data/test/fixtures/member_types.yml +6 -6
  321. data/test/fixtures/members.yml +11 -11
  322. data/test/fixtures/memberships.yml +34 -34
  323. data/test/fixtures/men.yml +5 -5
  324. data/test/fixtures/minimalistics.yml +2 -2
  325. data/test/fixtures/minivans.yml +5 -5
  326. data/test/fixtures/mixed_case_monkeys.yml +6 -6
  327. data/test/fixtures/mixins.yml +29 -29
  328. data/test/fixtures/movies.yml +7 -7
  329. data/test/fixtures/naked/yml/accounts.yml +1 -1
  330. data/test/fixtures/naked/yml/companies.yml +1 -1
  331. data/test/fixtures/naked/yml/courses.yml +1 -1
  332. data/test/fixtures/naked/yml/parrots.yml +2 -2
  333. data/test/fixtures/naked/yml/trees.yml +3 -3
  334. data/test/fixtures/nodes.yml +29 -29
  335. data/test/fixtures/organizations.yml +5 -5
  336. data/test/fixtures/other_comments.yml +6 -6
  337. data/test/fixtures/other_dogs.yml +2 -2
  338. data/test/fixtures/other_posts.yml +7 -7
  339. data/test/fixtures/other_topics.yml +42 -42
  340. data/test/fixtures/owners.yml +9 -9
  341. data/test/fixtures/parrots.yml +27 -27
  342. data/test/fixtures/parrots_pirates.yml +7 -7
  343. data/test/fixtures/people.yml +24 -24
  344. data/test/fixtures/peoples_treasures.yml +3 -3
  345. data/test/fixtures/pets.yml +19 -19
  346. data/test/fixtures/pirates.yml +12 -15
  347. data/test/fixtures/posts.yml +80 -80
  348. data/test/fixtures/price_estimates.yml +16 -16
  349. data/test/fixtures/products.yml +4 -4
  350. data/test/fixtures/projects.yml +7 -7
  351. data/test/fixtures/ratings.yml +14 -14
  352. data/test/fixtures/readers.yml +11 -11
  353. data/test/fixtures/references.yml +17 -17
  354. data/test/fixtures/reserved_words/distinct.yml +5 -5
  355. data/test/fixtures/reserved_words/distinct_select.yml +11 -11
  356. data/test/fixtures/reserved_words/group.yml +14 -14
  357. data/test/fixtures/reserved_words/select.yml +8 -8
  358. data/test/fixtures/reserved_words/values.yml +7 -7
  359. data/test/fixtures/ships.yml +6 -6
  360. data/test/fixtures/speedometers.yml +8 -8
  361. data/test/fixtures/sponsors.yml +12 -12
  362. data/test/fixtures/string_key_objects.yml +7 -7
  363. data/test/fixtures/subscribers.yml +10 -10
  364. data/test/fixtures/subscriptions.yml +12 -12
  365. data/test/fixtures/taggings.yml +78 -78
  366. data/test/fixtures/tags.yml +11 -11
  367. data/test/fixtures/tasks.yml +7 -7
  368. data/test/fixtures/teapots.yml +3 -3
  369. data/test/fixtures/to_be_linked/accounts.yml +2 -2
  370. data/test/fixtures/to_be_linked/users.yml +10 -10
  371. data/test/fixtures/topics.yml +49 -49
  372. data/test/fixtures/toys.yml +14 -14
  373. data/test/fixtures/traffic_lights.yml +9 -9
  374. data/test/fixtures/treasures.yml +10 -10
  375. data/test/fixtures/trees.yml +3 -3
  376. data/test/fixtures/uuid_children.yml +3 -3
  377. data/test/fixtures/uuid_parents.yml +2 -2
  378. data/test/fixtures/variants.yml +4 -4
  379. data/test/fixtures/vegetables.yml +19 -19
  380. data/test/fixtures/vertices.yml +3 -3
  381. data/test/fixtures/warehouse_things.yml +2 -2
  382. data/test/fixtures/zines.yml +5 -5
  383. data/test/migrations/10_urban/9_add_expressions.rb +11 -11
  384. data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -15
  385. data/test/migrations/magic/1_currencies_have_symbols.rb +12 -12
  386. data/test/migrations/missing/1000_people_have_middle_names.rb +9 -9
  387. data/test/migrations/missing/1_people_have_last_names.rb +9 -9
  388. data/test/migrations/missing/3_we_need_reminders.rb +12 -12
  389. data/test/migrations/missing/4_innocent_jointable.rb +12 -12
  390. data/test/migrations/rename/1_we_need_things.rb +11 -11
  391. data/test/migrations/rename/2_rename_things.rb +9 -9
  392. data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -9
  393. data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -9
  394. data/test/migrations/to_copy2/1_create_articles.rb +7 -7
  395. data/test/migrations/to_copy2/2_create_comments.rb +7 -7
  396. data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -9
  397. data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -9
  398. data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -9
  399. data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -7
  400. data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -7
  401. data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -9
  402. data/test/migrations/valid/2_we_need_reminders.rb +12 -12
  403. data/test/migrations/valid/3_innocent_jointable.rb +12 -12
  404. data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -9
  405. data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +12 -12
  406. data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +12 -12
  407. data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -9
  408. data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -12
  409. data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -12
  410. data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -8
  411. data/test/models/admin.rb +5 -5
  412. data/test/models/admin/account.rb +3 -3
  413. data/test/models/admin/user.rb +40 -40
  414. data/test/models/aircraft.rb +5 -5
  415. data/test/models/arunit2_model.rb +3 -3
  416. data/test/models/author.rb +209 -209
  417. data/test/models/auto_id.rb +4 -4
  418. data/test/models/autoloadable/extra_firm.rb +2 -2
  419. data/test/models/binary.rb +2 -2
  420. data/test/models/bird.rb +12 -12
  421. data/test/models/book.rb +23 -23
  422. data/test/models/boolean.rb +2 -2
  423. data/test/models/bulb.rb +52 -52
  424. data/test/models/cake_designer.rb +3 -3
  425. data/test/models/car.rb +29 -29
  426. data/test/models/carrier.rb +2 -2
  427. data/test/models/cat.rb +10 -10
  428. data/test/models/categorization.rb +19 -19
  429. data/test/models/category.rb +35 -35
  430. data/test/models/chef.rb +8 -8
  431. data/test/models/citation.rb +3 -3
  432. data/test/models/club.rb +25 -25
  433. data/test/models/college.rb +10 -10
  434. data/test/models/column.rb +3 -3
  435. data/test/models/column_name.rb +3 -3
  436. data/test/models/comment.rb +76 -76
  437. data/test/models/company.rb +230 -230
  438. data/test/models/company_in_module.rb +98 -98
  439. data/test/models/computer.rb +3 -3
  440. data/test/models/contact.rb +41 -41
  441. data/test/models/content.rb +40 -40
  442. data/test/models/contract.rb +20 -20
  443. data/test/models/country.rb +7 -7
  444. data/test/models/course.rb +6 -6
  445. data/test/models/customer.rb +83 -83
  446. data/test/models/customer_carrier.rb +14 -14
  447. data/test/models/dashboard.rb +3 -3
  448. data/test/models/default.rb +2 -2
  449. data/test/models/department.rb +4 -4
  450. data/test/models/developer.rb +274 -274
  451. data/test/models/dog.rb +5 -5
  452. data/test/models/dog_lover.rb +5 -5
  453. data/test/models/doubloon.rb +12 -12
  454. data/test/models/drink_designer.rb +3 -3
  455. data/test/models/edge.rb +5 -5
  456. data/test/models/electron.rb +5 -5
  457. data/test/models/engine.rb +4 -4
  458. data/test/models/entrant.rb +3 -3
  459. data/test/models/essay.rb +5 -5
  460. data/test/models/event.rb +3 -3
  461. data/test/models/eye.rb +37 -37
  462. data/test/models/face.rb +9 -9
  463. data/test/models/friendship.rb +6 -6
  464. data/test/models/guid.rb +2 -2
  465. data/test/models/guitar.rb +4 -4
  466. data/test/models/hotel.rb +11 -11
  467. data/test/models/image.rb +3 -3
  468. data/test/models/interest.rb +5 -5
  469. data/test/models/invoice.rb +4 -4
  470. data/test/models/item.rb +7 -7
  471. data/test/models/job.rb +7 -7
  472. data/test/models/joke.rb +7 -7
  473. data/test/models/keyboard.rb +3 -3
  474. data/test/models/legacy_thing.rb +3 -3
  475. data/test/models/lesson.rb +11 -11
  476. data/test/models/line_item.rb +3 -3
  477. data/test/models/liquid.rb +4 -4
  478. data/test/models/man.rb +11 -11
  479. data/test/models/matey.rb +4 -4
  480. data/test/models/member.rb +42 -42
  481. data/test/models/member_detail.rb +8 -8
  482. data/test/models/member_type.rb +3 -3
  483. data/test/models/membership.rb +35 -35
  484. data/test/models/mentor.rb +2 -2
  485. data/test/models/minimalistic.rb +2 -2
  486. data/test/models/minivan.rb +9 -9
  487. data/test/models/mixed_case_monkey.rb +3 -3
  488. data/test/models/mocktail_designer.rb +2 -2
  489. data/test/models/molecule.rb +6 -6
  490. data/test/models/movie.rb +5 -5
  491. data/test/models/node.rb +5 -5
  492. data/test/models/non_primary_key.rb +2 -2
  493. data/test/models/notification.rb +3 -3
  494. data/test/models/order.rb +4 -4
  495. data/test/models/organization.rb +14 -14
  496. data/test/models/other_dog.rb +5 -5
  497. data/test/models/owner.rb +37 -37
  498. data/test/models/parrot.rb +28 -28
  499. data/test/models/person.rb +142 -142
  500. data/test/models/personal_legacy_thing.rb +4 -4
  501. data/test/models/pet.rb +18 -18
  502. data/test/models/pet_treasure.rb +6 -6
  503. data/test/models/pirate.rb +92 -92
  504. data/test/models/possession.rb +3 -3
  505. data/test/models/post.rb +273 -273
  506. data/test/models/price_estimate.rb +4 -4
  507. data/test/models/professor.rb +5 -5
  508. data/test/models/project.rb +40 -40
  509. data/test/models/publisher.rb +2 -2
  510. data/test/models/publisher/article.rb +4 -4
  511. data/test/models/publisher/magazine.rb +3 -3
  512. data/test/models/rating.rb +4 -4
  513. data/test/models/reader.rb +23 -23
  514. data/test/models/recipe.rb +3 -3
  515. data/test/models/record.rb +2 -2
  516. data/test/models/reference.rb +22 -22
  517. data/test/models/reply.rb +61 -61
  518. data/test/models/ship.rb +39 -39
  519. data/test/models/ship_part.rb +8 -8
  520. data/test/models/shop.rb +17 -17
  521. data/test/models/shop_account.rb +6 -6
  522. data/test/models/speedometer.rb +6 -6
  523. data/test/models/sponsor.rb +7 -7
  524. data/test/models/string_key_object.rb +3 -3
  525. data/test/models/student.rb +4 -4
  526. data/test/models/subject.rb +16 -16
  527. data/test/models/subscriber.rb +8 -8
  528. data/test/models/subscription.rb +4 -4
  529. data/test/models/tag.rb +13 -13
  530. data/test/models/tagging.rb +13 -13
  531. data/test/models/task.rb +5 -5
  532. data/test/models/topic.rb +118 -118
  533. data/test/models/toy.rb +6 -6
  534. data/test/models/traffic_light.rb +4 -4
  535. data/test/models/treasure.rb +14 -14
  536. data/test/models/treaty.rb +7 -7
  537. data/test/models/tree.rb +3 -3
  538. data/test/models/tuning_peg.rb +4 -4
  539. data/test/models/tyre.rb +11 -11
  540. data/test/models/user.rb +14 -14
  541. data/test/models/uuid_child.rb +3 -3
  542. data/test/models/uuid_item.rb +6 -6
  543. data/test/models/uuid_parent.rb +3 -3
  544. data/test/models/vegetables.rb +24 -24
  545. data/test/models/vehicle.rb +6 -6
  546. data/test/models/vertex.rb +9 -9
  547. data/test/models/warehouse_thing.rb +5 -5
  548. data/test/models/wheel.rb +3 -3
  549. data/test/models/without_table.rb +3 -3
  550. data/test/models/zine.rb +3 -3
  551. data/test/schema/i5/ibm_db_specific_schema.rb +137 -0
  552. data/test/schema/ids/ibm_db_specific_schema.rb +140 -0
  553. data/test/schema/luw/ibm_db_specific_schema.rb +137 -0
  554. data/test/schema/mysql2_specific_schema.rb +68 -68
  555. data/test/schema/oracle_specific_schema.rb +40 -40
  556. data/test/schema/postgresql_specific_schema.rb +114 -114
  557. data/test/schema/schema.rb +1057 -1057
  558. data/test/schema/schema.rb.original +1057 -1057
  559. data/test/schema/sqlite_specific_schema.rb +18 -18
  560. data/test/schema/zOS/ibm_db_specific_schema.rb +208 -0
  561. data/test/support/config.rb +43 -43
  562. data/test/support/connection.rb +23 -23
  563. data/test/support/connection_helper.rb +14 -14
  564. data/test/support/ddl_helper.rb +8 -8
  565. data/test/support/schema_dumping_helper.rb +20 -20
  566. data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -22
  567. data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -182
  568. metadata +24 -13
  569. data/test/fixtures/author_addresses.original +0 -11
  570. data/test/fixtures/authors.original +0 -17
@@ -1,500 +1,500 @@
1
- /*
2
- +----------------------------------------------------------------------+
3
- | Licensed Materials - Property of IBM |
4
- | |
5
- | (C) Copyright IBM Corporation 2009 - 2015 |
6
- +----------------------------------------------------------------------+
7
- | Authors: Praveen Devarao, Arvind Gupta |
8
- +----------------------------------------------------------------------+
9
- */
10
-
11
- #ifndef RUBY_IBM_DB_CLI_H
12
- #define RUBY_IBM_DB_CLI_H
13
-
14
- #ifdef _WIN32
15
- #include <windows.h>
16
- #else
17
- #include <dlfcn.h>
18
- #endif
19
-
20
- #ifdef _WIN32
21
- #define DLOPEN LoadLibrary
22
- #define DLSYM GetProcAddress
23
- #define DLCLOSE FreeLibrary
24
- #define LIBDB2 "db2cli.dll"
25
- #elif _AIX
26
- #define DLOPEN dlopen
27
- #define DLSYM dlsym
28
- #define DLCLOSE dlclose
29
- #ifdef __64BIT__
30
- /*64-bit library in the archive libdb2.a*/
31
- #define LIBDB2 "libdb2.a(shr_64.o)"
32
- #else
33
- /*32-bit library in the archive libdb2.a*/
34
- #define LIBDB2 "libdb2.a(shr.o)"
35
- #endif
36
- #elif __APPLE__
37
- #define DLOPEN dlopen
38
- #define DLSYM dlsym
39
- #define DLCLOSE dlclose
40
- #define LIBDB2 "libdb2.dylib"
41
- #else
42
- #define DLOPEN dlopen
43
- #define DLSYM dlsym
44
- #define DLCLOSE dlclose
45
- #define LIBDB2 "libdb2.so.1"
46
- #endif
47
-
48
- #include <ruby.h>
49
- #include <stdio.h>
50
- #include <string.h>
51
- #include <stdlib.h>
52
- #include <sqlcli1.h>
53
-
54
- /* Defines a linked list structure for caching param data */
55
- typedef struct _param_cache_node {
56
- SQLSMALLINT data_type; /* Datatype */
57
- SQLUINTEGER param_size; /* param size */
58
- SQLSMALLINT nullable; /* is Nullable */
59
- SQLSMALLINT scale; /* Decimal scale */
60
- SQLUINTEGER file_options; /* File options if PARAM_FILE */
61
- SQLINTEGER bind_indicator; /* indicator variable for SQLBindParameter */
62
- int param_num; /* param number in stmt */
63
- int param_type; /* Type of param - INP/OUT/INP-OUT/FILE */
64
- int size; /* Size of param */
65
- char *varname; /* bound variable name */
66
- SQLBIGINT ivalue; /* Temp storage value */
67
- SQLDOUBLE fvalue; /* Temp storage value */
68
- SQLPOINTER svalue; /* Temp storage value */
69
- struct _param_cache_node *next; /* Pointer to next node */
70
- } param_node;
71
-
72
- typedef struct _conn_handle_struct {
73
- SQLHANDLE henv;
74
- SQLHANDLE hdbc;
75
- long auto_commit;
76
- long c_bin_mode;
77
- long c_case_mode;
78
- long c_cursor_type;
79
- int handle_active;
80
- int transaction_active;
81
- SQLSMALLINT error_recno_tracker;
82
- SQLSMALLINT errormsg_recno_tracker;
83
- int flag_pconnect; /* Indicates that this connection is persistent */
84
-
85
- int errorType; /*Indicates Whether the error logged in ruby_error_msg is a statement error or connection error*/
86
-
87
- SQLPOINTER ruby_error_msg;
88
- SQLPOINTER ruby_error_state;
89
- SQLSMALLINT ruby_error_msg_len;
90
-
91
- SQLINTEGER sqlcode;
92
- } conn_handle;
93
-
94
- typedef union {
95
- SQLINTEGER i_val;
96
- SQLDOUBLE d_val;
97
- SQLFLOAT f_val;
98
- SQLSMALLINT s_val;
99
- SQLPOINTER str_val;
100
- } ibm_db_row_data_type;
101
-
102
- typedef struct {
103
- SQLINTEGER out_length;
104
- ibm_db_row_data_type data;
105
- } ibm_db_row_type;
106
-
107
- typedef struct _ibm_db_result_set_info_struct {
108
- #ifdef UNICODE_SUPPORT_VERSION
109
- SQLWCHAR *name;
110
- long name_length;
111
- #else
112
- SQLCHAR *name;
113
- #endif
114
- SQLSMALLINT type;
115
- SQLUINTEGER size;
116
- SQLSMALLINT scale;
117
- SQLSMALLINT nullable;
118
- SQLINTEGER lob_loc;
119
- SQLINTEGER loc_ind;
120
- SQLSMALLINT loc_type;
121
- } ibm_db_result_set_info;
122
-
123
- typedef struct _row_hash_struct {
124
- VALUE hash;
125
- } row_hash_struct;
126
-
127
- typedef struct _stmt_handle_struct {
128
- SQLHANDLE hdbc;
129
- SQLHANDLE hstmt;
130
- long s_bin_mode;
131
- long cursor_type;
132
- long s_case_mode;
133
- SQLSMALLINT error_recno_tracker;
134
- SQLSMALLINT errormsg_recno_tracker;
135
-
136
- /* Parameter Caching variables */
137
- param_node *head_cache_list;
138
- param_node *current_node;
139
-
140
- int num_params; /* Number of Params */
141
- int file_param; /* if option passed in is FILE_PARAM */
142
- int num_columns;
143
- int is_executing;
144
- int is_freed; /* Indicates if the SQLFreeHandle is been called on the handle or not.*/
145
-
146
- ibm_db_result_set_info *column_info;
147
- ibm_db_row_type *row_data;
148
-
149
- SQLPOINTER ruby_stmt_err_msg;
150
- SQLPOINTER ruby_stmt_err_state;
151
- SQLSMALLINT ruby_stmt_err_msg_len;
152
- SQLINTEGER sqlcode;
153
- int rc;
154
- } stmt_handle;
155
-
156
- /*
157
- Structure holding the data to be passed to SQLConnect or SQLDriverConnect CLI call
158
- */
159
- typedef struct _ibm_db_connect_args_struct {
160
- #ifdef UNICODE_SUPPORT_VERSION
161
- SQLWCHAR *database;
162
- SQLWCHAR *uid;
163
- SQLWCHAR *password;
164
- #else
165
- SQLCHAR *database;
166
- SQLCHAR *uid;
167
- SQLCHAR *password;
168
- #endif
169
- SQLSMALLINT database_len;
170
- SQLSMALLINT uid_len;
171
- SQLSMALLINT password_len;
172
- int ctlg_conn; /*Indicates if the connection is a cataloged connection or not*/
173
- SQLHANDLE *hdbc;
174
- } connect_args;
175
-
176
- /*
177
- Structure holding the necessary info to be passed to SQLEndTran CLI call
178
- */
179
- typedef struct _ibm_db_end_tran_args_struct {
180
- SQLHANDLE *hdbc;
181
- SQLSMALLINT handleType;
182
- SQLSMALLINT completionType;
183
- int rc;
184
- } end_tran_args;
185
-
186
- /*
187
- Structure holding the necessary info to be passed to SQLDescribeparam CLI call
188
- */
189
- typedef struct _ibm_db_describeparam_args_struct {
190
- stmt_handle *stmt_res;
191
- SQLUSMALLINT param_no;
192
- SQLSMALLINT sql_data_type;
193
- SQLUINTEGER sql_precision;
194
- SQLSMALLINT sql_scale;
195
- SQLSMALLINT sql_nullable;
196
- int rc;
197
- } describeparam_args;
198
-
199
- /*
200
- Structure holding the necessary info to be passed to SQLDescribeCol CLI call
201
- */
202
- typedef struct _ibm_db_describecol_args_struct {
203
- stmt_handle *stmt_res;
204
- SQLUSMALLINT col_no;
205
- SQLSMALLINT name_length;
206
- SQLSMALLINT buff_length;
207
- } describecol_args;
208
- /*
209
- Structure holding the necessary info to be passed to CLI calls like SQLColumns
210
- SQLForeignKeys etc. The same structure is used to get the SP parameters, with table_name as proc_name
211
- */
212
- typedef struct _ibm_db_metadata_args_struct {
213
- stmt_handle *stmt_res;
214
- #ifdef UNICODE_SUPPORT_VERSION
215
- SQLWCHAR *qualifier;
216
- SQLWCHAR *owner;
217
- SQLWCHAR *table_name;
218
- SQLWCHAR *proc_name; /*Used for call SQLProcedureColumns*/
219
- SQLWCHAR *column_name;
220
- SQLWCHAR *table_type;
221
- #else
222
- SQLCHAR *qualifier;
223
- SQLCHAR *owner;
224
- SQLCHAR *table_name;
225
- SQLCHAR *proc_name; /*Used for call SQLProcedureColumns*/
226
- SQLCHAR *column_name;
227
- SQLCHAR *table_type;
228
- #endif
229
- SQLSMALLINT qualifier_len;
230
- SQLSMALLINT owner_len;
231
- SQLSMALLINT table_name_len;
232
- SQLSMALLINT proc_name_len; /*Used for call SQLProcedureColumns*/
233
- SQLSMALLINT column_name_len;
234
- SQLSMALLINT table_type_len;
235
- int scope; /*Used in SQLSpecialColumns To determine the scope of the unique row identifier*/
236
- int unique; /*Used in SQLStatistics to determine if only unique indexes are to be fetched or all*/
237
- int rc;
238
-
239
- } metadata_args;
240
-
241
- /*
242
- Structure holding the necessary info to be passed to SQLPrepare and SQLExecDirect CLI call
243
- */
244
- typedef struct _ibm_db_exec_direct_args_struct {
245
- stmt_handle *stmt_res;
246
- #ifdef UNICODE_SUPPORT_VERSION
247
- SQLWCHAR *stmt_string;
248
- #else
249
- SQLCHAR *stmt_string;
250
- #endif
251
- long stmt_string_len;
252
- int rc;
253
- } exec_cum_prepare_args;
254
-
255
- /*
256
- Structure holding the necessary info to be passed to SQLCreateDB and SQLDropDB CLI call
257
- */
258
- typedef struct _ibm_db_create_drop_db_args_struct {
259
- conn_handle *conn_res;
260
- #ifdef UNICODE_SUPPORT_VERSION
261
- SQLWCHAR *dbName;
262
- SQLWCHAR *codeSet;
263
- SQLWCHAR *mode;
264
- #else
265
- SQLCHAR *dbName;
266
- SQLCHAR *codeSet;
267
- SQLCHAR *mode;
268
- #endif
269
- long dbName_string_len;
270
- long codeSet_string_len;
271
- long mode_string_len;
272
- int rc;
273
- } create_drop_db_args;
274
-
275
- /*
276
- Structure holding the necessary info to be passed to SQLParamData and SQLPutData CLI call
277
- */
278
- typedef struct _ibm_db_param_and_put_data_struct {
279
- stmt_handle *stmt_res;
280
- SQLPOINTER valuePtr;
281
- } param_cum_put_data_args;
282
-
283
- /*
284
- Structure holding the necessary info to be passed to SQLNextResult CLI call
285
- */
286
- typedef struct _ibm_db_next_result_args_struct {
287
- SQLHSTMT *new_hstmt;
288
- stmt_handle *stmt_res;
289
- int rc;
290
- } next_result_args;
291
-
292
- /*
293
- Structure holding the necessary info to be passed to calls SQLNumResultCols/SQLNumParams
294
- */
295
- typedef struct _ibm_db_row_col_count_struct {
296
- stmt_handle *stmt_res;
297
- SQLSMALLINT count;
298
- int rc;
299
- } row_col_count_args;
300
-
301
- /*
302
- Structure holding the necessary info to be passed to call SQLRowcount
303
- */
304
- typedef struct _ibm_db_row_count_struct {
305
- stmt_handle *stmt_res;
306
- SQLINTEGER count;
307
- int rc;
308
- } sql_row_count_args;
309
-
310
- /*
311
- Structure holding the necessary info to be passed to call SQLColAttributes
312
- */
313
- typedef struct _ibm_db_col_attr_struct {
314
- stmt_handle *stmt_res;
315
- SQLSMALLINT col_num;
316
- SQLSMALLINT FieldIdentifier;
317
- SQLINTEGER num_attr;
318
- int rc;
319
- } col_attr_args;
320
-
321
- /*
322
- Structure holding the necessary info to be passed to call SQLBindCol
323
- */
324
- typedef struct _ibm_db_bind_col_struct {
325
- stmt_handle *stmt_res;
326
- SQLUSMALLINT col_num;
327
- SQLSMALLINT TargetType;
328
- SQLPOINTER TargetValuePtr;
329
- SQLLEN buff_length;
330
- SQLLEN *out_length;
331
- } bind_col_args;
332
-
333
- /*
334
- Structure holding the necessary info to be passed to call SQLGetData
335
- */
336
- typedef struct _ibm_db_get_data_args_struct {
337
- stmt_handle *stmt_res;
338
- SQLSMALLINT col_num;
339
- SQLSMALLINT targetType;
340
- SQLPOINTER buff;
341
- SQLLEN buff_length;
342
- SQLLEN *out_length;
343
- } get_data_args;
344
-
345
- /*
346
- Structure holding the necessary info to be passed to call SQLGetLength
347
- */
348
- typedef struct _ibm_db_get_data_length_struct {
349
- SQLHSTMT *new_hstmt;
350
- SQLSMALLINT col_num;
351
- stmt_handle *stmt_res;
352
- SQLINTEGER *sLength;
353
-
354
- } get_length_args;
355
-
356
- /*
357
- Structure holding the necessary info to be passed to call SQLGetSubString
358
- */
359
- typedef struct _ibm_db_get_data_subString_struct {
360
- SQLHSTMT *new_hstmt;
361
- SQLSMALLINT col_num;
362
- stmt_handle *stmt_res;
363
- SQLUINTEGER forLength;
364
- SQLSMALLINT targetCType;
365
- SQLPOINTER buffer;
366
- SQLLEN buff_length;
367
- SQLINTEGER *out_length;
368
-
369
- } get_subString_args;
370
-
371
- /*
372
- Structure holding the necessary info to be passed to call SQLFetchScroll and SQLFetch
373
- */
374
- typedef struct _ibm_db_fetch_data_struct {
375
- stmt_handle *stmt_res;
376
- SQLSMALLINT fetchOrientation;
377
- SQLLEN fetchOffset;
378
- } fetch_data_args;
379
-
380
- /*
381
- Structure holding the necessary info to be passed to calls SQLSetStmtAttr/SQLSetConnectAttr/SQLEnvAttr
382
- */
383
- typedef struct _ibm_db_set_handle_attr_struct {
384
- SQLHANDLE *handle;
385
- SQLINTEGER attribute;
386
- SQLPOINTER valuePtr;
387
- SQLINTEGER strLength;
388
-
389
- } set_handle_attr_args;
390
-
391
- /*
392
- Structure holding the necessary info to be passed to call SQLGetStmtAttr and SQLGetConnectAttr
393
- */
394
- typedef struct _ibm_db_get_handle_attr_struct {
395
- SQLHANDLE *handle;
396
- SQLINTEGER attribute;
397
- SQLPOINTER valuePtr;
398
- SQLINTEGER buff_length;
399
- SQLINTEGER *out_length;
400
- } get_handle_attr_args;
401
-
402
- /*
403
- Structure holding the necessary info to be passed to call SQLBindParameter
404
- */
405
- typedef struct _ibm_db_bind_parameter_struct {
406
- stmt_handle *stmt_res;
407
- SQLSMALLINT param_num;
408
- SQLSMALLINT IOType;
409
- SQLSMALLINT valueType;
410
- SQLSMALLINT paramType;
411
- SQLULEN colSize;
412
- SQLSMALLINT decimalDigits;
413
- SQLPOINTER paramValPtr;
414
- SQLLEN buff_length;
415
- SQLLEN *out_length;
416
- } bind_parameter_args;
417
-
418
- /*
419
- Structure holding the necessary info to be passed to call SQLGetInfo
420
- */
421
- typedef struct _ibm_db_get_info_struct {
422
- conn_handle *conn_res;
423
- SQLUSMALLINT infoType;
424
- SQLPOINTER infoValue;
425
- SQLSMALLINT buff_length;
426
- SQLSMALLINT *out_length;
427
- VALUE return_value;
428
- } get_info_args;
429
-
430
- /*
431
- Structure holding the necessary info to be passed to call SQLGetDiagRec
432
- */
433
- typedef struct _ibm_db_get_diagRec_struct {
434
- SQLSMALLINT hType;
435
- SQLHANDLE handle;
436
- SQLSMALLINT recNum;
437
- SQLPOINTER SQLState;
438
- SQLPOINTER msgText;
439
- SQLINTEGER *NativeErrorPtr;
440
- SQLSMALLINT buff_length;
441
- SQLSMALLINT *text_length_ptr;
442
- int return_code;
443
- } get_diagRec_args;
444
-
445
- /*
446
- Structure holding the necessary info to be passed to call SQLFreestmt
447
- */
448
- typedef struct _ibm_db_free_stmt_struct {
449
- stmt_handle *stmt_res;
450
- SQLUSMALLINT option;
451
- int rc;
452
- } free_stmt_args;
453
-
454
- int _ruby_ibm_db_SQLConnect_helper(connect_args *data);
455
- int _ruby_ibm_db_SQLDisconnect_helper(SQLHANDLE *hdbc);
456
- void _ruby_ibm_db_Connection_level_UBF(void *data);
457
- int _ruby_ibm_db_SQLEndTran(end_tran_args *endtran_args);
458
- int _ruby_ibm_db_SQLDescribeParam_helper(describeparam_args *data);
459
- int _ruby_ibm_db_SQLDescribeCol_helper(describecol_args *data);
460
- int _ruby_ibm_db_SQLBindCol_helper(bind_col_args *data);
461
- int _ruby_ibm_db_SQLColumnPrivileges_helper(metadata_args *data);
462
- int _ruby_ibm_db_SQLColumns_helper(metadata_args *data);
463
- int _ruby_ibm_db_SQLPrimaryKeys_helper(metadata_args *data);
464
- int _ruby_ibm_db_SQLForeignKeys_helper(metadata_args *data);
465
- int _ruby_ibm_db_SQLProcedureColumns_helper(metadata_args *data);
466
- int _ruby_ibm_db_SQLProcedures_helper(metadata_args *data);
467
- int _ruby_ibm_db_SQLSpecialColumns_helper(metadata_args *data);
468
- int _ruby_ibm_db_SQLStatistics_helper(metadata_args *data);
469
- int _ruby_ibm_db_SQLTablePrivileges_helper(metadata_args *data);
470
- int _ruby_ibm_db_SQLTables_helper(metadata_args *data);
471
- int _ruby_ibm_db_SQLExecDirect_helper(exec_cum_prepare_args *data);
472
- int _ruby_ibm_db_SQLPrepare_helper(exec_cum_prepare_args *data);
473
- int _ruby_ibm_db_SQLFreeStmt_helper(free_stmt_args *data);
474
- int _ruby_ibm_db_SQLExecute_helper(stmt_handle *stmt_res);
475
- int _ruby_ibm_db_SQLParamData_helper(param_cum_put_data_args *data);
476
- int _ruby_ibm_db_SQLColAttributes_helper(col_attr_args *data);
477
- int _ruby_ibm_db_SQLPutData_helper(param_cum_put_data_args *data);
478
- int _ruby_ibm_db_SQLGetData_helper(get_data_args *data);
479
- int _ruby_ibm_db_SQLGetLength_helper(get_length_args *data);
480
- int _ruby_ibm_db_SQLGetSubString_helper(get_subString_args *data);
481
- int _ruby_ibm_db_SQLNextResult_helper(next_result_args *data);
482
- int _ruby_ibm_db_SQLFetchScroll_helper(fetch_data_args *data);
483
- int _ruby_ibm_db_SQLFetch_helper(fetch_data_args *data);
484
- int _ruby_ibm_db_SQLNumResultCols_helper(row_col_count_args *data);
485
- int _ruby_ibm_db_SQLNumParams_helper(row_col_count_args *data);
486
- int _ruby_ibm_db_SQLRowCount_helper(sql_row_count_args *data);
487
- int _ruby_ibm_db_SQLGetInfo_helper(get_info_args *data);
488
- int _ruby_ibm_db_SQLGetDiagRec_helper(get_diagRec_args *data);
489
- int _ruby_ibm_db_SQLSetStmtAttr_helper(set_handle_attr_args *data);
490
- int _ruby_ibm_db_SQLSetConnectAttr_helper(set_handle_attr_args *data);
491
- int _ruby_ibm_db_SQLSetEnvAttr_helper(set_handle_attr_args *data);
492
- int _ruby_ibm_db_SQLGetStmtAttr_helper(get_handle_attr_args *data);
493
- int _ruby_ibm_db_SQLGetConnectAttr_helper(get_handle_attr_args *data);
494
- int _ruby_ibm_db_SQLBindFileToParam_helper(stmt_handle *stmt_res, param_node *curr);
495
- int _ruby_ibm_db_SQLBindParameter_helper(bind_parameter_args *data);
496
- void _ruby_ibm_db_Statement_level_UBF(stmt_handle *stmt_res);
497
- int _ruby_ibm_db_SQLCreateDB_helper(create_drop_db_args *data);
498
- int _ruby_ibm_db_SQLDropDB_helper(create_drop_db_args *data);
499
-
500
- #endif /* RUBY_IBM_DB_CLI_H */
1
+ /*
2
+ +----------------------------------------------------------------------+
3
+ | Licensed Materials - Property of IBM |
4
+ | |
5
+ | (C) Copyright IBM Corporation 2009 - 2015 |
6
+ +----------------------------------------------------------------------+
7
+ | Authors: Praveen Devarao, Arvind Gupta |
8
+ +----------------------------------------------------------------------+
9
+ */
10
+
11
+ #ifndef RUBY_IBM_DB_CLI_H
12
+ #define RUBY_IBM_DB_CLI_H
13
+
14
+ #ifdef _WIN32
15
+ #include <windows.h>
16
+ #else
17
+ #include <dlfcn.h>
18
+ #endif
19
+
20
+ #ifdef _WIN32
21
+ #define DLOPEN LoadLibrary
22
+ #define DLSYM GetProcAddress
23
+ #define DLCLOSE FreeLibrary
24
+ #define LIBDB2 "db2cli.dll"
25
+ #elif _AIX
26
+ #define DLOPEN dlopen
27
+ #define DLSYM dlsym
28
+ #define DLCLOSE dlclose
29
+ #ifdef __64BIT__
30
+ /*64-bit library in the archive libdb2.a*/
31
+ #define LIBDB2 "libdb2.a(shr_64.o)"
32
+ #else
33
+ /*32-bit library in the archive libdb2.a*/
34
+ #define LIBDB2 "libdb2.a(shr.o)"
35
+ #endif
36
+ #elif __APPLE__
37
+ #define DLOPEN dlopen
38
+ #define DLSYM dlsym
39
+ #define DLCLOSE dlclose
40
+ #define LIBDB2 "libdb2.dylib"
41
+ #else
42
+ #define DLOPEN dlopen
43
+ #define DLSYM dlsym
44
+ #define DLCLOSE dlclose
45
+ #define LIBDB2 "libdb2.so.1"
46
+ #endif
47
+
48
+ #include <ruby.h>
49
+ #include <stdio.h>
50
+ #include <string.h>
51
+ #include <stdlib.h>
52
+ #include <sqlcli1.h>
53
+
54
+ /* Defines a linked list structure for caching param data */
55
+ typedef struct _param_cache_node {
56
+ SQLSMALLINT data_type; /* Datatype */
57
+ SQLUINTEGER param_size; /* param size */
58
+ SQLSMALLINT nullable; /* is Nullable */
59
+ SQLSMALLINT scale; /* Decimal scale */
60
+ SQLUINTEGER file_options; /* File options if PARAM_FILE */
61
+ SQLINTEGER bind_indicator; /* indicator variable for SQLBindParameter */
62
+ int param_num; /* param number in stmt */
63
+ int param_type; /* Type of param - INP/OUT/INP-OUT/FILE */
64
+ int size; /* Size of param */
65
+ char *varname; /* bound variable name */
66
+ SQLBIGINT ivalue; /* Temp storage value */
67
+ SQLDOUBLE fvalue; /* Temp storage value */
68
+ SQLPOINTER svalue; /* Temp storage value */
69
+ struct _param_cache_node *next; /* Pointer to next node */
70
+ } param_node;
71
+
72
+ typedef struct _conn_handle_struct {
73
+ SQLHANDLE henv;
74
+ SQLHANDLE hdbc;
75
+ long auto_commit;
76
+ long c_bin_mode;
77
+ long c_case_mode;
78
+ long c_cursor_type;
79
+ int handle_active;
80
+ int transaction_active;
81
+ SQLSMALLINT error_recno_tracker;
82
+ SQLSMALLINT errormsg_recno_tracker;
83
+ int flag_pconnect; /* Indicates that this connection is persistent */
84
+
85
+ int errorType; /*Indicates Whether the error logged in ruby_error_msg is a statement error or connection error*/
86
+
87
+ SQLPOINTER ruby_error_msg;
88
+ SQLPOINTER ruby_error_state;
89
+ SQLSMALLINT ruby_error_msg_len;
90
+
91
+ SQLINTEGER sqlcode;
92
+ } conn_handle;
93
+
94
+ typedef union {
95
+ SQLINTEGER i_val;
96
+ SQLDOUBLE d_val;
97
+ SQLFLOAT f_val;
98
+ SQLSMALLINT s_val;
99
+ SQLPOINTER str_val;
100
+ } ibm_db_row_data_type;
101
+
102
+ typedef struct {
103
+ SQLINTEGER out_length;
104
+ ibm_db_row_data_type data;
105
+ } ibm_db_row_type;
106
+
107
+ typedef struct _ibm_db_result_set_info_struct {
108
+ #ifdef UNICODE_SUPPORT_VERSION
109
+ SQLWCHAR *name;
110
+ long name_length;
111
+ #else
112
+ SQLCHAR *name;
113
+ #endif
114
+ SQLSMALLINT type;
115
+ SQLUINTEGER size;
116
+ SQLSMALLINT scale;
117
+ SQLSMALLINT nullable;
118
+ SQLINTEGER lob_loc;
119
+ SQLINTEGER loc_ind;
120
+ SQLSMALLINT loc_type;
121
+ } ibm_db_result_set_info;
122
+
123
+ typedef struct _row_hash_struct {
124
+ VALUE hash;
125
+ } row_hash_struct;
126
+
127
+ typedef struct _stmt_handle_struct {
128
+ SQLHANDLE hdbc;
129
+ SQLHANDLE hstmt;
130
+ long s_bin_mode;
131
+ long cursor_type;
132
+ long s_case_mode;
133
+ SQLSMALLINT error_recno_tracker;
134
+ SQLSMALLINT errormsg_recno_tracker;
135
+
136
+ /* Parameter Caching variables */
137
+ param_node *head_cache_list;
138
+ param_node *current_node;
139
+
140
+ int num_params; /* Number of Params */
141
+ int file_param; /* if option passed in is FILE_PARAM */
142
+ int num_columns;
143
+ int is_executing;
144
+ int is_freed; /* Indicates if the SQLFreeHandle is been called on the handle or not.*/
145
+
146
+ ibm_db_result_set_info *column_info;
147
+ ibm_db_row_type *row_data;
148
+
149
+ SQLPOINTER ruby_stmt_err_msg;
150
+ SQLPOINTER ruby_stmt_err_state;
151
+ SQLSMALLINT ruby_stmt_err_msg_len;
152
+ SQLINTEGER sqlcode;
153
+ int rc;
154
+ } stmt_handle;
155
+
156
+ /*
157
+ Structure holding the data to be passed to SQLConnect or SQLDriverConnect CLI call
158
+ */
159
+ typedef struct _ibm_db_connect_args_struct {
160
+ #ifdef UNICODE_SUPPORT_VERSION
161
+ SQLWCHAR *database;
162
+ SQLWCHAR *uid;
163
+ SQLWCHAR *password;
164
+ #else
165
+ SQLCHAR *database;
166
+ SQLCHAR *uid;
167
+ SQLCHAR *password;
168
+ #endif
169
+ SQLSMALLINT database_len;
170
+ SQLSMALLINT uid_len;
171
+ SQLSMALLINT password_len;
172
+ int ctlg_conn; /*Indicates if the connection is a cataloged connection or not*/
173
+ SQLHANDLE *hdbc;
174
+ } connect_args;
175
+
176
+ /*
177
+ Structure holding the necessary info to be passed to SQLEndTran CLI call
178
+ */
179
+ typedef struct _ibm_db_end_tran_args_struct {
180
+ SQLHANDLE *hdbc;
181
+ SQLSMALLINT handleType;
182
+ SQLSMALLINT completionType;
183
+ int rc;
184
+ } end_tran_args;
185
+
186
+ /*
187
+ Structure holding the necessary info to be passed to SQLDescribeparam CLI call
188
+ */
189
+ typedef struct _ibm_db_describeparam_args_struct {
190
+ stmt_handle *stmt_res;
191
+ SQLUSMALLINT param_no;
192
+ SQLSMALLINT sql_data_type;
193
+ SQLUINTEGER sql_precision;
194
+ SQLSMALLINT sql_scale;
195
+ SQLSMALLINT sql_nullable;
196
+ int rc;
197
+ } describeparam_args;
198
+
199
+ /*
200
+ Structure holding the necessary info to be passed to SQLDescribeCol CLI call
201
+ */
202
+ typedef struct _ibm_db_describecol_args_struct {
203
+ stmt_handle *stmt_res;
204
+ SQLUSMALLINT col_no;
205
+ SQLSMALLINT name_length;
206
+ SQLSMALLINT buff_length;
207
+ } describecol_args;
208
+ /*
209
+ Structure holding the necessary info to be passed to CLI calls like SQLColumns
210
+ SQLForeignKeys etc. The same structure is used to get the SP parameters, with table_name as proc_name
211
+ */
212
+ typedef struct _ibm_db_metadata_args_struct {
213
+ stmt_handle *stmt_res;
214
+ #ifdef UNICODE_SUPPORT_VERSION
215
+ SQLWCHAR *qualifier;
216
+ SQLWCHAR *owner;
217
+ SQLWCHAR *table_name;
218
+ SQLWCHAR *proc_name; /*Used for call SQLProcedureColumns*/
219
+ SQLWCHAR *column_name;
220
+ SQLWCHAR *table_type;
221
+ #else
222
+ SQLCHAR *qualifier;
223
+ SQLCHAR *owner;
224
+ SQLCHAR *table_name;
225
+ SQLCHAR *proc_name; /*Used for call SQLProcedureColumns*/
226
+ SQLCHAR *column_name;
227
+ SQLCHAR *table_type;
228
+ #endif
229
+ SQLSMALLINT qualifier_len;
230
+ SQLSMALLINT owner_len;
231
+ SQLSMALLINT table_name_len;
232
+ SQLSMALLINT proc_name_len; /*Used for call SQLProcedureColumns*/
233
+ SQLSMALLINT column_name_len;
234
+ SQLSMALLINT table_type_len;
235
+ int scope; /*Used in SQLSpecialColumns To determine the scope of the unique row identifier*/
236
+ int unique; /*Used in SQLStatistics to determine if only unique indexes are to be fetched or all*/
237
+ int rc;
238
+
239
+ } metadata_args;
240
+
241
+ /*
242
+ Structure holding the necessary info to be passed to SQLPrepare and SQLExecDirect CLI call
243
+ */
244
+ typedef struct _ibm_db_exec_direct_args_struct {
245
+ stmt_handle *stmt_res;
246
+ #ifdef UNICODE_SUPPORT_VERSION
247
+ SQLWCHAR *stmt_string;
248
+ #else
249
+ SQLCHAR *stmt_string;
250
+ #endif
251
+ long stmt_string_len;
252
+ int rc;
253
+ } exec_cum_prepare_args;
254
+
255
+ /*
256
+ Structure holding the necessary info to be passed to SQLCreateDB and SQLDropDB CLI call
257
+ */
258
+ typedef struct _ibm_db_create_drop_db_args_struct {
259
+ conn_handle *conn_res;
260
+ #ifdef UNICODE_SUPPORT_VERSION
261
+ SQLWCHAR *dbName;
262
+ SQLWCHAR *codeSet;
263
+ SQLWCHAR *mode;
264
+ #else
265
+ SQLCHAR *dbName;
266
+ SQLCHAR *codeSet;
267
+ SQLCHAR *mode;
268
+ #endif
269
+ long dbName_string_len;
270
+ long codeSet_string_len;
271
+ long mode_string_len;
272
+ int rc;
273
+ } create_drop_db_args;
274
+
275
+ /*
276
+ Structure holding the necessary info to be passed to SQLParamData and SQLPutData CLI call
277
+ */
278
+ typedef struct _ibm_db_param_and_put_data_struct {
279
+ stmt_handle *stmt_res;
280
+ SQLPOINTER valuePtr;
281
+ } param_cum_put_data_args;
282
+
283
+ /*
284
+ Structure holding the necessary info to be passed to SQLNextResult CLI call
285
+ */
286
+ typedef struct _ibm_db_next_result_args_struct {
287
+ SQLHSTMT *new_hstmt;
288
+ stmt_handle *stmt_res;
289
+ int rc;
290
+ } next_result_args;
291
+
292
+ /*
293
+ Structure holding the necessary info to be passed to calls SQLNumResultCols/SQLNumParams
294
+ */
295
+ typedef struct _ibm_db_row_col_count_struct {
296
+ stmt_handle *stmt_res;
297
+ SQLSMALLINT count;
298
+ int rc;
299
+ } row_col_count_args;
300
+
301
+ /*
302
+ Structure holding the necessary info to be passed to call SQLRowcount
303
+ */
304
+ typedef struct _ibm_db_row_count_struct {
305
+ stmt_handle *stmt_res;
306
+ SQLINTEGER count;
307
+ int rc;
308
+ } sql_row_count_args;
309
+
310
+ /*
311
+ Structure holding the necessary info to be passed to call SQLColAttributes
312
+ */
313
+ typedef struct _ibm_db_col_attr_struct {
314
+ stmt_handle *stmt_res;
315
+ SQLSMALLINT col_num;
316
+ SQLSMALLINT FieldIdentifier;
317
+ SQLINTEGER num_attr;
318
+ int rc;
319
+ } col_attr_args;
320
+
321
+ /*
322
+ Structure holding the necessary info to be passed to call SQLBindCol
323
+ */
324
+ typedef struct _ibm_db_bind_col_struct {
325
+ stmt_handle *stmt_res;
326
+ SQLUSMALLINT col_num;
327
+ SQLSMALLINT TargetType;
328
+ SQLPOINTER TargetValuePtr;
329
+ SQLLEN buff_length;
330
+ SQLLEN *out_length;
331
+ } bind_col_args;
332
+
333
+ /*
334
+ Structure holding the necessary info to be passed to call SQLGetData
335
+ */
336
+ typedef struct _ibm_db_get_data_args_struct {
337
+ stmt_handle *stmt_res;
338
+ SQLSMALLINT col_num;
339
+ SQLSMALLINT targetType;
340
+ SQLPOINTER buff;
341
+ SQLLEN buff_length;
342
+ SQLLEN *out_length;
343
+ } get_data_args;
344
+
345
+ /*
346
+ Structure holding the necessary info to be passed to call SQLGetLength
347
+ */
348
+ typedef struct _ibm_db_get_data_length_struct {
349
+ SQLHSTMT *new_hstmt;
350
+ SQLSMALLINT col_num;
351
+ stmt_handle *stmt_res;
352
+ SQLINTEGER *sLength;
353
+
354
+ } get_length_args;
355
+
356
+ /*
357
+ Structure holding the necessary info to be passed to call SQLGetSubString
358
+ */
359
+ typedef struct _ibm_db_get_data_subString_struct {
360
+ SQLHSTMT *new_hstmt;
361
+ SQLSMALLINT col_num;
362
+ stmt_handle *stmt_res;
363
+ SQLUINTEGER forLength;
364
+ SQLSMALLINT targetCType;
365
+ SQLPOINTER buffer;
366
+ SQLLEN buff_length;
367
+ SQLINTEGER *out_length;
368
+
369
+ } get_subString_args;
370
+
371
+ /*
372
+ Structure holding the necessary info to be passed to call SQLFetchScroll and SQLFetch
373
+ */
374
+ typedef struct _ibm_db_fetch_data_struct {
375
+ stmt_handle *stmt_res;
376
+ SQLSMALLINT fetchOrientation;
377
+ SQLLEN fetchOffset;
378
+ } fetch_data_args;
379
+
380
+ /*
381
+ Structure holding the necessary info to be passed to calls SQLSetStmtAttr/SQLSetConnectAttr/SQLEnvAttr
382
+ */
383
+ typedef struct _ibm_db_set_handle_attr_struct {
384
+ SQLHANDLE *handle;
385
+ SQLINTEGER attribute;
386
+ SQLPOINTER valuePtr;
387
+ SQLINTEGER strLength;
388
+
389
+ } set_handle_attr_args;
390
+
391
+ /*
392
+ Structure holding the necessary info to be passed to call SQLGetStmtAttr and SQLGetConnectAttr
393
+ */
394
+ typedef struct _ibm_db_get_handle_attr_struct {
395
+ SQLHANDLE *handle;
396
+ SQLINTEGER attribute;
397
+ SQLPOINTER valuePtr;
398
+ SQLINTEGER buff_length;
399
+ SQLINTEGER *out_length;
400
+ } get_handle_attr_args;
401
+
402
+ /*
403
+ Structure holding the necessary info to be passed to call SQLBindParameter
404
+ */
405
+ typedef struct _ibm_db_bind_parameter_struct {
406
+ stmt_handle *stmt_res;
407
+ SQLSMALLINT param_num;
408
+ SQLSMALLINT IOType;
409
+ SQLSMALLINT valueType;
410
+ SQLSMALLINT paramType;
411
+ SQLULEN colSize;
412
+ SQLSMALLINT decimalDigits;
413
+ SQLPOINTER paramValPtr;
414
+ SQLLEN buff_length;
415
+ SQLLEN *out_length;
416
+ } bind_parameter_args;
417
+
418
+ /*
419
+ Structure holding the necessary info to be passed to call SQLGetInfo
420
+ */
421
+ typedef struct _ibm_db_get_info_struct {
422
+ conn_handle *conn_res;
423
+ SQLUSMALLINT infoType;
424
+ SQLPOINTER infoValue;
425
+ SQLSMALLINT buff_length;
426
+ SQLSMALLINT *out_length;
427
+ VALUE return_value;
428
+ } get_info_args;
429
+
430
+ /*
431
+ Structure holding the necessary info to be passed to call SQLGetDiagRec
432
+ */
433
+ typedef struct _ibm_db_get_diagRec_struct {
434
+ SQLSMALLINT hType;
435
+ SQLHANDLE handle;
436
+ SQLSMALLINT recNum;
437
+ SQLPOINTER SQLState;
438
+ SQLPOINTER msgText;
439
+ SQLINTEGER *NativeErrorPtr;
440
+ SQLSMALLINT buff_length;
441
+ SQLSMALLINT *text_length_ptr;
442
+ int return_code;
443
+ } get_diagRec_args;
444
+
445
+ /*
446
+ Structure holding the necessary info to be passed to call SQLFreestmt
447
+ */
448
+ typedef struct _ibm_db_free_stmt_struct {
449
+ stmt_handle *stmt_res;
450
+ SQLUSMALLINT option;
451
+ int rc;
452
+ } free_stmt_args;
453
+
454
+ int _ruby_ibm_db_SQLConnect_helper(connect_args *data);
455
+ int _ruby_ibm_db_SQLDisconnect_helper(SQLHANDLE *hdbc);
456
+ void _ruby_ibm_db_Connection_level_UBF(void *data);
457
+ int _ruby_ibm_db_SQLEndTran(end_tran_args *endtran_args);
458
+ int _ruby_ibm_db_SQLDescribeParam_helper(describeparam_args *data);
459
+ int _ruby_ibm_db_SQLDescribeCol_helper(describecol_args *data);
460
+ int _ruby_ibm_db_SQLBindCol_helper(bind_col_args *data);
461
+ int _ruby_ibm_db_SQLColumnPrivileges_helper(metadata_args *data);
462
+ int _ruby_ibm_db_SQLColumns_helper(metadata_args *data);
463
+ int _ruby_ibm_db_SQLPrimaryKeys_helper(metadata_args *data);
464
+ int _ruby_ibm_db_SQLForeignKeys_helper(metadata_args *data);
465
+ int _ruby_ibm_db_SQLProcedureColumns_helper(metadata_args *data);
466
+ int _ruby_ibm_db_SQLProcedures_helper(metadata_args *data);
467
+ int _ruby_ibm_db_SQLSpecialColumns_helper(metadata_args *data);
468
+ int _ruby_ibm_db_SQLStatistics_helper(metadata_args *data);
469
+ int _ruby_ibm_db_SQLTablePrivileges_helper(metadata_args *data);
470
+ int _ruby_ibm_db_SQLTables_helper(metadata_args *data);
471
+ int _ruby_ibm_db_SQLExecDirect_helper(exec_cum_prepare_args *data);
472
+ int _ruby_ibm_db_SQLPrepare_helper(exec_cum_prepare_args *data);
473
+ int _ruby_ibm_db_SQLFreeStmt_helper(free_stmt_args *data);
474
+ int _ruby_ibm_db_SQLExecute_helper(stmt_handle *stmt_res);
475
+ int _ruby_ibm_db_SQLParamData_helper(param_cum_put_data_args *data);
476
+ int _ruby_ibm_db_SQLColAttributes_helper(col_attr_args *data);
477
+ int _ruby_ibm_db_SQLPutData_helper(param_cum_put_data_args *data);
478
+ int _ruby_ibm_db_SQLGetData_helper(get_data_args *data);
479
+ int _ruby_ibm_db_SQLGetLength_helper(get_length_args *data);
480
+ int _ruby_ibm_db_SQLGetSubString_helper(get_subString_args *data);
481
+ int _ruby_ibm_db_SQLNextResult_helper(next_result_args *data);
482
+ int _ruby_ibm_db_SQLFetchScroll_helper(fetch_data_args *data);
483
+ int _ruby_ibm_db_SQLFetch_helper(fetch_data_args *data);
484
+ int _ruby_ibm_db_SQLNumResultCols_helper(row_col_count_args *data);
485
+ int _ruby_ibm_db_SQLNumParams_helper(row_col_count_args *data);
486
+ int _ruby_ibm_db_SQLRowCount_helper(sql_row_count_args *data);
487
+ int _ruby_ibm_db_SQLGetInfo_helper(get_info_args *data);
488
+ int _ruby_ibm_db_SQLGetDiagRec_helper(get_diagRec_args *data);
489
+ int _ruby_ibm_db_SQLSetStmtAttr_helper(set_handle_attr_args *data);
490
+ int _ruby_ibm_db_SQLSetConnectAttr_helper(set_handle_attr_args *data);
491
+ int _ruby_ibm_db_SQLSetEnvAttr_helper(set_handle_attr_args *data);
492
+ int _ruby_ibm_db_SQLGetStmtAttr_helper(get_handle_attr_args *data);
493
+ int _ruby_ibm_db_SQLGetConnectAttr_helper(get_handle_attr_args *data);
494
+ int _ruby_ibm_db_SQLBindFileToParam_helper(stmt_handle *stmt_res, param_node *curr);
495
+ int _ruby_ibm_db_SQLBindParameter_helper(bind_parameter_args *data);
496
+ void _ruby_ibm_db_Statement_level_UBF(stmt_handle *stmt_res);
497
+ int _ruby_ibm_db_SQLCreateDB_helper(create_drop_db_args *data);
498
+ int _ruby_ibm_db_SQLDropDB_helper(create_drop_db_args *data);
499
+
500
+ #endif /* RUBY_IBM_DB_CLI_H */