sequel 4.36.0 → 5.61.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 (760) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG +548 -5749
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +265 -159
  5. data/bin/sequel +34 -12
  6. data/doc/advanced_associations.rdoc +228 -187
  7. data/doc/association_basics.rdoc +281 -291
  8. data/doc/bin_sequel.rdoc +5 -3
  9. data/doc/cheat_sheet.rdoc +86 -51
  10. data/doc/code_order.rdoc +25 -19
  11. data/doc/core_extensions.rdoc +104 -63
  12. data/doc/dataset_basics.rdoc +12 -21
  13. data/doc/dataset_filtering.rdoc +99 -86
  14. data/doc/extensions.rdoc +3 -10
  15. data/doc/fork_safety.rdoc +84 -0
  16. data/doc/mass_assignment.rdoc +74 -31
  17. data/doc/migration.rdoc +59 -51
  18. data/doc/model_dataset_method_design.rdoc +129 -0
  19. data/doc/model_hooks.rdoc +15 -25
  20. data/doc/model_plugins.rdoc +12 -12
  21. data/doc/mssql_stored_procedures.rdoc +3 -3
  22. data/doc/object_model.rdoc +58 -68
  23. data/doc/opening_databases.rdoc +85 -95
  24. data/doc/postgresql.rdoc +263 -38
  25. data/doc/prepared_statements.rdoc +29 -24
  26. data/doc/querying.rdoc +189 -167
  27. data/doc/reflection.rdoc +5 -6
  28. data/doc/release_notes/5.0.0.txt +159 -0
  29. data/doc/release_notes/5.1.0.txt +31 -0
  30. data/doc/release_notes/5.10.0.txt +84 -0
  31. data/doc/release_notes/5.11.0.txt +83 -0
  32. data/doc/release_notes/5.12.0.txt +141 -0
  33. data/doc/release_notes/5.13.0.txt +27 -0
  34. data/doc/release_notes/5.14.0.txt +63 -0
  35. data/doc/release_notes/5.15.0.txt +39 -0
  36. data/doc/release_notes/5.16.0.txt +110 -0
  37. data/doc/release_notes/5.17.0.txt +31 -0
  38. data/doc/release_notes/5.18.0.txt +69 -0
  39. data/doc/release_notes/5.19.0.txt +28 -0
  40. data/doc/release_notes/5.2.0.txt +33 -0
  41. data/doc/release_notes/5.20.0.txt +89 -0
  42. data/doc/release_notes/5.21.0.txt +87 -0
  43. data/doc/release_notes/5.22.0.txt +48 -0
  44. data/doc/release_notes/5.23.0.txt +56 -0
  45. data/doc/release_notes/5.24.0.txt +56 -0
  46. data/doc/release_notes/5.25.0.txt +32 -0
  47. data/doc/release_notes/5.26.0.txt +35 -0
  48. data/doc/release_notes/5.27.0.txt +21 -0
  49. data/doc/release_notes/5.28.0.txt +16 -0
  50. data/doc/release_notes/5.29.0.txt +22 -0
  51. data/doc/release_notes/5.3.0.txt +121 -0
  52. data/doc/release_notes/5.30.0.txt +20 -0
  53. data/doc/release_notes/5.31.0.txt +148 -0
  54. data/doc/release_notes/5.32.0.txt +46 -0
  55. data/doc/release_notes/5.33.0.txt +24 -0
  56. data/doc/release_notes/5.34.0.txt +40 -0
  57. data/doc/release_notes/5.35.0.txt +56 -0
  58. data/doc/release_notes/5.36.0.txt +60 -0
  59. data/doc/release_notes/5.37.0.txt +30 -0
  60. data/doc/release_notes/5.38.0.txt +28 -0
  61. data/doc/release_notes/5.39.0.txt +19 -0
  62. data/doc/release_notes/5.4.0.txt +80 -0
  63. data/doc/release_notes/5.40.0.txt +40 -0
  64. data/doc/release_notes/5.41.0.txt +25 -0
  65. data/doc/release_notes/5.42.0.txt +136 -0
  66. data/doc/release_notes/5.43.0.txt +98 -0
  67. data/doc/release_notes/5.44.0.txt +32 -0
  68. data/doc/release_notes/5.45.0.txt +34 -0
  69. data/doc/release_notes/5.46.0.txt +87 -0
  70. data/doc/release_notes/5.47.0.txt +59 -0
  71. data/doc/release_notes/5.48.0.txt +14 -0
  72. data/doc/release_notes/5.49.0.txt +59 -0
  73. data/doc/release_notes/5.5.0.txt +61 -0
  74. data/doc/release_notes/5.50.0.txt +78 -0
  75. data/doc/release_notes/5.51.0.txt +47 -0
  76. data/doc/release_notes/5.52.0.txt +87 -0
  77. data/doc/release_notes/5.53.0.txt +23 -0
  78. data/doc/release_notes/5.54.0.txt +27 -0
  79. data/doc/release_notes/5.55.0.txt +21 -0
  80. data/doc/release_notes/5.56.0.txt +51 -0
  81. data/doc/release_notes/5.57.0.txt +23 -0
  82. data/doc/release_notes/5.58.0.txt +31 -0
  83. data/doc/release_notes/5.59.0.txt +73 -0
  84. data/doc/release_notes/5.6.0.txt +31 -0
  85. data/doc/release_notes/5.60.0.txt +22 -0
  86. data/doc/release_notes/5.61.0.txt +43 -0
  87. data/doc/release_notes/5.7.0.txt +108 -0
  88. data/doc/release_notes/5.8.0.txt +170 -0
  89. data/doc/release_notes/5.9.0.txt +99 -0
  90. data/doc/schema_modification.rdoc +95 -75
  91. data/doc/security.rdoc +109 -80
  92. data/doc/sharding.rdoc +74 -47
  93. data/doc/sql.rdoc +147 -122
  94. data/doc/testing.rdoc +43 -20
  95. data/doc/thread_safety.rdoc +2 -4
  96. data/doc/transactions.rdoc +97 -18
  97. data/doc/validations.rdoc +52 -50
  98. data/doc/virtual_rows.rdoc +90 -109
  99. data/lib/sequel/adapters/ado/access.rb +15 -17
  100. data/lib/sequel/adapters/ado/mssql.rb +6 -15
  101. data/lib/sequel/adapters/ado.rb +150 -20
  102. data/lib/sequel/adapters/amalgalite.rb +11 -23
  103. data/lib/sequel/adapters/ibmdb.rb +47 -55
  104. data/lib/sequel/adapters/jdbc/db2.rb +29 -39
  105. data/lib/sequel/adapters/jdbc/derby.rb +58 -54
  106. data/lib/sequel/adapters/jdbc/h2.rb +93 -35
  107. data/lib/sequel/adapters/jdbc/hsqldb.rb +24 -31
  108. data/lib/sequel/adapters/jdbc/jtds.rb +2 -10
  109. data/lib/sequel/adapters/jdbc/mssql.rb +3 -11
  110. data/lib/sequel/adapters/jdbc/mysql.rb +17 -20
  111. data/lib/sequel/adapters/jdbc/oracle.rb +22 -18
  112. data/lib/sequel/adapters/jdbc/postgresql.rb +69 -71
  113. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +11 -23
  114. data/lib/sequel/adapters/jdbc/sqlite.rb +47 -11
  115. data/lib/sequel/adapters/jdbc/sqlserver.rb +34 -9
  116. data/lib/sequel/adapters/jdbc/transactions.rb +22 -38
  117. data/lib/sequel/adapters/jdbc.rb +145 -130
  118. data/lib/sequel/adapters/mock.rb +100 -111
  119. data/lib/sequel/adapters/mysql.rb +114 -122
  120. data/lib/sequel/adapters/mysql2.rb +147 -63
  121. data/lib/sequel/adapters/odbc/db2.rb +1 -1
  122. data/lib/sequel/adapters/odbc/mssql.rb +8 -14
  123. data/lib/sequel/adapters/odbc/oracle.rb +11 -0
  124. data/lib/sequel/adapters/odbc.rb +20 -25
  125. data/lib/sequel/adapters/oracle.rb +50 -56
  126. data/lib/sequel/adapters/postgres.rb +305 -327
  127. data/lib/sequel/adapters/postgresql.rb +1 -1
  128. data/lib/sequel/adapters/shared/access.rb +74 -78
  129. data/lib/sequel/adapters/shared/db2.rb +118 -71
  130. data/lib/sequel/adapters/shared/mssql.rb +301 -220
  131. data/lib/sequel/adapters/shared/mysql.rb +299 -217
  132. data/lib/sequel/adapters/shared/oracle.rb +226 -65
  133. data/lib/sequel/adapters/shared/postgres.rb +935 -395
  134. data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -126
  135. data/lib/sequel/adapters/shared/sqlite.rb +447 -173
  136. data/lib/sequel/adapters/sqlanywhere.rb +48 -35
  137. data/lib/sequel/adapters/sqlite.rb +156 -111
  138. data/lib/sequel/adapters/tinytds.rb +30 -38
  139. data/lib/sequel/adapters/utils/columns_limit_1.rb +22 -0
  140. data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +3 -6
  141. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +2 -2
  142. data/lib/sequel/adapters/utils/mysql_mysql2.rb +87 -0
  143. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
  144. data/lib/sequel/adapters/utils/replace.rb +1 -4
  145. data/lib/sequel/adapters/utils/stored_procedures.rb +7 -22
  146. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
  147. data/lib/sequel/ast_transformer.rb +17 -89
  148. data/lib/sequel/connection_pool/sharded_single.rb +18 -15
  149. data/lib/sequel/connection_pool/sharded_threaded.rb +130 -111
  150. data/lib/sequel/connection_pool/single.rb +18 -13
  151. data/lib/sequel/connection_pool/threaded.rb +121 -120
  152. data/lib/sequel/connection_pool.rb +48 -29
  153. data/lib/sequel/core.rb +351 -301
  154. data/lib/sequel/database/connecting.rb +69 -57
  155. data/lib/sequel/database/dataset.rb +13 -5
  156. data/lib/sequel/database/dataset_defaults.rb +18 -102
  157. data/lib/sequel/database/features.rb +18 -4
  158. data/lib/sequel/database/logging.rb +12 -11
  159. data/lib/sequel/database/misc.rb +180 -122
  160. data/lib/sequel/database/query.rb +47 -27
  161. data/lib/sequel/database/schema_generator.rb +178 -84
  162. data/lib/sequel/database/schema_methods.rb +172 -97
  163. data/lib/sequel/database/transactions.rb +205 -44
  164. data/lib/sequel/database.rb +17 -2
  165. data/lib/sequel/dataset/actions.rb +339 -155
  166. data/lib/sequel/dataset/dataset_module.rb +46 -0
  167. data/lib/sequel/dataset/features.rb +90 -35
  168. data/lib/sequel/dataset/graph.rb +80 -58
  169. data/lib/sequel/dataset/misc.rb +137 -47
  170. data/lib/sequel/dataset/placeholder_literalizer.rb +63 -25
  171. data/lib/sequel/dataset/prepared_statements.rb +188 -85
  172. data/lib/sequel/dataset/query.rb +530 -222
  173. data/lib/sequel/dataset/sql.rb +590 -368
  174. data/lib/sequel/dataset.rb +26 -16
  175. data/lib/sequel/deprecated.rb +12 -2
  176. data/lib/sequel/exceptions.rb +46 -16
  177. data/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
  178. data/lib/sequel/extensions/_model_pg_row.rb +43 -0
  179. data/lib/sequel/extensions/_pretty_table.rb +2 -5
  180. data/lib/sequel/extensions/any_not_empty.rb +45 -0
  181. data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
  182. data/lib/sequel/extensions/async_thread_pool.rb +438 -0
  183. data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
  184. data/lib/sequel/extensions/blank.rb +8 -0
  185. data/lib/sequel/extensions/caller_logging.rb +79 -0
  186. data/lib/sequel/extensions/columns_introspection.rb +4 -3
  187. data/lib/sequel/extensions/connection_expiration.rb +20 -10
  188. data/lib/sequel/extensions/connection_validator.rb +11 -10
  189. data/lib/sequel/extensions/constant_sql_override.rb +65 -0
  190. data/lib/sequel/extensions/constraint_validations.rb +62 -39
  191. data/lib/sequel/extensions/core_extensions.rb +42 -48
  192. data/lib/sequel/extensions/core_refinements.rb +80 -59
  193. data/lib/sequel/extensions/current_datetime_timestamp.rb +1 -4
  194. data/lib/sequel/extensions/date_arithmetic.rb +98 -39
  195. data/lib/sequel/extensions/date_parse_input_handler.rb +67 -0
  196. data/lib/sequel/extensions/datetime_parse_to_time.rb +41 -0
  197. data/lib/sequel/extensions/duplicate_columns_handler.rb +21 -14
  198. data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
  199. data/lib/sequel/extensions/escaped_like.rb +100 -0
  200. data/lib/sequel/extensions/eval_inspect.rb +12 -15
  201. data/lib/sequel/extensions/exclude_or_null.rb +68 -0
  202. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  203. data/lib/sequel/extensions/freeze_datasets.rb +3 -0
  204. data/lib/sequel/extensions/from_block.rb +1 -34
  205. data/lib/sequel/extensions/graph_each.rb +4 -4
  206. data/lib/sequel/extensions/identifier_mangling.rb +180 -0
  207. data/lib/sequel/extensions/implicit_subquery.rb +48 -0
  208. data/lib/sequel/extensions/index_caching.rb +109 -0
  209. data/lib/sequel/extensions/inflector.rb +13 -5
  210. data/lib/sequel/extensions/integer64.rb +32 -0
  211. data/lib/sequel/extensions/is_distinct_from.rb +141 -0
  212. data/lib/sequel/extensions/looser_typecasting.rb +17 -8
  213. data/lib/sequel/extensions/migration.rb +119 -78
  214. data/lib/sequel/extensions/named_timezones.rb +88 -23
  215. data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -82
  216. data/lib/sequel/extensions/null_dataset.rb +8 -8
  217. data/lib/sequel/extensions/pagination.rb +32 -29
  218. data/lib/sequel/extensions/pg_array.rb +221 -287
  219. data/lib/sequel/extensions/pg_array_ops.rb +17 -9
  220. data/lib/sequel/extensions/pg_enum.rb +63 -23
  221. data/lib/sequel/extensions/pg_extended_date_support.rb +241 -0
  222. data/lib/sequel/extensions/pg_hstore.rb +45 -54
  223. data/lib/sequel/extensions/pg_hstore_ops.rb +58 -6
  224. data/lib/sequel/extensions/pg_inet.rb +31 -12
  225. data/lib/sequel/extensions/pg_inet_ops.rb +2 -2
  226. data/lib/sequel/extensions/pg_interval.rb +56 -29
  227. data/lib/sequel/extensions/pg_json.rb +417 -140
  228. data/lib/sequel/extensions/pg_json_ops.rb +270 -18
  229. data/lib/sequel/extensions/pg_loose_count.rb +4 -2
  230. data/lib/sequel/extensions/pg_multirange.rb +372 -0
  231. data/lib/sequel/extensions/pg_range.rb +131 -191
  232. data/lib/sequel/extensions/pg_range_ops.rb +42 -13
  233. data/lib/sequel/extensions/pg_row.rb +48 -81
  234. data/lib/sequel/extensions/pg_row_ops.rb +33 -14
  235. data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -2
  236. data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
  237. data/lib/sequel/extensions/query.rb +9 -7
  238. data/lib/sequel/extensions/round_timestamps.rb +0 -6
  239. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  240. data/lib/sequel/extensions/s.rb +60 -0
  241. data/lib/sequel/extensions/schema_caching.rb +10 -1
  242. data/lib/sequel/extensions/schema_dumper.rb +71 -48
  243. data/lib/sequel/extensions/select_remove.rb +4 -4
  244. data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
  245. data/lib/sequel/extensions/server_block.rb +51 -27
  246. data/lib/sequel/extensions/split_array_nil.rb +4 -4
  247. data/lib/sequel/extensions/sql_comments.rb +119 -7
  248. data/lib/sequel/extensions/sql_expr.rb +2 -1
  249. data/lib/sequel/extensions/sql_log_normalizer.rb +108 -0
  250. data/lib/sequel/extensions/sqlite_json_ops.rb +255 -0
  251. data/lib/sequel/extensions/string_agg.rb +11 -8
  252. data/lib/sequel/extensions/string_date_time.rb +19 -23
  253. data/lib/sequel/extensions/symbol_aref.rb +55 -0
  254. data/lib/sequel/extensions/symbol_aref_refinement.rb +43 -0
  255. data/lib/sequel/extensions/symbol_as.rb +23 -0
  256. data/lib/sequel/extensions/symbol_as_refinement.rb +37 -0
  257. data/lib/sequel/extensions/synchronize_sql.rb +45 -0
  258. data/lib/sequel/extensions/to_dot.rb +10 -4
  259. data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
  260. data/lib/sequel/model/associations.rb +1006 -284
  261. data/lib/sequel/model/base.rb +560 -805
  262. data/lib/sequel/model/dataset_module.rb +11 -10
  263. data/lib/sequel/model/default_inflections.rb +1 -1
  264. data/lib/sequel/model/errors.rb +10 -3
  265. data/lib/sequel/model/exceptions.rb +8 -10
  266. data/lib/sequel/model/inflections.rb +7 -20
  267. data/lib/sequel/model/plugins.rb +114 -0
  268. data/lib/sequel/model.rb +32 -82
  269. data/lib/sequel/plugins/active_model.rb +30 -14
  270. data/lib/sequel/plugins/after_initialize.rb +1 -1
  271. data/lib/sequel/plugins/association_dependencies.rb +25 -18
  272. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  273. data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
  274. data/lib/sequel/plugins/association_pks.rb +147 -70
  275. data/lib/sequel/plugins/association_proxies.rb +33 -9
  276. data/lib/sequel/plugins/async_thread_pool.rb +39 -0
  277. data/lib/sequel/plugins/auto_restrict_eager_graph.rb +62 -0
  278. data/lib/sequel/plugins/auto_validations.rb +95 -28
  279. data/lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb +68 -0
  280. data/lib/sequel/plugins/before_after_save.rb +0 -42
  281. data/lib/sequel/plugins/blacklist_security.rb +21 -12
  282. data/lib/sequel/plugins/boolean_readers.rb +5 -5
  283. data/lib/sequel/plugins/boolean_subsets.rb +13 -8
  284. data/lib/sequel/plugins/caching.rb +25 -16
  285. data/lib/sequel/plugins/class_table_inheritance.rb +179 -100
  286. data/lib/sequel/plugins/column_conflicts.rb +16 -3
  287. data/lib/sequel/plugins/column_encryption.rb +728 -0
  288. data/lib/sequel/plugins/column_select.rb +7 -5
  289. data/lib/sequel/plugins/columns_updated.rb +42 -0
  290. data/lib/sequel/plugins/composition.rb +42 -26
  291. data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
  292. data/lib/sequel/plugins/constraint_validations.rb +20 -14
  293. data/lib/sequel/plugins/csv_serializer.rb +56 -35
  294. data/lib/sequel/plugins/dataset_associations.rb +40 -17
  295. data/lib/sequel/plugins/def_dataset_method.rb +90 -0
  296. data/lib/sequel/plugins/defaults_setter.rb +65 -10
  297. data/lib/sequel/plugins/delay_add_association.rb +1 -1
  298. data/lib/sequel/plugins/dirty.rb +62 -24
  299. data/lib/sequel/plugins/eager_each.rb +3 -3
  300. data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
  301. data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
  302. data/lib/sequel/plugins/enum.rb +124 -0
  303. data/lib/sequel/plugins/error_splitter.rb +17 -12
  304. data/lib/sequel/plugins/finder.rb +246 -0
  305. data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
  306. data/lib/sequel/plugins/force_encoding.rb +7 -12
  307. data/lib/sequel/plugins/hook_class_methods.rb +37 -54
  308. data/lib/sequel/plugins/input_transformer.rb +18 -10
  309. data/lib/sequel/plugins/insert_conflict.rb +76 -0
  310. data/lib/sequel/plugins/insert_returning_select.rb +2 -2
  311. data/lib/sequel/plugins/instance_filters.rb +10 -8
  312. data/lib/sequel/plugins/instance_hooks.rb +34 -17
  313. data/lib/sequel/plugins/instance_specific_default.rb +113 -0
  314. data/lib/sequel/plugins/inverted_subsets.rb +22 -13
  315. data/lib/sequel/plugins/json_serializer.rb +124 -64
  316. data/lib/sequel/plugins/lazy_attributes.rb +21 -14
  317. data/lib/sequel/plugins/list.rb +35 -21
  318. data/lib/sequel/plugins/many_through_many.rb +134 -21
  319. data/lib/sequel/plugins/modification_detection.rb +15 -5
  320. data/lib/sequel/plugins/mssql_optimistic_locking.rb +6 -5
  321. data/lib/sequel/plugins/nested_attributes.rb +61 -31
  322. data/lib/sequel/plugins/optimistic_locking.rb +3 -3
  323. data/lib/sequel/plugins/pg_array_associations.rb +103 -53
  324. data/lib/sequel/plugins/pg_auto_constraint_validations.rb +350 -0
  325. data/lib/sequel/plugins/pg_row.rb +5 -51
  326. data/lib/sequel/plugins/prepared_statements.rb +60 -72
  327. data/lib/sequel/plugins/prepared_statements_safe.rb +9 -4
  328. data/lib/sequel/plugins/rcte_tree.rb +68 -82
  329. data/lib/sequel/plugins/require_valid_schema.rb +67 -0
  330. data/lib/sequel/plugins/serialization.rb +43 -46
  331. data/lib/sequel/plugins/serialization_modification_detection.rb +3 -2
  332. data/lib/sequel/plugins/sharding.rb +15 -10
  333. data/lib/sequel/plugins/single_table_inheritance.rb +67 -28
  334. data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
  335. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  336. data/lib/sequel/plugins/split_values.rb +11 -6
  337. data/lib/sequel/plugins/sql_comments.rb +189 -0
  338. data/lib/sequel/plugins/static_cache.rb +77 -53
  339. data/lib/sequel/plugins/static_cache_cache.rb +53 -0
  340. data/lib/sequel/plugins/string_stripper.rb +3 -3
  341. data/lib/sequel/plugins/subclasses.rb +43 -10
  342. data/lib/sequel/plugins/subset_conditions.rb +15 -5
  343. data/lib/sequel/plugins/table_select.rb +2 -2
  344. data/lib/sequel/plugins/tactical_eager_loading.rb +96 -12
  345. data/lib/sequel/plugins/throw_failures.rb +110 -0
  346. data/lib/sequel/plugins/timestamps.rb +20 -8
  347. data/lib/sequel/plugins/touch.rb +19 -8
  348. data/lib/sequel/plugins/tree.rb +62 -32
  349. data/lib/sequel/plugins/typecast_on_load.rb +12 -4
  350. data/lib/sequel/plugins/unlimited_update.rb +1 -7
  351. data/lib/sequel/plugins/unused_associations.rb +521 -0
  352. data/lib/sequel/plugins/update_or_create.rb +4 -4
  353. data/lib/sequel/plugins/update_primary_key.rb +1 -1
  354. data/lib/sequel/plugins/update_refresh.rb +26 -15
  355. data/lib/sequel/plugins/uuid.rb +7 -11
  356. data/lib/sequel/plugins/validate_associated.rb +18 -0
  357. data/lib/sequel/plugins/validation_class_methods.rb +38 -19
  358. data/lib/sequel/plugins/validation_contexts.rb +49 -0
  359. data/lib/sequel/plugins/validation_helpers.rb +57 -41
  360. data/lib/sequel/plugins/whitelist_security.rb +122 -0
  361. data/lib/sequel/plugins/xml_serializer.rb +30 -31
  362. data/lib/sequel/sql.rb +471 -331
  363. data/lib/sequel/timezones.rb +78 -47
  364. data/lib/sequel/version.rb +7 -2
  365. data/lib/sequel.rb +1 -1
  366. metadata +217 -521
  367. data/Rakefile +0 -164
  368. data/doc/active_record.rdoc +0 -928
  369. data/doc/release_notes/1.0.txt +0 -38
  370. data/doc/release_notes/1.1.txt +0 -143
  371. data/doc/release_notes/1.3.txt +0 -101
  372. data/doc/release_notes/1.4.0.txt +0 -53
  373. data/doc/release_notes/1.5.0.txt +0 -155
  374. data/doc/release_notes/2.0.0.txt +0 -298
  375. data/doc/release_notes/2.1.0.txt +0 -271
  376. data/doc/release_notes/2.10.0.txt +0 -328
  377. data/doc/release_notes/2.11.0.txt +0 -215
  378. data/doc/release_notes/2.12.0.txt +0 -534
  379. data/doc/release_notes/2.2.0.txt +0 -253
  380. data/doc/release_notes/2.3.0.txt +0 -88
  381. data/doc/release_notes/2.4.0.txt +0 -106
  382. data/doc/release_notes/2.5.0.txt +0 -137
  383. data/doc/release_notes/2.6.0.txt +0 -157
  384. data/doc/release_notes/2.7.0.txt +0 -166
  385. data/doc/release_notes/2.8.0.txt +0 -171
  386. data/doc/release_notes/2.9.0.txt +0 -97
  387. data/doc/release_notes/3.0.0.txt +0 -221
  388. data/doc/release_notes/3.1.0.txt +0 -406
  389. data/doc/release_notes/3.10.0.txt +0 -286
  390. data/doc/release_notes/3.11.0.txt +0 -254
  391. data/doc/release_notes/3.12.0.txt +0 -304
  392. data/doc/release_notes/3.13.0.txt +0 -210
  393. data/doc/release_notes/3.14.0.txt +0 -118
  394. data/doc/release_notes/3.15.0.txt +0 -78
  395. data/doc/release_notes/3.16.0.txt +0 -45
  396. data/doc/release_notes/3.17.0.txt +0 -58
  397. data/doc/release_notes/3.18.0.txt +0 -120
  398. data/doc/release_notes/3.19.0.txt +0 -67
  399. data/doc/release_notes/3.2.0.txt +0 -268
  400. data/doc/release_notes/3.20.0.txt +0 -41
  401. data/doc/release_notes/3.21.0.txt +0 -87
  402. data/doc/release_notes/3.22.0.txt +0 -39
  403. data/doc/release_notes/3.23.0.txt +0 -172
  404. data/doc/release_notes/3.24.0.txt +0 -420
  405. data/doc/release_notes/3.25.0.txt +0 -88
  406. data/doc/release_notes/3.26.0.txt +0 -88
  407. data/doc/release_notes/3.27.0.txt +0 -82
  408. data/doc/release_notes/3.28.0.txt +0 -304
  409. data/doc/release_notes/3.29.0.txt +0 -459
  410. data/doc/release_notes/3.3.0.txt +0 -192
  411. data/doc/release_notes/3.30.0.txt +0 -135
  412. data/doc/release_notes/3.31.0.txt +0 -146
  413. data/doc/release_notes/3.32.0.txt +0 -202
  414. data/doc/release_notes/3.33.0.txt +0 -157
  415. data/doc/release_notes/3.34.0.txt +0 -671
  416. data/doc/release_notes/3.35.0.txt +0 -144
  417. data/doc/release_notes/3.36.0.txt +0 -245
  418. data/doc/release_notes/3.37.0.txt +0 -338
  419. data/doc/release_notes/3.38.0.txt +0 -234
  420. data/doc/release_notes/3.39.0.txt +0 -237
  421. data/doc/release_notes/3.4.0.txt +0 -325
  422. data/doc/release_notes/3.40.0.txt +0 -73
  423. data/doc/release_notes/3.41.0.txt +0 -155
  424. data/doc/release_notes/3.42.0.txt +0 -74
  425. data/doc/release_notes/3.43.0.txt +0 -105
  426. data/doc/release_notes/3.44.0.txt +0 -152
  427. data/doc/release_notes/3.45.0.txt +0 -179
  428. data/doc/release_notes/3.46.0.txt +0 -122
  429. data/doc/release_notes/3.47.0.txt +0 -270
  430. data/doc/release_notes/3.48.0.txt +0 -477
  431. data/doc/release_notes/3.5.0.txt +0 -510
  432. data/doc/release_notes/3.6.0.txt +0 -366
  433. data/doc/release_notes/3.7.0.txt +0 -179
  434. data/doc/release_notes/3.8.0.txt +0 -151
  435. data/doc/release_notes/3.9.0.txt +0 -233
  436. data/doc/release_notes/4.0.0.txt +0 -262
  437. data/doc/release_notes/4.1.0.txt +0 -85
  438. data/doc/release_notes/4.10.0.txt +0 -226
  439. data/doc/release_notes/4.11.0.txt +0 -147
  440. data/doc/release_notes/4.12.0.txt +0 -105
  441. data/doc/release_notes/4.13.0.txt +0 -169
  442. data/doc/release_notes/4.14.0.txt +0 -68
  443. data/doc/release_notes/4.15.0.txt +0 -56
  444. data/doc/release_notes/4.16.0.txt +0 -36
  445. data/doc/release_notes/4.17.0.txt +0 -38
  446. data/doc/release_notes/4.18.0.txt +0 -36
  447. data/doc/release_notes/4.19.0.txt +0 -45
  448. data/doc/release_notes/4.2.0.txt +0 -129
  449. data/doc/release_notes/4.20.0.txt +0 -79
  450. data/doc/release_notes/4.21.0.txt +0 -94
  451. data/doc/release_notes/4.22.0.txt +0 -72
  452. data/doc/release_notes/4.23.0.txt +0 -65
  453. data/doc/release_notes/4.24.0.txt +0 -99
  454. data/doc/release_notes/4.25.0.txt +0 -181
  455. data/doc/release_notes/4.26.0.txt +0 -44
  456. data/doc/release_notes/4.27.0.txt +0 -78
  457. data/doc/release_notes/4.28.0.txt +0 -57
  458. data/doc/release_notes/4.29.0.txt +0 -41
  459. data/doc/release_notes/4.3.0.txt +0 -40
  460. data/doc/release_notes/4.30.0.txt +0 -37
  461. data/doc/release_notes/4.31.0.txt +0 -57
  462. data/doc/release_notes/4.32.0.txt +0 -132
  463. data/doc/release_notes/4.33.0.txt +0 -88
  464. data/doc/release_notes/4.34.0.txt +0 -86
  465. data/doc/release_notes/4.35.0.txt +0 -130
  466. data/doc/release_notes/4.36.0.txt +0 -116
  467. data/doc/release_notes/4.4.0.txt +0 -92
  468. data/doc/release_notes/4.5.0.txt +0 -34
  469. data/doc/release_notes/4.6.0.txt +0 -30
  470. data/doc/release_notes/4.7.0.txt +0 -103
  471. data/doc/release_notes/4.8.0.txt +0 -175
  472. data/doc/release_notes/4.9.0.txt +0 -190
  473. data/lib/sequel/adapters/cubrid.rb +0 -144
  474. data/lib/sequel/adapters/do/mysql.rb +0 -66
  475. data/lib/sequel/adapters/do/postgres.rb +0 -44
  476. data/lib/sequel/adapters/do/sqlite3.rb +0 -42
  477. data/lib/sequel/adapters/do.rb +0 -158
  478. data/lib/sequel/adapters/jdbc/as400.rb +0 -84
  479. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -64
  480. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -36
  481. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -33
  482. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -33
  483. data/lib/sequel/adapters/odbc/progress.rb +0 -10
  484. data/lib/sequel/adapters/shared/cubrid.rb +0 -245
  485. data/lib/sequel/adapters/shared/firebird.rb +0 -247
  486. data/lib/sequel/adapters/shared/informix.rb +0 -54
  487. data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -152
  488. data/lib/sequel/adapters/shared/progress.rb +0 -40
  489. data/lib/sequel/adapters/swift/mysql.rb +0 -49
  490. data/lib/sequel/adapters/swift/postgres.rb +0 -47
  491. data/lib/sequel/adapters/swift/sqlite.rb +0 -49
  492. data/lib/sequel/adapters/swift.rb +0 -160
  493. data/lib/sequel/adapters/utils/pg_types.rb +0 -70
  494. data/lib/sequel/dataset/mutation.rb +0 -111
  495. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -5
  496. data/lib/sequel/extensions/filter_having.rb +0 -63
  497. data/lib/sequel/extensions/hash_aliases.rb +0 -49
  498. data/lib/sequel/extensions/meta_def.rb +0 -35
  499. data/lib/sequel/extensions/query_literals.rb +0 -84
  500. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -24
  501. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -122
  502. data/lib/sequel/extensions/set_overrides.rb +0 -76
  503. data/lib/sequel/no_core_ext.rb +0 -3
  504. data/lib/sequel/plugins/association_autoreloading.rb +0 -9
  505. data/lib/sequel/plugins/identifier_columns.rb +0 -47
  506. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -9
  507. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -81
  508. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -119
  509. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -61
  510. data/lib/sequel/plugins/schema.rb +0 -82
  511. data/lib/sequel/plugins/scissors.rb +0 -35
  512. data/spec/adapter_spec.rb +0 -4
  513. data/spec/adapters/db2_spec.rb +0 -160
  514. data/spec/adapters/firebird_spec.rb +0 -411
  515. data/spec/adapters/informix_spec.rb +0 -100
  516. data/spec/adapters/mssql_spec.rb +0 -733
  517. data/spec/adapters/mysql_spec.rb +0 -1319
  518. data/spec/adapters/oracle_spec.rb +0 -313
  519. data/spec/adapters/postgres_spec.rb +0 -3790
  520. data/spec/adapters/spec_helper.rb +0 -49
  521. data/spec/adapters/sqlanywhere_spec.rb +0 -170
  522. data/spec/adapters/sqlite_spec.rb +0 -688
  523. data/spec/bin_spec.rb +0 -258
  524. data/spec/core/connection_pool_spec.rb +0 -1045
  525. data/spec/core/database_spec.rb +0 -2636
  526. data/spec/core/dataset_spec.rb +0 -5175
  527. data/spec/core/deprecated_spec.rb +0 -70
  528. data/spec/core/expression_filters_spec.rb +0 -1247
  529. data/spec/core/mock_adapter_spec.rb +0 -464
  530. data/spec/core/object_graph_spec.rb +0 -303
  531. data/spec/core/placeholder_literalizer_spec.rb +0 -163
  532. data/spec/core/schema_generator_spec.rb +0 -203
  533. data/spec/core/schema_spec.rb +0 -1676
  534. data/spec/core/spec_helper.rb +0 -34
  535. data/spec/core/version_spec.rb +0 -7
  536. data/spec/core_extensions_spec.rb +0 -699
  537. data/spec/core_model_spec.rb +0 -2
  538. data/spec/core_spec.rb +0 -1
  539. data/spec/extensions/accessed_columns_spec.rb +0 -51
  540. data/spec/extensions/active_model_spec.rb +0 -85
  541. data/spec/extensions/after_initialize_spec.rb +0 -24
  542. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  543. data/spec/extensions/association_dependencies_spec.rb +0 -117
  544. data/spec/extensions/association_pks_spec.rb +0 -405
  545. data/spec/extensions/association_proxies_spec.rb +0 -86
  546. data/spec/extensions/auto_validations_spec.rb +0 -192
  547. data/spec/extensions/before_after_save_spec.rb +0 -40
  548. data/spec/extensions/blacklist_security_spec.rb +0 -88
  549. data/spec/extensions/blank_spec.rb +0 -69
  550. data/spec/extensions/boolean_readers_spec.rb +0 -93
  551. data/spec/extensions/boolean_subsets_spec.rb +0 -47
  552. data/spec/extensions/caching_spec.rb +0 -270
  553. data/spec/extensions/class_table_inheritance_spec.rb +0 -444
  554. data/spec/extensions/column_conflicts_spec.rb +0 -60
  555. data/spec/extensions/column_select_spec.rb +0 -108
  556. data/spec/extensions/columns_introspection_spec.rb +0 -91
  557. data/spec/extensions/composition_spec.rb +0 -242
  558. data/spec/extensions/connection_expiration_spec.rb +0 -121
  559. data/spec/extensions/connection_validator_spec.rb +0 -127
  560. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -288
  561. data/spec/extensions/constraint_validations_spec.rb +0 -389
  562. data/spec/extensions/core_refinements_spec.rb +0 -519
  563. data/spec/extensions/csv_serializer_spec.rb +0 -180
  564. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  565. data/spec/extensions/dataset_associations_spec.rb +0 -343
  566. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  567. data/spec/extensions/date_arithmetic_spec.rb +0 -167
  568. data/spec/extensions/defaults_setter_spec.rb +0 -102
  569. data/spec/extensions/delay_add_association_spec.rb +0 -74
  570. data/spec/extensions/dirty_spec.rb +0 -180
  571. data/spec/extensions/duplicate_columns_handler_spec.rb +0 -110
  572. data/spec/extensions/eager_each_spec.rb +0 -66
  573. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  574. data/spec/extensions/error_splitter_spec.rb +0 -18
  575. data/spec/extensions/error_sql_spec.rb +0 -20
  576. data/spec/extensions/eval_inspect_spec.rb +0 -73
  577. data/spec/extensions/filter_having_spec.rb +0 -40
  578. data/spec/extensions/force_encoding_spec.rb +0 -114
  579. data/spec/extensions/from_block_spec.rb +0 -21
  580. data/spec/extensions/graph_each_spec.rb +0 -119
  581. data/spec/extensions/hash_aliases_spec.rb +0 -24
  582. data/spec/extensions/hook_class_methods_spec.rb +0 -429
  583. data/spec/extensions/identifier_columns_spec.rb +0 -17
  584. data/spec/extensions/inflector_spec.rb +0 -183
  585. data/spec/extensions/input_transformer_spec.rb +0 -54
  586. data/spec/extensions/insert_returning_select_spec.rb +0 -46
  587. data/spec/extensions/instance_filters_spec.rb +0 -79
  588. data/spec/extensions/instance_hooks_spec.rb +0 -276
  589. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  590. data/spec/extensions/json_serializer_spec.rb +0 -304
  591. data/spec/extensions/lazy_attributes_spec.rb +0 -170
  592. data/spec/extensions/list_spec.rb +0 -278
  593. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  594. data/spec/extensions/many_through_many_spec.rb +0 -2172
  595. data/spec/extensions/meta_def_spec.rb +0 -21
  596. data/spec/extensions/migration_spec.rb +0 -728
  597. data/spec/extensions/modification_detection_spec.rb +0 -80
  598. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
  599. data/spec/extensions/named_timezones_spec.rb +0 -108
  600. data/spec/extensions/nested_attributes_spec.rb +0 -697
  601. data/spec/extensions/no_auto_literal_strings_spec.rb +0 -65
  602. data/spec/extensions/null_dataset_spec.rb +0 -85
  603. data/spec/extensions/optimistic_locking_spec.rb +0 -128
  604. data/spec/extensions/pagination_spec.rb +0 -118
  605. data/spec/extensions/pg_array_associations_spec.rb +0 -736
  606. data/spec/extensions/pg_array_ops_spec.rb +0 -143
  607. data/spec/extensions/pg_array_spec.rb +0 -390
  608. data/spec/extensions/pg_enum_spec.rb +0 -92
  609. data/spec/extensions/pg_hstore_ops_spec.rb +0 -236
  610. data/spec/extensions/pg_hstore_spec.rb +0 -206
  611. data/spec/extensions/pg_inet_ops_spec.rb +0 -101
  612. data/spec/extensions/pg_inet_spec.rb +0 -52
  613. data/spec/extensions/pg_interval_spec.rb +0 -76
  614. data/spec/extensions/pg_json_ops_spec.rb +0 -275
  615. data/spec/extensions/pg_json_spec.rb +0 -218
  616. data/spec/extensions/pg_loose_count_spec.rb +0 -17
  617. data/spec/extensions/pg_range_ops_spec.rb +0 -58
  618. data/spec/extensions/pg_range_spec.rb +0 -473
  619. data/spec/extensions/pg_row_ops_spec.rb +0 -60
  620. data/spec/extensions/pg_row_plugin_spec.rb +0 -62
  621. data/spec/extensions/pg_row_spec.rb +0 -360
  622. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
  623. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
  624. data/spec/extensions/prepared_statements_associations_spec.rb +0 -159
  625. data/spec/extensions/prepared_statements_safe_spec.rb +0 -61
  626. data/spec/extensions/prepared_statements_spec.rb +0 -103
  627. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
  628. data/spec/extensions/pretty_table_spec.rb +0 -92
  629. data/spec/extensions/query_literals_spec.rb +0 -183
  630. data/spec/extensions/query_spec.rb +0 -102
  631. data/spec/extensions/rcte_tree_spec.rb +0 -392
  632. data/spec/extensions/round_timestamps_spec.rb +0 -43
  633. data/spec/extensions/schema_caching_spec.rb +0 -41
  634. data/spec/extensions/schema_dumper_spec.rb +0 -814
  635. data/spec/extensions/schema_spec.rb +0 -117
  636. data/spec/extensions/scissors_spec.rb +0 -26
  637. data/spec/extensions/select_remove_spec.rb +0 -38
  638. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
  639. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  640. data/spec/extensions/serialization_spec.rb +0 -362
  641. data/spec/extensions/server_block_spec.rb +0 -90
  642. data/spec/extensions/server_logging_spec.rb +0 -45
  643. data/spec/extensions/set_overrides_spec.rb +0 -61
  644. data/spec/extensions/sharding_spec.rb +0 -198
  645. data/spec/extensions/shared_caching_spec.rb +0 -175
  646. data/spec/extensions/single_table_inheritance_spec.rb +0 -297
  647. data/spec/extensions/singular_table_names_spec.rb +0 -22
  648. data/spec/extensions/skip_create_refresh_spec.rb +0 -17
  649. data/spec/extensions/spec_helper.rb +0 -71
  650. data/spec/extensions/split_array_nil_spec.rb +0 -24
  651. data/spec/extensions/split_values_spec.rb +0 -22
  652. data/spec/extensions/sql_comments_spec.rb +0 -27
  653. data/spec/extensions/sql_expr_spec.rb +0 -60
  654. data/spec/extensions/static_cache_spec.rb +0 -361
  655. data/spec/extensions/string_agg_spec.rb +0 -85
  656. data/spec/extensions/string_date_time_spec.rb +0 -95
  657. data/spec/extensions/string_stripper_spec.rb +0 -68
  658. data/spec/extensions/subclasses_spec.rb +0 -66
  659. data/spec/extensions/subset_conditions_spec.rb +0 -38
  660. data/spec/extensions/table_select_spec.rb +0 -71
  661. data/spec/extensions/tactical_eager_loading_spec.rb +0 -136
  662. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  663. data/spec/extensions/timestamps_spec.rb +0 -175
  664. data/spec/extensions/to_dot_spec.rb +0 -154
  665. data/spec/extensions/touch_spec.rb +0 -203
  666. data/spec/extensions/tree_spec.rb +0 -274
  667. data/spec/extensions/typecast_on_load_spec.rb +0 -80
  668. data/spec/extensions/unlimited_update_spec.rb +0 -20
  669. data/spec/extensions/update_or_create_spec.rb +0 -87
  670. data/spec/extensions/update_primary_key_spec.rb +0 -100
  671. data/spec/extensions/update_refresh_spec.rb +0 -53
  672. data/spec/extensions/uuid_spec.rb +0 -106
  673. data/spec/extensions/validate_associated_spec.rb +0 -52
  674. data/spec/extensions/validation_class_methods_spec.rb +0 -1027
  675. data/spec/extensions/validation_helpers_spec.rb +0 -554
  676. data/spec/extensions/xml_serializer_spec.rb +0 -207
  677. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  678. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  679. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  680. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  681. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  682. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  683. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  684. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  685. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  686. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  687. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  688. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  689. data/spec/files/double_migration/001_create_sessions.rb +0 -9
  690. data/spec/files/double_migration/002_create_nodes.rb +0 -19
  691. data/spec/files/double_migration/003_3_create_users.rb +0 -4
  692. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  693. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  694. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  695. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  696. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  697. data/spec/files/empty_migration/001_create_sessions.rb +0 -9
  698. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  699. data/spec/files/empty_migration/003_3_create_users.rb +0 -4
  700. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  701. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  702. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  703. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  704. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  705. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  706. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  707. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  708. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  709. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  710. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  711. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  712. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  713. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  714. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  715. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  716. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  717. data/spec/files/reversible_migrations/006_reversible.rb +0 -10
  718. data/spec/files/reversible_migrations/007_reversible.rb +0 -10
  719. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  720. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  721. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  722. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  723. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  724. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  725. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  726. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  727. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  728. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  729. data/spec/guards_helper.rb +0 -55
  730. data/spec/integration/associations_test.rb +0 -2506
  731. data/spec/integration/database_test.rb +0 -113
  732. data/spec/integration/dataset_test.rb +0 -1858
  733. data/spec/integration/eager_loader_test.rb +0 -687
  734. data/spec/integration/migrator_test.rb +0 -262
  735. data/spec/integration/model_test.rb +0 -230
  736. data/spec/integration/plugin_test.rb +0 -2297
  737. data/spec/integration/prepared_statement_test.rb +0 -467
  738. data/spec/integration/schema_test.rb +0 -815
  739. data/spec/integration/spec_helper.rb +0 -56
  740. data/spec/integration/timezone_test.rb +0 -86
  741. data/spec/integration/transaction_test.rb +0 -406
  742. data/spec/integration/type_test.rb +0 -133
  743. data/spec/model/association_reflection_spec.rb +0 -565
  744. data/spec/model/associations_spec.rb +0 -4589
  745. data/spec/model/base_spec.rb +0 -759
  746. data/spec/model/class_dataset_methods_spec.rb +0 -150
  747. data/spec/model/dataset_methods_spec.rb +0 -149
  748. data/spec/model/eager_loading_spec.rb +0 -2197
  749. data/spec/model/hooks_spec.rb +0 -604
  750. data/spec/model/inflector_spec.rb +0 -26
  751. data/spec/model/model_spec.rb +0 -1097
  752. data/spec/model/plugins_spec.rb +0 -299
  753. data/spec/model/record_spec.rb +0 -2162
  754. data/spec/model/spec_helper.rb +0 -46
  755. data/spec/model/validations_spec.rb +0 -193
  756. data/spec/model_no_assoc_spec.rb +0 -1
  757. data/spec/model_spec.rb +0 -1
  758. data/spec/plugin_spec.rb +0 -1
  759. data/spec/sequel_coverage.rb +0 -15
  760. data/spec/spec_config.rb +0 -10
