sequel 4.26.0 → 5.37.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 (692) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG +405 -5656
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +232 -157
  5. data/bin/sequel +32 -9
  6. data/doc/advanced_associations.rdoc +252 -188
  7. data/doc/association_basics.rdoc +231 -273
  8. data/doc/bin_sequel.rdoc +5 -3
  9. data/doc/cheat_sheet.rdoc +75 -48
  10. data/doc/code_order.rdoc +28 -10
  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/mass_assignment.rdoc +74 -31
  16. data/doc/migration.rdoc +72 -46
  17. data/doc/model_dataset_method_design.rdoc +129 -0
  18. data/doc/model_hooks.rdoc +15 -25
  19. data/doc/model_plugins.rdoc +12 -12
  20. data/doc/mssql_stored_procedures.rdoc +3 -3
  21. data/doc/object_model.rdoc +59 -69
  22. data/doc/opening_databases.rdoc +84 -94
  23. data/doc/postgresql.rdoc +268 -38
  24. data/doc/prepared_statements.rdoc +29 -24
  25. data/doc/querying.rdoc +184 -164
  26. data/doc/reflection.rdoc +5 -6
  27. data/doc/release_notes/5.0.0.txt +159 -0
  28. data/doc/release_notes/5.1.0.txt +31 -0
  29. data/doc/release_notes/5.10.0.txt +84 -0
  30. data/doc/release_notes/5.11.0.txt +83 -0
  31. data/doc/release_notes/5.12.0.txt +141 -0
  32. data/doc/release_notes/5.13.0.txt +27 -0
  33. data/doc/release_notes/5.14.0.txt +63 -0
  34. data/doc/release_notes/5.15.0.txt +39 -0
  35. data/doc/release_notes/5.16.0.txt +110 -0
  36. data/doc/release_notes/5.17.0.txt +31 -0
  37. data/doc/release_notes/5.18.0.txt +69 -0
  38. data/doc/release_notes/5.19.0.txt +28 -0
  39. data/doc/release_notes/5.2.0.txt +33 -0
  40. data/doc/release_notes/5.20.0.txt +89 -0
  41. data/doc/release_notes/5.21.0.txt +87 -0
  42. data/doc/release_notes/5.22.0.txt +48 -0
  43. data/doc/release_notes/5.23.0.txt +56 -0
  44. data/doc/release_notes/5.24.0.txt +56 -0
  45. data/doc/release_notes/5.25.0.txt +32 -0
  46. data/doc/release_notes/5.26.0.txt +35 -0
  47. data/doc/release_notes/5.27.0.txt +21 -0
  48. data/doc/release_notes/5.28.0.txt +16 -0
  49. data/doc/release_notes/5.29.0.txt +22 -0
  50. data/doc/release_notes/5.3.0.txt +121 -0
  51. data/doc/release_notes/5.30.0.txt +20 -0
  52. data/doc/release_notes/5.31.0.txt +148 -0
  53. data/doc/release_notes/5.32.0.txt +46 -0
  54. data/doc/release_notes/5.33.0.txt +24 -0
  55. data/doc/release_notes/5.34.0.txt +40 -0
  56. data/doc/release_notes/5.35.0.txt +56 -0
  57. data/doc/release_notes/5.36.0.txt +60 -0
  58. data/doc/release_notes/5.37.0.txt +30 -0
  59. data/doc/release_notes/5.4.0.txt +80 -0
  60. data/doc/release_notes/5.5.0.txt +61 -0
  61. data/doc/release_notes/5.6.0.txt +31 -0
  62. data/doc/release_notes/5.7.0.txt +108 -0
  63. data/doc/release_notes/5.8.0.txt +170 -0
  64. data/doc/release_notes/5.9.0.txt +99 -0
  65. data/doc/schema_modification.rdoc +102 -77
  66. data/doc/security.rdoc +160 -87
  67. data/doc/sharding.rdoc +74 -47
  68. data/doc/sql.rdoc +135 -122
  69. data/doc/testing.rdoc +34 -18
  70. data/doc/thread_safety.rdoc +2 -4
  71. data/doc/transactions.rdoc +101 -19
  72. data/doc/validations.rdoc +64 -51
  73. data/doc/virtual_rows.rdoc +90 -109
  74. data/lib/sequel.rb +3 -1
  75. data/lib/sequel/adapters/ado.rb +154 -22
  76. data/lib/sequel/adapters/ado/access.rb +21 -21
  77. data/lib/sequel/adapters/ado/mssql.rb +8 -15
  78. data/lib/sequel/adapters/amalgalite.rb +17 -25
  79. data/lib/sequel/adapters/ibmdb.rb +52 -58
  80. data/lib/sequel/adapters/jdbc.rb +149 -127
  81. data/lib/sequel/adapters/jdbc/db2.rb +32 -40
  82. data/lib/sequel/adapters/jdbc/derby.rb +56 -58
  83. data/lib/sequel/adapters/jdbc/h2.rb +40 -30
  84. data/lib/sequel/adapters/jdbc/hsqldb.rb +22 -33
  85. data/lib/sequel/adapters/jdbc/jtds.rb +4 -10
  86. data/lib/sequel/adapters/jdbc/mssql.rb +6 -12
  87. data/lib/sequel/adapters/jdbc/mysql.rb +17 -18
  88. data/lib/sequel/adapters/jdbc/oracle.rb +25 -19
  89. data/lib/sequel/adapters/jdbc/postgresql.rb +90 -69
  90. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +14 -24
  91. data/lib/sequel/adapters/jdbc/sqlite.rb +50 -12
  92. data/lib/sequel/adapters/jdbc/sqlserver.rb +36 -9
  93. data/lib/sequel/adapters/jdbc/transactions.rb +25 -39
  94. data/lib/sequel/adapters/mock.rb +104 -113
  95. data/lib/sequel/adapters/mysql.rb +42 -61
  96. data/lib/sequel/adapters/mysql2.rb +126 -35
  97. data/lib/sequel/adapters/odbc.rb +21 -28
  98. data/lib/sequel/adapters/odbc/db2.rb +3 -1
  99. data/lib/sequel/adapters/odbc/mssql.rb +11 -15
  100. data/lib/sequel/adapters/odbc/oracle.rb +11 -0
  101. data/lib/sequel/adapters/oracle.rb +62 -68
  102. data/lib/sequel/adapters/postgres.rb +257 -311
  103. data/lib/sequel/adapters/postgresql.rb +3 -1
  104. data/lib/sequel/adapters/shared/access.rb +75 -79
  105. data/lib/sequel/adapters/shared/db2.rb +96 -74
  106. data/lib/sequel/adapters/shared/mssql.rb +258 -213
  107. data/lib/sequel/adapters/shared/mysql.rb +284 -216
  108. data/lib/sequel/adapters/shared/oracle.rb +175 -60
  109. data/lib/sequel/adapters/shared/postgres.rb +829 -383
  110. data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -127
  111. data/lib/sequel/adapters/shared/sqlite.rb +382 -159
  112. data/lib/sequel/adapters/sqlanywhere.rb +53 -38
  113. data/lib/sequel/adapters/sqlite.rb +111 -105
  114. data/lib/sequel/adapters/tinytds.rb +38 -46
  115. data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +8 -9
  116. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +7 -5
  117. data/lib/sequel/adapters/utils/mysql_mysql2.rb +87 -0
  118. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
  119. data/lib/sequel/adapters/utils/replace.rb +3 -4
  120. data/lib/sequel/adapters/utils/split_alter_table.rb +2 -0
  121. data/lib/sequel/adapters/utils/stored_procedures.rb +9 -22
  122. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
  123. data/lib/sequel/ast_transformer.rb +13 -89
  124. data/lib/sequel/connection_pool.rb +54 -26
  125. data/lib/sequel/connection_pool/sharded_single.rb +19 -12
  126. data/lib/sequel/connection_pool/sharded_threaded.rb +160 -111
  127. data/lib/sequel/connection_pool/single.rb +21 -12
  128. data/lib/sequel/connection_pool/threaded.rb +137 -119
  129. data/lib/sequel/core.rb +352 -320
  130. data/lib/sequel/database.rb +19 -2
  131. data/lib/sequel/database/connecting.rb +70 -55
  132. data/lib/sequel/database/dataset.rb +15 -5
  133. data/lib/sequel/database/dataset_defaults.rb +20 -102
  134. data/lib/sequel/database/features.rb +20 -4
  135. data/lib/sequel/database/logging.rb +25 -7
  136. data/lib/sequel/database/misc.rb +132 -118
  137. data/lib/sequel/database/query.rb +51 -28
  138. data/lib/sequel/database/schema_generator.rb +188 -75
  139. data/lib/sequel/database/schema_methods.rb +161 -92
  140. data/lib/sequel/database/transactions.rb +260 -58
  141. data/lib/sequel/dataset.rb +28 -12
  142. data/lib/sequel/dataset/actions.rb +354 -170
  143. data/lib/sequel/dataset/dataset_module.rb +46 -0
  144. data/lib/sequel/dataset/features.rb +81 -34
  145. data/lib/sequel/dataset/graph.rb +82 -58
  146. data/lib/sequel/dataset/misc.rb +139 -47
  147. data/lib/sequel/dataset/placeholder_literalizer.rb +66 -26
  148. data/lib/sequel/dataset/prepared_statements.rb +188 -85
  149. data/lib/sequel/dataset/query.rb +428 -214
  150. data/lib/sequel/dataset/sql.rb +446 -339
  151. data/lib/sequel/deprecated.rb +14 -2
  152. data/lib/sequel/exceptions.rb +48 -16
  153. data/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
  154. data/lib/sequel/extensions/_model_pg_row.rb +43 -0
  155. data/lib/sequel/extensions/_pretty_table.rb +10 -9
  156. data/lib/sequel/extensions/any_not_empty.rb +45 -0
  157. data/lib/sequel/extensions/arbitrary_servers.rb +15 -11
  158. data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
  159. data/lib/sequel/extensions/blank.rb +2 -0
  160. data/lib/sequel/extensions/caller_logging.rb +79 -0
  161. data/lib/sequel/extensions/columns_introspection.rb +9 -4
  162. data/lib/sequel/extensions/connection_expiration.rb +99 -0
  163. data/lib/sequel/extensions/connection_validator.rb +26 -13
  164. data/lib/sequel/extensions/constant_sql_override.rb +65 -0
  165. data/lib/sequel/extensions/constraint_validations.rb +93 -38
  166. data/lib/sequel/extensions/core_extensions.rb +45 -53
  167. data/lib/sequel/extensions/core_refinements.rb +44 -46
  168. data/lib/sequel/extensions/current_datetime_timestamp.rb +5 -4
  169. data/lib/sequel/extensions/dataset_source_alias.rb +4 -0
  170. data/lib/sequel/extensions/date_arithmetic.rb +42 -16
  171. data/lib/sequel/extensions/datetime_parse_to_time.rb +37 -0
  172. data/lib/sequel/extensions/duplicate_columns_handler.rb +94 -0
  173. data/lib/sequel/extensions/empty_array_consider_nulls.rb +7 -3
  174. data/lib/sequel/extensions/error_sql.rb +7 -3
  175. data/lib/sequel/extensions/escaped_like.rb +100 -0
  176. data/lib/sequel/extensions/eval_inspect.rb +14 -15
  177. data/lib/sequel/extensions/exclude_or_null.rb +68 -0
  178. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  179. data/lib/sequel/extensions/freeze_datasets.rb +3 -0
  180. data/lib/sequel/extensions/from_block.rb +2 -31
  181. data/lib/sequel/extensions/graph_each.rb +19 -6
  182. data/lib/sequel/extensions/identifier_mangling.rb +180 -0
  183. data/lib/sequel/extensions/implicit_subquery.rb +48 -0
  184. data/lib/sequel/extensions/index_caching.rb +109 -0
  185. data/lib/sequel/extensions/inflector.rb +8 -4
  186. data/lib/sequel/extensions/integer64.rb +32 -0
  187. data/lib/sequel/extensions/looser_typecasting.rb +19 -9
  188. data/lib/sequel/extensions/migration.rb +132 -80
  189. data/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +4 -0
  190. data/lib/sequel/extensions/named_timezones.rb +88 -23
  191. data/lib/sequel/extensions/no_auto_literal_strings.rb +4 -0
  192. data/lib/sequel/extensions/null_dataset.rb +12 -8
  193. data/lib/sequel/extensions/pagination.rb +35 -28
  194. data/lib/sequel/extensions/pg_array.rb +227 -316
  195. data/lib/sequel/extensions/pg_array_ops.rb +19 -7
  196. data/lib/sequel/extensions/pg_enum.rb +69 -24
  197. data/lib/sequel/extensions/pg_extended_date_support.rb +250 -0
  198. data/lib/sequel/extensions/pg_hstore.rb +50 -59
  199. data/lib/sequel/extensions/pg_hstore_ops.rb +9 -3
  200. data/lib/sequel/extensions/pg_inet.rb +34 -15
  201. data/lib/sequel/extensions/pg_inet_ops.rb +5 -1
  202. data/lib/sequel/extensions/pg_interval.rb +26 -26
  203. data/lib/sequel/extensions/pg_json.rb +422 -141
  204. data/lib/sequel/extensions/pg_json_ops.rb +248 -9
  205. data/lib/sequel/extensions/pg_loose_count.rb +5 -1
  206. data/lib/sequel/extensions/pg_range.rb +162 -146
  207. data/lib/sequel/extensions/pg_range_ops.rb +10 -5
  208. data/lib/sequel/extensions/pg_row.rb +53 -87
  209. data/lib/sequel/extensions/pg_row_ops.rb +36 -13
  210. data/lib/sequel/extensions/pg_static_cache_updater.rb +6 -2
  211. data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
  212. data/lib/sequel/extensions/pretty_table.rb +4 -0
  213. data/lib/sequel/extensions/query.rb +12 -7
  214. data/lib/sequel/extensions/round_timestamps.rb +6 -9
  215. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  216. data/lib/sequel/extensions/s.rb +59 -0
  217. data/lib/sequel/extensions/schema_caching.rb +14 -1
  218. data/lib/sequel/extensions/schema_dumper.rb +83 -55
  219. data/lib/sequel/extensions/select_remove.rb +8 -4
  220. data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
  221. data/lib/sequel/extensions/server_block.rb +50 -17
  222. data/lib/sequel/extensions/server_logging.rb +61 -0
  223. data/lib/sequel/extensions/split_array_nil.rb +8 -4
  224. data/lib/sequel/extensions/sql_comments.rb +96 -0
  225. data/lib/sequel/extensions/sql_expr.rb +4 -1
  226. data/lib/sequel/extensions/string_agg.rb +181 -0
  227. data/lib/sequel/extensions/string_date_time.rb +2 -0
  228. data/lib/sequel/extensions/symbol_aref.rb +53 -0
  229. data/lib/sequel/extensions/symbol_aref_refinement.rb +43 -0
  230. data/lib/sequel/extensions/symbol_as.rb +23 -0
  231. data/lib/sequel/extensions/symbol_as_refinement.rb +37 -0
  232. data/lib/sequel/extensions/synchronize_sql.rb +45 -0
  233. data/lib/sequel/extensions/thread_local_timezones.rb +4 -0
  234. data/lib/sequel/extensions/to_dot.rb +15 -5
  235. data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
  236. data/lib/sequel/model.rb +36 -126
  237. data/lib/sequel/model/associations.rb +850 -257
  238. data/lib/sequel/model/base.rb +652 -764
  239. data/lib/sequel/model/dataset_module.rb +13 -10
  240. data/lib/sequel/model/default_inflections.rb +3 -1
  241. data/lib/sequel/model/errors.rb +3 -3
  242. data/lib/sequel/model/exceptions.rb +12 -12
  243. data/lib/sequel/model/inflections.rb +8 -19
  244. data/lib/sequel/model/plugins.rb +111 -0
  245. data/lib/sequel/plugins/accessed_columns.rb +2 -0
  246. data/lib/sequel/plugins/active_model.rb +32 -7
  247. data/lib/sequel/plugins/after_initialize.rb +3 -1
  248. data/lib/sequel/plugins/association_dependencies.rb +27 -18
  249. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  250. data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
  251. data/lib/sequel/plugins/association_pks.rb +181 -83
  252. data/lib/sequel/plugins/association_proxies.rb +33 -9
  253. data/lib/sequel/plugins/auto_validations.rb +58 -23
  254. data/lib/sequel/plugins/before_after_save.rb +8 -0
  255. data/lib/sequel/plugins/blacklist_security.rb +23 -12
  256. data/lib/sequel/plugins/boolean_readers.rb +9 -6
  257. data/lib/sequel/plugins/boolean_subsets.rb +64 -0
  258. data/lib/sequel/plugins/caching.rb +27 -16
  259. data/lib/sequel/plugins/class_table_inheritance.rb +192 -94
  260. data/lib/sequel/plugins/column_conflicts.rb +18 -3
  261. data/lib/sequel/plugins/column_select.rb +9 -5
  262. data/lib/sequel/plugins/columns_updated.rb +42 -0
  263. data/lib/sequel/plugins/composition.rb +36 -24
  264. data/lib/sequel/plugins/constraint_validations.rb +37 -16
  265. data/lib/sequel/plugins/csv_serializer.rb +58 -35
  266. data/lib/sequel/plugins/dataset_associations.rb +60 -18
  267. data/lib/sequel/plugins/def_dataset_method.rb +90 -0
  268. data/lib/sequel/plugins/defaults_setter.rb +74 -13
  269. data/lib/sequel/plugins/delay_add_association.rb +4 -1
  270. data/lib/sequel/plugins/dirty.rb +65 -24
  271. data/lib/sequel/plugins/eager_each.rb +27 -3
  272. data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
  273. data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
  274. data/lib/sequel/plugins/error_splitter.rb +19 -12
  275. data/lib/sequel/plugins/finder.rb +246 -0
  276. data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
  277. data/lib/sequel/plugins/force_encoding.rb +9 -12
  278. data/lib/sequel/plugins/hook_class_methods.rb +39 -54
  279. data/lib/sequel/plugins/input_transformer.rb +20 -10
  280. data/lib/sequel/plugins/insert_conflict.rb +72 -0
  281. data/lib/sequel/plugins/insert_returning_select.rb +4 -2
  282. data/lib/sequel/plugins/instance_filters.rb +12 -8
  283. data/lib/sequel/plugins/instance_hooks.rb +36 -17
  284. data/lib/sequel/plugins/instance_specific_default.rb +113 -0
  285. data/lib/sequel/plugins/inverted_subsets.rb +24 -13
  286. data/lib/sequel/plugins/json_serializer.rb +123 -47
  287. data/lib/sequel/plugins/lazy_attributes.rb +20 -14
  288. data/lib/sequel/plugins/list.rb +40 -26
  289. data/lib/sequel/plugins/many_through_many.rb +28 -12
  290. data/lib/sequel/plugins/modification_detection.rb +17 -5
  291. data/lib/sequel/plugins/mssql_optimistic_locking.rb +8 -5
  292. data/lib/sequel/plugins/nested_attributes.rb +55 -28
  293. data/lib/sequel/plugins/optimistic_locking.rb +5 -3
  294. data/lib/sequel/plugins/pg_array_associations.rb +52 -18
  295. data/lib/sequel/plugins/pg_auto_constraint_validations.rb +348 -0
  296. data/lib/sequel/plugins/pg_row.rb +7 -51
  297. data/lib/sequel/plugins/prepared_statements.rb +53 -72
  298. data/lib/sequel/plugins/prepared_statements_safe.rb +13 -5
  299. data/lib/sequel/plugins/rcte_tree.rb +43 -63
  300. data/lib/sequel/plugins/serialization.rb +37 -44
  301. data/lib/sequel/plugins/serialization_modification_detection.rb +3 -1
  302. data/lib/sequel/plugins/sharding.rb +17 -10
  303. data/lib/sequel/plugins/single_table_inheritance.rb +62 -28
  304. data/lib/sequel/plugins/singular_table_names.rb +2 -0
  305. data/lib/sequel/plugins/skip_create_refresh.rb +5 -3
  306. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  307. data/lib/sequel/plugins/split_values.rb +13 -6
  308. data/lib/sequel/plugins/static_cache.rb +79 -53
  309. data/lib/sequel/plugins/static_cache_cache.rb +53 -0
  310. data/lib/sequel/plugins/string_stripper.rb +5 -3
  311. data/lib/sequel/plugins/subclasses.rb +20 -2
  312. data/lib/sequel/plugins/subset_conditions.rb +48 -0
  313. data/lib/sequel/plugins/table_select.rb +4 -2
  314. data/lib/sequel/plugins/tactical_eager_loading.rb +120 -6
  315. data/lib/sequel/plugins/throw_failures.rb +110 -0
  316. data/lib/sequel/plugins/timestamps.rb +22 -8
  317. data/lib/sequel/plugins/touch.rb +21 -8
  318. data/lib/sequel/plugins/tree.rb +57 -30
  319. data/lib/sequel/plugins/typecast_on_load.rb +14 -4
  320. data/lib/sequel/plugins/unlimited_update.rb +3 -7
  321. data/lib/sequel/plugins/update_or_create.rb +6 -4
  322. data/lib/sequel/plugins/update_primary_key.rb +3 -1
  323. data/lib/sequel/plugins/update_refresh.rb +28 -15
  324. data/lib/sequel/plugins/uuid.rb +70 -0
  325. data/lib/sequel/plugins/validate_associated.rb +20 -0
  326. data/lib/sequel/plugins/validation_class_methods.rb +40 -19
  327. data/lib/sequel/plugins/validation_contexts.rb +49 -0
  328. data/lib/sequel/plugins/validation_helpers.rb +49 -31
  329. data/lib/sequel/plugins/whitelist_security.rb +122 -0
  330. data/lib/sequel/plugins/xml_serializer.rb +31 -30
  331. data/lib/sequel/sql.rb +479 -329
  332. data/lib/sequel/timezones.rb +62 -32
  333. data/lib/sequel/version.rb +10 -3
  334. metadata +177 -477
  335. data/Rakefile +0 -165
  336. data/doc/active_record.rdoc +0 -912
  337. data/doc/release_notes/1.0.txt +0 -38
  338. data/doc/release_notes/1.1.txt +0 -143
  339. data/doc/release_notes/1.3.txt +0 -101
  340. data/doc/release_notes/1.4.0.txt +0 -53
  341. data/doc/release_notes/1.5.0.txt +0 -155
  342. data/doc/release_notes/2.0.0.txt +0 -298
  343. data/doc/release_notes/2.1.0.txt +0 -271
  344. data/doc/release_notes/2.10.0.txt +0 -328
  345. data/doc/release_notes/2.11.0.txt +0 -215
  346. data/doc/release_notes/2.12.0.txt +0 -534
  347. data/doc/release_notes/2.2.0.txt +0 -253
  348. data/doc/release_notes/2.3.0.txt +0 -88
  349. data/doc/release_notes/2.4.0.txt +0 -106
  350. data/doc/release_notes/2.5.0.txt +0 -137
  351. data/doc/release_notes/2.6.0.txt +0 -157
  352. data/doc/release_notes/2.7.0.txt +0 -166
  353. data/doc/release_notes/2.8.0.txt +0 -171
  354. data/doc/release_notes/2.9.0.txt +0 -97
  355. data/doc/release_notes/3.0.0.txt +0 -221
  356. data/doc/release_notes/3.1.0.txt +0 -406
  357. data/doc/release_notes/3.10.0.txt +0 -286
  358. data/doc/release_notes/3.11.0.txt +0 -254
  359. data/doc/release_notes/3.12.0.txt +0 -304
  360. data/doc/release_notes/3.13.0.txt +0 -210
  361. data/doc/release_notes/3.14.0.txt +0 -118
  362. data/doc/release_notes/3.15.0.txt +0 -78
  363. data/doc/release_notes/3.16.0.txt +0 -45
  364. data/doc/release_notes/3.17.0.txt +0 -58
  365. data/doc/release_notes/3.18.0.txt +0 -120
  366. data/doc/release_notes/3.19.0.txt +0 -67
  367. data/doc/release_notes/3.2.0.txt +0 -268
  368. data/doc/release_notes/3.20.0.txt +0 -41
  369. data/doc/release_notes/3.21.0.txt +0 -87
  370. data/doc/release_notes/3.22.0.txt +0 -39
  371. data/doc/release_notes/3.23.0.txt +0 -172
  372. data/doc/release_notes/3.24.0.txt +0 -420
  373. data/doc/release_notes/3.25.0.txt +0 -88
  374. data/doc/release_notes/3.26.0.txt +0 -88
  375. data/doc/release_notes/3.27.0.txt +0 -82
  376. data/doc/release_notes/3.28.0.txt +0 -304
  377. data/doc/release_notes/3.29.0.txt +0 -459
  378. data/doc/release_notes/3.3.0.txt +0 -192
  379. data/doc/release_notes/3.30.0.txt +0 -135
  380. data/doc/release_notes/3.31.0.txt +0 -146
  381. data/doc/release_notes/3.32.0.txt +0 -202
  382. data/doc/release_notes/3.33.0.txt +0 -157
  383. data/doc/release_notes/3.34.0.txt +0 -671
  384. data/doc/release_notes/3.35.0.txt +0 -144
  385. data/doc/release_notes/3.36.0.txt +0 -245
  386. data/doc/release_notes/3.37.0.txt +0 -338
  387. data/doc/release_notes/3.38.0.txt +0 -234
  388. data/doc/release_notes/3.39.0.txt +0 -237
  389. data/doc/release_notes/3.4.0.txt +0 -325
  390. data/doc/release_notes/3.40.0.txt +0 -73
  391. data/doc/release_notes/3.41.0.txt +0 -155
  392. data/doc/release_notes/3.42.0.txt +0 -74
  393. data/doc/release_notes/3.43.0.txt +0 -105
  394. data/doc/release_notes/3.44.0.txt +0 -152
  395. data/doc/release_notes/3.45.0.txt +0 -179
  396. data/doc/release_notes/3.46.0.txt +0 -122
  397. data/doc/release_notes/3.47.0.txt +0 -270
  398. data/doc/release_notes/3.48.0.txt +0 -477
  399. data/doc/release_notes/3.5.0.txt +0 -510
  400. data/doc/release_notes/3.6.0.txt +0 -366
  401. data/doc/release_notes/3.7.0.txt +0 -179
  402. data/doc/release_notes/3.8.0.txt +0 -151
  403. data/doc/release_notes/3.9.0.txt +0 -233
  404. data/doc/release_notes/4.0.0.txt +0 -262
  405. data/doc/release_notes/4.1.0.txt +0 -85
  406. data/doc/release_notes/4.10.0.txt +0 -226
  407. data/doc/release_notes/4.11.0.txt +0 -147
  408. data/doc/release_notes/4.12.0.txt +0 -105
  409. data/doc/release_notes/4.13.0.txt +0 -169
  410. data/doc/release_notes/4.14.0.txt +0 -68
  411. data/doc/release_notes/4.15.0.txt +0 -56
  412. data/doc/release_notes/4.16.0.txt +0 -36
  413. data/doc/release_notes/4.17.0.txt +0 -38
  414. data/doc/release_notes/4.18.0.txt +0 -36
  415. data/doc/release_notes/4.19.0.txt +0 -45
  416. data/doc/release_notes/4.2.0.txt +0 -129
  417. data/doc/release_notes/4.20.0.txt +0 -79
  418. data/doc/release_notes/4.21.0.txt +0 -94
  419. data/doc/release_notes/4.22.0.txt +0 -72
  420. data/doc/release_notes/4.23.0.txt +0 -65
  421. data/doc/release_notes/4.24.0.txt +0 -99
  422. data/doc/release_notes/4.25.0.txt +0 -181
  423. data/doc/release_notes/4.26.0.txt +0 -44
  424. data/doc/release_notes/4.3.0.txt +0 -40
  425. data/doc/release_notes/4.4.0.txt +0 -92
  426. data/doc/release_notes/4.5.0.txt +0 -34
  427. data/doc/release_notes/4.6.0.txt +0 -30
  428. data/doc/release_notes/4.7.0.txt +0 -103
  429. data/doc/release_notes/4.8.0.txt +0 -175
  430. data/doc/release_notes/4.9.0.txt +0 -190
  431. data/lib/sequel/adapters/cubrid.rb +0 -142
  432. data/lib/sequel/adapters/do.rb +0 -156
  433. data/lib/sequel/adapters/do/mysql.rb +0 -64
  434. data/lib/sequel/adapters/do/postgres.rb +0 -42
  435. data/lib/sequel/adapters/do/sqlite3.rb +0 -40
  436. data/lib/sequel/adapters/jdbc/as400.rb +0 -82
  437. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -62
  438. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -34
  439. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -31
  440. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -31
  441. data/lib/sequel/adapters/odbc/progress.rb +0 -8
  442. data/lib/sequel/adapters/shared/cubrid.rb +0 -243
  443. data/lib/sequel/adapters/shared/firebird.rb +0 -245
  444. data/lib/sequel/adapters/shared/informix.rb +0 -52
  445. data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -150
  446. data/lib/sequel/adapters/shared/progress.rb +0 -38
  447. data/lib/sequel/adapters/swift.rb +0 -158
  448. data/lib/sequel/adapters/swift/mysql.rb +0 -47
  449. data/lib/sequel/adapters/swift/postgres.rb +0 -45
  450. data/lib/sequel/adapters/swift/sqlite.rb +0 -47
  451. data/lib/sequel/adapters/utils/pg_types.rb +0 -68
  452. data/lib/sequel/dataset/mutation.rb +0 -109
  453. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -3
  454. data/lib/sequel/extensions/filter_having.rb +0 -59
  455. data/lib/sequel/extensions/hash_aliases.rb +0 -45
  456. data/lib/sequel/extensions/meta_def.rb +0 -31
  457. data/lib/sequel/extensions/query_literals.rb +0 -80
  458. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -22
  459. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -118
  460. data/lib/sequel/extensions/set_overrides.rb +0 -72
  461. data/lib/sequel/no_core_ext.rb +0 -1
  462. data/lib/sequel/plugins/association_autoreloading.rb +0 -7
  463. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -7
  464. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -78
  465. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -117
  466. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -59
  467. data/lib/sequel/plugins/schema.rb +0 -80
  468. data/lib/sequel/plugins/scissors.rb +0 -33
  469. data/spec/adapters/db2_spec.rb +0 -160
  470. data/spec/adapters/firebird_spec.rb +0 -411
  471. data/spec/adapters/informix_spec.rb +0 -100
  472. data/spec/adapters/mssql_spec.rb +0 -706
  473. data/spec/adapters/mysql_spec.rb +0 -1287
  474. data/spec/adapters/oracle_spec.rb +0 -313
  475. data/spec/adapters/postgres_spec.rb +0 -3725
  476. data/spec/adapters/spec_helper.rb +0 -43
  477. data/spec/adapters/sqlanywhere_spec.rb +0 -170
  478. data/spec/adapters/sqlite_spec.rb +0 -653
  479. data/spec/bin_spec.rb +0 -254
  480. data/spec/core/connection_pool_spec.rb +0 -1016
  481. data/spec/core/database_spec.rb +0 -2531
  482. data/spec/core/dataset_spec.rb +0 -5098
  483. data/spec/core/deprecated_spec.rb +0 -70
  484. data/spec/core/expression_filters_spec.rb +0 -1243
  485. data/spec/core/mock_adapter_spec.rb +0 -462
  486. data/spec/core/object_graph_spec.rb +0 -303
  487. data/spec/core/placeholder_literalizer_spec.rb +0 -163
  488. data/spec/core/schema_generator_spec.rb +0 -179
  489. data/spec/core/schema_spec.rb +0 -1659
  490. data/spec/core/spec_helper.rb +0 -34
  491. data/spec/core/version_spec.rb +0 -7
  492. data/spec/core_extensions_spec.rb +0 -699
  493. data/spec/extensions/accessed_columns_spec.rb +0 -51
  494. data/spec/extensions/active_model_spec.rb +0 -123
  495. data/spec/extensions/after_initialize_spec.rb +0 -24
  496. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  497. data/spec/extensions/association_dependencies_spec.rb +0 -117
  498. data/spec/extensions/association_pks_spec.rb +0 -365
  499. data/spec/extensions/association_proxies_spec.rb +0 -86
  500. data/spec/extensions/auto_validations_spec.rb +0 -192
  501. data/spec/extensions/blacklist_security_spec.rb +0 -88
  502. data/spec/extensions/blank_spec.rb +0 -69
  503. data/spec/extensions/boolean_readers_spec.rb +0 -93
  504. data/spec/extensions/caching_spec.rb +0 -270
  505. data/spec/extensions/class_table_inheritance_spec.rb +0 -420
  506. data/spec/extensions/column_conflicts_spec.rb +0 -60
  507. data/spec/extensions/column_select_spec.rb +0 -108
  508. data/spec/extensions/columns_introspection_spec.rb +0 -91
  509. data/spec/extensions/composition_spec.rb +0 -242
  510. data/spec/extensions/connection_validator_spec.rb +0 -120
  511. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -274
  512. data/spec/extensions/constraint_validations_spec.rb +0 -325
  513. data/spec/extensions/core_refinements_spec.rb +0 -519
  514. data/spec/extensions/csv_serializer_spec.rb +0 -173
  515. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  516. data/spec/extensions/dataset_associations_spec.rb +0 -311
  517. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  518. data/spec/extensions/date_arithmetic_spec.rb +0 -150
  519. data/spec/extensions/defaults_setter_spec.rb +0 -101
  520. data/spec/extensions/delay_add_association_spec.rb +0 -52
  521. data/spec/extensions/dirty_spec.rb +0 -180
  522. data/spec/extensions/eager_each_spec.rb +0 -42
  523. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  524. data/spec/extensions/error_splitter_spec.rb +0 -18
  525. data/spec/extensions/error_sql_spec.rb +0 -20
  526. data/spec/extensions/eval_inspect_spec.rb +0 -73
  527. data/spec/extensions/filter_having_spec.rb +0 -40
  528. data/spec/extensions/force_encoding_spec.rb +0 -114
  529. data/spec/extensions/from_block_spec.rb +0 -21
  530. data/spec/extensions/graph_each_spec.rb +0 -109
  531. data/spec/extensions/hash_aliases_spec.rb +0 -24
  532. data/spec/extensions/hook_class_methods_spec.rb +0 -429
  533. data/spec/extensions/inflector_spec.rb +0 -183
  534. data/spec/extensions/input_transformer_spec.rb +0 -54
  535. data/spec/extensions/insert_returning_select_spec.rb +0 -46
  536. data/spec/extensions/instance_filters_spec.rb +0 -79
  537. data/spec/extensions/instance_hooks_spec.rb +0 -276
  538. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  539. data/spec/extensions/json_serializer_spec.rb +0 -291
  540. data/spec/extensions/lazy_attributes_spec.rb +0 -170
  541. data/spec/extensions/list_spec.rb +0 -267
  542. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  543. data/spec/extensions/many_through_many_spec.rb +0 -2172
  544. data/spec/extensions/meta_def_spec.rb +0 -21
  545. data/spec/extensions/migration_spec.rb +0 -712
  546. data/spec/extensions/modification_detection_spec.rb +0 -80
  547. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
  548. data/spec/extensions/named_timezones_spec.rb +0 -108
  549. data/spec/extensions/nested_attributes_spec.rb +0 -697
  550. data/spec/extensions/null_dataset_spec.rb +0 -85
  551. data/spec/extensions/optimistic_locking_spec.rb +0 -128
  552. data/spec/extensions/pagination_spec.rb +0 -118
  553. data/spec/extensions/pg_array_associations_spec.rb +0 -736
  554. data/spec/extensions/pg_array_ops_spec.rb +0 -143
  555. data/spec/extensions/pg_array_spec.rb +0 -395
  556. data/spec/extensions/pg_enum_spec.rb +0 -92
  557. data/spec/extensions/pg_hstore_ops_spec.rb +0 -236
  558. data/spec/extensions/pg_hstore_spec.rb +0 -206
  559. data/spec/extensions/pg_inet_ops_spec.rb +0 -101
  560. data/spec/extensions/pg_inet_spec.rb +0 -52
  561. data/spec/extensions/pg_interval_spec.rb +0 -76
  562. data/spec/extensions/pg_json_ops_spec.rb +0 -229
  563. data/spec/extensions/pg_json_spec.rb +0 -218
  564. data/spec/extensions/pg_loose_count_spec.rb +0 -17
  565. data/spec/extensions/pg_range_ops_spec.rb +0 -58
  566. data/spec/extensions/pg_range_spec.rb +0 -404
  567. data/spec/extensions/pg_row_ops_spec.rb +0 -60
  568. data/spec/extensions/pg_row_plugin_spec.rb +0 -62
  569. data/spec/extensions/pg_row_spec.rb +0 -360
  570. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
  571. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
  572. data/spec/extensions/prepared_statements_associations_spec.rb +0 -159
  573. data/spec/extensions/prepared_statements_safe_spec.rb +0 -61
  574. data/spec/extensions/prepared_statements_spec.rb +0 -103
  575. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
  576. data/spec/extensions/pretty_table_spec.rb +0 -92
  577. data/spec/extensions/query_literals_spec.rb +0 -183
  578. data/spec/extensions/query_spec.rb +0 -102
  579. data/spec/extensions/rcte_tree_spec.rb +0 -392
  580. data/spec/extensions/round_timestamps_spec.rb +0 -43
  581. data/spec/extensions/schema_caching_spec.rb +0 -41
  582. data/spec/extensions/schema_dumper_spec.rb +0 -789
  583. data/spec/extensions/schema_spec.rb +0 -117
  584. data/spec/extensions/scissors_spec.rb +0 -26
  585. data/spec/extensions/select_remove_spec.rb +0 -38
  586. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
  587. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  588. data/spec/extensions/serialization_spec.rb +0 -362
  589. data/spec/extensions/server_block_spec.rb +0 -90
  590. data/spec/extensions/set_overrides_spec.rb +0 -61
  591. data/spec/extensions/sharding_spec.rb +0 -198
  592. data/spec/extensions/shared_caching_spec.rb +0 -175
  593. data/spec/extensions/single_table_inheritance_spec.rb +0 -297
  594. data/spec/extensions/singular_table_names_spec.rb +0 -22
  595. data/spec/extensions/skip_create_refresh_spec.rb +0 -17
  596. data/spec/extensions/spec_helper.rb +0 -71
  597. data/spec/extensions/split_array_nil_spec.rb +0 -24
  598. data/spec/extensions/split_values_spec.rb +0 -22
  599. data/spec/extensions/sql_expr_spec.rb +0 -60
  600. data/spec/extensions/static_cache_spec.rb +0 -361
  601. data/spec/extensions/string_date_time_spec.rb +0 -95
  602. data/spec/extensions/string_stripper_spec.rb +0 -68
  603. data/spec/extensions/subclasses_spec.rb +0 -66
  604. data/spec/extensions/table_select_spec.rb +0 -71
  605. data/spec/extensions/tactical_eager_loading_spec.rb +0 -82
  606. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  607. data/spec/extensions/timestamps_spec.rb +0 -175
  608. data/spec/extensions/to_dot_spec.rb +0 -154
  609. data/spec/extensions/touch_spec.rb +0 -203
  610. data/spec/extensions/tree_spec.rb +0 -274
  611. data/spec/extensions/typecast_on_load_spec.rb +0 -80
  612. data/spec/extensions/unlimited_update_spec.rb +0 -20
  613. data/spec/extensions/update_or_create_spec.rb +0 -87
  614. data/spec/extensions/update_primary_key_spec.rb +0 -100
  615. data/spec/extensions/update_refresh_spec.rb +0 -53
  616. data/spec/extensions/validate_associated_spec.rb +0 -52
  617. data/spec/extensions/validation_class_methods_spec.rb +0 -1027
  618. data/spec/extensions/validation_helpers_spec.rb +0 -541
  619. data/spec/extensions/xml_serializer_spec.rb +0 -207
  620. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  621. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  622. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  623. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  624. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  625. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  626. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  627. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  628. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  629. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  630. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  631. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  632. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  633. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  634. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  635. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  636. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  637. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  638. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  639. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  640. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  641. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  642. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  643. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  644. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  645. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  646. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  647. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  648. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  649. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  650. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  651. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  652. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  653. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  654. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  655. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  656. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  657. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  658. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  659. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  660. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  661. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  662. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  663. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  664. data/spec/guards_helper.rb +0 -55
  665. data/spec/integration/associations_test.rb +0 -2454
  666. data/spec/integration/database_test.rb +0 -113
  667. data/spec/integration/dataset_test.rb +0 -1808
  668. data/spec/integration/eager_loader_test.rb +0 -687
  669. data/spec/integration/migrator_test.rb +0 -240
  670. data/spec/integration/model_test.rb +0 -226
  671. data/spec/integration/plugin_test.rb +0 -2240
  672. data/spec/integration/prepared_statement_test.rb +0 -467
  673. data/spec/integration/schema_test.rb +0 -817
  674. data/spec/integration/spec_helper.rb +0 -48
  675. data/spec/integration/timezone_test.rb +0 -86
  676. data/spec/integration/transaction_test.rb +0 -374
  677. data/spec/integration/type_test.rb +0 -133
  678. data/spec/model/association_reflection_spec.rb +0 -525
  679. data/spec/model/associations_spec.rb +0 -4426
  680. data/spec/model/base_spec.rb +0 -759
  681. data/spec/model/class_dataset_methods_spec.rb +0 -146
  682. data/spec/model/dataset_methods_spec.rb +0 -149
  683. data/spec/model/eager_loading_spec.rb +0 -2137
  684. data/spec/model/hooks_spec.rb +0 -604
  685. data/spec/model/inflector_spec.rb +0 -26
  686. data/spec/model/model_spec.rb +0 -982
  687. data/spec/model/plugins_spec.rb +0 -299
  688. data/spec/model/record_spec.rb +0 -2147
  689. data/spec/model/spec_helper.rb +0 -46
  690. data/spec/model/validations_spec.rb +0 -193
  691. data/spec/sequel_coverage.rb +0 -15
  692. data/spec/spec_config.rb +0 -10
