sequel 5.29.0 → 5.34.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 (387) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +70 -1922
  3. data/README.rdoc +1 -1
  4. data/doc/advanced_associations.rdoc +4 -4
  5. data/doc/association_basics.rdoc +3 -3
  6. data/doc/code_order.rdoc +12 -2
  7. data/doc/model_dataset_method_design.rdoc +1 -1
  8. data/doc/postgresql.rdoc +71 -0
  9. data/doc/release_notes/5.30.0.txt +20 -0
  10. data/doc/release_notes/5.31.0.txt +148 -0
  11. data/doc/release_notes/5.32.0.txt +46 -0
  12. data/doc/release_notes/5.33.0.txt +24 -0
  13. data/doc/release_notes/5.34.0.txt +40 -0
  14. data/doc/testing.rdoc +1 -1
  15. data/lib/sequel/adapters/shared/access.rb +6 -6
  16. data/lib/sequel/adapters/shared/mssql.rb +5 -5
  17. data/lib/sequel/adapters/shared/mysql.rb +9 -9
  18. data/lib/sequel/adapters/shared/oracle.rb +16 -16
  19. data/lib/sequel/adapters/shared/postgres.rb +169 -14
  20. data/lib/sequel/adapters/shared/sqlanywhere.rb +9 -9
  21. data/lib/sequel/adapters/shared/sqlite.rb +32 -5
  22. data/lib/sequel/connection_pool/sharded_single.rb +4 -1
  23. data/lib/sequel/connection_pool/sharded_threaded.rb +12 -12
  24. data/lib/sequel/connection_pool/single.rb +1 -1
  25. data/lib/sequel/connection_pool/threaded.rb +2 -2
  26. data/lib/sequel/core.rb +318 -314
  27. data/lib/sequel/database/connecting.rb +1 -1
  28. data/lib/sequel/database/misc.rb +16 -10
  29. data/lib/sequel/database/query.rb +3 -1
  30. data/lib/sequel/database/schema_generator.rb +0 -1
  31. data/lib/sequel/database/schema_methods.rb +15 -16
  32. data/lib/sequel/database/transactions.rb +12 -13
  33. data/lib/sequel/dataset/placeholder_literalizer.rb +3 -7
  34. data/lib/sequel/dataset/query.rb +4 -3
  35. data/lib/sequel/deprecated.rb +2 -0
  36. data/lib/sequel/exceptions.rb +2 -0
  37. data/lib/sequel/extensions/connection_expiration.rb +2 -2
  38. data/lib/sequel/extensions/connection_validator.rb +2 -2
  39. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  40. data/lib/sequel/extensions/index_caching.rb +9 -7
  41. data/lib/sequel/extensions/integer64.rb +2 -0
  42. data/lib/sequel/extensions/migration.rb +1 -1
  43. data/lib/sequel/extensions/pg_enum.rb +5 -2
  44. data/lib/sequel/extensions/pg_hstore.rb +6 -0
  45. data/lib/sequel/extensions/pg_inet.rb +13 -5
  46. data/lib/sequel/extensions/pg_interval.rb +2 -0
  47. data/lib/sequel/extensions/pg_range.rb +2 -0
  48. data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
  49. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  50. data/lib/sequel/extensions/schema_dumper.rb +10 -4
  51. data/lib/sequel/extensions/server_block.rb +3 -3
  52. data/lib/sequel/model.rb +2 -0
  53. data/lib/sequel/model/associations.rb +30 -18
  54. data/lib/sequel/model/base.rb +64 -55
  55. data/lib/sequel/model/plugins.rb +3 -3
  56. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  57. data/lib/sequel/plugins/association_multi_add_remove.rb +2 -0
  58. data/lib/sequel/plugins/association_pks.rb +57 -16
  59. data/lib/sequel/plugins/association_proxies.rb +2 -0
  60. data/lib/sequel/plugins/boolean_subsets.rb +4 -1
  61. data/lib/sequel/plugins/class_table_inheritance.rb +26 -26
  62. data/lib/sequel/plugins/dirty.rb +13 -13
  63. data/lib/sequel/plugins/forbid_lazy_load.rb +214 -0
  64. data/lib/sequel/plugins/json_serializer.rb +3 -7
  65. data/lib/sequel/plugins/rcte_tree.rb +2 -2
  66. data/lib/sequel/plugins/single_table_inheritance.rb +15 -15
  67. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  68. data/lib/sequel/plugins/subclasses.rb +2 -0
  69. data/lib/sequel/timezones.rb +6 -4
  70. data/lib/sequel/version.rb +1 -1
  71. metadata +17 -368
  72. data/Rakefile +0 -151
  73. data/doc/release_notes/4.0.0.txt +0 -262
  74. data/doc/release_notes/4.1.0.txt +0 -85
  75. data/doc/release_notes/4.10.0.txt +0 -226
  76. data/doc/release_notes/4.11.0.txt +0 -147
  77. data/doc/release_notes/4.12.0.txt +0 -105
  78. data/doc/release_notes/4.13.0.txt +0 -169
  79. data/doc/release_notes/4.14.0.txt +0 -68
  80. data/doc/release_notes/4.15.0.txt +0 -56
  81. data/doc/release_notes/4.16.0.txt +0 -36
  82. data/doc/release_notes/4.17.0.txt +0 -38
  83. data/doc/release_notes/4.18.0.txt +0 -36
  84. data/doc/release_notes/4.19.0.txt +0 -45
  85. data/doc/release_notes/4.2.0.txt +0 -129
  86. data/doc/release_notes/4.20.0.txt +0 -79
  87. data/doc/release_notes/4.21.0.txt +0 -94
  88. data/doc/release_notes/4.22.0.txt +0 -72
  89. data/doc/release_notes/4.23.0.txt +0 -65
  90. data/doc/release_notes/4.24.0.txt +0 -99
  91. data/doc/release_notes/4.25.0.txt +0 -181
  92. data/doc/release_notes/4.26.0.txt +0 -44
  93. data/doc/release_notes/4.27.0.txt +0 -78
  94. data/doc/release_notes/4.28.0.txt +0 -57
  95. data/doc/release_notes/4.29.0.txt +0 -41
  96. data/doc/release_notes/4.3.0.txt +0 -40
  97. data/doc/release_notes/4.30.0.txt +0 -37
  98. data/doc/release_notes/4.31.0.txt +0 -57
  99. data/doc/release_notes/4.32.0.txt +0 -132
  100. data/doc/release_notes/4.33.0.txt +0 -88
  101. data/doc/release_notes/4.34.0.txt +0 -86
  102. data/doc/release_notes/4.35.0.txt +0 -130
  103. data/doc/release_notes/4.36.0.txt +0 -116
  104. data/doc/release_notes/4.37.0.txt +0 -50
  105. data/doc/release_notes/4.38.0.txt +0 -67
  106. data/doc/release_notes/4.39.0.txt +0 -127
  107. data/doc/release_notes/4.4.0.txt +0 -92
  108. data/doc/release_notes/4.40.0.txt +0 -179
  109. data/doc/release_notes/4.41.0.txt +0 -77
  110. data/doc/release_notes/4.42.0.txt +0 -221
  111. data/doc/release_notes/4.43.0.txt +0 -87
  112. data/doc/release_notes/4.44.0.txt +0 -125
  113. data/doc/release_notes/4.45.0.txt +0 -370
  114. data/doc/release_notes/4.46.0.txt +0 -404
  115. data/doc/release_notes/4.47.0.txt +0 -56
  116. data/doc/release_notes/4.48.0.txt +0 -293
  117. data/doc/release_notes/4.49.0.txt +0 -222
  118. data/doc/release_notes/4.5.0.txt +0 -34
  119. data/doc/release_notes/4.6.0.txt +0 -30
  120. data/doc/release_notes/4.7.0.txt +0 -103
  121. data/doc/release_notes/4.8.0.txt +0 -175
  122. data/doc/release_notes/4.9.0.txt +0 -190
  123. data/spec/adapter_spec.rb +0 -4
  124. data/spec/adapters/db2_spec.rb +0 -170
  125. data/spec/adapters/mssql_spec.rb +0 -828
  126. data/spec/adapters/mysql_spec.rb +0 -1060
  127. data/spec/adapters/oracle_spec.rb +0 -371
  128. data/spec/adapters/postgres_spec.rb +0 -4476
  129. data/spec/adapters/spec_helper.rb +0 -44
  130. data/spec/adapters/sqlanywhere_spec.rb +0 -97
  131. data/spec/adapters/sqlite_spec.rb +0 -652
  132. data/spec/bin_spec.rb +0 -278
  133. data/spec/core/connection_pool_spec.rb +0 -1250
  134. data/spec/core/database_spec.rb +0 -2915
  135. data/spec/core/dataset_spec.rb +0 -5544
  136. data/spec/core/deprecated_spec.rb +0 -70
  137. data/spec/core/expression_filters_spec.rb +0 -1498
  138. data/spec/core/mock_adapter_spec.rb +0 -722
  139. data/spec/core/object_graph_spec.rb +0 -336
  140. data/spec/core/placeholder_literalizer_spec.rb +0 -166
  141. data/spec/core/schema_generator_spec.rb +0 -214
  142. data/spec/core/schema_spec.rb +0 -1844
  143. data/spec/core/spec_helper.rb +0 -24
  144. data/spec/core/version_spec.rb +0 -14
  145. data/spec/core_extensions_spec.rb +0 -763
  146. data/spec/core_model_spec.rb +0 -2
  147. data/spec/core_spec.rb +0 -1
  148. data/spec/deprecation_helper.rb +0 -30
  149. data/spec/extensions/accessed_columns_spec.rb +0 -51
  150. data/spec/extensions/active_model_spec.rb +0 -99
  151. data/spec/extensions/after_initialize_spec.rb +0 -28
  152. data/spec/extensions/any_not_empty_spec.rb +0 -23
  153. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  154. data/spec/extensions/association_dependencies_spec.rb +0 -125
  155. data/spec/extensions/association_multi_add_remove_spec.rb +0 -1041
  156. data/spec/extensions/association_pks_spec.rb +0 -423
  157. data/spec/extensions/association_proxies_spec.rb +0 -100
  158. data/spec/extensions/auto_literal_strings_spec.rb +0 -205
  159. data/spec/extensions/auto_validations_spec.rb +0 -229
  160. data/spec/extensions/blacklist_security_spec.rb +0 -95
  161. data/spec/extensions/blank_spec.rb +0 -69
  162. data/spec/extensions/boolean_readers_spec.rb +0 -93
  163. data/spec/extensions/boolean_subsets_spec.rb +0 -47
  164. data/spec/extensions/caching_spec.rb +0 -273
  165. data/spec/extensions/caller_logging_spec.rb +0 -52
  166. data/spec/extensions/class_table_inheritance_spec.rb +0 -750
  167. data/spec/extensions/column_conflicts_spec.rb +0 -75
  168. data/spec/extensions/column_select_spec.rb +0 -129
  169. data/spec/extensions/columns_introspection_spec.rb +0 -90
  170. data/spec/extensions/columns_updated_spec.rb +0 -35
  171. data/spec/extensions/composition_spec.rb +0 -248
  172. data/spec/extensions/connection_expiration_spec.rb +0 -151
  173. data/spec/extensions/connection_validator_spec.rb +0 -144
  174. data/spec/extensions/constant_sql_override_spec.rb +0 -24
  175. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
  176. data/spec/extensions/constraint_validations_spec.rb +0 -439
  177. data/spec/extensions/core_refinements_spec.rb +0 -528
  178. data/spec/extensions/csv_serializer_spec.rb +0 -183
  179. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  180. data/spec/extensions/dataset_associations_spec.rb +0 -365
  181. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  182. data/spec/extensions/date_arithmetic_spec.rb +0 -181
  183. data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
  184. data/spec/extensions/def_dataset_method_spec.rb +0 -100
  185. data/spec/extensions/defaults_setter_spec.rb +0 -150
  186. data/spec/extensions/delay_add_association_spec.rb +0 -73
  187. data/spec/extensions/dirty_spec.rb +0 -222
  188. data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
  189. data/spec/extensions/eager_each_spec.rb +0 -62
  190. data/spec/extensions/eager_graph_eager_spec.rb +0 -100
  191. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  192. data/spec/extensions/empty_failure_backtraces_spec.rb +0 -60
  193. data/spec/extensions/error_splitter_spec.rb +0 -18
  194. data/spec/extensions/error_sql_spec.rb +0 -20
  195. data/spec/extensions/escaped_like_spec.rb +0 -40
  196. data/spec/extensions/eval_inspect_spec.rb +0 -81
  197. data/spec/extensions/exclude_or_null_spec.rb +0 -15
  198. data/spec/extensions/finder_spec.rb +0 -260
  199. data/spec/extensions/force_encoding_spec.rb +0 -126
  200. data/spec/extensions/freeze_datasets_spec.rb +0 -31
  201. data/spec/extensions/graph_each_spec.rb +0 -113
  202. data/spec/extensions/hook_class_methods_spec.rb +0 -402
  203. data/spec/extensions/identifier_mangling_spec.rb +0 -201
  204. data/spec/extensions/implicit_subquery_spec.rb +0 -58
  205. data/spec/extensions/index_caching_spec.rb +0 -66
  206. data/spec/extensions/inflector_spec.rb +0 -183
  207. data/spec/extensions/input_transformer_spec.rb +0 -69
  208. data/spec/extensions/insert_conflict_spec.rb +0 -103
  209. data/spec/extensions/insert_returning_select_spec.rb +0 -72
  210. data/spec/extensions/instance_filters_spec.rb +0 -79
  211. data/spec/extensions/instance_hooks_spec.rb +0 -246
  212. data/spec/extensions/integer64_spec.rb +0 -22
  213. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  214. data/spec/extensions/json_serializer_spec.rb +0 -346
  215. data/spec/extensions/lazy_attributes_spec.rb +0 -183
  216. data/spec/extensions/list_spec.rb +0 -291
  217. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  218. data/spec/extensions/many_through_many_spec.rb +0 -2177
  219. data/spec/extensions/migration_spec.rb +0 -864
  220. data/spec/extensions/modification_detection_spec.rb +0 -93
  221. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
  222. data/spec/extensions/named_timezones_spec.rb +0 -218
  223. data/spec/extensions/nested_attributes_spec.rb +0 -815
  224. data/spec/extensions/null_dataset_spec.rb +0 -85
  225. data/spec/extensions/optimistic_locking_spec.rb +0 -127
  226. data/spec/extensions/pagination_spec.rb +0 -116
  227. data/spec/extensions/pg_array_associations_spec.rb +0 -802
  228. data/spec/extensions/pg_array_ops_spec.rb +0 -144
  229. data/spec/extensions/pg_array_spec.rb +0 -398
  230. data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -209
  231. data/spec/extensions/pg_enum_spec.rb +0 -118
  232. data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
  233. data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
  234. data/spec/extensions/pg_hstore_spec.rb +0 -219
  235. data/spec/extensions/pg_inet_ops_spec.rb +0 -102
  236. data/spec/extensions/pg_inet_spec.rb +0 -72
  237. data/spec/extensions/pg_interval_spec.rb +0 -103
  238. data/spec/extensions/pg_json_ops_spec.rb +0 -356
  239. data/spec/extensions/pg_json_spec.rb +0 -451
  240. data/spec/extensions/pg_loose_count_spec.rb +0 -23
  241. data/spec/extensions/pg_range_ops_spec.rb +0 -60
  242. data/spec/extensions/pg_range_spec.rb +0 -600
  243. data/spec/extensions/pg_row_ops_spec.rb +0 -61
  244. data/spec/extensions/pg_row_plugin_spec.rb +0 -60
  245. data/spec/extensions/pg_row_spec.rb +0 -363
  246. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
  247. data/spec/extensions/pg_timestamptz_spec.rb +0 -17
  248. data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
  249. data/spec/extensions/prepared_statements_spec.rb +0 -177
  250. data/spec/extensions/pretty_table_spec.rb +0 -123
  251. data/spec/extensions/query_spec.rb +0 -94
  252. data/spec/extensions/rcte_tree_spec.rb +0 -387
  253. data/spec/extensions/round_timestamps_spec.rb +0 -39
  254. data/spec/extensions/s_spec.rb +0 -60
  255. data/spec/extensions/schema_caching_spec.rb +0 -64
  256. data/spec/extensions/schema_dumper_spec.rb +0 -870
  257. data/spec/extensions/select_remove_spec.rb +0 -38
  258. data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
  259. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  260. data/spec/extensions/serialization_spec.rb +0 -365
  261. data/spec/extensions/server_block_spec.rb +0 -135
  262. data/spec/extensions/server_logging_spec.rb +0 -45
  263. data/spec/extensions/sharding_spec.rb +0 -197
  264. data/spec/extensions/shared_caching_spec.rb +0 -151
  265. data/spec/extensions/single_table_inheritance_spec.rb +0 -347
  266. data/spec/extensions/singular_table_names_spec.rb +0 -22
  267. data/spec/extensions/skip_create_refresh_spec.rb +0 -18
  268. data/spec/extensions/spec_helper.rb +0 -70
  269. data/spec/extensions/split_array_nil_spec.rb +0 -24
  270. data/spec/extensions/split_values_spec.rb +0 -57
  271. data/spec/extensions/sql_comments_spec.rb +0 -33
  272. data/spec/extensions/sql_expr_spec.rb +0 -59
  273. data/spec/extensions/static_cache_cache_spec.rb +0 -35
  274. data/spec/extensions/static_cache_spec.rb +0 -471
  275. data/spec/extensions/string_agg_spec.rb +0 -90
  276. data/spec/extensions/string_date_time_spec.rb +0 -95
  277. data/spec/extensions/string_stripper_spec.rb +0 -68
  278. data/spec/extensions/subclasses_spec.rb +0 -79
  279. data/spec/extensions/subset_conditions_spec.rb +0 -38
  280. data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
  281. data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
  282. data/spec/extensions/synchronize_sql_spec.rb +0 -124
  283. data/spec/extensions/table_select_spec.rb +0 -83
  284. data/spec/extensions/tactical_eager_loading_spec.rb +0 -402
  285. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  286. data/spec/extensions/throw_failures_spec.rb +0 -74
  287. data/spec/extensions/timestamps_spec.rb +0 -209
  288. data/spec/extensions/to_dot_spec.rb +0 -153
  289. data/spec/extensions/touch_spec.rb +0 -226
  290. data/spec/extensions/tree_spec.rb +0 -334
  291. data/spec/extensions/typecast_on_load_spec.rb +0 -86
  292. data/spec/extensions/unlimited_update_spec.rb +0 -21
  293. data/spec/extensions/update_or_create_spec.rb +0 -83
  294. data/spec/extensions/update_primary_key_spec.rb +0 -105
  295. data/spec/extensions/update_refresh_spec.rb +0 -59
  296. data/spec/extensions/uuid_spec.rb +0 -101
  297. data/spec/extensions/validate_associated_spec.rb +0 -52
  298. data/spec/extensions/validation_class_methods_spec.rb +0 -1040
  299. data/spec/extensions/validation_contexts_spec.rb +0 -31
  300. data/spec/extensions/validation_helpers_spec.rb +0 -525
  301. data/spec/extensions/whitelist_security_spec.rb +0 -157
  302. data/spec/extensions/xml_serializer_spec.rb +0 -213
  303. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  304. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  305. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  306. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  307. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  308. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  309. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  310. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  311. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  312. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  313. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  314. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  315. data/spec/files/double_migration/001_create_sessions.rb +0 -9
  316. data/spec/files/double_migration/002_create_nodes.rb +0 -19
  317. data/spec/files/double_migration/003_3_create_users.rb +0 -4
  318. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  319. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  320. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  321. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  322. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  323. data/spec/files/empty_migration/001_create_sessions.rb +0 -9
  324. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  325. data/spec/files/empty_migration/003_3_create_users.rb +0 -4
  326. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  327. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  328. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  329. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  330. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  331. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  332. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  333. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  334. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  335. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  336. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  337. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  338. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  339. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  340. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  341. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  342. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  343. data/spec/files/reversible_migrations/006_reversible.rb +0 -10
  344. data/spec/files/reversible_migrations/007_reversible.rb +0 -10
  345. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  346. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  347. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  348. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  349. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  350. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  351. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  352. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  353. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  354. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  355. data/spec/guards_helper.rb +0 -59
  356. data/spec/integration/associations_test.rb +0 -2597
  357. data/spec/integration/database_test.rb +0 -113
  358. data/spec/integration/dataset_test.rb +0 -2037
  359. data/spec/integration/eager_loader_test.rb +0 -687
  360. data/spec/integration/migrator_test.rb +0 -262
  361. data/spec/integration/model_test.rb +0 -203
  362. data/spec/integration/plugin_test.rb +0 -2423
  363. data/spec/integration/prepared_statement_test.rb +0 -405
  364. data/spec/integration/schema_test.rb +0 -903
  365. data/spec/integration/spec_helper.rb +0 -71
  366. data/spec/integration/timezone_test.rb +0 -86
  367. data/spec/integration/transaction_test.rb +0 -603
  368. data/spec/integration/type_test.rb +0 -127
  369. data/spec/model/association_reflection_spec.rb +0 -803
  370. data/spec/model/associations_spec.rb +0 -4738
  371. data/spec/model/base_spec.rb +0 -875
  372. data/spec/model/class_dataset_methods_spec.rb +0 -146
  373. data/spec/model/dataset_methods_spec.rb +0 -198
  374. data/spec/model/eager_loading_spec.rb +0 -2377
  375. data/spec/model/hooks_spec.rb +0 -370
  376. data/spec/model/inflector_spec.rb +0 -26
  377. data/spec/model/model_spec.rb +0 -956
  378. data/spec/model/plugins_spec.rb +0 -429
  379. data/spec/model/record_spec.rb +0 -2118
  380. data/spec/model/spec_helper.rb +0 -46
  381. data/spec/model/validations_spec.rb +0 -220
  382. data/spec/model_no_assoc_spec.rb +0 -1
  383. data/spec/model_spec.rb +0 -1
  384. data/spec/plugin_spec.rb +0 -1
  385. data/spec/sequel_coverage.rb +0 -15
  386. data/spec/sequel_warning.rb +0 -5
  387. data/spec/spec_config.rb +0 -12
