ibm_db 3.0.4 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +4 -1
  3. data/LICENSE +1 -1
  4. data/MANIFEST +14 -14
  5. data/README +225 -225
  6. data/ext/Makefile.nt32 +181 -181
  7. data/ext/Makefile.nt32.191 +212 -212
  8. data/ext/extconf.rb +291 -291
  9. data/ext/ibm_db.c +11887 -11884
  10. data/ext/ruby_ibm_db.h +241 -241
  11. data/ext/ruby_ibm_db_cli.c +866 -866
  12. data/ext/ruby_ibm_db_cli.h +500 -500
  13. data/init.rb +41 -41
  14. data/lib/IBM_DB.rb +27 -27
  15. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +3177 -3177
  16. data/lib/active_record/connection_adapters/ibmdb_adapter.rb +1 -1
  17. data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
  18. data/test/active_record/connection_adapters/fake_adapter.rb +46 -46
  19. data/test/assets/example.log +1 -1
  20. data/test/assets/test.txt +1 -1
  21. data/test/cases/adapter_test.rb +276 -261
  22. data/test/cases/aggregations_test.rb +158 -158
  23. data/test/cases/ar_schema_test.rb +161 -161
  24. data/test/cases/associations/association_scope_test.rb +21 -21
  25. data/test/cases/associations/belongs_to_associations_test.rb +1029 -1029
  26. data/test/cases/associations/callbacks_test.rb +192 -192
  27. data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
  28. data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +26 -26
  29. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
  30. data/test/cases/associations/eager_load_nested_include_test.rb +128 -128
  31. data/test/cases/associations/eager_singularization_test.rb +148 -148
  32. data/test/cases/associations/eager_test.rb +1429 -1411
  33. data/test/cases/associations/extension_test.rb +82 -82
  34. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +972 -932
  35. data/test/cases/associations/has_many_associations_test.rb +2182 -2162
  36. data/test/cases/associations/has_many_through_associations_test.rb +1204 -1204
  37. data/test/cases/associations/has_one_associations_test.rb +610 -610
  38. data/test/cases/associations/has_one_through_associations_test.rb +380 -380
  39. data/test/cases/associations/inner_join_association_test.rb +139 -139
  40. data/test/cases/associations/inverse_associations_test.rb +706 -693
  41. data/test/cases/associations/join_model_test.rb +754 -754
  42. data/test/cases/associations/nested_through_associations_test.rb +579 -579
  43. data/test/cases/associations/required_test.rb +82 -82
  44. data/test/cases/associations_test.rb +380 -380
  45. data/test/cases/attribute_decorators_test.rb +125 -125
  46. data/test/cases/attribute_methods/read_test.rb +60 -60
  47. data/test/cases/attribute_methods/serialization_test.rb +29 -29
  48. data/test/cases/attribute_methods_test.rb +952 -952
  49. data/test/cases/attribute_set_test.rb +210 -200
  50. data/test/cases/attribute_test.rb +180 -180
  51. data/test/cases/attributes_test.rb +136 -136
  52. data/test/cases/autosave_association_test.rb +1595 -1595
  53. data/test/cases/base_test.rb +1664 -1638
  54. data/test/cases/batches_test.rb +212 -212
  55. data/test/cases/binary_test.rb +52 -52
  56. data/test/cases/bind_parameter_test.rb +100 -100
  57. data/test/cases/calculations_test.rb +646 -646
  58. data/test/cases/callbacks_test.rb +543 -543
  59. data/test/cases/clone_test.rb +40 -40
  60. data/test/cases/coders/yaml_column_test.rb +63 -63
  61. data/test/cases/column_alias_test.rb +17 -17
  62. data/test/cases/column_definition_test.rb +123 -123
  63. data/test/cases/connection_adapters/adapter_leasing_test.rb +54 -54
  64. data/test/cases/connection_adapters/connection_handler_test.rb +53 -53
  65. data/test/cases/connection_adapters/connection_specification_test.rb +12 -12
  66. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +293 -293
  67. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +65 -65
  68. data/test/cases/connection_adapters/quoting_test.rb +13 -13
  69. data/test/cases/connection_adapters/schema_cache_test.rb +56 -56
  70. data/test/cases/connection_adapters/type_lookup_test.rb +110 -110
  71. data/test/cases/connection_management_test.rb +122 -122
  72. data/test/cases/connection_pool_test.rb +346 -346
  73. data/test/cases/connection_specification/resolver_test.rb +116 -116
  74. data/test/cases/core_test.rb +112 -112
  75. data/test/cases/counter_cache_test.rb +209 -209
  76. data/test/cases/custom_locking_test.rb +17 -17
  77. data/test/cases/database_statements_test.rb +19 -19
  78. data/test/cases/date_time_test.rb +61 -61
  79. data/test/cases/defaults_test.rb +223 -223
  80. data/test/cases/dirty_test.rb +785 -775
  81. data/test/cases/disconnected_test.rb +28 -28
  82. data/test/cases/dup_test.rb +157 -157
  83. data/test/cases/enum_test.rb +290 -290
  84. data/test/cases/explain_subscriber_test.rb +64 -64
  85. data/test/cases/explain_test.rb +76 -76
  86. data/test/cases/finder_respond_to_test.rb +60 -60
  87. data/test/cases/finder_test.rb +1169 -1166
  88. data/test/cases/fixture_set/file_test.rb +138 -138
  89. data/test/cases/fixtures_test.rb +908 -897
  90. data/test/cases/forbidden_attributes_protection_test.rb +99 -99
  91. data/test/cases/habtm_destroy_order_test.rb +61 -61
  92. data/test/cases/helper.rb +210 -210
  93. data/test/cases/hot_compatibility_test.rb +54 -54
  94. data/test/cases/i18n_test.rb +45 -45
  95. data/test/cases/inheritance_test.rb +375 -375
  96. data/test/cases/integration_test.rb +139 -139
  97. data/test/cases/invalid_connection_test.rb +22 -22
  98. data/test/cases/invalid_date_test.rb +32 -32
  99. data/test/cases/invertible_migration_test.rb +295 -295
  100. data/test/cases/json_serialization_test.rb +302 -302
  101. data/test/cases/locking_test.rb +477 -477
  102. data/test/cases/log_subscriber_test.rb +136 -136
  103. data/test/cases/migration/change_schema_test - Copy.rb +448 -448
  104. data/test/cases/migration/change_schema_test.rb +512 -472
  105. data/test/cases/migration/change_table_test.rb +224 -224
  106. data/test/cases/migration/column_attributes_test.rb +192 -192
  107. data/test/cases/migration/column_positioning_test.rb +56 -56
  108. data/test/cases/migration/columns_test.rb +304 -304
  109. data/test/cases/migration/command_recorder_test.rb +305 -305
  110. data/test/cases/migration/create_join_table_test.rb +148 -148
  111. data/test/cases/migration/foreign_key_test - Changed.rb +325 -325
  112. data/test/cases/migration/foreign_key_test.rb +328 -360
  113. data/test/cases/migration/helper.rb +39 -39
  114. data/test/cases/migration/index_test.rb +216 -216
  115. data/test/cases/migration/logger_test.rb +36 -36
  116. data/test/cases/migration/pending_migrations_test.rb +53 -53
  117. data/test/cases/migration/references_foreign_key_test.rb +169 -214
  118. data/test/cases/migration/references_index_test.rb +101 -101
  119. data/test/cases/migration/references_statements_test.rb +116 -116
  120. data/test/cases/migration/rename_table_test.rb +93 -93
  121. data/test/cases/migration/table_and_index_test.rb +24 -24
  122. data/test/cases/migration_test.rb +959 -959
  123. data/test/cases/migrator_test.rb +388 -388
  124. data/test/cases/mixin_test.rb +70 -70
  125. data/test/cases/modules_test.rb +173 -173
  126. data/test/cases/multiparameter_attributes_test.rb +350 -350
  127. data/test/cases/multiple_db_test.rb +115 -115
  128. data/test/cases/nested_attributes_test.rb +1070 -1057
  129. data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
  130. data/test/cases/persistence_test.rb +909 -909
  131. data/test/cases/pooled_connections_test.rb +81 -81
  132. data/test/cases/primary_keys_test.rb +237 -237
  133. data/test/cases/query_cache_test.rb +326 -326
  134. data/test/cases/quoting_test.rb +156 -156
  135. data/test/cases/readonly_test.rb +118 -118
  136. data/test/cases/reaper_test.rb +85 -85
  137. data/test/cases/reflection_test.rb +463 -454
  138. data/test/cases/relation/delegation_test.rb +68 -68
  139. data/test/cases/relation/merging_test.rb +161 -161
  140. data/test/cases/relation/mutation_test.rb +165 -165
  141. data/test/cases/relation/predicate_builder_test.rb +14 -14
  142. data/test/cases/relation/where_chain_test.rb +181 -181
  143. data/test/cases/relation/where_test.rb +300 -300
  144. data/test/cases/relation/where_test2.rb +36 -36
  145. data/test/cases/relation_test.rb +319 -297
  146. data/test/cases/relations_test.rb +1815 -1815
  147. data/test/cases/reload_models_test.rb +22 -22
  148. data/test/cases/result_test.rb +80 -80
  149. data/test/cases/sanitize_test.rb +83 -83
  150. data/test/cases/schema_dumper_test.rb +463 -463
  151. data/test/cases/scoping/default_scoping_test.rb +454 -454
  152. data/test/cases/scoping/named_scoping_test.rb +524 -524
  153. data/test/cases/scoping/relation_scoping_test.rb +357 -357
  154. data/test/cases/serialization_test.rb +104 -104
  155. data/test/cases/serialized_attribute_test.rb +277 -277
  156. data/test/cases/statement_cache_test.rb +98 -98
  157. data/test/cases/store_test.rb +194 -194
  158. data/test/cases/tasks/database_tasks_test.rb +398 -396
  159. data/test/cases/tasks/mysql_rake_test.rb +324 -311
  160. data/test/cases/tasks/postgresql_rake_test.rb +250 -245
  161. data/test/cases/tasks/sqlite_rake_test.rb +193 -193
  162. data/test/cases/test_case.rb +123 -123
  163. data/test/cases/timestamp_test.rb +467 -468
  164. data/test/cases/transaction_callbacks_test.rb +452 -452
  165. data/test/cases/transaction_isolation_test.rb +106 -106
  166. data/test/cases/transactions_test.rb +817 -817
  167. data/test/cases/type/decimal_test.rb +56 -51
  168. data/test/cases/type/integer_test.rb +121 -121
  169. data/test/cases/type/string_test.rb +36 -36
  170. data/test/cases/type/type_map_test.rb +177 -177
  171. data/test/cases/type/unsigned_integer_test.rb +18 -18
  172. data/test/cases/types_test.rb +141 -141
  173. data/test/cases/unconnected_test.rb +33 -33
  174. data/test/cases/validations/association_validation_test.rb +86 -86
  175. data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
  176. data/test/cases/validations/i18n_validation_test.rb +90 -90
  177. data/test/cases/validations/length_validation_test.rb +47 -47
  178. data/test/cases/validations/presence_validation_test.rb +68 -68
  179. data/test/cases/validations/uniqueness_validation_test.rb +457 -434
  180. data/test/cases/validations_repair_helper.rb +23 -23
  181. data/test/cases/validations_test.rb +165 -165
  182. data/test/cases/view_test.rb +119 -113
  183. data/test/cases/xml_serialization_test.rb +457 -457
  184. data/test/cases/yaml_serialization_test.rb +126 -86
  185. data/test/config.rb +5 -5
  186. data/test/config.yml +154 -154
  187. data/test/connections/native_ibm_db/connection.rb +43 -43
  188. data/test/fixtures/accounts.yml +29 -29
  189. data/test/fixtures/admin/accounts.yml +2 -2
  190. data/test/fixtures/admin/randomly_named_a9.yml +7 -7
  191. data/test/fixtures/admin/randomly_named_b0.yml +7 -7
  192. data/test/fixtures/admin/users.yml +10 -10
  193. data/test/fixtures/author_addresses.yml +17 -17
  194. data/test/fixtures/author_favorites.yml +3 -3
  195. data/test/fixtures/authors.yml +23 -23
  196. data/test/fixtures/binaries.yml +133 -133
  197. data/test/fixtures/books.yml +11 -11
  198. data/test/fixtures/bulbs.yml +5 -5
  199. data/test/fixtures/cars.yml +9 -9
  200. data/test/fixtures/categories.yml +19 -19
  201. data/test/fixtures/categories/special_categories.yml +9 -9
  202. data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -4
  203. data/test/fixtures/categories_ordered.yml +7 -7
  204. data/test/fixtures/categories_posts.yml +31 -31
  205. data/test/fixtures/categorizations.yml +23 -23
  206. data/test/fixtures/clubs.yml +8 -8
  207. data/test/fixtures/collections.yml +3 -3
  208. data/test/fixtures/colleges.yml +3 -3
  209. data/test/fixtures/comments.yml +65 -65
  210. data/test/fixtures/companies.yml +67 -67
  211. data/test/fixtures/computers.yml +10 -10
  212. data/test/fixtures/courses.yml +8 -8
  213. data/test/fixtures/customers.yml +25 -25
  214. data/test/fixtures/dashboards.yml +6 -6
  215. data/test/fixtures/developers.yml +21 -21
  216. data/test/fixtures/developers_projects.yml +16 -16
  217. data/test/fixtures/dog_lovers.yml +7 -7
  218. data/test/fixtures/dogs.yml +4 -4
  219. data/test/fixtures/doubloons.yml +3 -3
  220. data/test/fixtures/edges.yml +5 -5
  221. data/test/fixtures/entrants.yml +14 -14
  222. data/test/fixtures/essays.yml +6 -6
  223. data/test/fixtures/faces.yml +11 -11
  224. data/test/fixtures/fk_test_has_fk.yml +3 -3
  225. data/test/fixtures/fk_test_has_pk.yml +1 -1
  226. data/test/fixtures/friendships.yml +4 -4
  227. data/test/fixtures/funny_jokes.yml +10 -10
  228. data/test/fixtures/interests.yml +33 -33
  229. data/test/fixtures/items.yml +3 -3
  230. data/test/fixtures/jobs.yml +7 -7
  231. data/test/fixtures/legacy_things.yml +3 -3
  232. data/test/fixtures/mateys.yml +4 -4
  233. data/test/fixtures/member_details.yml +8 -8
  234. data/test/fixtures/member_types.yml +6 -6
  235. data/test/fixtures/members.yml +11 -11
  236. data/test/fixtures/memberships.yml +34 -34
  237. data/test/fixtures/men.yml +5 -5
  238. data/test/fixtures/minimalistics.yml +2 -2
  239. data/test/fixtures/minivans.yml +5 -5
  240. data/test/fixtures/mixed_case_monkeys.yml +6 -6
  241. data/test/fixtures/mixins.yml +29 -29
  242. data/test/fixtures/movies.yml +7 -7
  243. data/test/fixtures/naked/csv/accounts.csv +1 -1
  244. data/test/fixtures/naked/yml/accounts.yml +1 -1
  245. data/test/fixtures/naked/yml/companies.yml +1 -1
  246. data/test/fixtures/naked/yml/courses.yml +1 -1
  247. data/test/fixtures/organizations.yml +5 -5
  248. data/test/fixtures/other_topics.yml +42 -42
  249. data/test/fixtures/owners.yml +9 -9
  250. data/test/fixtures/parrots.yml +27 -27
  251. data/test/fixtures/parrots_pirates.yml +7 -7
  252. data/test/fixtures/people.yml +24 -24
  253. data/test/fixtures/peoples_treasures.yml +3 -3
  254. data/test/fixtures/pets.yml +19 -19
  255. data/test/fixtures/pirates.yml +12 -12
  256. data/test/fixtures/posts.yml +80 -80
  257. data/test/fixtures/price_estimates.yml +7 -7
  258. data/test/fixtures/products.yml +4 -4
  259. data/test/fixtures/projects.yml +7 -7
  260. data/test/fixtures/randomly_named_a9.yml +7 -7
  261. data/test/fixtures/ratings.yml +14 -14
  262. data/test/fixtures/readers.yml +11 -11
  263. data/test/fixtures/references.yml +17 -17
  264. data/test/fixtures/reserved_words/distinct.yml +5 -5
  265. data/test/fixtures/reserved_words/distinct_select.yml +11 -11
  266. data/test/fixtures/reserved_words/group.yml +14 -14
  267. data/test/fixtures/reserved_words/select.yml +8 -8
  268. data/test/fixtures/reserved_words/values.yml +7 -7
  269. data/test/fixtures/ships.yml +6 -6
  270. data/test/fixtures/speedometers.yml +8 -8
  271. data/test/fixtures/sponsors.yml +12 -12
  272. data/test/fixtures/string_key_objects.yml +7 -7
  273. data/test/fixtures/subscribers.yml +10 -10
  274. data/test/fixtures/subscriptions.yml +12 -12
  275. data/test/fixtures/taggings.yml +78 -78
  276. data/test/fixtures/tags.yml +11 -11
  277. data/test/fixtures/tasks.yml +7 -7
  278. data/test/fixtures/teapots.yml +3 -3
  279. data/test/fixtures/to_be_linked/accounts.yml +2 -2
  280. data/test/fixtures/to_be_linked/users.yml +10 -10
  281. data/test/fixtures/topics.yml +49 -49
  282. data/test/fixtures/toys.yml +14 -14
  283. data/test/fixtures/traffic_lights.yml +9 -9
  284. data/test/fixtures/treasures.yml +10 -10
  285. data/test/fixtures/uuid_children.yml +3 -3
  286. data/test/fixtures/uuid_parents.yml +2 -2
  287. data/test/fixtures/variants.yml +4 -4
  288. data/test/fixtures/vegetables.yml +19 -19
  289. data/test/fixtures/vertices.yml +3 -3
  290. data/test/fixtures/warehouse_things.yml +2 -2
  291. data/test/fixtures/zines.yml +5 -5
  292. data/test/ibm_db_test.rb +24 -24
  293. data/test/migrations/10_urban/9_add_expressions.rb +11 -11
  294. data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -15
  295. data/test/migrations/magic/1_currencies_have_symbols.rb +12 -12
  296. data/test/migrations/missing/1000_people_have_middle_names.rb +8 -8
  297. data/test/migrations/missing/1_people_have_last_names.rb +8 -8
  298. data/test/migrations/missing/3_we_need_reminders.rb +11 -11
  299. data/test/migrations/missing/4_innocent_jointable.rb +11 -11
  300. data/test/migrations/rename/1_we_need_things.rb +10 -10
  301. data/test/migrations/rename/2_rename_things.rb +8 -8
  302. data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -9
  303. data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -9
  304. data/test/migrations/to_copy2/1_create_articles.rb +7 -7
  305. data/test/migrations/to_copy2/2_create_comments.rb +7 -7
  306. data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -9
  307. data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -9
  308. data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -9
  309. data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -7
  310. data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -7
  311. data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -9
  312. data/test/migrations/valid/2_we_need_reminders.rb +11 -11
  313. data/test/migrations/valid/3_innocent_jointable.rb +11 -11
  314. data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -9
  315. data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +11 -11
  316. data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +11 -11
  317. data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -9
  318. data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -12
  319. data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -12
  320. data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -8
  321. data/test/models/admin.rb +4 -4
  322. data/test/models/admin/account.rb +2 -2
  323. data/test/models/admin/randomly_named_c1.rb +3 -3
  324. data/test/models/admin/user.rb +40 -40
  325. data/test/models/aircraft.rb +4 -4
  326. data/test/models/arunit2_model.rb +3 -3
  327. data/test/models/author.rb +212 -212
  328. data/test/models/auto_id.rb +4 -4
  329. data/test/models/autoloadable/extra_firm.rb +2 -2
  330. data/test/models/binary.rb +1 -1
  331. data/test/models/bird.rb +12 -12
  332. data/test/models/book.rb +18 -18
  333. data/test/models/boolean.rb +2 -2
  334. data/test/models/bulb.rb +51 -51
  335. data/test/models/cake_designer.rb +3 -3
  336. data/test/models/car.rb +26 -26
  337. data/test/models/carrier.rb +2 -2
  338. data/test/models/categorization.rb +19 -19
  339. data/test/models/category.rb +35 -35
  340. data/test/models/chef.rb +7 -3
  341. data/test/models/citation.rb +3 -3
  342. data/test/models/club.rb +23 -23
  343. data/test/models/college.rb +10 -10
  344. data/test/models/column.rb +3 -3
  345. data/test/models/column_name.rb +3 -3
  346. data/test/models/comment.rb +64 -64
  347. data/test/models/company.rb +228 -225
  348. data/test/models/company_in_module.rb +98 -98
  349. data/test/models/computer.rb +3 -3
  350. data/test/models/contact.rb +41 -41
  351. data/test/models/contract.rb +20 -20
  352. data/test/models/country.rb +7 -7
  353. data/test/models/course.rb +6 -6
  354. data/test/models/customer.rb +77 -77
  355. data/test/models/customer_carrier.rb +14 -14
  356. data/test/models/dashboard.rb +3 -3
  357. data/test/models/default.rb +2 -2
  358. data/test/models/department.rb +4 -4
  359. data/test/models/developer.rb +255 -252
  360. data/test/models/dog.rb +5 -5
  361. data/test/models/dog_lover.rb +5 -5
  362. data/test/models/doubloon.rb +12 -12
  363. data/test/models/drink_designer.rb +3 -3
  364. data/test/models/edge.rb +5 -5
  365. data/test/models/electron.rb +5 -5
  366. data/test/models/engine.rb +4 -4
  367. data/test/models/entrant.rb +3 -3
  368. data/test/models/essay.rb +5 -5
  369. data/test/models/event.rb +2 -2
  370. data/test/models/eye.rb +37 -37
  371. data/test/models/face.rb +9 -9
  372. data/test/models/friendship.rb +6 -6
  373. data/test/models/guid.rb +1 -1
  374. data/test/models/hotel.rb +9 -6
  375. data/test/models/image.rb +3 -3
  376. data/test/models/interest.rb +5 -5
  377. data/test/models/invoice.rb +4 -4
  378. data/test/models/item.rb +7 -7
  379. data/test/models/job.rb +7 -7
  380. data/test/models/joke.rb +7 -7
  381. data/test/models/keyboard.rb +3 -3
  382. data/test/models/legacy_thing.rb +3 -3
  383. data/test/models/lesson.rb +11 -11
  384. data/test/models/line_item.rb +3 -3
  385. data/test/models/liquid.rb +4 -4
  386. data/test/models/man.rb +11 -11
  387. data/test/models/matey.rb +4 -4
  388. data/test/models/member.rb +41 -41
  389. data/test/models/member_detail.rb +7 -7
  390. data/test/models/member_type.rb +3 -3
  391. data/test/models/membership.rb +35 -35
  392. data/test/models/minimalistic.rb +2 -2
  393. data/test/models/minivan.rb +9 -9
  394. data/test/models/mixed_case_monkey.rb +3 -3
  395. data/test/models/molecule.rb +6 -6
  396. data/test/models/movie.rb +5 -5
  397. data/test/models/order.rb +4 -4
  398. data/test/models/organization.rb +14 -14
  399. data/test/models/owner.rb +34 -34
  400. data/test/models/parrot.rb +29 -29
  401. data/test/models/person.rb +143 -143
  402. data/test/models/personal_legacy_thing.rb +4 -4
  403. data/test/models/pet.rb +15 -15
  404. data/test/models/pirate.rb +92 -92
  405. data/test/models/possession.rb +3 -3
  406. data/test/models/post.rb +264 -264
  407. data/test/models/price_estimate.rb +4 -4
  408. data/test/models/professor.rb +5 -5
  409. data/test/models/project.rb +31 -29
  410. data/test/models/publisher.rb +2 -2
  411. data/test/models/publisher/article.rb +4 -4
  412. data/test/models/publisher/magazine.rb +3 -3
  413. data/test/models/randomly_named_c1.rb +3 -3
  414. data/test/models/rating.rb +4 -4
  415. data/test/models/reader.rb +23 -23
  416. data/test/models/record.rb +2 -2
  417. data/test/models/reference.rb +22 -22
  418. data/test/models/reply.rb +61 -61
  419. data/test/models/ship.rb +33 -33
  420. data/test/models/ship_part.rb +7 -7
  421. data/test/models/shop.rb +17 -17
  422. data/test/models/shop_account.rb +6 -6
  423. data/test/models/speedometer.rb +6 -6
  424. data/test/models/sponsor.rb +7 -7
  425. data/test/models/string_key_object.rb +3 -3
  426. data/test/models/student.rb +4 -4
  427. data/test/models/subject.rb +16 -16
  428. data/test/models/subscriber.rb +8 -8
  429. data/test/models/subscription.rb +4 -4
  430. data/test/models/tag.rb +7 -7
  431. data/test/models/tagging.rb +13 -13
  432. data/test/models/task.rb +5 -5
  433. data/test/models/topic.rb +124 -124
  434. data/test/models/toy.rb +6 -6
  435. data/test/models/traffic_light.rb +4 -4
  436. data/test/models/treasure.rb +14 -14
  437. data/test/models/treaty.rb +7 -7
  438. data/test/models/tyre.rb +11 -11
  439. data/test/models/uuid_child.rb +3 -3
  440. data/test/models/uuid_parent.rb +3 -3
  441. data/test/models/vegetables.rb +24 -24
  442. data/test/models/vehicle.rb +6 -6
  443. data/test/models/vertex.rb +9 -9
  444. data/test/models/warehouse_thing.rb +5 -5
  445. data/test/models/wheel.rb +3 -3
  446. data/test/models/without_table.rb +3 -3
  447. data/test/models/zine.rb +3 -3
  448. data/test/schema/mysql2_specific_schema.rb +58 -58
  449. data/test/schema/mysql_specific_schema.rb +70 -70
  450. data/test/schema/oracle_specific_schema.rb +43 -43
  451. data/test/schema/postgresql_specific_schema.rb +202 -202
  452. data/test/schema/schema.rb +952 -938
  453. data/test/schema/sqlite_specific_schema.rb +21 -21
  454. data/test/support/config.rb +43 -43
  455. data/test/support/connection.rb +22 -22
  456. data/test/support/connection_helper.rb +14 -14
  457. data/test/support/ddl_helper.rb +8 -8
  458. data/test/support/schema_dumping_helper.rb +20 -20
  459. metadata +3 -3
