ibm_db 5.6.1 → 5.7.0

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 (592) hide show
  1. checksums.yaml +4 -4
  2. data/ext/Makefile +13 -9
  3. data/ext/extconf.rb +176 -110
  4. data/ext/ibm_db.c +60 -0
  5. data/ext/ibm_db.o +0 -0
  6. data/ext/ibm_db.so +0 -0
  7. data/ext/mkmf.log +6 -6
  8. data/ext/ruby_ibm_db_cli.c +14 -10
  9. data/ext/ruby_ibm_db_cli.h +4 -0
  10. data/ext/ruby_ibm_db_cli.o +0 -0
  11. data/lib/IBM_DB.rb +2 -2
  12. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +1254 -277
  13. data/test/active_record/connection_adapters/fake_legacy_adapter.rb +17 -0
  14. data/test/active_record/connection_adapters/fake_misleading_legacy_adapter.rb +8 -0
  15. data/test/activejob/destroy_association_async_job_test.rb +62 -0
  16. data/test/activejob/destroy_association_async_test.rb +147 -11
  17. data/test/activejob/job_runtime_test.rb +41 -0
  18. data/test/activejob/unloadable_base_job.rb +3 -0
  19. data/test/cases/active_record_schema_test.rb +196 -0
  20. data/test/cases/active_record_test.rb +21 -0
  21. data/test/cases/adapter_prevent_writes_test.rb +26 -202
  22. data/test/cases/adapter_test.rb +592 -82
  23. data/test/cases/adapters/abstract_mysql_adapter/active_schema_test.rb +210 -0
  24. data/test/cases/adapters/abstract_mysql_adapter/adapter_prevent_writes_test.rb +111 -0
  25. data/test/cases/adapters/abstract_mysql_adapter/auto_increment_test.rb +48 -0
  26. data/test/cases/adapters/abstract_mysql_adapter/bind_parameter_test.rb +91 -0
  27. data/test/cases/adapters/abstract_mysql_adapter/case_sensitivity_test.rb +65 -0
  28. data/test/cases/adapters/abstract_mysql_adapter/charset_collation_test.rb +85 -0
  29. data/test/cases/adapters/abstract_mysql_adapter/connection_test.rb +267 -0
  30. data/test/cases/adapters/abstract_mysql_adapter/count_deleted_rows_with_lock_test.rb +29 -0
  31. data/test/cases/adapters/abstract_mysql_adapter/json_test.rb +24 -0
  32. data/test/cases/adapters/abstract_mysql_adapter/mysql_boolean_test.rb +102 -0
  33. data/test/cases/adapters/abstract_mysql_adapter/mysql_enum_test.rb +47 -0
  34. data/test/cases/adapters/abstract_mysql_adapter/mysql_explain_test.rb +71 -0
  35. data/test/cases/adapters/abstract_mysql_adapter/nested_deadlock_test.rb +191 -0
  36. data/test/cases/adapters/abstract_mysql_adapter/optimizer_hints_test.rb +69 -0
  37. data/test/cases/adapters/abstract_mysql_adapter/quoting_test.rb +49 -0
  38. data/test/cases/adapters/abstract_mysql_adapter/schema_migrations_test.rb +68 -0
  39. data/test/cases/adapters/abstract_mysql_adapter/schema_test.rb +130 -0
  40. data/test/cases/adapters/abstract_mysql_adapter/set_test.rb +32 -0
  41. data/test/cases/adapters/abstract_mysql_adapter/sp_test.rb +39 -0
  42. data/test/cases/adapters/abstract_mysql_adapter/sql_types_test.rb +16 -0
  43. data/test/cases/adapters/abstract_mysql_adapter/table_options_test.rb +125 -0
  44. data/test/cases/adapters/abstract_mysql_adapter/transaction_test.rb +204 -0
  45. data/test/cases/adapters/abstract_mysql_adapter/unsigned_type_test.rb +77 -0
  46. data/test/cases/adapters/abstract_mysql_adapter/virtual_column_test.rb +69 -0
  47. data/test/cases/adapters/abstract_mysql_adapter/warnings_test.rb +109 -0
  48. data/test/cases/adapters/mysql2/check_constraint_quoting_test.rb +35 -0
  49. data/test/cases/adapters/mysql2/dbconsole_test.rb +87 -0
  50. data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +136 -10
  51. data/test/cases/adapters/mysql2/mysql2_rake_test.rb +433 -0
  52. data/test/cases/adapters/postgresql/active_schema_test.rb +8 -4
  53. data/test/cases/adapters/postgresql/array_test.rb +6 -6
  54. data/test/cases/adapters/postgresql/bind_parameter_test.rb +52 -0
  55. data/test/cases/adapters/postgresql/bit_string_test.rb +2 -2
  56. data/test/cases/adapters/postgresql/bytea_test.rb +3 -3
  57. data/test/cases/adapters/postgresql/case_insensitive_test.rb +1 -1
  58. data/test/cases/adapters/postgresql/change_schema_test.rb +32 -1
  59. data/test/cases/adapters/postgresql/cidr_test.rb +17 -0
  60. data/test/cases/adapters/postgresql/citext_test.rb +7 -1
  61. data/test/cases/adapters/postgresql/collation_test.rb +1 -1
  62. data/test/cases/adapters/postgresql/composite_test.rb +1 -1
  63. data/test/cases/adapters/postgresql/connection_test.rb +43 -36
  64. data/test/cases/adapters/postgresql/create_unlogged_tables_test.rb +3 -2
  65. data/test/cases/adapters/postgresql/datatype_test.rb +9 -4
  66. data/test/cases/adapters/postgresql/date_test.rb +2 -2
  67. data/test/cases/adapters/postgresql/dbconsole_test.rb +109 -0
  68. data/test/cases/adapters/postgresql/deferred_constraints_test.rb +55 -0
  69. data/test/cases/adapters/postgresql/domain_test.rb +1 -1
  70. data/test/cases/adapters/postgresql/enum_test.rb +208 -8
  71. data/test/cases/adapters/postgresql/explain_test.rb +25 -6
  72. data/test/cases/adapters/postgresql/extension_migration_test.rb +51 -9
  73. data/test/cases/adapters/postgresql/foreign_table_test.rb +3 -3
  74. data/test/cases/adapters/postgresql/full_text_test.rb +1 -1
  75. data/test/cases/adapters/postgresql/geometric_test.rb +13 -6
  76. data/test/cases/adapters/postgresql/hstore_test.rb +22 -32
  77. data/test/cases/adapters/postgresql/infinity_test.rb +13 -2
  78. data/test/cases/adapters/postgresql/integer_test.rb +1 -1
  79. data/test/cases/adapters/postgresql/interval_test.rb +9 -17
  80. data/test/cases/adapters/postgresql/invertible_migration_test.rb +139 -0
  81. data/test/cases/adapters/postgresql/json_test.rb +5 -0
  82. data/test/cases/adapters/postgresql/ltree_test.rb +1 -1
  83. data/test/cases/adapters/postgresql/money_test.rb +17 -9
  84. data/test/cases/adapters/postgresql/network_test.rb +13 -1
  85. data/test/cases/adapters/postgresql/numbers_test.rb +18 -2
  86. data/test/cases/adapters/postgresql/optimizer_hints_test.rb +9 -9
  87. data/test/cases/adapters/postgresql/partitions_test.rb +5 -2
  88. data/test/cases/adapters/postgresql/postgresql_adapter_prevent_writes_test.rb +7 -110
  89. data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +403 -20
  90. data/test/cases/adapters/postgresql/postgresql_rake_test.rb +637 -0
  91. data/test/cases/adapters/postgresql/prepared_statements_disabled_test.rb +1 -1
  92. data/test/cases/adapters/postgresql/quoting_test.rb +60 -1
  93. data/test/cases/adapters/postgresql/range_test.rb +185 -21
  94. data/test/cases/adapters/postgresql/referential_integrity_test.rb +29 -5
  95. data/test/cases/adapters/postgresql/rename_table_test.rb +35 -8
  96. data/test/cases/adapters/postgresql/schema_authorization_test.rb +2 -2
  97. data/test/cases/adapters/postgresql/schema_test.rb +270 -20
  98. data/test/cases/adapters/postgresql/serial_test.rb +5 -5
  99. data/test/cases/adapters/postgresql/statement_pool_test.rb +6 -2
  100. data/test/cases/adapters/postgresql/timestamp_test.rb +122 -5
  101. data/test/cases/adapters/postgresql/transaction_nested_test.rb +130 -6
  102. data/test/cases/adapters/postgresql/transaction_test.rb +37 -11
  103. data/test/cases/adapters/postgresql/type_lookup_test.rb +1 -1
  104. data/test/cases/adapters/postgresql/uuid_test.rb +77 -9
  105. data/test/cases/adapters/postgresql/virtual_column_test.rb +114 -0
  106. data/test/cases/adapters/postgresql/xml_test.rb +1 -1
  107. data/test/cases/adapters/sqlite3/bind_parameter_test.rb +52 -0
  108. data/test/cases/adapters/sqlite3/collation_test.rb +1 -1
  109. data/test/cases/adapters/sqlite3/copy_table_test.rb +28 -7
  110. data/test/cases/adapters/sqlite3/dbconsole_test.rb +81 -0
  111. data/test/cases/adapters/sqlite3/explain_test.rb +3 -3
  112. data/test/cases/adapters/sqlite3/quoting_test.rb +34 -3
  113. data/test/cases/adapters/sqlite3/sqlite3_adapter_prevent_writes_test.rb +9 -102
  114. data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +727 -72
  115. data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +6 -3
  116. data/test/cases/adapters/sqlite3/sqlite_rake_test.rb +264 -0
  117. data/test/cases/adapters/sqlite3/statement_pool_test.rb +1 -1
  118. data/test/cases/adapters/sqlite3/transaction_test.rb +6 -3
  119. data/test/cases/adapters/sqlite3/virtual_column_test.rb +138 -0
  120. data/test/cases/adapters/sqlite3/virtual_table_test.rb +51 -0
  121. data/test/cases/adapters/trilogy/dbconsole_test.rb +76 -0
  122. data/test/cases/adapters/trilogy/trilogy_adapter_test.rb +473 -0
  123. data/test/cases/adapters/trilogy/trilogy_rake_test.rb +433 -0
  124. data/test/cases/aggregations_test.rb +16 -0
  125. data/test/cases/annotate_test.rb +14 -12
  126. data/test/cases/arel/attributes/attribute_test.rb +86 -47
  127. data/test/cases/arel/collectors/bind_test.rb +1 -1
  128. data/test/cases/arel/collectors/composite_test.rb +11 -1
  129. data/test/cases/arel/collectors/sql_string_test.rb +1 -1
  130. data/test/cases/arel/collectors/substitute_bind_collector_test.rb +1 -1
  131. data/test/cases/arel/delete_manager_test.rb +0 -6
  132. data/test/cases/arel/factory_methods_test.rb +45 -0
  133. data/test/cases/arel/insert_manager_test.rb +1 -7
  134. data/test/cases/arel/nodes/as_test.rb +12 -0
  135. data/test/cases/arel/nodes/ascending_test.rb +1 -1
  136. data/test/cases/arel/nodes/bin_test.rb +1 -1
  137. data/test/cases/arel/nodes/bound_sql_literal_test.rb +31 -0
  138. data/test/cases/arel/nodes/cte_test.rb +46 -0
  139. data/test/cases/arel/nodes/descending_test.rb +1 -1
  140. data/test/cases/arel/nodes/equality_test.rb +3 -3
  141. data/test/cases/arel/nodes/filter_test.rb +37 -0
  142. data/test/cases/arel/nodes/fragments_test.rb +38 -0
  143. data/test/cases/arel/nodes/homogeneous_in_test.rb +52 -0
  144. data/test/cases/arel/nodes/infix_operation_test.rb +1 -1
  145. data/test/cases/arel/nodes/node_test.rb +1 -1
  146. data/test/cases/arel/nodes/or_test.rb +2 -2
  147. data/test/cases/arel/nodes/sql_literal_test.rb +18 -1
  148. data/test/cases/arel/nodes/table_alias_test.rb +12 -0
  149. data/test/cases/arel/nodes/unary_operation_test.rb +1 -1
  150. data/test/cases/arel/nodes/update_statement_test.rb +4 -0
  151. data/test/cases/arel/nodes_test.rb +3 -2
  152. data/test/cases/arel/select_manager_test.rb +12 -12
  153. data/test/cases/arel/support/fake_record.rb +22 -17
  154. data/test/cases/arel/table_test.rb +15 -25
  155. data/test/cases/arel/update_manager_test.rb +51 -6
  156. data/test/cases/arel/visitors/dispatch_contamination_test.rb +1 -1
  157. data/test/cases/arel/visitors/dot_test.rb +177 -2
  158. data/test/cases/arel/visitors/mysql_test.rb +49 -1
  159. data/test/cases/arel/visitors/postgres_test.rb +1 -31
  160. data/test/cases/arel/visitors/sqlite_test.rb +1 -1
  161. data/test/cases/arel/visitors/to_sql_test.rb +330 -20
  162. data/test/cases/assertions/query_assertions_test.rb +136 -0
  163. data/test/cases/associations/belongs_to_associations_test.rb +502 -41
  164. data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +1 -1
  165. data/test/cases/associations/cascaded_eager_loading_test.rb +26 -15
  166. data/test/cases/associations/eager_load_nested_include_test.rb +1 -1
  167. data/test/cases/associations/eager_singularization_test.rb +1 -1
  168. data/test/cases/associations/eager_test.rb +255 -93
  169. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +25 -53
  170. data/test/cases/associations/has_many_associations_test.rb +282 -72
  171. data/test/cases/associations/has_many_through_associations_test.rb +172 -45
  172. data/test/cases/associations/has_many_through_disable_joins_associations_test.rb +197 -0
  173. data/test/cases/associations/has_one_associations_test.rb +160 -29
  174. data/test/cases/associations/has_one_through_associations_test.rb +64 -15
  175. data/test/cases/associations/has_one_through_disable_joins_associations_test.rb +82 -0
  176. data/test/cases/associations/inner_join_association_test.rb +36 -6
  177. data/test/cases/associations/inverse_associations_test.rb +177 -40
  178. data/test/cases/associations/join_model_test.rb +17 -12
  179. data/test/cases/associations/left_outer_join_association_test.rb +14 -3
  180. data/test/cases/associations/nested_error_test.rb +116 -0
  181. data/test/cases/associations/nested_through_associations_test.rb +54 -19
  182. data/test/cases/associations/required_test.rb +1 -1
  183. data/test/cases/associations_test.rb +1278 -21
  184. data/test/cases/asynchronous_queries_test.rb +310 -0
  185. data/test/cases/attribute_methods/read_test.rb +6 -0
  186. data/test/cases/attribute_methods/time_zone_converter_test.rb +21 -0
  187. data/test/cases/attribute_methods_test.rb +565 -46
  188. data/test/cases/attributes_test.rb +42 -1
  189. data/test/cases/autosave_association_test.rb +645 -92
  190. data/test/cases/base_prevent_writes_test.rb +28 -159
  191. data/test/cases/base_test.rb +434 -209
  192. data/test/cases/batches_test.rb +441 -57
  193. data/test/cases/binary_test.rb +31 -0
  194. data/test/cases/bind_parameter_test.rb +107 -16
  195. data/test/cases/cache_key_test.rb +7 -7
  196. data/test/cases/calculations_test.rb +541 -110
  197. data/test/cases/callbacks_test.rb +0 -1
  198. data/test/cases/clone_test.rb +5 -4
  199. data/test/cases/coders/yaml_column_test.rb +97 -2
  200. data/test/cases/collection_cache_key_test.rb +24 -16
  201. data/test/cases/column_alias_test.rb +2 -8
  202. data/test/cases/column_definition_test.rb +12 -3
  203. data/test/cases/comment_test.rb +23 -26
  204. data/test/cases/connection_adapters/adapter_leasing_test.rb +9 -9
  205. data/test/cases/connection_adapters/connection_handler_test.rb +145 -99
  206. data/test/cases/connection_adapters/connection_handlers_multi_db_test.rb +79 -55
  207. data/test/cases/connection_adapters/connection_handlers_multi_pool_config_test.rb +17 -20
  208. data/test/cases/connection_adapters/connection_handlers_sharding_db_test.rb +146 -55
  209. data/test/cases/connection_adapters/connection_swapping_nested_test.rb +136 -23
  210. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +96 -27
  211. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +5 -5
  212. data/test/cases/connection_adapters/registration_test.rb +98 -0
  213. data/test/cases/connection_adapters/schema_cache_test.rb +288 -135
  214. data/test/cases/connection_adapters/standalone_connection_test.rb +38 -0
  215. data/test/cases/connection_adapters/statement_pool_test.rb +29 -0
  216. data/test/cases/connection_adapters/type_lookup_test.rb +12 -24
  217. data/test/cases/connection_handling_test.rb +210 -0
  218. data/test/cases/connection_management_test.rb +44 -7
  219. data/test/cases/connection_pool_test.rb +466 -99
  220. data/test/cases/core_test.rb +167 -9
  221. data/test/cases/counter_cache_test.rb +129 -2
  222. data/test/cases/custom_locking_test.rb +3 -3
  223. data/test/cases/database_configurations/hash_config_test.rb +149 -13
  224. data/test/cases/database_configurations/resolver_test.rb +14 -10
  225. data/test/cases/database_configurations/url_config_test.rb +53 -0
  226. data/test/cases/database_configurations_test.rb +86 -43
  227. data/test/cases/database_selector_test.rb +30 -8
  228. data/test/cases/database_statements_test.rb +10 -14
  229. data/test/cases/date_time_precision_test.rb +141 -11
  230. data/test/cases/date_time_test.rb +19 -1
  231. data/test/cases/defaults_test.rb +107 -41
  232. data/test/cases/delegated_type_test.rb +69 -9
  233. data/test/cases/dirty_test.rb +82 -25
  234. data/test/cases/disconnected_test.rb +10 -9
  235. data/test/cases/dup_test.rb +26 -6
  236. data/test/cases/encryption/cipher/aes256_gcm_test.rb +50 -0
  237. data/test/cases/encryption/cipher_test.rb +65 -0
  238. data/test/cases/encryption/concurrency_test.rb +27 -0
  239. data/test/cases/encryption/config_test.rb +21 -0
  240. data/test/cases/encryption/configurable_test.rb +93 -0
  241. data/test/cases/encryption/contexts_test.rb +105 -0
  242. data/test/cases/encryption/derived_secret_key_provider_test.rb +31 -0
  243. data/test/cases/encryption/deterministic_key_provider_test.rb +11 -0
  244. data/test/cases/encryption/encryptable_record_api_test.rb +175 -0
  245. data/test/cases/encryption/encryptable_record_message_pack_serialized_test.rb +42 -0
  246. data/test/cases/encryption/encryptable_record_test.rb +470 -0
  247. data/test/cases/encryption/encrypted_fixtures_test.rb +22 -0
  248. data/test/cases/encryption/encrypting_only_encryptor_test.rb +20 -0
  249. data/test/cases/encryption/encryption_schemes_test.rb +240 -0
  250. data/test/cases/encryption/encryptor_test.rb +113 -0
  251. data/test/cases/encryption/envelope_encryption_key_provider_test.rb +49 -0
  252. data/test/cases/encryption/extended_deterministic_queries_test.rb +81 -0
  253. data/test/cases/encryption/helper.rb +152 -0
  254. data/test/cases/encryption/key_generator_test.rb +55 -0
  255. data/test/cases/encryption/key_provider_test.rb +57 -0
  256. data/test/cases/encryption/key_test.rb +17 -0
  257. data/test/cases/encryption/message_pack_message_serializer_test.rb +70 -0
  258. data/test/cases/encryption/message_serializer_test.rb +82 -0
  259. data/test/cases/encryption/message_test.rb +43 -0
  260. data/test/cases/encryption/null_encryptor_test.rb +21 -0
  261. data/test/cases/encryption/properties_test.rb +69 -0
  262. data/test/cases/encryption/read_only_null_encryptor_test.rb +19 -0
  263. data/test/cases/encryption/scheme_test.rb +58 -0
  264. data/test/cases/encryption/unencrypted_attributes_test.rb +27 -0
  265. data/test/cases/encryption/uniqueness_validations_test.rb +65 -0
  266. data/test/cases/enum_test.rb +374 -72
  267. data/test/cases/errors_test.rb +7 -4
  268. data/test/cases/excluding_test.rb +116 -0
  269. data/test/cases/explain_subscriber_test.rb +6 -1
  270. data/test/cases/explain_test.rb +119 -10
  271. data/test/cases/filter_attributes_test.rb +7 -14
  272. data/test/cases/finder_respond_to_test.rb +3 -3
  273. data/test/cases/finder_test.rb +357 -72
  274. data/test/cases/fixture_set/file_test.rb +9 -0
  275. data/test/cases/fixtures_test.rb +426 -190
  276. data/test/cases/helper.rb +66 -192
  277. data/test/cases/hot_compatibility_test.rb +10 -10
  278. data/test/cases/inheritance_test.rb +51 -61
  279. data/test/cases/inherited_test.rb +40 -0
  280. data/test/cases/insert_all_test.rb +419 -9
  281. data/test/cases/instrumentation_test.rb +202 -30
  282. data/test/cases/integration_test.rb +25 -7
  283. data/test/cases/invalid_connection_test.rb +5 -5
  284. data/test/cases/invertible_migration_test.rb +108 -24
  285. data/test/cases/json_attribute_test.rb +1 -0
  286. data/test/cases/json_serialization_test.rb +5 -5
  287. data/test/cases/json_shared_test_cases.rb +5 -9
  288. data/test/cases/locking_test.rb +67 -31
  289. data/test/cases/log_subscriber_test.rb +17 -15
  290. data/test/cases/marshal_serialization_test.rb +78 -5
  291. data/test/cases/message_pack_test.rb +91 -0
  292. data/test/cases/migration/change_schema_test.rb +77 -46
  293. data/test/cases/migration/change_table_test.rb +129 -114
  294. data/test/cases/migration/check_constraint_test.rb +192 -10
  295. data/test/cases/migration/column_attributes_test.rb +4 -9
  296. data/test/cases/migration/column_positioning_test.rb +2 -2
  297. data/test/cases/migration/columns_test.rb +118 -4
  298. data/test/cases/migration/command_recorder_test.rb +181 -14
  299. data/test/cases/migration/compatibility_test.rb +883 -196
  300. data/test/cases/migration/create_join_table_test.rb +8 -1
  301. data/test/cases/migration/exclusion_constraint_test.rb +192 -0
  302. data/test/cases/migration/foreign_key_test.rb +356 -14
  303. data/test/cases/migration/helper.rb +4 -1
  304. data/test/cases/migration/index_test.rb +67 -2
  305. data/test/cases/migration/invalid_options_test.rb +129 -0
  306. data/test/cases/migration/logger_test.rb +7 -4
  307. data/test/cases/migration/pending_migrations_test.rb +103 -60
  308. data/test/cases/migration/references_foreign_key_test.rb +73 -4
  309. data/test/cases/migration/references_index_test.rb +25 -27
  310. data/test/cases/migration/references_statements_test.rb +27 -3
  311. data/test/cases/migration/rename_table_test.rb +39 -54
  312. data/test/cases/migration/schema_definitions_test.rb +109 -0
  313. data/test/cases/migration/unique_constraint_test.rb +248 -0
  314. data/test/cases/migration_test.rb +677 -220
  315. data/test/cases/migrator_test.rb +102 -75
  316. data/test/cases/multi_db_migrator_test.rb +55 -34
  317. data/test/cases/multiparameter_attributes_test.rb +26 -29
  318. data/test/cases/multiple_db_test.rb +42 -19
  319. data/test/cases/nested_attributes_test.rb +124 -6
  320. data/test/cases/nested_attributes_with_callbacks_test.rb +2 -2
  321. data/test/cases/normalized_attribute_test.rb +117 -0
  322. data/test/cases/null_relation_test.rb +35 -2
  323. data/test/cases/persistence/reload_association_cache_test.rb +20 -0
  324. data/test/cases/persistence_test.rb +629 -22
  325. data/test/cases/pooled_connections_test.rb +57 -56
  326. data/test/cases/prepared_statement_status_test.rb +8 -3
  327. data/test/cases/primary_class_test.rb +134 -0
  328. data/test/cases/primary_keys_test.rb +171 -55
  329. data/test/cases/query_cache_test.rb +558 -263
  330. data/test/cases/query_logs_test.rb +293 -0
  331. data/test/cases/quoting_test.rb +39 -72
  332. data/test/cases/readonly_test.rb +50 -12
  333. data/test/cases/reaper_test.rb +22 -6
  334. data/test/cases/reflection_test.rb +207 -9
  335. data/test/cases/relation/and_test.rb +43 -0
  336. data/test/cases/relation/delegation_test.rb +32 -5
  337. data/test/cases/relation/delete_all_test.rb +27 -6
  338. data/test/cases/relation/field_ordered_values_test.rb +128 -0
  339. data/test/cases/relation/load_async_test.rb +650 -0
  340. data/test/cases/relation/merging_test.rb +80 -109
  341. data/test/cases/relation/mutation_test.rb +12 -7
  342. data/test/cases/relation/or_test.rb +11 -8
  343. data/test/cases/relation/order_test.rb +90 -0
  344. data/test/cases/relation/predicate_builder_test.rb +21 -6
  345. data/test/cases/relation/select_test.rb +162 -3
  346. data/test/cases/relation/structural_compatibility_test.rb +38 -0
  347. data/test/cases/relation/update_all_test.rb +81 -27
  348. data/test/cases/relation/where_chain_test.rb +190 -3
  349. data/test/cases/relation/where_clause_test.rb +43 -1
  350. data/test/cases/relation/where_test.rb +95 -7
  351. data/test/cases/relation/with_test.rb +165 -0
  352. data/test/cases/relation_test.rb +42 -37
  353. data/test/cases/relations_test.rb +436 -138
  354. data/test/cases/reload_models_test.rb +18 -14
  355. data/test/cases/reserved_word_test.rb +2 -1
  356. data/test/cases/result_test.rb +14 -22
  357. data/test/cases/sanitize_test.rb +89 -27
  358. data/test/cases/schema_dumper_test.rb +535 -62
  359. data/test/cases/scoping/default_scoping_test.rb +219 -35
  360. data/test/cases/scoping/named_scoping_test.rb +25 -46
  361. data/test/cases/scoping/relation_scoping_test.rb +112 -4
  362. data/test/cases/secure_password_test.rb +108 -0
  363. data/test/cases/secure_token_test.rb +72 -0
  364. data/test/cases/serialization_test.rb +1 -1
  365. data/test/cases/serialized_attribute_test.rb +305 -60
  366. data/test/cases/shard_keys_test.rb +125 -0
  367. data/test/cases/shard_selector_test.rb +45 -0
  368. data/test/cases/signed_id_test.rb +57 -5
  369. data/test/cases/statement_cache_test.rb +31 -30
  370. data/test/cases/statement_invalid_test.rb +8 -4
  371. data/test/cases/store_test.rb +73 -9
  372. data/test/cases/strict_loading_test.rb +327 -13
  373. data/test/cases/table_metadata_test.rb +16 -0
  374. data/test/cases/tasks/database_tasks_test.rb +517 -244
  375. data/test/cases/test_case.rb +254 -60
  376. data/test/cases/test_case_test.rb +69 -0
  377. data/test/cases/test_databases_test.rb +7 -3
  378. data/test/cases/test_fixtures_test.rb +19 -40
  379. data/test/cases/time_precision_test.rb +17 -5
  380. data/test/cases/timestamp_test.rb +124 -16
  381. data/test/cases/token_for_test.rb +165 -0
  382. data/test/cases/touch_later_test.rb +43 -1
  383. data/test/cases/transaction_callbacks_test.rb +325 -8
  384. data/test/cases/transaction_instrumentation_test.rb +453 -0
  385. data/test/cases/transaction_isolation_test.rb +12 -8
  386. data/test/cases/transactions_test.rb +629 -112
  387. data/test/cases/type/date_time_test.rb +7 -1
  388. data/test/cases/type/time_test.rb +9 -0
  389. data/test/cases/type/type_map_test.rb +108 -73
  390. data/test/cases/type/unsigned_integer_test.rb +12 -0
  391. data/test/cases/type_caster/connection_test.rb +19 -0
  392. data/test/cases/type_test.rb +1 -1
  393. data/test/cases/unconnected_test.rb +7 -7
  394. data/test/cases/unsafe_raw_sql_test.rb +39 -8
  395. data/test/cases/validations/absence_validation_test.rb +1 -1
  396. data/test/cases/validations/association_validation_test.rb +25 -3
  397. data/test/cases/validations/numericality_validation_test.rb +3 -9
  398. data/test/cases/validations/presence_validation_test.rb +1 -1
  399. data/test/cases/validations/uniqueness_validation_test.rb +280 -40
  400. data/test/cases/validations_test.rb +2 -2
  401. data/test/cases/view_test.rb +33 -22
  402. data/test/cases/yaml_serialization_test.rb +23 -17
  403. data/test/config.example.yml +58 -56
  404. data/test/config.rb +1 -0
  405. data/test/fixtures/1_need_quoting.yml +2 -0
  406. data/test/fixtures/accounts.yml +5 -0
  407. data/test/fixtures/aircrafts.yml +7 -0
  408. data/test/fixtures/book_identifiers.yml +11 -0
  409. data/test/fixtures/books.yml +5 -4
  410. data/test/fixtures/cake_designers.yml +5 -0
  411. data/test/fixtures/cars.yml +6 -0
  412. data/test/fixtures/chefs.yml +5 -0
  413. data/test/fixtures/clothing_items.yml +23 -0
  414. data/test/fixtures/clubs.yml +1 -1
  415. data/test/fixtures/comments.yml +2 -1
  416. data/test/fixtures/cpk_authors.yml +8 -0
  417. data/test/fixtures/cpk_books.yml +21 -0
  418. data/test/fixtures/cpk_order_agreements.yml +13 -0
  419. data/test/fixtures/cpk_order_tags.yml +15 -0
  420. data/test/fixtures/cpk_orders.yml +11 -0
  421. data/test/fixtures/cpk_posts.yml +12 -0
  422. data/test/fixtures/cpk_reviews.yml +13 -0
  423. data/test/fixtures/cpk_tags.yml +11 -0
  424. data/test/fixtures/drink_designers.yml +5 -0
  425. data/test/fixtures/encrypted_book_that_ignores_cases.yml +4 -0
  426. data/test/fixtures/encrypted_books.yml +4 -0
  427. data/test/fixtures/fk_object_to_point_to.yml +2 -0
  428. data/test/fixtures/memberships.yml +15 -15
  429. data/test/fixtures/paragraphs.yml +5 -0
  430. data/test/fixtures/parrots.yml +4 -0
  431. data/test/fixtures/people.yml +2 -0
  432. data/test/fixtures/pirates.yml +2 -2
  433. data/test/fixtures/primary_key_error/primary_key_error.yml +6 -0
  434. data/test/fixtures/references.yml +3 -3
  435. data/test/fixtures/sharded_blog_posts.yml +14 -0
  436. data/test/fixtures/sharded_blog_posts_tags.yml +27 -0
  437. data/test/fixtures/sharded_blogs.yml +8 -0
  438. data/test/fixtures/sharded_comments.yml +22 -0
  439. data/test/fixtures/sharded_tags.yml +34 -0
  440. data/test/fixtures/sponsors.yml +2 -2
  441. data/test/fixtures/topics.yml +1 -0
  442. data/test/fixtures/treasures.yml +4 -0
  443. data/test/fixtures/virtual_columns.yml +5 -0
  444. data/test/fixtures/warehouse_things.yml +1 -1
  445. data/test/migrations/old_and_new_versions/20210716122844_add_people_description.rb +5 -0
  446. data/test/migrations/old_and_new_versions/20210716123013_add_people_number_of_legs.rb +5 -0
  447. data/test/migrations/old_and_new_versions/230_add_people_hobby.rb +5 -0
  448. data/test/migrations/old_and_new_versions/231_add_people_last_name.rb +5 -0
  449. data/test/migrations/scope/1_unscoped.rb +7 -0
  450. data/test/migrations/scope/2_mysql_only.mysql.rb +7 -0
  451. data/test/models/admin/user.rb +2 -0
  452. data/test/models/admin/user_json.rb +48 -0
  453. data/test/models/attachment.rb +7 -0
  454. data/test/models/author.rb +70 -3
  455. data/test/models/author_encrypted.rb +16 -0
  456. data/test/models/bird.rb +1 -1
  457. data/test/models/book.rb +18 -11
  458. data/test/models/book_destroy_async.rb +1 -1
  459. data/test/models/book_encrypted.rb +106 -0
  460. data/test/models/book_identifier.rb +5 -0
  461. data/test/models/branch.rb +11 -0
  462. data/test/models/bulb.rb +1 -1
  463. data/test/models/car.rb +8 -1
  464. data/test/models/cat.rb +1 -1
  465. data/test/models/category.rb +3 -1
  466. data/test/models/chat_message.rb +8 -0
  467. data/test/models/chef.rb +52 -0
  468. data/test/models/clothing_item.rb +12 -0
  469. data/test/models/club.rb +4 -1
  470. data/test/models/comment.rb +7 -4
  471. data/test/models/comment_overlapping_counter_cache.rb +15 -0
  472. data/test/models/company.rb +16 -2
  473. data/test/models/computer.rb +1 -0
  474. data/test/models/contact.rb +3 -3
  475. data/test/models/contract.rb +5 -1
  476. data/test/models/cpk/author.rb +9 -0
  477. data/test/models/cpk/book.rb +55 -0
  478. data/test/models/cpk/book_destroy_async.rb +9 -0
  479. data/test/models/cpk/car.rb +9 -0
  480. data/test/models/cpk/car_review.rb +9 -0
  481. data/test/models/cpk/chapter.rb +16 -0
  482. data/test/models/cpk/chapter_destroy_async.rb +10 -0
  483. data/test/models/cpk/comment.rb +9 -0
  484. data/test/models/cpk/order.rb +55 -0
  485. data/test/models/cpk/order_agreement.rb +10 -0
  486. data/test/models/cpk/order_tag.rb +10 -0
  487. data/test/models/cpk/post.rb +10 -0
  488. data/test/models/cpk/posts_tag.rb +10 -0
  489. data/test/models/cpk/review.rb +9 -0
  490. data/test/models/cpk/tag.rb +10 -0
  491. data/test/models/cpk.rb +15 -0
  492. data/test/models/customer.rb +3 -1
  493. data/test/models/destroy_async_parent.rb +1 -1
  494. data/test/models/developer.rb +44 -3
  495. data/test/models/discount.rb +4 -0
  496. data/test/models/drink_designer.rb +1 -0
  497. data/test/models/editor.rb +8 -0
  498. data/test/models/editorship.rb +6 -0
  499. data/test/models/entry.rb +5 -0
  500. data/test/models/essay.rb +6 -1
  501. data/test/models/essay_destroy_async.rb +1 -0
  502. data/test/models/eye.rb +87 -21
  503. data/test/models/face.rb +1 -1
  504. data/test/models/friendship.rb +3 -0
  505. data/test/models/hardback.rb +7 -0
  506. data/test/models/hotel.rb +2 -0
  507. data/test/models/human.rb +2 -2
  508. data/test/models/invoice.rb +2 -1
  509. data/test/models/invokes_an_undefined_method.rb +5 -0
  510. data/test/models/line_item.rb +6 -0
  511. data/test/models/member.rb +9 -4
  512. data/test/models/membership.rb +2 -2
  513. data/test/models/message.rb +2 -1
  514. data/test/models/need_quoting.rb +5 -0
  515. data/test/models/paragraph.rb +5 -0
  516. data/test/models/parrot.rb +6 -3
  517. data/test/models/person.rb +7 -4
  518. data/test/models/pirate.rb +4 -1
  519. data/test/models/pk_autopopulated_by_a_trigger_record.rb +5 -0
  520. data/test/models/post.rb +65 -2
  521. data/test/models/post_encrypted.rb +15 -0
  522. data/test/models/post_with_prefetched_pk.rb +15 -0
  523. data/test/models/project.rb +1 -0
  524. data/test/models/publication.rb +16 -0
  525. data/test/models/raises_argument_error.rb +5 -0
  526. data/test/models/raises_no_method_error.rb +5 -0
  527. data/test/models/recipient.rb +5 -0
  528. data/test/models/reference.rb +1 -1
  529. data/test/models/reply.rb +1 -1
  530. data/test/models/room.rb +3 -0
  531. data/test/models/sharded/blog.rb +12 -0
  532. data/test/models/sharded/blog_post.rb +17 -0
  533. data/test/models/sharded/blog_post_destroy_async.rb +14 -0
  534. data/test/models/sharded/blog_post_tag.rb +11 -0
  535. data/test/models/sharded/blog_post_with_revision.rb +11 -0
  536. data/test/models/sharded/comment.rb +12 -0
  537. data/test/models/sharded/comment_destroy_async.rb +12 -0
  538. data/test/models/sharded/tag.rb +11 -0
  539. data/test/models/sharded.rb +8 -0
  540. data/test/models/ship.rb +1 -1
  541. data/test/models/shipping_line.rb +11 -0
  542. data/test/models/subscriber.rb +1 -0
  543. data/test/models/subscription.rb +3 -1
  544. data/test/models/too_long_table_name.rb +5 -0
  545. data/test/models/topic.rb +3 -1
  546. data/test/models/traffic_light.rb +2 -2
  547. data/test/models/traffic_light_encrypted.rb +21 -0
  548. data/test/models/translation.rb +9 -0
  549. data/test/models/treasure.rb +1 -1
  550. data/test/models/tyre.rb +1 -1
  551. data/test/models/user.rb +16 -0
  552. data/test/models/user_with_invalid_relation.rb +28 -0
  553. data/test/models/uuid_comment.rb +5 -0
  554. data/test/models/uuid_entry.rb +5 -0
  555. data/test/models/uuid_message.rb +5 -0
  556. data/test/models/zine.rb +2 -1
  557. data/test/schema/mysql2_specific_schema.rb +26 -12
  558. data/test/schema/postgresql_specific_schema.rb +121 -13
  559. data/test/schema/schema.rb +361 -103
  560. data/test/schema/sqlite_specific_schema.rb +17 -6
  561. data/test/schema/trilogy_specific_schema.rb +96 -0
  562. data/test/support/adapter_helper.rb +104 -0
  563. data/test/support/async_helper.rb +15 -0
  564. data/test/support/config.rb +1 -1
  565. data/test/support/connection.rb +14 -2
  566. data/test/support/ddl_helper.rb +1 -1
  567. data/test/support/fake_adapter.rb +42 -0
  568. data/test/support/load_schema_helper.rb +22 -0
  569. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_1_topic.dump +0 -0
  570. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_1_topic_associations.dump +0 -0
  571. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_7_1_topic.dump +0 -0
  572. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_7_1_topic_associations.dump +0 -0
  573. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_1_topic.dump +0 -0
  574. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_1_topic_associations.dump +0 -0
  575. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_7_1_topic.dump +0 -0
  576. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_7_1_topic_associations.dump +0 -0
  577. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_1_topic.dump +0 -0
  578. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_1_topic_associations.dump +0 -0
  579. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_7_1_topic.dump +0 -0
  580. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_7_1_topic_associations.dump +0 -0
  581. data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_1_topic.dump +0 -0
  582. data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_1_topic_associations.dump +0 -0
  583. data/test/support/marshal_compatibility_fixtures/SQLite/rails_7_1_topic.dump +0 -0
  584. data/test/support/marshal_compatibility_fixtures/SQLite/rails_7_1_topic_associations.dump +0 -0
  585. data/test/support/marshal_compatibility_fixtures/Trilogy/rails_6_1_topic.dump +0 -0
  586. data/test/support/marshal_compatibility_fixtures/Trilogy/rails_6_1_topic_associations.dump +0 -0
  587. data/test/support/marshal_compatibility_fixtures/Trilogy/rails_7_1_topic.dump +0 -0
  588. data/test/support/marshal_compatibility_fixtures/Trilogy/rails_7_1_topic_associations.dump +0 -0
  589. data/test/support/schema_dumping_helper.rb +15 -9
  590. data/test/support/tools.rb +37 -0
  591. data/test/support/yaml_compatibility_fixtures/rails_4_1_no_symbol.yml +22 -0
  592. metadata +247 -15
