sequel 5.28.0 → 5.33.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 (380) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +64 -1922
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +1 -1
  5. data/doc/advanced_associations.rdoc +4 -4
  6. data/doc/association_basics.rdoc +3 -3
  7. data/doc/code_order.rdoc +12 -2
  8. data/doc/model_dataset_method_design.rdoc +1 -1
  9. data/doc/postgresql.rdoc +71 -0
  10. data/doc/release_notes/5.29.0.txt +22 -0
  11. data/doc/release_notes/5.30.0.txt +20 -0
  12. data/doc/release_notes/5.31.0.txt +148 -0
  13. data/doc/release_notes/5.32.0.txt +46 -0
  14. data/doc/release_notes/5.33.0.txt +24 -0
  15. data/doc/testing.rdoc +1 -1
  16. data/lib/sequel/adapters/postgres.rb +5 -1
  17. data/lib/sequel/adapters/shared/access.rb +6 -6
  18. data/lib/sequel/adapters/shared/mssql.rb +5 -5
  19. data/lib/sequel/adapters/shared/mysql.rb +10 -10
  20. data/lib/sequel/adapters/shared/oracle.rb +16 -16
  21. data/lib/sequel/adapters/shared/postgres.rb +169 -14
  22. data/lib/sequel/adapters/shared/sqlanywhere.rb +9 -9
  23. data/lib/sequel/adapters/shared/sqlite.rb +32 -5
  24. data/lib/sequel/adapters/tinytds.rb +1 -1
  25. data/lib/sequel/connection_pool/sharded_threaded.rb +2 -2
  26. data/lib/sequel/connection_pool/threaded.rb +1 -1
  27. data/lib/sequel/core.rb +318 -314
  28. data/lib/sequel/database/query.rb +1 -1
  29. data/lib/sequel/database/schema_generator.rb +1 -1
  30. data/lib/sequel/database/transactions.rb +8 -12
  31. data/lib/sequel/dataset/misc.rb +2 -2
  32. data/lib/sequel/extensions/connection_expiration.rb +2 -2
  33. data/lib/sequel/extensions/connection_validator.rb +2 -2
  34. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  35. data/lib/sequel/extensions/index_caching.rb +9 -7
  36. data/lib/sequel/extensions/integer64.rb +2 -0
  37. data/lib/sequel/extensions/migration.rb +1 -1
  38. data/lib/sequel/extensions/pg_enum.rb +5 -2
  39. data/lib/sequel/extensions/pg_hstore.rb +6 -0
  40. data/lib/sequel/extensions/pg_inet.rb +13 -5
  41. data/lib/sequel/extensions/pg_interval.rb +2 -0
  42. data/lib/sequel/extensions/pg_range.rb +2 -0
  43. data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
  44. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  45. data/lib/sequel/extensions/schema_dumper.rb +10 -4
  46. data/lib/sequel/extensions/server_block.rb +3 -3
  47. data/lib/sequel/model/associations.rb +18 -5
  48. data/lib/sequel/model/base.rb +60 -53
  49. data/lib/sequel/model/plugins.rb +1 -0
  50. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  51. data/lib/sequel/plugins/association_multi_add_remove.rb +2 -0
  52. data/lib/sequel/plugins/association_proxies.rb +2 -0
  53. data/lib/sequel/plugins/boolean_subsets.rb +4 -1
  54. data/lib/sequel/plugins/class_table_inheritance.rb +26 -26
  55. data/lib/sequel/plugins/dirty.rb +13 -13
  56. data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
  57. data/lib/sequel/plugins/forbid_lazy_load.rb +214 -0
  58. data/lib/sequel/plugins/json_serializer.rb +18 -11
  59. data/lib/sequel/plugins/single_table_inheritance.rb +15 -15
  60. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  61. data/lib/sequel/plugins/subclasses.rb +2 -0
  62. data/lib/sequel/plugins/throw_failures.rb +1 -1
  63. data/lib/sequel/timezones.rb +6 -4
  64. data/lib/sequel/version.rb +1 -1
  65. metadata +18 -367
  66. data/Rakefile +0 -151
  67. data/doc/release_notes/4.0.0.txt +0 -262
  68. data/doc/release_notes/4.1.0.txt +0 -85
  69. data/doc/release_notes/4.10.0.txt +0 -226
  70. data/doc/release_notes/4.11.0.txt +0 -147
  71. data/doc/release_notes/4.12.0.txt +0 -105
  72. data/doc/release_notes/4.13.0.txt +0 -169
  73. data/doc/release_notes/4.14.0.txt +0 -68
  74. data/doc/release_notes/4.15.0.txt +0 -56
  75. data/doc/release_notes/4.16.0.txt +0 -36
  76. data/doc/release_notes/4.17.0.txt +0 -38
  77. data/doc/release_notes/4.18.0.txt +0 -36
  78. data/doc/release_notes/4.19.0.txt +0 -45
  79. data/doc/release_notes/4.2.0.txt +0 -129
  80. data/doc/release_notes/4.20.0.txt +0 -79
  81. data/doc/release_notes/4.21.0.txt +0 -94
  82. data/doc/release_notes/4.22.0.txt +0 -72
  83. data/doc/release_notes/4.23.0.txt +0 -65
  84. data/doc/release_notes/4.24.0.txt +0 -99
  85. data/doc/release_notes/4.25.0.txt +0 -181
  86. data/doc/release_notes/4.26.0.txt +0 -44
  87. data/doc/release_notes/4.27.0.txt +0 -78
  88. data/doc/release_notes/4.28.0.txt +0 -57
  89. data/doc/release_notes/4.29.0.txt +0 -41
  90. data/doc/release_notes/4.3.0.txt +0 -40
  91. data/doc/release_notes/4.30.0.txt +0 -37
  92. data/doc/release_notes/4.31.0.txt +0 -57
  93. data/doc/release_notes/4.32.0.txt +0 -132
  94. data/doc/release_notes/4.33.0.txt +0 -88
  95. data/doc/release_notes/4.34.0.txt +0 -86
  96. data/doc/release_notes/4.35.0.txt +0 -130
  97. data/doc/release_notes/4.36.0.txt +0 -116
  98. data/doc/release_notes/4.37.0.txt +0 -50
  99. data/doc/release_notes/4.38.0.txt +0 -67
  100. data/doc/release_notes/4.39.0.txt +0 -127
  101. data/doc/release_notes/4.4.0.txt +0 -92
  102. data/doc/release_notes/4.40.0.txt +0 -179
  103. data/doc/release_notes/4.41.0.txt +0 -77
  104. data/doc/release_notes/4.42.0.txt +0 -221
  105. data/doc/release_notes/4.43.0.txt +0 -87
  106. data/doc/release_notes/4.44.0.txt +0 -125
  107. data/doc/release_notes/4.45.0.txt +0 -370
  108. data/doc/release_notes/4.46.0.txt +0 -404
  109. data/doc/release_notes/4.47.0.txt +0 -56
  110. data/doc/release_notes/4.48.0.txt +0 -293
  111. data/doc/release_notes/4.49.0.txt +0 -222
  112. data/doc/release_notes/4.5.0.txt +0 -34
  113. data/doc/release_notes/4.6.0.txt +0 -30
  114. data/doc/release_notes/4.7.0.txt +0 -103
  115. data/doc/release_notes/4.8.0.txt +0 -175
  116. data/doc/release_notes/4.9.0.txt +0 -190
  117. data/spec/adapter_spec.rb +0 -4
  118. data/spec/adapters/db2_spec.rb +0 -170
  119. data/spec/adapters/mssql_spec.rb +0 -828
  120. data/spec/adapters/mysql_spec.rb +0 -1060
  121. data/spec/adapters/oracle_spec.rb +0 -371
  122. data/spec/adapters/postgres_spec.rb +0 -4476
  123. data/spec/adapters/spec_helper.rb +0 -44
  124. data/spec/adapters/sqlanywhere_spec.rb +0 -97
  125. data/spec/adapters/sqlite_spec.rb +0 -652
  126. data/spec/bin_spec.rb +0 -278
  127. data/spec/core/connection_pool_spec.rb +0 -1250
  128. data/spec/core/database_spec.rb +0 -2915
  129. data/spec/core/dataset_spec.rb +0 -5547
  130. data/spec/core/deprecated_spec.rb +0 -70
  131. data/spec/core/expression_filters_spec.rb +0 -1498
  132. data/spec/core/mock_adapter_spec.rb +0 -722
  133. data/spec/core/object_graph_spec.rb +0 -336
  134. data/spec/core/placeholder_literalizer_spec.rb +0 -166
  135. data/spec/core/schema_generator_spec.rb +0 -214
  136. data/spec/core/schema_spec.rb +0 -1844
  137. data/spec/core/spec_helper.rb +0 -24
  138. data/spec/core/version_spec.rb +0 -14
  139. data/spec/core_extensions_spec.rb +0 -763
  140. data/spec/core_model_spec.rb +0 -2
  141. data/spec/core_spec.rb +0 -1
  142. data/spec/deprecation_helper.rb +0 -30
  143. data/spec/extensions/accessed_columns_spec.rb +0 -51
  144. data/spec/extensions/active_model_spec.rb +0 -99
  145. data/spec/extensions/after_initialize_spec.rb +0 -28
  146. data/spec/extensions/any_not_empty_spec.rb +0 -23
  147. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  148. data/spec/extensions/association_dependencies_spec.rb +0 -125
  149. data/spec/extensions/association_multi_add_remove_spec.rb +0 -1041
  150. data/spec/extensions/association_pks_spec.rb +0 -423
  151. data/spec/extensions/association_proxies_spec.rb +0 -100
  152. data/spec/extensions/auto_literal_strings_spec.rb +0 -205
  153. data/spec/extensions/auto_validations_spec.rb +0 -229
  154. data/spec/extensions/blacklist_security_spec.rb +0 -95
  155. data/spec/extensions/blank_spec.rb +0 -69
  156. data/spec/extensions/boolean_readers_spec.rb +0 -93
  157. data/spec/extensions/boolean_subsets_spec.rb +0 -47
  158. data/spec/extensions/caching_spec.rb +0 -273
  159. data/spec/extensions/caller_logging_spec.rb +0 -52
  160. data/spec/extensions/class_table_inheritance_spec.rb +0 -750
  161. data/spec/extensions/column_conflicts_spec.rb +0 -75
  162. data/spec/extensions/column_select_spec.rb +0 -129
  163. data/spec/extensions/columns_introspection_spec.rb +0 -90
  164. data/spec/extensions/columns_updated_spec.rb +0 -35
  165. data/spec/extensions/composition_spec.rb +0 -248
  166. data/spec/extensions/connection_expiration_spec.rb +0 -151
  167. data/spec/extensions/connection_validator_spec.rb +0 -144
  168. data/spec/extensions/constant_sql_override_spec.rb +0 -24
  169. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
  170. data/spec/extensions/constraint_validations_spec.rb +0 -439
  171. data/spec/extensions/core_refinements_spec.rb +0 -528
  172. data/spec/extensions/csv_serializer_spec.rb +0 -183
  173. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  174. data/spec/extensions/dataset_associations_spec.rb +0 -365
  175. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  176. data/spec/extensions/date_arithmetic_spec.rb +0 -181
  177. data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
  178. data/spec/extensions/def_dataset_method_spec.rb +0 -100
  179. data/spec/extensions/defaults_setter_spec.rb +0 -150
  180. data/spec/extensions/delay_add_association_spec.rb +0 -73
  181. data/spec/extensions/dirty_spec.rb +0 -222
  182. data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
  183. data/spec/extensions/eager_each_spec.rb +0 -62
  184. data/spec/extensions/eager_graph_eager_spec.rb +0 -100
  185. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  186. data/spec/extensions/error_splitter_spec.rb +0 -18
  187. data/spec/extensions/error_sql_spec.rb +0 -20
  188. data/spec/extensions/escaped_like_spec.rb +0 -40
  189. data/spec/extensions/eval_inspect_spec.rb +0 -81
  190. data/spec/extensions/exclude_or_null_spec.rb +0 -15
  191. data/spec/extensions/finder_spec.rb +0 -260
  192. data/spec/extensions/force_encoding_spec.rb +0 -126
  193. data/spec/extensions/freeze_datasets_spec.rb +0 -31
  194. data/spec/extensions/graph_each_spec.rb +0 -113
  195. data/spec/extensions/hook_class_methods_spec.rb +0 -402
  196. data/spec/extensions/identifier_mangling_spec.rb +0 -201
  197. data/spec/extensions/implicit_subquery_spec.rb +0 -58
  198. data/spec/extensions/index_caching_spec.rb +0 -66
  199. data/spec/extensions/inflector_spec.rb +0 -183
  200. data/spec/extensions/input_transformer_spec.rb +0 -69
  201. data/spec/extensions/insert_conflict_spec.rb +0 -103
  202. data/spec/extensions/insert_returning_select_spec.rb +0 -72
  203. data/spec/extensions/instance_filters_spec.rb +0 -79
  204. data/spec/extensions/instance_hooks_spec.rb +0 -246
  205. data/spec/extensions/integer64_spec.rb +0 -22
  206. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  207. data/spec/extensions/json_serializer_spec.rb +0 -336
  208. data/spec/extensions/lazy_attributes_spec.rb +0 -183
  209. data/spec/extensions/list_spec.rb +0 -291
  210. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  211. data/spec/extensions/many_through_many_spec.rb +0 -2177
  212. data/spec/extensions/migration_spec.rb +0 -864
  213. data/spec/extensions/modification_detection_spec.rb +0 -93
  214. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
  215. data/spec/extensions/named_timezones_spec.rb +0 -218
  216. data/spec/extensions/nested_attributes_spec.rb +0 -815
  217. data/spec/extensions/null_dataset_spec.rb +0 -85
  218. data/spec/extensions/optimistic_locking_spec.rb +0 -127
  219. data/spec/extensions/pagination_spec.rb +0 -116
  220. data/spec/extensions/pg_array_associations_spec.rb +0 -802
  221. data/spec/extensions/pg_array_ops_spec.rb +0 -144
  222. data/spec/extensions/pg_array_spec.rb +0 -398
  223. data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -209
  224. data/spec/extensions/pg_enum_spec.rb +0 -118
  225. data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
  226. data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
  227. data/spec/extensions/pg_hstore_spec.rb +0 -219
  228. data/spec/extensions/pg_inet_ops_spec.rb +0 -102
  229. data/spec/extensions/pg_inet_spec.rb +0 -72
  230. data/spec/extensions/pg_interval_spec.rb +0 -103
  231. data/spec/extensions/pg_json_ops_spec.rb +0 -356
  232. data/spec/extensions/pg_json_spec.rb +0 -451
  233. data/spec/extensions/pg_loose_count_spec.rb +0 -23
  234. data/spec/extensions/pg_range_ops_spec.rb +0 -60
  235. data/spec/extensions/pg_range_spec.rb +0 -600
  236. data/spec/extensions/pg_row_ops_spec.rb +0 -61
  237. data/spec/extensions/pg_row_plugin_spec.rb +0 -60
  238. data/spec/extensions/pg_row_spec.rb +0 -363
  239. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
  240. data/spec/extensions/pg_timestamptz_spec.rb +0 -17
  241. data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
  242. data/spec/extensions/prepared_statements_spec.rb +0 -177
  243. data/spec/extensions/pretty_table_spec.rb +0 -123
  244. data/spec/extensions/query_spec.rb +0 -94
  245. data/spec/extensions/rcte_tree_spec.rb +0 -387
  246. data/spec/extensions/round_timestamps_spec.rb +0 -39
  247. data/spec/extensions/s_spec.rb +0 -60
  248. data/spec/extensions/schema_caching_spec.rb +0 -64
  249. data/spec/extensions/schema_dumper_spec.rb +0 -870
  250. data/spec/extensions/select_remove_spec.rb +0 -38
  251. data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
  252. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  253. data/spec/extensions/serialization_spec.rb +0 -365
  254. data/spec/extensions/server_block_spec.rb +0 -135
  255. data/spec/extensions/server_logging_spec.rb +0 -45
  256. data/spec/extensions/sharding_spec.rb +0 -197
  257. data/spec/extensions/shared_caching_spec.rb +0 -151
  258. data/spec/extensions/single_table_inheritance_spec.rb +0 -347
  259. data/spec/extensions/singular_table_names_spec.rb +0 -22
  260. data/spec/extensions/skip_create_refresh_spec.rb +0 -18
  261. data/spec/extensions/spec_helper.rb +0 -70
  262. data/spec/extensions/split_array_nil_spec.rb +0 -24
  263. data/spec/extensions/split_values_spec.rb +0 -57
  264. data/spec/extensions/sql_comments_spec.rb +0 -33
  265. data/spec/extensions/sql_expr_spec.rb +0 -59
  266. data/spec/extensions/static_cache_cache_spec.rb +0 -35
  267. data/spec/extensions/static_cache_spec.rb +0 -471
  268. data/spec/extensions/string_agg_spec.rb +0 -90
  269. data/spec/extensions/string_date_time_spec.rb +0 -95
  270. data/spec/extensions/string_stripper_spec.rb +0 -68
  271. data/spec/extensions/subclasses_spec.rb +0 -79
  272. data/spec/extensions/subset_conditions_spec.rb +0 -38
  273. data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
  274. data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
  275. data/spec/extensions/synchronize_sql_spec.rb +0 -124
  276. data/spec/extensions/table_select_spec.rb +0 -83
  277. data/spec/extensions/tactical_eager_loading_spec.rb +0 -402
  278. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  279. data/spec/extensions/throw_failures_spec.rb +0 -74
  280. data/spec/extensions/timestamps_spec.rb +0 -209
  281. data/spec/extensions/to_dot_spec.rb +0 -153
  282. data/spec/extensions/touch_spec.rb +0 -226
  283. data/spec/extensions/tree_spec.rb +0 -334
  284. data/spec/extensions/typecast_on_load_spec.rb +0 -86
  285. data/spec/extensions/unlimited_update_spec.rb +0 -21
  286. data/spec/extensions/update_or_create_spec.rb +0 -83
  287. data/spec/extensions/update_primary_key_spec.rb +0 -105
  288. data/spec/extensions/update_refresh_spec.rb +0 -59
  289. data/spec/extensions/uuid_spec.rb +0 -101
  290. data/spec/extensions/validate_associated_spec.rb +0 -52
  291. data/spec/extensions/validation_class_methods_spec.rb +0 -1040
  292. data/spec/extensions/validation_contexts_spec.rb +0 -31
  293. data/spec/extensions/validation_helpers_spec.rb +0 -525
  294. data/spec/extensions/whitelist_security_spec.rb +0 -157
  295. data/spec/extensions/xml_serializer_spec.rb +0 -213
  296. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  297. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  298. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  299. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  300. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  301. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  302. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  303. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  304. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  305. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  306. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  307. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  308. data/spec/files/double_migration/001_create_sessions.rb +0 -9
  309. data/spec/files/double_migration/002_create_nodes.rb +0 -19
  310. data/spec/files/double_migration/003_3_create_users.rb +0 -4
  311. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  312. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  313. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  314. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  315. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  316. data/spec/files/empty_migration/001_create_sessions.rb +0 -9
  317. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  318. data/spec/files/empty_migration/003_3_create_users.rb +0 -4
  319. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  320. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  321. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  322. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  323. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  324. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  325. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  326. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  327. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  328. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  329. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  330. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  331. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  332. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  333. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  334. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  335. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  336. data/spec/files/reversible_migrations/006_reversible.rb +0 -10
  337. data/spec/files/reversible_migrations/007_reversible.rb +0 -10
  338. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  339. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  340. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  341. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  342. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  343. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  344. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  345. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  346. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  347. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  348. data/spec/guards_helper.rb +0 -59
  349. data/spec/integration/associations_test.rb +0 -2597
  350. data/spec/integration/database_test.rb +0 -113
  351. data/spec/integration/dataset_test.rb +0 -2037
  352. data/spec/integration/eager_loader_test.rb +0 -687
  353. data/spec/integration/migrator_test.rb +0 -262
  354. data/spec/integration/model_test.rb +0 -203
  355. data/spec/integration/plugin_test.rb +0 -2423
  356. data/spec/integration/prepared_statement_test.rb +0 -405
  357. data/spec/integration/schema_test.rb +0 -903
  358. data/spec/integration/spec_helper.rb +0 -71
  359. data/spec/integration/timezone_test.rb +0 -86
  360. data/spec/integration/transaction_test.rb +0 -603
  361. data/spec/integration/type_test.rb +0 -127
  362. data/spec/model/association_reflection_spec.rb +0 -803
  363. data/spec/model/associations_spec.rb +0 -4738
  364. data/spec/model/base_spec.rb +0 -875
  365. data/spec/model/class_dataset_methods_spec.rb +0 -146
  366. data/spec/model/dataset_methods_spec.rb +0 -198
  367. data/spec/model/eager_loading_spec.rb +0 -2377
  368. data/spec/model/hooks_spec.rb +0 -370
  369. data/spec/model/inflector_spec.rb +0 -26
  370. data/spec/model/model_spec.rb +0 -956
  371. data/spec/model/plugins_spec.rb +0 -429
  372. data/spec/model/record_spec.rb +0 -2118
  373. data/spec/model/spec_helper.rb +0 -46
  374. data/spec/model/validations_spec.rb +0 -220
  375. data/spec/model_no_assoc_spec.rb +0 -1
  376. data/spec/model_spec.rb +0 -1
  377. data/spec/plugin_spec.rb +0 -1
  378. data/spec/sequel_coverage.rb +0 -15
  379. data/spec/sequel_warning.rb +0 -4
  380. data/spec/spec_config.rb +0 -12