@@ -1,212 +1,212 @@
1
- require 'cases/helper'
2
- require 'models/post'
3
- require 'models/subscriber'
4
-
5
- class EachTest < ActiveRecord::TestCase
6
- fixtures :posts, :subscribers
7
-
8
- def setup
9
- @posts = Post.order("id asc")
10
- @total = Post.count
11
- Post.count('id') # preheat arel's table cache
12
- end
13
-
14
- def test_each_should_execute_one_query_per_batch
15
- assert_queries(@total + 1) do
16
- Post.find_each(:batch_size => 1) do |post|
17
- assert_kind_of Post, post
18
- end
19
- end
20
- end
21
-
22
- def test_each_should_not_return_query_chain_and_execute_only_one_query
23
- assert_queries(1) do
24
- result = Post.find_each(:batch_size => 100000){ }
25
- assert_nil result
26
- end
27
- end
28
-
29
- def test_each_should_return_an_enumerator_if_no_block_is_present
30
- assert_queries(1) do
31
- Post.find_each(:batch_size => 100000).with_index do |post, index|
32
- assert_kind_of Post, post
33
- assert_kind_of Integer, index
34
- end
35
- end
36
- end
37
-
38
- if Enumerator.method_defined? :size
39
- def test_each_should_return_a_sized_enumerator
40
- assert_equal 11, Post.find_each(:batch_size => 1).size
41
- assert_equal 5, Post.find_each(:batch_size => 2, :start => 7).size
42
- assert_equal 11, Post.find_each(:batch_size => 10_000).size
43
- end
44
- end
45
-
46
- def test_each_enumerator_should_execute_one_query_per_batch
47
- assert_queries(@total + 1) do
48
- Post.find_each(:batch_size => 1).with_index do |post, index|
49
- assert_kind_of Post, post
50
- assert_kind_of Integer, index
51
- end
52
- end
53
- end
54
-
55
- def test_each_should_raise_if_select_is_set_without_id
56
- assert_raise(RuntimeError) do
57
- Post.select(:title).find_each(batch_size: 1) { |post|
58
- flunk "should not call this block"
59
- }
60
- end
61
- end
62
-
63
- def test_each_should_execute_if_id_is_in_select
64
- assert_queries(6) do
65
- Post.select("id, title, type").find_each(:batch_size => 2) do |post|
66
- assert_kind_of Post, post
67
- end
68
- end
69
- end
70
-
71
- def test_warn_if_limit_scope_is_set
72
- ActiveRecord::Base.logger.expects(:warn)
73
- Post.limit(1).find_each { |post| post }
74
- end
75
-
76
- def test_warn_if_order_scope_is_set
77
- ActiveRecord::Base.logger.expects(:warn)
78
- Post.order("title").find_each { |post| post }
79
- end
80
-
81
- def test_logger_not_required
82
- previous_logger = ActiveRecord::Base.logger
83
- ActiveRecord::Base.logger = nil
84
- assert_nothing_raised do
85
- Post.limit(1).find_each { |post| post }
86
- end
87
- ensure
88
- ActiveRecord::Base.logger = previous_logger
89
- end
90
-
91
- def test_find_in_batches_should_return_batches
92
- assert_queries(@total + 1) do
93
- Post.find_in_batches(:batch_size => 1) do |batch|
94
- assert_kind_of Array, batch
95
- assert_kind_of Post, batch.first
96
- end
97
- end
98
- end
99
-
100
- def test_find_in_batches_should_start_from_the_start_option
101
- assert_queries(@total) do
102
- Post.find_in_batches(:batch_size => 1, :start => 2) do |batch|
103
- assert_kind_of Array, batch
104
- assert_kind_of Post, batch.first
105
- end
106
- end
107
- end
108
-
109
- def test_find_in_batches_shouldnt_execute_query_unless_needed
110
- assert_queries(2) do
111
- Post.find_in_batches(:batch_size => @total) {|batch| assert_kind_of Array, batch }
112
- end
113
-
114
- assert_queries(1) do
115
- Post.find_in_batches(:batch_size => @total + 1) {|batch| assert_kind_of Array, batch }
116
- end
117
- end
118
-
119
- def test_find_in_batches_should_quote_batch_order
120
- c = Post.connection
121
- assert_sql(/ORDER BY #{c.quote_table_name('posts')}.#{c.quote_column_name('id')}/) do
122
- Post.find_in_batches(:batch_size => 1) do |batch|
123
- assert_kind_of Array, batch
124
- assert_kind_of Post, batch.first
125
- end
126
- end
127
- end
128
-
129
- def test_find_in_batches_should_not_use_records_after_yielding_them_in_case_original_array_is_modified
130
- not_a_post = "not a post"
131
- not_a_post.stubs(:id).raises(StandardError, "not_a_post had #id called on it")
132
-
133
- assert_nothing_raised do
134
- Post.find_in_batches(:batch_size => 1) do |batch|
135
- assert_kind_of Array, batch
136
- assert_kind_of Post, batch.first
137
-
138
- batch.map! { not_a_post }
139
- end
140
- end
141
- end
142
-
143
- def test_find_in_batches_should_ignore_the_order_default_scope
144
- # First post is with title scope
145
- first_post = PostWithDefaultScope.first
146
- posts = []
147
- PostWithDefaultScope.find_in_batches do |batch|
148
- posts.concat(batch)
149
- end
150
- # posts.first will be ordered using id only. Title order scope should not apply here
151
- assert_not_equal first_post, posts.first
152
- assert_equal posts(:welcome), posts.first
153
- end
154
-
155
- def test_find_in_batches_should_not_ignore_the_default_scope_if_it_is_other_then_order
156
- special_posts_ids = SpecialPostWithDefaultScope.all.map(&:id).sort
157
- posts = []
158
- SpecialPostWithDefaultScope.find_in_batches do |batch|
159
- posts.concat(batch)
160
- end
161
- assert_equal special_posts_ids, posts.map(&:id)
162
- end
163
-
164
- def test_find_in_batches_should_not_modify_passed_options
165
- assert_nothing_raised do
166
- Post.find_in_batches({ batch_size: 42, start: 1 }.freeze){}
167
- end
168
- end
169
-
170
- def test_find_in_batches_should_use_any_column_as_primary_key
171
- nick_order_subscribers = Subscriber.order('nick asc')
172
- start_nick = nick_order_subscribers.second.nick
173
-
174
- subscribers = []
175
- Subscriber.find_in_batches(:batch_size => 1, :start => start_nick) do |batch|
176
- subscribers.concat(batch)
177
- end
178
-
179
- assert_equal nick_order_subscribers[1..-1].map(&:id), subscribers.map(&:id)
180
- end
181
-
182
- def test_find_in_batches_should_use_any_column_as_primary_key_when_start_is_not_specified
183
- assert_queries(Subscriber.count + 1) do
184
- Subscriber.find_each(:batch_size => 1) do |subscriber|
185
- assert_kind_of Subscriber, subscriber
186
- end
187
- end
188
- end
189
-
190
- def test_find_in_batches_should_return_an_enumerator
191
- enum = nil
192
- assert_queries(0) do
193
- enum = Post.find_in_batches(:batch_size => 1)
194
- end
195
- assert_queries(4) do
196
- enum.first(4) do |batch|
197
- assert_kind_of Array, batch
198
- assert_kind_of Post, batch.first
199
- end
200
- end
201
- end
202
-
203
- if Enumerator.method_defined? :size
204
- def test_find_in_batches_should_return_a_sized_enumerator
205
- assert_equal 11, Post.find_in_batches(:batch_size => 1).size
206
- assert_equal 6, Post.find_in_batches(:batch_size => 2).size
207
- assert_equal 4, Post.find_in_batches(:batch_size => 2, :start => 4).size
208
- assert_equal 4, Post.find_in_batches(:batch_size => 3).size
209
- assert_equal 1, Post.find_in_batches(:batch_size => 10_000).size
210
- end
211
- end
212
- end
1
+ require 'cases/helper'
2
+ require 'models/post'
3
+ require 'models/subscriber'
4
+
5
+ class EachTest < ActiveRecord::TestCase
6
+ fixtures :posts, :subscribers
7
+
8
+ def setup
9
+ @posts = Post.order("id asc")
10
+ @total = Post.count
11
+ Post.count('id') # preheat arel's table cache
12
+ end
13
+
14
+ def test_each_should_execute_one_query_per_batch
15
+ assert_queries(@total + 1) do
16
+ Post.find_each(:batch_size => 1) do |post|
17
+ assert_kind_of Post, post
18
+ end
19
+ end
20
+ end
21
+
22
+ def test_each_should_not_return_query_chain_and_execute_only_one_query
23
+ assert_queries(1) do
24
+ result = Post.find_each(:batch_size => 100000){ }
25
+ assert_nil result
26
+ end
27
+ end
28
+
29
+ def test_each_should_return_an_enumerator_if_no_block_is_present
30
+ assert_queries(1) do
31
+ Post.find_each(:batch_size => 100000).with_index do |post, index|
32
+ assert_kind_of Post, post
33
+ assert_kind_of Integer, index
34
+ end
35
+ end
36
+ end
37
+
38
+ if Enumerator.method_defined? :size
39
+ def test_each_should_return_a_sized_enumerator
40
+ assert_equal 11, Post.find_each(:batch_size => 1).size
41
+ assert_equal 5, Post.find_each(:batch_size => 2, :start => 7).size
42
+ assert_equal 11, Post.find_each(:batch_size => 10_000).size
43
+ end
44
+ end
45
+
46
+ def test_each_enumerator_should_execute_one_query_per_batch
47
+ assert_queries(@total + 1) do
48
+ Post.find_each(:batch_size => 1).with_index do |post, index|
49
+ assert_kind_of Post, post
50
+ assert_kind_of Integer, index
51
+ end
52
+ end
53
+ end
54
+
55
+ def test_each_should_raise_if_select_is_set_without_id
56
+ assert_raise(RuntimeError) do
57
+ Post.select(:title).find_each(batch_size: 1) { |post|
58
+ flunk "should not call this block"
59
+ }
60
+ end
61
+ end
62
+
63
+ def test_each_should_execute_if_id_is_in_select
64
+ assert_queries(6) do
65
+ Post.select("id, title, type").find_each(:batch_size => 2) do |post|
66
+ assert_kind_of Post, post
67
+ end
68
+ end
69
+ end
70
+
71
+ def test_warn_if_limit_scope_is_set
72
+ ActiveRecord::Base.logger.expects(:warn)
73
+ Post.limit(1).find_each { |post| post }
74
+ end
75
+
76
+ def test_warn_if_order_scope_is_set
77
+ ActiveRecord::Base.logger.expects(:warn)
78
+ Post.order("title").find_each { |post| post }
79
+ end
80
+
81
+ def test_logger_not_required
82
+ previous_logger = ActiveRecord::Base.logger
83
+ ActiveRecord::Base.logger = nil
84
+ assert_nothing_raised do
85
+ Post.limit(1).find_each { |post| post }
86
+ end
87
+ ensure
88
+ ActiveRecord::Base.logger = previous_logger
89
+ end
90
+
91
+ def test_find_in_batches_should_return_batches
92
+ assert_queries(@total + 1) do
93
+ Post.find_in_batches(:batch_size => 1) do |batch|
94
+ assert_kind_of Array, batch
95
+ assert_kind_of Post, batch.first
96
+ end
97
+ end
98
+ end
99
+
100
+ def test_find_in_batches_should_start_from_the_start_option
101
+ assert_queries(@total) do
102
+ Post.find_in_batches(:batch_size => 1, :start => 2) do |batch|
103
+ assert_kind_of Array, batch
104
+ assert_kind_of Post, batch.first
105
+ end
106
+ end
107
+ end
108
+
109
+ def test_find_in_batches_shouldnt_execute_query_unless_needed
110
+ assert_queries(2) do
111
+ Post.find_in_batches(:batch_size => @total) {|batch| assert_kind_of Array, batch }
112
+ end
113
+
114
+ assert_queries(1) do
115
+ Post.find_in_batches(:batch_size => @total + 1) {|batch| assert_kind_of Array, batch }
116
+ end
117
+ end
118
+
119
+ def test_find_in_batches_should_quote_batch_order
120
+ c = Post.connection
121
+ assert_sql(/ORDER BY #{c.quote_table_name('posts')}.#{c.quote_column_name('id')}/) do
122
+ Post.find_in_batches(:batch_size => 1) do |batch|
123
+ assert_kind_of Array, batch
124
+ assert_kind_of Post, batch.first
125
+ end
126
+ end
127
+ end
128
+
129
+ def test_find_in_batches_should_not_use_records_after_yielding_them_in_case_original_array_is_modified
130
+ not_a_post = "not a post"
131
+ not_a_post.stubs(:id).raises(StandardError, "not_a_post had #id called on it")
132
+
133
+ assert_nothing_raised do
134
+ Post.find_in_batches(:batch_size => 1) do |batch|
135
+ assert_kind_of Array, batch
136
+ assert_kind_of Post, batch.first
137
+
138
+ batch.map! { not_a_post }
139
+ end
140
+ end
141
+ end
142
+
143
+ def test_find_in_batches_should_ignore_the_order_default_scope
144
+ # First post is with title scope
145
+ first_post = PostWithDefaultScope.first
146
+ posts = []
147
+ PostWithDefaultScope.find_in_batches do |batch|
148
+ posts.concat(batch)
149
+ end
150
+ # posts.first will be ordered using id only. Title order scope should not apply here
151
+ assert_not_equal first_post, posts.first
152
+ assert_equal posts(:welcome), posts.first
153
+ end
154
+
155
+ def test_find_in_batches_should_not_ignore_the_default_scope_if_it_is_other_then_order
156
+ special_posts_ids = SpecialPostWithDefaultScope.all.map(&:id).sort
157
+ posts = []
158
+ SpecialPostWithDefaultScope.find_in_batches do |batch|
159
+ posts.concat(batch)
160
+ end
161
+ assert_equal special_posts_ids, posts.map(&:id)
162
+ end
163
+
164
+ def test_find_in_batches_should_not_modify_passed_options
165
+ assert_nothing_raised do
166
+ Post.find_in_batches({ batch_size: 42, start: 1 }.freeze){}
167
+ end
168
+ end
169
+
170
+ def test_find_in_batches_should_use_any_column_as_primary_key
171
+ nick_order_subscribers = Subscriber.order('nick asc')
172
+ start_nick = nick_order_subscribers.second.nick
173
+
174
+ subscribers = []
175
+ Subscriber.find_in_batches(:batch_size => 1, :start => start_nick) do |batch|
176
+ subscribers.concat(batch)
177
+ end
178
+
179
+ assert_equal nick_order_subscribers[1..-1].map(&:id), subscribers.map(&:id)
180
+ end
181
+
182
+ def test_find_in_batches_should_use_any_column_as_primary_key_when_start_is_not_specified
183
+ assert_queries(Subscriber.count + 1) do
184
+ Subscriber.find_each(:batch_size => 1) do |subscriber|
185
+ assert_kind_of Subscriber, subscriber
186
+ end
187
+ end
188
+ end
189
+
190
+ def test_find_in_batches_should_return_an_enumerator
191
+ enum = nil
192
+ assert_queries(0) do
193
+ enum = Post.find_in_batches(:batch_size => 1)
194
+ end
195
+ assert_queries(4) do
196
+ enum.first(4) do |batch|
197
+ assert_kind_of Array, batch
198
+ assert_kind_of Post, batch.first
199
+ end
200
+ end
201
+ end
202
+
203
+ if Enumerator.method_defined? :size
204
+ def test_find_in_batches_should_return_a_sized_enumerator
205
+ assert_equal 11, Post.find_in_batches(:batch_size => 1).size
206
+ assert_equal 6, Post.find_in_batches(:batch_size => 2).size
207
+ assert_equal 4, Post.find_in_batches(:batch_size => 2, :start => 4).size
208
+ assert_equal 4, Post.find_in_batches(:batch_size => 3).size
209
+ assert_equal 1, Post.find_in_batches(:batch_size => 10_000).size
210
+ end
211
+ end
212
+ end
@@ -1,52 +1,52 @@
1
- # encoding: utf-8
2
- require "cases/helper"
3
-
4
- # Without using prepared statements, it makes no sense to test
5
- # BLOB data with DB2, because the length of a statement
6
- # is limited to 32KB.
7
- unless current_adapter?(:DB2Adapter)
8
- require 'models/binary'
9
-
10
- class BinaryTest < ActiveRecord::TestCase
11
- FIXTURES = %w(flowers.jpg example.log test.txt)
12
-
13
- def test_mixed_encoding
14
- str = "\x80"
15
- str.force_encoding('ASCII-8BIT')
16
-
17
- binary = Binary.new :name => 'いただきます!', :data => str
18
- binary.save!
19
- binary.reload
20
- assert_equal str, binary.data
21
-
22
- name = binary.name
23
-
24
- # MySQL adapter doesn't properly encode things, so we have to do it
25
- if current_adapter?(:MysqlAdapter, :DB2Adapter)
26
- name.force_encoding(Encoding::UTF_8)
27
- end
28
- assert_equal 'いただきます!', name
29
- end
30
-
31
- def test_load_save
32
- Binary.delete_all
33
-
34
- FIXTURES.each do |filename|
35
- data = File.read(ASSETS_ROOT + "/#{filename}")
36
- data.force_encoding('ASCII-8BIT')
37
- if current_adapter?(:DB2Adapter)
38
- data.force_encoding(Encoding::UTF_8)
39
- end
40
- data.freeze
41
-
42
- bin = Binary.new(:data => data)
43
- assert_equal data, bin.data, 'Newly assigned data differs from original'
44
-
45
- bin.save!
46
- assert_equal data, bin.data, 'Data differs from original after save'
47
-
48
- assert_equal data, bin.reload.data, 'Reloaded data differs from original'
49
- end
50
- end
51
- end
52
- end
1
+ # encoding: utf-8
2
+ require "cases/helper"
3
+
4
+ # Without using prepared statements, it makes no sense to test
5
+ # BLOB data with DB2, because the length of a statement
6
+ # is limited to 32KB.
7
+ unless current_adapter?(:DB2Adapter)
8
+ require 'models/binary'
9
+
10
+ class BinaryTest < ActiveRecord::TestCase
11
+ FIXTURES = %w(flowers.jpg example.log test.txt)
12
+
13
+ def test_mixed_encoding
14
+ str = "\x80"
15
+ str.force_encoding('ASCII-8BIT')
16
+
17
+ binary = Binary.new :name => 'いただきます!', :data => str
18
+ binary.save!
19
+ binary.reload
20
+ assert_equal str, binary.data
21
+
22
+ name = binary.name
23
+
24
+ # MySQL adapter doesn't properly encode things, so we have to do it
25
+ if current_adapter?(:MysqlAdapter, :DB2Adapter)
26
+ name.force_encoding(Encoding::UTF_8)
27
+ end
28
+ assert_equal 'いただきます!', name
29
+ end
30
+
31
+ def test_load_save
32
+ Binary.delete_all
33
+
34
+ FIXTURES.each do |filename|
35
+ data = File.read(ASSETS_ROOT + "/#{filename}")
36
+ data.force_encoding('ASCII-8BIT')
37
+ if current_adapter?(:DB2Adapter)
38
+ data.force_encoding(Encoding::UTF_8)
39
+ end
40
+ data.freeze
41
+
42
+ bin = Binary.new(:data => data)
43
+ assert_equal data, bin.data, 'Newly assigned data differs from original'
44
+
45
+ bin.save!
46
+ assert_equal data, bin.data, 'Data differs from original after save'
47
+
48
+ assert_equal data, bin.reload.data, 'Reloaded data differs from original'
49
+ end
50
+ end
51
+ end
52
+ end