@@ -8,11 +8,17 @@ ActiveRecord::Schema.define do
8
8
  # #
9
9
  # ------------------------------------------------------------------- #
10
10
 
11
+ create_table :"\"1_need_quoting\"", force: true do |t|
12
+ t.string :name
13
+ end
14
+
11
15
  create_table :accounts, force: true do |t|
12
16
  t.references :firm, index: false
13
17
  t.string :firm_name
14
18
  t.integer :credit_limit
19
+ t.string :status
15
20
  t.integer "a" * max_identifier_length
21
+ t.datetime :updated_at
16
22
  end
17
23
 
18
24
  create_table :admin_accounts, force: true do |t|
@@ -32,12 +38,29 @@ ActiveRecord::Schema.define do
32
38
  t.string :json_data_empty, null: true, default: "", limit: 1024
33
39
  t.text :params
34
40
  t.references :account
41
+ t.json :json_options
42
+ end
43
+
44
+ create_table :admin_user_jsons, force: true do |t|
45
+ t.string :name
46
+ t.string :settings, null: true, limit: 1024
47
+ t.string :parent, null: true, limit: 1024
48
+ t.string :spouse, null: true, limit: 1024
49
+ t.string :configs, null: true, limit: 1024
50
+ # MySQL does not allow default values for blobs. Fake it out with a
51
+ # big varchar below.
52
+ t.string :preferences, null: true, default: "", limit: 1024
53
+ t.string :json_data, null: true, limit: 1024
54
+ t.string :json_data_empty, null: true, default: "", limit: 1024
55
+ t.text :params
56
+ t.references :account
35
57
  end