@@ -1,253 +0,0 @@
1
- The Most Powerful and Flexible Associations of Any Ruby ORM
2
- -----------------------------------------------------------
3
-
4
- Sequel can now support any association type supported by
5
- ActiveRecord, and many association types ActiveRecord doesn't
6
- support.
7
-
8
- Association callbacks (:before_add, :after_add, :before_remove,
9
- :after_remove) have been added, and work for all association
10
- types. Each of the callback options can be a Symbol specifying an
11
- instance method that takes one argument (the associated object), or a
12
- Proc that takes two arguments (the current object and the associated
13
- object), or an array of Symbols and Procs. Additionally, an
14
- :after_load callback is available, which is running after loading the
15
- associated record(s) from the database.
16
-
17
- Association extensions are now supported:
18
-
19
- class FindOrCreate
20
- def find_or_create(vals)
21
- first(vals) || create(vals)
22
- end
23
- end
24
- class Author < Sequel::Model
25
- one_to_many :authorships, :extend=>FindOrCreate
26
- end
27
- Author.first.authorships_dataset.find_or_create(:name=>'Bob')
28
-
29
- Sequel has been able to support most has_many :through style
30
- associations since 1.3, via many_to_many (since it doesn't break on
31
- join tables that are also model tables, unlike ActiveRecord's
32
- has_and_belongs_to_many). Now it can also support has_many :through
33
- style associations where it goes through a has_many association.
34
-
35
- Sequel can now support polymorphic associations. Polymorphic
36
- associations are really a design flaw, so Sequel doesn't support them
37
- directly, but the tools that Sequel gives you make them pretty easy
38
- to implement.
39
-
40
- Sequel can also support associations that ActiveRecord does not. For
41
- example, a belongs_to association where the column referenced in the
42
- associated table is not the primary key, an association that depends
43
- on multiple columns in each table, or even situations where the
44
- association has a column in the primary table that can be referenced
45
- by any of multiple columns in a second table that has a has_one style
46
- association with the table you want to associate with.
47
-
48
- Some of those associations can be supported for a single object using
49
- custom SQL in ActiveRecord, but none are supported when eager
50
- loading or allow further filtering.
51
-
52
- Not only can all of these cases be supported with Sequel::Model, all
53
- can be supported with eager loading, and can allow for further
54
- filtering. See
55
- http://sequel.rubyforge.org/files/sequel/doc/advanced_associations_rdoc.html
56
- for details and example code for all association types covered above.
57
-
58
- There have also been many additional options added for controlling
59
- eager loading via eager_graph. Every part of the SQL JOINs can now
60
- be controlled via one of the options, so you can use JOIN USING,
61
- NATURAL JOIN, or arbitrary JOIN ON conditions.
62
-
63
- Finally, just to show off the power that Sequel gives you when eager
64
- loading, here is example code that will eagerly load all descendants
65
- and ancestors in a tree structure, without knowing the depth of the
66
- tree:
67
-
68
- class Node < Sequel::Model
69
- set_schema do
70
- primary_key :id
71
- foreign_key :parent_id, :nodes
72
- end
73
- create_table
74
-
75
- many_to_one :parent
76
- one_to_many :children, :key=>:parent_id
77
-
78
- # Only useful when eager loading
79
- many_to_one :ancestors, :eager_loader=>(proc do |key_hash, nodes,
80
- associations|
81
- # Handle cases where the root node has the same parent_id as
82
- primary_key
83
- # and also when it is NULL
84
- non_root_nodes = nodes.reject do |n|
85
- if [nil, n.pk].include?(n.parent_id)
86
- # Make sure root nodes have their parent association set to
87
- nil
88
- n.associations[:parent] = nil
89
- true
90
- else
91
- false
92
- end
93
- end
94
- unless non_root_nodes.empty?
95
- id_map = {}
96
- # Create an map of parent_ids to nodes that have that parent id
97
- non_root_nodes.each{|n| (id_map[n.parent_id] ||= []) << n}
98
- # Doesn't cause an infinte loop, because when only the root node
99
- # is left, this is not called.
100
- Node.filter(Node.primary_key=>id_map.keys).eager(:ancestors).all
101
- do |node|
102
- # Populate the parent association for each node
103
- id_map[node.pk].each{|n| n.associations[:parent] = node}
104
- end
105
- end
106
- end)
107
- many_to_one :descendants, :eager_loader=>(proc do |key_hash, nodes,
108
- associations|
109
- id_map = {}
110
- nodes.each do |n|
111
- # Initialize an empty array of child associations for each
112
- parent node
113
- n.associations[:children] = []
114
- # Populate identity map of nodes
115
- id_map[n.pk] = n
116
- end
117
- # Doesn't cause an infinite loop, because the :eager_loader is not
118
- called
119
- # if no records are returned. Exclude id = parent_id to avoid
120
- infinite loop
121
- # if the root note is one of the returned records and it has
122
- parent_id = id
123
- # instead of parent_id = NULL.
124
- Node.filter(:parent_id=>id_map.keys).exclude(:id=>:parent_id).eager(:descendants).all
125
- do |node|
126
- # Get the parent from the identity map
127
- parent = id_map[node.parent_id]
128
- # Set the child's parent association to the parent
129
- node.associations[:parent] = parent
130
- # Add the child association to the array of children in the
131
- parent
132
- parent.associations[:children] << node
133
- end
134
- end)
135
- end
136
-
137
- nodes = Node.filter(:id < 10).eager(:ancestors, :descendants).all
138
-
139
- New Adapter Features
140
- --------------------
141
-
142
- * PostgreSQL bytea fields are now fully supported.
143
-
144
- * The PostgreSQL adapter now uses the safer connection-specific
145
- string escaping if you are using ruby-pg.
146
-
147
- * The SQLite adapter supports drop_column and add_index.
148
-
149
- * You can now use URL parameters in the connection string, enabling
150
- you to connect to PostgreSQL via a socket using
151
- postgres://user:password@blah/database?host=/tmp
152
-
153
- Other New Features
154
- ------------------
155
-
156
- * Dataset#graph now takes a block which it passes to join_table.
157
-
158
- * Symbol#identifier has been added, which can be used if another
159
- library defines the same operator(s) on Symbol that Sequel defines.
160
-
161
- * Filter blocks now yield a VirtualRow instance, which can yield
162
- Identifiers, QualifiedIdentifiers, or Functions. Like
163
- Symbol#identifier, this is useful if another library defines the
164
- same operator(s) on Symbol that Sequel defines.
165
-
166
- * You can now call Model.to_hash to get an identity map for all
167
- rows (before this required Model.dataset.to_hash).
168
-
169
- * A model that can get it's column information from the schema will
170
- set it in the dataset, potentially saving many queries.
171
-
172
- * Model.validates_presence_of now works correctly for boolean
173
- columns.
174
-
175
- Notable Bug Fixes
176
- -----------------
177
-
178
- * Caching now works with Model subclasses.
179
-
180
- * Model validation methods now work with source reloading.
181
-
182
- * The PostgreSQL adapter no longer raises an Error if you try to
183
- insert a record with the primary key already specified.
184
-
185
- * Sequel no longer messes with the native MySQL adapter, so you can
186
- use Sequel and ActiveRecord with MySQL in the same process.
187
-
188
- * Dataset#count now works correctly for limited dataset.
189
-
190
- * PostgreSQL Database#transaction method yields a connection, similar
191
- to the other adapters.
192
-
193
- * Using a hash argument in #distinct, #order, or #group is treated
194
- as an expression instead of a column alias.
195
-
196
- * Cloned datasets no longer ignore the existing columns unless it is
197
- necessary.
198
-
199
- * The :quote_identifiers and :single_threaded Database options now
200
- work correctly.
201
-
202
- Backwards Incompatible Changes
203
- ------------------------------
204
-
205
- * ParseTree support, deprecated in 2.1.0, has been removed in 2.2.0.
206
- You should use the expression filter syntax instead, perferably
207
- without the block (though it can be used inside a block as well).
208
- This usually involves the following types of changes:
209
-
210
- filter{:x == :y} => filter(:x => :y)
211
- filter{:x << :y} => filter(:x => :y)
212
- filter{:x && :y} => filter(:x & :y) # Don't forget about change
213
- filter{:x || :y} => filter(:x | :y) # in operator precedence
214
- filter{:x.like?('%blah%')} => filter(:x.like('%blah%'))
215
- filter do => filter((:x > 1) & (:y < 2))
216
- :x > 1
217
- :y < 2
218
- end
219
-
220
- * Attempts to save an invalid Model instance will raise an error by
221
- default. To revert to returning a nil value, use:
222
-
223
- Sequel::Model.raise_on_save_failure = false # Global
224
- Album.raise_on_save_failure = false # Class
225
- album = Album.new
226
- album.raise_on_save_failure = false # Instance
227
-
228
- Note that before, save would return false where now it returns nil
229
- if you disable raising on save failure.
230
-
231
- * Dataset#update no longer takes a block, as it's use of the block
232
- depended on ParseTree. With the introduction of the expression
233
- syntax in 2.0.0, it's no longer necessary. You should use a hash
234
- with an expression as the value instead:
235
-
236
- DB[:table].update(:column=>:column + 1)
237
-
238
- * validates_presence of now considers false as present instead of
239
- absent. This is so it works with boolean columns.
240
-
241
- * Dataset#graph ignores any previously selected columns when it is
242
- called for the first time.
243
-
244
- * Dataset#columns ignores any filtering, ordering, or distinct
245
- clauses. This shouldn't cause issues unless you were using
246
- SQL functions with side effects and expecting them to be called
247
- when columns was called (unlikely at best).
248
-
249
- One significant point of note is that the 2.2.0 release will be the
250
- last release with both a sequel_core and sequel gem. Starting
251
- with 2.3.0 they will be combined into one sequel gem. You will still
252
- be able to get just the sequel_core part by requiring 'sequel_core',
253
- but they will be packaged together.
@@ -1,88 +0,0 @@
1
- JRuby and Ruby 1.9 Officially Supported
2
- ---------------------------------------
3
-
4
- Sequel now officially supports JRuby 1.1.3 and Ruby 1.9 (svn revision
5
- 18194 at least). Using JRuby with the JDBC adapter, PostgreSQL,
6
- MySQL, and SQLite now enjoy almost full support, though not
7
- everything works the same as using the native adapter. Depending on
8
- what you are doing, it may make sense to use postgres-pr on JRuby
9
- instead of PostgreSQL-JDBC.
10
-
11
- To use the new JDBC support, the database connection string you give
12
- Sequel is now passed directly to JDBC, here are a few examples:
13
-
14
- Sequel.connect('jdbc:postgresql://host/database?user=*&password=*')
15
- Sequel.connect('jdbc:mysql://host/database?user=*&password=*')
16
- Sequel.connect('jdbc:sqlite::memory:')
17
- Sequel.connect('jdbc:sqlite:relative/path.db')
18
- Sequel.connect('jdbc:sqlite:/absolute/path.db')
19
-
20
- Single Gem
21
- ----------
22
-
23
- Sequel is now distributed as a single gem named sequel, by combining
24
- the previous sequel_core and sequel gems. You can still just
25
- "require 'sequel_core'" if you don't want the model functionality.
26
-
27
- Database Adapter Improvements
28
- -----------------------------
29
-
30
- * Dataset#empty? now works using the MySQL adapter.
31
-
32
- * The Oracle adapter now works with a nonstandard database port.
33
-
34
- * The JDBC adapter should load JDBC drivers automatically for
35
- PostgreSQL, MySQL, SQLite, Oracle, and MSSQL. For PostgreSQL,
36
- MySQL, and SQLite, the jdbc-* gem can be used, for the others, you
37
- must have the correct .jar in your CLASSPATH.
38
-
39
- * The PostgreSQL adapter no longer raises an error when inserting
40
- records into a table without a primary key.
41
-
42
- * Database#disconnect now works for the ADO adapter.
43
-
44
- * The ADO adapter no longer raises an error if the dataset contains
45
- no records.
46
-
47
- * The ODBC adapter no longer errors when converting ::ODBC::Time
48
- values.
49
-
50
- Backwards Incompatible Changes
51
- ------------------------------
52
-
53
- * Sequel::Worker has been removed. There are no known users, and the
54
- specs caused problems on JRuby.
55
-
56
- * Assigning an empty string to a non-string, non-blob model attribute
57
- converts it to nil by default. You can use
58
- "Model.typecast_empty_string_to_nil = false" to get the old
59
- behavior. This should make web development with Sequel
60
- significantly easier, hopefully at no expense to other uses.
61
-
62
- * Database.uri_to_options is now a private class method.
63
-
64
- * Model.create_table! now acts the same as Database.create_table!,
65
- dropping the table unconditionally and then creating it. This was
66
- done for consistency. If you are using Model.create_table! in
67
- production code, you should change it to
68
- "Model.create_table unless Model.table_exists?", otherwise you risk
69
- wiping out your production data. I recommended you use the
70
- migration feature instead of Model.set_schema, as that handles
71
- altering existing tables.
72
-
73
- Other Notable Changes
74
- ---------------------
75
-
76
- * Using validates_length_of more than once on the same attribute with
77
- different options without a tag no longer causes the first use to
78
- be ignored. This was a side effect of the validation tags added
79
- in 2.2.0.
80
-
81
- * Other than the adapters, Sequel now has 100% code coverage (line
82
- coverage).
83
-
84
- * Model#set* methods now return self.
85
-
86
- * An integration test suite was added, testing Sequel against a live
87
- database with nothing mocked, which helped greatly when testing the
88
- new support for JDBC adapters.
@@ -1,106 +0,0 @@
1
- Prepared Statements/Bound Variables
2
- ===================================
3
-
4
- Sequel now supports prepared statements and bound variables. No
5
- matter which database you are using, Sequel uses exactly the same API.
6
- To specify placeholders, you use the :$placeholder syntax:
7
-
8
- ds = DB[:items].filter(:name=>:$n)
9
-
10
- To use a bound variable:
11
-
12
- ds.call(:select, :n=>'Jim')
13
-
14
- This will do the equivalent of selecting records that have the name
15
- 'Jim'. In addition to :select, you can use :first or :delete. There
16
- is also support for bound variables when inserting or updating
17
- records:
18
-
19
- ds.call(:update, {:n=>'Jim', :new_n=>'Bob'}, :name=>:$new_n)
20
-
21
- Which will update all records that have the name 'Jim' to have the
22
- name 'Bob'.
23
-
24
- Prepared statement support is very similar to bound variable support,
25
- except that the statement is first prepared with a name:
26
-
27
- ps = ds.prepare(:select, :select_by_name)
28
-
29
- It is then called later with the bound arguments to use:
30
-
31
- ps.call(:n=>'Jim')
32
- DB.call(:select_by_name, :n=>'Jim') # same as above
33
-
34
- For inserting or updating, the hash to use when inserting or updating
35
- is given to prepare:
36
-
37
- ps2 = ds.prepare(:update, :update_name, :name=>:$new_n)
38
- ps2.call(:n=>'Jim', :new_n=>'Bob')
39
-
40
- There is some level of native support for these features in the
41
- PostgreSQL, MySQL, SQLite, and JDBC adapters. For other adapters,
42
- support is emulated, but it shouldn't be too difficult to add native
43
- support for them.
44
-
45
- For more details see:
46
- http://sequel.rubyforge.org/rdoc/files/doc/prepared_statements_rdoc.html
47
-
48
- Read-Only Slave/Writable Master and Database Sharding
49
- =====================================================
50
-
51
- Sequel now has built in support for master/slave database
52
- configurations, just by setting an option in Sequel.connect:
53
-
54
- DB=Sequel.connect('postgres://master_server/database', \
55
- :servers=>{:read_only=>{:host=>'slave_server'}})
56
-
57
- That will use slave_server for SELECT queries and master_server for
58
- other queries. It's fairly easy to use multiple slaves or even
59
- multiple masters, examples are included in the link below.
60
-
61
- Sharding support requires some code other than the database
62
- configuration, but is still fairly simple. For example, to set up
63
- a 16 shard configuration based on a hex character:
64
-
65
- servers = {}
66
- (('0'..'9').to_a + ('a'..'f').to_a).each do |hex|
67
- servers[hex.to_sym] = {:host=>"hash_host_#{hex}"}
68
- end
69
- DB=Sequel.connect('postgres://hash_host/hashes', :servers=>servers)
70
-
71
- To set which shard to use for a query, use the Dataset#server method:
72
-
73
- DB[:hashes].server(:a).filter(:hash=>/31337/)
74
-
75
- For more details see:
76
- http://sequel.rubyforge.org/rdoc/files/doc/sharding_rdoc.html
77
-
78
- Other Changes
79
- =============
80
-
81
- * The sequel.rubyforge.org website has a new design thanks to boof.
82
- The online RDoc is now located at http://sequel.rubyforge.org/rdoc.
83
-
84
- * Support was added for anonymous column names in the ADO adapter.
85
-
86
- * Better MSSQL support in the ADO, ODBC, and JDBC adapters. The
87
- odbc_mssql adapter has been removed. If you use MSSQL with ODBC,
88
- please use the odbc adapter with a :db_type=>'mssql' option.
89
-
90
- * The following Sequel::Error exception subclasses were removed:
91
- InvalidExpression, InvalidFilter, InvalidJoinType, and WorkerStop.
92
-
93
- * Documentation was added for the PostgreSQL, MySQL, SQLite, and
94
- JDBC adapters.
95
-
96
- * Various internal interfaces were refactored. For example, if you
97
- use an adapter not included with Sequel, it probably won't work
98
- until you update it to the new internal API.
99
-
100
- * Many low level methods (such as Database#transaction), now take
101
- an optional server argument to indicate which server to use.
102
-
103
- * Model plugins that have a DatasetMethods module with non-public
104
- methods no longer have Model methods created that call those
105
- methods.
106
-
@@ -1,137 +0,0 @@
1
- New Features
2
- ------------
3
-
4
- * The values that are used to insert/update records can now be
5
- scoped similar to how filter expressions can be scoped.
6
- set_defaults is used to set defaults which can be overridden,
7
- and set_overrides is used to set defaults which cannot be
8
- overridden:
9
-
10
- DB[:t].set_defaults(:x=>1).insert_sql
11
- # => INSERT INTO t (x) VALUES (1)
12
- DB[:t].set_defaults(:x=>1).insert_sql(:x=>2)
13
- # => INSERT INTO t (x) VALUES (2)
14
- DB[:t].set_defaults(:x=>1).insert_sql(:y=>2)
15
- # => INSERT INTO t (x, y) VALUES (1, 2)
16
- DB[:t].set_overrides(:x=>1).insert_sql(:x=>2)
17
- # => INSERT INTO t (x) VALUES (1)
18
-
19
- The difference between set_defaults and set_overrides is that
20
- with set_defaults, the last value takes precedence, while with
21
- set_overrides, the first value takes precedence.
22
-
23
- * The schema generators now support creating and altering tables
24
- with composite primary and/or foreign keys:
25
-
26
- DB.create_table(:items) do
27
- integer :id
28
- text :name
29
- primary_key [:id, :name]
30
- foreign_key [:id, :name], :other_table, \
31
- :key=>[:item_id, :item_name]
32
- end
33
-
34
- DB.alter_table(:items) do
35
- add_primary_key [:id, :name]
36
- add_foreign_key [:id, :name], :other_table, \
37
- :key=>[:item_id, :item_name]
38
- end
39
-
40
- * The AlterTableGenerator now supports unique constraints:
41
-
42
- DB.alter_table(:items) do
43
- add_unique_constraint [:aaa, :bbb, :ccc], :name => :con3
44
- end
45
-
46
- * The schema generators now support ON UPDATE (previously, they only
47
- supported ON DELETE):
48
-
49
- DB.create_table(:items) do
50
- foreign_key :project_id, :projects, :on_update => :cascade
51
- end
52
-
53
- * When connecting to a PostgreSQL server version 8.2 and higher,
54
- Sequel now uses the INSERT ... RETURNING ... syntax, which should
55
- speed up row inserts on PostgreSQL. In addition, Sequel Models
56
- use RETURNING * to speed up model object creation.
57
-
58
- * You can now validate multiple attributes at once. This is useful
59
- if the combination of two or more attribute values is important,
60
- such as checking the uniqueness of multiple columns.
61
- validates_uniqueness_of now supports this directly:
62
-
63
- validates_uniqueness_of [:column1, :column2]
64
-
65
- This protects against the database having multiple rows with the
66
- same values for both :column1 and :column2. This is different
67
- from:
68
-
69
- validates_uniqueness_of :column1, :column2
70
-
71
- Which checks that the value of column1 is unique in the table, and
72
- that the value of column2 is unique in the table (which is much
73
- more restrictive).
74
-
75
- Other Improvements
76
- ------------------
77
-
78
- * Dataset methods insert_sql, delete_sql, and update_sql respect the
79
- :sql option, allowing you to do things such as:
80
-
81
- ds = DB['INSERT INTO t (time) VALUES (CURRENT_TIMESTAMP)']
82
- ds.insert
83
- ds.insert
84
-
85
- * The database adapters (at least MySQL, PostgreSQL, SQLite, and
86
- JDBC) generally raise Sequel::DatabaseError for database problems,
87
- making it easier to tell what is a true database error versus an
88
- error raised by Sequel itself.
89
-
90
- * Sequel uses the async features of ruby-pg so that the entire
91
- interpreter is not blocked while waiting for the results of
92
- queries.
93
-
94
- * Sequel now supports the 2008.08.17 version of ruby-pg.
95
-
96
- * MSSQL support has been improved when using the ODBC and ADO
97
- adapters.
98
-
99
- * Index names are quoted and creating or dropping indexes.
100
-
101
- * Automatically generated column accessor methods no longer override
102
- instance methods specified by plugins.
103
-
104
- * Inserting a row with an already specified primary key inside a
105
- transaction now works correctly when using PostgreSQL.
106
-
107
- * before_save and before_update hooks now work as expected when using
108
- save_changes.
109
-
110
- * count and paginate now work correctly on graphed datasets.
111
-
112
- Backwards Compatibility
113
- -----------------------
114
-
115
- * The SQLite adapter now raises Sequel::DatabaseError instead of
116
- Sequel::Error::InvalidStatement whenever an SQLite3::Exception is
117
- raised by the SQLite3 driver.
118
-
119
- * Date and DateTime conversions now convert 2 digit years. To revert
120
- to the previous behavior:
121
-
122
- Sequel.convert_two_digit_years = false
123
-
124
- Note that Ruby 1.8 and 1.9 handle Date parsing differently, so
125
- there is no backwards compatibility change for Ruby 1.9. However,
126
- this also means that the MM/DD/YY date syntax commonly used in the
127
- United States is not always parsed correctly on Ruby 1.9, greatly
128
- limiting the use of 2 digit year conversion.
129
-
130
- * You can no longer abuse the SQL function syntax for specifying
131
- database types. For example, you must change:
132
-
133
- :type=>:varchar[255]
134
-
135
- to:
136
-
137
- :type=>:varchar, :size=>255