ibm_db 5.6.1-arm64-darwin-24

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 (753) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +299 -0
  3. data/LICENSE +55 -0
  4. data/MANIFEST +14 -0
  5. data/ParameterizedQueries README +39 -0
  6. data/README +210 -0
  7. data/ext/Makefile +270 -0
  8. data/ext/Makefile.nt32 +181 -0
  9. data/ext/Makefile.nt32.191 +212 -0
  10. data/ext/extconf.rb +320 -0
  11. data/ext/gil_release_version.h +3 -0
  12. data/ext/ibm_db.bundle +0 -0
  13. data/ext/ibm_db.c +11865 -0
  14. data/ext/ibm_db.o +0 -0
  15. data/ext/mkmf.log +98 -0
  16. data/ext/ruby_ibm_db.h +241 -0
  17. data/ext/ruby_ibm_db_cli.c +867 -0
  18. data/ext/ruby_ibm_db_cli.h +508 -0
  19. data/ext/ruby_ibm_db_cli.o +0 -0
  20. data/ext/unicode_support_version.h +3 -0
  21. data/init.rb +42 -0
  22. data/lib/IBM_DB.rb +27 -0
  23. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +4407 -0
  24. data/lib/active_record/connection_adapters/ibm_db_pstmt.rb +1965 -0
  25. data/lib/active_record/connection_adapters/ibmdb_adapter.rb +5 -0
  26. data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -0
  27. data/lib/ibm_db.bundle +0 -0
  28. data/test/active_record/connection_adapters/fake_adapter.rb +52 -0
  29. data/test/activejob/destroy_association_async_test.rb +305 -0
  30. data/test/activejob/destroy_async_job_not_present_test.rb +31 -0
  31. data/test/activejob/helper.rb +15 -0
  32. data/test/assets/example.log +1 -0
  33. data/test/assets/flowers.jpg +0 -0
  34. data/test/assets/schema_dump_5_1.yml +345 -0
  35. data/test/assets/test.txt +1 -0
  36. data/test/cases/adapter_prevent_writes_test.rb +334 -0
  37. data/test/cases/adapter_test.rb +565 -0
  38. data/test/cases/adapters/mysql2/active_schema_test.rb +203 -0
  39. data/test/cases/adapters/mysql2/auto_increment_test.rb +34 -0
  40. data/test/cases/adapters/mysql2/bind_parameter_test.rb +52 -0
  41. data/test/cases/adapters/mysql2/boolean_test.rb +102 -0
  42. data/test/cases/adapters/mysql2/case_sensitivity_test.rb +65 -0
  43. data/test/cases/adapters/mysql2/charset_collation_test.rb +57 -0
  44. data/test/cases/adapters/mysql2/connection_test.rb +208 -0
  45. data/test/cases/adapters/mysql2/count_deleted_rows_with_lock_test.rb +28 -0
  46. data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +49 -0
  47. data/test/cases/adapters/mysql2/enum_test.rb +47 -0
  48. data/test/cases/adapters/mysql2/explain_test.rb +23 -0
  49. data/test/cases/adapters/mysql2/json_test.rb +24 -0
  50. data/test/cases/adapters/mysql2/mysql2_adapter_prevent_writes_test.rb +208 -0
  51. data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +238 -0
  52. data/test/cases/adapters/mysql2/nested_deadlock_test.rb +75 -0
  53. data/test/cases/adapters/mysql2/optimizer_hints_test.rb +69 -0
  54. data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -0
  55. data/test/cases/adapters/mysql2/schema_migrations_test.rb +64 -0
  56. data/test/cases/adapters/mysql2/schema_test.rb +128 -0
  57. data/test/cases/adapters/mysql2/set_test.rb +32 -0
  58. data/test/cases/adapters/mysql2/sp_test.rb +38 -0
  59. data/test/cases/adapters/mysql2/sql_types_test.rb +16 -0
  60. data/test/cases/adapters/mysql2/table_options_test.rb +125 -0
  61. data/test/cases/adapters/mysql2/transaction_test.rb +151 -0
  62. data/test/cases/adapters/mysql2/unsigned_type_test.rb +68 -0
  63. data/test/cases/adapters/mysql2/virtual_column_test.rb +66 -0
  64. data/test/cases/adapters/postgresql/active_schema_test.rb +113 -0
  65. data/test/cases/adapters/postgresql/array_test.rb +394 -0
  66. data/test/cases/adapters/postgresql/bit_string_test.rb +84 -0
  67. data/test/cases/adapters/postgresql/bytea_test.rb +135 -0
  68. data/test/cases/adapters/postgresql/case_insensitive_test.rb +27 -0
  69. data/test/cases/adapters/postgresql/change_schema_test.rb +40 -0
  70. data/test/cases/adapters/postgresql/cidr_test.rb +27 -0
  71. data/test/cases/adapters/postgresql/citext_test.rb +78 -0
  72. data/test/cases/adapters/postgresql/collation_test.rb +55 -0
  73. data/test/cases/adapters/postgresql/composite_test.rb +134 -0
  74. data/test/cases/adapters/postgresql/connection_test.rb +245 -0
  75. data/test/cases/adapters/postgresql/create_unlogged_tables_test.rb +74 -0
  76. data/test/cases/adapters/postgresql/datatype_test.rb +89 -0
  77. data/test/cases/adapters/postgresql/date_test.rb +42 -0
  78. data/test/cases/adapters/postgresql/domain_test.rb +49 -0
  79. data/test/cases/adapters/postgresql/enum_test.rb +93 -0
  80. data/test/cases/adapters/postgresql/explain_test.rb +22 -0
  81. data/test/cases/adapters/postgresql/extension_migration_test.rb +64 -0
  82. data/test/cases/adapters/postgresql/foreign_table_test.rb +109 -0
  83. data/test/cases/adapters/postgresql/full_text_test.rb +46 -0
  84. data/test/cases/adapters/postgresql/geometric_test.rb +372 -0
  85. data/test/cases/adapters/postgresql/hstore_test.rb +390 -0
  86. data/test/cases/adapters/postgresql/infinity_test.rb +108 -0
  87. data/test/cases/adapters/postgresql/integer_test.rb +27 -0
  88. data/test/cases/adapters/postgresql/interval_test.rb +99 -0
  89. data/test/cases/adapters/postgresql/json_test.rb +52 -0
  90. data/test/cases/adapters/postgresql/ltree_test.rb +51 -0
  91. data/test/cases/adapters/postgresql/money_test.rb +127 -0
  92. data/test/cases/adapters/postgresql/network_test.rb +102 -0
  93. data/test/cases/adapters/postgresql/numbers_test.rb +51 -0
  94. data/test/cases/adapters/postgresql/optimizer_hints_test.rb +71 -0
  95. data/test/cases/adapters/postgresql/partitions_test.rb +22 -0
  96. data/test/cases/adapters/postgresql/postgresql_adapter_prevent_writes_test.rb +205 -0
  97. data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +447 -0
  98. data/test/cases/adapters/postgresql/prepared_statements_disabled_test.rb +27 -0
  99. data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -0
  100. data/test/cases/adapters/postgresql/quoting_test.rb +50 -0
  101. data/test/cases/adapters/postgresql/range_test.rb +457 -0
  102. data/test/cases/adapters/postgresql/referential_integrity_test.rb +112 -0
  103. data/test/cases/adapters/postgresql/rename_table_test.rb +35 -0
  104. data/test/cases/adapters/postgresql/schema_authorization_test.rb +110 -0
  105. data/test/cases/adapters/postgresql/schema_test.rb +713 -0
  106. data/test/cases/adapters/postgresql/serial_test.rb +156 -0
  107. data/test/cases/adapters/postgresql/statement_pool_test.rb +61 -0
  108. data/test/cases/adapters/postgresql/timestamp_test.rb +92 -0
  109. data/test/cases/adapters/postgresql/transaction_nested_test.rb +114 -0
  110. data/test/cases/adapters/postgresql/transaction_test.rb +189 -0
  111. data/test/cases/adapters/postgresql/type_lookup_test.rb +35 -0
  112. data/test/cases/adapters/postgresql/utils_test.rb +64 -0
  113. data/test/cases/adapters/postgresql/uuid_test.rb +411 -0
  114. data/test/cases/adapters/postgresql/xml_test.rb +50 -0
  115. data/test/cases/adapters/sqlite3/collation_test.rb +64 -0
  116. data/test/cases/adapters/sqlite3/copy_table_test.rb +101 -0
  117. data/test/cases/adapters/sqlite3/explain_test.rb +23 -0
  118. data/test/cases/adapters/sqlite3/json_test.rb +29 -0
  119. data/test/cases/adapters/sqlite3/quoting_test.rb +79 -0
  120. data/test/cases/adapters/sqlite3/sqlite3_adapter_prevent_writes_test.rb +186 -0
  121. data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +628 -0
  122. data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -0
  123. data/test/cases/adapters/sqlite3/statement_pool_test.rb +21 -0
  124. data/test/cases/adapters/sqlite3/transaction_test.rb +123 -0
  125. data/test/cases/aggregations_test.rb +170 -0
  126. data/test/cases/annotate_test.rb +46 -0
  127. data/test/cases/ar_schema_test.rb +213 -0
  128. data/test/cases/arel/attributes/attribute_test.rb +1145 -0
  129. data/test/cases/arel/attributes/math_test.rb +83 -0
  130. data/test/cases/arel/attributes_test.rb +27 -0
  131. data/test/cases/arel/collectors/bind_test.rb +40 -0
  132. data/test/cases/arel/collectors/composite_test.rb +47 -0
  133. data/test/cases/arel/collectors/sql_string_test.rb +41 -0
  134. data/test/cases/arel/collectors/substitute_bind_collector_test.rb +48 -0
  135. data/test/cases/arel/crud_test.rb +65 -0
  136. data/test/cases/arel/delete_manager_test.rb +53 -0
  137. data/test/cases/arel/factory_methods_test.rb +46 -0
  138. data/test/cases/arel/helper.rb +45 -0
  139. data/test/cases/arel/insert_manager_test.rb +241 -0
  140. data/test/cases/arel/nodes/and_test.rb +30 -0
  141. data/test/cases/arel/nodes/as_test.rb +36 -0
  142. data/test/cases/arel/nodes/ascending_test.rb +46 -0
  143. data/test/cases/arel/nodes/bin_test.rb +35 -0
  144. data/test/cases/arel/nodes/binary_test.rb +29 -0
  145. data/test/cases/arel/nodes/bind_param_test.rb +22 -0
  146. data/test/cases/arel/nodes/case_test.rb +96 -0
  147. data/test/cases/arel/nodes/casted_test.rb +18 -0
  148. data/test/cases/arel/nodes/comment_test.rb +22 -0
  149. data/test/cases/arel/nodes/count_test.rb +35 -0
  150. data/test/cases/arel/nodes/delete_statement_test.rb +36 -0
  151. data/test/cases/arel/nodes/descending_test.rb +46 -0
  152. data/test/cases/arel/nodes/distinct_test.rb +21 -0
  153. data/test/cases/arel/nodes/equality_test.rb +62 -0
  154. data/test/cases/arel/nodes/extract_test.rb +43 -0
  155. data/test/cases/arel/nodes/false_test.rb +21 -0
  156. data/test/cases/arel/nodes/grouping_test.rb +26 -0
  157. data/test/cases/arel/nodes/infix_operation_test.rb +42 -0
  158. data/test/cases/arel/nodes/insert_statement_test.rb +44 -0
  159. data/test/cases/arel/nodes/named_function_test.rb +48 -0
  160. data/test/cases/arel/nodes/node_test.rb +22 -0
  161. data/test/cases/arel/nodes/not_test.rb +31 -0
  162. data/test/cases/arel/nodes/or_test.rb +36 -0
  163. data/test/cases/arel/nodes/over_test.rb +69 -0
  164. data/test/cases/arel/nodes/select_core_test.rb +79 -0
  165. data/test/cases/arel/nodes/select_statement_test.rb +51 -0
  166. data/test/cases/arel/nodes/sql_literal_test.rb +75 -0
  167. data/test/cases/arel/nodes/sum_test.rb +35 -0
  168. data/test/cases/arel/nodes/table_alias_test.rb +29 -0
  169. data/test/cases/arel/nodes/true_test.rb +21 -0
  170. data/test/cases/arel/nodes/unary_operation_test.rb +41 -0
  171. data/test/cases/arel/nodes/update_statement_test.rb +60 -0
  172. data/test/cases/arel/nodes/window_test.rb +81 -0
  173. data/test/cases/arel/nodes_test.rb +34 -0
  174. data/test/cases/arel/select_manager_test.rb +1238 -0
  175. data/test/cases/arel/support/fake_record.rb +135 -0
  176. data/test/cases/arel/table_test.rb +216 -0
  177. data/test/cases/arel/update_manager_test.rb +126 -0
  178. data/test/cases/arel/visitors/dispatch_contamination_test.rb +78 -0
  179. data/test/cases/arel/visitors/dot_test.rb +90 -0
  180. data/test/cases/arel/visitors/mysql_test.rb +157 -0
  181. data/test/cases/arel/visitors/postgres_test.rb +366 -0
  182. data/test/cases/arel/visitors/sqlite_test.rb +75 -0
  183. data/test/cases/arel/visitors/to_sql_test.rb +750 -0
  184. data/test/cases/associations/association_scope_test.rb +16 -0
  185. data/test/cases/associations/belongs_to_associations_test.rb +1493 -0
  186. data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +43 -0
  187. data/test/cases/associations/callbacks_test.rb +208 -0
  188. data/test/cases/associations/cascaded_eager_loading_test.rb +245 -0
  189. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +156 -0
  190. data/test/cases/associations/eager_load_nested_include_test.rb +127 -0
  191. data/test/cases/associations/eager_singularization_test.rb +148 -0
  192. data/test/cases/associations/eager_test.rb +1658 -0
  193. data/test/cases/associations/extension_test.rb +93 -0
  194. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +1025 -0
  195. data/test/cases/associations/has_many_associations_test.rb +3074 -0
  196. data/test/cases/associations/has_many_through_associations_test.rb +1580 -0
  197. data/test/cases/associations/has_one_associations_test.rb +872 -0
  198. data/test/cases/associations/has_one_through_associations_test.rb +429 -0
  199. data/test/cases/associations/inner_join_association_test.rb +215 -0
  200. data/test/cases/associations/inverse_associations_test.rb +941 -0
  201. data/test/cases/associations/join_model_test.rb +787 -0
  202. data/test/cases/associations/left_outer_join_association_test.rb +123 -0
  203. data/test/cases/associations/nested_through_associations_test.rb +636 -0
  204. data/test/cases/associations/required_test.rb +127 -0
  205. data/test/cases/associations_test.rb +516 -0
  206. data/test/cases/attribute_decorators_test.rb +126 -0
  207. data/test/cases/attribute_methods/read_test.rb +60 -0
  208. data/test/cases/attribute_methods_test.rb +1124 -0
  209. data/test/cases/attribute_set_test.rb +270 -0
  210. data/test/cases/attribute_test.rb +246 -0
  211. data/test/cases/attributes_test.rb +371 -0
  212. data/test/cases/autosave_association_test.rb +1953 -0
  213. data/test/cases/base_prevent_writes_test.rb +229 -0
  214. data/test/cases/base_test.rb +1770 -0
  215. data/test/cases/batches_test.rb +695 -0
  216. data/test/cases/binary_test.rb +39 -0
  217. data/test/cases/bind_parameter_test.rb +283 -0
  218. data/test/cases/boolean_test.rb +52 -0
  219. data/test/cases/cache_key_test.rb +131 -0
  220. data/test/cases/calculations_test.rb +1361 -0
  221. data/test/cases/callbacks_test.rb +503 -0
  222. data/test/cases/clone_test.rb +45 -0
  223. data/test/cases/coders/json_test.rb +17 -0
  224. data/test/cases/coders/yaml_column_test.rb +66 -0
  225. data/test/cases/collection_cache_key_test.rb +272 -0
  226. data/test/cases/column_alias_test.rb +19 -0
  227. data/test/cases/column_definition_test.rb +34 -0
  228. data/test/cases/comment_test.rb +204 -0
  229. data/test/cases/connection_adapters/adapter_leasing_test.rb +60 -0
  230. data/test/cases/connection_adapters/connection_handler_test.rb +467 -0
  231. data/test/cases/connection_adapters/connection_handlers_multi_db_test.rb +400 -0
  232. data/test/cases/connection_adapters/connection_handlers_multi_pool_config_test.rb +103 -0
  233. data/test/cases/connection_adapters/connection_handlers_sharding_db_test.rb +499 -0
  234. data/test/cases/connection_adapters/connection_specification_test.rb +12 -0
  235. data/test/cases/connection_adapters/connection_swapping_nested_test.rb +457 -0
  236. data/test/cases/connection_adapters/legacy_connection_handlers_multi_db_test.rb +486 -0
  237. data/test/cases/connection_adapters/legacy_connection_handlers_sharding_db_test.rb +586 -0
  238. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +436 -0
  239. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +81 -0
  240. data/test/cases/connection_adapters/quoting_test.rb +13 -0
  241. data/test/cases/connection_adapters/schema_cache_test.rb +294 -0
  242. data/test/cases/connection_adapters/type_lookup_test.rb +119 -0
  243. data/test/cases/connection_management_test.rb +114 -0
  244. data/test/cases/connection_pool_test.rb +754 -0
  245. data/test/cases/connection_specification/resolver_test.rb +131 -0
  246. data/test/cases/core_test.rb +136 -0
  247. data/test/cases/counter_cache_test.rb +368 -0
  248. data/test/cases/custom_locking_test.rb +19 -0
  249. data/test/cases/database_configurations/hash_config_test.rb +74 -0
  250. data/test/cases/database_configurations/resolver_test.rb +150 -0
  251. data/test/cases/database_configurations_test.rb +145 -0
  252. data/test/cases/database_selector_test.rb +296 -0
  253. data/test/cases/database_statements_test.rb +36 -0
  254. data/test/cases/date_test.rb +36 -0
  255. data/test/cases/date_time_precision_test.rb +129 -0
  256. data/test/cases/date_time_test.rb +76 -0
  257. data/test/cases/defaults_test.rb +254 -0
  258. data/test/cases/delegated_type_test.rb +57 -0
  259. data/test/cases/dirty_test.rb +959 -0
  260. data/test/cases/disconnected_test.rb +30 -0
  261. data/test/cases/dup_test.rb +184 -0
  262. data/test/cases/enum_test.rb +823 -0
  263. data/test/cases/errors_test.rb +16 -0
  264. data/test/cases/explain_subscriber_test.rb +66 -0
  265. data/test/cases/explain_test.rb +79 -0
  266. data/test/cases/filter_attributes_test.rb +153 -0
  267. data/test/cases/finder_respond_to_test.rb +60 -0
  268. data/test/cases/finder_test.rb +1676 -0
  269. data/test/cases/fixture_set/file_test.rb +152 -0
  270. data/test/cases/fixtures_test.rb +1645 -0
  271. data/test/cases/forbidden_attributes_protection_test.rb +130 -0
  272. data/test/cases/habtm_destroy_order_test.rb +61 -0
  273. data/test/cases/helper.rb +233 -0
  274. data/test/cases/hot_compatibility_test.rb +143 -0
  275. data/test/cases/i18n_test.rb +46 -0
  276. data/test/cases/inheritance_test.rb +671 -0
  277. data/test/cases/insert_all_test.rb +489 -0
  278. data/test/cases/instrumentation_test.rb +101 -0
  279. data/test/cases/integration_test.rb +243 -0
  280. data/test/cases/invalid_connection_test.rb +26 -0
  281. data/test/cases/invertible_migration_test.rb +527 -0
  282. data/test/cases/json_attribute_test.rb +35 -0
  283. data/test/cases/json_serialization_test.rb +310 -0
  284. data/test/cases/json_shared_test_cases.rb +290 -0
  285. data/test/cases/locking_test.rb +787 -0
  286. data/test/cases/log_subscriber_test.rb +267 -0
  287. data/test/cases/marshal_serialization_test.rb +39 -0
  288. data/test/cases/migration/change_schema_test.rb +504 -0
  289. data/test/cases/migration/change_table_test.rb +364 -0
  290. data/test/cases/migration/check_constraint_test.rb +162 -0
  291. data/test/cases/migration/column_attributes_test.rb +186 -0
  292. data/test/cases/migration/column_positioning_test.rb +68 -0
  293. data/test/cases/migration/columns_test.rb +326 -0
  294. data/test/cases/migration/command_recorder_test.rb +437 -0
  295. data/test/cases/migration/compatibility_test.rb +673 -0
  296. data/test/cases/migration/create_join_table_test.rb +167 -0
  297. data/test/cases/migration/foreign_key_test.rb +581 -0
  298. data/test/cases/migration/helper.rb +40 -0
  299. data/test/cases/migration/index_test.rb +267 -0
  300. data/test/cases/migration/logger_test.rb +39 -0
  301. data/test/cases/migration/pending_migrations_test.rb +106 -0
  302. data/test/cases/migration/references_foreign_key_test.rb +235 -0
  303. data/test/cases/migration/references_index_test.rb +120 -0
  304. data/test/cases/migration/references_statements_test.rb +137 -0
  305. data/test/cases/migration/rename_table_test.rb +116 -0
  306. data/test/cases/migration_test.rb +1525 -0
  307. data/test/cases/migrator_test.rb +527 -0
  308. data/test/cases/mixin_test.rb +64 -0
  309. data/test/cases/modules_test.rb +174 -0
  310. data/test/cases/multi_db_migrator_test.rb +223 -0
  311. data/test/cases/multiparameter_attributes_test.rb +399 -0
  312. data/test/cases/multiple_db_test.rb +116 -0
  313. data/test/cases/nested_attributes_test.rb +1119 -0
  314. data/test/cases/nested_attributes_with_callbacks_test.rb +146 -0
  315. data/test/cases/null_relation_test.rb +84 -0
  316. data/test/cases/numeric_data_test.rb +93 -0
  317. data/test/cases/persistence_test.rb +1093 -0
  318. data/test/cases/pooled_connections_test.rb +73 -0
  319. data/test/cases/prepared_statement_status_test.rb +48 -0
  320. data/test/cases/primary_keys_test.rb +482 -0
  321. data/test/cases/query_cache_test.rb +915 -0
  322. data/test/cases/quoting_test.rb +303 -0
  323. data/test/cases/readonly_test.rb +120 -0
  324. data/test/cases/reaper_test.rb +199 -0
  325. data/test/cases/reflection_test.rb +520 -0
  326. data/test/cases/relation/delegation_test.rb +76 -0
  327. data/test/cases/relation/delete_all_test.rb +117 -0
  328. data/test/cases/relation/merging_test.rb +434 -0
  329. data/test/cases/relation/mutation_test.rb +145 -0
  330. data/test/cases/relation/or_test.rb +192 -0
  331. data/test/cases/relation/predicate_builder_test.rb +31 -0
  332. data/test/cases/relation/record_fetch_warning_test.rb +42 -0
  333. data/test/cases/relation/select_test.rb +67 -0
  334. data/test/cases/relation/update_all_test.rb +317 -0
  335. data/test/cases/relation/where_chain_test.rb +141 -0
  336. data/test/cases/relation/where_clause_test.rb +257 -0
  337. data/test/cases/relation/where_test.rb +429 -0
  338. data/test/cases/relation_test.rb +482 -0
  339. data/test/cases/relations_test.rb +2251 -0
  340. data/test/cases/reload_models_test.rb +26 -0
  341. data/test/cases/reserved_word_test.rb +141 -0
  342. data/test/cases/result_test.rb +141 -0
  343. data/test/cases/sanitize_test.rb +192 -0
  344. data/test/cases/schema_dumper_test.rb +550 -0
  345. data/test/cases/schema_loading_test.rb +53 -0
  346. data/test/cases/scoping/default_scoping_test.rb +569 -0
  347. data/test/cases/scoping/named_scoping_test.rb +649 -0
  348. data/test/cases/scoping/relation_scoping_test.rb +522 -0
  349. data/test/cases/secure_token_test.rb +47 -0
  350. data/test/cases/serialization_test.rb +106 -0
  351. data/test/cases/serialized_attribute_test.rb +455 -0
  352. data/test/cases/signed_id_test.rb +168 -0
  353. data/test/cases/statement_cache_test.rb +153 -0
  354. data/test/cases/statement_invalid_test.rb +42 -0
  355. data/test/cases/store_test.rb +320 -0
  356. data/test/cases/strict_loading_test.rb +473 -0
  357. data/test/cases/suppressor_test.rb +77 -0
  358. data/test/cases/tasks/database_tasks_test.rb +1526 -0
  359. data/test/cases/tasks/mysql_rake_test.rb +417 -0
  360. data/test/cases/tasks/postgresql_rake_test.rb +534 -0
  361. data/test/cases/tasks/sqlite_rake_test.rb +267 -0
  362. data/test/cases/test_case.rb +142 -0
  363. data/test/cases/test_databases_test.rb +79 -0
  364. data/test/cases/test_fixtures_test.rb +96 -0
  365. data/test/cases/time_precision_test.rb +125 -0
  366. data/test/cases/timestamp_test.rb +504 -0
  367. data/test/cases/touch_later_test.rb +123 -0
  368. data/test/cases/transaction_callbacks_test.rb +772 -0
  369. data/test/cases/transaction_isolation_test.rb +106 -0
  370. data/test/cases/transactions_test.rb +1285 -0
  371. data/test/cases/type/adapter_specific_registry_test.rb +145 -0
  372. data/test/cases/type/date_time_test.rb +16 -0
  373. data/test/cases/type/integer_test.rb +29 -0
  374. data/test/cases/type/string_test.rb +24 -0
  375. data/test/cases/type/time_test.rb +28 -0
  376. data/test/cases/type/type_map_test.rb +178 -0
  377. data/test/cases/type/unsigned_integer_test.rb +19 -0
  378. data/test/cases/type_test.rb +41 -0
  379. data/test/cases/types_test.rb +26 -0
  380. data/test/cases/unconnected_test.rb +46 -0
  381. data/test/cases/unsafe_raw_sql_test.rb +274 -0
  382. data/test/cases/validations/absence_validation_test.rb +75 -0
  383. data/test/cases/validations/association_validation_test.rb +99 -0
  384. data/test/cases/validations/i18n_generate_message_validation_test.rb +102 -0
  385. data/test/cases/validations/i18n_validation_test.rb +87 -0
  386. data/test/cases/validations/length_validation_test.rb +80 -0
  387. data/test/cases/validations/numericality_validation_test.rb +181 -0
  388. data/test/cases/validations/presence_validation_test.rb +105 -0
  389. data/test/cases/validations/uniqueness_validation_test.rb +618 -0
  390. data/test/cases/validations_repair_helper.rb +21 -0
  391. data/test/cases/validations_test.rb +229 -0
  392. data/test/cases/view_test.rb +222 -0
  393. data/test/cases/yaml_serialization_test.rb +166 -0
  394. data/test/config.example.yml +97 -0
  395. data/test/config.rb +7 -0
  396. data/test/config.yml +220 -0
  397. data/test/connections/native_ibm_db/connection.rb +44 -0
  398. data/test/fixtures/accounts.yml +29 -0
  399. data/test/fixtures/admin/accounts.yml +2 -0
  400. data/test/fixtures/admin/randomly_named_a9.yml +7 -0
  401. data/test/fixtures/admin/randomly_named_b0.yml +7 -0
  402. data/test/fixtures/admin/users.yml +10 -0
  403. data/test/fixtures/all/admin +1 -0
  404. data/test/fixtures/all/developers.yml +0 -0
  405. data/test/fixtures/all/namespaced/accounts.yml +2 -0
  406. data/test/fixtures/all/people.yml +0 -0
  407. data/test/fixtures/all/tasks.yml +0 -0
  408. data/test/fixtures/author_addresses.yml +11 -0
  409. data/test/fixtures/author_favorites.yml +4 -0
  410. data/test/fixtures/authors.yml +17 -0
  411. data/test/fixtures/bad_posts.yml +9 -0
  412. data/test/fixtures/binaries.yml +137 -0
  413. data/test/fixtures/books.yml +38 -0
  414. data/test/fixtures/bulbs.yml +5 -0
  415. data/test/fixtures/cars.yml +9 -0
  416. data/test/fixtures/categories/special_categories.yml +9 -0
  417. data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
  418. data/test/fixtures/categories.yml +19 -0
  419. data/test/fixtures/categories_ordered.yml +7 -0
  420. data/test/fixtures/categories_posts.yml +34 -0
  421. data/test/fixtures/categorizations.yml +23 -0
  422. data/test/fixtures/citations.yml +5 -0
  423. data/test/fixtures/clubs.yml +8 -0
  424. data/test/fixtures/collections.yml +3 -0
  425. data/test/fixtures/colleges.yml +3 -0
  426. data/test/fixtures/comments.yml +72 -0
  427. data/test/fixtures/companies.yml +72 -0
  428. data/test/fixtures/computers.yml +12 -0
  429. data/test/fixtures/content.yml +3 -0
  430. data/test/fixtures/content_positions.yml +3 -0
  431. data/test/fixtures/courses.yml +8 -0
  432. data/test/fixtures/customers.yml +35 -0
  433. data/test/fixtures/dashboards.yml +6 -0
  434. data/test/fixtures/dead_parrots.yml +5 -0
  435. data/test/fixtures/developers.yml +22 -0
  436. data/test/fixtures/developers_projects.yml +17 -0
  437. data/test/fixtures/dog_lovers.yml +7 -0
  438. data/test/fixtures/dogs.yml +4 -0
  439. data/test/fixtures/doubloons.yml +3 -0
  440. data/test/fixtures/edges.yml +5 -0
  441. data/test/fixtures/entrants.yml +14 -0
  442. data/test/fixtures/essays.yml +16 -0
  443. data/test/fixtures/faces.yml +11 -0
  444. data/test/fixtures/fk_test_has_fk.yml +3 -0
  445. data/test/fixtures/fk_test_has_pk.yml +2 -0
  446. data/test/fixtures/friendships.yml +4 -0
  447. data/test/fixtures/funny_jokes.yml +10 -0
  448. data/test/fixtures/humans.yml +5 -0
  449. data/test/fixtures/interests.yml +33 -0
  450. data/test/fixtures/items.yml +3 -0
  451. data/test/fixtures/jobs.yml +7 -0
  452. data/test/fixtures/legacy_things.yml +3 -0
  453. data/test/fixtures/live_parrots.yml +4 -0
  454. data/test/fixtures/mateys.yml +4 -0
  455. data/test/fixtures/member_details.yml +8 -0
  456. data/test/fixtures/member_types.yml +6 -0
  457. data/test/fixtures/members.yml +11 -0
  458. data/test/fixtures/memberships.yml +41 -0
  459. data/test/fixtures/men.yml +5 -0
  460. data/test/fixtures/minimalistics.yml +5 -0
  461. data/test/fixtures/minivans.yml +5 -0
  462. data/test/fixtures/mixed_case_monkeys.yml +6 -0
  463. data/test/fixtures/mixins.yml +29 -0
  464. data/test/fixtures/movies.yml +7 -0
  465. data/test/fixtures/naked/yml/accounts.yml +1 -0
  466. data/test/fixtures/naked/yml/companies.yml +1 -0
  467. data/test/fixtures/naked/yml/courses.yml +1 -0
  468. data/test/fixtures/naked/yml/courses_with_invalid_key.yml +3 -0
  469. data/test/fixtures/naked/yml/parrots.yml +3 -0
  470. data/test/fixtures/naked/yml/trees.yml +3 -0
  471. data/test/fixtures/nodes.yml +29 -0
  472. data/test/fixtures/organizations.yml +5 -0
  473. data/test/fixtures/other_books.yml +26 -0
  474. data/test/fixtures/other_comments.yml +6 -0
  475. data/test/fixtures/other_dogs.yml +2 -0
  476. data/test/fixtures/other_posts.yml +8 -0
  477. data/test/fixtures/other_topics.yml +42 -0
  478. data/test/fixtures/owners.yml +9 -0
  479. data/test/fixtures/parrots.yml +33 -0
  480. data/test/fixtures/parrots_pirates.yml +7 -0
  481. data/test/fixtures/people.yml +24 -0
  482. data/test/fixtures/peoples_treasures.yml +3 -0
  483. data/test/fixtures/pets.yml +19 -0
  484. data/test/fixtures/pirates.yml +15 -0
  485. data/test/fixtures/posts.yml +88 -0
  486. data/test/fixtures/price_estimates.yml +16 -0
  487. data/test/fixtures/products.yml +4 -0
  488. data/test/fixtures/projects.yml +7 -0
  489. data/test/fixtures/randomly_named_a9.yml +7 -0
  490. data/test/fixtures/ratings.yml +14 -0
  491. data/test/fixtures/readers.yml +17 -0
  492. data/test/fixtures/references.yml +17 -0
  493. data/test/fixtures/reserved_words/distinct.yml +5 -0
  494. data/test/fixtures/reserved_words/distinct_select.yml +11 -0
  495. data/test/fixtures/reserved_words/group.yml +14 -0
  496. data/test/fixtures/reserved_words/select.yml +8 -0
  497. data/test/fixtures/reserved_words/values.yml +7 -0
  498. data/test/fixtures/ships.yml +6 -0
  499. data/test/fixtures/speedometers.yml +8 -0
  500. data/test/fixtures/sponsors.yml +15 -0
  501. data/test/fixtures/strict_zines.yml +2 -0
  502. data/test/fixtures/string_key_objects.yml +7 -0
  503. data/test/fixtures/subscribers.yml +11 -0
  504. data/test/fixtures/subscriptions.yml +12 -0
  505. data/test/fixtures/taggings.yml +78 -0
  506. data/test/fixtures/tags.yml +11 -0
  507. data/test/fixtures/tasks.yml +7 -0
  508. data/test/fixtures/teapots.yml +3 -0
  509. data/test/fixtures/to_be_linked/accounts.yml +2 -0
  510. data/test/fixtures/to_be_linked/users.yml +10 -0
  511. data/test/fixtures/topics.yml +49 -0
  512. data/test/fixtures/toys.yml +14 -0
  513. data/test/fixtures/traffic_lights.yml +10 -0
  514. data/test/fixtures/treasures.yml +10 -0
  515. data/test/fixtures/trees.yml +3 -0
  516. data/test/fixtures/uuid_children.yml +3 -0
  517. data/test/fixtures/uuid_parents.yml +2 -0
  518. data/test/fixtures/variants.yml +4 -0
  519. data/test/fixtures/vegetables.yml +20 -0
  520. data/test/fixtures/vertices.yml +4 -0
  521. data/test/fixtures/warehouse-things.yml +3 -0
  522. data/test/fixtures/warehouse_things.yml +3 -0
  523. data/test/fixtures/zines.yml +5 -0
  524. data/test/ibm_db_test.rb +25 -0
  525. data/test/migrations/10_urban/9_add_expressions.rb +13 -0
  526. data/test/migrations/decimal/1_give_me_big_numbers.rb +17 -0
  527. data/test/migrations/magic/1_currencies_have_symbols.rb +13 -0
  528. data/test/migrations/missing/1000_people_have_middle_names.rb +11 -0
  529. data/test/migrations/missing/1_people_have_last_names.rb +11 -0
  530. data/test/migrations/missing/3_we_need_reminders.rb +14 -0
  531. data/test/migrations/missing/4_innocent_jointable.rb +14 -0
  532. data/test/migrations/rename/1_we_need_things.rb +13 -0
  533. data/test/migrations/rename/2_rename_things.rb +11 -0
  534. data/test/migrations/to_copy/1_people_have_hobbies.rb +11 -0
  535. data/test/migrations/to_copy/2_people_have_descriptions.rb +11 -0
  536. data/test/migrations/to_copy2/1_create_articles.rb +9 -0
  537. data/test/migrations/to_copy2/2_create_comments.rb +9 -0
  538. data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +11 -0
  539. data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +11 -0
  540. data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +11 -0
  541. data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +9 -0
  542. data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +9 -0
  543. data/test/migrations/valid/1_valid_people_have_last_names.rb +11 -0
  544. data/test/migrations/valid/2_we_need_reminders.rb +14 -0
  545. data/test/migrations/valid/3_innocent_jointable.rb +14 -0
  546. data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +11 -0
  547. data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +14 -0
  548. data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +14 -0
  549. data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +11 -0
  550. data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +14 -0
  551. data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +14 -0
  552. data/test/migrations/version_check/20131219224947_migration_version_check.rb +10 -0
  553. data/test/models/account.rb +46 -0
  554. data/test/models/admin/account.rb +5 -0
  555. data/test/models/admin/randomly_named_c1.rb +9 -0
  556. data/test/models/admin/user.rb +48 -0
  557. data/test/models/admin.rb +7 -0
  558. data/test/models/aircraft.rb +7 -0
  559. data/test/models/arunit2_model.rb +5 -0
  560. data/test/models/author.rb +260 -0
  561. data/test/models/auto_id.rb +6 -0
  562. data/test/models/autoloadable/extra_firm.rb +4 -0
  563. data/test/models/binary.rb +4 -0
  564. data/test/models/binary_field.rb +6 -0
  565. data/test/models/bird.rb +24 -0
  566. data/test/models/book.rb +33 -0
  567. data/test/models/book_destroy_async.rb +24 -0
  568. data/test/models/boolean.rb +7 -0
  569. data/test/models/bulb.rb +61 -0
  570. data/test/models/cake_designer.rb +5 -0
  571. data/test/models/car.rb +36 -0
  572. data/test/models/carrier.rb +4 -0
  573. data/test/models/cart.rb +5 -0
  574. data/test/models/cat.rb +12 -0
  575. data/test/models/categorization.rb +21 -0
  576. data/test/models/category.rb +47 -0
  577. data/test/models/chef.rb +10 -0
  578. data/test/models/citation.rb +7 -0
  579. data/test/models/club.rb +28 -0
  580. data/test/models/college.rb +12 -0
  581. data/test/models/column.rb +5 -0
  582. data/test/models/column_name.rb +5 -0
  583. data/test/models/comment.rb +98 -0
  584. data/test/models/company.rb +226 -0
  585. data/test/models/company_in_module.rb +99 -0
  586. data/test/models/computer.rb +5 -0
  587. data/test/models/contact.rb +43 -0
  588. data/test/models/content.rb +42 -0
  589. data/test/models/contract.rb +38 -0
  590. data/test/models/country.rb +5 -0
  591. data/test/models/course.rb +8 -0
  592. data/test/models/customer.rb +85 -0
  593. data/test/models/customer_carrier.rb +16 -0
  594. data/test/models/dashboard.rb +5 -0
  595. data/test/models/default.rb +4 -0
  596. data/test/models/department.rb +6 -0
  597. data/test/models/destroy_async_parent.rb +15 -0
  598. data/test/models/destroy_async_parent_soft_delete.rb +20 -0
  599. data/test/models/developer.rb +341 -0
  600. data/test/models/dl_keyed_belongs_to.rb +13 -0
  601. data/test/models/dl_keyed_belongs_to_soft_delete.rb +19 -0
  602. data/test/models/dl_keyed_has_many.rb +5 -0
  603. data/test/models/dl_keyed_has_many_through.rb +5 -0
  604. data/test/models/dl_keyed_has_one.rb +5 -0
  605. data/test/models/dl_keyed_join.rb +10 -0
  606. data/test/models/dog.rb +7 -0
  607. data/test/models/dog_lover.rb +7 -0
  608. data/test/models/doubloon.rb +14 -0
  609. data/test/models/drink_designer.rb +20 -0
  610. data/test/models/edge.rb +7 -0
  611. data/test/models/electron.rb +7 -0
  612. data/test/models/engine.rb +5 -0
  613. data/test/models/entrant.rb +5 -0
  614. data/test/models/entry.rb +5 -0
  615. data/test/models/essay.rb +8 -0
  616. data/test/models/essay_destroy_async.rb +12 -0
  617. data/test/models/event.rb +5 -0
  618. data/test/models/eye.rb +39 -0
  619. data/test/models/face.rb +17 -0
  620. data/test/models/family.rb +6 -0
  621. data/test/models/family_tree.rb +6 -0
  622. data/test/models/friendship.rb +8 -0
  623. data/test/models/frog.rb +8 -0
  624. data/test/models/guid.rb +4 -0
  625. data/test/models/guitar.rb +6 -0
  626. data/test/models/hotel.rb +13 -0
  627. data/test/models/human.rb +39 -0
  628. data/test/models/image.rb +5 -0
  629. data/test/models/interest.rb +16 -0
  630. data/test/models/invoice.rb +6 -0
  631. data/test/models/item.rb +9 -0
  632. data/test/models/job.rb +9 -0
  633. data/test/models/joke.rb +9 -0
  634. data/test/models/keyboard.rb +5 -0
  635. data/test/models/legacy_thing.rb +5 -0
  636. data/test/models/lesson.rb +13 -0
  637. data/test/models/line_item.rb +5 -0
  638. data/test/models/liquid.rb +6 -0
  639. data/test/models/man.rb +11 -0
  640. data/test/models/matey.rb +6 -0
  641. data/test/models/measurement.rb +4 -0
  642. data/test/models/member.rb +45 -0
  643. data/test/models/member_detail.rb +11 -0
  644. data/test/models/member_type.rb +5 -0
  645. data/test/models/membership.rb +38 -0
  646. data/test/models/mentor.rb +5 -0
  647. data/test/models/message.rb +5 -0
  648. data/test/models/minimalistic.rb +4 -0
  649. data/test/models/minivan.rb +10 -0
  650. data/test/models/mixed_case_monkey.rb +5 -0
  651. data/test/models/mocktail_designer.rb +2 -0
  652. data/test/models/molecule.rb +8 -0
  653. data/test/models/mouse.rb +6 -0
  654. data/test/models/movie.rb +7 -0
  655. data/test/models/node.rb +7 -0
  656. data/test/models/non_primary_key.rb +4 -0
  657. data/test/models/notification.rb +5 -0
  658. data/test/models/numeric_data.rb +12 -0
  659. data/test/models/order.rb +6 -0
  660. data/test/models/organization.rb +16 -0
  661. data/test/models/other_dog.rb +7 -0
  662. data/test/models/owner.rb +39 -0
  663. data/test/models/parrot.rb +36 -0
  664. data/test/models/person.rb +147 -0
  665. data/test/models/personal_legacy_thing.rb +6 -0
  666. data/test/models/pet.rb +20 -0
  667. data/test/models/pet_treasure.rb +8 -0
  668. data/test/models/pirate.rb +116 -0
  669. data/test/models/possession.rb +5 -0
  670. data/test/models/post.rb +371 -0
  671. data/test/models/price_estimate.rb +14 -0
  672. data/test/models/professor.rb +7 -0
  673. data/test/models/project.rb +42 -0
  674. data/test/models/publisher/article.rb +6 -0
  675. data/test/models/publisher/magazine.rb +5 -0
  676. data/test/models/publisher.rb +4 -0
  677. data/test/models/randomly_named_c1.rb +5 -0
  678. data/test/models/rating.rb +8 -0
  679. data/test/models/reader.rb +25 -0
  680. data/test/models/recipe.rb +5 -0
  681. data/test/models/record.rb +4 -0
  682. data/test/models/reference.rb +25 -0
  683. data/test/models/reply.rb +79 -0
  684. data/test/models/room.rb +6 -0
  685. data/test/models/section.rb +6 -0
  686. data/test/models/seminar.rb +6 -0
  687. data/test/models/session.rb +6 -0
  688. data/test/models/ship.rb +42 -0
  689. data/test/models/ship_part.rb +10 -0
  690. data/test/models/shop.rb +19 -0
  691. data/test/models/shop_account.rb +8 -0
  692. data/test/models/speedometer.rb +8 -0
  693. data/test/models/sponsor.rb +10 -0
  694. data/test/models/squeak.rb +6 -0
  695. data/test/models/strict_zine.rb +7 -0
  696. data/test/models/string_key_object.rb +5 -0
  697. data/test/models/student.rb +6 -0
  698. data/test/models/subject.rb +16 -0
  699. data/test/models/subscriber.rb +10 -0
  700. data/test/models/subscription.rb +8 -0
  701. data/test/models/tag.rb +16 -0
  702. data/test/models/tagging.rb +20 -0
  703. data/test/models/task.rb +7 -0
  704. data/test/models/topic.rb +153 -0
  705. data/test/models/toy.rb +10 -0
  706. data/test/models/traffic_light.rb +6 -0
  707. data/test/models/treasure.rb +16 -0
  708. data/test/models/treaty.rb +5 -0
  709. data/test/models/tree.rb +5 -0
  710. data/test/models/tuning_peg.rb +6 -0
  711. data/test/models/tyre.rb +13 -0
  712. data/test/models/user.rb +22 -0
  713. data/test/models/uuid_child.rb +5 -0
  714. data/test/models/uuid_item.rb +8 -0
  715. data/test/models/uuid_parent.rb +5 -0
  716. data/test/models/vegetables.rb +33 -0
  717. data/test/models/vehicle.rb +7 -0
  718. data/test/models/vertex.rb +11 -0
  719. data/test/models/warehouse_thing.rb +7 -0
  720. data/test/models/wheel.rb +5 -0
  721. data/test/models/without_table.rb +5 -0
  722. data/test/models/zine.rb +5 -0
  723. data/test/schema/i5/ibm_db_specific_schema.rb +137 -0
  724. data/test/schema/ids/ibm_db_specific_schema.rb +140 -0
  725. data/test/schema/luw/ibm_db_specific_schema.rb +137 -0
  726. data/test/schema/mysql2_specific_schema.rb +82 -0
  727. data/test/schema/oracle_specific_schema.rb +38 -0
  728. data/test/schema/postgresql_specific_schema.rb +125 -0
  729. data/test/schema/schema.rb +1237 -0
  730. data/test/schema/schema.rb.original +1057 -0
  731. data/test/schema/sqlite_specific_schema.rb +11 -0
  732. data/test/schema/zOS/ibm_db_specific_schema.rb +208 -0
  733. data/test/support/config.rb +43 -0
  734. data/test/support/connection.rb +29 -0
  735. data/test/support/connection_helper.rb +16 -0
  736. data/test/support/ddl_helper.rb +10 -0
  737. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_0_topic.dump +0 -0
  738. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_0_topic_associations.dump +0 -0
  739. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_0_topic.dump +0 -0
  740. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_0_topic_associations.dump +0 -0
  741. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_0_topic.dump +0 -0
  742. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_0_topic_associations.dump +0 -0
  743. data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_0_topic.dump +0 -0
  744. data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_0_topic_associations.dump +0 -0
  745. data/test/support/marshal_compatibility_fixtures/legacy_6_0_record_mysql.dump +0 -0
  746. data/test/support/marshal_compatibility_fixtures/legacy_relation.dump +0 -0
  747. data/test/support/schema_dumping_helper.rb +22 -0
  748. data/test/support/stubs/strong_parameters.rb +40 -0
  749. data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -0
  750. data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -0
  751. data/test/support/yaml_compatibility_fixtures/rails_v1_mysql.yml +206 -0
  752. data/test/support/yaml_compatibility_fixtures/rails_v2.yml +55 -0
  753. metadata +876 -0