36
58
 
37
59
  create_table :aircraft, force: true do |t|
38
60
  t.string :name
39
61
  t.integer :wheels_count, default: 0, null: false
40
62
  t.datetime :wheels_owned_at
63
+ t.timestamp :manufactured_at, default: -> { "CURRENT_TIMESTAMP" }
41
64
  end
42
65
 
43
66
  create_table :articles, force: true do |t|
@@ -53,6 +76,10 @@ ActiveRecord::Schema.define do
53
76
  t.references :tag
54
77
  end
55
78
 
79
+ create_table :attachments, force: true do |t|
80
+ t.references :record, polymorphic: true, null: false
81
+ end
82
+
56
83
  create_table :audit_logs, force: true do |t|
57
84
  t.column :message, :string, null: false
58
85
  t.column :developer_id, :integer, null: false
@@ -65,12 +92,13 @@ ActiveRecord::Schema.define do
65
92
  t.references :author_address_extra
66
93
  t.string :organization_id
67
94
  t.string :owned_essay_id
95
+ t.integer :published_author_id
68
96
  end
69
97
 
70
98
  create_table :author_addresses, force: true do |t|
71
99
  end
72
100
 
73
- add_foreign_key :authors, :author_addresses
101
+ add_foreign_key :authors, :author_addresses, deferrable: :immediate
74
102
 
