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,78 +0,0 @@
1
- = Performance Enhancements
2
-
3
- * A mysql2 adapter was added to Sequel. It offers a large (2-6x)
4
- performance increase over the standard mysql adapter. In order to
5
- use it, you need to install mysql2, and change your connection
6
- strings to use mysql2:// instead of mysql://.
7
-
8
- * Support for sequel_pg was added to the native postgres adapter,
9
- when pg is being used as the backend. sequel_pg also offers a
10
- large (2-6x) performance increase over the default row fetching
11
- code that the Sequel postgres adapter uses. In order to use it,
12
- you just need to install sequel_pg, and the postgres adapter will
13
- pick it up automatically.
14
-
15
- * Mass assignment has been made about 10x faster by caching the
16
- allowed setter methods in the model.
17
-
18
- = Other Improvements
19
-
20
- * The following construct is now safe to use in environments that
21
- reload code without unloading existing constants:
22
-
23
- class MyModel < Sequel::Model(DB[:table])
24
- end
25
-
26
- Previously, this would raise a superclass mismatch TypeError.
27
-
28
- * Sequel now handles the case where both an implicit and an explicit
29
- table alias are given to join_table, preferring the explicit alias.
30
- This can happen if you are using models with aliased table names
31
- and eager graphing them. Previously, this would result in invalid
32
- SQL, with both aliases being used.
33
-
34
- * You can use use an aliased table for the :join_table option
35
- of a many_to_many association.
36
-
37
- * The active_model plugin now supports the final release of
38
- ActiveModel 3.0.0.
39
-
40
- * Typecasting now works correctly for attributes loaded lazily
41
- when using the lazy_attributes plugin.
42
-
43
- * The class_table_inheritance plugin now works with non-integer
44
- primary keys on SQLite.
45
-
46
- * Temporary tables are now ignored when parsing the schema on
47
- PostgreSQL.
48
-
49
- * On MySQL, an :auto_increment key with a true value is added to
50
- the Database#schema output hash if the related column is
51
- auto incrementing.
52
-
53
- * The mysql adapter now handles Mysql::Error exceptions raised when
54
- disconnecting.
55
-
56
- * On SQLite, emulated alter_table commands that require dropping
57
- the table now preserve the foreign key information, if SQLite
58
- foreign key support is enabled (it is by default).
59
-
60
- * DSN-less connections now work correctly in more cases in the
61
- ODBC adapter.
62
-
63
- * A workaround has been added for a bug in the Microsoft SQL
64
- Server JDBC Driver 3.0, involving it incorrectly returning a
65
- smallint instead of a char type for the IS_AUTOINCREMENT
66
- metadata value.
67
-
68
- * An bug in the error handling when connecting to PostgreSQL using
69
- the do (DataObjects) adapter has been fixed.
70
-
71
- = Backwards Compatibility
72
-
73
- * The caching of allowed mass assignment methods can result in the
74
- incorrect exception class being raised if you manually undefine
75
- instance setter methods in the model class. If you do this, you
76
- need to clear the setter methods cache manually:
77
-
78
- MyModel.clear_setter_methods_cache
@@ -1,45 +0,0 @@
1
- = New Adapter
2
-
3
- * A swift adapter was added to Sequel. Swift is a relatively new
4
- ruby database library, built on top of a relatively new backend
5
- called dbic++. While not yet considered production ready, it is
6
- very fast. The swift adapter is about 33% faster and 40% more
7
- memory efficient for selects than the postgres adapter using pg
8
- with sequel_pg, though it is slower and less memory efficient
9
- for inserts and updates.
10
-
11
- Sequel's swift adapter currently supports only PostgreSQL and
12
- MySQL, but support for other databases will probably be added in
13
- the future.
14
-
15
- = Other Improvements
16
-
17
- * Sequel now correctly literalizes DateTime objects on ruby 1.9 for
18
- databases that support fractional seconds.
19
-
20
- * The identity_map plugin now handles composite keys in many_to_one
21
- associations.
22
-
23
- * The rcte_tree plugin now works when the model's dataset does not
24
- select all columns. This can happen when using the lazy_attributes
25
- plugin on the same model.
26
-
27
- * Sequel now supports INTERSECT and EXCEPT on Microsoft SQL Server
28
- 2005+.
29
-
30
- * The Database#create_language method in the shared PostgreSQL
31
- adapter now accepts a :replace option to replace the currently
32
- loaded procedural language if it already exists. This option
33
- is ignored for PostgreSQL versions before 9.0.
34
-
35
- * The identity_map plugin now handles cases where the plugin is
36
- loaded separately by two different models.
37
-
38
- = Backwards Compatibility
39
-
40
- * While not technically backwards compatibility related, it was
41
- discovered that the identity_map plugin is incompatible with
42
- the standard eager loading of many_to_many and many_through_many
43
- associations. If you want to eagerly load those associations and
44
- use the identity_map plugin, you should use eager_graph instead
45
- of eager.
@@ -1,58 +0,0 @@
1
- = New Features
2
-
3
- * You can now change the level at which Sequel logs SQL statements,
4
- by calling Database#sql_log_level= with the method name symbol.
5
- The default is still :info for backwards compatibility. Previously,
6
- you had to use a proxy logger to get similar capability.
7
-
8
- * You can now specify graph aliases where the alias would be the same
9
- as the table column name using just the table name symbol, instead
10
- having to repeat the alias as the second element of an array. More
11
- clearly:
12
-
13
- # < 3.17.0:
14
- DB[:a].graph(:b, :a_id=>:id).
15
- set_graph_aliases(:c=>[:a, :c], :d=>[:b, :d])
16
- # >= 3.17.0:
17
- DB[:a].graph(:b, :a_id=>:id).set_graph_aliases(:c=>:a, :d=>:b)
18
-
19
- Both of these now yield the SQL:
20
-
21
- SELECT a.c, b.d FROM a LEFT OUTER JOIN b ON (b.a_id = a.id)
22
-
23
- * You should now be able to connect to MySQL over SSL in the native
24
- MySQL adapter using the :sslca, :sslkey, and related options.
25
-
26
- * Database#views and Database#view_exists? methods were added to the
27
- Oracle adapter, allowing you to get a an array of view name symbols
28
- and to check whether a given view exists.
29
-
30
- = Other Improvements
31
-
32
- * The nested_attributes plugin now avoids unnecessary update calls
33
- when deleting associated objects, resulting in better performance.
34
-
35
- * The optimistic_locking plugin now increments the lock column if no
36
- other columns were modified but the Model#modified! was called. This
37
- means it now works correctly with the nested_attributes plugin when
38
- no changes to the main model object are made.
39
-
40
- * The xml_serializer plugin can now round-trip nil values correctly.
41
- Previously, nil values would be converted into empty strings. This
42
- is accomplished by including a nil attribute in the xml tag.
43
-
44
- * Database#each_server now works correctly when using the jdbc and do
45
- adapters and a connection string without a separate :adapter option.
46
-
47
- * You can now clone many_through_many associations.
48
-
49
- * The default wait_timeout used by the mysql and mysql2 adapters was
50
- decreased slightly so that it works correctly with MySQL database
51
- servers that run on Windows.
52
-
53
- * Many improvements were made to the AS400 jdbc subadapter.
54
-
55
- * Many improvements were made to the swift adapter and subadapters.
56
-
57
- * Dataset#ungraphed now removes any cached graph aliases set with
58
- set_graph_aliases or add_graph_aliases.
@@ -1,120 +0,0 @@
1
- = New Features
2
-
3
- * Reversible migration support has been added:
4
-
5
- Sequel.migration do
6
- change do
7
- create_table(:artists) do
8
- primary_key :id
9
- String :name, :null=>false
10
- end
11
- end
12
- end
13
-
14
- The change block acts the same way as an up block, except that
15
- it automatically creates a down block that reverses the changes.
16
- So the above is equivalent to:
17
-
18
- Sequel.migration do
19
- up do
20
- create_table(:artists) do
21
- primary_key :id
22
- String :name, :null=>false
23
- end
24
- end
25
- down do
26
- drop_table :artists
27
- end
28
- end
29
-
30
- The following methods are supported in a change block:
31
-
32
- * create_table
33
- * add_column
34
- * add_index
35
- * rename_column
36
- * rename_table
37
- * alter_table (supporting the following methods):
38
- * add_column
39
- * add_constraint
40
- * add_foreign_key (with a symbol, not an array)
41
- * add_primary_key (with a symbol, not an array)
42
- * add_index
43
- * add_full_text_index
44
- * add_spatial_index
45
- * rename_column
46
-
47
- Use of an other method in a change block will result in the
48
- creation of a down block that raises an exception.
49
-
50
- * A to_dot extension has been added that adds a Dataset#to_dot
51
- method, which returns a string that can be used as input to
52
- the graphviz dot program in order to create visualizations
53
- of the dataset's abstract syntax tree. Examples:
54
-
55
- * http://sequel.jeremyevans.net/images/to_dot_simple.gif
56
- * http://sequel.jeremyevans.net/images/to_dot_complex.gif
57
-
58
- Both the to_dot extension and reversible migrations support
59
- were inspired by Aaron Patterson's recent work on ActiveRecord
60
- and ARel.
61
-
62
- * The user can now control how the connection pool handles attempts
63
- to access shards that haven't been configured. The default is
64
- still to assume the :default shard. However, you can specify a
65
- different shard using the :servers_hash option when connecting
66
- to the database:
67
-
68
- DB = Sequel.connect(..., :servers_hash=>Hash.new(:some_shard))
69
-
70
- You can also use this feature to raise an exception if an
71
- unconfigured shard is used:
72
-
73
- DB = Sequel.connect(..., :servers_hash=>Hash.new{raise ...})
74
-
75
- * The mysql and mysql2 adapters now both support the :read_timeout
76
- and :connect_timeout options. read_timeout is the timeout in
77
- seconds for reading back results of a query, and connect_timeout
78
- is the timeout in seconds before a connection attempt is abandoned.
79
-
80
- = Other Improvements
81
-
82
- * The json_serializer plugin will now typecast column values for
83
- columns with unrestricted setter methods when parsing JSON into
84
- model objects. It now also calls the getter method when creating
85
- the JSON, instead of directly taking the values from the underlying
86
- hash.
87
-
88
- * When parsing the schema for a model with an aliased table name,
89
- the unaliased table name is now used.
90
-
91
- * The SQLite adapter has been updated to not rely on the native
92
- type_translation support, since that will be removed in the next
93
- major version of sqlite3-ruby. Sequel now implements it's own
94
- type translation in the sqlite adapter, similarly to how the mysql
95
- and postgres adapters handle type translation.
96
-
97
- * On SQLite, when emulating natively unsupported schema methods such
98
- as drop_column, Sequel will now attempt to recreate applicable
99
- indexes on the underlying table.
100
-
101
- * A more informative error message is now used when connecting fails
102
- when using the jdbc adapter.
103
-
104
- * method_missing is no longer removed from Sequel::BasicObject on
105
- ruby 1.8. This should improve compatibility in some cases with
106
- Rubinius.
107
-
108
- = Backwards Compatibility
109
-
110
- * On SQLite, Sequel no longer assumes that a plain integer in a
111
- datetime or timestamp field represents a unix epoch time.
112
-
113
- * Previously, saving a model object that used the instance_hooks
114
- plugin removed all instance hooks. Now, only the applicable hooks
115
- are removed. So if you save a new object, the update instance
116
- hooks won't be removed. And if you save an existing object, delete
117
- instance hooks won't be removed.
118
-
119
- * The private Dataset#identifier_list method has been moved into the
120
- SQLite adapter, since that is the only place it was used.
@@ -1,67 +0,0 @@
1
- = New Features
2
-
3
- * The add_* association methods now accept a primary key, and
4
- associates the receiver to the associated model object with that
5
- primary key:
6
-
7
- artist.add_album(42)
8
- # equivalent to: artist.add_album(Album[42])
9
-
10
- * The validation_class_methods plugin now has the ability to
11
- reflect on validations:
12
-
13
- Album.plugin :validation_class_methods
14
- Album.validates_acceptance_of(:a)
15
- Album.validation_reflections
16
- # => {:a=>[[:acceptance, {:tag=>:acceptance, :allow_nil=>true,
17
- :message=>"is not accepted", :accept=>"1"}]]}
18
-
19
- = Other Improvements
20
-
21
- * In the postgres, mysql, and sqlite adapters, typecasting now uses
22
- methods instead of procs. Since methods aren't closures (while
23
- procs are), this makes typecasting faster (up to 15%).
24
-
25
- * When typecasting model column values, the classes of the new and
26
- existing values are checked in addition to the values themselves.
27
- Previously, if the new and existing values were equal (i.e. 1.0
28
- and 1), it wouldn't update the value. Now, if the classes are
29
- different, it always updates the value.
30
-
31
- * Date and DateTime objects are now handled correctly when using
32
- prepared statements/bound variables in the jdbc adapter.
33
-
34
- * Date, DateTime, Time, true, false, and SQL::Blob objects are now
35
- handled correctly when using prepared statements/bound variables
36
- in the sqlite adapter.
37
-
38
- * Sequel now uses varbinary(max) instead of image for the generic
39
- File (blob) type on Microsoft SQL Server. This makes it possible
40
- to use an SQL::Blob object as a prepared statement argument.
41
-
42
- * Sequel now handles blobs better in the Amalgalite adapter.
43
-
44
- * When disconnecting a connection using the sqlite adapter, all
45
- open prepared statements are now closed first. Previously,
46
- attempting to disconnect a connection with open prepared statements
47
- resulted in an error.
48
-
49
- * The license file has been renamed from COPYING to MIT-LICENSE, to
50
- make it easier to determine at a glance which license is used.
51
-
52
- = Backwards Compatibility
53
-
54
- * Because Sequel switched the generic File type from image to
55
- varbinary(max) on Microsoft SQL Server, any migrations/schema
56
- modification methods that used the File type will now result in a
57
- different column type than before.
58
-
59
- * The MYSQL_TYPE_PROCS, PG_TYPE_PROCS, and SQLITE_TYPE_PROCS
60
- constants have been removed from the mysql, postgres, and sqlite
61
- adapters, respectively. The UNIX_EPOCH_TIME_FORMAT and
62
- FALSE_VALUES constants have also been removed from the sqlite
63
- adapter.
64
-
65
- * Typecasting in the sqlite adapters now uses to_i and to_f instead
66
- of Integer() and Float() with rescues. If you put non-numeric
67
- data in numeric columns on SQLite, this could cause problems.
@@ -1,268 +0,0 @@
1
- New Features
2
- ------------
3
-
4
- * Common table expressions (CTEs) are now supported. CTEs use the
5
- SQL WITH clause, and specify inline views that queries can use.
6
- They also support a recursive mode, where the CTE can recursively
7
- query its own output, allowing you do do things like load all
8
- branches for a given node in a plain tree structure.
9
-
10
- The standard with takes an alias and a dataset:
11
-
12
- DB[:vw].with(:vw, DB[:table].filter{col < 1})
13
- # WITH vw AS (SELECT * FROM table WHERE col < 1)
14
- # SELECT * FROM vw
15
-
16
- The recursive with takes an alias, a nonrecursive dataset, and a
17
- recursive dataset:
18
-
19
- DB[:vw].with_recursive(:vw,
20
- DB[:tree].filter(:id=>1),
21
- DB[:tree].join(:vw, :id=>:parent_id).
22
- select(:vw__id, :vw__parent_id))
23
- # WITH RECURSIVE vw AS (SELECT * FROM tree
24
- # WHERE (id = 1)
25
- # UNION ALL
26
- # SELECT vw.id, vw.parent_id
27
- # FROM tree
28
- # INNER JOIN vw ON (vw.id = tree.parent_id))
29
- # SELECT * FROM vw
30
-
31
- CTEs are supported by Microsoft SQL Server 2005+, DB2 7+,
32
- Firebird 2.1+, Oracle 9+, and PostgreSQL 8.4+.
33
-
34
- * SQL window functions are now supported, and a DSL has been added to
35
- ease their creation. Window functions act similarly to aggregate
36
- functions but operate on sliding ranges of rows.
37
-
38
- In virtual row blocks (blocks passed to filter, select, order, etc.)
39
- you can now provide a block to method calls to change the default
40
- behavior to create functions that weren't possible previously. The
41
- blocks aren't called, but their presence serves as a flag.
42
-
43
- What function is created depends on the arguments to the method:
44
-
45
- * If there are no arguments, an SQL::Function is created with the
46
- name of method used, and no arguments. Previously, it was not
47
- possible to create functions without arguments using the virtual
48
- row block DSL. Example:
49
-
50
- DB.dataset.select{version{}} # SELECT version()
51
-
52
- * If the first argument is :*, an SQL::Function is created with a
53
- single wildcard argument (*). This is mostly useful for count:
54
-
55
- DB[:t].select{count(:*){}} # SELECT count(*) FROM t
56
-
57
- * If the first argument is :distinct, an SQL::Function is created
58
- with the keyword DISTINCT prefacing all remaining arguments. This
59
- is useful for aggregate functions such as count:
60
-
61
- DB[:t].select{count(:distinct, col1){}}
62
- # SELECT count(DISTINCT col1) FROM t
63
-
64
- * If the first argument is :over, the second argument, if provided,
65
- should be a hash of options to pass to SQL::Window. The options
66
- hash can also contain :*=>true to use a wildcard argument as the
67
- function argument, or :args=>... to specify an array of arguments
68
- to use as the function arguments.
69
-
70
- DB[:t].select{rank(:over){}} # SELECT rank() OVER ()
71
- DB[:t].select{count(:over, :*=>true){}} # SELECT count(*) OVER ()
72
- DB[:t].select{sum(:over, :args=>col1,
73
- :partition=>col2, :order=>col3){}}
74
- # SELECT sum(col1) OVER (PARTITION BY col2 ORDER BY col3)
75
-
76
- PostgreSQL also supports named windows. Named windows can be
77
- specified by Dataset#window, and window functions can reference
78
- them using the :window option.
79
-
80
- * Schema information for columns now includes a :ruby_default entry
81
- which contains a ruby object that represents the default given by
82
- the database (which is stored in :default). Not all :default
83
- entries can be parsed into a :ruby_default, but if the
84
- schema_dumper extension previously supported it, it should work.
85
-
86
- * Methods to create compound datasets (union, intersect, except), now
87
- take an options hash instead of a true/false flag. The previous
88
- API is still supported, but switching to specifying the ALL setting
89
- using :all=>true is recommended.
90
-
91
- Additionally, you can now set :from_self=>false to not wrap the
92
- returned dataset in a "SELECT * FROM (...)".
93
-
94
- * Dataset#ungraphed was added that removes the graphing information
95
- from the dataset. This allows you to use Dataset#graph for the
96
- automatic aliasing, or #eager_graph for the automatic aliasing and
97
- joining, and then remove the graphing information so that the
98
- resulting objects will not be split into subhashes or associations.
99
-
100
- * There were some introspection methods added to Dataset to describe
101
- which capabilities that dataset does or does not support:
102
-
103
- supports_cte?
104
- supports_distinct_on?
105
- supports_intersect_except?
106
- supports_intersect_except_all?
107
- supports_window_functions?
108
-
109
- In addition to being available for the user to use, these are also
110
- used internally, so attempting to use a CTE on a dataset that
111
- doesn't support it will raise an Error.
112
-
113
- * Dataset#qualify was added, which is like qualify_to with a default
114
- of first_source.
115
-
116
- Additionally, qualify now affects PlaceholderLiteralStrings. It
117
- doesn't scan the string (as Sequel never attempts to parse SQL),
118
- but if you provide the column as a symbol placeholder argument, it
119
- will qualify it.
120
-
121
- * You can now specify the table and column Sequel::Migrator will use
122
- to record the current schema version. The new Migrator.run method
123
- must be used to use these new options.
124
-
125
- * The JDBC adapter now accepts :user and :password options, instead
126
- of requiring them to be specified in the connection string and
127
- handled by the JDBC driver. This should allow connections to
128
- Oracle using the Thin JDBC driver.
129
-
130
- * You can now specify the max_connections, pool_timeout, and
131
- single_threaded settings directly in the connection string:
132
-
133
- postgres:///database?single_threaded=t
134
- postgres:///database?max_connections=10&pool_timeout=20
135
-
136
- * Dataset#on_duplicate_key_update now affects Dataset#insert when
137
- using MySQL.
138
-
139
- * You can now specify the :opclass option when creating PostgreSQL
140
- indexes. Currently, this only supports a single operator class
141
- for all columns. If you need different operator classes per
142
- column, please post on sequel-talk.
143
-
144
- * Model#autoincrementing_primary_key was added and can be used if
145
- the autoincrementing key isn't the same as the primary key. The
146
- only likely use for this is on MySQL MyISAM tables with composite
147
- primary keys where only one of the composite parts is
148
- autoincrementing.
149
-
150
- * You can now use database column values as search patterns and
151
- specify the text to search as a String or Regexp:
152
-
153
- String.send(:include, Sequel::SQL::StringMethods)
154
- Regexp.send(:include, Sequel::SQL::StringMethods)
155
-
156
- 'a'.like(:x) # ('a' LIKE x)
157
- /a/.like(:x) # ('a' ~ x)
158
- /a/i.like(:x) # ('a' ~* x)
159
- /a/.like(:x, 'b') # (('a' ~ x) OR ('a' ~ 'b'))
160
-
161
- * The Dataset#dataset_alias private method was added. It can be
162
- overridden if you have tables named t0, t1, etc and want to make
163
- sure the default dataset aliases that Sequel uses do not clash
164
- with existing table names.
165
-
166
- * Sequel now raises an Error if you call Sequel.connect with
167
- something that is not a Hash or String.
168
-
169
- * bin/sequel now accepts a -N option to not test the database
170
- connection.
171
-
172
- * An opening_databases.rdoc file was added to the documentation
173
- directory, which should be a good introduction for new users about
174
- how to set up your Database connection.
175
-
176
- Other Improvements
177
- ------------------
178
-
179
- * MySQL native adapter SELECT is much faster than before, up to 75%
180
- faster.
181
-
182
- * JDBC SELECT is about 10% faster than before. It's still much
183
- slower than the native adapters, due to conversion issues.
184
-
185
- * bin/sequel now works with a YAML file on ruby 1.9.
186
-
187
- * MySQL foreign key table constraints have been fixed.
188
-
189
- * Database#indexes now works on PostgreSQL if the schema used is a
190
- Symbol. It also works on PostgreSQL versions all the way back to
191
- 7.4.
192
-
193
- * Graphing of datasets with dataset sources has been fixed.
194
-
195
- * Changing a columns name, type, or NULL status on MySQL now
196
- supports a much wider selection of column defaults.
197
-
198
- * The stored procedure code is now thread-safe. Sequel is
199
- thread-safe in general, but due to a bug the previous stored
200
- procedure code was not thread-safe.
201
-
202
- * The ODBC adapter now drops statements automatically instead of
203
- requiring the user to do so manually, making it more similar
204
- to other adapters.
205
-
206
- * The single_table_inheritance plugin no longer overwrites the STI
207
- field if the field already has a value. This allows you to use
208
- create in the generic class to insert a value that will be
209
- returned as a subclass:
210
-
211
- Person.create(:kind => "Manager")
212
-
213
- * When altering colums on MySQL, :unsigned, :elements, :size and other
214
- options given are no longer ignored.
215
-
216
- * The PostgreSQL shared adapter's explain and analyze methods have
217
- been fixed, they had been broken in 3.0.
218
-
219
- * Parsing of the server's version is more robust on PostgreSQL.
220
- It should now work correctly for 8.4 and 8.4rc1 type versions.
221
-
222
- Backwards Compatibility
223
- -----------------------
224
-
225
- * Dataset#table_exists? has been removed, since it never worked
226
- perfectly. Use Database#table_exists? instead.
227
-
228
- * Model.grep now calls Dataset#grep instead of Enumerable#grep.
229
- If you are using Model.grep, you need to modify your application.
230
-
231
- * The MSSQL shared adapter previously used the :with option for
232
- storing the NOLOCK setting of the query. That option has been
233
- renamed to :table_options, since :with is now used for CTEs.
234
- This should not have an effect unless you where using the option
235
- manually.
236
-
237
- * Previously, providing a block to a method calls in virtual row
238
- blocks did not change behavior, where now it causes a different
239
- code path to be used. In both cases, the block is not evaluated,
240
- but that may change in a future version.
241
-
242
- * Dataset#to_table_reference protected method was removed, as it was
243
- no longer used.
244
-
245
- * The pool_timeout setting is now converted to an Integer, so if you
246
- used to pass in a Float, it no longer works the same way.
247
-
248
- * Most files in adapters/utils have been removed, in favor of
249
- integrating the code directly into Database and Dataset. If you
250
- were previously checking for the UnsupportedIntersectExcept or
251
- related modules, use the Dataset introspection methods instead
252
- (e.g. supports_intersect_except?).
253
-
254
- * If you were using the ODBC adapter and manually dropping returned
255
- statements, you should note that now statements are dropped
256
- automatically, and the execute method doesn't return a statement
257
- object.
258
-
259
- * The MySQL adapter on_duplicate_key_update_sql is now a private
260
- method.
261
-
262
- * If you were modifying the :from dataset option directly, note that
263
- Sequel now expects this option to be preprocessed. See the new
264
- implementation of Dataset#from for an idea of the changes
265
- required.
266
-
267
- * Dataset#simple_select_all? now returns false instead of true for a
268
- dataset that selects from another dataset.
@@ -1,41 +0,0 @@
1
- = New Features
2
-
3
- * The swift adapter now supports an SQLite subadapter. Use the
4
- :db_type => 'sqlite' option when connecting. You can use an
5
- in memory database with the following connection string:
6
-
7
- swift:///?database=:memory:&db_type=sqlite
8
-
9
- * Arbitrary JDBC properties can now be set in the JDBC adapter
10
- using the :jdbc_properties option when connecting. The value
11
- of this option should be a hash where keys and values are JDBC
12
- property keys and values.
13
-
14
- * Basic Microsoft Access support was added to the ado adapter.
15
- The creation of autoincrementing primary key integers now works,
16
- and identifiers are now quoted with [].
17
-
18
- * The Database#indexes method now supports a :partial option when
19
- connecting to MySQL, which makes it include partial indexes (which
20
- are usually excluded).
21
-
22
- = Other Improvements
23
-
24
- * The class_table_inheritance plugin now handles subclass
25
- associations better. Previously, the implicit eager loading code
26
- had issues when you called an association method that only existed
27
- in the subclass.
28
-
29
- * The error message used when a validates_max_length validation is
30
- applied to a nil column value has been improved. You can override
31
- the message yourself using the :nil_message option.
32
-
33
- * The read_timeout and connect_timeout options now work correctly in
34
- the mysql adapter.
35
-
36
- * Another MySQL disconnect error message is now recognized.
37
-
38
- = Backwards Compatibility
39
-
40
- * The swift adapter was upgraded to support swift 0.8.1. Older
41
- versions of swift are no longer supported.