@@ -1,404 +0,0 @@
1
- = Deprecated Features
2
-
3
- * Symbol splitting is now deprecated by default. Sequel has
4
- split symbols since the very first version, but it has caused
5
- many problems over the years and while terse, it isn't
6
- intuitive to new Sequel users and causes significant
7
- problems when using databases that use double/triple
8
- underscores in identifiers.
9
-
10
- If you are using symbols with embedded double/triple
11
- underscores, such as:
12
-
13
- :table__column
14
- :column___alias
15
- :table__column___alias
16
-
17
- you either need to turn symbol splitting on by doing:
18
-
19
- Sequel.split_symbols = true
20
-
21
- or you need to convert the symbols to Sequel objects:
22
-
23
- Sequel[:table][:column]
24
- Sequel[:column].as(:alias)
25
- Sequel[:table][:column].as(:alias)
26
-
27
- Sequel ships with multiple extensions that make creation
28
- of those Sequel objects less verbose, so consider using
29
- the symbol_aref, symbol_aref_refinement, symbol_as,
30
- symbol_as_refinement, and/or s extensions.
31
-
32
- To automatically convert symbols with double/triple
33
- underscores to their Sequel object equivalents, you can
34
- use the sequel-unsplit tool available at
35
- https://github.com/jeremyevans/sequel-unsplit.
36
-
37
- This deprecation also affects virtual row block methods that use
38
- double underscores. For example:
39
-
40
- DB[:table].where{table__column > 3}
41
-
42
- should be changed to:
43
-
44
- DB[:table].where{table[:column] > 3}
45
-
46
- * Automatically treating plain strings passed to filtering/update
47
- methods as literal strings has been deprecated, with support moved
48
- to the auto_literal_strings extension. The automatic conversion
49
- of plain strings to literal SQL is the most common cause of
50
- SQL injections in applications using Sequel, since many methods
51
- pass their arguments down to the filtering methods, without
52
- considering whether the argument might be a string derived from
53
- user input. By requiring explicit marking of literal SQL strings,
54
- SQL injections are less likely and easier to audit for.
55
-
56
- This change means that unless you want to use the
57
- auto_literal_strings extension, code such as:
58
-
59
- DB[:table].where("a = 1")
60
- DB[:table].where("a > ?", 1)
61
-
62
- should to be converted to:
63
-
64
- DB[:table].where(Sequel.lit("a = 1"))
65
- DB[:table].where(Sequel.lit("a > ?", 1))
66
-
67
- or even better, avoid literal SQL completely by converting it to
68
- use equivalent Sequel expressions:
69
-
70
- DB[:table].where(:a => 1)
71
- DB[:table].where{a > 1}
72
-
73
- This change also affects passing Dataset#update a string:
74
-
75
- # Before
76
- DB[:table].update("a = a + 1")
77
-
78
- # Change to
79
- DB[:table].update(Sequel.lit("a = a + 1"))
80
- DB[:table].update(:a => Sequel[:a] + 1)
81
-
82
- Note that this deprecation does not affect cases where literal
83
- SQL is used for the entire query, such as when using any of the
84
- following:
85
-
86
- DB["SELECT * FROM foo"]
87
- DB.fetch("SELECT * FROM foo WHERE a = ?", 1)
88
- DB.dataset.with_sql("SELECT * FROM foo WHERE a = ?", 1)
89
-
90
- * Passing blocks to virtual row methods has been deprecated,
91
- with support moved to the virtual_row_method_block
92
- extension. Historically, passing blocks to virtual row methods
93
- changed how the methods were handled, but in recent years
94
- alternative methods have been added to get the same results.
95
- If you don't want to use the virtual_row_method_block extension,
96
- conversion is fairly simple:
97
-
98
- # WHERE a()
99
- # Before
100
- where{a{}}
101
- # Change to
102
- where{a.function}
103
-
104
- # SELECT count(*)
105
- # Before
106
- select{count(:*){}}
107
- # Change to
108
- select{count.function.*}
109
-
110
- # SELECT count(DISTINCT c)
111
- # Before
112
- select{count(:distinct, :c){}}
113
- # Change to
114
- select{count(:c).distinct}
115
-
116
- # SELECT sum(c) OVER (PARTITION BY a)
117
- # Before
118
- select{count(:over, :args=>c, :partition=>:a){}}
119
- # Change to
120
- select{count(:c).over(:partition=>:a)}
121
-
122
- * Model.set_allowed_columns and Model#{set,update}_{all,only}
123
- have been deprecated, with support moved to the
124
- whitelist_security plugin. These were the historical mass
125
- assignment methods supported by Sequel, but set_fields and
126
- update_fields have been recommended instead for many years.
127
-
128
- * Model.finder and .prepared_finder have been deprecated by default,
129
- with support moved to the finder plugin. Model.finder was
130
- originally added to make it easy to create optimized finder
131
- methods, but few Sequel users actually use it, so it makes more
132
- sense to move it to a plugin.
133
-
134
- * Model.def_dataset_method and Model.subset have been deprecated
135
- by default, with support moved to the def_dataset_method plugin.
136
- It's been recommended for many years to use Model.dataset_module
137
- to define dataset methods, instead of calling def_dataset_method
138
- and subset on the model class.
139
-
140
- * Using ` in virtual rows to create literal SQL is now deprecated,
141
- switch to using Sequel.lit instead:
142
-
143
- # Before
144
- DB[:table].where{`a = 1`}
145
- # Change to
146
- DB[:table].where(Sequel.lit('a = 1'))
147
-
148
- * Corner cases in argument handling in the filtering methods are now
149
- deprecated, including:
150
-
151
- * Ignoring a filtering method called without an argument or block.
152
- In Sequel 5, this will raise an exception.
153
-
154
- * Ignoring empty string arguments or other objects that respond to
155
- empty? and return true. In Sequel 5, only an empty array or hash
156
- will be ignored.
157
-
158
- * Ignoring an explicit nil argument when a block is passed. In
159
- Sequel 5, this will use a NULL filter.
160
-
161
- * Ignoring an explicit nil argument when there is no existing
162
- filter on the dataset. In Sequel 5, this will use a NULL
163
- filter.
164
-
165
- * Using a joined dataset as a Sequel::Model dataset is now
166
- deprecated. Such datasets should now be wrapped in a subquery.
167
- In Sequel 5, such datasets will automatically be wrapped in
168
- a subquery aliased to the first table.
169
-
170
- # Before
171
- Model.dataset = DB[:a].join(:b, :id=>:b_id)
172
- # Change to
173
- Model.dataset = DB[:a].join(:b, :id=>:b_id).from_self(:alias=>:a)
174
-
175
- * Model.first_where has been deprecated, Model.first should be used
176
- instead.
177
-
178
- * Database#log_yield is now deprecated. This does not affect any of
179
- the adapters that ship with Sequel, but external adapters that
180
- have not yet been updated to support #log_connection_yield will need
181
- to be updated.
182
-
183
- * The set_overrides extension is now deprecated. Anyone using it
184
- should consider supporting it as an external extension.
185
-
186
- * Many internal Database and Dataset regexp and string constants
187
- that were previously used internally have been deprecated.
188
- Additionally, some historical aliases for existing constants
189
- have also been deprecated, such as Sequel::Schema::Generator.
190
- Ruby 2.3+ is required to receive deprecation warnings related to
191
- these constants.
192
-
193
- * Passing model classes as the first argument to Dataset#join_table
194
- and Dataset#graph is now deprecated. Pass the model's table name
195
- or the model's datasets instead.
196
-
197
- * Passing model instances to Dataset#insert and #insert_sql is now
198
- deprecated. Call values on the model instance to get the values
199
- hash, and pass that as the argument instead.
200
-
201
- * Calling Dataset#set_graph_aliases before Dataset#graph is now
202
- deprecated. Dataset#set_graph_aliases should now be called
203
- after Dataset#graph, not before.
204
-
205
- * The sequel/no_core_ext file is deprecated. Sequel hasn't loaded
206
- the core extensions by default since Sequel 3. You can use the
207
- following if you want to support both Sequel 3 and Sequel 5:
208
-
209
- begin
210
- require 'sequel/no_core_ext'
211
- rescue LoadError
212
- require 'sequel'
213
- end
214
-
215
- * Database#pragma_get and #pragma_set on SQLite are now deprecated,
216
- along with any method that calls them, such as auto_vacuum,
217
- temp_store, foreign_keys, case_sensitive_like, synchronous, and
218
- their setter methods. To set these pragrams for all SQLite
219
- database connections, the appropriate options should be passed
220
- when creating the Database instance.
221
-
222
- * Automatically looking up the dataset class for a Database
223
- instance by looking for a DatasetClass constant in the Database's
224
- class is now deprecated. All adapters that ship with Sequel have
225
- been converted, but external adapters should now define the
226
- Database#dataset_class_default private method appropriately
227
- to return the correct dataset class.
228
-
229
- * Calling Model.db= on a model with a dataset is now deprecated.
230
- If a model already has a dataset, you must now use set_dataset
231
- or dataset= to change the dataset, not db=.
232
-
233
- * Sequel::SQL::Expression#sql_literal and #lit are now deprecated.
234
- These aren't used internally and aren't expected to be used
235
- externally.
236
-
237
- * {Integer,Timestamp}Migrator::DEFAULT_SCHEMA_{COLUMN,TABLE}
238
- are now deprecated. They have been replaced by
239
- default_schema_column and default_schema_table instance methods.
240
-
241
- * Passing a Schema::CreateTableGenerator instance as the
242
- second argument to Database#create_table is now
243
- deprecated. Database#create_table still supports passing the
244
- generator via the :generator option.
245
-
246
- * Passing a second argument to Database#alter_table is now
247
- deprecated.
248
-
249
- * Sequel::BasicObject.remove_methods! is now deprecated. It has
250
- always been a no-op on ruby 1.9+.
251
-
252
- * Referencing the PG_NAMED_TYPES constant in your code is now
253
- deprecated. Previously, adding entries to the PG_NAMED_TYPES
254
- was deprecated, but no deprecation message would be issued by
255
- referencing the constant.
256
-
257
- * The conversion of - to _ in adapter schemes is now deprecated.
258
- This does not affect any internal adapters, but it may affect
259
- external ones.
260
-
261
- * The Database#jdbc_* methods in the jdbc/db2 adapter (e.g.
262
- jdbc_tables) are now deprecated. Call the regular versions
263
- instead (e.g. tables).
264
-
265
- * Dataset#_filter and #_filter_or_exclude private methods have
266
- been deprecated. If you have an extension that was calling these
267
- methods, switch to the new #add_filter private method.
268
-
269
- = New Features
270
-
271
- * The class_table_inheritance plugin now supports an :alias option.
272
- If provided, this wraps subclass datasets in subqueries, avoiding
273
- problems with ambiguous columns and cases where the wrong table
274
- name is used. Due to the deprecation of joined datasets for
275
- models, use of the class_table_inheritance plugin without this
276
- :alias option will result in deprecation warnings. In Sequel 5,
277
- class_table_inheritance will default to using an :alias option
278
- with the same as the name of the parent table.
279
-
280
- * The Dataset#sqltime_precision private method has been added.
281
- Adapters can use override this if the precision for time values
282
- is different from the precision for timestamp values. Sequel
283
- uses this support on Microsoft SQL Server, so that time values
284
- now support microsecond precision, instead of millisecond
285
- precision.
286
-
287
- = Other Improvements
288
-
289
- * Sequel::Model classes that use a SQL::Identifier or
290
- SQL::QualifiedIdentifier FROM table value will now use optimized
291
- lookups and deletes, just as is done for those that use a
292
- Symbol or String.
293
-
294
- * Dataset#simple_select_all? now handles aliased subqueries
295
- correctly, returning false instead of true.
296
-
297
- * If Sequel.application_timezone is set to :utc,
298
- Sequel::SQLTime.create will create instances using utc time
299
- instead of local time.
300
-
301
- * If there is an exception while rolling back a transaction when
302
- using the :rollback=>:always option, the exception is now
303
- raised instead of being ignored.
304
-
305
- * If a migration file does not contain a migration or contains
306
- multiple migrations, the exception raised will now include
307
- the file name in the exception message.
308
-
309
- * In the jdbc/sqlserver adapter, time values with fractional
310
- seconds and datetimeoffset values are now handled better when
311
- using some versions of the underlying JDBC driver.
312
-
313
- * An additional disconnect error is recognized when using the
314
- mysql and mysql2 adapters.
315
-
316
- * Dataset#full_text_search on Microsoft SQL Server now works
317
- correctly if the no_auto_literal_strings extension is used.
318
-
319
- * Calling Database#disconnect when using the single connection
320
- pool without an active connection works correctly again. It was
321
- broken starting in 4.43.0 during changes to implement
322
- Database#freeze.
323
-
324
- * Model class methods are no longer added for private methods
325
- defined in a dataset_module block. Previously, a public model
326
- class method was defined, but it would raise an error when
327
- called.
328
-
329
- * Fixnum is no longer referenced in the sqlanywhere shared
330
- adapter, fixing deprecation warnings on ruby 2.4.
331
-
332
- * Sequel no longer uses constants for building SQL queries,
333
- relying on frozen string literal support for better
334
- performance on ruby 2.3+. However, this decreases SQL
335
- query building performance on ruby <2.3. For the fastest
336
- SQL query building, update to a recent version of ruby.
337
-
338
- * Sequel no longer ignores an empty object argument to a
339
- filtering method if a block is provided. Previously,
340
- this could raise an exception or produce invalid SQL.
341
-
342
- * Many small modifications were made to reduce array
343
- allocations, providing minor speedups.
344
-
345
- * Internal use of Array#at has been replaced with Array#[],
346
- providing minor speedups on recent ruby versions.
347
-
348
- * The jdbc/db2 adapter no longer adds jdbc_* methods to
349
- JDBC::Database.
350
-
351
- * Sequel no longer issues deprecation warnings on ruby 1.8.7.
352
- Sequel 5 will drop support for ruby 1.8.7, and it doesn't make
353
- sense to issue a deprecation warning if you couldn't upgrade
354
- anyway.
355
-
356
- = Backwards Compatibility
357
-
358
- * When specifying the :fields option to a nested_attributes
359
- setter, set_fields is now used internally instead of set_only.
360
- set_fields has been recommended over set_fields since it's
361
- introduction in Sequel 3.12, but nested_attributes was added
362
- in Sequel 3.4, before set_fields was available. The result
363
- of this change is that if additional fields are provided that
364
- do not match the fields in the :fields option, they will be
365
- ignored instead of an exception being raised.
366
-
367
- * When specifying a function name using a Sequel::SQL::Identifier
368
- instance, the function name is no longer quoted unless
369
- Sequel::SQL::Function#quoted is used to create a quoted
370
- function. The reason for this is to make converting virtual
371
- row method block code easier.
372
-
373
- # Before
374
- Sequel.function(Sequel[:a]) # "a"()
375
-
376
- # Now
377
- Sequel.function(Sequel[:a]) # a()
378
- Sequel.function(Sequel[:a]).quoted # "a"()
379
-
380
- * When passing an SQL::PlaceholderLiteralString instance to a
381
- dataset filtering method, the placeholder string is now always
382
- wrapped in parentheses:
383
-
384
- ds.where(Sequel.lit('? OR ?', :a, :b)).where(:c)
385
- # Before: WHERE a OR b AND c
386
- # Now: WHERE (a OR b) AND c
387
-
388
- This is more of a bugfix than a backwards compatibility issue,
389
- but is listed in the backwards compatibility section as there
390
- may be applications that could break due to this change.
391
-
392
- * Model.subset now calls Model.dataset_module.subset, instead of
393
- the other way around. If your code depends on this, you will
394
- need to make modifications.
395
-
396
- * The private Database#column_definition_order method no longer
397
- uses const_get(:COLUMN_DEFINITION_ORDER). External adapters
398
- that defined COLUMN_DEFINITION_ORDER but did not override
399
- this method must now override this method.
400
-
401
- * The private Database#native_function_name method no longer
402
- uses const_get(:EMULATED_FUNCTION_MAP). External adapters
403
- that defined EMULATED_FUNCTION_MAP but did not override
404
- this method must now override this method.
@@ -1,56 +0,0 @@
1
- = Deprecated Features
2
-
3
- * Setting an invalid dataset for a model is now deprecated.
4
- Historically, Sequel has swallowed exceptions for this to keep
5
- backwards compatibility, but it generally just results in code
6
- breaking later. To allow invalid datasets to be used:
7
-
8
- Sequel::Model.require_valid_table = false
9
-
10
- * The association_autoreloading and many_to_one_pk_lookup plugins
11
- are now deprecated. They were moved from plugins to standard
12
- model behavior in Sequel 4.0, and have been no-ops since.
13
-
14
- * The pg_typecast_on_load plugin is now deprecated. It is only useful
15
- on the already deprecated do and swift adapters.
16
-
17
- = New Features
18
-
19
- * Database#with_server in the server_block extension now accepts an
20
- optional second argument for the read only server to use. This
21
- allows for overriding the default server while providing a separate
22
- default for read only queries:
23
-
24
- DB.with_server(:server1, :server1ro) do
25
- DB[:a].all # Uses server1ro
26
- DB[:b].insert(1) # Uses server1
27
- end
28
-
29
- * Model.default_association_type_options has been added, allowing the
30
- ability to set default options per association type. This can be
31
- used to make some association types read_only by default:
32
-
33
- opts = Sequel::Model.default_association_type_options
34
- opts[:one_to_many] = opts[:many_to_many] = {:read_only=>true}
35
-
36
- * Database#views on PostgreSQL now accepts a :materialized option to
37
- return materialized views instead of regular views.
38
-
39
- = Other Improvements
40
-
41
- * Setting Sequel::Model.require_valid_table = true no longer raises
42
- an exception when using a valid dataset that selects from a subquery
43
- or table returning function or uses a join.
44
-
45
- * The defaults_setter plugin now inherits any custom default
46
- values when subclassing.
47
-
48
- * The schema_dumper extension now handles Oracle 11g XE behavior of
49
- appending not null to the database type.
50
-
51
- = Backwards Compatibility
52
-
53
- * External callers of Database#check_non_connection_error (private
54
- method) should update their code to call it with a true or false
55
- argument specifying whether to raise an error for exceptions that
56
- are not connection errors.