75
103
  create_table :author_favorites, force: true do |t|
76
104
  t.column :author_id, :integer
@@ -78,14 +106,16 @@ ActiveRecord::Schema.define do
78
106
  end
79
107
 
80
108
  create_table :auto_id_tests, force: true, id: false do |t|
81
- t.primary_key :auto_id
82
109
  t.integer :value
110
+ t.timestamp :published_at, default: -> { "CURRENT_TIMESTAMP" }
111
+ t.primary_key :auto_id
83
112
  end
84
113
 
85
114
  create_table :binaries, force: true do |t|
86
115
  t.string :name
87
116
  t.binary :data
88
117
  t.binary :short_data, limit: 2048
118
+ t.blob :blob_data
89
119
  end
90
120
 
91
121
  create_table :birds, force: true do |t|
@@ -98,6 +128,8 @@ ActiveRecord::Schema.define do
98
128
  default_zero = { default: 0 }
99
129
  t.references :author
100
130
  t.string :format
131
+ t.integer :format_record_id
132
+ t.string :format_record_type
101
133
  t.column :name, :string
102
134
  t.column :status, :integer, **default_zero
103
135
  t.column :last_read, :integer, **default_zero
@@ -110,6 +142,7 @@ ActiveRecord::Schema.define do
110
142
  t.column :cover, :string, default: "hard"
