ibm_db 3.0.5-x86-mingw32 → 4.0.0-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 (586) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +4 -0
  3. data/LICENSE +1 -1
  4. data/MANIFEST +14 -14
  5. data/ParameterizedQueries README +6 -6
  6. data/README +208 -225
  7. data/ext/Makefile.nt32 +181 -181
  8. data/ext/Makefile.nt32.191 +212 -212
  9. data/ext/extconf.rb +291 -291
  10. data/ext/ibm_db.c +11887 -11887
  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/init.rb +41 -41
  15. data/lib/IBM_DB.rb +27 -27
  16. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +3452 -3177
  17. data/lib/active_record/connection_adapters/ibmdb_adapter.rb +5 -2
  18. data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
  19. data/lib/mswin32/ibm_db.rb +91 -123
  20. data/lib/mswin32/rb2x/i386/ibm_db.so +0 -0
  21. data/test/active_record/connection_adapters/fake_adapter.rb +49 -46
  22. data/test/assets/example.log +1 -1
  23. data/test/assets/test.txt +1 -1
  24. data/test/cases/adapter_test.rb +351 -276
  25. data/test/cases/adapters/mysql2/active_schema_test.rb +193 -0
  26. data/test/cases/adapters/mysql2/bind_parameter_test.rb +50 -0
  27. data/test/cases/adapters/mysql2/boolean_test.rb +100 -0
  28. data/test/cases/adapters/mysql2/case_sensitivity_test.rb +63 -0
  29. data/test/cases/adapters/mysql2/charset_collation_test.rb +54 -0
  30. data/test/cases/adapters/mysql2/connection_test.rb +210 -0
  31. data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +45 -0
  32. data/test/cases/adapters/mysql2/enum_test.rb +26 -0
  33. data/test/cases/adapters/mysql2/explain_test.rb +21 -0
  34. data/test/cases/adapters/mysql2/json_test.rb +195 -0
  35. data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +83 -0
  36. data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -0
  37. data/test/cases/adapters/mysql2/schema_migrations_test.rb +59 -0
  38. data/test/cases/adapters/mysql2/schema_test.rb +126 -0
  39. data/test/cases/adapters/mysql2/sp_test.rb +36 -0
  40. data/test/cases/adapters/mysql2/sql_types_test.rb +14 -0
  41. data/test/cases/adapters/mysql2/table_options_test.rb +42 -0
  42. data/test/cases/adapters/mysql2/unsigned_type_test.rb +66 -0
  43. data/test/cases/adapters/postgresql/active_schema_test.rb +98 -0
  44. data/test/cases/adapters/postgresql/array_test.rb +339 -0
  45. data/test/cases/adapters/postgresql/bit_string_test.rb +82 -0
  46. data/test/cases/adapters/postgresql/bytea_test.rb +134 -0
  47. data/test/cases/adapters/postgresql/case_insensitive_test.rb +26 -0
  48. data/test/cases/adapters/postgresql/change_schema_test.rb +38 -0
  49. data/test/cases/adapters/postgresql/cidr_test.rb +25 -0
  50. data/test/cases/adapters/postgresql/citext_test.rb +78 -0
  51. data/test/cases/adapters/postgresql/collation_test.rb +53 -0
  52. data/test/cases/adapters/postgresql/composite_test.rb +132 -0
  53. data/test/cases/adapters/postgresql/connection_test.rb +257 -0
  54. data/test/cases/adapters/postgresql/datatype_test.rb +92 -0
  55. data/test/cases/adapters/postgresql/domain_test.rb +47 -0
  56. data/test/cases/adapters/postgresql/enum_test.rb +91 -0
  57. data/test/cases/adapters/postgresql/explain_test.rb +20 -0
  58. data/test/cases/adapters/postgresql/extension_migration_test.rb +63 -0
  59. data/test/cases/adapters/postgresql/full_text_test.rb +44 -0
  60. data/test/cases/adapters/postgresql/geometric_test.rb +378 -0
  61. data/test/cases/adapters/postgresql/hstore_test.rb +382 -0
  62. data/test/cases/adapters/postgresql/infinity_test.rb +69 -0
  63. data/test/cases/adapters/postgresql/integer_test.rb +25 -0
  64. data/test/cases/adapters/postgresql/json_test.rb +237 -0
  65. data/test/cases/adapters/postgresql/ltree_test.rb +53 -0
  66. data/test/cases/adapters/postgresql/money_test.rb +96 -0
  67. data/test/cases/adapters/postgresql/network_test.rb +94 -0
  68. data/test/cases/adapters/postgresql/numbers_test.rb +49 -0
  69. data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +405 -0
  70. data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -0
  71. data/test/cases/adapters/postgresql/quoting_test.rb +44 -0
  72. data/test/cases/adapters/postgresql/range_test.rb +343 -0
  73. data/test/cases/adapters/postgresql/referential_integrity_test.rb +111 -0
  74. data/test/cases/adapters/postgresql/rename_table_test.rb +34 -0
  75. data/test/cases/adapters/postgresql/schema_authorization_test.rb +119 -0
  76. data/test/cases/adapters/postgresql/schema_test.rb +597 -0
  77. data/test/cases/adapters/postgresql/serial_test.rb +154 -0
  78. data/test/cases/adapters/postgresql/statement_pool_test.rb +41 -0
  79. data/test/cases/adapters/postgresql/timestamp_test.rb +90 -0
  80. data/test/cases/adapters/postgresql/type_lookup_test.rb +33 -0
  81. data/test/cases/adapters/postgresql/utils_test.rb +62 -0
  82. data/test/cases/adapters/postgresql/uuid_test.rb +294 -0
  83. data/test/cases/adapters/postgresql/xml_test.rb +54 -0
  84. data/test/cases/adapters/sqlite3/collation_test.rb +53 -0
  85. data/test/cases/adapters/sqlite3/copy_table_test.rb +98 -0
  86. data/test/cases/adapters/sqlite3/explain_test.rb +21 -0
  87. data/test/cases/adapters/sqlite3/quoting_test.rb +101 -0
  88. data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +441 -0
  89. data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -0
  90. data/test/cases/adapters/sqlite3/statement_pool_test.rb +20 -0
  91. data/test/cases/aggregations_test.rb +168 -158
  92. data/test/cases/ar_schema_test.rb +146 -161
  93. data/test/cases/associations/association_scope_test.rb +16 -21
  94. data/test/cases/associations/belongs_to_associations_test.rb +1141 -1029
  95. data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +41 -0
  96. data/test/cases/associations/callbacks_test.rb +190 -192
  97. data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
  98. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
  99. data/test/cases/associations/eager_load_nested_include_test.rb +126 -128
  100. data/test/cases/associations/eager_singularization_test.rb +148 -148
  101. data/test/cases/associations/eager_test.rb +1514 -1429
  102. data/test/cases/associations/extension_test.rb +87 -82
  103. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +1004 -972
  104. data/test/cases/associations/has_many_associations_test.rb +2501 -2182
  105. data/test/cases/associations/has_many_through_associations_test.rb +1271 -1204
  106. data/test/cases/associations/has_one_associations_test.rb +707 -610
  107. data/test/cases/associations/has_one_through_associations_test.rb +383 -380
  108. data/test/cases/associations/inner_join_association_test.rb +139 -139
  109. data/test/cases/associations/inverse_associations_test.rb +733 -706
  110. data/test/cases/associations/join_model_test.rb +777 -754
  111. data/test/cases/associations/left_outer_join_association_test.rb +88 -0
  112. data/test/cases/associations/nested_through_associations_test.rb +579 -579
  113. data/test/cases/associations/required_test.rb +102 -82
  114. data/test/cases/associations_test.rb +385 -380
  115. data/test/cases/attribute_decorators_test.rb +125 -125
  116. data/test/cases/attribute_methods/read_test.rb +60 -60
  117. data/test/cases/attribute_methods_test.rb +1009 -952
  118. data/test/cases/attribute_set_test.rb +270 -210
  119. data/test/cases/attribute_test.rb +246 -180
  120. data/test/cases/attributes_test.rb +253 -136
  121. data/test/cases/autosave_association_test.rb +1708 -1595
  122. data/test/cases/base_test.rb +1713 -1664
  123. data/test/cases/batches_test.rb +489 -212
  124. data/test/cases/binary_test.rb +44 -52
  125. data/test/cases/bind_parameter_test.rb +110 -100
  126. data/test/cases/cache_key_test.rb +25 -0
  127. data/test/cases/calculations_test.rb +798 -646
  128. data/test/cases/callbacks_test.rb +636 -543
  129. data/test/cases/clone_test.rb +40 -40
  130. data/test/cases/coders/json_test.rb +15 -0
  131. data/test/cases/coders/yaml_column_test.rb +63 -63
  132. data/test/cases/collection_cache_key_test.rb +115 -0
  133. data/test/cases/column_alias_test.rb +17 -17
  134. data/test/cases/column_definition_test.rb +92 -123
  135. data/test/cases/comment_test.rb +143 -0
  136. data/test/cases/connection_adapters/adapter_leasing_test.rb +56 -54
  137. data/test/cases/connection_adapters/connection_handler_test.rb +160 -53
  138. data/test/cases/connection_adapters/connection_specification_test.rb +12 -12
  139. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +255 -293
  140. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +69 -65
  141. data/test/cases/connection_adapters/quoting_test.rb +13 -13
  142. data/test/cases/connection_adapters/schema_cache_test.rb +61 -56
  143. data/test/cases/connection_adapters/type_lookup_test.rb +118 -110
  144. data/test/cases/connection_management_test.rb +112 -122
  145. data/test/cases/connection_pool_test.rb +521 -346
  146. data/test/cases/connection_specification/resolver_test.rb +131 -116
  147. data/test/cases/core_test.rb +112 -112
  148. data/test/cases/counter_cache_test.rb +214 -209
  149. data/test/cases/custom_locking_test.rb +17 -17
  150. data/test/cases/database_statements_test.rb +34 -19
  151. data/test/cases/{invalid_date_test.rb → date_test.rb} +44 -32
  152. data/test/cases/date_time_precision_test.rb +106 -0
  153. data/test/cases/date_time_test.rb +61 -61
  154. data/test/cases/defaults_test.rb +218 -223
  155. data/test/cases/dirty_test.rb +763 -785
  156. data/test/cases/disconnected_test.rb +30 -28
  157. data/test/cases/dup_test.rb +157 -157
  158. data/test/cases/enum_test.rb +444 -290
  159. data/test/cases/errors_test.rb +16 -0
  160. data/test/cases/explain_subscriber_test.rb +64 -64
  161. data/test/cases/explain_test.rb +87 -76
  162. data/test/cases/finder_respond_to_test.rb +60 -60
  163. data/test/cases/finder_test.rb +1294 -1169
  164. data/test/cases/fixture_set/file_test.rb +156 -138
  165. data/test/cases/fixtures_test.rb +988 -908
  166. data/test/cases/forbidden_attributes_protection_test.rb +165 -99
  167. data/test/cases/habtm_destroy_order_test.rb +61 -61
  168. data/test/cases/helper.rb +204 -210
  169. data/test/cases/hot_compatibility_test.rb +142 -54
  170. data/test/cases/i18n_test.rb +45 -45
  171. data/test/cases/inheritance_test.rb +606 -375
  172. data/test/cases/integration_test.rb +155 -139
  173. data/test/cases/invalid_connection_test.rb +24 -22
  174. data/test/cases/invertible_migration_test.rb +387 -295
  175. data/test/cases/json_serialization_test.rb +311 -302
  176. data/test/cases/locking_test.rb +493 -477
  177. data/test/cases/log_subscriber_test.rb +225 -136
  178. data/test/cases/migration/change_schema_test.rb +458 -512
  179. data/test/cases/migration/change_table_test.rb +256 -224
  180. data/test/cases/migration/column_attributes_test.rb +176 -192
  181. data/test/cases/migration/column_positioning_test.rb +56 -56
  182. data/test/cases/migration/columns_test.rb +310 -304
  183. data/test/cases/migration/command_recorder_test.rb +350 -305
  184. data/test/cases/migration/compatibility_test.rb +118 -0
  185. data/test/cases/migration/create_join_table_test.rb +157 -148
  186. data/test/cases/migration/foreign_key_test.rb +360 -328
  187. data/test/cases/migration/helper.rb +39 -39
  188. data/test/cases/migration/index_test.rb +218 -216
  189. data/test/cases/migration/logger_test.rb +36 -36
  190. data/test/cases/migration/pending_migrations_test.rb +52 -53
  191. data/test/cases/migration/references_foreign_key_test.rb +216 -169
  192. data/test/cases/migration/references_index_test.rb +101 -101
  193. data/test/cases/migration/references_statements_test.rb +136 -116
  194. data/test/cases/migration/rename_table_test.rb +93 -93
  195. data/test/cases/migration_test.rb +1157 -959
  196. data/test/cases/migrator_test.rb +470 -388
  197. data/test/cases/mixin_test.rb +68 -70
  198. data/test/cases/modules_test.rb +172 -173
  199. data/test/cases/multiparameter_attributes_test.rb +372 -350
  200. data/test/cases/multiple_db_test.rb +122 -115
  201. data/test/cases/nested_attributes_test.rb +1098 -1070
  202. data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
  203. data/test/cases/persistence_test.rb +1001 -909
  204. data/test/cases/pooled_connections_test.rb +81 -81
  205. data/test/cases/primary_keys_test.rb +376 -237
  206. data/test/cases/query_cache_test.rb +446 -326
  207. data/test/cases/quoting_test.rb +202 -156
  208. data/test/cases/readonly_test.rb +119 -118
  209. data/test/cases/reaper_test.rb +85 -85
  210. data/test/cases/reflection_test.rb +509 -463
  211. data/test/cases/relation/delegation_test.rb +63 -68
  212. data/test/cases/relation/merging_test.rb +157 -161
  213. data/test/cases/relation/mutation_test.rb +183 -165
  214. data/test/cases/relation/or_test.rb +92 -0
  215. data/test/cases/relation/predicate_builder_test.rb +16 -14
  216. data/test/cases/relation/record_fetch_warning_test.rb +40 -0
  217. data/test/cases/relation/where_chain_test.rb +105 -181
  218. data/test/cases/relation/where_clause_test.rb +182 -0
  219. data/test/cases/relation/where_test.rb +322 -300
  220. data/test/cases/relation_test.rb +328 -319
  221. data/test/cases/relations_test.rb +2026 -1815
  222. data/test/cases/reload_models_test.rb +22 -22
  223. data/test/cases/result_test.rb +90 -80
  224. data/test/cases/sanitize_test.rb +176 -83
  225. data/test/cases/schema_dumper_test.rb +457 -463
  226. data/test/cases/schema_loading_test.rb +52 -0
  227. data/test/cases/scoping/default_scoping_test.rb +528 -454
  228. data/test/cases/scoping/named_scoping_test.rb +561 -524
  229. data/test/cases/scoping/relation_scoping_test.rb +400 -357
  230. data/test/cases/secure_token_test.rb +32 -0
  231. data/test/cases/serialization_test.rb +104 -104
  232. data/test/cases/serialized_attribute_test.rb +364 -277
  233. data/test/cases/statement_cache_test.rb +136 -98
  234. data/test/cases/store_test.rb +195 -194
  235. data/test/cases/suppressor_test.rb +63 -0
  236. data/test/cases/tasks/database_tasks_test.rb +462 -398
  237. data/test/cases/tasks/mysql_rake_test.rb +345 -324
  238. data/test/cases/tasks/postgresql_rake_test.rb +304 -250
  239. data/test/cases/tasks/sqlite_rake_test.rb +220 -193
  240. data/test/cases/test_case.rb +131 -123
  241. data/test/cases/test_fixtures_test.rb +36 -0
  242. data/test/cases/time_precision_test.rb +102 -0
  243. data/test/cases/timestamp_test.rb +501 -467
  244. data/test/cases/touch_later_test.rb +121 -0
  245. data/test/cases/transaction_callbacks_test.rb +518 -452
  246. data/test/cases/transaction_isolation_test.rb +106 -106
  247. data/test/cases/transactions_test.rb +834 -817
  248. data/test/cases/type/adapter_specific_registry_test.rb +133 -0
  249. data/test/cases/type/date_time_test.rb +14 -0
  250. data/test/cases/type/integer_test.rb +27 -121
  251. data/test/cases/type/string_test.rb +22 -36
  252. data/test/cases/type/type_map_test.rb +177 -177
  253. data/test/cases/type_test.rb +39 -0
  254. data/test/cases/types_test.rb +24 -141
  255. data/test/cases/unconnected_test.rb +33 -33
  256. data/test/cases/validations/absence_validation_test.rb +73 -0
  257. data/test/cases/validations/association_validation_test.rb +97 -86
  258. data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
  259. data/test/cases/validations/i18n_validation_test.rb +86 -90
  260. data/test/cases/validations/length_validation_test.rb +79 -47
  261. data/test/cases/validations/presence_validation_test.rb +103 -68
  262. data/test/cases/validations/uniqueness_validation_test.rb +548 -457
  263. data/test/cases/validations_repair_helper.rb +19 -23
  264. data/test/cases/validations_test.rb +194 -165
  265. data/test/cases/view_test.rb +216 -119
  266. data/test/cases/yaml_serialization_test.rb +121 -126
  267. data/test/config.example.yml +97 -0
  268. data/test/config.rb +5 -5
  269. data/test/fixtures/accounts.yml +29 -29
  270. data/test/fixtures/admin/accounts.yml +2 -2
  271. data/test/fixtures/admin/users.yml +10 -10
  272. data/test/fixtures/author_addresses.original +11 -0
  273. data/test/fixtures/author_addresses.yml +17 -17
  274. data/test/fixtures/author_favorites.yml +3 -3
  275. data/test/fixtures/authors.original +17 -0
  276. data/test/fixtures/authors.yml +23 -23
  277. data/test/fixtures/bad_posts.yml +9 -0
  278. data/test/fixtures/binaries.yml +133 -133
  279. data/test/fixtures/books.yml +31 -11
  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 -0
  295. data/test/fixtures/content_positions.yml +3 -0
  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 -0
  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 -0
  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 -0
  333. data/test/fixtures/naked/yml/trees.yml +3 -0
  334. data/test/fixtures/nodes.yml +29 -0
  335. data/test/fixtures/organizations.yml +5 -5
  336. data/test/fixtures/other_comments.yml +6 -0
  337. data/test/fixtures/other_dogs.yml +2 -0
  338. data/test/fixtures/other_posts.yml +7 -0
  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 +15 -12
  347. data/test/fixtures/posts.yml +80 -80
  348. data/test/fixtures/price_estimates.yml +16 -7
  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 -0
  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/randomly_named_c1.rb +6 -2
  414. data/test/models/admin/user.rb +40 -40
  415. data/test/models/aircraft.rb +5 -4
  416. data/test/models/arunit2_model.rb +3 -3
  417. data/test/models/author.rb +209 -212
  418. data/test/models/auto_id.rb +4 -4
  419. data/test/models/autoloadable/extra_firm.rb +2 -2
  420. data/test/models/binary.rb +2 -2
  421. data/test/models/bird.rb +12 -12
  422. data/test/models/book.rb +23 -18
  423. data/test/models/boolean.rb +2 -2
  424. data/test/models/bulb.rb +52 -51
  425. data/test/models/cake_designer.rb +3 -3
  426. data/test/models/car.rb +29 -26
  427. data/test/models/carrier.rb +2 -2
  428. data/test/models/cat.rb +10 -0
  429. data/test/models/categorization.rb +19 -19
  430. data/test/models/category.rb +35 -35
  431. data/test/models/chef.rb +8 -7
  432. data/test/models/citation.rb +3 -3
  433. data/test/models/club.rb +25 -23
  434. data/test/models/college.rb +10 -10
  435. data/test/models/column.rb +3 -3
  436. data/test/models/column_name.rb +3 -3
  437. data/test/models/comment.rb +76 -64
  438. data/test/models/company.rb +230 -228
  439. data/test/models/company_in_module.rb +98 -98
  440. data/test/models/computer.rb +3 -3
  441. data/test/models/contact.rb +41 -41
  442. data/test/models/content.rb +40 -0
  443. data/test/models/contract.rb +20 -20
  444. data/test/models/country.rb +7 -7
  445. data/test/models/course.rb +6 -6
  446. data/test/models/customer.rb +83 -77
  447. data/test/models/customer_carrier.rb +14 -14
  448. data/test/models/dashboard.rb +3 -3
  449. data/test/models/default.rb +2 -2
  450. data/test/models/department.rb +4 -4
  451. data/test/models/developer.rb +274 -255
  452. data/test/models/dog.rb +5 -5
  453. data/test/models/dog_lover.rb +5 -5
  454. data/test/models/doubloon.rb +12 -12
  455. data/test/models/drink_designer.rb +3 -3
  456. data/test/models/edge.rb +5 -5
  457. data/test/models/electron.rb +5 -5
  458. data/test/models/engine.rb +4 -4
  459. data/test/models/entrant.rb +3 -3
  460. data/test/models/essay.rb +5 -5
  461. data/test/models/event.rb +3 -3
  462. data/test/models/eye.rb +37 -37
  463. data/test/models/face.rb +9 -9
  464. data/test/models/friendship.rb +6 -6
  465. data/test/models/guid.rb +2 -2
  466. data/test/models/guitar.rb +4 -0
  467. data/test/models/hotel.rb +11 -9
  468. data/test/models/image.rb +3 -3
  469. data/test/models/interest.rb +5 -5
  470. data/test/models/invoice.rb +4 -4
  471. data/test/models/item.rb +7 -7
  472. data/test/models/job.rb +7 -7
  473. data/test/models/joke.rb +7 -7
  474. data/test/models/keyboard.rb +3 -3
  475. data/test/models/legacy_thing.rb +3 -3
  476. data/test/models/lesson.rb +11 -11
  477. data/test/models/line_item.rb +3 -3
  478. data/test/models/liquid.rb +4 -4
  479. data/test/models/man.rb +11 -11
  480. data/test/models/matey.rb +4 -4
  481. data/test/models/member.rb +42 -41
  482. data/test/models/member_detail.rb +8 -7
  483. data/test/models/member_type.rb +3 -3
  484. data/test/models/membership.rb +35 -35
  485. data/test/models/mentor.rb +3 -0
  486. data/test/models/minimalistic.rb +2 -2
  487. data/test/models/minivan.rb +9 -9
  488. data/test/models/mixed_case_monkey.rb +3 -3
  489. data/test/models/mocktail_designer.rb +2 -0
  490. data/test/models/molecule.rb +6 -6
  491. data/test/models/movie.rb +5 -5
  492. data/test/models/node.rb +5 -0
  493. data/test/models/non_primary_key.rb +2 -0
  494. data/test/models/notification.rb +3 -0
  495. data/test/models/order.rb +4 -4
  496. data/test/models/organization.rb +14 -14
  497. data/test/models/other_dog.rb +5 -0
  498. data/test/models/owner.rb +37 -34
  499. data/test/models/parrot.rb +28 -29
  500. data/test/models/person.rb +142 -143
  501. data/test/models/personal_legacy_thing.rb +4 -4
  502. data/test/models/pet.rb +18 -15
  503. data/test/models/pet_treasure.rb +6 -0
  504. data/test/models/pirate.rb +92 -92
  505. data/test/models/possession.rb +3 -3
  506. data/test/models/post.rb +273 -264
  507. data/test/models/price_estimate.rb +4 -4
  508. data/test/models/professor.rb +5 -5
  509. data/test/models/project.rb +40 -31
  510. data/test/models/publisher.rb +2 -2
  511. data/test/models/publisher/article.rb +4 -4
  512. data/test/models/publisher/magazine.rb +3 -3
  513. data/test/models/randomly_named_c1.rb +1 -1
  514. data/test/models/rating.rb +4 -4
  515. data/test/models/reader.rb +23 -23
  516. data/test/models/recipe.rb +3 -0
  517. data/test/models/record.rb +2 -2
  518. data/test/models/reference.rb +22 -22
  519. data/test/models/reply.rb +61 -61
  520. data/test/models/ship.rb +39 -33
  521. data/test/models/ship_part.rb +8 -8
  522. data/test/models/shop.rb +17 -17
  523. data/test/models/shop_account.rb +6 -6
  524. data/test/models/speedometer.rb +6 -6
  525. data/test/models/sponsor.rb +7 -7
  526. data/test/models/string_key_object.rb +3 -3
  527. data/test/models/student.rb +4 -4
  528. data/test/models/subject.rb +16 -16
  529. data/test/models/subscriber.rb +8 -8
  530. data/test/models/subscription.rb +4 -4
  531. data/test/models/tag.rb +13 -7
  532. data/test/models/tagging.rb +13 -13
  533. data/test/models/task.rb +5 -5
  534. data/test/models/topic.rb +118 -124
  535. data/test/models/toy.rb +6 -6
  536. data/test/models/traffic_light.rb +4 -4
  537. data/test/models/treasure.rb +14 -14
  538. data/test/models/treaty.rb +7 -7
  539. data/test/models/tree.rb +3 -0
  540. data/test/models/tuning_peg.rb +4 -0
  541. data/test/models/tyre.rb +11 -11
  542. data/test/models/user.rb +14 -0
  543. data/test/models/uuid_child.rb +3 -3
  544. data/test/models/uuid_item.rb +6 -0
  545. data/test/models/uuid_parent.rb +3 -3
  546. data/test/models/vegetables.rb +24 -24
  547. data/test/models/vehicle.rb +6 -6
  548. data/test/models/vertex.rb +9 -9
  549. data/test/models/warehouse_thing.rb +5 -5
  550. data/test/models/wheel.rb +3 -3
  551. data/test/models/without_table.rb +3 -3
  552. data/test/models/zine.rb +3 -3
  553. data/test/schema/mysql2_specific_schema.rb +68 -58
  554. data/test/schema/oracle_specific_schema.rb +40 -43
  555. data/test/schema/postgresql_specific_schema.rb +114 -202
  556. data/test/schema/schema.rb +1057 -952
  557. data/test/schema/schema.rb.original +1057 -0
  558. data/test/schema/sqlite_specific_schema.rb +18 -22
  559. data/test/support/config.rb +43 -43
  560. data/test/support/connection.rb +23 -22
  561. data/test/support/connection_helper.rb +14 -14
  562. data/test/support/ddl_helper.rb +8 -8
  563. data/test/support/schema_dumping_helper.rb +20 -20
  564. data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -0
  565. data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -0
  566. metadata +129 -28
  567. data/lib/mswin32/rb19x/ibm_db.so +0 -0
  568. data/lib/mswin32/rb21x/i386/ibm_db.so +0 -0
  569. data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
  570. data/lib/mswin32/rb23x/i386/ibm_db.so +0 -0
  571. data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +0 -26
  572. data/test/cases/attribute_methods/serialization_test.rb +0 -29
  573. data/test/cases/migration/change_schema_test - Copy.rb +0 -448
  574. data/test/cases/migration/foreign_key_test - Changed.rb +0 -325
  575. data/test/cases/migration/table_and_index_test.rb +0 -24
  576. data/test/cases/relation/where_test2.rb +0 -36
  577. data/test/cases/type/decimal_test.rb +0 -56
  578. data/test/cases/type/unsigned_integer_test.rb +0 -18
  579. data/test/cases/xml_serialization_test.rb +0 -457
  580. data/test/connections/native_ibm_db/connection.rb +0 -44
  581. data/test/fixtures/naked/csv/accounts.csv +0 -1
  582. data/test/schema/i5/ibm_db_specific_schema.rb +0 -137
  583. data/test/schema/ids/ibm_db_specific_schema.rb +0 -140
  584. data/test/schema/luw/ibm_db_specific_schema.rb +0 -137
  585. data/test/schema/mysql_specific_schema.rb +0 -70
  586. data/test/schema/zOS/ibm_db_specific_schema.rb +0 -208
