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,237 +0,0 @@
1
- = New Features
2
-
3
- * A constraint_validations extension and plugin have been added,
4
- which allow you to define validations when creating tables,
5
- which are enforced by database constraints, and have those
6
- validations be automatically discovered and used by your
7
- Sequel::Model classes.
8
-
9
- The extension is designed to be used in your migrations/schema
10
- modification code:
11
-
12
- DB.extension(:constraint_validations)
13
- DB.create_constraint_validations_table
14
- DB.create_table(:foos) do
15
- primary_key :id
16
- String :name
17
-
18
- validate do
19
- min_length 5, :name
20
- end
21
- end
22
-
23
- This creates a database CHECK constraint that ensures that the
24
- minimum length for the column is 5 characters. It also adds
25
- metadata about the validation to the
26
- sequel_constraint_validations table.
27
-
28
- To have the model class automatically create validations, just
29
- include the plugin in the model:
30
-
31
- class Foo < Sequel::Model
32
- plugin :constraint_validations
33
- end
34
-
35
- Note that MySQL does not enforce CHECK constraints (it parses
36
- but ignores them), so using the extension on MySQL does not
37
- actually enforce constraints at the database level, though it
38
- still does support the automatic model validations if the plugin
39
- is used.
40
-
41
- * Dataset#count now takes an argument or a virtual row block,
42
- allowing you to do:
43
-
44
- DB[:table].count(:column_name)
45
- DB[:table].count{function_name(column1, column2)}
46
-
47
- When count is given an argument, instead of returning the total
48
- number of rows, it returns the number of rows where the
49
- argument has a non-NULL value.
50
-
51
- * Database#copy_into has been added to the postgres adapter when
52
- the pg driver is being used, and can be used for very fast
53
- inserts into tables if you already have the input preformatted
54
- in PostgreSQL text or CSV format.
55
-
56
- * set_table_not_null has been added to the alter table generator,
57
- for a nicer API:
58
-
59
- alter_table(:t){set_column_not_null :col}
60
- # instead of
61
- alter_table(:t){set_column_allow_null :col, false}
62
-
63
- Additionally, set_column_allow_null now defaults the second
64
- argument to true for a nicer API:
65
-
66
- alter_table(:t){set_column_allow_null :col}
67
- # instead of
68
- alter_table(:t){set_column_allow_null :col, true}
69
-
70
- * Database#supports_regexp? has been added for checking if the
71
- database supports Regexp in filters. Currently, only MySQL and
72
- PostgreSQL support Regexps.
73
-
74
- Attempting to use a Regexp on a database that doesn't support it
75
- now raises an error when attempting to generate the SQL, instead
76
- of sending invalid SQL to the database.
77
-
78
- * Sequel.char_length has been added for a cross platform
79
- char_length function (emulated when char_length is not supported
80
- natively by the database).
81
-
82
- * Sequel.trim has been added for a cross platform trim function
83
- (emulated when trim is not supported natively by the database).
84
-
85
- * ValidationFailed and HookFailed exceptions now have a model method
86
- that returns the model instance related to the exception. This
87
- makes it possible to use Model.create inside a begin/rescue block
88
- and get access to the underlying instance if there is a validation
89
- or before/around hook error.
90
-
91
- * The subclasses plugin now accepts a block, which is called with
92
- each model class created. This is useful if you want to apply
93
- changes to classes created in the future instead of just existing
94
- classes.
95
-
96
- * The validates_unique validation in the validation_helpers plugin
97
- now accepts a :where option for a custom uniqueness filter. Among
98
- other things this makes it easy to implement a case insensitive
99
- uniqueness validation on a case sensitive column.
100
-
101
- * The threaded connection pools now support a
102
- :connection_handling=>:disconnect option, which makes them disconnect
103
- connections after use instead of returning them to the pool. This
104
- makes it possible to completely control connection lifetime using
105
- Database#synchronize.
106
-
107
- * The pg_row_op extension now has support for PGRowOp#*, for referencing
108
- the members of the composite type as separate columns.
109
-
110
- * MySQL's set type and default value are now recognized.
111
-
112
- * bin/sequel now accepts a -c argument for running an arbitrary
113
- code string instead of using an IRB prompt.
114
-
115
- = Other Improvements
116
-
117
- * Sequel now parses current date/timestamp column defaults when
118
- parsing the schema for a table. The values will be returned
119
- as Sequel::CURRENT_DATE for date columns and
120
- Sequel::CURRENT_TIMESTAMP for timestamp columns.
121
-
122
- The schema_dumper extension will work with these defaults, so
123
- if you dump the schema for a table with a column that uses
124
- a current timestamp default, the dumped schema will include
125
- the default.
126
-
127
- The defaults setter plugin also works with these changes, so
128
- that when new model objects are instantiated, they get the
129
- current Date/Time/DateTime values set.
130
-
131
- * On MySQL and PostgreSQL, Sequel will now by default attempt
132
- to combine multiple alter_table operations into a single
133
- query where it believes it can do so correctly. This can
134
- potentially improve performance ~N times, where N is the number
135
- of alter table operations.
136
-
137
- This can change the SQL used for old migrations (though it
138
- shouldn't change the result), and is a potentially risky
139
- change. This may be disabled by default in future versions
140
- if it causes problems.
141
-
142
- * The defaults_setter plugin now correctly sets false default
143
- values.
144
-
145
- * The schema_dumper plugin now preserves fractional seconds
146
- in timestamp column defaults when dumping.
147
-
148
- * Time->DateTime and DateTime->Time typecasts now retain
149
- fractional seconds on ruby 1.8.
150
-
151
- * Array arguments passed to most PGArrayOp methods are now
152
- automatically wrapped in a PGArray. If you want to use this
153
- support, you need to make sure to load both the pg_array
154
- and pg_array_op extensions.
155
-
156
- * Sequel now does a better job of finding the sequence for a
157
- given table on PostgreSQL, handling more corner cases. A small
158
- side effect of this is sometimes sequence names will be quoted.
159
-
160
- * Some potential thread-safety issues when using Sequel with
161
- PostgreSQL on a non-GVL ruby implementation have been fixed.
162
-
163
- * Sequel now correctly caches the server version query on MySQL.
164
-
165
- * Sets of alter_table operations on MySQL and Microsoft SQL Server
166
- that require parsing the current database schema, where later
167
- alter_table operations depend on earlier ones, should now work
168
- correctly.
169
-
170
- * You can now drop check constraints on tables on SQLite, though
171
- doing so drops all check constraints on the table, not only the
172
- specific check constraint given.
173
-
174
- * The identity_map plugin no longer breaks if used with a model
175
- without a primary key.
176
-
177
- * Sequel::SQL::NegativeBooleanConstant now inherits from Constant
178
- instead of BooleanConstant. This means that
179
-
180
- Sequel::NULL == Sequel::NOTNULL
181
-
182
- is now false instead of true.
183
-
184
- * You can now override the convert_tinyint_to_bool settings on a
185
- per-Dataset basis in the mysql and mysql2 adapters, though
186
- the overriding is different depending on the adapter. Check the
187
- commit log for details.
188
-
189
- * timestamp(N) types are now recognized as datetime, which should
190
- fix certain cases on Oracle.
191
-
192
- * Dataset#insert now handles a single model instance argument
193
- as a single value if the model uses the pg_row plugin.
194
-
195
- * When joining a model dataset using a model class as the table
196
- argument, a subselect is used unless the model is a simple select
197
- from the underlying table.
198
-
199
- * The specs now cleanup after themselves, dropping the tables that
200
- they create for testing.
201
-
202
- = Backwards Compatibility
203
-
204
- * The defaults_setter plugin's behavior changed due to the
205
- current date/timestamp support. Previously, it would not set
206
- a value for the column, since the default wasn't recognized.
207
- Therefore, the database would use the default value on insert,
208
- which would be the database's current timestamp.
209
-
210
- Now, the value is set to the current Date/Time/DateTime on
211
- model object instantiation, so the database wouldn't use the
212
- column default. Instead of the database's current timestamp
213
- on insert, the column value will be the application's
214
- current timestamp on model instantiation.
215
-
216
- Users who don't want this behavior can remove the default values
217
- in the model:
218
-
219
- Model.default_values.delete(:column_name)
220
-
221
- * Plain (non-model) datasets no longer allow insert to accept
222
- a single model instance argument. Also, they no longer call
223
- values on a single argument if the object responds to it.
224
-
225
- * Plain (non-model) datasets no longer accept model classes as
226
- tables in the join/graph methods. Also, they no longer call
227
- table_name on the argument if the object responds to it.
228
-
229
- * The schema_dumper extension now requires the eval_inspect
230
- extension, which changes inspect output for
231
- Sequel::SQL::Expression objects.
232
-
233
- * Custom adapters that override Database#alter_table_sql_list now
234
- need to make sure it returns an already flattened array.
235
-
236
- * The identity_map_key method in the identity_map plugin now returns
237
- nil instead of a random string if the given pk is nil.
@@ -1,325 +0,0 @@
1
- New Plugins
2
- -----------
3
-
4
- * A nested_attributes plugin was added allowing you to modify
5
- associated objects directly through a model object, similar to
6
- ActiveRecord's Nested Attributes.
7
-
8
- Artist.plugin :nested_attributes
9
- Artist.one_to_many :albums
10
- Artist.nested_attributes :albums
11
- a = Artist.new(:name=>'YJM',
12
- :albums_attributes=>[{:name=>'RF'}, {:name=>'MO'}])
13
- # No database activity yet
14
-
15
- a.save # Saves artist and both albums
16
- a.albums.map{|x| x.name} # ['RF', 'MO']
17
-
18
- It takes most of the same options as ActiveRecord, as well as a
19
- a few additional options:
20
-
21
- * :destroy - Allow destruction of nested records.
22
- * :limit - For *_to_many associations, a limit on the number of
23
- records that will be processed, to prevent denial of service
24
- attacks.
25
- * :remove - Allow disassociation of nested records (can remove the
26
- associated object from the parent object, but not destroy the
27
- associated object).
28
- * :strict - Set to false to not raise an error message if a primary
29
- key is provided in a record, but it doesn't match an existing
30
- associated object.
31
-
32
- If a block is provided, it is passed each nested attribute hash.
33
- If the hash should be ignored, the block should return anything
34
- except false or nil.
35
-
36
- * A timestamps plugin was added for automatically adding
37
- before_create and before_update hooks for setting values on
38
- timestamp columns. There are a couple of existing external
39
- plugins that handle timestamps, but the implementations are
40
- suboptimal. The new built-in plugin supports the following
41
- options (with the default in parentheses):
42
-
43
- * :create - The field to hold the create timestamp (:created_at)
44
- * :force - Whether to overwrite an existing create timestamp
45
- (false)
46
- * :update - The field to hold the update timestamp (:updated_at)
47
- * :update_on_create - Whether to set the update timestamp to the
48
- create timestamp when creating (false)
49
-
50
- * An instance_hooks plugin was added for adding hooks to specific
51
- w
52
- model instances:
53
-
54
- obj = Model.new
55
- obj.after_save_hook{do_something}
56
- obj.save # calls do_something after the obj has been saved
57
-
58
- All of the standard hooks are supported, except for
59
- after_initialize. Instance level before hooks are executed in
60
- reverse order of addition before calling super. Instance level
61
- after hooks are executed in order of addition after calling super.
62
- If any of the instance level before hook blocks return false, no
63
- more instance level before hooks are called and false is returned.
64
-
65
- Instance level hooks are cleared when the object is saved
66
- successfully.
67
-
68
- * A boolean_readers plugin was added for creating attribute? methods
69
- for boolean columns. This can provide a nicer API:
70
-
71
- obj = Model[1]
72
- obj.active # Sequel default column reader
73
- obj.active? # Using the boolean_readers plugin
74
-
75
- You can provide a block when loading the plugin to change the
76
- criteria used to determine if the column is boolean:
77
-
78
- Sequel::Model.plugin(:boolean_readers) do |c|
79
- db_schema[c][:db_type] =~ /\Atinyint/
80
- end
81
-
82
- This may be useful if you are using MySQL and have some tinyint
83
- columns that represent booleans and others that represent integers.
84
- You can turn the convert_tinyint_to_bool setting off and use the
85
- attribute methods for the integer value and the attribute? methods
86
- for the boolean value.
87
-
88
- Other New Features
89
- ------------------
90
-
91
- * Sequel now has support for converting Time/DateTime to local or UTC
92
- time upon storage, retrieval, or typecasting.
93
-
94
- There are three different timezone settings:
95
-
96
- * Sequel.database_timezone - The timezone that timestamps use in
97
- the database. If the database returns a time without an offset,
98
- it is assumed to be in this timezone.
99
-
100
- * Sequel.typecast_timezone - Similar to database_timezone, but used
101
- for typecasting data from a source other than the database. This
102
- is currently only used by the model typecasting code.
103
-
104
- * Sequel.application_timezone - The timezone that the application
105
- wants to deal with. All Time/DateTime objects are converted into
106
- this timezone upon retrieval from the database.
107
-
108
- Unlike most things in Sequel, these are only global settings, you
109
- cannot change them per database. There are only three valid
110
- timezone settings:
111
-
112
- * nil (the default) - Don't do any timezone conversion. This is
113
- the historical behavior.
114
-
115
- * :local - Convert to local time/Consider time to be in local time.
116
-
117
- * :utc - Convert to UTC/Consider time to be in UTC.
118
-
119
- So if you want to store times in the database as UTC, but deal with
120
- them in local time in the application:
121
-
122
- Sequel.application_timezone = :local
123
- Sequel.database_timezone = :utc
124
-
125
- If you want to set all three timezones to the same value:
126
-
127
- Sequel.default_timezone = :utc
128
-
129
- There are three conversion methods that are called:
130
-
131
- * Sequel.database_to_application_timestamp - Called on time objects
132
- coming out of the database. If the object coming out of the
133
- database (usually a string) does not have an offset, assume it is
134
- already in the database_timezone. Return a Time/DateTime object
135
- (depending on Sequel.datetime_class), in the application_timzone.
136
-
137
- * Sequel.application_to_database_timestamp - Used when literalizing
138
- Time/DateTime objects into an SQL string. Converts the object to
139
- the database_timezone before literalizing them.
140
-
141
- * Sequel.typecast_to_application_timestamp - Called when
142
- typecasting objects for model datetime columns. If the object
143
- being typecasted does not already have an offset, assume it is
144
- already in the typecast_timezone. Return a Time/DateTime object
145
- (depending on Sequel.datetime_class), in the
146
- application_timezone.
147
-
148
- Sequel does not yet support named timezones or per thread
149
- modification of the timezone (for showing all timestamps in the
150
- current user's timezone). Extensions to support both features are
151
- planned for a future version.
152
-
153
- * Dataset#truncate was added for truncating tables. Truncate allows
154
- for fast removal of all rows in a table.
155
-
156
- * Sequel now supports typecasting a hash to date, time, and datetime
157
- types. This allows easy usage of Sequel with forms that split
158
- the entry of these database types into separate from fields.
159
- With this code, you can just have field names like:
160
-
161
- date[year]
162
- date[month]
163
- date[day]
164
-
165
- Rack will parse that into:
166
-
167
- {'date'=>{'year'=>?, 'month'=>?, 'day'=>?}}
168
-
169
- So then you can do:
170
-
171
- obj.date = params['date']
172
- # or
173
- obj.set(params)
174
-
175
- * validates_unique now takes a block that can be used to scope the
176
- uniqueness constraint. This allows you to easily set up uniqueness
177
- validations that are only necessary in a given scope. For example,
178
- a validation on username, but only for active users (as inactive
179
- users are soft deleted but remain in the table). You just pass a
180
- block to validates_unique:
181
-
182
- validates_unique(:name){|ds| ds.filter(:active)}
183
-
184
- * The serialization plugin now supports json.
185
-
186
- * Sequel now supports generic concepts of
187
- CURRENT_{DATE,TIME,TIMESTAMP}. Most databases support these SQL
188
- concepts, but not all, and some implementations act differently.
189
-
190
- The Sequel::SQL::Constants module holds the three constants,
191
- which are instances of SQL::Constant, an SQL::GenericExpression
192
- subclass. This module is included in Sequel, so you can reference
193
- the constants more easily (e.g. Sequel::CURRENT_TIMESTAMP).
194
- It's separated out into a separate module so that you can just
195
- include that module in the top level scope, allowing you to
196
- reference the constants directly (e.g. CURRENT_TIMESTAMP).
197
-
198
- DB[:events].filter{date < ::Sequel::CURRENT_DATE}
199
- # or:
200
- include Sequel::SQL::Constants
201
- DB[:events].filter{date < ::CURRENT_DATE}
202
-
203
- * Database#run was added for executing arbitrary SQL on a database.
204
- It's an alias for Database#<<, but it allows for a nicer API inside
205
- migrations, since you can now do:
206
-
207
- run 'SQL'
208
-
209
- instead of:
210
-
211
- self << 'SQL'
212
-
213
- You can also provide a :server option to run the SQL on the
214
- given server/shard:
215
-
216
- run 'SQL', :server=>:shard1
217
-
218
- * Sequel::Model() can now take a database argument in addition to
219
- a symbol or dataset argument. If a database is given, it'll create
220
- an anonymous subclass attached to the given database. Other changes
221
- were made to allow the following code to work:
222
-
223
- class Item < Sequel::Model(DB2)
224
- end
225
-
226
- That will work correctly assuming a table named items in DB2.
227
-
228
- * Dataset#ungrouped was added for removing a grouping from an
229
- existing dataset. Also, Dataset#group when called with no arguments
230
- or with a nil argument also removes any existing grouping instead
231
- of resulting in invalid SQL.
232
-
233
- * Model#modified? was added, letting you know if the model has been
234
- modified. If the model hasn't been modified, calling
235
- Model#save_changes will do nothing.
236
-
237
- * SQL::OrderedExpression now supports #asc, #desc, and #invert.
238
-
239
- Other Improvements
240
- ------------------
241
-
242
- * The serialization and lazy_attribute plugins now add accessor
243
- methods to a module included in the class, instead of to the
244
- model class itself. This allows the methods to be overridden
245
- in the class and work well with super, as well for the plugins
246
- to work together on the same column. Make sure the
247
- lazy_attributes accessor is setup before the serialization
248
- accessor if you want to have a lazy serialized column.
249
-
250
- * Calling the add_* method for many_to_many association now saves the
251
- record if the record is new. This makes it operate more similarly
252
- to one_to_many associations. Previously, it raised an Error.
253
-
254
- * Dataset#import now works correctly when called with a dataset.
255
- Previously, it generated incorrect SQL.
256
-
257
- * The JDBC adapter now converts byte arrays to/from SQL::Blob.
258
-
259
- * The JDBC adapter now attempts to bind unknown types using
260
- setObject instead of raising, so it can work with native Java
261
- objects. It also binds boolean parameters correctly.
262
-
263
- * Using multiple emulated ALTER TABLE statements (such as
264
- drop_column) in a single alter_table block now works correctly
265
- on SQLite.
266
-
267
- * Database#indexes now works on JDBC for tables in a non-default
268
- schema. It also now properly detects unique indexes on MSSQL.
269
-
270
- * Database#schema on JDBC now accepts a :schema option. Also,
271
- returned schema hashes now include a :column_size entry specifying
272
- the maximum length/precision for the column, since the
273
- :db_type entry doesn't have contain the information on JDBC.
274
-
275
- * Datasets without tables now work correctly on Oracle, so things
276
- like DB.get(...) now work.
277
-
278
- * A descriptive error message is given if you attempt to use
279
- Sequel with the mysql.rb driver (which Sequel doesn't support).
280
-
281
- * The postgres adapter now works correctly with a modified
282
- postgres-pr that raises PGErrors instead of RuntimeErrors
283
- (e.g. http://github.com/jeremyevans/postgres-pr).
284
-
285
- * You now get a Sequel::InvalidOperation instead of a NoMethodError
286
- if you attempt to update a dataset without a table.
287
-
288
- * The inflection support has been modified to reduce code
289
- duplication.
290
-
291
- Backwards Compatibility
292
- -----------------------
293
-
294
- * Sequel now includes fractional seconds in timestamps for all
295
- adapters except MySQL. It's possible that this may break
296
- timestamp columns for databases that are not regularly tested.
297
-
298
- * Sequel now includes timezone values in timestamps on Microsoft
299
- SQL Server, Oracle, PostgreSQL and SQLite. The modification for
300
- SQLite is probably the biggest cause for concern, since SQLite
301
- stores times as text. If you have an SQLite database that uses
302
- timestamps and is accessed by something other than Sequel, you
303
- should make sure that it works with the timestamp format that
304
- Sequel now uses.
305
-
306
- * The default timestamp format used by Sequel now uses a space
307
- instead of 'T' between the date and time parts, which could
308
- possibly affect some databases that are not regularly tested.
309
-
310
- * Attempting to insert into a grouped dataset or a dataset that
311
- selects from multiple tables will now raise an Error. Previously,
312
- it would ignore any GROUP or JOIN settings and generate bad SQL if
313
- there were multiple FROM tables.
314
-
315
- * Database#<< now always returns nil. Before, the return value was
316
- adapter dependent.
317
-
318
- * ODBC::Time and ODBC::DateTime values are now converted to the
319
- Sequel.datetime_class. Before, ODBC::Time used Time and
320
- ODBC::DateTime used DateTime regardless of the
321
- Sequel.datetime_class setting.
322
-
323
- * The default inflections were modified, fixing some obvious errors
324
- and possibly changing some existing inflections. Further changes
325
- to the default inflections are unlikely.
@@ -1,73 +0,0 @@
1
- = New Features
2
-
3
- * Sequel now has vastly improved support for Microsoft Access.
4
-
5
- * Sequel now supports the CUBRID database, with a cubrid adapter
6
- that uses the cubrid gem, and a jdbc/cubrid adapter for accessing
7
- CUBRID via JDBC on JRuby.
8
-
9
- * The association_pks plugin now supports composite keys.
10
-
11
- * Database#transaction now accepts a :disconnect=>:retry option,
12
- in which case it will automatically retry the block if it
13
- detects a disconnection. This is potentially dangerous, and
14
- should only be used if the entire block is idempotent. There
15
- is also no checking against an infinite retry loop.
16
-
17
- * SQL::CaseExpression#with_merged_expression has been added, for
18
- converting a CaseExpression with an associated expression to
19
- one without an associated expression, by merging the expression
20
- into each condition.
21
-
22
- = Other Improvements
23
-
24
- * Sequel now quotes arguments/columns in common table expressions.
25
-
26
- * Sequel now handles nil values correctly in the pg_row extension.
27
-
28
- * Sequel::Postgres::HStore instances can now be marshalled.
29
-
30
- * Sequel now uses clob for String :text=>true types on databases that
31
- don't support a text type.
32
-
33
- * On PostgreSQL, Sequel now quotes channel identifier names when using
34
- LISTEN/NOTIFY.
35
-
36
- * On PostgreSQL, Sequel now correctly handles the case where named
37
- type conversion procs have been added before the Database object is
38
- instantiated.
39
-
40
- * On DB2, Sequel now explicitly sets NOT NULL for unique constraint
41
- columns instead of foreign key columns. DB2 does not allow columns
42
- in unique constraints to be NULL, but does allow foreign key columns
43
- to be NULL.
44
-
45
- * In the oracle adapter, clob values are now returned as ruby strings
46
- upon retrieval.
47
-
48
- * Sequel now detects more types of disconnections in the postgres,
49
- mysql, and mysql2 adapters.
50
-
51
- * If a database provides a default column value that isn't a ruby
52
- string, it is used directly as the ruby default, instead of causing
53
- the schema parsing to fail.
54
-
55
- = Backwards Compatibility
56
-
57
- * Code using Sequel's oracle adapter that expected clob values to be
58
- returned as OCI8::CLOB instances needs to be modified to work with
59
- ruby strings.
60
-
61
- * Because Sequel now quotes column names in common table expressions,
62
- those names are now case sensitive, which could break certain poorly
63
- coded queries. Similar issues exist with the quoting of channel
64
- identifier names in LISTEN/NOTIFY on PostgreSQL.
65
-
66
- * The private Database#requires_return_generated_keys? method
67
- has been removed from the jdbc adapter. Custom jdbc subadapters
68
- relying on this method should override the private
69
- Database#execute_statement_insert method instead to ensure that
70
- RETURN_GENERATED_KEYS is used for insert statements.
71
-
72
- * The private Dataset#argument_list and #argument_list_append methods
73
- have been removed.