ibm_db 3.0.0-x86-mingw32 → 3.0.1-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 (465) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +4 -0
  3. data/MANIFEST +14 -14
  4. data/README +225 -225
  5. data/ext/Makefile.nt32 +181 -181
  6. data/ext/Makefile.nt32.191 +212 -212
  7. data/ext/OLD/extconf.rb +264 -0
  8. data/ext/{extconf_MacOS.rb → OLD/extconf_MacOS.rb} +269 -269
  9. data/ext/extconf.rb +291 -264
  10. data/ext/ibm_db.c +2 -2
  11. data/ext/ruby_ibm_db.h +241 -241
  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 +4 -4
  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/lib/mswin32/ibm_db.rb +115 -115
  19. data/test/active_record/connection_adapters/fake_adapter.rb +46 -0
  20. data/test/assets/example.log +1 -0
  21. data/test/assets/flowers.jpg +0 -0
  22. data/test/assets/test.txt +1 -0
  23. data/test/cases/adapter_test.rb +261 -207
  24. data/test/cases/aggregations_test.rb +158 -0
  25. data/test/cases/ar_schema_test.rb +161 -0
  26. data/test/cases/associations/association_scope_test.rb +21 -0
  27. data/test/cases/associations/belongs_to_associations_test.rb +1029 -711
  28. data/test/cases/associations/callbacks_test.rb +192 -0
  29. data/test/cases/associations/cascaded_eager_loading_test.rb +188 -181
  30. data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +26 -0
  31. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -0
  32. data/test/cases/associations/eager_load_nested_include_test.rb +128 -0
  33. data/test/cases/associations/eager_singularization_test.rb +148 -0
  34. data/test/cases/associations/eager_test.rb +1411 -0
  35. data/test/cases/associations/extension_test.rb +82 -0
  36. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +932 -851
  37. data/test/cases/associations/has_many_associations_test.rb +2162 -0
  38. data/test/cases/associations/has_many_through_associations_test.rb +1204 -0
  39. data/test/cases/associations/has_one_associations_test.rb +610 -0
  40. data/test/cases/associations/has_one_through_associations_test.rb +380 -0
  41. data/test/cases/associations/inner_join_association_test.rb +139 -0
  42. data/test/cases/associations/inverse_associations_test.rb +693 -0
  43. data/test/cases/associations/join_model_test.rb +754 -743
  44. data/test/cases/associations/nested_through_associations_test.rb +579 -0
  45. data/test/cases/associations/required_test.rb +82 -0
  46. data/test/cases/associations_test.rb +380 -0
  47. data/test/cases/attribute_decorators_test.rb +125 -0
  48. data/test/cases/attribute_methods/read_test.rb +60 -0
  49. data/test/cases/attribute_methods/serialization_test.rb +29 -0
  50. data/test/cases/attribute_methods_test.rb +952 -822
  51. data/test/cases/attribute_set_test.rb +200 -0
  52. data/test/cases/attribute_test.rb +180 -0
  53. data/test/cases/attributes_test.rb +136 -0
  54. data/test/cases/autosave_association_test.rb +1595 -0
  55. data/test/cases/base_test.rb +1638 -2133
  56. data/test/cases/batches_test.rb +212 -0
  57. data/test/cases/binary_test.rb +52 -0
  58. data/test/cases/bind_parameter_test.rb +100 -0
  59. data/test/cases/calculations_test.rb +646 -482
  60. data/test/cases/callbacks_test.rb +543 -0
  61. data/test/cases/clone_test.rb +40 -0
  62. data/test/cases/coders/yaml_column_test.rb +63 -0
  63. data/test/cases/column_alias_test.rb +17 -0
  64. data/test/cases/column_definition_test.rb +123 -0
  65. data/test/cases/connection_adapters/adapter_leasing_test.rb +54 -0
  66. data/test/cases/connection_adapters/connection_handler_test.rb +53 -0
  67. data/test/cases/connection_adapters/connection_specification_test.rb +12 -0
  68. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +293 -0
  69. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +65 -0
  70. data/test/cases/connection_adapters/quoting_test.rb +13 -0
  71. data/test/cases/connection_adapters/schema_cache_test.rb +56 -0
  72. data/test/cases/connection_adapters/type_lookup_test.rb +110 -0
  73. data/test/cases/connection_management_test.rb +122 -0
  74. data/test/cases/connection_pool_test.rb +346 -0
  75. data/test/cases/connection_specification/resolver_test.rb +116 -0
  76. data/test/cases/core_test.rb +112 -0
  77. data/test/cases/counter_cache_test.rb +209 -0
  78. data/test/cases/custom_locking_test.rb +17 -0
  79. data/test/cases/database_statements_test.rb +19 -0
  80. data/test/cases/date_time_test.rb +61 -0
  81. data/test/cases/defaults_test.rb +223 -0
  82. data/test/cases/dirty_test.rb +775 -0
  83. data/test/cases/disconnected_test.rb +28 -0
  84. data/test/cases/dup_test.rb +157 -0
  85. data/test/cases/enum_test.rb +290 -0
  86. data/test/cases/explain_subscriber_test.rb +64 -0
  87. data/test/cases/explain_test.rb +76 -0
  88. data/test/cases/finder_respond_to_test.rb +60 -0
  89. data/test/cases/finder_test.rb +1166 -0
  90. data/test/cases/fixture_set/file_test.rb +138 -0
  91. data/test/cases/fixtures_test.rb +897 -0
  92. data/test/cases/forbidden_attributes_protection_test.rb +99 -0
  93. data/test/cases/habtm_destroy_order_test.rb +61 -0
  94. data/test/cases/helper.rb +210 -0
  95. data/test/cases/hot_compatibility_test.rb +54 -0
  96. data/test/cases/i18n_test.rb +45 -0
  97. data/test/cases/inheritance_test.rb +375 -0
  98. data/test/cases/integration_test.rb +139 -0
  99. data/test/cases/invalid_connection_test.rb +22 -0
  100. data/test/cases/invalid_date_test.rb +32 -0
  101. data/test/cases/invertible_migration_test.rb +295 -0
  102. data/test/cases/json_serialization_test.rb +302 -0
  103. data/test/cases/locking_test.rb +477 -0
  104. data/test/cases/log_subscriber_test.rb +136 -0
  105. data/test/cases/migration/change_schema_test - Copy.rb +448 -0
  106. data/test/cases/migration/change_schema_test.rb +472 -0
  107. data/test/cases/migration/change_table_test.rb +224 -0
  108. data/test/cases/migration/column_attributes_test.rb +192 -0
  109. data/test/cases/migration/column_positioning_test.rb +56 -0
  110. data/test/cases/migration/columns_test.rb +304 -0
  111. data/test/cases/migration/command_recorder_test.rb +305 -0
  112. data/test/cases/migration/create_join_table_test.rb +148 -0
  113. data/test/cases/migration/foreign_key_test - Changed.rb +325 -0
  114. data/test/cases/migration/foreign_key_test.rb +360 -0
  115. data/test/cases/migration/helper.rb +39 -0
  116. data/test/cases/migration/index_test.rb +216 -0
  117. data/test/cases/migration/logger_test.rb +36 -0
  118. data/test/cases/migration/pending_migrations_test.rb +53 -0
  119. data/test/cases/migration/references_foreign_key_test.rb +214 -0
  120. data/test/cases/migration/references_index_test.rb +101 -0
  121. data/test/cases/migration/references_statements_test.rb +116 -0
  122. data/test/cases/migration/rename_table_test.rb +93 -0
  123. data/test/cases/migration/table_and_index_test.rb +24 -0
  124. data/test/cases/migration_test.rb +959 -2408
  125. data/test/cases/migrator_test.rb +388 -0
  126. data/test/cases/mixin_test.rb +70 -0
  127. data/test/cases/modules_test.rb +173 -0
  128. data/test/cases/multiparameter_attributes_test.rb +350 -0
  129. data/test/cases/multiple_db_test.rb +115 -0
  130. data/test/cases/nested_attributes_test.rb +1057 -0
  131. data/test/cases/nested_attributes_with_callbacks_test.rb +144 -0
  132. data/test/cases/persistence_test.rb +909 -642
  133. data/test/cases/pooled_connections_test.rb +81 -0
  134. data/test/cases/primary_keys_test.rb +237 -0
  135. data/test/cases/query_cache_test.rb +326 -257
  136. data/test/cases/quoting_test.rb +156 -0
  137. data/test/cases/readonly_test.rb +118 -0
  138. data/test/cases/reaper_test.rb +85 -0
  139. data/test/cases/reflection_test.rb +454 -0
  140. data/test/cases/relation/delegation_test.rb +68 -0
  141. data/test/cases/relation/merging_test.rb +161 -0
  142. data/test/cases/relation/mutation_test.rb +165 -0
  143. data/test/cases/relation/predicate_builder_test.rb +14 -0
  144. data/test/cases/relation/where_chain_test.rb +181 -0
  145. data/test/cases/relation/where_test.rb +300 -0
  146. data/test/cases/relation/where_test2.rb +36 -0
  147. data/test/cases/relation_test.rb +297 -0
  148. data/test/cases/relations_test.rb +1815 -1182
  149. data/test/cases/reload_models_test.rb +22 -0
  150. data/test/cases/result_test.rb +80 -0
  151. data/test/cases/sanitize_test.rb +83 -0
  152. data/test/cases/schema_dumper_test.rb +463 -256
  153. data/test/cases/scoping/default_scoping_test.rb +454 -0
  154. data/test/cases/scoping/named_scoping_test.rb +524 -0
  155. data/test/cases/scoping/relation_scoping_test.rb +357 -0
  156. data/test/cases/serialization_test.rb +104 -0
  157. data/test/cases/serialized_attribute_test.rb +277 -0
  158. data/test/cases/statement_cache_test.rb +98 -0
  159. data/test/cases/store_test.rb +194 -0
  160. data/test/cases/tasks/database_tasks_test.rb +396 -0
  161. data/test/cases/tasks/mysql_rake_test.rb +311 -0
  162. data/test/cases/tasks/postgresql_rake_test.rb +245 -0
  163. data/test/cases/tasks/sqlite_rake_test.rb +193 -0
  164. data/test/cases/test_case.rb +123 -0
  165. data/test/cases/timestamp_test.rb +468 -0
  166. data/test/cases/transaction_callbacks_test.rb +452 -300
  167. data/test/cases/transaction_isolation_test.rb +106 -0
  168. data/test/cases/transactions_test.rb +817 -0
  169. data/test/cases/type/decimal_test.rb +51 -0
  170. data/test/cases/type/integer_test.rb +121 -0
  171. data/test/cases/type/string_test.rb +36 -0
  172. data/test/cases/type/type_map_test.rb +177 -0
  173. data/test/cases/type/unsigned_integer_test.rb +18 -0
  174. data/test/cases/types_test.rb +141 -0
  175. data/test/cases/unconnected_test.rb +33 -0
  176. data/test/cases/validations/association_validation_test.rb +86 -0
  177. data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -0
  178. data/test/cases/validations/i18n_validation_test.rb +90 -0
  179. data/test/cases/validations/length_validation_test.rb +47 -0
  180. data/test/cases/validations/presence_validation_test.rb +68 -0
  181. data/test/cases/validations/uniqueness_validation_test.rb +434 -299
  182. data/test/cases/validations_repair_helper.rb +23 -0
  183. data/test/cases/validations_test.rb +165 -0
  184. data/test/cases/view_test.rb +113 -0
  185. data/test/cases/xml_serialization_test.rb +457 -408
  186. data/test/cases/yaml_serialization_test.rb +86 -0
  187. data/test/config.rb +5 -0
  188. data/test/config.yml +154 -154
  189. data/test/connections/native_ibm_db/connection.rb +43 -43
  190. data/test/fixtures/accounts.yml +29 -0
  191. data/test/fixtures/admin/accounts.yml +2 -0
  192. data/test/fixtures/admin/randomly_named_a9.yml +7 -0
  193. data/test/fixtures/admin/randomly_named_b0.yml +7 -0
  194. data/test/fixtures/admin/users.yml +10 -0
  195. data/test/fixtures/all/admin +1 -0
  196. data/test/fixtures/all/developers.yml +0 -0
  197. data/test/fixtures/all/people.yml +0 -0
  198. data/test/fixtures/all/tasks.yml +0 -0
  199. data/test/fixtures/author_addresses.yml +18 -0
  200. data/test/fixtures/author_favorites.yml +4 -0
  201. data/test/fixtures/authors.yml +23 -0
  202. data/test/fixtures/binaries.yml +133 -0
  203. data/test/fixtures/books.yml +11 -0
  204. data/test/fixtures/bulbs.yml +5 -0
  205. data/test/fixtures/cars.yml +9 -0
  206. data/test/fixtures/categories.yml +19 -0
  207. data/test/fixtures/categories/special_categories.yml +9 -0
  208. data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
  209. data/test/fixtures/categories_ordered.yml +7 -0
  210. data/test/fixtures/categories_posts.yml +31 -0
  211. data/test/fixtures/categorizations.yml +23 -0
  212. data/test/fixtures/clubs.yml +8 -0
  213. data/test/fixtures/collections.yml +3 -0
  214. data/test/fixtures/colleges.yml +3 -0
  215. data/test/fixtures/comments.yml +65 -0
  216. data/test/fixtures/companies.yml +67 -0
  217. data/test/fixtures/computers.yml +10 -0
  218. data/test/fixtures/courses.yml +8 -0
  219. data/test/fixtures/customers.yml +26 -0
  220. data/test/fixtures/dashboards.yml +6 -0
  221. data/test/fixtures/developers.yml +22 -0
  222. data/test/fixtures/developers_projects.yml +17 -0
  223. data/test/fixtures/dog_lovers.yml +7 -0
  224. data/test/fixtures/dogs.yml +4 -0
  225. data/test/fixtures/doubloons.yml +3 -0
  226. data/test/fixtures/edges.yml +5 -0
  227. data/test/fixtures/entrants.yml +14 -0
  228. data/test/fixtures/essays.yml +6 -0
  229. data/test/fixtures/faces.yml +11 -0
  230. data/test/fixtures/fk_test_has_fk.yml +3 -0
  231. data/test/fixtures/fk_test_has_pk.yml +2 -0
  232. data/test/fixtures/friendships.yml +4 -0
  233. data/test/fixtures/funny_jokes.yml +10 -0
  234. data/test/fixtures/interests.yml +33 -0
  235. data/test/fixtures/items.yml +3 -0
  236. data/test/fixtures/jobs.yml +7 -0
  237. data/test/fixtures/legacy_things.yml +3 -0
  238. data/test/fixtures/mateys.yml +4 -0
  239. data/test/fixtures/member_details.yml +8 -0
  240. data/test/fixtures/member_types.yml +6 -0
  241. data/test/fixtures/members.yml +11 -0
  242. data/test/fixtures/memberships.yml +34 -0
  243. data/test/fixtures/men.yml +5 -0
  244. data/test/fixtures/minimalistics.yml +2 -0
  245. data/test/fixtures/minivans.yml +5 -0
  246. data/test/fixtures/mixed_case_monkeys.yml +6 -0
  247. data/test/fixtures/mixins.yml +29 -0
  248. data/test/fixtures/movies.yml +7 -0
  249. data/test/fixtures/naked/csv/accounts.csv +1 -0
  250. data/test/fixtures/naked/yml/accounts.yml +1 -0
  251. data/test/fixtures/naked/yml/companies.yml +1 -0
  252. data/test/fixtures/naked/yml/courses.yml +1 -0
  253. data/test/fixtures/organizations.yml +5 -0
  254. data/test/fixtures/other_topics.yml +42 -0
  255. data/test/fixtures/owners.yml +9 -0
  256. data/test/fixtures/parrots.yml +27 -0
  257. data/test/fixtures/parrots_pirates.yml +7 -0
  258. data/test/fixtures/people.yml +24 -0
  259. data/test/fixtures/peoples_treasures.yml +3 -0
  260. data/test/fixtures/pets.yml +19 -0
  261. data/test/fixtures/pirates.yml +12 -0
  262. data/test/fixtures/posts.yml +80 -0
  263. data/test/fixtures/price_estimates.yml +7 -0
  264. data/test/fixtures/products.yml +4 -0
  265. data/test/fixtures/projects.yml +7 -0
  266. data/test/fixtures/randomly_named_a9.yml +7 -0
  267. data/test/fixtures/ratings.yml +14 -0
  268. data/test/fixtures/readers.yml +11 -0
  269. data/test/fixtures/references.yml +17 -0
  270. data/test/fixtures/reserved_words/distinct.yml +5 -0
  271. data/test/fixtures/reserved_words/distinct_select.yml +11 -0
  272. data/test/fixtures/reserved_words/group.yml +14 -0
  273. data/test/fixtures/reserved_words/select.yml +8 -0
  274. data/test/fixtures/reserved_words/values.yml +7 -0
  275. data/test/fixtures/ships.yml +6 -0
  276. data/test/fixtures/speedometers.yml +8 -0
  277. data/test/fixtures/sponsors.yml +12 -0
  278. data/test/fixtures/string_key_objects.yml +7 -0
  279. data/test/fixtures/subscribers.yml +11 -0
  280. data/test/fixtures/subscriptions.yml +12 -0
  281. data/test/fixtures/taggings.yml +78 -0
  282. data/test/fixtures/tags.yml +11 -0
  283. data/test/fixtures/tasks.yml +7 -0
  284. data/test/fixtures/teapots.yml +3 -0
  285. data/test/fixtures/to_be_linked/accounts.yml +2 -0
  286. data/test/fixtures/to_be_linked/users.yml +10 -0
  287. data/test/fixtures/topics.yml +49 -0
  288. data/test/fixtures/toys.yml +14 -0
  289. data/test/fixtures/traffic_lights.yml +10 -0
  290. data/test/fixtures/treasures.yml +10 -0
  291. data/test/fixtures/uuid_children.yml +3 -0
  292. data/test/fixtures/uuid_parents.yml +2 -0
  293. data/test/fixtures/variants.yml +4 -0
  294. data/test/fixtures/vegetables.yml +20 -0
  295. data/test/fixtures/vertices.yml +4 -0
  296. data/test/fixtures/warehouse_things.yml +3 -0
  297. data/test/fixtures/zines.yml +5 -0
  298. data/test/ibm_db_test.rb +24 -24
  299. data/test/migrations/10_urban/9_add_expressions.rb +11 -0
  300. data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -0
  301. data/test/migrations/magic/1_currencies_have_symbols.rb +12 -0
  302. data/test/migrations/missing/1000_people_have_middle_names.rb +9 -0
  303. data/test/migrations/missing/1_people_have_last_names.rb +9 -0
  304. data/test/migrations/missing/3_we_need_reminders.rb +12 -0
  305. data/test/migrations/missing/4_innocent_jointable.rb +12 -0
  306. data/test/migrations/rename/1_we_need_things.rb +11 -0
  307. data/test/migrations/rename/2_rename_things.rb +9 -0
  308. data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -0
  309. data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -0
  310. data/test/migrations/to_copy2/1_create_articles.rb +7 -0
  311. data/test/migrations/to_copy2/2_create_comments.rb +7 -0
  312. data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -0
  313. data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -0
  314. data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -0
  315. data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -0
  316. data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -0
  317. data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -0
  318. data/test/migrations/valid/2_we_need_reminders.rb +12 -0
  319. data/test/migrations/valid/3_innocent_jointable.rb +12 -0
  320. data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -0
  321. data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +12 -0
  322. data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +12 -0
  323. data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -0
  324. data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -0
  325. data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -0
  326. data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -0
  327. data/test/models/admin.rb +5 -0
  328. data/test/models/admin/account.rb +3 -0
  329. data/test/models/admin/randomly_named_c1.rb +3 -0
  330. data/test/models/admin/user.rb +40 -0
  331. data/test/models/aircraft.rb +4 -0
  332. data/test/models/arunit2_model.rb +3 -0
  333. data/test/models/author.rb +212 -0
  334. data/test/models/auto_id.rb +4 -0
  335. data/test/models/autoloadable/extra_firm.rb +2 -0
  336. data/test/models/binary.rb +2 -0
  337. data/test/models/bird.rb +12 -0
  338. data/test/models/book.rb +18 -0
  339. data/test/models/boolean.rb +2 -0
  340. data/test/models/bulb.rb +51 -0
  341. data/test/models/cake_designer.rb +3 -0
  342. data/test/models/car.rb +26 -0
  343. data/test/models/carrier.rb +2 -0
  344. data/test/models/categorization.rb +19 -0
  345. data/test/models/category.rb +35 -0
  346. data/test/models/chef.rb +3 -0
  347. data/test/models/citation.rb +3 -0
  348. data/test/models/club.rb +23 -0
  349. data/test/models/college.rb +10 -0
  350. data/test/models/column.rb +3 -0
  351. data/test/models/column_name.rb +3 -0
  352. data/test/models/comment.rb +64 -0
  353. data/test/models/company.rb +225 -0
  354. data/test/models/company_in_module.rb +98 -0
  355. data/test/models/computer.rb +3 -0
  356. data/test/models/contact.rb +41 -0
  357. data/test/models/contract.rb +20 -0
  358. data/test/models/country.rb +7 -0
  359. data/test/models/course.rb +6 -0
  360. data/test/models/customer.rb +77 -0
  361. data/test/models/customer_carrier.rb +14 -0
  362. data/test/models/dashboard.rb +3 -0
  363. data/test/models/default.rb +2 -0
  364. data/test/models/department.rb +4 -0
  365. data/test/models/developer.rb +252 -0
  366. data/test/models/dog.rb +5 -0
  367. data/test/models/dog_lover.rb +5 -0
  368. data/test/models/doubloon.rb +12 -0
  369. data/test/models/drink_designer.rb +3 -0
  370. data/test/models/edge.rb +5 -0
  371. data/test/models/electron.rb +5 -0
  372. data/test/models/engine.rb +4 -0
  373. data/test/models/entrant.rb +3 -0
  374. data/test/models/essay.rb +5 -0
  375. data/test/models/event.rb +3 -0
  376. data/test/models/eye.rb +37 -0
  377. data/test/models/face.rb +9 -0
  378. data/test/models/friendship.rb +6 -0
  379. data/test/models/guid.rb +2 -0
  380. data/test/models/hotel.rb +6 -0
  381. data/test/models/image.rb +3 -0
  382. data/test/models/interest.rb +5 -0
  383. data/test/models/invoice.rb +4 -0
  384. data/test/models/item.rb +7 -0
  385. data/test/models/job.rb +7 -0
  386. data/test/models/joke.rb +7 -0
  387. data/test/models/keyboard.rb +3 -0
  388. data/test/models/legacy_thing.rb +3 -0
  389. data/test/models/lesson.rb +11 -0
  390. data/test/models/line_item.rb +3 -0
  391. data/test/models/liquid.rb +4 -0
  392. data/test/models/man.rb +11 -0
  393. data/test/models/matey.rb +4 -0
  394. data/test/models/member.rb +41 -0
  395. data/test/models/member_detail.rb +7 -0
  396. data/test/models/member_type.rb +3 -0
  397. data/test/models/membership.rb +35 -0
  398. data/test/models/minimalistic.rb +2 -0
  399. data/test/models/minivan.rb +9 -0
  400. data/test/models/mixed_case_monkey.rb +3 -0
  401. data/test/models/molecule.rb +6 -0
  402. data/test/models/movie.rb +5 -0
  403. data/test/models/order.rb +4 -0
  404. data/test/models/organization.rb +14 -0
  405. data/test/models/owner.rb +34 -0
  406. data/test/models/parrot.rb +29 -0
  407. data/test/models/person.rb +143 -0
  408. data/test/models/personal_legacy_thing.rb +4 -0
  409. data/test/models/pet.rb +15 -0
  410. data/test/models/pirate.rb +92 -0
  411. data/test/models/possession.rb +3 -0
  412. data/test/models/post.rb +264 -0
  413. data/test/models/price_estimate.rb +4 -0
  414. data/test/models/professor.rb +5 -0
  415. data/test/models/project.rb +29 -0
  416. data/test/models/publisher.rb +2 -0
  417. data/test/models/publisher/article.rb +4 -0
  418. data/test/models/publisher/magazine.rb +3 -0
  419. data/test/models/randomly_named_c1.rb +3 -0
  420. data/test/models/rating.rb +4 -0
  421. data/test/models/reader.rb +23 -0
  422. data/test/models/record.rb +2 -0
  423. data/test/models/reference.rb +22 -0
  424. data/test/models/reply.rb +61 -0
  425. data/test/models/ship.rb +33 -0
  426. data/test/models/ship_part.rb +8 -0
  427. data/test/models/shop.rb +17 -0
  428. data/test/models/shop_account.rb +6 -0
  429. data/test/models/speedometer.rb +6 -0
  430. data/test/models/sponsor.rb +7 -0
  431. data/test/models/string_key_object.rb +3 -0
  432. data/test/models/student.rb +4 -0
  433. data/test/models/subject.rb +16 -0
  434. data/test/models/subscriber.rb +8 -0
  435. data/test/models/subscription.rb +4 -0
  436. data/test/models/tag.rb +7 -0
  437. data/test/models/tagging.rb +13 -0
  438. data/test/models/task.rb +5 -0
  439. data/test/models/topic.rb +124 -0
  440. data/test/models/toy.rb +6 -0
  441. data/test/models/traffic_light.rb +4 -0
  442. data/test/models/treasure.rb +14 -0
  443. data/test/models/treaty.rb +7 -0
  444. data/test/models/tyre.rb +11 -0
  445. data/test/models/uuid_child.rb +3 -0
  446. data/test/models/uuid_parent.rb +3 -0
  447. data/test/models/vegetables.rb +24 -0
  448. data/test/models/vehicle.rb +7 -0
  449. data/test/models/vertex.rb +9 -0
  450. data/test/models/warehouse_thing.rb +5 -5
  451. data/test/models/wheel.rb +3 -0
  452. data/test/models/without_table.rb +3 -0
  453. data/test/models/zine.rb +3 -0
  454. data/test/schema/mysql2_specific_schema.rb +58 -0
  455. data/test/schema/mysql_specific_schema.rb +70 -0
  456. data/test/schema/oracle_specific_schema.rb +43 -0
  457. data/test/schema/postgresql_specific_schema.rb +202 -0
  458. data/test/schema/schema.rb +938 -751
  459. data/test/schema/sqlite_specific_schema.rb +22 -0
  460. data/test/support/config.rb +43 -0
  461. data/test/support/connection.rb +22 -0
  462. data/test/support/connection_helper.rb +14 -0
  463. data/test/support/ddl_helper.rb +8 -0
  464. data/test/support/schema_dumping_helper.rb +20 -0
  465. metadata +444 -18