111
143
  t.string :isbn
112
144
  t.string :external_id
145
+ t.column :original_name, :string
113
146
  t.datetime :published_on
114
147
  t.boolean :boolean_status
115
148
  t.index [:author_id, :name], unique: true
@@ -122,11 +155,35 @@ ActiveRecord::Schema.define do
122
155
  t.date :updated_on
123
156
  end
124
157
 
158
+ create_table :book_identifiers, id: :integer, force: true do |t|
159
+ t.references :book
160
+ t.string :id_type, null: false
161
+ t.string :id_value, null: false
162
+ end
163
+
164
+ create_table :encrypted_books, id: :integer, force: true do |t|
165
+ t.references :author
166
+ t.string :format
167
+ t.column :name, :string, default: "<untitled>", limit: 1024
168
+ t.column :original_name, :string
169
+ t.column :logo, :binary
170
+
171
+ t.datetime :created_at
172
+ t.datetime :updated_at
173
+ end
174
+
175
+ create_table :hardbacks, force: true do |t|
176
+ end
177
+
125
178
  create_table :booleans, force: true do |t|
126
179
  t.boolean :value
127
180
  t.boolean :has_fun, null: false, default: false
128
181
  end
129
182
 
183
+ create_table :branches, force: true do |t|
184
+ t.references :branch
185
+ end
186
+
130
187
  create_table :bulbs, primary_key: "ID", force: true do |t|
