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,304 +0,0 @@
1
- = Migration Changes
2
-
3
- * A TimestampMigrator has been added to Sequel, and is
4
- automatically used if any migration has a version greater than
5
- 20000100. This migrator operates similarly to the default
6
- ActiveRecord migrator, in that it allows missing migrations.
7
- It differs from the ActiveRecord migrator in that it supports
8
- migrations with the same timestamp/version as well as a wide
9
- variety of timestamp formats (though the ActiveRecord default
10
- of YYYYMMDDHHMMSS is recommended and should be used in
11
- portable code).
12
-
13
- Sequel still defaults to the old migrator, but you can use the
14
- new one without making changes to your old migrations. Just
15
- make sure your new migration starts with a version greater than
16
- 20000100, and Sequel will automatically convert the previous
17
- schema table to the new format.
18
-
19
- * A new migration DSL was added:
20
-
21
- Sequel.migration do
22
- up do
23
- end
24
-
25
- down do
26
- end
27
- end
28
-
29
- The old style of using a Sequel::Migration subclass is still
30
- supported, but it is recommended that new code use the new DSL.
31
-
32
- * The default migrator also had significant issues fixed. First,
33
- it now saves the migration version after each migration, instead
34
- of after all migrations, which means Sequel won't attempt to
35
- apply already applied migrations if there was previously an error
36
- when applying multiple migrations at once on a database that
37
- didn't support transactional schema modification.
38
-
39
- Second, duplicate migration versions in the default migrator now
40
- raise an exception, as do missing migration versions. Neither
41
- should happen when using the default migrator, which requires
42
- consecutive integer versions, similar to the old ActiveRecord
43
- migrator.
44
-
45
- * Execution times for migrations are now logged to the database's
46
- loggers.
47
-
48
- = New Plugins
49
-
50
- * A sharding plugin has been added that allows model objects to
51
- work well with sharded databases. When using it, model objects
52
- know which shard they were retrieved from, so when you save
53
- the object, it is saved back to that shard. The sharding plugin
54
- also works with associations, so associated records are retrieved
55
- from the same shard the main object was retreived from. The
56
- sharding plugin also works with both methods of eager loading, and
57
- provides methods that you can use to create objects on specific
58
- shards.
59
-
60
- * An update_primary_key plugin has been added that allows Sequel
61
- to work correctly if you modify the primary key of a model object.
62
- This should not be necessary if you are using surrogate keys, but
63
- if your database uses natural primary keys which can change, this
64
- should be helpful.
65
-
66
- * An association_pks plugin has been added that adds association_pks
67
- and association_pks= methods to model objects for both one_to_many
68
- and many_to_many associations. The association_pks method returns
69
- an array of primary key values for the associated objects, and
70
- the association_pks= method modifies the database to ensure that
71
- the object is only associated to the objects specified by the
72
- array of primary keys provided to it.
73
-
74
- * A string_stripper plugin has been added that strips all strings
75
- that are assigned to attribute values. This is useful for web
76
- applications where you want to easily remove leading and trailing
77
- whitespace in form entries before storing them in the database.
78
-
79
- * A skip_create_refresh plugin has been added that skips the refresh
80
- of after you save a new model object. On most databases, Sequel
81
- refreshes the model object after inserting it in order to get
82
- values for all of the columns. For performance reasons, you can
83
- use this plugin to skip the refresh if it isn't necessary for you.
84
-
85
- = Other New Features
86
-
87
- * Sequel::Model#set_fields and update_fields were added. These
88
- methods have a similar API to set_only and update_only, but they
89
- operate differently. While set_only and update_only operate over
90
- the hash, these methods operate over the array of fields,
91
- so they don't raise errors if the hash contains fields not
92
- in the array:
93
-
94
- params = {:a=>1, :b=>2, :c=>3}
95
- album = Album[1]
96
-
97
- # raises Error because :a is not in the fields
98
- album.set_only(params, [:b, :c])
99
-
100
- # Just sets the value of album.b and album.c
101
- album.set_fields(params, [:b, :c])
102
-
103
- Other than handling entries in the hash that aren't in the array,
104
- set_fields and update_fields also handle entries not in the hash
105
- differently:
106
-
107
- # Doesn't modify the object, since the hash is empty
108
- album.set_only({}, [:b, :c])
109
-
110
- # Sets album.b and album.c to nil, since they aren't in the hash
111
- album.set_fields({}, [:b, :c])
112
-
113
- * The :eager_loader association option has a new API, though the
114
- previous API still works. Instead of accepting three arguments,
115
- it can now accept a single hash argument, which will use the
116
- :key_hash, :rows, and :association keys for the previous three
117
- arguments. The hash will also contain a :self key whose value
118
- is the dataset doing the eager load, which was not possible to
119
- determine using the old API.
120
-
121
- * Sequel::SQL::Expression#hash has been added so that the objects
122
- are now safe to use as hash keys.
123
-
124
- * A Dataset#order_prepend method has been added allowing you to
125
- prepend to an existing order. This is useful if want to modify
126
- a dataset's order such that it first orders by the columns you
127
- provide, but for any rows where the columns you provide are
128
- equal, uses the existing order to further order the dataset:
129
-
130
- ds.order(:albums__name).order_prepend(:artists__name)
131
- # ORDER BY artists.name, albums.name
132
-
133
- * When creating foreign key columns, you can now use a :deferrable
134
- option to set up a foreign key constraint that is not checked
135
- until the end of the transaction:
136
-
137
- DB.create_table(:albums) do
138
- primary_key :id
139
- String :name
140
- foreign_key :artist_id, :artists, :deferrable=>true
141
- end
142
-
143
- * many_to_many associations now support a :join_table_block option
144
- that is used by the add/remove/remove_all methods. It can modify
145
- the dataset to ensure that certain columns are included when
146
- inserting or to add a filter so that only certain records are
147
- deleted. It's useful if you have a many_to_many association that
148
- is filtered to only a subset of the matching rows in the join
149
- table.
150
-
151
- * The single_table_inheritance plugin now supports :model_map and
152
- :key_map options to set up a custom mapping of column values to
153
- model classes. For simple situations such as when you are mapping
154
- integer values to certain classes, a :model_map hash is sufficient:
155
-
156
- Employee.plugin :single_table_inheritance, :type_id,
157
- :model_map=>{1=>:Staff, 2=>:Manager}
158
-
159
- Here the :model_map keys are type_id column values, and the
160
- :model_map values are symbols or strings specifying class names.
161
-
162
- For more complex conditions, you can use a pair of procs:
163
-
164
- Employee.plugin :single_table_inheritance, :type_name,
165
- :model_map=>proc{|v| v.reverse},
166
- :key_map=>proc{|klass| klass.name.reverse}
167
-
168
- Here the type_name column is a string column holding the reverse
169
- of the class's name.
170
-
171
- * The single_table_inheritance plugin now correctly sets up subclass
172
- filters for middle tables in a class hierarchy with more than 2
173
- levels. For example, with this code:
174
-
175
- class Employee < Sequel::Model; end
176
- Employee.plugin :single_table_inheritance, :kind
177
- class Manager < Employee; end
178
- class Executive < Manager; end
179
-
180
- Sequel previously would not return Executives if you used
181
- Manager.all. It now correctly recognizes subclasses so that it
182
- will return both Managers and Executives.
183
-
184
- * Sequel::Model.qualified_primary_key_hash has been added, giving
185
- you a hash that can be used for filtering. It is similar to
186
- primary_key_hash, but it qualifies the keys with the model's
187
- table. It's useful if you have joined the table to another table
188
- that has columns with the same name, but you want to only look
189
- for a single model object in that dataset.
190
-
191
- * For consistency, you can now use Dataset#order_append as an alias
192
- for order_more.
193
-
194
- = Other Improvements
195
-
196
- * Sequel now correctly removes schema entries when altering tables.
197
- Previously, some adapters that had to query the existing schema
198
- when altering tables resulted in the previous schema being cached.
199
-
200
- * Sequel::Model::Errors#on now always returns nil if there are no
201
- errors on the attribute. Previously, it would return an empty
202
- array in certain cases. Additionally, Sequel::Model::Errors#empty?
203
- now returns true if there are no errors, where it certain cases
204
- it would return false even if there were no errors.
205
-
206
- * The schema_dumper extension now works with tables specified as
207
- Sequel::SQL::Identifiers.
208
-
209
- * Sequel now recognizes the timestamp(N) with(out) time zone column
210
- type.
211
-
212
- * The lazy_attributes plugin no longer requires the core extensions
213
- to work correctly.
214
-
215
- * DatabaseDisconnectError support has been added to the ODBC adapter,
216
- allowing Sequel to detect disconnects and remove the connection
217
- from the connection pool.
218
-
219
- * A leak of JDBC statement objects when using transactions was
220
- fixed in the jdbc adapter.
221
-
222
- * The jdbc adapter now gives a nicer error message if you use a
223
- connection string that it doesn't recognize and there is an error
224
- when connecting.
225
-
226
- * Temporary table creation was fixed on Microsoft SQL Server, but
227
- it is not recommended as it changes the name of the table. If
228
- you use Microsoft SQL Server, you should prefix your temporary
229
- table names with # and use the regular create table method.
230
-
231
- * A large number of guides were added to Sequel to make it easier
232
- for new and existing users to learn more about Sequel. The
233
- following guides were added:
234
-
235
- * Querying in Sequel
236
- * Migration and Schema Modification
237
- * Model Hooks
238
- * Model Validations
239
- * Sequel for SQL Users
240
- * Sequel for ActiveRecord Users
241
-
242
- * RDoc section support was added to Sequel::Database, making the
243
- method documentation easier to read.
244
-
245
- = Backwards Compatibility
246
-
247
- * Sequel::Database now defines the indexes and tables methods, even
248
- if the adapter does not implement them, similar to how connect
249
- and execute are defined. Previously, you could use respond_to? to
250
- check if the adapter supported them, now they raise
251
- Sequel::NotImplemented if the database adapter does not implement
252
- them.
253
-
254
- * Sequel used to raise NotImplementedError in certain default
255
- definitions of methods inside Sequel::Database and Sequel::Dataset,
256
- when the methods were supposed to be overridden in subclasses.
257
- Sequel now uses a Sequel::NotImplemented exception class for these
258
- exceptions, which is a subclass of Sequel::Error.
259
-
260
- * Sequel no longer applies all association options to the dataset
261
- used to remove all many_to_many associated objects. You should
262
- use the new :join_table_block option to get similar behavior if
263
- you were filtering the many_to_many association based on columns
264
- in the join table and you wanted remove_all to only remove the
265
- related columns.
266
-
267
- * Sequel now calls certain before and after hook actions in plugins
268
- in a different order than before. This should not have an effect
269
- unless you were relying on them being called in the previous order.
270
- Now, when overriding before hooks in plugins, Sequel always does
271
- actions before calling super, and when overriding after hooks in
272
- plugins, Sequel always does actions after calling super.
273
-
274
- * The hook_class_methods plugin no longer skips later after hooks if
275
- a previous after hook returns false. That behavior now only occurs
276
- for before hooks.
277
-
278
- * Sequel now only removes primary key values when updating objects if
279
- you are saving the entire object and you have not modified the
280
- values of the primary keys. Previously, Sequel would remove
281
- primary key values when updating even if you specified the primary
282
- key column specifically or the primary key column was modified and
283
- you used save_changes/update.
284
-
285
- * Sequel now uses explicit methods instead of aliases for certain
286
- methods. This should only affect you if for example you overrode
287
- Dataset#group to do one thing and wanted Dataset#group_by to do
288
- the default action. Now, Dataset#group_by, and methods like it, are
289
- explicit methods that just call the methods they previously
290
- aliased. This also means that if you were overriding Dataset#group
291
- and explicitly aliasing group_by to it, you no longer need the
292
- alias.
293
-
294
- * The single_table_inheritance plugin now uses IN instead of = for
295
- subclass filters. This could lead to poor performance if the
296
- database has a very bad query planner.
297
-
298
- * The private transaction_statement_object method was removed from
299
- the JDBC adapter, and Sequel will no longer check for the presence
300
- of the method in the transaction code.
301
-
302
- * The Sequel::Migrator object is now a class instead of a module, and
303
- has been pretty much rewritten. If you were using any methods of
304
- it besides apply and run, they no longer work.
@@ -1,210 +0,0 @@
1
- = New Plugins
2
-
3
- * A json_serializer plugin was added that allows you to serialize
4
- model instances or datasets to JSON using to_json. It requires
5
- the json library. The API was modeled on ActiveRecord's JSON
6
- serialization support. You can use :only and :except options
7
- to specify the columns included, :include to specify associations
8
- to include, as well pass options to nested associations using a
9
- hash. In addition to serializing to JSON, it also adds support
10
- for parsing JSON to model objects via JSON.parse or #from_json.
11
-
12
- * An xml_serializer plugin was added that allows you to serialize
13
- model instances or datasets to XML. It requries the nokogiri
14
- library. It has a similar API to the json_serializer plugin, using
15
- to_xml instead of to_json, and the from_xml class method instead
16
- of JSON.parse.
17
-
18
- * A tree plugin was added that allows you to treat Sequel::Model
19
- objects as being part of a tree. It provides similar features to
20
- rcte_tree, but works on databases that don't support recursive
21
- common table expressions. In addition to the standard parent
22
- and children associations, it provides instance methods to get
23
- the ancestors, descendants, and siblings of the given tree node,
24
- and class methods to get the roots of the tree.
25
-
26
- * A list plugin was added that allows you to treat Sequel::Model
27
- objects as being part of a list. This adds instance methods to
28
- get the next and prev items in the list, or to move the item
29
- to a specific place in the list. You can specify that all rows
30
- in the table belong to the same list, or specify arbitrary scopes
31
- so that the same table can contain many separate lists.
32
-
33
- = Other New Features
34
-
35
- * Sequel is now compatible with Ruby 1.9.2pre3.
36
-
37
- * Sequel now supports prepared transactions/two-phase commit on
38
- PostgreSQL, MySQL, and H2. You can specify that you want to
39
- use prepared transactions using the :prepare option which
40
- should be some transaction id string:
41
-
42
- DB.transaction(:prepare=>'some string') do ... end
43
-
44
- Assuming that no exceptions are raised in the transaction block,
45
- Sequel will prepare the transaction. You can then commit the
46
- transaction later:
47
-
48
- DB.commit_prepared_transaction('some string')
49
-
50
- If you need to rollback the prepared transaction, you can do
51
- so as well:
52
-
53
- DB.rollback_prepared_transaction('some string')
54
-
55
- * Sequel now supports customizable transaction isolation levels on
56
- PostgreSQL, MySQL, and Microsoft SQL Server. You can specify the
57
- transaction isolation level to use for any transaction using the
58
- :isolation option with an :uncommitted, :committed, :repeatable,
59
- or :serializable value:
60
-
61
- DB.transaction(:isolation=>:serializable) do ... end
62
-
63
- You can also set the default isolation level for transactions via
64
- the transaction_isolation_level Database attribute:
65
-
66
- DB.transaction_isolation_level = :committed
67
-
68
- If you are connecting to Microsoft SQL Server, it is recommended
69
- that you set a default transaction isolation level if you plan
70
- on using this feature.
71
-
72
- * You can specify a NULLS FIRST/LAST ordering by using the
73
- :nulls=>:first/:last option to asc and desc:
74
-
75
- Album.filter(:release_date.desc(:nulls=>:first),
76
- :name.asc(:nulls=>:last))
77
- # ORDER BY release_date DESC NULLS FIRST,
78
- # name ASC NULLS LAST
79
-
80
- This syntax is supported by PostgreSQL 8.3+, Firebird 1.5+,
81
- Oracle, and probably some other databases as well, and makes it
82
- possible for the user to specify whether NULL values should sort
83
- before or after other values.
84
-
85
- * Sequel::Model.find_or_create now accepts a block that is a yielded
86
- a new model object to be created if an existing model object is
87
- not found.
88
-
89
- Node.find_or_create(:name=>'A'){|i| i.parent_id = 4}
90
-
91
- * The :frame option for windows and window functions can now be a
92
- string that is used literally in the SQL. This is necessary if you
93
- want to specify a custom frame, such as one that uses a specific
94
- number of rows preceding or following.
95
-
96
- * Savepoints are now supported on H2.
97
-
98
- * A :methods_module association option was added, allowing you to
99
- specify the module into which association instance methods are
100
- placed. By default, it uses the module containing the column
101
- accessor methods.
102
-
103
- = Other Improvements
104
-
105
- * The :encoding option for the native MySQL adapter should now work
106
- correctly in all cases. This fix was included in 3.12.1.
107
-
108
- * Sequel now handles arrays of two element arrays automatically when
109
- using them as the value of a filter hash:
110
-
111
- DB[a].filter([:a, :b]=>[[1, 2], [3, 4]])
112
-
113
- Previously, you had to call .sql_array on the array in order to
114
- tell Sequel that it was a value list and not a conditions
115
- specifier.
116
-
117
- * Sequel no longer attempts to use class polymorphism in the
118
- class_table_inheritance plugin if you don't specify a cti_key.
119
-
120
- * When using the native SQLite adapter, prepared statements are now
121
- cached per connection for increased performance. Previously,
122
- Sequel prepared a new statement for every query.
123
-
124
- * tinyint(1) columns are now handled as booleans when connecting to
125
- MySQL via JDBC.
126
-
127
- * On PostgreSQL, if no :schema option is provided for
128
- Database#tables, #table_exists?, or #schema, and no default_schema
129
- is used, assume all schemas except the default non-public ones.
130
- Previously, it assumed the public schema for tables and
131
- table_exists?, but did not assume any schema for #schema.
132
-
133
- This fixes issues if you use table names that overlap with table
134
- names in the information_schema, such as domains. It's still
135
- recommended that you specify a default_schema if you are using a
136
- schema other than public.
137
-
138
- * Unsigned integers are now handled correctly in the schema dumper.
139
-
140
- * Sequel::SQL::PlaceholderLiteralString is now a GenericExpression
141
- subclass, allowing you to treat it like most other Sequel
142
- expression objects:
143
-
144
- '(a || ?)'.lit(:b).like('Test%')
145
- # ((a || b) LIKE 'Test%')
146
-
147
- * Sequel now supports the bitwise shift operators (<< and >>) on
148
- Microsoft SQL Server by emulating them.
149
-
150
- * Sequel now supports most bitwise operators (&, |, ^, <<, >>) on H2
151
- by emulating them. The bitwise complement operator is not yet
152
- supported.
153
-
154
- * Sequel now logs the SQL queries that are sent when connecting to
155
- MySQL.
156
-
157
- * If a plugin cannot be loaded, Sequel now gives a more detailed
158
- error message.
159
-
160
- = Backwards Compatibility
161
-
162
- * Array#sql_array and the Sequel::SQL::SQLArray class are now
163
- considered deprecated. Use the Array#sql_value_list and the
164
- Sequel::SQL::ValueList class instead. SQLArray is now just
165
- an alias for ValueList, but it now is an Array subclass instead
166
- of a Sequel::SQL::Expression subclass.
167
-
168
- * Using the ruby bitwise xor operator (^) on PostgreSQL now uses
169
- PostgreSQL's bitwise xor operator (#) instead of PostgreSQL's
170
- exponentiation operator (^). If you want exponentiation, use
171
- the power function.
172
-
173
- * Using the ruby bitwise complement operator (~) on MySQL now returns
174
- a signed integer instead of an unsigned integer, for better
175
- compatibility with other databases.
176
-
177
- * Using nil as a case expression value (the 2nd argument to Hash#case
178
- and Array#case) will now use NULL as the case expression value,
179
- instead of omitting the case expression value:
180
-
181
- # 3.12.0
182
- {1=>2}.case(0, nil)
183
- # CASE WHEN 1 THEN 2 ELSE 0 END
184
-
185
- # 3.13.0
186
- {1=>2}.case(0, nil)
187
- # CASE NULL WHEN 1 THEN 2 ELSE 0 END
188
-
189
- In general, you would never use nil explicitly, but the new
190
- behavior makes more sense if you have a variable that might be nil:
191
-
192
- parent_id = Node[1].parent_id
193
- {1=>2}.case(0, parent_id)
194
-
195
- If parent_id IS NULL/nil, then previously Sequel would have
196
- generated unexpected SQL. If you don't want a case expression
197
- value to be used, do not pass a second argument to #case.
198
-
199
- * Some internal transaction methods now take an optional options
200
- hash, so if you have a custom adapter, you will need to make
201
- changes.
202
-
203
- * Some internal association methods now take an optional options
204
- hash.
205
-
206
- * Some Rakefile task names were modified in the name of consistency:
207
-
208
- spec_coverage -> spec_cov
209
- integration -> spec_integration
210
- integration_cov -> spec_integration_cov
@@ -1,118 +0,0 @@
1
- = New Features
2
-
3
- * Dataset#grep now accepts :all_patterns, :all_columns, and
4
- :case_insensitive options. Previously, grep would use a case
5
- sensitive search where it would match if any pattern matched any
6
- column. These three options give you more control over how the
7
- pattern matching will work:
8
-
9
- dataset.grep([:a, :b], %w'%test% foo')
10
- # WHERE ((a LIKE '%test%') OR (a LIKE 'foo')
11
- # OR (b LIKE '%test%') OR (b LIKE 'foo'))
12
-
13
- dataset.grep([:a, :b], %w'%foo% %bar%', :all_patterns=>true)
14
- # WHERE (((a LIKE '%foo%') OR (b LIKE '%foo%'))
15
- # AND ((a LIKE '%bar%') OR (b LIKE '%bar%')))
16
-
17
- dataset.grep([:a, :b], %w'%foo% %bar%', :all_columns=>true)
18
- # WHERE (((a LIKE '%foo%') OR (a LIKE '%bar%'))
19
- # AND ((b LIKE '%foo%') OR (b LIKE '%bar%')))
20
-
21
- dataset.grep([:a, :b], %w'%foo% %bar%',
22
- :all_patterns=>true,:all_columns=>true)
23
- # WHERE ((a LIKE '%foo%') AND (b LIKE '%foo%')
24
- # AND (a LIKE '%bar%') AND (b LIKE '%bar%'))
25
-
26
- dataset.grep([:a, :b], %w'%test% foo', :case_insensitive=>true)
27
- # WHERE ((a ILIKE '%test%') OR (a ILIKE 'foo')
28
- # OR (b ILIKE '%test%') OR (b ILIKE 'foo'))
29
-
30
- * When using the schema plugin, you can now provide a block to the
31
- create_table methods to set the schema and create the table
32
- in the same call:
33
-
34
- class Artist < Sequel::Model
35
- create_table do
36
- primary_key :id
37
- String :name
38
- end
39
- end
40
-
41
- * The tree plugin now accepts a :single_root option, which uses a
42
- before_save hook to attempt to ensure that there is only a single
43
- root in the tree. It also adds a Model.root method to get the
44
- single root of the tree.
45
-
46
- * The tree plugin now adds a Model#root? instance method to check
47
- if the current node is a root of the tree.
48
-
49
- * Model#save now takes a :raise_on_failure option which will
50
- override the object's raise_on_save_failure setting. This makes
51
- it easier to get the desired behavior (raise or just return false)
52
- in library code without using a begin/ensure block.
53
-
54
- * The Database#adapter_scheme instance method was added, which
55
- operates the same as the class method.
56
-
57
- * Sequel now handles the literalization of OCI8::CLOB objects in
58
- the Oracle adapter.
59
-
60
- = Other Improvements
61
-
62
- * When using the timezone support, Sequel will now correctly load
63
- times and datetimes in standard time when the current timezone is
64
- in daylight time, or vice versa. Previously, if you tried to
65
- to load a time or datetime in December when in July in a timezone
66
- that used daylight time, it would be off by an hour.
67
-
68
- * The rcte_tree plugin now works correctly when a :conditions option
69
- is used.
70
-
71
- * The single_table_inheritance plugin now works correctly when the
72
- class discriminator column has the same name as an existing ruby
73
- method (such as type).
74
-
75
- * Database#each_server now works correctly when a connection string
76
- is used to connect, instead of an options hash.
77
-
78
- * Model#destroy now respects the object's use_transactions setting,
79
- instead of always using a transaction.
80
-
81
- * Model#exists? now uses a simpler and faster query.
82
-
83
- * Sequel now handles the aggregate methods such as count and sum
84
- correctly on Microsoft SQL Server when using an ordered dataset
85
- with a clause such as DISTINCT or GROUP and without a limit.
86
-
87
- * Sequel now handles rename_table correctly on Microsoft SQL Server
88
- when using a case sensitive collation, or when qualifying the
89
- table with a schema.
90
-
91
- * Sequel now parses the schema correctly on Oracle when the same
92
- table name is used in multiple schemas.
93
-
94
- * Sequel now handles OCIInvalidHandle errors when disconnecting
95
- in the Oracle adapter.
96
-
97
- * Sequel now raises a Sequel::Error instead of an ArgumentError
98
- if the current or target migration version does not exist.
99
-
100
- * When a mismatched number of composite keys are used in
101
- associations, Sequel now uses a more detailed error message.
102
-
103
- * Significant improvements were made to the Dataset and Model
104
- RDoc documentation.
105
-
106
- = Backwards Compatibility
107
-
108
- * Model#valid? now must accept an optional options hash.
109
-
110
- * The Model#save_failure private method was renamed to
111
- raise_hook_failure.
112
-
113
- * The LOCAL_DATETIME_OFFSET_SECS and LOCAL_DATETIME_OFFSET constants
114
- have been removed from the Sequel module.
115
-
116
- * Sequel now uses obj.to_json instead of JSON.generate(obj). This
117
- shouldn't affect backwards compatibility, but did fix a bug in
118
- certain cases.