@@ -1,123 +1,91 @@
1
- needToDownloadedCLIPackage = false
2
- IBM_DB_HOME = ENV['IBM_DB_HOME']
3
- cliPackagePath = File.dirname(__FILE__) + '/../clidriver'
4
-
5
- if ((IBM_DB_HOME == nil || IBM_DB_HOME == '') && (!Dir.exists?(cliPackagePath)))
6
- needToDownloadedCLIPackage = true
7
- end
8
-
9
- def downloadCLIPackage(destination, link = nil)
10
- if(link.nil?)
11
- downloadLink = DOWNLOADLINK
12
- else
13
- downloadLink = link
14
- end
15
-
16
- uri = URI.parse(downloadLink)
17
-
18
- filename = "#{destination}/clidriver.zip"
19
-
20
- headers = { 'Accept-Encoding' => 'identity', }
21
-
22
- request = Net::HTTP::Get.new(uri.request_uri, headers)
23
- http = Net::HTTP.new(uri.host, uri.port)
24
- response = http.request(request)
25
-
26
- f = open(filename, 'wb')
27
- f.write(response.body)
28
- f.close()
29
-
30
- filename
31
- end
32
-
33
- def unzipCLIPackage(archive, destination)
34
- if (RUBY_PLATFORM =~ /mswin/ || RUBY_PLATFORM =~ /mingw/)
35
- Archive::Zip.extract(archive, destination)
36
- end
37
- end
38
-
39
-
40
- # Download CLI package
41
- if(needToDownloadedCLIPackage == true)
42
- require 'net/http'
43
- require 'open-uri'
44
- require 'rubygems/package'
45
- require 'fileutils'
46
- require 'archive/zip'
47
-
48
- TAR_LONGLINK = '././@LongLink'
49
-
50
- machine_bits = ['ibm'].pack('p').size * 8
51
-
52
- is64Bit = true
53
-
54
- if machine_bits == 64
55
- is64Bit = true
56
- else
57
- is64Bit = false
58
- end
59
-
60
- if (RUBY_PLATFORM =~ /mswin/ || RUBY_PLATFORM =~ /mingw/)
61
- if(is64Bit)
62
- DOWNLOADLINK = "http://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/ntx64_odbc_cli.zip"
63
- else
64
- DOWNLOADLINK = "http://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/nt32_odbc_cli.zip"
65
- end
66
- end
67
-
68
- destination = "#{File.expand_path(File.dirname(File.dirname(__FILE__)))}"
69
- archive = downloadCLIPackage(destination)
70
- unzipCLIPackage(archive,destination)
71
- end
72
-
73
-
74
- if(IBM_DB_HOME !=nil && IBM_DB_HOME != '')
75
- bin_path = IBM_DB_HOME+'/bin'
76
- ENV['PATH'] = ENV['PATH'] + ';.;' + bin_path
77
- end
78
-
79
- if (RUBY_PLATFORM =~ /mswin/ || RUBY_PLATFORM =~ /mingw/)
80
- $LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
81
- ENV['PATH'] = ENV['PATH'] + ';.;' + File.expand_path(File.dirname(__FILE__) + '/../clidriver/bin')
82
- end
83
-
84
-
85
- if (RUBY_VERSION =~ /1.9./ )
86
- require 'rb19x/ibm_db.so'
87
- elsif (RUBY_VERSION =~ /2.0./)
88
- #Check if we are on 64-bit or 32-bit ruby and load binary accordingly
89
- machine_bits = ['ibm'].pack('p').size * 8
90
- if machine_bits == 64
91
- #require 'rb2x/x64/ibm_db.so'
92
- raise NotImplementedError, "ibm_db with Ruby 2.0 64-bit on Windows platform is not supported. Refer to README for more details"
93
- else
94
- require 'rb2x/i386/ibm_db.so'
95
- end
96
- elsif (RUBY_VERSION =~ /2.1./)
97
- #Check if we are on 64-bit or 32-bit ruby and load binary accordingly
98
- machine_bits = ['ibm'].pack('p').size * 8
99
- if machine_bits == 64
100
- #require 'rb21x/x64/ibm_db.so'
101
- raise NotImplementedError, "ibm_db with Ruby 2.1 64-bit on Windows platform is not supported. Refer to README for more details"
102
- else
103
- require 'rb21x/i386/ibm_db.so'
104
- end
105
- elsif (RUBY_VERSION =~ /2.2./ )
106
- #Check if we are on 64-bit or 32-bit ruby and load binary accordingly
107
- machine_bits = ['ibm'].pack('p').size * 8
108
- if machine_bits == 64
109
- raise NotImplementedError, "ibm_db with Ruby 2.2 64-bit on Windows platform is not supported. Refer to README for more details"
110
- else
111
- require 'rb22x/i386/ibm_db.so'
112
- end
113
- elsif (RUBY_VERSION =~ /2.3./ )
114
- #Check if we are on 64-bit or 32-bit ruby and load binary accordingly
115
- machine_bits = ['ibm'].pack('p').size * 8
116
- if machine_bits == 64
117
- raise NotImplementedError, "ibm_db with Ruby 2.2 64-bit on Windows platform is not supported. Refer to README for more details"
118
- else
119
- require 'rb23x/i386/ibm_db.so'
120
- end
121
- else
122
- require 'rb18x/ibm_db.so'
123
- end
1
+ needToDownloadedCLIPackage = false
2
+ IBM_DB_HOME = ENV['IBM_DB_HOME']
3
+ cliPackagePath = File.dirname(__FILE__) + '/../clidriver'
4
+
5
+ if ((IBM_DB_HOME == nil || IBM_DB_HOME == '') && (!Dir.exists?(cliPackagePath)))
6
+ needToDownloadedCLIPackage = true
7
+ end
8
+
9
+ def downloadCLIPackage(destination, link = nil)
10
+ if(link.nil?)
11
+ downloadLink = DOWNLOADLINK
12
+ else
13
+ downloadLink = link
14
+ end
15
+
16
+ uri = URI.parse(downloadLink)
17
+
18
+ filename = "#{destination}/clidriver.zip"
19
+
20
+ headers = { 'Accept-Encoding' => 'identity', }
21
+
22
+ request = Net::HTTP::Get.new(uri.request_uri, headers)
23
+ http = Net::HTTP.new(uri.host, uri.port)
24
+ response = http.request(request)
25
+
26
+ f = open(filename, 'wb')
27
+ f.write(response.body)
28
+ f.close()
29
+
30
+ filename
31
+ end
32
+
33
+ def unzipCLIPackage(archive, destination)
34
+ if (RUBY_PLATFORM =~ /mswin/ || RUBY_PLATFORM =~ /mingw/)
35
+ Archive::Zip.extract(archive, destination)
36
+ end
37
+ end
38
+
39
+
40
+ # Download CLI package
41
+ if(needToDownloadedCLIPackage == true)
42
+ require 'net/http'
43
+ require 'open-uri'
44
+ require 'rubygems/package'
45
+ require 'fileutils'
46
+ require 'archive/zip'
47
+
48
+ TAR_LONGLINK = '././@LongLink'
49
+
50
+ machine_bits = ['ibm'].pack('p').size * 8
51
+
52
+ is64Bit = true
53
+
54
+ if machine_bits == 64
55
+ is64Bit = true
56
+ else
57
+ is64Bit = false
58
+ end
59
+
60
+ if (RUBY_PLATFORM =~ /mswin/ || RUBY_PLATFORM =~ /mingw/)
61
+ if(is64Bit)
62
+ DOWNLOADLINK = "http://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/ntx64_odbc_cli.zip"
63
+ else
64
+ DOWNLOADLINK = "http://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/nt32_odbc_cli.zip"
65
+ end
66
+ end
67
+
68
+ destination = "#{File.expand_path(File.dirname(File.dirname(__FILE__)))}"
69
+ archive = downloadCLIPackage(destination)
70
+ unzipCLIPackage(archive,destination)
71
+ end
72
+
73
+
74
+ if(IBM_DB_HOME !=nil && IBM_DB_HOME != '')
75
+ bin_path = IBM_DB_HOME+'/bin'
76
+ ENV['PATH'] = ENV['PATH'] + ';.;' + bin_path
77
+ end
78
+
79
+ if (RUBY_PLATFORM =~ /mswin/ || RUBY_PLATFORM =~ /mingw/)
80
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
81
+ ENV['PATH'] = ENV['PATH'] + ';.;' + File.expand_path(File.dirname(__FILE__) + '/../clidriver/bin')
82
+ end
83
+
84
+
85
+ #Check if we are on 64-bit or 32-bit ruby and load binary accordingly
86
+ machine_bits = ['ibm'].pack('p').size * 8
87
+ if machine_bits == 64
88
+ raise NotImplementedError, "ibm_db with Ruby 64-bit on Windows platform is not supported. Refer to README for more details"
89
+ else
90
+ require 'rb2x/i386/ibm_db.so'
91
+ end
@@ -1,46 +1,49 @@
1
- module ActiveRecord
2
- module ConnectionHandling
3
- def fake_connection(config)
4
- ConnectionAdapters::FakeAdapter.new nil, logger
5
- end
6
- end
7
-
8
- module ConnectionAdapters
9
- class FakeAdapter < AbstractAdapter
10
- attr_accessor :tables, :primary_keys
11
-
12
- @columns = Hash.new { |h,k| h[k] = [] }
13
- class << self
14
- attr_reader :columns
15
- end
16
-
17
- def initialize(connection, logger)
18
- super
19
- @tables = []
20
- @primary_keys = {}
21
- @columns = self.class.columns
22
- end
23
-
24
- def primary_key(table)
25
- @primary_keys[table]
26
- end
27
-
28
- def merge_column(table_name, name, sql_type = nil, options = {})
29
- @columns[table_name] << ActiveRecord::ConnectionAdapters::Column.new(
30
- name.to_s,
31
- options[:default],
32
- lookup_cast_type(sql_type.to_s),
33
- sql_type.to_s,
34
- options[:null])
35
- end
36
-
37
- def columns(table_name)
38
- @columns[table_name]
39
- end
40
-
41
- def active?
42
- true
43
- end
44
- end
45
- end
46
- end
1
+ module ActiveRecord
2
+ module ConnectionHandling
3
+ def fake_connection(config)
4
+ ConnectionAdapters::FakeAdapter.new nil, logger
5
+ end
6
+ end
7
+
8
+ module ConnectionAdapters
9
+ class FakeAdapter < AbstractAdapter
10
+ attr_accessor :data_sources, :primary_keys
11
+
12
+ @columns = Hash.new { |h,k| h[k] = [] }
13
+ class << self
14
+ attr_reader :columns
15
+ end
16
+
17
+ def initialize(connection, logger)
18
+ super
19
+ @data_sources = []
20
+ @primary_keys = {}
21
+ @columns = self.class.columns
22
+ end
23
+
24
+ def primary_key(table)
25
+ @primary_keys[table] || "id"
26
+ end
27
+
28
+ def merge_column(table_name, name, sql_type = nil, options = {})
29
+ @columns[table_name] << ActiveRecord::ConnectionAdapters::Column.new(
30
+ name.to_s,
31
+ options[:default],
32
+ fetch_type_metadata(sql_type),
33
+ options[:null])
34
+ end
35
+
36
+ def columns(table_name)
37
+ @columns[table_name]
38
+ end
39
+
40
+ def data_source_exists?(*)
41
+ true
42
+ end
43
+
44
+ def active?
45
+ true
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1 +1 @@
1
- # Logfile created on Wed Oct 31 16:05:13 +0000 2007 by logger.rb/1.5.2.9
1
+ # Logfile created on Wed Oct 31 16:05:13 +0000 2007 by logger.rb/1.5.2.9
@@ -1 +1 @@
1
- %00
1
+ %00
@@ -1,276 +1,351 @@
1
- # encoding: utf-8
2
-
3
- require "cases/helper"
4
- require "models/book"
5
- require "models/post"
6
- require "models/author"
7
-
8
- module ActiveRecord
9
- class AdapterTest < ActiveRecord::TestCase
10
- def setup
11
- @connection = ActiveRecord::Base.connection
12
- end
13
-
14
- ##
15
- # PostgreSQL does not support null bytes in strings
16
- unless current_adapter?(:PostgreSQLAdapter)
17
- def test_update_prepared_statement
18
- b = Book.create(name: "my \x00 book")
19
- b.reload
20
- assert_equal "my \x00 book", b.name
21
- b.update_attributes(name: "my other \x00 book")
22
- b.reload
23
- assert_equal "my other \x00 book", b.name
24
- end
25
- end
26
-
27
- def test_tables
28
- tables = @connection.tables
29
- assert tables.include?("accounts")
30
- assert tables.include?("authors")
31
- assert tables.include?("tasks")
32
- assert tables.include?("topics")
33
- end
34
-
35
- def test_table_exists?
36
- assert @connection.table_exists?("accounts")
37
- assert !@connection.table_exists?("nonexistingtable")
38
- assert !@connection.table_exists?(nil)
39
- end
40
-
41
- def test_data_sources
42
- data_sources = @connection.data_sources
43
- assert data_sources.include?("accounts")
44
- assert data_sources.include?("authors")
45
- assert data_sources.include?("tasks")
46
- assert data_sources.include?("topics")
47
- end
48
-
49
- def test_data_source_exists?
50
- assert @connection.data_source_exists?("accounts")
51
- assert @connection.data_source_exists?(:accounts)
52
- assert_not @connection.data_source_exists?("nonexistingtable")
53
- assert_not @connection.data_source_exists?(nil)
54
- end
55
-
56
- def test_indexes
57
- idx_name = "accounts_idx"
58
-
59
- if @connection.respond_to?(:indexes)
60
- indexes = @connection.indexes("accounts")
61
- assert indexes.empty?
62
-
63
- @connection.add_index :accounts, :firm_id, :name => idx_name
64
- indexes = @connection.indexes("accounts")
65
- assert_equal "accounts", indexes.first.table
66
- assert_equal idx_name, indexes.first.name
67
- assert !indexes.first.unique
68
- assert_equal ["firm_id"], indexes.first.columns
69
- else
70
- warn "#{@connection.class} does not respond to #indexes"
71
- end
72
-
73
- ensure
74
- @connection.remove_index(:accounts, :name => idx_name) rescue nil
75
- end
76
-
77
- def test_current_database
78
- if @connection.respond_to?(:current_database)
79
- assert_equal ARTest.connection_config['arunit']['database'], @connection.current_database
80
- end
81
- end
82
-
83
- if current_adapter?(:MysqlAdapter)
84
- def test_charset
85
- assert_not_nil @connection.charset
86
- assert_not_equal 'character_set_database', @connection.charset
87
- assert_equal @connection.show_variable('character_set_database'), @connection.charset
88
- end
89
-
90
- def test_collation
91
- assert_not_nil @connection.collation
92
- assert_not_equal 'collation_database', @connection.collation
93
- assert_equal @connection.show_variable('collation_database'), @connection.collation
94
- end
95
-
96
- def test_show_nonexistent_variable_returns_nil
97
- assert_nil @connection.show_variable('foo_bar_baz')
98
- end
99
-
100
- def test_not_specifying_database_name_for_cross_database_selects
101
- begin
102
- assert_nothing_raised do
103
- ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations['arunit'].except(:database))
104
-
105
- config = ARTest.connection_config
106
- ActiveRecord::Base.connection.execute(
107
- "SELECT #{config['arunit']['database']}.pirates.*, #{config['arunit2']['database']}.courses.* " \
108
- "FROM #{config['arunit']['database']}.pirates, #{config['arunit2']['database']}.courses"
109
- )
110
- end
111
- ensure
112
- ActiveRecord::Base.establish_connection :arunit
113
- end
114
- end
115
- end
116
-
117
- def test_table_alias
118
- def @connection.test_table_alias_length() 10; end
119
- class << @connection
120
- alias_method :old_table_alias_length, :table_alias_length
121
- alias_method :table_alias_length, :test_table_alias_length
122
- end
123
-
124
- assert_equal 'posts', @connection.table_alias_for('posts')
125
- assert_equal 'posts_comm', @connection.table_alias_for('posts_comments')
126
- assert_equal 'dbo_posts', @connection.table_alias_for('dbo.posts')
127
-
128
- class << @connection
129
- remove_method :table_alias_length
130
- alias_method :table_alias_length, :old_table_alias_length
131
- end
132
- end
133
-
134
- # test resetting sequences in odd tables in PostgreSQL
135
- if ActiveRecord::Base.connection.respond_to?(:reset_pk_sequence!)
136
- require 'models/movie'
137
- require 'models/subscriber'
138
-
139
- def test_reset_empty_table_with_custom_pk
140
- Movie.delete_all
141
- Movie.connection.reset_pk_sequence! 'movies'
142
- assert_equal 1, Movie.create(:name => 'fight club').id
143
- end
144
-
145
- def test_reset_table_with_non_integer_pk
146
- Subscriber.delete_all
147
- Subscriber.connection.reset_pk_sequence! 'subscribers'
148
- sub = Subscriber.new(:name => 'robert drake')
149
- sub.id = 'bob drake'
150
- assert_nothing_raised { sub.save! }
151
- end
152
- end
153
-
154
- def test_uniqueness_violations_are_translated_to_specific_exception
155
- @connection.execute "INSERT INTO subscribers(nick) VALUES('me')"
156
- assert_raises(ActiveRecord::RecordNotUnique) do
157
- @connection.execute "INSERT INTO subscribers(nick) VALUES('me')"
158
- end
159
- end
160
-
161
- unless current_adapter?(:SQLite3Adapter)
162
- def test_foreign_key_violations_are_translated_to_specific_exception
163
- assert_raises(ActiveRecord::InvalidForeignKey) do
164
- # Oracle adapter uses prefetched primary key values from sequence and passes them to connection adapter insert method
165
- if @connection.prefetch_primary_key?
166
- id_value = @connection.next_sequence_value(@connection.default_sequence_name("fk_test_has_fk", "id"))
167
- @connection.execute "INSERT INTO fk_test_has_fk (id, fk_id) VALUES (#{id_value},0)"
168
- else
169
- @connection.execute "INSERT INTO fk_test_has_fk (fk_id) VALUES (0)"
170
- end
171
- end
172
- end
173
-
174
- def test_foreign_key_violations_are_translated_to_specific_exception_with_validate_false
175
- klass_has_fk = Class.new(ActiveRecord::Base) do
176
- self.table_name = 'fk_test_has_fk'
177
- end
178
-
179
- assert_raises(ActiveRecord::InvalidForeignKey) do
180
- has_fk = klass_has_fk.new
181
- has_fk.fk_id = 1231231231
182
- has_fk.save(validate: false)
183
- end
184
- end
185
- end
186
-
187
- def test_disable_referential_integrity
188
- assert_nothing_raised do
189
- @connection.disable_referential_integrity do
190
- # Oracle adapter uses prefetched primary key values from sequence and passes them to connection adapter insert method
191
- if @connection.prefetch_primary_key?
192
- id_value = @connection.next_sequence_value(@connection.default_sequence_name("fk_test_has_fk", "id"))
193
- @connection.execute "INSERT INTO fk_test_has_fk (id, fk_id) VALUES (#{id_value},0)"
194
- else
195
- @connection.execute "INSERT INTO fk_test_has_fk (fk_id) VALUES (0)"
196
- end
197
- # should delete created record as otherwise disable_referential_integrity will try to enable constraints after executed block
198
- # and will fail (at least on Oracle)
199
- @connection.execute "DELETE FROM fk_test_has_fk"
200
- end
201
- end
202
- end
203
-
204
- def test_select_all_always_return_activerecord_result
205
- result = @connection.select_all "SELECT * FROM posts"
206
- assert result.is_a?(ActiveRecord::Result)
207
- end
208
-
209
- def test_select_methods_passing_a_association_relation
210
- author = Author.create!(name: 'john')
211
- Post.create!(author: author, title: 'foo', body: 'bar')
212
- query = author.posts.where(title: 'foo').select(:title)
213
- assert_equal({"title" => "foo"}, @connection.select_one(query.arel, nil, query.bind_values))
214
- assert_equal({"title" => "foo"}, @connection.select_one(query))
215
- assert @connection.select_all(query).is_a?(ActiveRecord::Result)
216
- assert_equal "foo", @connection.select_value(query)
217
- assert_equal ["foo"], @connection.select_values(query)
218
- end
219
-
220
- def test_select_methods_passing_a_relation
221
- Post.create!(title: 'foo', body: 'bar')
222
- query = Post.where(title: 'foo').select(:title)
223
- assert_equal({"title" => "foo"}, @connection.select_one(query.arel, nil, query.bind_values))
224
- assert_equal({"title" => "foo"}, @connection.select_one(query))
225
- assert @connection.select_all(query).is_a?(ActiveRecord::Result)
226
- assert_equal "foo", @connection.select_value(query)
227
- assert_equal ["foo"], @connection.select_values(query)
228
- end
229
-
230
- test "type_to_sql returns a String for unmapped types" do
231
- assert_equal "special_db_type", @connection.type_to_sql(:special_db_type)
232
- end
233
-
234
- unless current_adapter?(:PostgreSQLAdapter)
235
- def test_log_invalid_encoding
236
- assert_raise ActiveRecord::StatementInvalid do
237
- @connection.send :log, "SELECT '?' FROM DUAL" do
238
- raise '?'.force_encoding(Encoding::ASCII_8BIT)
239
- end
240
- end
241
- end
242
- end
243
- end
244
-
245
- class AdapterTestWithoutTransaction < ActiveRecord::TestCase
246
- self.use_transactional_fixtures = false
247
-
248
- class Klass < ActiveRecord::Base
249
- end
250
-
251
- def setup
252
- Klass.establish_connection :arunit
253
- @connection = Klass.connection
254
- end
255
-
256
- teardown do
257
- Klass.remove_connection
258
- end
259
-
260
- unless in_memory_db?
261
- test "transaction state is reset after a reconnect" do
262
- @connection.begin_transaction
263
- assert @connection.transaction_open?
264
- @connection.reconnect!
265
- assert !@connection.transaction_open?
266
- end
267
-
268
- test "transaction state is reset after a disconnect" do
269
- @connection.begin_transaction
270
- assert @connection.transaction_open?
271
- @connection.disconnect!
272
- assert !@connection.transaction_open?
273
- end
274
- end
275
- end
276
- end
1
+ require "cases/helper"
2
+ require "models/book"
3
+ require "models/post"
4
+ require "models/author"
5
+ require "models/event"
6
+
7
+ module ActiveRecord
8
+ class AdapterTest < ActiveRecord::TestCase
9
+ def setup
10
+ @connection = ActiveRecord::Base.connection
11
+ end
12
+
13
+ ##
14
+ # PostgreSQL does not support null bytes in strings
15
+ unless current_adapter?(:PostgreSQLAdapter, :IBM_DBAdapter) ||
16
+ (current_adapter?(:SQLite3Adapter) && !ActiveRecord::Base.connection.prepared_statements)
17
+ def test_update_prepared_statement
18
+ b = Book.create(name: "my \x00 book")
19
+ b.reload
20
+ assert_equal "my \x00 book", b.name
21
+ b.update_attributes(name: "my other \x00 book")
22
+ b.reload
23
+ assert_equal "my other \x00 book", b.name
24
+ end
25
+ end
26
+
27
+ unless current_adapter?(:IBM_DBAdapter)
28
+ def test_create_record_with_pk_as_zero
29
+ Book.create(id: 0)
30
+ assert_equal 0, Book.find(0).id
31
+ assert_nothing_raised { Book.destroy(0) }
32
+ end
33
+ end
34
+
35
+ def test_tables
36
+ tables = nil
37
+ ActiveSupport::Deprecation.silence { tables = @connection.tables }
38
+ assert tables.include?("accounts")
39
+ assert tables.include?("authors")
40
+ assert tables.include?("tasks")
41
+ assert tables.include?("topics")
42
+ end
43
+
44
+
45
+ def test_table_exists?
46
+ ActiveSupport::Deprecation.silence do
47
+ assert @connection.table_exists?("accounts")
48
+ assert !@connection.table_exists?("nonexistingtable")
49
+ assert !@connection.table_exists?(nil)
50
+ end
51
+ end
52
+
53
+ def test_table_exists_checking_both_tables_and_views_is_deprecated
54
+ assert_deprecated { @connection.table_exists?("accounts") }
55
+ end
56
+
57
+ def test_data_sources
58
+ data_sources = @connection.data_sources
59
+ assert data_sources.include?("accounts")
60
+ assert data_sources.include?("authors")
61
+ assert data_sources.include?("tasks")
62
+ assert data_sources.include?("topics")
63
+ end
64
+
65
+ def test_data_source_exists?
66
+ assert @connection.data_source_exists?("accounts")
67
+ assert @connection.data_source_exists?(:accounts)
68
+ assert_not @connection.data_source_exists?("nonexistingtable")
69
+ assert_not @connection.data_source_exists?(nil)
70
+ end
71
+
72
+ def test_indexes
73
+ idx_name = "accounts_idx"
74
+
75
+ if @connection.respond_to?(:indexes)
76
+ indexes = @connection.indexes("accounts")
77
+ assert indexes.empty?
78
+
79
+ @connection.add_index :accounts, :firm_id, :name => idx_name
80
+ indexes = @connection.indexes("accounts")
81
+ assert_equal "accounts", indexes.first.table
82
+ assert_equal idx_name, indexes.first.name
83
+ assert !indexes.first.unique
84
+ assert_equal ["firm_id"], indexes.first.columns
85
+ else
86
+ warn "#{@connection.class} does not respond to #indexes"
87
+ end
88
+
89
+ ensure
90
+ @connection.remove_index(:accounts, :name => idx_name) rescue nil
91
+ end
92
+
93
+ unless current_adapter?(:IBM_DBAdapter)
94
+ def test_remove_index_when_name_and_wrong_column_name_specified
95
+ index_name = "accounts_idx"
96
+
97
+ @connection.add_index :accounts, :firm_id, :name => index_name
98
+ assert_raises ArgumentError do
99
+ @connection.remove_index :accounts, :name => index_name, :column => :wrong_column_name
100
+ end
101
+ ensure
102
+ @connection.remove_index(:accounts, :name => index_name)
103
+ end
104
+ end
105
+
106
+ def test_current_database
107
+ if @connection.respond_to?(:current_database)
108
+ assert_equal ARTest.connection_config['arunit']['database'], @connection.current_database
109
+ end
110
+ end
111
+
112
+ if current_adapter?(:Mysql2Adapter)
113
+ def test_charset
114
+ assert_not_nil @connection.charset
115
+ assert_not_equal 'character_set_database', @connection.charset
116
+ assert_equal @connection.show_variable('character_set_database'), @connection.charset
117
+ end
118
+
119
+ def test_collation
120
+ assert_not_nil @connection.collation
121
+ assert_not_equal 'collation_database', @connection.collation
122
+ assert_equal @connection.show_variable('collation_database'), @connection.collation
123
+ end
124
+
125
+ def test_show_nonexistent_variable_returns_nil
126
+ assert_nil @connection.show_variable('foo_bar_baz')
127
+ end
128
+
129
+ def test_not_specifying_database_name_for_cross_database_selects
130
+ begin
131
+ assert_nothing_raised do
132
+ ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations['arunit'].except(:database))
133
+
134
+ config = ARTest.connection_config
135
+ ActiveRecord::Base.connection.execute(
136
+ "SELECT #{config['arunit']['database']}.pirates.*, #{config['arunit2']['database']}.courses.* " \
137
+ "FROM #{config['arunit']['database']}.pirates, #{config['arunit2']['database']}.courses"
138
+ )
139
+ end
140
+ ensure
141
+ ActiveRecord::Base.establish_connection :arunit
142
+ end
143
+ end
144
+ end
145
+
146
+ def test_table_alias
147
+ def @connection.test_table_alias_length() 10; end
148
+ class << @connection
149
+ alias_method :old_table_alias_length, :table_alias_length
150
+ alias_method :table_alias_length, :test_table_alias_length
151
+ end
152
+
153
+ assert_equal 'posts', @connection.table_alias_for('posts')
154
+ assert_equal 'posts_comm', @connection.table_alias_for('posts_comments')
155
+ assert_equal 'dbo_posts', @connection.table_alias_for('dbo.posts')
156
+
157
+ class << @connection
158
+ remove_method :table_alias_length
159
+ alias_method :table_alias_length, :old_table_alias_length
160
+ end
161
+ end
162
+
163
+ # test resetting sequences in odd tables in PostgreSQL
164
+ if ActiveRecord::Base.connection.respond_to?(:reset_pk_sequence!)
165
+ require 'models/movie'
166
+ require 'models/subscriber'
167
+
168
+ def test_reset_empty_table_with_custom_pk
169
+ Movie.delete_all
170
+ Movie.connection.reset_pk_sequence! 'movies'
171
+ assert_equal 1, Movie.create(:name => 'fight club').id
172
+ end
173
+
174
+ def test_reset_table_with_non_integer_pk
175
+ Subscriber.delete_all
176
+ Subscriber.connection.reset_pk_sequence! 'subscribers'
177
+ sub = Subscriber.new(:name => 'robert drake')
178
+ sub.id = 'bob drake'
179
+ assert_nothing_raised { sub.save! }
180
+ end
181
+ end
182
+
183
+ unless current_adapter?(:IBM_DBAdapter)
184
+ def test_uniqueness_violations_are_translated_to_specific_exception
185
+ @connection.execute "INSERT INTO subscribers(nick) VALUES('me')"
186
+ error = assert_raises(ActiveRecord::RecordNotUnique) do
187
+ @connection.execute "INSERT INTO subscribers(nick) VALUES('me')"
188
+ end
189
+
190
+ assert_not_nil error.cause
191
+ end
192
+ end
193
+
194
+ unless current_adapter?(:SQLite3Adapter, :IBM_DBAdapter)
195
+ def test_foreign_key_violations_are_translated_to_specific_exception
196
+ error = assert_raises(ActiveRecord::InvalidForeignKey) do
197
+ # Oracle adapter uses prefetched primary key values from sequence and passes them to connection adapter insert method
198
+ if @connection.prefetch_primary_key?
199
+ id_value = @connection.next_sequence_value(@connection.default_sequence_name("fk_test_has_fk", "id"))
200
+ @connection.execute "INSERT INTO fk_test_has_fk (id, fk_id) VALUES (#{id_value},0)"
201
+ else
202
+ @connection.execute "INSERT INTO fk_test_has_fk (fk_id) VALUES (0)"
203
+ end
204
+ end
205
+
206
+ assert_not_nil error.cause
207
+ end
208
+
209
+ def test_foreign_key_violations_are_translated_to_specific_exception_with_validate_false
210
+ klass_has_fk = Class.new(ActiveRecord::Base) do
211
+ self.table_name = 'fk_test_has_fk'
212
+ end
213
+
214
+ error = assert_raises(ActiveRecord::InvalidForeignKey) do
215
+ has_fk = klass_has_fk.new
216
+ has_fk.fk_id = 1231231231
217
+ has_fk.save(validate: false)
218
+ end
219
+
220
+ assert_not_nil error.cause
221
+ end
222
+
223
+ def test_value_limit_violations_are_translated_to_specific_exception
224
+ error = assert_raises(ActiveRecord::ValueTooLong) do
225
+ Event.create(title: 'abcdefgh')
226
+ end
227
+
228
+ assert_not_nil error.cause
229
+ end
230
+ end
231
+
232
+ def test_disable_referential_integrity
233
+ assert_nothing_raised do
234
+ @connection.disable_referential_integrity do
235
+ # Oracle adapter uses prefetched primary key values from sequence and passes them to connection adapter insert method
236
+ if @connection.prefetch_primary_key?
237
+ id_value = @connection.next_sequence_value(@connection.default_sequence_name("fk_test_has_fk", "id"))
238
+ @connection.execute "INSERT INTO fk_test_has_fk (id, fk_id) VALUES (#{id_value},0)"
239
+ else
240
+ @connection.execute "INSERT INTO fk_test_has_fk (fk_id) VALUES (0)"
241
+ end
242
+ # should delete created record as otherwise disable_referential_integrity will try to enable constraints after executed block
243
+ # and will fail (at least on Oracle)
244
+ @connection.execute "DELETE FROM fk_test_has_fk"
245
+ end
246
+ end
247
+ end
248
+
249
+ def test_select_all_always_return_activerecord_result
250
+ result = @connection.select_all "SELECT * FROM posts"
251
+ assert result.is_a?(ActiveRecord::Result)
252
+ end
253
+
254
+ if ActiveRecord::Base.connection.prepared_statements
255
+ def test_select_all_with_legacy_binds
256
+ post = Post.create!(title: "foo", body: "bar")
257
+ expected = @connection.select_all("SELECT * FROM posts WHERE id = #{post.id}")
258
+ result = @connection.select_all("SELECT * FROM posts WHERE id = #{Arel::Nodes::BindParam.new.to_sql}", nil, [[nil, post.id]])
259
+ assert_equal expected.to_hash, result.to_hash
260
+ end
261
+ end
262
+
263
+ unless current_adapter?(:IBM_DBAdapter)
264
+ def test_select_methods_passing_a_association_relation
265
+ author = Author.create!(name: 'john')
266
+ Post.create!(author: author, title: 'foo', body: 'bar')
267
+ query = author.posts.where(title: 'foo').select(:title)
268
+ assert_equal({"title" => "foo"}, @connection.select_one(query.arel, nil, query.bound_attributes))
269
+ assert_equal({"title" => "foo"}, @connection.select_one(query))
270
+ assert @connection.select_all(query).is_a?(ActiveRecord::Result)
271
+ assert_equal "foo", @connection.select_value(query)
272
+ assert_equal ["foo"], @connection.select_values(query)
273
+ end
274
+ end
275
+
276
+ unless current_adapter?(:IBM_DBAdapter)
277
+ def test_select_methods_passing_a_relation
278
+ Post.create!(title: 'foo', body: 'bar')
279
+ query = Post.where(title: 'foo').select(:title)
280
+ assert_equal({"title" => "foo"}, @connection.select_one(query.arel, nil, query.bound_attributes))
281
+ assert_equal({"title" => "foo"}, @connection.select_one(query))
282
+ assert @connection.select_all(query).is_a?(ActiveRecord::Result)
283
+ assert_equal "foo", @connection.select_value(query)
284
+ assert_equal ["foo"], @connection.select_values(query)
285
+ end
286
+ end
287
+
288
+ test "type_to_sql returns a String for unmapped types" do
289
+ assert_equal "special_db_type", @connection.type_to_sql(:special_db_type)
290
+ end
291
+
292
+ unless current_adapter?(:PostgreSQLAdapter, :IBM_DBAdapter)
293
+ def test_log_invalid_encoding
294
+ error = assert_raise ActiveRecord::StatementInvalid do
295
+ @connection.send :log, "SELECT 'ы' FROM DUAL" do
296
+ raise 'ы'.force_encoding(Encoding::ASCII_8BIT)
297
+ end
298
+ end
299
+
300
+ assert_not_nil error.cause
301
+ end
302
+ end
303
+
304
+ if current_adapter?(:Mysql2Adapter, :SQLite3Adapter)
305
+ def test_tables_returning_both_tables_and_views_is_deprecated
306
+ assert_deprecated { @connection.tables }
307
+ end
308
+ end
309
+
310
+ def test_passing_arguments_to_tables_is_deprecated
311
+ assert_deprecated { @connection.tables(:books) }
312
+ end
313
+ end
314
+
315
+ class AdapterTestWithoutTransaction < ActiveRecord::TestCase
316
+ self.use_transactional_tests = false
317
+
318
+ class Klass < ActiveRecord::Base
319
+ end
320
+
321
+ def setup
322
+ Klass.establish_connection :arunit
323
+ @connection = Klass.connection
324
+ end
325
+
326
+ teardown do
327
+ Klass.remove_connection
328
+ end
329
+
330
+ unless current_adapter?(:IBM_DBAdapter)
331
+ unless in_memory_db?
332
+ test "transaction state is reset after a reconnect" do
333
+ @connection.begin_transaction
334
+ assert @connection.transaction_open?
335
+ @connection.reconnect!
336
+ assert !@connection.transaction_open?
337
+ end
338
+
339
+ test "transaction state is reset after a disconnect" do
340
+ @connection.begin_transaction
341
+ assert @connection.transaction_open?
342
+ @connection.disconnect!
343
+ assert !@connection.transaction_open?
344
+ end
345
+ end
346
+ end
347
+
348
+ end
349
+
350
+
351
+ end