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,14 +1,14 @@
1
- class CustomerCarrier < ActiveRecord::Base
2
- cattr_accessor :current_customer
3
-
4
- belongs_to :customer
5
- belongs_to :carrier
6
-
7
- default_scope -> {
8
- if current_customer
9
- where(customer: current_customer)
10
- else
11
- all
12
- end
13
- }
14
- end
1
+ class CustomerCarrier < ActiveRecord::Base
2
+ cattr_accessor :current_customer
3
+
4
+ belongs_to :customer
5
+ belongs_to :carrier
6
+
7
+ default_scope -> {
8
+ if current_customer
9
+ where(customer: current_customer)
10
+ else
11
+ all
12
+ end
13
+ }
14
+ end
@@ -1,3 +1,3 @@
1
- class Dashboard < ActiveRecord::Base
2
- self.primary_key = :dashboard_id
3
- end
1
+ class Dashboard < ActiveRecord::Base
2
+ self.primary_key = :dashboard_id
3
+ end
@@ -1,2 +1,2 @@
1
- class Default < ActiveRecord::Base
2
- end
1
+ class Default < ActiveRecord::Base
2
+ end
@@ -1,4 +1,4 @@
1
- class Department < ActiveRecord::Base
2
- has_many :chefs
3
- belongs_to :hotel
4
- end
1
+ class Department < ActiveRecord::Base
2
+ has_many :chefs
3
+ belongs_to :hotel
4
+ end
@@ -1,252 +1,255 @@
1
- require 'ostruct'
2
-
3
- module DeveloperProjectsAssociationExtension2
4
- def find_least_recent
5
- order("id ASC").first
6
- end
7
- end
8
-
9
- class Developer < ActiveRecord::Base
10
- has_and_belongs_to_many :projects do
11
- def find_most_recent
12
- order("id DESC").first
13
- end
14
- end
15
-
16
- accepts_nested_attributes_for :projects
17
-
18
- has_and_belongs_to_many :shared_computers, class_name: "Computer"
19
-
20
- has_and_belongs_to_many :projects_extended_by_name,
21
- -> { extending(DeveloperProjectsAssociationExtension) },
22
- :class_name => "Project",
23
- :join_table => "developers_projects",
24
- :association_foreign_key => "project_id"
25
-
26
- has_and_belongs_to_many :projects_extended_by_name_twice,
27
- -> { extending(DeveloperProjectsAssociationExtension, DeveloperProjectsAssociationExtension2) },
28
- :class_name => "Project",
29
- :join_table => "developers_projects",
30
- :association_foreign_key => "project_id"
31
-
32
- has_and_belongs_to_many :projects_extended_by_name_and_block,
33
- -> { extending(DeveloperProjectsAssociationExtension) },
34
- :class_name => "Project",
35
- :join_table => "developers_projects",
36
- :association_foreign_key => "project_id" do
37
- def find_least_recent
38
- order("id ASC").first
39
- end
40
- end
41
-
42
- has_and_belongs_to_many :special_projects, :join_table => 'developers_projects', :association_foreign_key => 'project_id'
43
- has_and_belongs_to_many :sym_special_projects,
44
- :join_table => :developers_projects,
45
- :association_foreign_key => 'project_id',
46
- :class_name => 'SpecialProject'
47
-
48
- has_many :audit_logs
49
- has_many :contracts
50
- has_many :firms, :through => :contracts, :source => :firm
51
- has_many :comments, ->(developer) { where(body: "I'm #{developer.name}") }
52
- has_many :ratings, through: :comments
53
-
54
- scope :jamises, -> { where(:name => 'Jamis') }
55
-
56
- validates_inclusion_of :salary, :in => 50000..200000
57
- validates_length_of :name, :within => 3..20
58
-
59
- before_create do |developer|
60
- developer.audit_logs.build :message => "Computer created"
61
- end
62
-
63
- def log=(message)
64
- audit_logs.build :message => message
65
- end
66
-
67
- after_find :track_instance_count
68
- cattr_accessor :instance_count
69
-
70
- def track_instance_count
71
- self.class.instance_count ||= 0
72
- self.class.instance_count += 1
73
- end
74
- private :track_instance_count
75
-
76
- end
77
-
78
- class AuditLog < ActiveRecord::Base
79
- belongs_to :developer, :validate => true
80
- belongs_to :unvalidated_developer, :class_name => 'Developer'
81
- end
82
-
83
- class DeveloperWithBeforeDestroyRaise < ActiveRecord::Base
84
- self.table_name = 'developers'
85
- has_and_belongs_to_many :projects, :join_table => 'developers_projects', :foreign_key => 'developer_id'
86
- before_destroy :raise_if_projects_empty!
87
-
88
- def raise_if_projects_empty!
89
- raise if projects.empty?
90
- end
91
- end
92
-
93
- class DeveloperWithSelect < ActiveRecord::Base
94
- self.table_name = 'developers'
95
- default_scope { select('name') }
96
- end
97
-
98
- class DeveloperWithIncludes < ActiveRecord::Base
99
- self.table_name = 'developers'
100
- has_many :audit_logs, :foreign_key => :developer_id
101
- default_scope { includes(:audit_logs) }
102
- end
103
-
104
- class DeveloperFilteredOnJoins < ActiveRecord::Base
105
- self.table_name = 'developers'
106
- has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
107
-
108
- def self.default_scope
109
- joins(:projects).where(:projects => { :name => 'Active Controller' })
110
- end
111
- end
112
-
113
- class DeveloperOrderedBySalary < ActiveRecord::Base
114
- self.table_name = 'developers'
115
- default_scope { order('salary DESC') }
116
-
117
- scope :by_name, -> { order('name DESC') }
118
- end
119
-
120
- class DeveloperCalledDavid < ActiveRecord::Base
121
- self.table_name = 'developers'
122
- default_scope { where("name = 'David'") }
123
- end
124
-
125
- class LazyLambdaDeveloperCalledDavid < ActiveRecord::Base
126
- self.table_name = 'developers'
127
- default_scope lambda { where(:name => 'David') }
128
- end
129
-
130
- class LazyBlockDeveloperCalledDavid < ActiveRecord::Base
131
- self.table_name = 'developers'
132
- default_scope { where(:name => 'David') }
133
- end
134
-
135
- class CallableDeveloperCalledDavid < ActiveRecord::Base
136
- self.table_name = 'developers'
137
- default_scope OpenStruct.new(:call => where(:name => 'David'))
138
- end
139
-
140
- class ClassMethodDeveloperCalledDavid < ActiveRecord::Base
141
- self.table_name = 'developers'
142
-
143
- def self.default_scope
144
- where(:name => 'David')
145
- end
146
- end
147
-
148
- class ClassMethodReferencingScopeDeveloperCalledDavid < ActiveRecord::Base
149
- self.table_name = 'developers'
150
- scope :david, -> { where(:name => 'David') }
151
-
152
- def self.default_scope
153
- david
154
- end
155
- end
156
-
157
- class LazyBlockReferencingScopeDeveloperCalledDavid < ActiveRecord::Base
158
- self.table_name = 'developers'
159
- scope :david, -> { where(:name => 'David') }
160
- default_scope { david }
161
- end
162
-
163
- class DeveloperCalledJamis < ActiveRecord::Base
164
- self.table_name = 'developers'
165
-
166
- default_scope { where(:name => 'Jamis') }
167
- scope :poor, -> { where('salary < 150000') }
168
- scope :david, -> { where name: "David" }
169
- scope :david2, -> { unscoped.where name: "David" }
170
- end
171
-
172
- class PoorDeveloperCalledJamis < ActiveRecord::Base
173
- self.table_name = 'developers'
174
-
175
- default_scope -> { where(:name => 'Jamis', :salary => 50000) }
176
- end
177
-
178
- class InheritedPoorDeveloperCalledJamis < DeveloperCalledJamis
179
- self.table_name = 'developers'
180
-
181
- default_scope -> { where(:salary => 50000) }
182
- end
183
-
184
- class MultiplePoorDeveloperCalledJamis < ActiveRecord::Base
185
- self.table_name = 'developers'
186
-
187
- default_scope -> { where(:name => 'Jamis') }
188
- default_scope -> { where(:salary => 50000) }
189
- end
190
-
191
- module SalaryDefaultScope
192
- extend ActiveSupport::Concern
193
-
194
- included { default_scope { where(:salary => 50000) } }
195
- end
196
-
197
- class ModuleIncludedPoorDeveloperCalledJamis < DeveloperCalledJamis
198
- self.table_name = 'developers'
199
-
200
- include SalaryDefaultScope
201
- end
202
-
203
- class EagerDeveloperWithDefaultScope < ActiveRecord::Base
204
- self.table_name = 'developers'
205
- has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
206
-
207
- default_scope { includes(:projects) }
208
- end
209
-
210
- class EagerDeveloperWithClassMethodDefaultScope < ActiveRecord::Base
211
- self.table_name = 'developers'
212
- has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
213
-
214
- def self.default_scope
215
- includes(:projects)
216
- end
217
- end
218
-
219
- class EagerDeveloperWithLambdaDefaultScope < ActiveRecord::Base
220
- self.table_name = 'developers'
221
- has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
222
-
223
- default_scope lambda { includes(:projects) }
224
- end
225
-
226
- class EagerDeveloperWithBlockDefaultScope < ActiveRecord::Base
227
- self.table_name = 'developers'
228
- has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
229
-
230
- default_scope { includes(:projects) }
231
- end
232
-
233
- class EagerDeveloperWithCallableDefaultScope < ActiveRecord::Base
234
- self.table_name = 'developers'
235
- has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
236
-
237
- default_scope OpenStruct.new(:call => includes(:projects))
238
- end
239
-
240
- class ThreadsafeDeveloper < ActiveRecord::Base
241
- self.table_name = 'developers'
242
-
243
- def self.default_scope
244
- sleep 0.05 if Thread.current[:long_default_scope]
245
- limit(1)
246
- end
247
- end
248
-
249
- class CachedDeveloper < ActiveRecord::Base
250
- self.table_name = "developers"
251
- self.cache_timestamp_format = :number
252
- end
1
+ require 'ostruct'
2
+
3
+ module DeveloperProjectsAssociationExtension2
4
+ def find_least_recent
5
+ order("id ASC").first
6
+ end
7
+ end
8
+
9
+ class Developer < ActiveRecord::Base
10
+ has_and_belongs_to_many :projects do
11
+ def find_most_recent
12
+ order("id DESC").first
13
+ end
14
+ end
15
+
16
+ accepts_nested_attributes_for :projects
17
+
18
+ has_and_belongs_to_many :shared_computers, class_name: "Computer"
19
+
20
+ has_and_belongs_to_many :projects_extended_by_name,
21
+ -> { extending(DeveloperProjectsAssociationExtension) },
22
+ :class_name => "Project",
23
+ :join_table => "developers_projects",
24
+ :association_foreign_key => "project_id"
25
+
26
+ has_and_belongs_to_many :projects_extended_by_name_twice,
27
+ -> { extending(DeveloperProjectsAssociationExtension, DeveloperProjectsAssociationExtension2) },
28
+ :class_name => "Project",
29
+ :join_table => "developers_projects",
30
+ :association_foreign_key => "project_id"
31
+
32
+ has_and_belongs_to_many :projects_extended_by_name_and_block,
33
+ -> { extending(DeveloperProjectsAssociationExtension) },
34
+ :class_name => "Project",
35
+ :join_table => "developers_projects",
36
+ :association_foreign_key => "project_id" do
37
+ def find_least_recent
38
+ order("id ASC").first
39
+ end
40
+ end
41
+
42
+ has_and_belongs_to_many :special_projects, :join_table => 'developers_projects', :association_foreign_key => 'project_id'
43
+ has_and_belongs_to_many :sym_special_projects,
44
+ :join_table => :developers_projects,
45
+ :association_foreign_key => 'project_id',
46
+ :class_name => 'SpecialProject'
47
+
48
+ has_many :audit_logs
49
+ has_many :contracts
50
+ has_many :firms, :through => :contracts, :source => :firm
51
+ has_many :comments, ->(developer) { where(body: "I'm #{developer.name}") }
52
+ has_many :ratings, through: :comments
53
+
54
+ belongs_to :firm
55
+ has_many :contracted_projects, class_name: "Project"
56
+
57
+ scope :jamises, -> { where(:name => 'Jamis') }
58
+
59
+ validates_inclusion_of :salary, :in => 50000..200000
60
+ validates_length_of :name, :within => 3..20
61
+
62
+ before_create do |developer|
63
+ developer.audit_logs.build :message => "Computer created"
64
+ end
65
+
66
+ def log=(message)
67
+ audit_logs.build :message => message
68
+ end
69
+
70
+ after_find :track_instance_count
71
+ cattr_accessor :instance_count
72
+
73
+ def track_instance_count
74
+ self.class.instance_count ||= 0
75
+ self.class.instance_count += 1
76
+ end
77
+ private :track_instance_count
78
+
79
+ end
80
+
81
+ class AuditLog < ActiveRecord::Base
82
+ belongs_to :developer, :validate => true
83
+ belongs_to :unvalidated_developer, :class_name => 'Developer'
84
+ end
85
+
86
+ class DeveloperWithBeforeDestroyRaise < ActiveRecord::Base
87
+ self.table_name = 'developers'
88
+ has_and_belongs_to_many :projects, :join_table => 'developers_projects', :foreign_key => 'developer_id'
89
+ before_destroy :raise_if_projects_empty!
90
+
91
+ def raise_if_projects_empty!
92
+ raise if projects.empty?
93
+ end
94
+ end
95
+
96
+ class DeveloperWithSelect < ActiveRecord::Base
97
+ self.table_name = 'developers'
98
+ default_scope { select('name') }
99
+ end
100
+
101
+ class DeveloperWithIncludes < ActiveRecord::Base
102
+ self.table_name = 'developers'
103
+ has_many :audit_logs, :foreign_key => :developer_id
104
+ default_scope { includes(:audit_logs) }
105
+ end
106
+
107
+ class DeveloperFilteredOnJoins < ActiveRecord::Base
108
+ self.table_name = 'developers'
109
+ has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
110
+
111
+ def self.default_scope
112
+ joins(:projects).where(:projects => { :name => 'Active Controller' })
113
+ end
114
+ end
115
+
116
+ class DeveloperOrderedBySalary < ActiveRecord::Base
117
+ self.table_name = 'developers'
118
+ default_scope { order('salary DESC') }
119
+
120
+ scope :by_name, -> { order('name DESC') }
121
+ end
122
+
123
+ class DeveloperCalledDavid < ActiveRecord::Base
124
+ self.table_name = 'developers'
125
+ default_scope { where("name = 'David'") }
126
+ end
127
+
128
+ class LazyLambdaDeveloperCalledDavid < ActiveRecord::Base
129
+ self.table_name = 'developers'
130
+ default_scope lambda { where(:name => 'David') }
131
+ end
132
+
133
+ class LazyBlockDeveloperCalledDavid < ActiveRecord::Base
134
+ self.table_name = 'developers'
135
+ default_scope { where(:name => 'David') }
136
+ end
137
+
138
+ class CallableDeveloperCalledDavid < ActiveRecord::Base
139
+ self.table_name = 'developers'
140
+ default_scope OpenStruct.new(:call => where(:name => 'David'))
141
+ end
142
+
143
+ class ClassMethodDeveloperCalledDavid < ActiveRecord::Base
144
+ self.table_name = 'developers'
145
+
146
+ def self.default_scope
147
+ where(:name => 'David')
148
+ end
149
+ end
150
+
151
+ class ClassMethodReferencingScopeDeveloperCalledDavid < ActiveRecord::Base
152
+ self.table_name = 'developers'
153
+ scope :david, -> { where(:name => 'David') }
154
+
155
+ def self.default_scope
156
+ david
157
+ end
158
+ end
159
+
160
+ class LazyBlockReferencingScopeDeveloperCalledDavid < ActiveRecord::Base
161
+ self.table_name = 'developers'
162
+ scope :david, -> { where(:name => 'David') }
163
+ default_scope { david }
164
+ end
165
+
166
+ class DeveloperCalledJamis < ActiveRecord::Base
167
+ self.table_name = 'developers'
168
+
169
+ default_scope { where(:name => 'Jamis') }
170
+ scope :poor, -> { where('salary < 150000') }
171
+ scope :david, -> { where name: "David" }
172
+ scope :david2, -> { unscoped.where name: "David" }
173
+ end
174
+
175
+ class PoorDeveloperCalledJamis < ActiveRecord::Base
176
+ self.table_name = 'developers'
177
+
178
+ default_scope -> { where(:name => 'Jamis', :salary => 50000) }
179
+ end
180
+
181
+ class InheritedPoorDeveloperCalledJamis < DeveloperCalledJamis
182
+ self.table_name = 'developers'
183
+
184
+ default_scope -> { where(:salary => 50000) }
185
+ end
186
+
187
+ class MultiplePoorDeveloperCalledJamis < ActiveRecord::Base
188
+ self.table_name = 'developers'
189
+
190
+ default_scope -> { where(:name => 'Jamis') }
191
+ default_scope -> { where(:salary => 50000) }
192
+ end
193
+
194
+ module SalaryDefaultScope
195
+ extend ActiveSupport::Concern
196
+
197
+ included { default_scope { where(:salary => 50000) } }
198
+ end
199
+
200
+ class ModuleIncludedPoorDeveloperCalledJamis < DeveloperCalledJamis
201
+ self.table_name = 'developers'
202
+
203
+ include SalaryDefaultScope
204
+ end
205
+
206
+ class EagerDeveloperWithDefaultScope < ActiveRecord::Base
207
+ self.table_name = 'developers'
208
+ has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
209
+
210
+ default_scope { includes(:projects) }
211
+ end
212
+
213
+ class EagerDeveloperWithClassMethodDefaultScope < ActiveRecord::Base
214
+ self.table_name = 'developers'
215
+ has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
216
+
217
+ def self.default_scope
218
+ includes(:projects)
219
+ end
220
+ end
221
+
222
+ class EagerDeveloperWithLambdaDefaultScope < ActiveRecord::Base
223
+ self.table_name = 'developers'
224
+ has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
225
+
226
+ default_scope lambda { includes(:projects) }
227
+ end
228
+
229
+ class EagerDeveloperWithBlockDefaultScope < ActiveRecord::Base
230
+ self.table_name = 'developers'
231
+ has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
232
+
233
+ default_scope { includes(:projects) }
234
+ end
235
+
236
+ class EagerDeveloperWithCallableDefaultScope < ActiveRecord::Base
237
+ self.table_name = 'developers'
238
+ has_and_belongs_to_many :projects, -> { order('projects.id') }, :foreign_key => 'developer_id', :join_table => 'developers_projects'
239
+
240
+ default_scope OpenStruct.new(:call => includes(:projects))
241
+ end
242
+
243
+ class ThreadsafeDeveloper < ActiveRecord::Base
244
+ self.table_name = 'developers'
245
+
246
+ def self.default_scope
247
+ sleep 0.05 if Thread.current[:long_default_scope]
248
+ limit(1)
249
+ end
250
+ end
251
+
252
+ class CachedDeveloper < ActiveRecord::Base
253
+ self.table_name = "developers"
254
+ self.cache_timestamp_format = :number
255
+ end