131
188
  t.integer :car_id
132
189
  t.string :name
@@ -139,10 +196,13 @@ ActiveRecord::Schema.define do
139
196
  end
140
197
 
141
198
  create_table :cars, force: true do |t|
199
+ t.belongs_to :person
142
200
  t.string :name
143
201
  t.integer :engines_count
144
202
  t.integer :wheels_count, default: 0, null: false
145
203
  t.datetime :wheels_owned_at
204
+ t.integer :bulbs_count
205
+ t.integer :custom_tyres_count
146
206
  t.column :lock_version, :integer, null: false, default: 0
147
207
  t.timestamps null: false
148
208
  end
@@ -153,12 +213,12 @@ ActiveRecord::Schema.define do
153
213
  create_table :carriers, force: true
154
214
 
155
215
  create_table :carts, force: true, primary_key: [:shop_id, :id] do |t|
156
- if current_adapter?(:Mysql2Adapter)
216
+ if ActiveRecord::TestCase.current_adapter?(:Mysql2Adapter, :TrilogyAdapter)
157
217
  t.bigint :id, index: true, auto_increment: true, null: false
158
218
  else
159
219
  t.bigint :id, index: true, null: false
160
220
  end
161
- t.bigint :shop_id, null: false
221
+ t.bigint :shop_id
162
222
  t.string :title
163
223
  end
164
224
 
@@ -187,6 +247,135 @@ ActiveRecord::Schema.define do
187
247
  t.references :citation
188
248
  end
189
249
 
250
+ create_table :cpk_books, primary_key: [:author_id, :id], force: true do |t|
251
+ t.integer :author_id
252
+ t.integer :id
253
+ t.string :title
254
+ t.integer :revision
255
+ t.integer :order_id
256
+ t.integer :shop_id
257
+ end
258
+
259
+ create_table :cpk_chapters, primary_key: [:author_id, :id], force: true do |t|
260
+ t.integer :author_id
261
+ t.integer :id
262
+ t.integer :book_id
263
+ t.string :title
264
+ end
265
+
266
+ create_table :cpk_authors, force: true do |t|
267
+ t.string :name
268
+ end
269
+
270
+ create_table :cpk_posts, primary_key: [:title, :author], force: true do |t|
271
+ t.string :title
272
+ t.string :author
273
+ end
274
+
275
+ create_table :cpk_posts_tags, force: true do |t|
276
+ t.string :post_title
277
+ t.string :post_author
278
+ t.integer :tag_id
279
+ end
280
+
281
+ create_table :cpk_comments, force: true do |t|
282
+ t.string :commentable_title
283
+ t.string :commentable_author
284
+ t.string :commentable_type
285
+ t.text :text
286
+ end
287
+
288
+ create_table :cpk_reviews, force: true do |t|
289
+ t.integer :author_id
290
+ t.integer :number
291
+ t.integer :rating
292
+ t.string :comment
293
+ end
294
+
295
+ # not a composite primary key on the db level to get autoincrement behavior for `id` column
296
+ # composite primary key is configured on the model level
297
+ create_table :cpk_orders, force: true do |t|
298
+ t.integer :shop_id
299
+ t.string :status
300
+ t.integer :books_count, default: 0
301
+ end
302
+
303
+ create_table :cpk_order_tags, primary_key: [:order_id, :tag_id], force: true do |t|
304
+ t.integer :order_id
305
+ t.integer :tag_id
306
+ t.string :attached_by
307
+ t.string :attached_reason
308
+ end
309
+
310
+ create_table :cpk_tags, force: true do |t|
311
+ t.string :name, null: false
312
+ end
313
+
314
+ create_table :cpk_order_agreements, force: true do |t|
315
+ t.integer :order_id
316
+ t.string :signature
317
+
318
+ t.index :order_id
319
+ end
320
+
321
+ create_table :cpk_cars, force: true, primary_key: [:make, :model] do |t|
322
+ t.string :make, null: false
323
+ t.string :model, null: false
324
+ end
325
+
326
+ create_table :cpk_car_reviews, force: true do |t|
327
+ t.string :car_make, null: false
328
+ t.string :car_model, null: false
329
+ t.text :comment
330
+ t.integer :rating
331
+ end
332
+
333
+ create_table :paragraphs, force: true do |t|
334
+ t.references :book
335
+ end
336
+
337
+ create_table :clothing_items, force: true do |t|
338
+ t.string :clothing_type
339
+ t.string :color
340
+ t.string :type
341
+ t.string :size
342
+ if ActiveRecord::TestCase.current_adapter?(:IBM_DBAdapter)
343
+ t.string :description, limit: 4000
344
+ else
345
+ t.text :description
346
+ end
347
+
348
+ t.index [:clothing_type, :color], unique: true
349
+ end
350
+
351
+ create_table :sharded_blogs, force: true do |t|
352
+ t.string :name
353
+ end
354
+
355
+ create_table :sharded_blog_posts, force: true do |t|
356
+ t.string :title
357
+ t.references :parent, polymorphic: true
358
+ t.integer :blog_id
359
+ t.integer :revision
360
+ end
361
+
362
+ create_table :sharded_comments, force: true do |t|
363
+ t.string :body
364
+ t.integer :blog_post_id
365
+ t.integer :blog_id
366
+ end
367
+
368
+ create_table :sharded_tags, force: true do |t|
369
+ t.string :name
370
+ t.integer :blog_id
371
+ end
372
+
373
+ create_table :sharded_blog_posts_tags, force: true do |t|
374
+ t.integer :blog_id
375
+ t.integer :blog_post_id
376
+ t.integer :tag_id
377
+ end
378
+
190
379
  create_table :clubs, force: true do |t|
191
380
  t.string :name
192
381
  t.integer :category_id
@@ -207,8 +396,8 @@ ActiveRecord::Schema.define do
207
396
  create_table :comments, force: true do |t|
208
397
  t.integer :post_id, null: false
209
398
  # 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)
399
+ # Oracle/DB2 SELECT WHERE clause which causes many unit test failures
400
+ if ActiveRecord::Base.connection.adapter_name.match?(/oracle|ibm/i)
212
401
  t.string :body, null: false, limit: 4000
213
402
  else
214
403
  t.text :body, null: false
@@ -219,8 +408,12 @@ ActiveRecord::Schema.define do
219
408
  t.integer :children_count, default: 0
220
409
  t.integer :parent_id
221
410
  t.references :author, polymorphic: true
411
+ # The type of the attribute is a string to make sure preload work when types don't match.
412
+ # See #14855.
222
413
  t.string :resource_id
223
414
  t.string :resource_type
415
+ t.integer :origin_id
416
+ t.string :origin_type
224
417
  t.integer :developer_id
225
418
  t.datetime :updated_at
226
419
  t.datetime :deleted_at
@@ -228,8 +421,14 @@ ActiveRecord::Schema.define do
228
421
  t.integer :company
229
422
  end
230
423
 
231
- create_table :companies, force: true, id: :bigint do |t|
232
- t.string :type
424
+ create_table :comment_overlapping_counter_caches, force: true do |t|
425
+ t.integer :user_comments_count_id
426
+ t.integer :post_comments_count_id
427
+ t.references :commentable, polymorphic: true, index: false
428
+ end
429
+
430
+ create_table :companies, force: true do |t|
431
+ t.string :type
233
432
  t.references :firm, index: false
234
433
  t.string :firm_name
235
434
  t.string :name
@@ -237,12 +436,19 @@ ActiveRecord::Schema.define do
237
436
  t.bigint :rating, default: 1
238
437
  t.integer :account_id
239
438
  t.string :description, default: ""