@@ -1,155 +0,0 @@
1
- = New Features
2
-
3
- * A connection_validator extension has been added, which
4
- automatically determines if connections checked out from the pool
5
- are still valid. If they are not valid, the connection is
6
- disconnected and another connection is used automatically,
7
- transparent to user code.
8
-
9
- Checking if connections are valid requires a query, so this
10
- extension causes a performance hit. For that reason, connections
11
- are only checked by default if they have been inactive for more than
12
- a configured amount of time (1 hour by default). You can choose to
13
- validate connections on every checkout via:
14
-
15
- DB.pool.connection_validation_timeout = -1
16
-
17
- However, this can cause a substantial performance hit unless you are
18
- purposely using coarse connection checkouts via manual calls to
19
- Database#synchronize (for example, in a Rack middleware). Using
20
- coarse checkouts can greatly reduce the amount of concurrency that
21
- Sequel supports (for example, limiting the number of concurrent
22
- requests to the number of database connections), so this method is
23
- not without its tradeoffs.
24
-
25
- * Sequel.delay has been added for a generic form of delayed
26
- evaluation. This method takes a block and delays evaluating it
27
- until query literalization. By default, Sequel evaluates most
28
- arguments immediately:
29
-
30
- foo = 1
31
- ds = DB[:bar].where(:baz=>foo)
32
- # SELECT * FROM bar WHERE (baz = 1)
33
- foo = 2
34
- ds
35
- # SELECT * FROM bar WHERE (baz = 1)
36
-
37
- Using Sequel.delay, you can delay the evaluation:
38
-
39
- foo = 1
40
- ds = DB[:bar].where(:baz=>Sequel.delay{foo})
41
- # SELECT * FROM bar WHERE (baz = 1)
42
- foo = 2
43
- ds
44
- # SELECT * FROM bar WHERE (baz = 2)
45
-
46
- * Sequel now supports the :unlogged option when creating tables on
47
- PostgreSQL, to create an UNLOGGED table.
48
-
49
- * On SQLite, Database#transaction now supports a :mode option for
50
- setting up IMMEDIATE/EXCLUSIVE SQLite transactions. Sequel also
51
- supports a Database#transaction_mode accessor for setting the
52
- default transaction mode on SQLite.
53
-
54
- * Most pg_* extension objects (e.g. PGArray) now support the #as
55
- method for creating an SQL::AliasedExpression object.
56
-
57
- * The single_table_inheritance plugin now supports non-bijective
58
- mappings. In lay terms, this means that a one-to-one mapping
59
- of column values to classes is no longer required. You can now
60
- have multiple column values that map to a single class in the
61
- :model_map option, and specify a :key_chooser option to choose
62
- which column value to use for the given model class.
63
-
64
- * The touch plugin now handles the touching of many_to_many
65
- associations, and other associations that use joined datasets.
66
-
67
- * ConnectionPool#pool_type has been added. It returns a symbol
68
- representing the type of connection pool in use (similar to
69
- Database#database_type).
70
-
71
- * Database#valid_connection? has been added for checking if a given
72
- connection is still valid.
73
-
74
- * Database#disconnect_connection is now part of the public API, and
75
- can be used to disconnect a given connection.
76
-
77
- = Other Improvements
78
-
79
- * Uniqueness validation now correctly handles nil values.
80
- Previously, it checked the underlying table for other rows where
81
- the column IS NULL, but that is incorrect behavior. Sequel's new
82
- (correct) behavior is to skip the uniqueness check if the column
83
- is nil.
84
-
85
- * Foreign key parsing is now supported on Microsoft SQL Server.
86
-
87
- * Dataset#reverse and #reverse_order now accept virtual row blocks.
88
-
89
- * Changing the name of the primary key column, and possibly other
90
- schema changes on the primary key column, are now supported on
91
- MySQL.
92
-
93
- * Primary key columns are now specifically marked as NOT NULL on
94
- SQLite, as non-integer primary keys on SQLite are not considered
95
- NOT NULL by default.
96
-
97
- * Failure to create a native prepared statement is now handled
98
- better in the postgres, mysql, and mysql2 adapters.
99
-
100
- * Firebird now emulates selecting data without an underlying table
101
- (e.g. DB.get(1)).
102
-
103
- * Finding the name of the constraint that sets column defaults on
104
- Microsoft SQL Server now works correctly on JRuby 1.7.
105
-
106
- * An additional type of disconnect error is now recognized in the
107
- jdbc/sqlserver adapter.
108
-
109
- * Many adapters have been fixed so that they don't raise an exception
110
- if trying to disconnect an already disconnected connection.
111
-
112
- * Many adapters have been fixed so that
113
- Database#log_connection_execute logs and executes the given SQL
114
- on the connection.
115
-
116
- * Many adapters have been fixed so that
117
- Database#database_error_classes returns an array of database
118
- exception classes for that adapter.
119
-
120
- * Database#log_exception now handles a nil exception message.
121
-
122
- * Dataset#limit(nil, nil) now resets offset in addition to limit, but
123
- you should still use Dataset#unlimited instead.
124
-
125
- * A bin/sequel usage quide has been added to the documentation.
126
-
127
- = Backwards Compatibility
128
-
129
- * Sequel now treats clob columns as strings instead of blobs
130
- (except on DB2 when use_clob_as_blob = true). This can make it
131
- so the values are returned as strings instead of SQL::Blob values.
132
- Since SQL::Blob is a String subclass, this generally will
133
- not affect user code unless you are passing the values as input
134
- to a separate blob column.
135
-
136
- * The Database <-> ConnectionPool interface was completely changed.
137
- Sequel no longer supports custom connection procs or disconnection
138
- procs in the connection pools. The :disconnection_proc Database
139
- option is no longer respected, and blocks passed to Database.new
140
- are now ignored.
141
-
142
- This change should not be user-visible, but if you had any code
143
- that was monkeying with the connection pool internals, you may
144
- need to modify it.
145
-
146
- * Code that was using the uniqueness check to also check for presence
147
- should add a separate check for presence. Such code was broken,
148
- as it only worked if there was already a NULL column value in the
149
- table. If you were relying on this broken behavior, you should
150
- clean up the NULL data in the column and then mark the database
151
- column as NOT NULL.
152
-
153
- * If you have code that specifically abuses the fact that non-integer
154
- primary keys on SQLite allow NULL values by default, it will no
155
- longer work.
@@ -1,74 +0,0 @@
1
- = New Features
2
-
3
- * Dataset#avg, #interval, #min, #max, #range, and #sum now
4
- accept virtual row blocks, allowing you to more easily get
5
- aggregate values of expressions based on the table:
6
-
7
- DB[:table].sum{some_function(column1, column2)} # => 134
8
- # SELECT sum(some_function(column1, column2)) FROM table
9
-
10
- * Database#do has been added on PostgreSQL for using the DO
11
- anonymous code block execution statement.
12
-
13
- * Model.dataset_module now uses a Module subclass, which allows
14
- you to call subset inside a dataset_module block, making
15
- it easier to consolidate dataset method code:
16
-
17
- class Album < Sequel::Model
18
- dataset_module do
19
- subset(:gold){copies_sold > 500000}
20
- end
21
- end
22
-
23
- * Database#copy_table and #copy_into are now supported on
24
- jdbc/postgres.
25
-
26
- * Sequel now supports deferred constraints on constraint types other
27
- than foreign keys. The only databases that appear to implement
28
- this are Oracle and PostgreSQL.
29
-
30
- * Sequel now supports INITIALLY IMMEDIATE deferred constraints via
31
- the :deferrable=>:immediate constraint/column option.
32
-
33
- * Sequel now supports setting the default size of string columns,
34
- via the default_string_column_size option or accessor. In some
35
- cases, Sequel's default string column size of 255 is too large
36
- (e.g. MySQL with utf8mb4 character set), and this allows you to
37
- change it.
38
-
39
- = Other Improvements
40
-
41
- * Dataset#count and other methods now use a subselect in the case
42
- where the dataset has an offset but no limit.
43
-
44
- * If an error occurs while attempting to commit a transaction, Sequel
45
- now attempts to rollback the transaction. Some databases do this
46
- automatically, but not all. Among other things, this fixes issues
47
- with deferred foreign key constraint violations on SQLite.
48
-
49
- * When extending a model's dataset, the model's instance_dataset is
50
- reset, insuring that it will also be extended with the module.
51
-
52
- * When passing an invalid argument to Dataset#filter, the exception
53
- message now includes the argument.
54
-
55
- * The force_encoding plugin now works with frozen string values.
56
-
57
- * Public methods added to a model dataset_module now have model
58
- class methods created for them even if the method was added outside
59
- of a dataset_module block.
60
-
61
- * On PostgreSQL, Database#indexes now includes a :deferrable entry
62
- for each index hash, which will be true for unique indexes where
63
- the underlying constraint is deferrable.
64
-
65
- * On Microsoft SQL Server 2000, Dataset#update no longer includes a
66
- limit (TOP), allowing it to work correctly.
67
-
68
- = Backwards Compatibility
69
-
70
- * Model.dataset_methods has been removed. This was used to store
71
- blocks for methods created via def_dataset_method and subset.
72
- The internals have been changed so that a dataset_module is
73
- always used in these cases, therefore there was no longer a reason
74
- for this method.
@@ -1,105 +0,0 @@
1
- = New Features
2
-
3
- * A core_refinements extension has been added, which offers
4
- refinement versions of Sequel's core extensions. This requires
5
- the new experimental refinement support added in ruby 2.0, and
6
- allows you to use the Sequel DSL methods in a file without
7
- actually modifying the Symbol, String, Array, and Hash classes.
8
-
9
- * A date_arithmetic extension has been added for performing
10
- database-independent date calculations (adding/subtracting an
11
- interval to/from a date):
12
-
13
- Sequel.extension :date_arithmetic
14
- e = Sequel.date_add(:date_column, :years=>1, :months=>2, :days=>3)
15
- DB[:table].where(e > Sequel::CURRENT_DATE)
16
-
17
- In addition to providing the interval as a hash, you can also
18
- provide it as an ActiveSupport::Duration object. This extension
19
- is supported on 11 database types.
20
-
21
- * Dataset#get can now take an array of multiple expressions to get
22
- an array of values, similar to map/select_map:
23
-
24
- value1, value2 = DB[:table].get([:column1, :column2])
25
-
26
- * Sequel can now handle [host.]database.schema.table qualified
27
- tables on Microsoft SQL Server. To implement this support,
28
- the split_qualifiers method has been added to Database and
29
- Dataset for taking a possibly qualified identifier and splitting
30
- it into an array of identifier strings.
31
-
32
- * The string_stripper plugin now offers the ability to manually
33
- specify which columns to skip stripping for via
34
- Model.skip_string_stripping.
35
-
36
- = Other Improvements
37
-
38
- * The jdbc adapter now works with the new jdbc-* gems, which require
39
- a manual load_driver step that the older jdbc-* gems did not
40
- require.
41
-
42
- * The string_stripper plugin no longer strips blob columns or values.
43
-
44
- * Database#copy_into in both the postgres and jdbc/postgres adapters
45
- has been fixed to better handle exceptions.
46
-
47
- * Dataset#hash and Model#hash are now significantly faster.
48
-
49
- * Lambda procs with 0 arity can now be used as virtual row blocks
50
- on ruby 1.9. Previously, attempting to use a lambda proc with
51
- 0 arity as a virtual row block on ruby 1.9 would raise an exception.
52
-
53
- * Schema-qualified composite types are now handled correctly in
54
- the pg_row extension.
55
-
56
- * Database#reset_primary_key_sequence on PostgreSQL now works
57
- correctly when a default_schema is set.
58
-
59
- * tinyint(1) unsigned columns on MySQL are now parsed as booleans
60
- instead of integers on MySQL if converting tinyint to boolean.
61
-
62
- * The jdbc adapter now supports the jdbc-hsqldb gem, so you can
63
- now install that instead of having to require the .jar manually.
64
-
65
- * Blobs are now casted correctly on DB2 when the use_clob_as_blob
66
- setting is false.
67
-
68
- * Oracle timestamptz types are now handled correctly in the
69
- jdbc/oracle adapter.
70
-
71
- * Sequel now defaults to :prefetch_rows = 100 in the oracle
72
- adapter, which can significantly improve performance.
73
-
74
- * Sequel now defines respond_to_missing? where method_missing? is
75
- defined and the object also responds to respond_to?.
76
-
77
- * Sequel::BasicObject now responds to instance_exec on ruby 1.8.
78
-
79
- = Backwards Compatibility
80
-
81
- * The meta_def method that was defined on Database, Dataset, and
82
- Model classes and instances has been moved to an extension named
83
- meta_def, and is no longer loaded by default. This method was
84
- previously used internally, and it wasn't designed for external
85
- use. If you have code that uses meta_def, you should now load the
86
- extension manually:
87
-
88
- Sequel.extension :meta_def
89
-
90
- * The private _*_dataset_helper model association methods are no
91
- longer defined. The AssociationReflection#dataset_helper_method
92
- public method is also no longer defined.
93
-
94
- * Dataset#schema_and_table now always returns strings (or nil).
95
- Before, in some cases it would return symbols.
96
-
97
- * Using a conditions specifier array with Dataset#get no longer
98
- works due to the new multiple values support in Database#get.
99
- So code such as:
100
-
101
- DB[:table].get([[:a, 1], [:b, 2]])
102
-
103
- should be changed to:
104
-
105
- DB[:table].get(Sequel.expr([[:a, 1], [:b, 2]]))
@@ -1,152 +0,0 @@
1
- = New Features
2
-
3
- * Dataset#paged_each has been added, for processing entire datasets
4
- without keeping all rows in memory, even if the underlying driver
5
- keeps all query results in memory. This is implemented using
6
- limits and offsets, and requires an order (model datasets use a
7
- default order by primary key). It defaults to fetching 1000
8
- rows at a time, but that can be changed via the :rows_per_fetch
9
- option.
10
-
11
- This method is drop-in compatible for each. Previously, the
12
- pagination extension's each_page method could be used for a
13
- similar purpose, but users of each_page are now encouraged to
14
- switch to paged_each.
15
-
16
- * Sequel now recognizes constraint violation exceptions on most
17
- databases, and will raise specific exceptions for different
18
- types of constraint violations, instead of the generic
19
- Sequel::DatabaseError:
20
-
21
- * Sequel::ConstraintViolation (generic superclass)
22
- * Sequel::CheckConstraintViolation
23
- * Sequel::NotNullConstraintViolation
24
- * Sequel::ForeignKeyConstraintViolation
25
- * Sequel::UniqueConstraintViolation
26
- * Sequel::Postgres::ExclusionConstraintViolation
27
-
28
- * The :dataset association option can now take accept an optional
29
- association reflection option. Instead of doing:
30
-
31
- Album.one_to_many :artists,
32
- :dataset=>{Artist...}
33
-
34
- you can now do:
35
-
36
- Album.one_to_many :artists,
37
- :dataset=>{|r| r.associated_dataset...}
38
-
39
- This second form will preform better.
40
-
41
- * Temporary views are now supported on PostgreSQL and SQLite using
42
- the :temp option to create_view.
43
-
44
- = Other Improvements
45
-
46
- * Row fetching speed in the tinytds adapter has been increased by
47
- up to 60%.
48
-
49
- * Row fetching speed in the mysql2 adapter when using an identifier
50
- output method has been increased by up to 50%.
51
-
52
- * On databases where offsets are emulated via the ROW_NUMBER window
53
- function (Oracle, DB2, Microsoft SQL Server), using an offset in
54
- a subselect is now supported. For example, the following code
55
- previously didn't work correctly with emulated offsets:
56
-
57
- # Second 5 rows ordered by column2 of the second 10 rows ordered
58
- # by column 1.
59
- DB[:table].order(:column1).limit(10, 10).
60
- from_self.order(:column2).limit(5, 5)
61
-
62
- Row processing speed has been increased slightly for all adapters
63
- that supported databases where offsets are emulated.
64
-
65
- * Association method performance has improved by caching an
66
- intermediate dataset. This can close to triple the performance
67
- of the association_dataset method, and increase the performance
68
- of the association method by close to 30%.
69
-
70
- * Virtual Row performance has increased about 30% in the typical
71
- case by using a shared VirtualRow instance.
72
-
73
- * Database#create_or_replace_view is now emulated on databases that
74
- don't support it directly by dropping the view before attempting
75
- to create it.
76
-
77
- * The columns_introspection extension can now introspect for simple
78
- select * queries from subselects, and it can now use the cached
79
- schema information in the database for simple select * queries
80
- from tables.
81
-
82
- * The identity_map plugin now works correctly with many-to-many
83
- right-side composite keys.
84
-
85
- * Dataset#last for Model datasets now works even if you don't specify
86
- an order explicitly, giving the last entry by primary key. Note
87
- that Dataset#first for model datasets still does not order by
88
- default.
89
-
90
- * The eager_each plugin no longer uses Object#extend at runtime.
91
-
92
- * Database#remove_cached_schema is now thread-safe on non-GVL ruby
93
- implementations.
94
-
95
- * Connection errors in the jdbc adapter now provide slightly more
96
- helpful messages.
97
-
98
- * Sequel now uses the standard offset emulation code in the
99
- jdbc/as400 adapter, instead of custom offset emulation code
100
- specific to that adapter.
101
-
102
- * Database#create_view with a dataset now works correctly when using
103
- the pg_auto_parameterize extension.
104
-
105
- * Database#columns no longer calls the row_proc.
106
-
107
- * Dataset#schema_and_table no longer turns a literal string into a
108
- non-literal string.
109
-
110
- * The oracle adapter now works with a :prefetch_rows=>nil option,
111
- which explicitly disables prefetching.
112
-
113
- * The mock mssql adapter now sets a server_version so that more
114
- parts of it work.
115
-
116
- = Backwards Compatibility
117
-
118
- * Offset emulation via ROW_NUMBER works by moving the query to a
119
- subselect that also selects from the ROW_NUMBER window function,
120
- and filtering on the ROW_NUMBER in the main query. Previously, the
121
- ROW_NUMBER was also present in the output columns, and some
122
- adapter code was needed to hide that fact. Now, the outer select
123
- selects all of the inner columns in the subselect except for the
124
- ROW_NUMBER, reducing the adapter code needed. This has the side
125
- effect of potentially requiring a query (or multiple queries for
126
- multiple subselects) to determine the columns to use. The
127
- columns_introspection extension may reduce the number of queries
128
- needed.
129
-
130
- * The correlated_subquery eager limit strategy is no longer supported
131
- on Microsoft SQL Server for many_*_many associations. As the
132
- window_function eager limit strategy is supported there, there is
133
- no reason to use the correlated_subquery strategy.
134
-
135
- * The public AssociationReflection#_dataset_method method has been
136
- removed.
137
-
138
- * The private _*_dataset methods for associations (e.g.
139
- _albums_dataset) have been removed.
140
-
141
- * The private Dataset#offset_returns_row_number_column? method has
142
- been removed.
143
-
144
- * :conditions options for associations are now added to the
145
- association dataset before the foreign key filters, instead of
146
- after. This should have no effect unless you were introspecting
147
- the dataset's opts or sql and acting on it.
148
-
149
- * The added abilities in the columns_introspection plugin to use
150
- cached schema for introspection can now cause it to return
151
- incorrect results if the table's schema has changed since it was
152
- cached by Sequel.
@@ -1,179 +0,0 @@
1
- = New Features
2
-
3
- * Database#transaction now recognizes a :retry_on option, which
4
- should contain an exception class or array of exception classes.
5
- If the transaction raises one of the given exceptions, Sequel
6
- will automatically retry the transaction block. It's a bad idea to
7
- use this option if the transaction block is not idempotent.
8
-
9
- By default, Sequel only retries the block 5 times by default,
10
- to protect against infinite looping. You can change the number
11
- of retries with the :num_retries option.
12
-
13
- Users of the :disconnect=>:retry option are encouraged to switch
14
- to :retry_on=>Sequel::DatabaseDisconnectError.
15
-
16
- * Dataset#escape_like has been added for escaping LIKE
17
- metacharacters. This is designed for the case where part of
18
- the LIKE pattern is based on user input that should not treat the
19
- metacharacters specially.
20
-
21
- * Serialization failures/deadlocks are now raised as
22
- Sequel::SerializationFailure exception instances. This exception
23
- class is a good candidate for the transaction :retry_on option.
24
-
25
- * On PostgreSQL, you can now provide the :force_standard_strings
26
- and :client_min_messages Database options to override the defaults
27
- on a per-instance basis.
28
-
29
- * On PostgreSQL, Database#tables and #views now recognizes a
30
- :qualify option, which if true will return qualified identifiers
31
- instead of plain symbols.
32
-
33
- * Transaction isolation levels are now supported on Oracle, DB2,
34
- and all jdbc subadapters using the JDBC transaction support.
35
-
36
- * Dataset.def_mutation_method now accepts a :module option for
37
- the module in which to define the methods (defaulting to self).
38
-
39
- * An unlimited_update plugin has been added. It's sole purpose is to
40
- eliminate a MySQL warning in replicated environments, since by
41
- default Sequel::Model uses a LIMIT clause when updating on MySQL.
42
-
43
- * The named_timezones extension now adds a
44
- Sequel.tzinfo_disambiguator accessor to automatically handle
45
- TZInfo::AmbiguousTime exceptions. This should be a callable object
46
- that accepts two arguments, a DateTime instance and an array of
47
- timezone periods, and returns the timezone period to use.
48
-
49
- = Other Improvements
50
-
51
- * Sequel now handles JSON securely, specifying the
52
- :create_additions=>false option when using JSON.parse. If you
53
- really want to get the old vulnerable behavior back, override
54
- Sequel.parse_json.
55
-
56
- * The json_serializer and xml_serializer plugins are now secure
57
- by default. Before, the default behavior of these plugins
58
- allowed for round tripping, such that:
59
-
60
- Album.from_xml(album.to_xml) == album
61
-
62
- Unfortunately, that requires that the deserialization allow
63
- the setting of any column. Since the plugins also handle
64
- associations, you could also set any column in any associated
65
- object, even cascading to associated objects of those objects.
66
-
67
- The new default behavior only allows deserialization to set
68
- the same columns that mass-assignment would set, and not to
69
- handle associated objects at all by default. The following
70
- additional options are supported:
71
-
72
- :fields :: The specific fields to set (this was already supported
73
- by the json_serializer plugin).
74
- :associations :: The specific associations to handle.
75
- :all_columns :: The previous behavior of setting all columns.
76
- :all_associations :: The previous behavior of setting all
77
- associations.
78
-
79
- Since JSON parsing no longer deserializes into arbitrary ruby
80
- instances, from_json and array_from_json class methods have been
81
- added to the json_serializer plugin, for deserializing into model
82
- instances. These mirror the from_xml and array_from_xml class
83
- methods in the xml_serializer plugin.
84
-
85
- Note that the :all_columns and :all_associations methods were
86
- only added to make backwards compatibility easier. It is
87
- likely they will be removed in Sequel 4, along with the
88
- json_create class method.
89
-
90
- * Sequel now attempts to use database specific error codes or
91
- SQLState codes instead of regexp parsing to determine if a more
92
- specific DatabaseError subclass should be used. This should make
93
- error handling faster and more robust.
94
-
95
- * Sequel now uses ESCAPE '\' when using LIKE, for similar behavior
96
- across databases. Previously, no ESCAPE clause was used, so
97
- behavior differed across databases, with most not using escaping,
98
- and PostgreSQL, MySQL, and H2 defaulting to backslash as the escape
99
- character.
100
-
101
- * The query extension has been reimplemented and now uses a proxy
102
- object instead of Object#extend.
103
-
104
- * The :pool_timeout Database option now supports fractional seconds.
105
-
106
- * Database#quote_identifier is now a public method.
107
-
108
- * Metadata parsing (schema, indexes, foreign_key_list) on PostgreSQL
109
- now correctly handles the case where an unqualified table name is
110
- used and tables with that name exist in multiple schemas. It now
111
- picks the first matching table in the schema_search_path, instead of
112
- failing or returning results from all tables.
113
-
114
- * Sequel::Model instances no longer attempt to typecast the money
115
- type on PostgreSQL, since the previous typecast didn't work
116
- correctly, and correct typecasting is locale-dependent.
117
-
118
- * Sequel no longer picks up foreign keys for tables in other
119
- databases when using Database#foreign_key_list on MySQL.
120
-
121
- * A warning when using the mysql2 3.12 beta has been eliminated.
122
-
123
- * A warning has been eliminated when using the jdbc/oracle adapter
124
- on JRuby 1.7.
125
-
126
- * Sequel's ilike emulation should now work by default on databases
127
- without specific syntax support.
128
-
129
- * Dataset#from_self! no longer creates a self referential dataset.
130
-
131
- * Coverage testing now uses simplecov instead of rcov on ruby 1.9+.
132
-
133
- = Backwards Compatibility
134
-
135
- * The switch to using JSON.parse :create_additions=>false means
136
- that if your app expected JSON to deserialize into arbitrary
137
- ruby objects, it is probably broken. You should update your
138
- application code to manually convert the deserialized hashes
139
- into the ruby objects you want.
140
-
141
- Note that it's not just this new version of Sequel that will
142
- cause that, older versions of Sequel will break in the same
143
- way if you update your JSON library to a version that is not
144
- vulnerable by default.
145
-
146
- This potentially affects the pg_json extension and serialization
147
- plugin if you were expecting the JSON stored in the database
148
- to be deserialized into arbitrary ruby objects.
149
-
150
- See the json_serializer/xml_serializer changes mentioned in
151
- the Other Improvements section.
152
-
153
- * The reimplemented query extension is not completely backwards
154
- compatible. For example, inside a query block, self refers to the
155
- proxy object instead of a dataset, and calling methods that return
156
- rows no longer raises an exception.
157
-
158
- * The metadata parsing methods on PostgreSQL no longer work with
159
- unqualified tables where the table is not in the schema search
160
- path. This makes metadata parsing consistent with how datasets
161
- operate. For tables outside the schema search path, you must
162
- qualify it before use now.
163
-
164
- Additionally, using a nonexistent table name will raise an
165
- exception instead of returning empty results in some cases.
166
-
167
- * The Dataset#def_mutation_method instance method has been removed.
168
- This method added mutation methods directly on the dataset instance,
169
- which is generally not desired. Using the def_mutation_method class
170
- method with the :module option is now the recommended approach.
171
-
172
- * The switch to using ESCAPE for LIKE characters is backwards
173
- incompatible on databases that don't use escaping by default,
174
- when backslash is used in a LIKE pattern as a regular character.
175
- Now you have to double the backslash in the pattern.
176
-
177
- * Database#database_error_regexps private method now can return any
178
- enumerable yielding regexp/exception class pairs, it is no longer
179
- specified to return a hash.