@@ -0,0 +1,6 @@
1
+ class Toy < ActiveRecord::Base
2
+ self.primary_key = :toy_id
3
+ belongs_to :pet
4
+
5
+ scope :with_pet, -> { joins(:pet) }
6
+ end
@@ -0,0 +1,4 @@
1
+ class TrafficLight < ActiveRecord::Base
2
+ serialize :state, Array
3
+ serialize :long_state, Array
4
+ end
@@ -0,0 +1,14 @@
1
+ class Treasure < ActiveRecord::Base
2
+ has_and_belongs_to_many :parrots
3
+ belongs_to :looter, :polymorphic => true
4
+ # No counter_cache option given
5
+ belongs_to :ship
6
+
7
+ has_many :price_estimates, :as => :estimate_of
8
+ has_and_belongs_to_many :rich_people, join_table: 'peoples_treasures', validate: false
9
+
10
+ accepts_nested_attributes_for :looter
11
+ end
12
+
13
+ class HiddenTreasure < Treasure
14
+ end
@@ -0,0 +1,7 @@
1
+ class Treaty < ActiveRecord::Base
2
+
3
+ self.primary_key = :treaty_id
4
+
5
+ has_and_belongs_to_many :countries
6
+
7
+ end
@@ -0,0 +1,11 @@
1
+ class Tyre < ActiveRecord::Base
2
+ belongs_to :car
3
+
4
+ def self.custom_find(id)
5
+ find(id)
6
+ end
7
+
8
+ def self.custom_find_by(*args)
9
+ find_by(*args)
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ class UuidChild < ActiveRecord::Base
2
+ belongs_to :uuid_parent
3
+ end
@@ -0,0 +1,3 @@
1
+ class UuidParent < ActiveRecord::Base
2
+ has_many :uuid_children
3
+ end
@@ -0,0 +1,24 @@
1
+ class Vegetable < ActiveRecord::Base
2
+
3
+ validates_presence_of :name
4
+
5
+ def self.inheritance_column
6
+ 'custom_type'
7
+ end
8
+ end
9
+
10
+ class Cucumber < Vegetable
11
+ end
12
+
13
+ class Cabbage < Vegetable
14
+ end
15
+
16
+ class GreenCabbage < Cabbage
17
+ end
18
+
19
+ class KingCole < GreenCabbage
20
+ end
21
+
22
+ class RedCabbage < Cabbage
23
+ belongs_to :seller, :class_name => 'Company'
24
+ end
@@ -0,0 +1,7 @@
1
+ class Vehicle < ActiveRecord::Base
2
+ self.abstract_class = true
3
+ default_scope -> { where("tires_count IS NOT NULL") }
4
+ end
5
+
6
+ class Bus < Vehicle
7
+ end
@@ -0,0 +1,9 @@
1
+ # This class models a vertex in a directed graph.
2
+ class Vertex < ActiveRecord::Base
3
+ has_many :sink_edges, :class_name => 'Edge', :foreign_key => 'source_id'
4
+ has_many :sinks, :through => :sink_edges
5
+
6
+ has_and_belongs_to_many :sources,
7
+ :class_name => 'Vertex', :join_table => 'edges',
8
+ :foreign_key => 'sink_id', :association_foreign_key => 'source_id'
9
+ end
@@ -1,5 +1,5 @@
1
- class WarehouseThing < ActiveRecord::Base
2
- set_table_name "warehouse_things"
3
-
4
- validates_uniqueness_of :value
5
- end
1
+ class WarehouseThing < ActiveRecord::Base
2
+ self.table_name = "warehouse_things"
3
+
4
+ validates_uniqueness_of :value
5
+ end
@@ -0,0 +1,3 @@
1
+ class Wheel < ActiveRecord::Base
2
+ belongs_to :wheelable, :polymorphic => true, :counter_cache => true
3
+ end
@@ -0,0 +1,3 @@
1
+ class WithoutTable < ActiveRecord::Base
2
+ default_scope -> { where(:published => true) }
3
+ end
@@ -0,0 +1,3 @@
1
+ class Zine < ActiveRecord::Base
2
+ has_many :interests, :inverse_of => :zine
3
+ end
@@ -0,0 +1,58 @@
1
+ ActiveRecord::Schema.define do
2
+ create_table :binary_fields, force: true do |t|
3
+ t.binary :var_binary, limit: 255
4
+ t.binary :var_binary_large, limit: 4095
5
+ t.column :tiny_blob, 'tinyblob', limit: 255
6
+ t.binary :normal_blob, limit: 65535
7
+ t.binary :medium_blob, limit: 16777215
8
+ t.binary :long_blob, limit: 2147483647
9
+ t.text :tiny_text, limit: 255
10
+ t.text :normal_text, limit: 65535
11
+ t.text :medium_text, limit: 16777215
12
+ t.text :long_text, limit: 2147483647
13
+ end
14
+
15
+ add_index :binary_fields, :var_binary
16
+
17
+ create_table :key_tests, force: true, :options => 'ENGINE=MyISAM' do |t|
18
+ t.string :awesome
19
+ t.string :pizza
20
+ t.string :snacks
21
+ end
22
+
23
+ add_index :key_tests, :awesome, :type => :fulltext, :name => 'index_key_tests_on_awesome'
24
+ add_index :key_tests, :pizza, :using => :btree, :name => 'index_key_tests_on_pizza'
25
+ add_index :key_tests, :snacks, :name => 'index_key_tests_on_snack'
26
+
27
+ ActiveRecord::Base.connection.execute <<-SQL
28
+ DROP PROCEDURE IF EXISTS ten;
29
+ SQL
30
+
31
+ ActiveRecord::Base.connection.execute <<-SQL
32
+ CREATE PROCEDURE ten() SQL SECURITY INVOKER
33
+ BEGIN
34
+ select 10;
35
+ END
36
+ SQL
37
+
38
+ ActiveRecord::Base.connection.execute <<-SQL
39
+ DROP TABLE IF EXISTS collation_tests;
40
+ SQL
41
+
42
+ ActiveRecord::Base.connection.execute <<-SQL
43
+ CREATE TABLE collation_tests (
44
+ string_cs_column VARCHAR(1) COLLATE utf8_bin,
45
+ string_ci_column VARCHAR(1) COLLATE utf8_general_ci
46
+ ) CHARACTER SET utf8 COLLATE utf8_general_ci
47
+ SQL
48
+
49
+ ActiveRecord::Base.connection.execute <<-SQL
50
+ DROP TABLE IF EXISTS enum_tests;
51
+ SQL
52
+
53
+ ActiveRecord::Base.connection.execute <<-SQL
54
+ CREATE TABLE enum_tests (
55
+ enum_column ENUM('text','blob','tiny','medium','long')
56
+ )
57
+ SQL
58
+ end
@@ -0,0 +1,70 @@
1
+ ActiveRecord::Schema.define do
2
+ create_table :binary_fields, force: true do |t|
3
+ t.binary :var_binary, limit: 255
4
+ t.binary :var_binary_large, limit: 4095
5
+ t.column :tiny_blob, 'tinyblob', limit: 255
6
+ t.binary :normal_blob, limit: 65535
7
+ t.binary :medium_blob, limit: 16777215
8
+ t.binary :long_blob, limit: 2147483647
9
+ t.text :tiny_text, limit: 255
10
+ t.text :normal_text, limit: 65535
11
+ t.text :medium_text, limit: 16777215
12
+ t.text :long_text, limit: 2147483647
13
+ end
14
+
15
+ add_index :binary_fields, :var_binary
16
+
17
+ create_table :key_tests, force: true, :options => 'ENGINE=MyISAM' do |t|
18
+ t.string :awesome
19
+ t.string :pizza
20
+ t.string :snacks
21
+ end
22
+
23
+ add_index :key_tests, :awesome, :type => :fulltext, :name => 'index_key_tests_on_awesome'
24
+ add_index :key_tests, :pizza, :using => :btree, :name => 'index_key_tests_on_pizza'
25
+ add_index :key_tests, :snacks, :name => 'index_key_tests_on_snack'
26
+
27
+ ActiveRecord::Base.connection.execute <<-SQL
28
+ DROP PROCEDURE IF EXISTS ten;
29
+ SQL
30
+
31
+ ActiveRecord::Base.connection.execute <<-SQL
32
+ CREATE PROCEDURE ten() SQL SECURITY INVOKER
33
+ BEGIN
34
+ select 10;
35
+ END
36
+ SQL
37
+
38
+ ActiveRecord::Base.connection.execute <<-SQL
39
+ DROP PROCEDURE IF EXISTS topics;
40
+ SQL
41
+
42
+ ActiveRecord::Base.connection.execute <<-SQL
43
+ CREATE PROCEDURE topics() SQL SECURITY INVOKER
44
+ BEGIN
45
+ select * from topics limit 1;
46
+ END
47
+ SQL
48
+
49
+ ActiveRecord::Base.connection.execute <<-SQL
50
+ DROP TABLE IF EXISTS collation_tests;
51
+ SQL
52
+
53
+ ActiveRecord::Base.connection.execute <<-SQL
54
+ CREATE TABLE collation_tests (
55
+ string_cs_column VARCHAR(1) COLLATE utf8_bin,
56
+ string_ci_column VARCHAR(1) COLLATE utf8_general_ci
57
+ ) CHARACTER SET utf8 COLLATE utf8_general_ci
58
+ SQL
59
+
60
+ ActiveRecord::Base.connection.execute <<-SQL
61
+ DROP TABLE IF EXISTS enum_tests;
62
+ SQL
63
+
64
+ ActiveRecord::Base.connection.execute <<-SQL
65
+ CREATE TABLE enum_tests (
66
+ enum_column ENUM('text','blob','tiny','medium','long')
67
+ )
68
+ SQL
69
+
70
+ end
@@ -0,0 +1,43 @@
1
+ ActiveRecord::Schema.define do
2
+
3
+ execute "drop table test_oracle_defaults" rescue nil
4
+ execute "drop sequence test_oracle_defaults_seq" rescue nil
5
+ execute "drop sequence companies_nonstd_seq" rescue nil
6
+ execute "drop table defaults" rescue nil
7
+ execute "drop sequence defaults_seq" rescue nil
8
+
9
+ execute <<-SQL
10
+ create table test_oracle_defaults (
11
+ id integer not null primary key,
12
+ test_char char(1) default 'X' not null,
13
+ test_string varchar2(20) default 'hello' not null,
14
+ test_int integer default 3 not null
15
+ )
16
+ SQL
17
+
18
+ execute <<-SQL
19
+ create sequence test_oracle_defaults_seq minvalue 10000
20
+ SQL
21
+
22
+ execute "create sequence companies_nonstd_seq minvalue 10000"
23
+
24
+ execute <<-SQL
25
+ CREATE TABLE defaults (
26
+ id integer not null,
27
+ modified_date date default sysdate,
28
+ modified_date_function date default sysdate,
29
+ fixed_date date default to_date('2004-01-01', 'YYYY-MM-DD'),
30
+ modified_time date default sysdate,
31
+ modified_time_function date default sysdate,
32
+ fixed_time date default TO_DATE('2004-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),
33
+ char1 varchar2(1) default 'Y',
34
+ char2 varchar2(50) default 'a varchar field',
35
+ char3 clob default 'a text field',
36
+ positive_integer integer default 1,
37
+ negative_integer integer default -1,
38
+ decimal_number number(3,2) default 2.78
39
+ )
40
+ SQL
41
+ execute "create sequence defaults_seq minvalue 10000"
42
+
43
+ end
@@ -0,0 +1,202 @@
1
+ ActiveRecord::Schema.define do
2
+
3
+ %w(postgresql_tsvectors postgresql_hstores postgresql_arrays postgresql_moneys postgresql_numbers postgresql_times
4
+ postgresql_network_addresses postgresql_uuids postgresql_ltrees postgresql_oids postgresql_xml_data_type defaults
5
+ geometrics postgresql_timestamp_with_zones postgresql_partitioned_table postgresql_partitioned_table_parent
6
+ postgresql_citext).each do |table_name|
7
+ execute "DROP TABLE IF EXISTS #{quote_table_name table_name}"
8
+ end
9
+
10
+ execute 'DROP SEQUENCE IF EXISTS companies_nonstd_seq CASCADE'
11
+ execute 'CREATE SEQUENCE companies_nonstd_seq START 101 OWNED BY companies.id'
12
+ execute "ALTER TABLE companies ALTER COLUMN id SET DEFAULT nextval('companies_nonstd_seq')"
13
+ execute 'DROP SEQUENCE IF EXISTS companies_id_seq'
14
+
15
+ execute 'DROP FUNCTION IF EXISTS partitioned_insert_trigger()'
16
+
17
+ execute "DROP SCHEMA IF EXISTS schema_1 CASCADE"
18
+
19
+ %w(accounts_id_seq developers_id_seq projects_id_seq topics_id_seq customers_id_seq orders_id_seq).each do |seq_name|
20
+ execute "SELECT setval('#{seq_name}', 100)"
21
+ end
22
+
23
+ execute <<_SQL
24
+ CREATE TABLE defaults (
25
+ id serial primary key,
26
+ modified_date date default CURRENT_DATE,
27
+ modified_date_function date default now(),
28
+ fixed_date date default '2004-01-01',
29
+ modified_time timestamp default CURRENT_TIMESTAMP,
30
+ modified_time_function timestamp default now(),
31
+ fixed_time timestamp default '2004-01-01 00:00:00.000000-00',
32
+ char1 char(1) default 'Y',
33
+ char2 character varying(50) default 'a varchar field',
34
+ char3 text default 'a text field',
35
+ positive_integer integer default 1,
36
+ negative_integer integer default -1,
37
+ bigint_default bigint default 0::bigint,
38
+ decimal_number decimal(3,2) default 2.78,
39
+ multiline_default text DEFAULT '--- []
40
+
41
+ '::text
42
+ );
43
+ _SQL
44
+
45
+ execute "CREATE SCHEMA schema_1"
46
+ execute "CREATE DOMAIN schema_1.text AS text"
47
+ execute "CREATE DOMAIN schema_1.varchar AS varchar"
48
+ execute "CREATE DOMAIN schema_1.bpchar AS bpchar"
49
+
50
+ execute <<_SQL
51
+ CREATE TABLE geometrics (
52
+ id serial primary key,
53
+ a_point point,
54
+ -- a_line line, (the line type is currently not implemented in postgresql)
55
+ a_line_segment lseg,
56
+ a_box box,
57
+ a_path path,
58
+ a_polygon polygon,
59
+ a_circle circle
60
+ );
61
+ _SQL
62
+
63
+ execute <<_SQL
64
+ CREATE TABLE postgresql_arrays (
65
+ id SERIAL PRIMARY KEY,
66
+ commission_by_quarter INTEGER[],
67
+ nicknames TEXT[]
68
+ );
69
+ _SQL
70
+
71
+ execute <<_SQL
72
+ CREATE TABLE postgresql_uuids (
73
+ id SERIAL PRIMARY KEY,
74
+ guid uuid,
75
+ compact_guid uuid
76
+ );
77
+ _SQL
78
+
79
+ execute <<_SQL
80
+ CREATE TABLE postgresql_tsvectors (
81
+ id SERIAL PRIMARY KEY,
82
+ text_vector tsvector
83
+ );
84
+ _SQL
85
+
86
+ if 't' == select_value("select 'hstore'=ANY(select typname from pg_type)")
87
+ execute <<_SQL
88
+ CREATE TABLE postgresql_hstores (
89
+ id SERIAL PRIMARY KEY,
90
+ hash_store hstore default ''::hstore
91
+ );
92
+ _SQL
93
+ end
94
+
95
+ if 't' == select_value("select 'ltree'=ANY(select typname from pg_type)")
96
+ execute <<_SQL
97
+ CREATE TABLE postgresql_ltrees (
98
+ id SERIAL PRIMARY KEY,
99
+ path ltree
100
+ );
101
+ _SQL
102
+ end
103
+
104
+ if 't' == select_value("select 'citext'=ANY(select typname from pg_type)")
105
+ execute <<_SQL
106
+ CREATE TABLE postgresql_citext (
107
+ id SERIAL PRIMARY KEY,
108
+ text_citext citext default ''::citext
109
+ );
110
+ _SQL
111
+ end
112
+
113
+ execute <<_SQL
114
+ CREATE TABLE postgresql_numbers (
115
+ id SERIAL PRIMARY KEY,
116
+ single REAL,
117
+ double DOUBLE PRECISION
118
+ );
119
+ _SQL
120
+
121
+ execute <<_SQL
122
+ CREATE TABLE postgresql_times (
123
+ id SERIAL PRIMARY KEY,
124
+ time_interval INTERVAL,
125
+ scaled_time_interval INTERVAL(6)
126
+ );
127
+ _SQL
128
+
129
+ execute <<_SQL
130
+ CREATE TABLE postgresql_network_addresses (
131
+ id SERIAL PRIMARY KEY,
132
+ cidr_address CIDR default '192.168.1.0/24',
133
+ inet_address INET default '192.168.1.1',
134
+ mac_address MACADDR default 'ff:ff:ff:ff:ff:ff'
135
+ );
136
+ _SQL
137
+
138
+ execute <<_SQL
139
+ CREATE TABLE postgresql_oids (
140
+ id SERIAL PRIMARY KEY,
141
+ obj_id OID
142
+ );
143
+ _SQL
144
+
145
+ execute <<_SQL
146
+ CREATE TABLE postgresql_timestamp_with_zones (
147
+ id SERIAL PRIMARY KEY,
148
+ time TIMESTAMP WITH TIME ZONE
149
+ );
150
+ _SQL
151
+
152
+ begin
153
+ execute <<_SQL
154
+ CREATE TABLE postgresql_partitioned_table_parent (
155
+ id SERIAL PRIMARY KEY,
156
+ number integer
157
+ );
158
+ CREATE TABLE postgresql_partitioned_table ( )
159
+ INHERITS (postgresql_partitioned_table_parent);
160
+
161
+ CREATE OR REPLACE FUNCTION partitioned_insert_trigger()
162
+ RETURNS TRIGGER AS $$
163
+ BEGIN
164
+ INSERT INTO postgresql_partitioned_table VALUES (NEW.*);
165
+ RETURN NULL;
166
+ END;
167
+ $$
168
+ LANGUAGE plpgsql;
169
+
170
+ CREATE TRIGGER insert_partitioning_trigger
171
+ BEFORE INSERT ON postgresql_partitioned_table_parent
172
+ FOR EACH ROW EXECUTE PROCEDURE partitioned_insert_trigger();
173
+ _SQL
174
+ rescue ActiveRecord::StatementInvalid => e
175
+ if e.message =~ /language "plpgsql" does not exist/
176
+ execute "CREATE LANGUAGE 'plpgsql';"
177
+ retry
178
+ else
179
+ raise e
180
+ end
181
+ end
182
+
183
+ begin
184
+ execute <<_SQL
185
+ CREATE TABLE postgresql_xml_data_type (
186
+ id SERIAL PRIMARY KEY,
187
+ data xml
188
+ );
189
+ _SQL
190
+ rescue #This version of PostgreSQL either has no XML support or is was not compiled with XML support: skipping table
191
+ end
192
+
193
+ # This table is to verify if the :limit option is being ignored for text and binary columns
194
+ create_table :limitless_fields, force: true do |t|
195
+ t.binary :binary, limit: 100_000
196
+ t.text :text, limit: 100_000
197
+ end
198
+
199
+ create_table :bigint_array, force: true do |t|
200
+ t.integer :big_int_data_points, limit: 8, array: true
201
+ end
202
+ end