439
+ t.integer :status, default: 0
240
440
  t.index [:name, :rating], order: :desc
241
441
  t.index [:name, :description], length: 10
242
442
  t.index [:firm_id, :type, :rating], name: "company_index", length: { type: 10 }, order: { rating: :desc }
243
443
  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?
444
+ t.index [:firm_id], name: "company_nulls_not_distinct", nulls_not_distinct: true
445
+ t.index :name, name: "company_name_index", using: :btree
446
+ if supports_expression_index?
447
+ t.index "(CASE WHEN rating > 0 THEN lower(name) END) DESC", name: "company_expression_index"
448
+ if ActiveRecord::TestCase.current_adapter?(:Mysql2Adapter, :TrilogyAdapter)
449
+ t.index "(CONCAT_WS(`firm_name`, `name`, _utf8mb4' '))", name: "full_name_index"
450
+ end
451
+ end
246
452
  end
247
453
 
248
454
  create_table :content, force: true do |t|
@@ -266,11 +472,13 @@ ActiveRecord::Schema.define do
266
472
  t.integer :developer, null: false
267
473
  t.integer :extendedWarranty, null: false
268
474
  t.integer :timezone
475
+ t.timestamps
269
476
  end
270
477
 
271
478
  create_table :computers_developers, id: false, force: true do |t|
272
479
  t.references :computer
273
480
  t.references :developer
481
+ t.timestamps
274
482
  end
275
483
 
276
484
  create_table :contracts, force: true do |t|
@@ -310,38 +518,41 @@ ActiveRecord::Schema.define do
310
518
  t.boolean :deleted
311
519
  end
312
520
 
521
+ create_table :discounts, force: true do |t|
522
+ t.integer :amount
523
+ end
524
+
313
525
  create_table :dl_keyed_belongs_tos, force: true, id: false do |t|
314
526
  t.primary_key :belongs_key
315
527
  t.references :destroy_async_parent
316
528
  end
317
529
 
318
530
  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 }
531
+ t.references :destroy_async_parent_soft_delete, index: { name: :soft_del_parent }
321
532
  t.boolean :deleted
322
533
  end
323
534
 
324
535
  create_table :dl_keyed_has_ones, force: true, id: false do |t|
325
- t.primary_key :has_one_key
536
+ t.primary_key :has_one_key
326
537
 
327
- t.references :destroy_async_parent
328
- t.references :destroy_async_parent_soft_delete
329
- end
538
+ t.references :destroy_async_parent
539
+ t.references :destroy_async_parent_soft_delete
540
+ end
330
541
 
331
542
  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
543
+ t.primary_key :many_key
544
+ t.references :destroy_async_parent
545
+ end
335
546
 
336
547
  create_table :dl_keyed_has_many_throughs, force: true, id: false do |t|
337
- t.primary_key :through_key
338
- end
548
+ t.primary_key :through_key
549
+ end
339
550
 
340
551
  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
552
+ t.primary_key :joins_key
553
+ t.references :destroy_async_parent
554
+ t.references :dl_keyed_has_many_through
555
+ end
345
556
 
346
557
  create_table :developers, force: true do |t|
347
558
  t.string :name
@@ -349,17 +560,10 @@ ActiveRecord::Schema.define do
349
560
  t.integer :salary, default: 70000
350
561
  t.references :firm, index: false
351
562
  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
563
+ t.datetime :legacy_created_at
564
+ t.datetime :legacy_updated_at
565
+ t.datetime :legacy_created_on
566
+ t.datetime :legacy_updated_on
363
567
  end
364
568
 
365
569
  create_table :developers_projects, force: true, id: false do |t|
@@ -393,6 +597,15 @@ ActiveRecord::Schema.define do
393
597
  t.index [:source_id, :sink_id], unique: true, name: "unique_edge_index"
394
598
  end
395
599
 
600
+ create_table :editorships, force: true do |t|
601
+ t.string :publication_id
602
+ t.string :editor_id
603
+ end
604
+
605
+ create_table :editors, force: true do |t|
606
+ t.string :name
607
+ end
608
+
396
609
  create_table :engines, force: true do |t|
397
610
  t.references :car, index: false
398
611
  end
@@ -403,8 +616,10 @@ ActiveRecord::Schema.define do
403
616
  end
404
617
 
405
618
  create_table :entries, force: true do |t|
406
- t.string :entryable_type, null: false
407
- t.integer :entryable_id, null: false
619
+ t.string :entryable_type, null: false
620
+ t.integer :entryable_id, null: false
621
+ t.integer :account_id, null: false
622
+ t.datetime :updated_at
408
623
  end
409
624
 
410
625
  create_table :essays, force: true do |t|
@@ -482,11 +697,7 @@ ActiveRecord::Schema.define do
482
697
 
483
698
  create_table :invoices, force: true do |t|
484
699
  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
700
+ t.datetime :updated_at
490
701
  end
491
702
 
492
703
  create_table :iris, force: true do |t|
@@ -535,7 +746,7 @@ ActiveRecord::Schema.define do
535
746
  t.integer :college_id
536
747
  end
537
748
 
538
- add_foreign_key :lessons_students, :students, on_delete: :cascade
749
+ add_foreign_key :lessons_students, :students, on_delete: :cascade, deferrable: :immediate
539
750
 
540
751
  create_table :lint_models, force: true
541
752
 
@@ -544,6 +755,11 @@ ActiveRecord::Schema.define do
544
755
  t.integer :amount
545
756
  end
546
757
 
758
+ create_table :line_item_discount_applications, force: true do |t|
759
+ t.integer :line_item_id
760
+ t.integer :discount_id
761
+ end
762
+
547
763
  create_table :lions, force: true do |t|
548
764
  t.integer :gender
549
765
  t.boolean :is_vegetarian, default: false
@@ -590,7 +806,7 @@ ActiveRecord::Schema.define do
590
806
  create_table :memberships, force: true do |t|
591
807
  t.datetime :joined_on
592
808
  t.integer :club_id, :member_id
593
- t.boolean :favourite, default: false
809
+ t.boolean :favorite, default: false
594
810
  t.integer :type
595
811
  t.datetime :created_at
596
812
  t.datetime :updated_at
@@ -605,7 +821,8 @@ ActiveRecord::Schema.define do
605
821
  end
606
822
 
607
823
  create_table :messages, force: true do |t|
608
- t.string :subject
824
+ t.string :subject
825
+ t.datetime :updated_at
609
826
  end
610
827
 
611
828
  create_table :minivans, force: true, id: false do |t|
@@ -616,6 +833,7 @@ ActiveRecord::Schema.define do
616
833
  end
617
834
 
618
835
  create_table :minimalistics, force: true do |t|
836
+ t.bigint :expires_at
619
837
  end
620
838
 
621
839
  create_table :mixed_case_monkeys, force: true, id: false do |t|
@@ -655,13 +873,14 @@ ActiveRecord::Schema.define do
655
873
  t.decimal :my_house_population, precision: 2, scale: 0
656
874
  t.decimal :decimal_number
657
875
  t.decimal :decimal_number_with_default, precision: 3, scale: 2, default: 2.78
876
+ t.numeric :numeric_number
658
877
  t.float :temperature
878
+ t.float :temperature_with_limit, limit: 24
659
879
  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
880
+ if ActiveRecord::TestCase.current_adapter?(:IBM_DBAdapter)
664
881
  t.decimal :atoms_in_universe, precision: 31, scale: 0
882
+ else
883
+ t.decimal :atoms_in_universe, precision: 55, scale: 0
665
884
  end
666
885
  end
667
886
 
@@ -677,11 +896,7 @@ ActiveRecord::Schema.define do
677
896
 
678
897
  create_table :owners, primary_key: :owner_id, force: true do |t|
679
898
  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
899
+ t.column :updated_at, :datetime
685
900
  t.column :happy_at, :datetime
686
901
  t.string :essay_id
687
902
  end
@@ -697,34 +912,23 @@ ActiveRecord::Schema.define do
697
912
  disable_referential_integrity do
698
913
  create_table :parrots, force: :cascade do |t|
699
914
  t.string :name
915
+ t.integer :breed, default: 0
700
916
  t.string :color
701
917
  t.string :parrot_sti_class
702
918
  t.integer :killer_id
703
919
  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
920
+ t.datetime :created_at, precision: 0
921
+ t.datetime :created_on, precision: 0
922
+ t.datetime :updated_at, precision: 0
923
+ t.datetime :updated_on, precision: 0
715
924
  end
716
925
 
717
926
  create_table :pirates, force: :cascade do |t|
718
927
  t.string :catchphrase
719
928
  t.integer :parrot_id
720
929
  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
930
+ t.datetime :created_on
931
+ t.datetime :updated_on
728
932
  end
729
933
 
730
934
  create_table :treasures, force: :cascade do |t|
@@ -739,10 +943,17 @@ ActiveRecord::Schema.define do
739
943
  t.references :pirate, foreign_key: true
740
944
  end
741
945
 
946
+ # used by tests that do `Parrot.has_and_belongs_to_many :treasures` (the default)
742
947
  create_table :parrots_treasures, id: false, force: true do |t|
