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,226 +0,0 @@
1
- = Performance Enhancements
2
-
3
- * Dataset literalization for simple datasets is now faster by
4
- creating a per-adapter SQL literalization method instead of
5
- having all adapters share a generic method with higher overhead.
6
- Sequel.split_symbol now caches results globally. Symbol
7
- literalization is now cached per Database.
8
-
9
- Combining these three optimizations, here are the performance
10
- increases compared to 4.9.0 for a couple example datasets:
11
-
12
- ds1 = DB[:a]
13
- ds2 = DB[:a].select(:a, :b).where(:c=>1).order(:d, :e)
14
-
15
- .sql .all (1 row)
16
- ds1 140% 11%
17
- ds2 187% 32%
18
-
19
- * Regular association loading now uses a placeholder literalizer
20
- in most cases, for up to an 85% improvement when loading
21
- simple associations.
22
-
23
- * Eager loading associations using Dataset#eager now uses a
24
- placeholder literalizer in most cases, for up to a
25
- 20% improvement when eager loading simple associations.
26
-
27
- * Eager loading associations with limits using Dataset#eager now
28
- uses a UNION-based strategy by default. After extensive
29
- testing, this was found to be the fastest strategy if the
30
- key columns are indexed. Unfortunately, it is a much slower
31
- strategy if the key columns are not indexed. You can override
32
- the default UNION strategy by using the :eager_limit_strategy
33
- association option.
34
-
35
- On some databases, execution time of UNION queries with n subqueries
36
- increases faster than O(n). Also, there are limits on the number of
37
- subqueries supported in a single UNION query. Sequel chooses a
38
- default limit of 40 subqueries per UNION query. You can increase
39
- this via the :subqueries_per_union association option.
40
-
41
- * Dataset#import and #multi_insert can now insert multiple rows
42
- in a single query on H2, HSQLDB, Derby, SQLAnywhere, CUBRID,
43
- SQLite, Oracle, DB2, and Firebird, which should be significantly
44
- faster than previous versions that issued a separate INSERT query
45
- per row.
46
-
47
- * The many_to_many setter method in the association_pks plugin now
48
- uses Dataset#import to insert many rows at once, instead of using
49
- a seperate query per insert.
50
-
51
- * The jdbc adapter's type conversion has been rewritten to be
52
- more similar to the other adapters, setting up the type
53
- conversion procs before iterating over results. This increases
54
- performance up to 20%.
55
-
56
- * The jdbc/oracle adapter now defaults to a fetch_size of 100,
57
- similar to the oci8-based oracle adapter, significantly improving
58
- performance for large datasets.
59
-
60
- = New Features
61
-
62
- * Database#transaction now supports an :auto_savepoint option. This
63
- option makes it so that transactions inside the transaction block
64
- automatically use savepoints unless they use the :savepoint=>false
65
- option. This should make testing transactional behavior easier.
66
-
67
- * Model.prepared_finder has been added. This has an API similar to
68
- Model.finder, but it uses a prepared statement instead of a
69
- placeholder literalizer. It is less flexible than Model.finder
70
- as prepared statements have fixed SQL, but it may perform better.
71
-
72
- * Common table expressions (WITH clauses) are now supported on SQLite
73
- 3.8.3+.
74
-
75
- * :correlated_subquery has been added as an eager_graph and filter by
76
- association limit strategy for one_to_one and one_to_many
77
- associations. In certain cases it was found that this is faster
78
- than the :window_function limit strategy. It is the default
79
- filter by associations limit strategy on databases that do not
80
- support window functions.
81
-
82
- Filtering by limited associations using a correlated subquery
83
- strategy does not work in all cases, but it should handle most
84
- cases correctly.
85
-
86
- * The prepared_statement_associations plugin now handles
87
- one_through_one and one_through_many associations.
88
-
89
- * Sequel now emulates support for offsets without limits on MySQL,
90
- SQLite, H2, SQLAnywhere, and CUBRID.
91
-
92
- * In the jdbc adapter, the Database#fetch_size accessor and
93
- :fetch_size option can be used to automatically set the JDBC
94
- fetch size for JDBC Statement objects created by the database.
95
-
96
- * Dataset#with_fetch_size has been added to jdbc adapter datasets,
97
- setting the fetch size to use on ResultSets generated by the
98
- dataset. This generally has the effect of overriding the
99
- Database fetch_size setting.
100
-
101
- * On MySQL 5.6.5+, Sequel supports a :fractional_seconds Database
102
- option, which will use fractional seconds for timestamp values,
103
- and have the schema modification code create timestamp columns
104
- that accept fractional timestamps by default.
105
-
106
- * Database#call_mssql_sproc on Microsoft SQL Server now handles named
107
- parameters:
108
-
109
- DB.call_mssql_sproc(:sproc_name, :args => {
110
- 'input_arg1_name' => 'input arg1 value',
111
- 'input_arg2_name' => 'input arg2 value',
112
- 'output_arg_name' => [:output, 'int', 'result key name']
113
- })
114
-
115
- * Database#drop_view now supports an :if_exists option on SQLite,
116
- MySQL, H2, and HSQLDB.
117
-
118
- * Database#drop_table now supports an :if_exists option on HSQLDB.
119
-
120
- * A :filter_limit_strategy association option has been added, for
121
- choosing the strategy that will be used when filtering/excluding by
122
- associations with limits. For backwards compatibility, Sequel will
123
- fallback to looking at the :eager_limit_strategy option.
124
-
125
- * A :server_version Database option is now supported on Microsoft SQL
126
- Server, which will use the value given instead of querying for it.
127
-
128
- = Other Improvements
129
-
130
- * Dataset::PlaceholderLiteralizer arguments are how handled
131
- correctly when emulating offsets via the row_number window function
132
- on DB2, MSSQL <=2012, and Oracle.
133
-
134
- * Dataset::PlaceholderLiteralizer now handles DelayedEvaluation
135
- objects correctly.
136
-
137
- * Offset emulation is skipped if static SQL is used on Access,
138
- DB2, and MSSQL <=2008.
139
-
140
- * Additional disconnect errors are now recognized in the postgres
141
- adapter.
142
-
143
- * The :foreign_key_constraint_name option is now respected when
144
- adding a foreign key column to an existing table on MySQL.
145
-
146
- * Sequel now attempts to work around a bug on MySQL 5.6+ when
147
- combining DROP FOREIGN KEY and DROP INDEX in the same ALTER TABLE
148
- statement.
149
-
150
- * Dataset#for_update is now respected on H2.
151
-
152
- * Timestamp with local time zone types are now returned as
153
- Time/DateTime objects on jdbc/oracle.
154
-
155
- * Model.include now has the same API as Module.include.
156
-
157
- * Model#marshallable! now works correctly when using the
158
- tactical_eager_loading plugin.
159
-
160
- * The pg_array_associations plugin now attempts to automatically
161
- determine the correct array type to use, and explicitly casts
162
- to that array type in more places.
163
-
164
- * The auto_validations plugin now handles models that select from
165
- subqueries.
166
-
167
- * The association_pks plugin does no longer creates getter and setter
168
- methods for one_through_one associations.
169
-
170
- * bin/sequel now uses the Sequel code in the related lib directory.
171
- This makes it easier to use from a repository checkout.
172
-
173
- = Backwards Compatibility
174
-
175
- * AssociationReflection#associated_dataset now returns a joined
176
- dataset for associations that require joins (e.g. many_to_many).
177
- Anyone using this directly for associations that require joins
178
- probably needs to update their code.
179
-
180
- * Model.associate now adds the association instance methods instead
181
- of relying on the def_#{association_type} method doing so. Anyone
182
- using custom association types probably needs to update their code.
183
-
184
- * Model.eager_loading_dataset, .apply_association_dataset_opts, and
185
- .def_{add_method,association_dataset_methods,remove_methods}
186
- are now deprecated.
187
-
188
- * Key conditions for associations requiring joins have been moved
189
- from the JOIN ON clause to the WHERE clause. This should be
190
- optimized the same by the database, but it can break tests that
191
- expect specific SQL.
192
-
193
- * Dataset#_insert_sql and #_update_sql are now private instead of
194
- protected.
195
-
196
- * The install/uninstall rake tasks have been removed.
197
-
198
- * Model association and association reflection internals have
199
- changed significantly, if you were relying on them, you'll
200
- probably need to update your code.
201
-
202
- * Database transaction internals have changed significantly, if you
203
- were relying on them, you'll probably need to update your code.
204
-
205
- * Dataset literalization internals have changed significantly, with
206
- the Dataset#*_clause_methods private methods being removed.
207
- Custom adapters that used these methods should switch to using the
208
- new Dataset.def_sql_method method.
209
-
210
- * Common table expressions are no longer enabled by default in
211
- Sequel. External adapters for databases that support common
212
- table expressions should define Dataset#supports_cte?(type) to
213
- return true.
214
-
215
- * Support for RETURNING is no longer determined via introspection.
216
- External adapters for databases that support RETURNING should
217
- define Dataset#supports_returning?(type) to return true.
218
-
219
- * The new jdbc adapter type conversion code may not be completely
220
- compatible with the previous code. The currently known case
221
- where it is different is on jdbc/postgresql, when using an
222
- array type where no conversion proc exists, the returned object
223
- will be a ruby array containing java objects, instead of a ruby
224
- array containing ruby objects. It is recommended that
225
- jdbc/postgresql users using array types use the pg_array extension
226
- to avoid this issue.
@@ -1,147 +0,0 @@
1
- = New SQL Function Features
2
-
3
- * SQL::Function now supports an options hash for functions.
4
- Unfortunately, since SQL::Function#initialize does not support
5
- an options hash, you need to use SQL::Function.new! to create
6
- a function with an options hash. You can also call methods on
7
- the SQL::Function instance, which will return a new SQL::Function
8
- with the appropriate option set.
9
-
10
- * SQL::Function#quoted has been added, which will return a new
11
- SQL::Function instance that will quote the function name (if
12
- the database supports quoting function names).
13
-
14
- * SQL::Function#unquoted has been added, which will return a new
15
- SQL::Function instance that will not quote the function name.
16
-
17
- * SQL::Function#lateral has been added, which will return a new
18
- SQL::Function instance that will be preceded by LATERAL when
19
- literalized, useful for set-returning functions.
20
-
21
- * SQL::Function#within_group has been added, for creating
22
- ordered-set and hypothetical-set functions that use WITHIN GROUP.
23
-
24
- * SQL::Function#filter has been added, for creating filtered
25
- aggregate function calls using FILTER.
26
-
27
- * SQL::Function#with_ordinality has been added, for creating set
28
- returning functions that also include a row number for every
29
- row in the set, using WITH ORDINALITY.
30
-
31
- = New PostgreSQL Features
32
-
33
- * The jsonb type added in 9.4 is now supported in the pg_json
34
- extension. To create a jsonb type manually, you need to call
35
- Sequel.pg_jsonb.
36
-
37
- The new json and jsonb functions and operators added in 9.4 are
38
- now supported in the pg_json_ops extension. You can use the jsonb
39
- functions and operators by creating a Postgres::JSONBOp using
40
- Sequel.pg_jsonb_op.
41
-
42
- * Database#full_text_search now takes a :rank option to order by the
43
- ranking.
44
-
45
- * Database#refresh_view now supports a :concurrently option, to
46
- refresh a materialized view concurrently, supported on 9.4+.
47
-
48
- * Postgres::ArrayOp#cardinality has been added to the pg_array_ops
49
- extension, for easy use of the cardinality method added in 9.4.
50
-
51
- * Postgres::ArrayOp#unnest in the pg_array_ops extension now accepts
52
- arguments. PostgreSQL 9.4+ supports this if unnest is used in the
53
- FROM clause.
54
-
55
- = Other New Features
56
-
57
- * Sequel now supports derived column lists (table aliases that include
58
- column aliases) via Sequel.as and SQL::AliasedMethods#as:
59
-
60
- Sequel.as(:table, :alias, [:c1, :c2])
61
- # table AS alias(c1, c2)
62
-
63
- Not all databases support this, but it is in SQL92 and Sequel now
64
- supports it by default. Derived column lists make it easier to
65
- alias columns when using set-returning functions.
66
-
67
- Dataset#from_self now supports derived column lists via the new
68
- :column_aliases option (which requires the :alias option to take
69
- effect).
70
-
71
- * Database#create_view now supports a :check option, to use
72
- WITH CHECK OPTION. You can also use :check=>:local for
73
- WITH LOCAL CHECK OPTION. These clauses make it so when you are
74
- inserting into/updating the view, you can only modify rows in the
75
- underlying table if the result would be returned by the view.
76
-
77
- * The :after_connect Database option proc now can accept two
78
- arguments. If the arity of the proc is 2, Sequel will pass both
79
- the connection object and the shard symbol.
80
-
81
- * The class_table_inheritance plugin now supports a :model_map
82
- option similar to the single_table_inheritance plugin, allowing
83
- use of the plugin without storing ruby class names in the database.
84
- Note that if you use this option, you must set the correct value
85
- for the kind column manually when creating the row.
86
-
87
- * Support for CUBRID/SQLAnywhere emulation has been added to the
88
- mock adapter.
89
-
90
- = Other Improvements
91
-
92
- * Dataset#import now supports a default slice size, which Sequel
93
- sets to 500 on SQLite as that is the limit that SQLite supports in
94
- a single statement.
95
-
96
- * The serialization plugin now only modifies changed_columns in the
97
- setter method if the deserialized value has changed, similar to
98
- how Sequel's standard column setters work. Note that if you are
99
- mutating the deserialized value (i.e. not calling the setter
100
- method), you still need to use the
101
- serialization_modification_detection plugin.
102
-
103
- * Plugins that set column values for new objects before creation now
104
- use before_validation instead of before_create, which works better
105
- when the auto_validations plugin is used.
106
-
107
- * The :read_only transaction option is now applied per-savepoint on
108
- PostgreSQL. Note that this allows you to have a READ ONLY
109
- savepoint in a READ WRITE transaction, it does not allow you to
110
- have a READ WRITE savepoint in a READ ONLY transaction.
111
-
112
- * In the ibm_db adapter, fix warnings when using certain column names.
113
-
114
- * Support connecting to a DB2 catalog name in the ibm_db adapter, by
115
- providing a :database option without a :host or :port option.
116
-
117
- * The mock adapter now sets an emulated version when using MySQL and
118
- SQLite. Additionally, the emulated version for PostgreSQL and
119
- Microsoft SQL Server has been updated.
120
-
121
- = Backwards Compatibility
122
-
123
- * External adapters that override Dataset#as_sql_append now need to
124
- have the method accept two arguments.
125
-
126
- * Model.eager_loading_dataset, .apply_association_dataset_opts, and
127
- .def_{add_method,association_dataset_methods,remove_methods} have
128
- been removed (they were deprecated in 4.10.0).
129
-
130
- * SQL::WindowFunction and SQL::EmulatedFunction classes are now
131
- deprecated, as well as Dataset methods that literalize instances of
132
- these classes. These classes are replaced by using options on
133
- SQL::Function instances.
134
-
135
- * Passing a table_alias argument when creating an SQL::JoinClause
136
- manually is no longer supported. You now need to pass the table as
137
- an SQL::AliasedExpression if the table needs to be aliased.
138
-
139
- * ASTTransformer no longer transforms the table alias for
140
- SQL::JoinClause. This is for consistency with
141
- SQL::AliasedExpression.
142
-
143
- * SQL standard casts are now used in Database#full_text_search, which
144
- can break tests that expect specific SQL.
145
-
146
- * The to_dot extension now uses slightly different output for
147
- SQL::Function and SQL::JoinClause instances.
@@ -1,105 +0,0 @@
1
- = New Features
2
-
3
- * Database#schema now includes :max_length entries for string
4
- columns, specifying the size of the string field. The
5
- auto_validations plugin now uses this information to
6
- automatically set up max_length validations on those fields.
7
-
8
- * The Dataset join methods now support a :reset_implicit_qualifier
9
- option. If set to false, this makes the join not reset the
10
- implicit qualifier, so that the next join will not consider this
11
- table as the last table joined. Example:
12
-
13
- DB[:a].join(:b, :c=>:d).
14
- join(:e, :f=>:g)
15
- # SELECT * FROM a
16
- # INNER JOIN b ON (b.c = a.d)
17
- # INNER JOIN e ON (e.f = b.g)
18
-
19
- DB[:a].join(:b, {:c=>:d}, :reset_implicit_qualifier=>false).
20
- join(:e, :f=>:g)
21
- # SELECT * FROM a
22
- # INNER JOIN b ON (b.c = a.d)
23
- # INNER JOIN e ON (e.f = a.g)
24
-
25
- * The Dataset cross and natural join methods now accept an options
26
- hash. Example:
27
-
28
- DB[:a].cross_join(:b, :table_alias=>:c)
29
- # SELECT * FROM a CROSS JOIN b AS c
30
-
31
- * Model#set_nested_attributes has been added to the nested_attributes
32
- plugin, which allows you to to set the nested_attributes options to
33
- use per-call. This is very helpful if you have multiple forms that
34
- handle associated objects, but with different input fields used
35
- for the associated objects depending on the form. Example:
36
-
37
- album.set_nested_attributes(:tracks,
38
- params[:track_attributes],
39
- :fields=>[:a, :b, :c])
40
-
41
- * Database#values has been added on PostgreSQL, which creates a
42
- dataset that uses VALUES instead of SELECT. Just as PostgreSQL
43
- allows, you can also use orders, limits, and offsets with this
44
- dataset.
45
-
46
- * A :notice_receiver option is now supported in the postgres adapter
47
- if the pg driver is used. This should be a proc, which will be
48
- passed to the pg connection's set_notice_receiver method.
49
-
50
- * A Database :readonly option is now supported in the sqlite adapter,
51
- which opens the database in a read-only mode, causing an error
52
- if a query is issued that would modify the database.
53
-
54
- * A :before_thread_exit option has been added to
55
- Database#listen_for_static_cache_updates in the
56
- pg_static_cache_updater extension, allowing you to run code before
57
- the created thread exits.
58
-
59
- = Other Improvements
60
-
61
- * Eager loading limited associations using a UNION now works
62
- correctly when an association block is used. This fixes a
63
- regression that first occurred in 4.10.0, when the union
64
- eager loader became the default eager loader.
65
-
66
- * When creating a new associated object in the nested_attributes
67
- plugin, where the reciprocal association is a many_to_one
68
- association, set the cached reciprocal object in the new
69
- associated object before saving it.
70
-
71
- This fixes issues when validations in the associated object
72
- require access to the current object, which may not yet be
73
- saved in the database.
74
-
75
- * The prepared_statements and prepared_statements_associations
76
- plugins now automatically use explicit column references when
77
- preparing statements. This fixes issues on PostgreSQL when a
78
- column is added to a table while a prepared statement exists
79
- that selects * from the table. Previously, all further attempts
80
- to use the prepared statement will fail.
81
-
82
- This allows you to run migrations that add columns to tables
83
- while concurrently running an application that uses the
84
- prepared statements plugins. Note that many other schema
85
- modifications can cause issues when running migrations
86
- while concurrently running an application, but most of those
87
- are not specific to usage of prepared statements.
88
-
89
- * Dataset#insert_select on PostgreSQL now respects an existing
90
- RETURNING clause, and won't override it to use RETURNING *.
91
-
92
- A similar fix was applied to the generalized prepared statements
93
- support as well.
94
-
95
- * The interval parser in the pg_interval extension now supports
96
- intervals with 2-10 digits for hours. Previously, it only
97
- supported using 2 digits for hours.
98
-
99
- = Backwards Compatibility
100
-
101
- * The methods and classes deprecated in 4.11.0 have been removed.
102
-
103
- * The nested_attributes internal API has changed significantly. If
104
- you were calling any private nested_attributes methods, you'll
105
- probably need to update your code.