@@ -0,0 +1,1237 @@
1
+ # frozen_string_literal: true
2
+
3
+ ActiveRecord::Schema.define do
4
+ # ------------------------------------------------------------------- #
5
+ # #
6
+ # Please keep these create table statements in alphabetical order #
7
+ # unless the ordering matters. In which case, define them below. #
8
+ # #
9
+ # ------------------------------------------------------------------- #
10
+
11
+ create_table :accounts, force: true do |t|
12
+ t.references :firm, index: false
13
+ t.string :firm_name
14
+ t.integer :credit_limit
15
+ t.integer "a" * max_identifier_length
16
+ end
17
+
18
+ create_table :admin_accounts, force: true do |t|
19
+ t.string :name
20
+ end
21
+
22
+ create_table :admin_users, force: true do |t|
23
+ t.string :name
24
+ t.string :settings, null: true, limit: 1024
25
+ t.string :parent, null: true, limit: 1024
26
+ t.string :spouse, null: true, limit: 1024
27
+ t.string :configs, null: true, limit: 1024
28
+ # MySQL does not allow default values for blobs. Fake it out with a
29
+ # big varchar below.
30
+ t.string :preferences, null: true, default: "", limit: 1024
31
+ t.string :json_data, null: true, limit: 1024
32
+ t.string :json_data_empty, null: true, default: "", limit: 1024
33
+ t.text :params
34
+ t.references :account
35
+ end
36
+
37
+ create_table :aircraft, force: true do |t|
38
+ t.string :name
39
+ t.integer :wheels_count, default: 0, null: false
40
+ t.datetime :wheels_owned_at
41
+ end
42
+
43
+ create_table :articles, force: true do |t|
44
+ end
45
+
46
+ create_table :articles_magazines, force: true do |t|
47
+ t.references :article
48
+ t.references :magazine
49
+ end
50
+
51
+ create_table :articles_tags, force: true do |t|
52
+ t.references :article
53
+ t.references :tag
54
+ end
55
+
56
+ create_table :audit_logs, force: true do |t|
57
+ t.column :message, :string, null: false
58
+ t.column :developer_id, :integer, null: false
59
+ t.integer :unvalidated_developer_id
60
+ end
61
+
62
+ create_table :authors, force: true do |t|
63
+ t.string :name, null: false
64
+ t.references :author_address
65
+ t.references :author_address_extra
66
+ t.string :organization_id
67
+ t.string :owned_essay_id
68
+ end
69
+
70
+ create_table :author_addresses, force: true do |t|
71
+ end
72
+
73
+ add_foreign_key :authors, :author_addresses
74
+
75
+ create_table :author_favorites, force: true do |t|
76
+ t.column :author_id, :integer
77
+ t.column :favorite_author_id, :integer
78
+ end
79
+
80
+ create_table :auto_id_tests, force: true, id: false do |t|
81
+ t.primary_key :auto_id
82
+ t.integer :value
83
+ end
84
+
85
+ create_table :binaries, force: true do |t|
86
+ t.string :name
87
+ t.binary :data
88
+ t.binary :short_data, limit: 2048
89
+ end
90
+
91
+ create_table :birds, force: true do |t|
92
+ t.string :name
93
+ t.string :color
94
+ t.integer :pirate_id
95
+ end
96
+
97
+ create_table :books, id: :integer, force: true do |t|
98
+ default_zero = { default: 0 }
99
+ t.references :author
100
+ t.string :format
101
+ t.column :name, :string
102
+ t.column :status, :integer, **default_zero
103
+ t.column :last_read, :integer, **default_zero
104
+ t.column :nullable_status, :integer
105
+ t.column :language, :integer, **default_zero
106
+ t.column :author_visibility, :integer, **default_zero
107
+ t.column :illustrator_visibility, :integer, **default_zero
108
+ t.column :font_size, :integer, **default_zero
109
+ t.column :difficulty, :integer, **default_zero
110
+ t.column :cover, :string, default: "hard"
111
+ t.string :isbn
112
+ t.string :external_id
113
+ t.datetime :published_on
114
+ t.boolean :boolean_status
115
+ t.index [:author_id, :name], unique: true
116
+ t.integer :tags_count, default: 0
117
+ t.index :isbn, where: "published_on IS NOT NULL", unique: true
118
+ t.index "(lower(external_id))", unique: true if supports_expression_index?
119
+
120
+ t.datetime :created_at
121
+ t.datetime :updated_at
122
+ t.date :updated_on
123
+ end
124
+
125
+ create_table :booleans, force: true do |t|
126
+ t.boolean :value
127
+ t.boolean :has_fun, null: false, default: false
128
+ end
129
+
130
+ create_table :bulbs, primary_key: "ID", force: true do |t|
131
+ t.integer :car_id
132
+ t.string :name
133
+ t.boolean :frickinawesome, default: false
134
+ t.string :color
135
+ end
136
+
137
+ create_table "CamelCase", force: true do |t|
138
+ t.string :name
139
+ end
140
+
141
+ create_table :cars, force: true do |t|
142
+ t.string :name
143
+ t.integer :engines_count
144
+ t.integer :wheels_count, default: 0, null: false
145
+ t.datetime :wheels_owned_at
146
+ t.column :lock_version, :integer, null: false, default: 0
147
+ t.timestamps null: false
148
+ end
149
+
150
+ create_table :old_cars, id: :integer, force: true do |t|
151
+ end
152
+
153
+ create_table :carriers, force: true
154
+
155
+ create_table :carts, force: true, primary_key: [:shop_id, :id] do |t|
156
+ if current_adapter?(:Mysql2Adapter)
157
+ t.bigint :id, index: true, auto_increment: true, null: false
158
+ else
159
+ t.bigint :id, index: true, null: false
160
+ end
161
+ t.bigint :shop_id, null: false
162
+ t.string :title
163
+ end
164
+
165
+ create_table :categories, force: true do |t|
166
+ t.string :name, null: false
167
+ t.string :type
168
+ t.integer :categorizations_count
169
+ end
170
+
171
+ create_table :categories_posts, force: true do |t|
172
+ t.integer :category_id, null: false
173
+ t.integer :post_id, null: false
174
+ end
175
+
176
+ create_table :categorizations, force: true do |t|
177
+ t.column :category_id, :integer
178
+ t.string :named_category_name
179
+ t.column :post_id, :integer
180
+ t.column :author_id, :integer
181
+ t.column :special, :boolean
182
+ end
183
+
184
+ create_table :citations, force: true do |t|
185
+ t.references :book1
186
+ t.references :book2
187
+ t.references :citation
188
+ end
189
+
190
+ create_table :clubs, force: true do |t|
191
+ t.string :name
192
+ t.integer :category_id
193
+ end
194
+
195
+ create_table :collections, force: true do |t|
196
+ t.string :name
197
+ end
198
+
199
+ create_table :colnametests, force: true do |t|
200
+ t.integer :references, null: false
201
+ end
202
+
203
+ create_table :columns, force: true do |t|
204
+ t.references :record
205
+ end
206
+
207
+ create_table :comments, force: true do |t|
208
+ t.integer :post_id, null: false
209
+ # use VARCHAR2(4000) instead of CLOB datatype as CLOB data type has many limitations in
210
+ # Oracle SELECT WHERE clause which causes many unit test failures
211
+ if current_adapter?(:OracleAdapter, :IBM_DBAdapter)
212
+ t.string :body, null: false, limit: 4000
213
+ else
214
+ t.text :body, null: false
215
+ end
216
+ t.string :type
217
+ t.integer :label, default: 0
218
+ t.integer :tags_count, default: 0
219
+ t.integer :children_count, default: 0
220
+ t.integer :parent_id
221
+ t.references :author, polymorphic: true
222
+ t.string :resource_id
223
+ t.string :resource_type
224
+ t.integer :developer_id
225
+ t.datetime :updated_at
226
+ t.datetime :deleted_at
227
+ t.integer :comments
228
+ t.integer :company
229
+ end
230
+
231
+ create_table :companies, force: true, id: :bigint do |t|
232
+ t.string :type
233
+ t.references :firm, index: false
234
+ t.string :firm_name
235
+ t.string :name
236
+ t.bigint :client_of
237
+ t.bigint :rating, default: 1
238
+ t.integer :account_id
239
+ t.string :description, default: ""
240
+ t.index [:name, :rating], order: :desc
241
+ t.index [:name, :description], length: 10
242
+ t.index [:firm_id, :type, :rating], name: "company_index", length: { type: 10 }, order: { rating: :desc }
243
+ t.index [:firm_id, :type], name: "company_partial_index", where: "(rating > 10)"
244
+ t.index :name, name: "company_name_index"
245
+ t.index "(CASE WHEN rating > 0 THEN lower(name) END) DESC", name: "company_expression_index" if supports_expression_index?
246
+ end
247
+
248
+ create_table :content, force: true do |t|
249
+ t.string :title
250
+ t.belongs_to :book
251
+ t.belongs_to :book_destroy_async
252
+ end
253
+
254
+ create_table :content_positions, force: true do |t|
255
+ t.integer :content_id
256
+ end
257
+
258
+ create_table :vegetables, force: true do |t|
259
+ t.string :name
260
+ t.integer :seller_id
261
+ t.string :custom_type
262
+ end
263
+
264
+ create_table :computers, force: true do |t|
265
+ t.string :system
266
+ t.integer :developer, null: false
267
+ t.integer :extendedWarranty, null: false
268
+ t.integer :timezone
269
+ end
270
+
271
+ create_table :computers_developers, id: false, force: true do |t|
272
+ t.references :computer
273
+ t.references :developer
274
+ end
275
+
276
+ create_table :contracts, force: true do |t|
277
+ t.references :developer, index: false
278
+ t.references :company, index: false
279
+ t.string :metadata
280
+ t.integer :count
281
+ end
282
+
283
+ create_table :customers, force: true do |t|
284
+ t.string :name
285
+ t.integer :balance, default: 0
286
+ t.string :address_street
287
+ t.string :address_city
288
+ t.string :address_country
289
+ t.string :gps_location
290
+ end
291
+
292
+ create_table :customer_carriers, force: true do |t|
293
+ t.references :customer
294
+ t.references :carrier
295
+ end
296
+
297
+ create_table :dashboards, force: true, id: false do |t|
298
+ t.string :dashboard_id
299
+ t.string :name
300
+ end
301
+
302
+ create_table :destroy_async_parents, force: true, id: false do |t|
303
+ t.primary_key :parent_id
304
+ t.string :name
305
+ t.integer :tags_count, default: 0
306
+ end
307
+
308
+ create_table :destroy_async_parent_soft_deletes, force: true do |t|
309
+ t.integer :tags_count, default: 0
310
+ t.boolean :deleted
311
+ end
312
+
313
+ create_table :dl_keyed_belongs_tos, force: true, id: false do |t|
314
+ t.primary_key :belongs_key
315
+ t.references :destroy_async_parent
316
+ end
317
+
318
+ create_table :dl_keyed_belongs_to_soft_deletes, force: true do |t|
319
+ t.references :destroy_async_parent_soft_delete,
320
+ index: { name: :soft_del_parent }
321
+ t.boolean :deleted
322
+ end
323
+
324
+ create_table :dl_keyed_has_ones, force: true, id: false do |t|
325
+ t.primary_key :has_one_key
326
+
327
+ t.references :destroy_async_parent
328
+ t.references :destroy_async_parent_soft_delete
329
+ end
330
+
331
+ create_table :dl_keyed_has_manies, force: true, id: false do |t|
332
+ t.primary_key :many_key
333
+ t.references :destroy_async_parent
334
+ end
335
+
336
+ create_table :dl_keyed_has_many_throughs, force: true, id: false do |t|
337
+ t.primary_key :through_key
338
+ end
339
+
340
+ create_table :dl_keyed_joins, force: true, id: false do |t|
341
+ t.primary_key :joins_key
342
+ t.references :destroy_async_parent
343
+ t.references :dl_keyed_has_many_through
344
+ end
345
+
346
+ create_table :developers, force: true do |t|
347
+ t.string :name
348
+ t.string :first_name
349
+ t.integer :salary, default: 70000
350
+ t.references :firm, index: false
351
+ t.integer :mentor_id
352
+ if supports_datetime_with_precision?
353
+ t.datetime :legacy_created_at, precision: 6
354
+ t.datetime :legacy_updated_at, precision: 6
355
+ t.datetime :legacy_created_on, precision: 6
356
+ t.datetime :legacy_updated_on, precision: 6
357
+ else
358
+ t.datetime :legacy_created_at
359
+ t.datetime :legacy_updated_at
360
+ t.datetime :legacy_created_on
361
+ t.datetime :legacy_updated_on
362
+ end
363
+ end
364
+
365
+ create_table :developers_projects, force: true, id: false do |t|
366
+ t.integer :developer_id, null: false
367
+ t.integer :project_id, null: false
368
+ t.date :joined_on
369
+ t.integer :access_level, default: 1
370
+ end
371
+
372
+ create_table :dog_lovers, force: true do |t|
373
+ t.integer :trained_dogs_count, default: 0
374
+ t.integer :bred_dogs_count, default: 0
375
+ t.integer :dogs_count, default: 0
376
+ end
377
+
378
+ create_table :dogs, force: true do |t|
379
+ t.integer :trainer_id
380
+ t.integer :breeder_id
381
+ t.integer :dog_lover_id
382
+ t.string :alias
383
+ end
384
+
385
+ create_table :doubloons, force: true do |t|
386
+ t.integer :pirate_id
387
+ t.integer :weight
388
+ end
389
+
390
+ create_table :edges, force: true, id: false do |t|
391
+ t.column :source_id, :integer, null: false
392
+ t.column :sink_id, :integer, null: false
393
+ t.index [:source_id, :sink_id], unique: true, name: "unique_edge_index"
394
+ end
395
+
396
+ create_table :engines, force: true do |t|
397
+ t.references :car, index: false
398
+ end
399
+
400
+ create_table :entrants, force: true do |t|
401
+ t.string :name, null: false
402
+ t.integer :course_id, null: false
403
+ end
404
+
405
+ create_table :entries, force: true do |t|
406
+ t.string :entryable_type, null: false
407
+ t.integer :entryable_id, null: false
408
+ end
409
+
410
+ create_table :essays, force: true do |t|
411
+ t.string :type
412
+ t.string :name
413
+ t.string :writer_id
414
+ t.string :writer_type
415
+ t.string :category_id
416
+ t.string :author_id
417
+ t.references :book
418
+ end
419
+
420
+ create_table :events, force: true do |t|
421
+ t.string :title, limit: 5
422
+ end
423
+
424
+ create_table :eyes, force: true do |t|
425
+ end
426
+
427
+ create_table :families, force: true do |t|
428
+ end
429
+
430
+ create_table :family_trees, force: true do |t|
431
+ t.references :family
432
+ t.references :member
433
+ t.string :token
434
+ end
435
+
436
+ create_table :frogs, force: true do |t|
437
+ t.string :name
438
+ end
439
+
440
+ create_table :funny_jokes, force: true do |t|
441
+ t.string :name
442
+ end
443
+
444
+ create_table :cold_jokes, force: true do |t|
445
+ t.string :cold_name
446
+ end
447
+
448
+ create_table :friendships, force: true do |t|
449
+ t.integer :friend_id
450
+ t.integer :follower_id
451
+ end
452
+
453
+ create_table :goofy_string_id, force: true, id: false do |t|
454
+ t.string :id, null: false
455
+ t.string :info
456
+ end
457
+
458
+ create_table :having, force: true do |t|
459
+ t.string :where
460
+ end
461
+
462
+ create_table :guids, force: true do |t|
463
+ t.column :key, :string
464
+ end
465
+
466
+ create_table :guitars, force: true do |t|
467
+ t.string :color
468
+ end
469
+
470
+ create_table :inept_wizards, force: true do |t|
471
+ t.column :name, :string, null: false
472
+ t.column :city, :string, null: false
473
+ t.column :type, :string
474
+ end
475
+
476
+ create_table :integer_limits, force: true do |t|
477
+ t.integer :"c_int_without_limit"
478
+ (1..8).each do |i|
479
+ t.integer :"c_int_#{i}", limit: i
480
+ end
481
+ end
482
+
483
+ create_table :invoices, force: true do |t|
484
+ t.integer :balance
485
+ if supports_datetime_with_precision?
486
+ t.datetime :updated_at, precision: 6
487
+ else
488
+ t.datetime :updated_at
489
+ end
490
+ end
491
+
492
+ create_table :iris, force: true do |t|
493
+ t.references :eye
494
+ t.string :color
495
+ end
496
+
497
+ create_table :items, force: true do |t|
498
+ t.column :name, :string
499
+ end
500
+
501
+ create_table :jobs, force: true do |t|
502
+ t.integer :ideal_reference_id
503
+ end
504
+
505
+ create_table :jobs_pool, force: true, id: false do |t|
506
+ t.references :job, null: false, index: true
507
+ t.references :user, null: false, index: true
508
+ end
509
+
510
+ create_table :keyboards, force: true, id: false do |t|
511
+ t.primary_key :key_number
512
+ t.string :name
513
+ end
514
+
515
+ create_table :kitchens, force: true do |t|
516
+ end
517
+
518
+ create_table :legacy_things, force: true do |t|
519
+ t.integer :tps_report_number
520
+ t.integer :version, null: false, default: 0
521
+ end
522
+
523
+ create_table :lessons, force: true do |t|
524
+ t.string :name
525
+ end
526
+
527
+ create_table :lessons_students, id: false, force: true do |t|
528
+ t.references :lesson
529
+ t.references :student
530
+ end
531
+
532
+ create_table :students, force: true do |t|
533
+ t.string :name
534
+ t.boolean :active
535
+ t.integer :college_id
536
+ end
537
+
538
+ add_foreign_key :lessons_students, :students, on_delete: :cascade
539
+
540
+ create_table :lint_models, force: true
541
+
542
+ create_table :line_items, force: true do |t|
543
+ t.integer :invoice_id
544
+ t.integer :amount
545
+ end
546
+
547
+ create_table :lions, force: true do |t|
548
+ t.integer :gender
549
+ t.boolean :is_vegetarian, default: false
550
+ end
551
+
552
+ create_table :lock_without_defaults, force: true do |t|
553
+ t.column :title, :string
554
+ t.column :lock_version, :integer
555
+ t.timestamps null: true
556
+ end
557
+
558
+ create_table :lock_without_defaults_cust, force: true do |t|
559
+ t.column :title, :string
560
+ t.column :custom_lock_version, :integer
561
+ t.timestamps null: true
562
+ end
563
+
564
+ create_table :magazines, force: true do |t|
565
+ end
566
+
567
+ create_table :mateys, id: false, force: true do |t|
568
+ t.column :pirate_id, :integer
569
+ t.column :target_id, :integer
570
+ t.column :weight, :integer
571
+ end
572
+
573
+ create_table :members, force: true do |t|
574
+ t.string :name
575
+ t.references :member_type, index: false
576
+ t.references :admittable, polymorphic: true, index: false
577
+ end
578
+
579
+ create_table :member_details, force: true do |t|
580
+ t.integer :member_id
581
+ t.integer :organization_id
582
+ t.string :extra_data
583
+ end
584
+
585
+ create_table :member_friends, force: true, id: false do |t|
586
+ t.integer :member_id
587
+ t.integer :friend_id
588
+ end
589
+
590
+ create_table :memberships, force: true do |t|
591
+ t.datetime :joined_on
592
+ t.integer :club_id, :member_id
593
+ t.boolean :favourite, default: false
594
+ t.integer :type
595
+ t.datetime :created_at
596
+ t.datetime :updated_at
597
+ end
598
+
599
+ create_table :member_types, force: true do |t|
600
+ t.string :name
601
+ end
602
+
603
+ create_table :mentors, force: true do |t|
604
+ t.string :name
605
+ end
606
+
607
+ create_table :messages, force: true do |t|
608
+ t.string :subject
609
+ end
610
+
611
+ create_table :minivans, force: true, id: false do |t|
612
+ t.string :minivan_id
613
+ t.string :name
614
+ t.string :speedometer_id
615
+ t.string :color
616
+ end
617
+
618
+ create_table :minimalistics, force: true do |t|
619
+ end
620
+
621
+ create_table :mixed_case_monkeys, force: true, id: false do |t|
622
+ t.primary_key :monkeyid
623
+ t.integer :fleaCount
624
+ end
625
+
626
+ create_table :mixins, force: true do |t|
627
+ t.integer :parent_id
628
+ t.integer :pos
629
+ t.datetime :created_at
630
+ t.datetime :updated_at
631
+ t.integer :lft
632
+ t.integer :rgt
633
+ t.integer :root_id
634
+ t.string :type
635
+ end
636
+
637
+ create_table :mice, force: true do |t|
638
+ t.string :name
639
+ end
640
+
641
+ create_table :movies, force: true, id: false do |t|
642
+ t.primary_key :movieid
643
+ t.string :name
644
+ end
645
+
646
+ create_table :notifications, force: true do |t|
647
+ t.string :message
648
+ end
649
+
650
+ create_table :numeric_data, force: true do |t|
651
+ t.decimal :bank_balance, precision: 10, scale: 2
652
+ t.decimal :big_bank_balance, precision: 15, scale: 2
653
+ t.decimal :unscaled_bank_balance, precision: 10
654
+ t.decimal :world_population, precision: 20, scale: 0
655
+ t.decimal :my_house_population, precision: 2, scale: 0
656
+ t.decimal :decimal_number
657
+ t.decimal :decimal_number_with_default, precision: 3, scale: 2, default: 2.78
658
+ t.float :temperature
659
+ t.decimal :decimal_number_big_precision, precision: 20
660
+ # Oracle/SQLServer supports precision up to 38
661
+ if current_adapter?(:OracleAdapter, :SQLServerAdapter)
662
+ t.decimal :atoms_in_universe, precision: 38, scale: 0
663
+ else
664
+ t.decimal :atoms_in_universe, precision: 31, scale: 0
665
+ end
666
+ end
667
+
668
+ create_table :orders, force: true do |t|
669
+ t.string :name
670
+ t.integer :billing_customer_id
671
+ t.integer :shipping_customer_id
672
+ end
673
+
674
+ create_table :organizations, force: true do |t|
675
+ t.string :name
676
+ end
677
+
678
+ create_table :owners, primary_key: :owner_id, force: true do |t|
679
+ t.string :name
680
+ if supports_datetime_with_precision?
681
+ t.column :updated_at, :datetime, precision: 6
682
+ else
683
+ t.column :updated_at, :datetime
684
+ end
685
+ t.column :happy_at, :datetime
686
+ t.string :essay_id
687
+ end
688
+
689
+ create_table :paint_colors, force: true do |t|
690
+ t.integer :non_poly_one_id
691
+ end
692
+
693
+ create_table :paint_textures, force: true do |t|
694
+ t.integer :non_poly_two_id
695
+ end
696
+
697
+ disable_referential_integrity do
698
+ create_table :parrots, force: :cascade do |t|
699
+ t.string :name
700
+ t.string :color
701
+ t.string :parrot_sti_class
702
+ t.integer :killer_id
703
+ t.integer :updated_count, :integer, default: 0
704
+ if supports_datetime_with_precision?
705
+ t.datetime :created_at, precision: 0
706
+ t.datetime :created_on, precision: 0
707
+ t.datetime :updated_at, precision: 0
708
+ t.datetime :updated_on, precision: 0
709
+ else
710
+ t.datetime :created_at
711
+ t.datetime :created_on
712
+ t.datetime :updated_at
713
+ t.datetime :updated_on
714
+ end
715
+ end
716
+
717
+ create_table :pirates, force: :cascade do |t|
718
+ t.string :catchphrase
719
+ t.integer :parrot_id
720
+ t.integer :non_validated_parrot_id
721
+ if supports_datetime_with_precision?
722
+ t.datetime :created_on, precision: 6
723
+ t.datetime :updated_on, precision: 6
724
+ else
725
+ t.datetime :created_on
726
+ t.datetime :updated_on
727
+ end
728
+ end
729
+
730
+ create_table :treasures, force: :cascade do |t|
731
+ t.string :name
732
+ t.string :type
733
+ t.references :looter, polymorphic: true
734
+ t.references :ship
735
+ end
736
+
737
+ create_table :parrots_pirates, id: false, force: true do |t|
738
+ t.references :parrot, foreign_key: true
739
+ t.references :pirate, foreign_key: true
740
+ end
741
+
742
+ create_table :parrots_treasures, id: false, force: true do |t|
743
+ t.references :parrot, foreign_key: true
744
+ t.references :treasure, foreign_key: true
745
+ end
746
+ end
747
+
748
+ create_table :people, force: true do |t|
749
+ t.string :first_name, null: false
750
+ t.references :primary_contact
751
+ t.string :gender, limit: 1
752
+ t.references :number1_fan
753
+ t.integer :lock_version, null: false, default: 0
754
+ t.string :comments
755
+ t.integer :followers_count, default: 0
756
+ t.integer :friends_too_count, default: 0
757
+ t.references :best_friend
758
+ t.references :best_friend_of
759
+ t.integer :insures, null: false, default: 0
760
+ t.timestamp :born_at
761
+ t.timestamps null: false
762
+ end
763
+
764
+ create_table :peoples_treasures, id: false, force: true do |t|
765
+ t.column :rich_person_id, :integer
766
+ t.column :treasure_id, :integer
767
+ end
768
+
769
+ create_table :personal_legacy_things, force: true do |t|
770
+ t.integer :tps_report_number
771
+ t.integer :person_id
772
+ t.integer :version, null: false, default: 0
773
+ end
774
+
775
+ create_table :pets, primary_key: :pet_id, force: true do |t|
776
+ t.string :name
777
+ t.integer :owner_id, :integer
778
+ t.timestamps
779
+ end
780
+
781
+ create_table :pets_treasures, force: true do |t|
782
+ t.column :treasure_id, :integer
783
+ t.column :pet_id, :integer
784
+ t.column :rainbow_color, :string
785
+ end
786
+
787
+ create_table :posts, force: true do |t|
788
+ t.references :author, type: :integer
789
+ t.string :title, null: false
790
+ # use VARCHAR2(4000) instead of CLOB datatype as CLOB data type has many limitations in
791
+ # Oracle SELECT WHERE clause which causes many unit test failures
792
+ if current_adapter?(:OracleAdapter, :IBM_DBAdapter)
793
+ t.string :body, null: false, limit: 4000
794
+ else
795
+ t.text :body, null: false
796
+ end
797
+ t.string :type
798
+ t.integer :legacy_comments_count, default: 0
799
+ t.integer :taggings_with_delete_all_count, default: 0
800
+ t.integer :taggings_with_destroy_count, default: 0
801
+ t.integer :tags_count, default: 0
802
+ t.integer :indestructible_tags_count, default: 0
803
+ t.integer :tags_with_destroy_count, default: 0
804
+ t.integer :tags_with_nullify_count, default: 0
805
+ end
806
+
807
+ create_table :serialized_posts, force: true do |t|
808
+ t.integer :author_id
809
+ t.string :title, null: false
810
+ end
811
+
812
+ create_table :images, force: true do |t|
813
+ t.integer :imageable_identifier
814
+ t.string :imageable_class
815
+ end
816
+
817
+ create_table :price_estimates, force: true do |t|
818
+ t.string :estimate_of_type
819
+ t.integer :estimate_of_id
820
+ t.integer :price
821
+ t.string :currency
822
+ end
823
+
824
+ create_table :products, force: true do |t|
825
+ t.references :collection
826
+ t.references :type
827
+ t.string :name
828
+ t.decimal :price
829
+ t.decimal :discounted_price
830
+ end
831
+
832
+ add_check_constraint :products, "price > discounted_price", name: "products_price_check"
833
+
834
+ create_table :product_types, force: true do |t|
835
+ t.string :name
836
+ end
837
+
838
+ create_table :projects, force: true do |t|
839
+ t.string :name
840
+ t.string :type
841
+ t.references :firm, index: false
842
+ t.integer :mentor_id
843
+ end
844
+
845
+ create_table :randomly_named_table1, force: true do |t|
846
+ t.string :some_attribute
847
+ t.integer :another_attribute
848
+ end
849
+
850
+ create_table :randomly_named_table2, force: true do |t|
851
+ t.string :some_attribute
852
+ t.integer :another_attribute
853
+ end
854
+
855
+ create_table :randomly_named_table3, force: true do |t|
856
+ t.string :some_attribute
857
+ t.integer :another_attribute
858
+ end
859
+
860
+ create_table :ratings, force: true do |t|
861
+ t.integer :comment_id
862
+ t.integer :value
863
+ end
864
+
865
+ create_table :readers, force: true do |t|
866
+ t.integer :post_id, null: false
867
+ t.integer :person_id, null: false
868
+ t.boolean :skimmer, default: false
869
+ t.integer :first_post_id
870
+ end
871
+
872
+ create_table :references, force: true do |t|
873
+ t.integer :person_id
874
+ t.integer :job_id
875
+ t.boolean :favourite
876
+ t.integer :lock_version, default: 0
877
+ end
878
+
879
+ create_table :rooms, force: true do |t|
880
+ t.references :user
881
+ t.references :owner
882
+ end
883
+
884
+ disable_referential_integrity do
885
+ create_table :seminars, force: :cascade do |t|
886
+ t.string :name
887
+ end
888
+
889
+ create_table :sessions, force: :cascade do |t|
890
+ t.date :start_date
891
+ t.date :end_date
892
+ t.string :name
893
+ end
894
+
895
+ create_table :sections, force: :cascade do |t|
896
+ t.string :short_name
897
+ t.belongs_to :session, foreign_key: true
898
+ t.belongs_to :seminar, foreign_key: true
899
+ end
900
+ end
901
+
902
+ create_table :shape_expressions, force: true do |t|
903
+ t.string :paint_type
904
+ t.integer :paint_id
905
+ t.string :shape_type
906
+ t.integer :shape_id
907
+ end
908
+
909
+ create_table :ships, force: true do |t|
910
+ t.string :name
911
+ t.integer :pirate_id
912
+ t.belongs_to :developer
913
+ t.integer :update_only_pirate_id
914
+ # Conventionally named column for counter_cache
915
+ t.integer :treasures_count, default: 0
916
+ t.datetime :created_at
917
+ t.datetime :created_on
918
+ t.datetime :updated_at
919
+ t.datetime :updated_on
920
+ end
921
+
922
+ create_table :ship_parts, force: true do |t|
923
+ t.string :name
924
+ t.integer :ship_id
925
+ if supports_datetime_with_precision?
926
+ t.datetime :updated_at, precision: 6
927
+ else
928
+ t.datetime :updated_at
929
+ end
930
+ end
931
+
932
+ create_table :squeaks, force: true do |t|
933
+ t.integer :mouse_id
934
+ end
935
+
936
+ create_table :prisoners, force: true do |t|
937
+ t.belongs_to :ship
938
+ end
939
+
940
+ create_table :sinks, force: true do |t|
941
+ t.references :kitchen
942
+ end
943
+
944
+ create_table :shop_accounts, force: true do |t|
945
+ t.references :customer
946
+ t.references :customer_carrier
947
+ end
948
+
949
+ create_table :speedometers, force: true, id: false do |t|
950
+ t.string :speedometer_id
951
+ t.string :name
952
+ t.string :dashboard_id
953
+ end
954
+
955
+ create_table :sponsors, force: true do |t|
956
+ t.integer :club_id
957
+ t.references :sponsorable, polymorphic: true, index: false
958
+ t.references :sponsor, polymorphic: true, index: false
959
+ end
960
+
961
+ create_table :string_key_objects, id: false, force: true do |t|
962
+ t.string :id, null: false
963
+ t.string :name
964
+ t.integer :lock_version, null: false, default: 0
965
+ t.index :id, unique: true
966
+ end
967
+
968
+ create_table :subscribers, id: false, force: true do |t|
969
+ t.string :nick, null: false
970
+ t.string :name
971
+ t.integer :id
972
+ t.integer :books_count, null: false, default: 0
973
+ t.integer :update_count, null: false, default: 0
974
+ t.index :nick, unique: true
975
+ end
976
+
977
+ create_table :subscriptions, force: true do |t|
978
+ t.string :subscriber_id
979
+ t.integer :book_id
980
+ end
981
+
982
+ create_table :tags, force: true do |t|
983
+ t.column :name, :string
984
+ t.column :taggings_count, :integer, default: 0
985
+ end
986
+
987
+ create_table :taggings, force: true do |t|
988
+ t.column :tag_id, :integer
989
+ t.column :super_tag_id, :integer
990
+ t.column :taggable_type, :string
991
+ t.column :taggable_id, :integer
992
+ t.string :comment
993
+ t.string :type
994
+ end
995
+
996
+ create_table :tasks, force: true do |t|
997
+ t.datetime :starting
998
+ t.datetime :ending
999
+ end
1000
+
1001
+ create_table :topics, force: true do |t|
1002
+ t.string :title, limit: 250
1003
+ t.string :author_name
1004
+ t.string :author_email_address
1005
+ if supports_datetime_with_precision?
1006
+ t.datetime :written_on, precision: 6
1007
+ else
1008
+ t.datetime :written_on
1009
+ end
1010
+ t.time :bonus_time
1011
+ t.date :last_read
1012
+ # use VARCHAR2(4000) instead of CLOB datatype as CLOB data type has many limitations in
1013
+ # Oracle SELECT WHERE clause which causes many unit test failures
1014
+ if current_adapter?(:OracleAdapter)
1015
+ t.string :content, limit: 4000
1016
+ t.string :important, limit: 4000
1017
+ else
1018
+ t.text :content
1019
+ t.text :important
1020
+ end
1021
+ t.boolean :approved, default: true
1022
+ t.integer :replies_count, default: 0
1023
+ t.integer :unique_replies_count, default: 0
1024
+ t.integer :parent_id
1025
+ t.string :parent_title
1026
+ t.string :type
1027
+ t.string :group
1028
+ t.timestamps null: true
1029
+ t.index [:author_name, :title]
1030
+ end
1031
+
1032
+ create_table :toys, primary_key: :toy_id, force: true do |t|
1033
+ t.string :name
1034
+ t.integer :pet_id, :integer
1035
+ t.timestamps null: false
1036
+ end
1037
+
1038
+ create_table :traffic_lights, force: true do |t|
1039
+ t.string :location
1040
+ t.string :state
1041
+ t.text :long_state, null: false
1042
+ t.datetime :created_at
1043
+ t.datetime :updated_at
1044
+ end
1045
+
1046
+ create_table :tuning_pegs, force: true do |t|
1047
+ t.integer :guitar_id
1048
+ t.float :pitch
1049
+ end
1050
+
1051
+ create_table :tyres, force: true do |t|
1052
+ t.integer :car_id
1053
+ end
1054
+
1055
+ create_table :unused_destroy_asyncs, force: true do |t|
1056
+ end
1057
+
1058
+ create_table :unused_belongs_to, force: true do |t|
1059
+ t.belongs_to :unused_destroy_async
1060
+ end
1061
+
1062
+ create_table :variants, force: true do |t|
1063
+ t.references :product
1064
+ t.string :name
1065
+ end
1066
+
1067
+ create_table :vertices, force: true do |t|
1068
+ t.column :label, :string
1069
+ end
1070
+
1071
+ create_table "warehouse_things", force: true do |t|
1072
+ t.integer :value
1073
+ end
1074
+
1075
+ [:circles, :squares, :triangles, :non_poly_ones, :non_poly_twos].each do |t|
1076
+ create_table(t, force: true) { }
1077
+ end
1078
+
1079
+ create_table :humans, force: true do |t|
1080
+ t.string :name
1081
+ end
1082
+
1083
+ create_table :faces, force: true do |t|
1084
+ t.string :description
1085
+ t.integer :human_id
1086
+ t.integer :polymorphic_human_id
1087
+ t.string :polymorphic_human_type
1088
+ t.integer :poly_human_without_inverse_id
1089
+ t.string :poly_human_without_inverse_type
1090
+ t.integer :puzzled_polymorphic_human_id
1091
+ t.string :puzzled_polymorphic_human_type
1092
+ t.references :super_human, polymorphic: true, index: false
1093
+ end
1094
+
1095
+ create_table :interests, force: true do |t|
1096
+ t.string :topic
1097
+ t.integer :human_id
1098
+ t.integer :polymorphic_human_id
1099
+ t.string :polymorphic_human_type
1100
+ t.integer :zine_id
1101
+ end
1102
+
1103
+ create_table :zines, force: true do |t|
1104
+ t.string :title
1105
+ end
1106
+
1107
+ create_table :strict_zines, force: true do |t|
1108
+ t.string :title
1109
+ end
1110
+
1111
+ create_table :wheels, force: true do |t|
1112
+ t.integer :size
1113
+ t.references :wheelable, polymorphic: true
1114
+ end
1115
+
1116
+ create_table :countries, force: true, id: false do |t|
1117
+ t.string :country_id, primary_key: true
1118
+ t.string :name
1119
+ end
1120
+
1121
+ create_table :treaties, force: true, id: false do |t|
1122
+ t.string :treaty_id, primary_key: true
1123
+ t.string :name
1124
+ end
1125
+
1126
+ create_table :countries_treaties, force: true, primary_key: [:country_id, :treaty_id] do |t|
1127
+ t.string :country_id, null: false
1128
+ t.string :treaty_id, null: false
1129
+ end
1130
+
1131
+ create_table :liquid, force: true do |t|
1132
+ t.string :name
1133
+ end
1134
+ create_table :molecules, force: true do |t|
1135
+ t.integer :liquid_id
1136
+ t.string :name
1137
+ end
1138
+ create_table :electrons, force: true do |t|
1139
+ t.integer :molecule_id
1140
+ t.string :name
1141
+ end
1142
+ create_table :weirds, force: true do |t|
1143
+ t.string "a$b"
1144
+ t.string "なまえ"
1145
+ t.string "from"
1146
+ end
1147
+
1148
+ create_table :nodes, force: true do |t|
1149
+ t.integer :tree_id
1150
+ t.integer :parent_id
1151
+ t.string :name
1152
+ t.datetime :updated_at
1153
+ end
1154
+ create_table :trees, force: true do |t|
1155
+ t.string :name
1156
+ t.datetime :updated_at
1157
+ end
1158
+
1159
+ create_table :hotels, force: true do |t|
1160
+ end
1161
+ create_table :departments, force: true do |t|
1162
+ t.integer :hotel_id
1163
+ end
1164
+ create_table :cake_designers, force: true do |t|
1165
+ end
1166
+ create_table :drink_designers, force: true do |t|
1167
+ t.string :name
1168
+ end
1169
+ create_table :chefs, force: true do |t|
1170
+ t.integer :employable_id
1171
+ t.string :employable_type
1172
+ t.integer :department_id
1173
+ t.string :employable_list_type
1174
+ t.integer :employable_list_id
1175
+ t.timestamps
1176
+ end
1177
+ create_table :recipes, force: true do |t|
1178
+ t.integer :chef_id
1179
+ t.integer :hotel_id
1180
+ end
1181
+
1182
+ create_table :records, force: true do |t|
1183
+ end
1184
+
1185
+ disable_referential_integrity do
1186
+ create_table :fk_test_has_pk, primary_key: "pk_id", force: :cascade do |t|
1187
+ end
1188
+
1189
+ create_table :fk_test_has_fk, force: true do |t|
1190
+ t.references :fk, null: false
1191
+ t.foreign_key :fk_test_has_pk, column: "fk_id", name: "fk_name", primary_key: "pk_id"
1192
+ end
1193
+ end
1194
+
1195
+ create_table :overloaded_types, force: true do |t|
1196
+ t.float :overloaded_float, default: 500
1197
+ t.float :unoverloaded_float
1198
+ t.string :overloaded_string_with_limit, limit: 255
1199
+ t.string :string_with_default, default: "the original default"
1200
+ t.string :inferred_string, limit: 255
1201
+ t.datetime :starts_at, :ends_at
1202
+ end
1203
+
1204
+ create_table :users, force: true do |t|
1205
+ t.string :token
1206
+ t.string :auth_token
1207
+ end
1208
+
1209
+ create_table :test_with_keyword_column_name, force: true do |t|
1210
+ t.string :desc
1211
+ end
1212
+
1213
+ create_table :non_primary_keys, force: true, id: false do |t|
1214
+ t.integer :id
1215
+ t.datetime :created_at
1216
+ end
1217
+ end
1218
+
1219
+ Course.connection.create_table :courses, force: true do |t|
1220
+ t.column :name, :string, null: false
1221
+ t.column :college_id, :integer
1222
+ end
1223
+
1224
+ College.connection.create_table :colleges, force: true do |t|
1225
+ t.column :name, :string, null: false
1226
+ end
1227
+
1228
+ Professor.connection.create_table :professors, force: true do |t|
1229
+ t.column :name, :string, null: false
1230
+ end
1231
+
1232
+ Professor.connection.create_table :courses_professors, id: false, force: true do |t|
1233
+ t.references :course
1234
+ t.references :professor
1235
+ end
1236
+
1237
+ OtherDog.connection.create_table :dogs, force: true