743
948
  t.references :parrot, foreign_key: true
744
949
  t.references :treasure, foreign_key: true
745
950
  end
951
+
952
+ # used by tests that do `Parrot.has_many :treasures, through: :parrot_treasures`, and don't want to override the through relation's `table_name`
953
+ create_table :parrot_treasures, id: false, force: true do |t|
954
+ t.references :parrot, foreign_key: true
955
+ t.references :treasure, foreign_key: true
956
+ end
746
957
  end
747
958
 
748
959
  create_table :people, force: true do |t|
@@ -758,6 +969,7 @@ ActiveRecord::Schema.define do
758
969
  t.references :best_friend_of
759
970
  t.integer :insures, null: false, default: 0
760
971
  t.timestamp :born_at
972
+ t.integer :cars_count, default: 0
761
973
  t.timestamps null: false
762
974
  end
763
975
 
@@ -785,11 +997,11 @@ ActiveRecord::Schema.define do
785
997
  end
786
998
 
787
999
  create_table :posts, force: true do |t|
788
- t.references :author, type: :integer
1000
+ t.references :author
789
1001
  t.string :title, null: false
790
1002
  # 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)
1003
+ # Oracle/DB2 SELECT WHERE clause which causes many unit test failures
1004
+ if ActiveRecord::TestCase.current_adapter?(:OracleAdapter, :IBM_DBAdapter)
793
1005
  t.string :body, null: false, limit: 4000
794
1006
  else
795
1007
  t.text :body, null: false
@@ -804,6 +1016,15 @@ ActiveRecord::Schema.define do
804
1016
  t.integer :tags_with_nullify_count, default: 0
805
1017
  end
806
1018
 
1019
+ create_table :postesques, force: true do |t|
1020
+ t.string :author_name
1021
+ t.string :author_id
1022
+ end
1023
+
1024
+ create_table :post_comments_counts, force: true do |t|
1025
+ t.integer :comments_count, default: 0
1026
+ end
1027
+
807
1028
  create_table :serialized_posts, force: true do |t|
808
1029
  t.integer :author_id
809
1030
  t.string :title, null: false
@@ -842,6 +1063,11 @@ ActiveRecord::Schema.define do
842
1063
  t.integer :mentor_id
843
1064
  end
844
1065
 
1066
+ create_table :publications, force: true do |t|
1067
+ t.column :name, :string
1068
+ t.integer :editor_in_chief_id
1069
+ end
1070
+
845
1071
  create_table :randomly_named_table1, force: true do |t|
846
1072
  t.string :some_attribute
847
1073
  t.integer :another_attribute
@@ -872,13 +1098,15 @@ ActiveRecord::Schema.define do
872
1098
  create_table :references, force: true do |t|
873
1099
  t.integer :person_id
874
1100
  t.integer :job_id
875
- t.boolean :favourite
1101
+ t.boolean :favorite
876
1102
  t.integer :lock_version, default: 0
877
1103
  end
878
1104
 
879
1105
  create_table :rooms, force: true do |t|
880
1106
  t.references :user
881
1107
  t.references :owner
1108
+ t.references :landlord
1109
+ t.references :tenant
882
1110
  end
883
1111
 
884
1112
  disable_referential_integrity do
@@ -906,6 +1134,16 @@ ActiveRecord::Schema.define do
906
1134
  t.integer :shape_id
907
1135
  end
908
1136
 
1137
+ create_table :shipping_lines, force: true do |t|
1138
+ t.integer :invoice_id
1139
+ t.integer :amount
1140
+ end
1141
+
1142
+ create_table :shipping_line_discount_applications, force: true do |t|
1143
+ t.integer :shipping_line_id
1144
+ t.integer :discount_id
1145
+ end
1146
+
909
1147
  create_table :ships, force: true do |t|
910
1148
  t.string :name
911
1149
  t.integer :pirate_id
@@ -922,11 +1160,7 @@ ActiveRecord::Schema.define do
922
1160
  create_table :ship_parts, force: true do |t|
923
1161
  t.string :name
924
1162
  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
1163
+ t.datetime :updated_at
930
1164
  end
931
1165
 
932
1166
  create_table :squeaks, force: true do |t|
@@ -1002,22 +1236,12 @@ ActiveRecord::Schema.define do
1002
1236
  t.string :title, limit: 250
1003
1237
  t.string :author_name
1004
1238
  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
1239
+ t.datetime :written_on
1010
1240
  t.time :bonus_time
1011
1241
  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
1242
+ t.text :content
1243
+ t.text :important
1244
+ t.blob :binary_content
1021
1245
  t.boolean :approved, default: true
1022
1246
  t.integer :replies_count, default: 0
1023
1247
  t.integer :unique_replies_count, default: 0
@@ -1043,6 +1267,13 @@ ActiveRecord::Schema.define do
1043
1267
  t.datetime :updated_at
1044
1268
  end
1045
1269
 
1270
+ create_table :translations, force: true do |t|
1271
+ t.string :locale, null: false
1272
+ t.string :key, null: false
1273
+ t.string :value, null: false
1274
+ t.references :attachment
1275
+ end
1276
+
1046
1277
  create_table :tuning_pegs, force: true do |t|
1047
1278
  t.integer :guitar_id
1048
1279
  t.float :pitch
@@ -1068,7 +1299,7 @@ ActiveRecord::Schema.define do
1068
1299
  t.column :label, :string
1069
1300
  end
1070
1301
 
1071
- create_table "warehouse_things", force: true do |t|
1302
+ create_table :warehouse_things, force: true do |t|
1072
1303
  t.integer :value
1073
1304
  end
1074
1305
 
@@ -1179,6 +1410,11 @@ ActiveRecord::Schema.define do
1179
1410
  t.integer :hotel_id
1180
1411
  end
1181
1412
 
1413
+ create_table :recipients, force: true do |t|
1414
+ t.integer :message_id
1415
+ t.string :email_address
1416
+ end
1417
+
1182
1418
  create_table :records, force: true do |t|
1183
1419
  end
1184
1420
 
@@ -1192,6 +1428,16 @@ ActiveRecord::Schema.define do
1192
1428
  end
1193
1429
  end
1194
1430
 
1431
+ disable_referential_integrity do
1432
+ create_table :fk_object_to_point_tos, force: :cascade do |t|
1433
+ end
1434
+
1435
+ create_table :fk_pointing_to_non_existent_objects, force: true do |t|
1436
+ t.references :fk_object_to_point_to, null: false, index: false
1437
+ t.foreign_key :fk_object_to_point_tos, column: "fk_object_to_point_to_id", name: "fk_that_will_be_broken"
1438
+ end
1439
+ end
1440
+
1195
1441
  create_table :overloaded_types, force: true do |t|
1196
1442
  t.float :overloaded_float, default: 500
1197
1443
  t.float :unoverloaded_float
@@ -1204,6 +1450,13 @@ ActiveRecord::Schema.define do
1204
1450
  create_table :users, force: true do |t|
1205
1451
  t.string :token
1206
1452
  t.string :auth_token
1453
+ t.string :password_digest
1454
+ t.string :recovery_password_digest
1455
+ t.timestamps null: true
1456
+ end
1457
+
1458
+ create_table :user_comments_counts, force: true do |t|
1459
+ t.integer :comments_count, default: 0
1207
1460
  end
1208
1461
 
1209
1462
  create_table :test_with_keyword_column_name, force: true do |t|
@@ -1214,24 +1467,29 @@ ActiveRecord::Schema.define do
1214
1467
  t.integer :id
1215
1468
  t.datetime :created_at
1216
1469
  end
1470
+
1471
+ create_table :toooooooooooooooooooooooooooooooooo_long_table_names, force: true do |t|
1472
+ t.bigint :toooooooo_long_a_id, null: false
1473
+ t.bigint :toooooooo_long_b_id, null: false
1474
+ end
1217
1475
  end
1218
1476
 
1219
- Course.connection.create_table :courses, force: true do |t|
1477
+ Course.lease_connection.create_table :courses, force: true do |t|
1220
1478
  t.column :name, :string, null: false
1221
- t.column :college_id, :integer
1479
+ t.column :college_id, :integer, index: true
1222
1480
  end
1223
1481
 
1224
- College.connection.create_table :colleges, force: true do |t|
1482
+ College.lease_connection.create_table :colleges, force: true do |t|
1225
1483
  t.column :name, :string, null: false
1226
1484
  end
1227
1485
 
1228
- Professor.connection.create_table :professors, force: true do |t|
1486
+ Professor.lease_connection.create_table :professors, force: true do |t|
1229
1487
  t.column :name, :string, null: false
1230
1488
  end
1231
1489
 
1232
- Professor.connection.create_table :courses_professors, id: false, force: true do |t|
1490
+ Professor.lease_connection.create_table :courses_professors, id: false, force: true do |t|
1233
1491
  t.references :course
1234
1492
  t.references :professor
1235
1493
  end
1236
1494
 
1237
- OtherDog.connection.create_table :dogs, force: true
1495
+ OtherDog.lease_connection.create_table :dogs, force: true