@@ -1,293 +0,0 @@
1
- = Deprecated Features
2
-
3
- * The identifier_columns plugin is now deprecated. There is no reason
4
- to use it when Sequel.split_symbols = false, which will be the
5
- default in Sequel 5.
6
-
7
- * The filter_having, hash_aliases, and sequel_3_dataset_methods
8
- extensions are now deprecated. They only existed for backwards
9
- compatibility with Sequel 3.
10
-
11
- * The query_literals extension is now deprecated. It changes behavior
12
- in a way that makes SQL injections more likely.
13
-
14
- * The meta_def extension is now deprecated. It is no longer necessary,
15
- since on ruby 1.9+ you can use define_singleton_method.
16
-
17
- * The empty_array_ignore_nulls extension has been deprecated. It
18
- has been a no-op since Sequel 4.25.0.
19
-
20
- * The cti_base_model, cti_key, and cti_model_map class methods in
21
- the class_table_inheritance plugin are now deprecated. Use
22
- cti_models.first instead of cti_base_model, sti_key
23
- instead of cti_key, and sti_model_map instead of cti_model_map.
24
-
25
- * The :strict option in the nested_attributes plugin is now deprecated.
26
- Switch to using the :unmatched_pk option.
27
-
28
- * Database#reset_conversion_procs on PostgreSQL is now deprecated.
29
- There will be no need to call it in Sequel 5.
30
-
31
- * Using global conversion procs added by the pg_* extensions, without
32
- loading the pg_* extension into the Database instance, are now
33
- deprecated. Additionally, using PGArray.register or PGRange.register
34
- to register global types is now also deprecated. Use
35
- Database#register_array_type or Database#register_range_type instead
36
- to register the types on a per-Database basis.
37
-
38
- * Treating :natural_inner join type as NATURAL LEFT JOIN on MySQL is
39
- now deprecated. MySQL doesn't support NATURAL INNER JOIN, but if
40
- you were going to convert it, NATURAL JOIN would make more sense.
41
-
42
- * Unexpected values passed to Dataset#insert_conflict on SQLite are
43
- now deprecated. Only values that result in one of the following
44
- strings will be allowed in Sequel 5: ROLLBACK, ABORT, FAIL, IGNORE,
45
- and REPLACE.
46
-
47
- * The Dataset#and, #exclude_where, #interval, and #range methods
48
- are now deprecated. Undeprecated copies are now available in the
49
- new sequel_4_dataset_methods extension.
50
-
51
- * Model.<< is now deprecated. Intuitivately, you would except this
52
- to call Model.create and return the Model class, but it calls <<
53
- on the model's dataset and returns the dataset.
54
-
55
- * The Sequel::Postgres::PG_TYPES constant is now deprecated. All
56
- conversion procs should now be added on a per-Database basis using
57
- add_conversion_proc or add_named_conversion_proc. The following
58
- private Database methods related to conversion procs are now
59
- deprecated, though some are still called internally and therefore
60
- do not have deprecation warnings:
61
-
62
- * add_named_conversion_procs
63
- * conversion_procs_updated
64
- * convert_named_procs_to_procs
65
- * copy_conversion_procs
66
- * get_conversion_procs
67
-
68
- Related to this, loading the sequel/adapters/utils/pg_types.rb file
69
- is now deprecated.
70
-
71
- * The following adapter or database specific global accessors for setting
72
- defaults are now deprecated:
73
-
74
- * Sequel::DB2.use_clob_as_blob
75
- * Sequel::IBMDB.convert_smallint_to_bool
76
- * Sequel::MySQL.convert_invalid_date_time
77
- * Sequel::MySQL.convert_tinyint_to_bool
78
- * Sequel::MySQL.default_charset
79
- * Sequel::MySQL.default_collate
80
- * Sequel::MySQL.default_engine
81
- * Sequel::Postgres.use_iso_date_format
82
- * Sequel::Postgres.client_min_messages
83
- * Sequel::Postgres.force_standard_strings
84
- * Sequel::SqlAnywhere.convert_smallint_to_bool
85
-
86
- Use the Database instance accessors or Database options instead to
87
- change behavior.
88
-
89
- * The following adapter or database specific dataset mutation methods are
90
- now deprecated:
91
-
92
- * convert_smallint_to_bool= (ibmdb adapter, SQLAnywhere)
93
- * convert_types= (jdbc adapter)
94
- * mssql_unicode_strings= (Microsoft SQL Server)
95
-
96
- Use the with_* methods which return a modified copy of the dataset
97
- instead of these mutation methods.
98
-
99
- * The Dataset#non_sql_options private method is now deprecated.
100
- External adapters that overrode this method should switch to
101
- overriding Dataset#non_sql_option?.
102
-
103
- * The Database#timestamp_convertor private method in the jdbc adapter
104
- is now deprecated. Users should switch to method(:timestamp_convert).
105
-
106
- * Modification of the Sequel::JDBC::TypeConvertor class is now
107
- deprecated. External jdbc subadapters that were using this to add
108
- custom conversion procs should be modified.
109
-
110
- * Having the pg_row extension respect conversion procs for subtypes
111
- added after the registeration of the composite type is now deprecated.
112
- Now, all subtypes should have the appropriate conversion proc added
113
- before the composite type is registered.
114
-
115
- * Array#sql_array in the core_extensions extension is now deprecated.
116
- Switch to using Array#sql_value_list.
117
-
118
- * The SEQUEL_POSTGRES_USES_PG constant added by the postgres adapter
119
- is now deprecated. Sequel::Postgres::USES_PG should be used instead.
120
-
121
- * Many more internal Sequel constants have been deprecated.
122
-
123
- = New Features
124
-
125
- * The Model#to_json and Dataset#to_json methods in the json_serializer
126
- plugin now support a block. This block is called with the
127
- hash/array that would have be serialized to JSON, and the block
128
- should return the object to serialize. This makes it easy to
129
- customize the JSON output by adding new entries, or wrapping the
130
- object in other object.
131
-
132
- The Dataset#to_json method supports an :instance_block option, which
133
- should be a proc that will be passed to Model#to_json.
134
-
135
- In order to implement this, Sequel.object_to_json now passes any
136
- block given to the to_json call on the object. If you are
137
- overriding Sequel.object_to_json, you are responsible for making
138
- sure the block is passed appropriately.
139
-
140
- * The association_pks plugin now supports a
141
- :association_pks_use_associated_table association option for
142
- many_to_many associations. If this option is used, instead of just
143
- looking at the join table, the association_pks getter will get the
144
- primary keys from the associated table. This can be useful if the
145
- association's right_primary_key does not match the associated
146
- model's primary key, and you are interested in the primary keys of
147
- the associated objects. If this option is used, no association_pks
148
- setter method is created.
149
-
150
- * Dataset#as_hash has been added as a replacement to #to_hash.
151
- If you want, you can now undef_method :to_hash and use
152
- as_hash and things will work. Doing so can work around
153
- problems when using keyword argument splats in ruby 2.0+.
154
- For example:
155
-
156
- def foo(*a, **b)
157
- end
158
-
159
- foo(City.order(:id))
160
-
161
- results in foo being called with a being [] and b being
162
- City.order(:id).to_hash, which is unexpected and undesired
163
- behavior. If you want to use keyword argument splats or other
164
- places where ruby will call to_hash implicitly if it is defined,
165
- using undef_method :to_hash is recommended.
166
-
167
- * A Database#add_conversion_proc method has been added on
168
- PostgreSQL. This method takes a type OID and either a block
169
- or a callable argument to use as the conversion proc for the
170
- type OID.
171
-
172
- * The following adapter or database specific Database accessors
173
- have been added for changing settings on a per-Database basis:
174
-
175
- * convert_smallint_to_bool (ibmdb adapter)
176
- * default_charset (MySQL)
177
- * default_collate (MySQL)
178
- * default_engine (MySQL)
179
- * use_clob_as_blob (DB2)
180
-
181
- * A Dataset#with_convert_types method has been added to the jdbc
182
- adapter, for returning a modified dataset with the convert_types
183
- setting changed.
184
-
185
- = Other Improvements
186
-
187
- * Using the postgres adapter with pg 0.21.0 no longer results in
188
- deprecation warnings.
189
-
190
- * When using the class_table_inheritance plugin and using a direct
191
- subclass of the parent class that does not use a separate table,
192
- as well as using the :alias option, the insert SQL used is now
193
- correct. Previously, it attempted to insert into a subquery,
194
- which is not valid SQL.
195
-
196
- Additionally, the dataset for such a model no longer uses a
197
- subquery, since there is no reason to do so as there is no join.
198
-
199
- * Model.skip_auto_validations(:not_null) in the auto_validations
200
- plugin now skips not null checks for columns with default
201
- values, in addition to skipping not null checks for columns
202
- without default values.
203
-
204
- * The static_cache plugin now supports the options hash argument
205
- to to_hash and to_hash_groups. Currently, it only supports
206
- the :hash option, since the :all option doesn't make sense.
207
-
208
- * When touching associations in the touch plugin, clear the
209
- cached association, because otherwise the cached values will
210
- be stale.
211
-
212
- * The validation_class_methods plugin no longer requires the
213
- blank extension.
214
-
215
- * The validation_helpers plugin methods that support the
216
- :allow_blank option now work correctly if the blank extension
217
- is not loaded.
218
-
219
- * Loading the column_conflicts plugin into a model a second time
220
- no longer removes existing column conflict settings.
221
-
222
- * On SQLite 3.8.8+, indexes automatically created from unique
223
- constraints are now included in Database#indexes output.
224
-
225
- * On SQLite 3.8.8+, partial indexes are now excluded from
226
- Database#indexes output.
227
-
228
- * Database#indexes on PostgreSQL 9.5+ now uses a simpler query
229
- with the array_position function.
230
-
231
- * Database#foreign_key_list on PostgreSQL now uses a single
232
- query instead of two queries, and also uses the array_position
233
- function on PostgreSQL 9.5+ to simplify the queries.
234
-
235
- * On PostgreSQL and Derby, when calling Database#create_table
236
- with the :ignore_index_errors option inside a transaction,
237
- a savepoint is used around each index creation so that an
238
- index error does not cause the entire transaction to fail.
239
- A savepoint is also used on Microsoft SQL Server, but it
240
- appears that Microsoft SQL Server rolls back the entire
241
- transaction if CREATE INDEX returns an error, instead of
242
- just rolling back to the savepoint.
243
-
244
- * Encoding is now preserved when parsing PostgreSQL arrays in the
245
- pg_array extension.
246
-
247
- * Database#copy_table in the postgres adapter now does not
248
- hide the underlying exception if an exception is raised
249
- during processing.
250
-
251
- * Database#copy_into in the jdbc/postgresql adapter now does not
252
- hide the underlying exception if an exception is raised
253
- during processing.
254
-
255
- * Database#copy_into in the jdbc/postgresql adapter now
256
- respects the :server option for using a specific shard.
257
-
258
- * Calling #reset_conversion_procs on Database instance that
259
- uses the pg_hstore extension now results in the hstore
260
- type still being parsed. Previously, the hstore conversion
261
- proc would be dropped.
262
-
263
- * The postgres adapter no longer monkey-patches postgres-pr if it
264
- uses that as the driver.
265
-
266
- * Multiple thread-safety issues in the mock adapter have been
267
- fixed.
268
-
269
- * Thread safety issues when simultaneously loading multiple
270
- adapters that access PostgreSQL have been fixed.
271
-
272
- * Hash allocations have been reduced in the csv_serializer,
273
- json_serializer, and xml_serializer plugins.
274
-
275
- * The deprecated Sequel::Model::ANONYMOUS_MODEL_CLASSES
276
- constant is now correctly populated with classes created
277
- by Sequel::Model(). This was broken in starting in
278
- Sequel 4.45.0.
279
-
280
- = Backwards Compatibility
281
-
282
- * The pg_array_associations plugin now loads the pg_array
283
- extension into the Database instance if it is not already
284
- loaded. This can break cases where the pg_array_associations
285
- plugin is used on a non-PostgreSQL database.
286
-
287
- * Support for using the old postgres driver has been removed
288
- from the postgres adapter. The postgres adapter now only
289
- supports pg and postgres-pr.
290
-
291
- * When the postgres-pr driver is being used by the postgres
292
- adapter, connecting to a database is only allowed if
293
- standard strings are being forced (the default).
@@ -1,222 +0,0 @@
1
- = Forward Compatibility
2
-
3
- Sequel 4.49.0 will be the last minor release of Sequel 4. While the
4
- vast majority of backwards incompatible changes in Sequel 5 have
5
- deprecation warnings in 4.49.0, there are a few changes that do
6
- not. Here is a brief list of changes coming in Sequel 5 that
7
- do not have deprecation warnings (note that this list may not be
8
- exhaustive):
9
-
10
- * The {before,after,around}_validation hooks will always be called
11
- when saving, even if the validate: false option is used. This
12
- will allow you to use the before_validation hook to make changes
13
- to the model instance that are required before validation and
14
- before saving even if not validating. Currently, you would have
15
- to use both a before_save and before_validation hook, which would
16
- both be run on normal instance saving.
17
-
18
- * Getting values for newly created model instances after insertion
19
- now happens before after_create is called, instead of after.
20
- This behavior is currently available via the before_after_save
21
- plugin, and and will become the default behavior.
22
-
23
- * Sequel will now immediately attempt to the connect to the database
24
- when a Database instance is created, in order to fail fast. This
25
- behavior is currently available via the test: true option, and
26
- will become the default behavior. You can force not testing the
27
- connection by using the test: false option.
28
-
29
- * The validates_unique method in the validation_helpers plugin will
30
- now only check for uniqueness by default if the record is new or
31
- one of the related columns has been modified by default. You can
32
- use only_if_modified: false to force the uniqueness check.
33
-
34
- * Database schema methods and schema generator methods will return
35
- nil instead of some internal value.
36
-
37
- * Many cases where Sequel uses send internally will be switched to
38
- public_send so they only call public methods, unless it is
39
- specifically expected that they will call private methods.
40
-
41
- * Model association hooks will be nil instead of empty arrays by
42
- default. They will only be arrays if that hook has been set for
43
- the association.
44
-
45
- * Internal uses of instance_eval with a block will be changed to
46
- instance_exec. This will allow them to be used with lambdas that
47
- take no arguments. Unfortunately, it will break the case where a
48
- lambda is currently used that takes one argument.
49
-
50
- * Most internal constants will be frozen, unless there is a
51
- requirement that they be modified at runtime.
52
-
53
- * The @was_new instance variable set during model instance creation
54
- will be removed.
55
-
56
- = Deprecated Features
57
-
58
- * Model association before callbacks returning false canceling the
59
- action is now deprecated. The callbacks should now call
60
- Model#cancel_action to cancel the action.
61
-
62
- * Loading plugins by requiring them via sequel_#{plugin} is now
63
- deprecated. Affected plugins should move the plugin file so it can
64
- be required via sequel/plugins/#{plugin}.
65
-
66
- * In the mock adapter, Dataset#autoid=, #_fetch=, and #numrows= are
67
- now deprecated. They modified the dataset itself, which would not
68
- work for frozen datasets. Dataset#with_autoid, #with_fetch,
69
- and #with_numrows should be used instead, which return a modified
70
- copy.
71
-
72
- * In the null_dataset extension, Dataset#nullify! is now deprecated.
73
- It modified the dataset itself, which would not work for frozen
74
- datasets. Dataset#nullify should be used instead, which returns a
75
- modified copy.
76
-
77
- * Modifying the validation_helpers plugin DEFAULT_OPTIONS hash is now
78
- deprecated. Any change to the default options should be done by
79
- overriding the Model#default_validation_helpers_options private
80
- method.
81
-
82
- * Modifying ConnectionPool::CONNECTION_POOL_MAP to support an
83
- external connection pool is now deprecated. To use an external
84
- connection pool, pass the pool class via the :pool_class
85
- Database option. Additionally, using a :pool_class option that
86
- is not a class or a symbol for one of the default connection
87
- pools is also deprecated.
88
-
89
- * ConnectionPool#created_count is now deprecated. This method was
90
- misnamed, as it was in alias to size, but the name implies it
91
- returns how many connections have been created, as opposed to how
92
- many connections are still in the pool.
93
-
94
- * Sequel::SQL::Function#f is now deprecated, switch to using #name
95
- instead.
96
-
97
- * Sequel::SQL::AliasedExpression#aliaz is now deprecated, switch
98
- to using #alias instead.
99
-
100
- * The :eager_loading_predicate_key association option and
101
- eager_loading_predicate_key association method are now deprecated.
102
- The predicate_key option and method should be used instead.
103
-
104
- * The cti_columns class method in the class_table_inheritance plugin
105
- is now deprecated.
106
-
107
- * The serialized_columns class method in the serialization plugin
108
- is now deprecated.
109
-
110
- * Having ds.join_table(:table, :cross, :a=>:b) be treated as an
111
- inner join on MySQL is now deprecated.
112
-
113
- * Sequel::IBMDB::Connection#prepared_statements= in the ibmdb
114
- adapter is now deprecated.
115
-
116
- * Additional internal constants are now deprecated.
117
-
118
- = New Features
119
-
120
- * Database#extend_datasets and Database#with_extend if given a block
121
- now use a Dataset::DatasetModule instance instead of a plain Module
122
- instance. Dataset::DatasetModule is a subset of
123
- Model::DatasetModule, and allows for the easy creation of dataset
124
- methods that can perform caching for frozen datasets.
125
-
126
- Defining dataset methods is done by calling methods with the same
127
- name as dataset methods inside the extend_datasets or with_extend
128
- block:
129
-
130
- DB.extend_datasets do
131
- order :by_id, :id
132
- select :with_id_and_name, :id, :name
133
- where :active, :active
134
- end
135
-
136
- This is equivalent to:
137
-
138
- DB.extend_datasets do
139
- def by_id
140
- order(:id)
141
- end
142
-
143
- def with_id_and_name
144
- select(:id, :name)
145
- end
146
-
147
- def active
148
- where(:active)
149
- end
150
- end
151
-
152
- Except that for frozen datasets (the default in Sequel 5),
153
- code like:
154
-
155
- 100.times do
156
- DB[:table].active.with_id_and_name.by_id
157
- end
158
-
159
- will only allocate 4 datasets instead of 400, and can be
160
- 3-4 times faster.
161
-
162
- * Dataset#where_{all,each,single_value} are now core dataset methods
163
- instead of just model dataset methods. These methods allow you to
164
- replace:
165
-
166
- dataset.where(cond).all
167
- dataset.where(cond).each{}
168
- dataset.where(cond).single_value
169
-
170
- with:
171
-
172
- dataset.where_all(cond)
173
- dataset.where_each(cond){}
174
- dataset.where_single_value(cond)
175
-
176
- The advantage of #where_{all,each,single_value} is that frozen
177
- datasets can take potentially advantage of caching and perform
178
- 70%-300% faster.
179
-
180
- * Oracle 12 native limit/offset support is now supported, which
181
- in particular makes offset queries much faster as they don't
182
- have to be emulated using the row_number window function.
183
-
184
- * Dataset#paged_each in the mysql2 adapter now supports a
185
- :stream=>false option to disable streaming and fallback to
186
- the default implementation.
187
-
188
- * The postgres adapter now supports the :sslrootcert option
189
- directly, you no longer need to specify it using the
190
- :driver_options hash.
191
-
192
- * The single_table_inheritance plugin now supports an
193
- sti_class_from_sti_key method for getting the appropriate
194
- subclass for the given key.
195
-
196
- = Other Improvements
197
-
198
- * Using the dataset_associations plugin with a many_through_many
199
- association that joins to the same table multiple times is now
200
- handled correctly by automatically aliasing the table
201
- appropriately.
202
-
203
- * On Ruby 2.1+, Sequel::Error#cause will use wrapped_exception
204
- if one is set. This doesn't result in different behavior in
205
- most cases, but it can in cases where nested exception handling
206
- is done and Sequel tries to raise the most relevant exception.
207
-
208
- * Using the composition plugin with the :mapping option now works
209
- correctly when using the column_conflicts plugin.
210
-
211
- * The validation_helpers plugin's validates_max_length method
212
- now correctly gets the default :nil_message option from
213
- the default_validation_helpers_options method instead of
214
- looking at the plugin defaults.
215
-
216
- * The duplicate_columns_handler extension no longer makes the
217
- Dataset#columns= method public.
218
-
219
- * On H2 1.4+, alter_table add_primary_key now works correctly.
220
-
221
- * The jdbc/sqlserver adapter's datetimeoffset type handling now
222
- works with more JDBC driver versions.