sequel 5.8.0 → 5.38.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 (510) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +409 -1795
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +4 -4
  5. data/bin/sequel +4 -0
  6. data/doc/advanced_associations.rdoc +136 -18
  7. data/doc/association_basics.rdoc +10 -5
  8. data/doc/cheat_sheet.rdoc +1 -0
  9. data/doc/code_order.rdoc +12 -2
  10. data/doc/dataset_filtering.rdoc +17 -2
  11. data/doc/mass_assignment.rdoc +3 -3
  12. data/doc/model_dataset_method_design.rdoc +1 -1
  13. data/doc/model_plugins.rdoc +1 -1
  14. data/doc/opening_databases.rdoc +30 -8
  15. data/doc/postgresql.rdoc +107 -2
  16. data/doc/release_notes/5.10.0.txt +84 -0
  17. data/doc/release_notes/5.11.0.txt +83 -0
  18. data/doc/release_notes/5.12.0.txt +141 -0
  19. data/doc/release_notes/5.13.0.txt +27 -0
  20. data/doc/release_notes/5.14.0.txt +63 -0
  21. data/doc/release_notes/5.15.0.txt +39 -0
  22. data/doc/release_notes/5.16.0.txt +110 -0
  23. data/doc/release_notes/5.17.0.txt +31 -0
  24. data/doc/release_notes/5.18.0.txt +69 -0
  25. data/doc/release_notes/5.19.0.txt +28 -0
  26. data/doc/release_notes/5.20.0.txt +89 -0
  27. data/doc/release_notes/5.21.0.txt +87 -0
  28. data/doc/release_notes/5.22.0.txt +48 -0
  29. data/doc/release_notes/5.23.0.txt +56 -0
  30. data/doc/release_notes/5.24.0.txt +56 -0
  31. data/doc/release_notes/5.25.0.txt +32 -0
  32. data/doc/release_notes/5.26.0.txt +35 -0
  33. data/doc/release_notes/5.27.0.txt +21 -0
  34. data/doc/release_notes/5.28.0.txt +16 -0
  35. data/doc/release_notes/5.29.0.txt +22 -0
  36. data/doc/release_notes/5.30.0.txt +20 -0
  37. data/doc/release_notes/5.31.0.txt +148 -0
  38. data/doc/release_notes/5.32.0.txt +46 -0
  39. data/doc/release_notes/5.33.0.txt +24 -0
  40. data/doc/release_notes/5.34.0.txt +40 -0
  41. data/doc/release_notes/5.35.0.txt +56 -0
  42. data/doc/release_notes/5.36.0.txt +60 -0
  43. data/doc/release_notes/5.37.0.txt +30 -0
  44. data/doc/release_notes/5.38.0.txt +28 -0
  45. data/doc/release_notes/5.9.0.txt +99 -0
  46. data/doc/security.rdoc +10 -0
  47. data/doc/sharding.rdoc +42 -28
  48. data/doc/sql.rdoc +12 -0
  49. data/doc/testing.rdoc +24 -17
  50. data/doc/transactions.rdoc +78 -0
  51. data/doc/validations.rdoc +2 -2
  52. data/lib/sequel/adapters/ado.rb +26 -18
  53. data/lib/sequel/adapters/ado/access.rb +2 -2
  54. data/lib/sequel/adapters/ado/mssql.rb +5 -8
  55. data/lib/sequel/adapters/amalgalite.rb +1 -1
  56. data/lib/sequel/adapters/jdbc.rb +71 -27
  57. data/lib/sequel/adapters/jdbc/mysql.rb +6 -6
  58. data/lib/sequel/adapters/jdbc/oracle.rb +7 -6
  59. data/lib/sequel/adapters/jdbc/postgresql.rb +17 -28
  60. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +5 -6
  61. data/lib/sequel/adapters/jdbc/sqlite.rb +33 -2
  62. data/lib/sequel/adapters/jdbc/sqlserver.rb +4 -3
  63. data/lib/sequel/adapters/jdbc/transactions.rb +14 -28
  64. data/lib/sequel/adapters/mysql.rb +14 -15
  65. data/lib/sequel/adapters/mysql2.rb +5 -3
  66. data/lib/sequel/adapters/odbc.rb +4 -6
  67. data/lib/sequel/adapters/oracle.rb +7 -7
  68. data/lib/sequel/adapters/postgres.rb +52 -16
  69. data/lib/sequel/adapters/shared/access.rb +16 -12
  70. data/lib/sequel/adapters/shared/db2.rb +5 -0
  71. data/lib/sequel/adapters/shared/mssql.rb +41 -18
  72. data/lib/sequel/adapters/shared/mysql.rb +66 -19
  73. data/lib/sequel/adapters/shared/oracle.rb +29 -23
  74. data/lib/sequel/adapters/shared/postgres.rb +341 -95
  75. data/lib/sequel/adapters/shared/sqlanywhere.rb +23 -10
  76. data/lib/sequel/adapters/shared/sqlite.rb +174 -21
  77. data/lib/sequel/adapters/sqlanywhere.rb +33 -17
  78. data/lib/sequel/adapters/sqlite.rb +78 -68
  79. data/lib/sequel/adapters/tinytds.rb +14 -6
  80. data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +2 -5
  81. data/lib/sequel/adapters/utils/mysql_mysql2.rb +5 -1
  82. data/lib/sequel/connection_pool.rb +2 -6
  83. data/lib/sequel/connection_pool/sharded_single.rb +7 -4
  84. data/lib/sequel/connection_pool/sharded_threaded.rb +32 -21
  85. data/lib/sequel/connection_pool/single.rb +1 -1
  86. data/lib/sequel/connection_pool/threaded.rb +26 -11
  87. data/lib/sequel/core.rb +327 -319
  88. data/lib/sequel/database/connecting.rb +7 -8
  89. data/lib/sequel/database/logging.rb +7 -1
  90. data/lib/sequel/database/misc.rb +68 -34
  91. data/lib/sequel/database/query.rb +6 -4
  92. data/lib/sequel/database/schema_generator.rb +31 -11
  93. data/lib/sequel/database/schema_methods.rb +32 -22
  94. data/lib/sequel/database/transactions.rb +129 -25
  95. data/lib/sequel/dataset.rb +4 -2
  96. data/lib/sequel/dataset/actions.rb +34 -23
  97. data/lib/sequel/dataset/features.rb +34 -0
  98. data/lib/sequel/dataset/graph.rb +27 -11
  99. data/lib/sequel/dataset/misc.rb +17 -3
  100. data/lib/sequel/dataset/placeholder_literalizer.rb +50 -21
  101. data/lib/sequel/dataset/prepared_statements.rb +96 -26
  102. data/lib/sequel/dataset/query.rb +43 -8
  103. data/lib/sequel/dataset/sql.rb +189 -41
  104. data/lib/sequel/deprecated.rb +3 -1
  105. data/lib/sequel/exceptions.rb +2 -0
  106. data/lib/sequel/extensions/_pretty_table.rb +1 -2
  107. data/lib/sequel/extensions/any_not_empty.rb +45 -0
  108. data/lib/sequel/extensions/caller_logging.rb +79 -0
  109. data/lib/sequel/extensions/columns_introspection.rb +1 -2
  110. data/lib/sequel/extensions/connection_expiration.rb +6 -6
  111. data/lib/sequel/extensions/connection_validator.rb +7 -6
  112. data/lib/sequel/extensions/constant_sql_override.rb +65 -0
  113. data/lib/sequel/extensions/constraint_validations.rb +53 -28
  114. data/lib/sequel/extensions/core_refinements.rb +2 -0
  115. data/lib/sequel/extensions/duplicate_columns_handler.rb +2 -0
  116. data/lib/sequel/extensions/escaped_like.rb +100 -0
  117. data/lib/sequel/extensions/eval_inspect.rb +3 -1
  118. data/lib/sequel/extensions/exclude_or_null.rb +68 -0
  119. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  120. data/lib/sequel/extensions/index_caching.rb +9 -7
  121. data/lib/sequel/extensions/integer64.rb +3 -1
  122. data/lib/sequel/extensions/looser_typecasting.rb +3 -3
  123. data/lib/sequel/extensions/migration.rb +13 -6
  124. data/lib/sequel/extensions/named_timezones.rb +84 -23
  125. data/lib/sequel/extensions/pg_array.rb +87 -79
  126. data/lib/sequel/extensions/pg_array_ops.rb +14 -6
  127. data/lib/sequel/extensions/pg_enum.rb +34 -18
  128. data/lib/sequel/extensions/pg_extended_date_support.rb +34 -14
  129. data/lib/sequel/extensions/pg_hstore.rb +6 -0
  130. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -0
  131. data/lib/sequel/extensions/pg_inet.rb +15 -5
  132. data/lib/sequel/extensions/pg_interval.rb +2 -0
  133. data/lib/sequel/extensions/pg_json.rb +387 -123
  134. data/lib/sequel/extensions/pg_json_ops.rb +168 -0
  135. data/lib/sequel/extensions/pg_range.rb +20 -10
  136. data/lib/sequel/extensions/pg_range_ops.rb +2 -0
  137. data/lib/sequel/extensions/pg_row.rb +3 -2
  138. data/lib/sequel/extensions/pg_row_ops.rb +24 -0
  139. data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -2
  140. data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
  141. data/lib/sequel/extensions/query.rb +1 -0
  142. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  143. data/lib/sequel/extensions/s.rb +2 -0
  144. data/lib/sequel/extensions/schema_dumper.rb +13 -7
  145. data/lib/sequel/extensions/sequel_4_dataset_methods.rb +4 -2
  146. data/lib/sequel/extensions/server_block.rb +18 -7
  147. data/lib/sequel/extensions/sql_comments.rb +2 -2
  148. data/lib/sequel/extensions/symbol_aref_refinement.rb +2 -0
  149. data/lib/sequel/extensions/symbol_as_refinement.rb +2 -0
  150. data/lib/sequel/extensions/to_dot.rb +9 -3
  151. data/lib/sequel/model.rb +3 -1
  152. data/lib/sequel/model/associations.rb +403 -69
  153. data/lib/sequel/model/base.rb +170 -90
  154. data/lib/sequel/model/plugins.rb +105 -0
  155. data/lib/sequel/plugins/after_initialize.rb +1 -1
  156. data/lib/sequel/plugins/association_dependencies.rb +3 -3
  157. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  158. data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
  159. data/lib/sequel/plugins/association_pks.rb +74 -22
  160. data/lib/sequel/plugins/association_proxies.rb +6 -2
  161. data/lib/sequel/plugins/auto_validations.rb +36 -17
  162. data/lib/sequel/plugins/blacklist_security.rb +1 -2
  163. data/lib/sequel/plugins/boolean_subsets.rb +4 -1
  164. data/lib/sequel/plugins/caching.rb +3 -0
  165. data/lib/sequel/plugins/class_table_inheritance.rb +62 -34
  166. data/lib/sequel/plugins/composition.rb +13 -9
  167. data/lib/sequel/plugins/csv_serializer.rb +28 -9
  168. data/lib/sequel/plugins/defaults_setter.rb +2 -2
  169. data/lib/sequel/plugins/dirty.rb +60 -22
  170. data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
  171. data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
  172. data/lib/sequel/plugins/finder.rb +2 -2
  173. data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
  174. data/lib/sequel/plugins/hook_class_methods.rb +17 -5
  175. data/lib/sequel/plugins/insert_conflict.rb +72 -0
  176. data/lib/sequel/plugins/instance_specific_default.rb +113 -0
  177. data/lib/sequel/plugins/inverted_subsets.rb +2 -2
  178. data/lib/sequel/plugins/json_serializer.rb +21 -14
  179. data/lib/sequel/plugins/lazy_attributes.rb +1 -1
  180. data/lib/sequel/plugins/list.rb +22 -10
  181. data/lib/sequel/plugins/many_through_many.rb +1 -1
  182. data/lib/sequel/plugins/nested_attributes.rb +27 -5
  183. data/lib/sequel/plugins/pg_array_associations.rb +12 -9
  184. data/lib/sequel/plugins/pg_auto_constraint_validations.rb +149 -61
  185. data/lib/sequel/plugins/prepared_statements.rb +6 -12
  186. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -3
  187. data/lib/sequel/plugins/rcte_tree.rb +20 -22
  188. data/lib/sequel/plugins/sharding.rb +13 -7
  189. data/lib/sequel/plugins/single_table_inheritance.rb +20 -15
  190. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  191. data/lib/sequel/plugins/static_cache.rb +36 -17
  192. data/lib/sequel/plugins/static_cache_cache.rb +53 -0
  193. data/lib/sequel/plugins/string_stripper.rb +1 -1
  194. data/lib/sequel/plugins/subclasses.rb +2 -0
  195. data/lib/sequel/plugins/subset_conditions.rb +2 -2
  196. data/lib/sequel/plugins/tactical_eager_loading.rb +73 -2
  197. data/lib/sequel/plugins/throw_failures.rb +110 -0
  198. data/lib/sequel/plugins/tree.rb +49 -31
  199. data/lib/sequel/plugins/typecast_on_load.rb +3 -2
  200. data/lib/sequel/plugins/validation_class_methods.rb +11 -5
  201. data/lib/sequel/plugins/validation_helpers.rb +2 -2
  202. data/lib/sequel/sql.rb +120 -30
  203. data/lib/sequel/timezones.rb +55 -14
  204. data/lib/sequel/version.rb +6 -1
  205. metadata +101 -361
  206. data/Rakefile +0 -151
  207. data/doc/release_notes/4.0.0.txt +0 -262
  208. data/doc/release_notes/4.1.0.txt +0 -85
  209. data/doc/release_notes/4.10.0.txt +0 -226
  210. data/doc/release_notes/4.11.0.txt +0 -147
  211. data/doc/release_notes/4.12.0.txt +0 -105
  212. data/doc/release_notes/4.13.0.txt +0 -169
  213. data/doc/release_notes/4.14.0.txt +0 -68
  214. data/doc/release_notes/4.15.0.txt +0 -56
  215. data/doc/release_notes/4.16.0.txt +0 -36
  216. data/doc/release_notes/4.17.0.txt +0 -38
  217. data/doc/release_notes/4.18.0.txt +0 -36
  218. data/doc/release_notes/4.19.0.txt +0 -45
  219. data/doc/release_notes/4.2.0.txt +0 -129
  220. data/doc/release_notes/4.20.0.txt +0 -79
  221. data/doc/release_notes/4.21.0.txt +0 -94
  222. data/doc/release_notes/4.22.0.txt +0 -72
  223. data/doc/release_notes/4.23.0.txt +0 -65
  224. data/doc/release_notes/4.24.0.txt +0 -99
  225. data/doc/release_notes/4.25.0.txt +0 -181
  226. data/doc/release_notes/4.26.0.txt +0 -44
  227. data/doc/release_notes/4.27.0.txt +0 -78
  228. data/doc/release_notes/4.28.0.txt +0 -57
  229. data/doc/release_notes/4.29.0.txt +0 -41
  230. data/doc/release_notes/4.3.0.txt +0 -40
  231. data/doc/release_notes/4.30.0.txt +0 -37
  232. data/doc/release_notes/4.31.0.txt +0 -57
  233. data/doc/release_notes/4.32.0.txt +0 -132
  234. data/doc/release_notes/4.33.0.txt +0 -88
  235. data/doc/release_notes/4.34.0.txt +0 -86
  236. data/doc/release_notes/4.35.0.txt +0 -130
  237. data/doc/release_notes/4.36.0.txt +0 -116
  238. data/doc/release_notes/4.37.0.txt +0 -50
  239. data/doc/release_notes/4.38.0.txt +0 -67
  240. data/doc/release_notes/4.39.0.txt +0 -127
  241. data/doc/release_notes/4.4.0.txt +0 -92
  242. data/doc/release_notes/4.40.0.txt +0 -179
  243. data/doc/release_notes/4.41.0.txt +0 -77
  244. data/doc/release_notes/4.42.0.txt +0 -221
  245. data/doc/release_notes/4.43.0.txt +0 -87
  246. data/doc/release_notes/4.44.0.txt +0 -125
  247. data/doc/release_notes/4.45.0.txt +0 -370
  248. data/doc/release_notes/4.46.0.txt +0 -404
  249. data/doc/release_notes/4.47.0.txt +0 -56
  250. data/doc/release_notes/4.48.0.txt +0 -293
  251. data/doc/release_notes/4.49.0.txt +0 -222
  252. data/doc/release_notes/4.5.0.txt +0 -34
  253. data/doc/release_notes/4.6.0.txt +0 -30
  254. data/doc/release_notes/4.7.0.txt +0 -103
  255. data/doc/release_notes/4.8.0.txt +0 -175
  256. data/doc/release_notes/4.9.0.txt +0 -190
  257. data/spec/adapter_spec.rb +0 -4
  258. data/spec/adapters/db2_spec.rb +0 -170
  259. data/spec/adapters/mssql_spec.rb +0 -804
  260. data/spec/adapters/mysql_spec.rb +0 -1041
  261. data/spec/adapters/oracle_spec.rb +0 -327
  262. data/spec/adapters/postgres_spec.rb +0 -4000
  263. data/spec/adapters/spec_helper.rb +0 -43
  264. data/spec/adapters/sqlanywhere_spec.rb +0 -97
  265. data/spec/adapters/sqlite_spec.rb +0 -600
  266. data/spec/bin_spec.rb +0 -269
  267. data/spec/core/connection_pool_spec.rb +0 -1228
  268. data/spec/core/database_spec.rb +0 -2673
  269. data/spec/core/dataset_spec.rb +0 -5419
  270. data/spec/core/deprecated_spec.rb +0 -70
  271. data/spec/core/expression_filters_spec.rb +0 -1344
  272. data/spec/core/mock_adapter_spec.rb +0 -722
  273. data/spec/core/object_graph_spec.rb +0 -306
  274. data/spec/core/placeholder_literalizer_spec.rb +0 -166
  275. data/spec/core/schema_generator_spec.rb +0 -214
  276. data/spec/core/schema_spec.rb +0 -1820
  277. data/spec/core/spec_helper.rb +0 -23
  278. data/spec/core/version_spec.rb +0 -7
  279. data/spec/core_extensions_spec.rb +0 -762
  280. data/spec/core_model_spec.rb +0 -2
  281. data/spec/core_spec.rb +0 -1
  282. data/spec/deprecation_helper.rb +0 -30
  283. data/spec/extensions/accessed_columns_spec.rb +0 -51
  284. data/spec/extensions/active_model_spec.rb +0 -99
  285. data/spec/extensions/after_initialize_spec.rb +0 -24
  286. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  287. data/spec/extensions/association_dependencies_spec.rb +0 -125
  288. data/spec/extensions/association_pks_spec.rb +0 -423
  289. data/spec/extensions/association_proxies_spec.rb +0 -100
  290. data/spec/extensions/auto_literal_strings_spec.rb +0 -205
  291. data/spec/extensions/auto_validations_spec.rb +0 -202
  292. data/spec/extensions/blacklist_security_spec.rb +0 -95
  293. data/spec/extensions/blank_spec.rb +0 -69
  294. data/spec/extensions/boolean_readers_spec.rb +0 -93
  295. data/spec/extensions/boolean_subsets_spec.rb +0 -47
  296. data/spec/extensions/caching_spec.rb +0 -273
  297. data/spec/extensions/class_table_inheritance_spec.rb +0 -568
  298. data/spec/extensions/column_conflicts_spec.rb +0 -75
  299. data/spec/extensions/column_select_spec.rb +0 -129
  300. data/spec/extensions/columns_introspection_spec.rb +0 -90
  301. data/spec/extensions/columns_updated_spec.rb +0 -35
  302. data/spec/extensions/composition_spec.rb +0 -248
  303. data/spec/extensions/connection_expiration_spec.rb +0 -133
  304. data/spec/extensions/connection_validator_spec.rb +0 -127
  305. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
  306. data/spec/extensions/constraint_validations_spec.rb +0 -395
  307. data/spec/extensions/core_refinements_spec.rb +0 -528
  308. data/spec/extensions/csv_serializer_spec.rb +0 -183
  309. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  310. data/spec/extensions/dataset_associations_spec.rb +0 -365
  311. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  312. data/spec/extensions/date_arithmetic_spec.rb +0 -181
  313. data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
  314. data/spec/extensions/def_dataset_method_spec.rb +0 -100
  315. data/spec/extensions/defaults_setter_spec.rb +0 -141
  316. data/spec/extensions/delay_add_association_spec.rb +0 -73
  317. data/spec/extensions/dirty_spec.rb +0 -189
  318. data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
  319. data/spec/extensions/eager_each_spec.rb +0 -62
  320. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  321. data/spec/extensions/error_splitter_spec.rb +0 -18
  322. data/spec/extensions/error_sql_spec.rb +0 -20
  323. data/spec/extensions/eval_inspect_spec.rb +0 -74
  324. data/spec/extensions/finder_spec.rb +0 -260
  325. data/spec/extensions/force_encoding_spec.rb +0 -126
  326. data/spec/extensions/freeze_datasets_spec.rb +0 -31
  327. data/spec/extensions/graph_each_spec.rb +0 -113
  328. data/spec/extensions/hook_class_methods_spec.rb +0 -380
  329. data/spec/extensions/identifier_mangling_spec.rb +0 -201
  330. data/spec/extensions/implicit_subquery_spec.rb +0 -58
  331. data/spec/extensions/index_caching_spec.rb +0 -66
  332. data/spec/extensions/inflector_spec.rb +0 -183
  333. data/spec/extensions/input_transformer_spec.rb +0 -69
  334. data/spec/extensions/insert_returning_select_spec.rb +0 -72
  335. data/spec/extensions/instance_filters_spec.rb +0 -79
  336. data/spec/extensions/instance_hooks_spec.rb +0 -246
  337. data/spec/extensions/integer64_spec.rb +0 -22
  338. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  339. data/spec/extensions/json_serializer_spec.rb +0 -336
  340. data/spec/extensions/lazy_attributes_spec.rb +0 -183
  341. data/spec/extensions/list_spec.rb +0 -275
  342. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  343. data/spec/extensions/many_through_many_spec.rb +0 -2177
  344. data/spec/extensions/migration_spec.rb +0 -840
  345. data/spec/extensions/modification_detection_spec.rb +0 -93
  346. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
  347. data/spec/extensions/named_timezones_spec.rb +0 -109
  348. data/spec/extensions/nested_attributes_spec.rb +0 -703
  349. data/spec/extensions/null_dataset_spec.rb +0 -85
  350. data/spec/extensions/optimistic_locking_spec.rb +0 -127
  351. data/spec/extensions/pagination_spec.rb +0 -116
  352. data/spec/extensions/pg_array_associations_spec.rb +0 -802
  353. data/spec/extensions/pg_array_ops_spec.rb +0 -144
  354. data/spec/extensions/pg_array_spec.rb +0 -398
  355. data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -165
  356. data/spec/extensions/pg_enum_spec.rb +0 -113
  357. data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
  358. data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
  359. data/spec/extensions/pg_hstore_spec.rb +0 -219
  360. data/spec/extensions/pg_inet_ops_spec.rb +0 -102
  361. data/spec/extensions/pg_inet_spec.rb +0 -72
  362. data/spec/extensions/pg_interval_spec.rb +0 -103
  363. data/spec/extensions/pg_json_ops_spec.rb +0 -289
  364. data/spec/extensions/pg_json_spec.rb +0 -262
  365. data/spec/extensions/pg_loose_count_spec.rb +0 -23
  366. data/spec/extensions/pg_range_ops_spec.rb +0 -60
  367. data/spec/extensions/pg_range_spec.rb +0 -487
  368. data/spec/extensions/pg_row_ops_spec.rb +0 -61
  369. data/spec/extensions/pg_row_plugin_spec.rb +0 -60
  370. data/spec/extensions/pg_row_spec.rb +0 -363
  371. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
  372. data/spec/extensions/pg_timestamptz_spec.rb +0 -17
  373. data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
  374. data/spec/extensions/prepared_statements_spec.rb +0 -182
  375. data/spec/extensions/pretty_table_spec.rb +0 -123
  376. data/spec/extensions/query_spec.rb +0 -94
  377. data/spec/extensions/rcte_tree_spec.rb +0 -381
  378. data/spec/extensions/round_timestamps_spec.rb +0 -39
  379. data/spec/extensions/s_spec.rb +0 -60
  380. data/spec/extensions/schema_caching_spec.rb +0 -64
  381. data/spec/extensions/schema_dumper_spec.rb +0 -868
  382. data/spec/extensions/select_remove_spec.rb +0 -38
  383. data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
  384. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  385. data/spec/extensions/serialization_spec.rb +0 -365
  386. data/spec/extensions/server_block_spec.rb +0 -97
  387. data/spec/extensions/server_logging_spec.rb +0 -45
  388. data/spec/extensions/sharding_spec.rb +0 -189
  389. data/spec/extensions/shared_caching_spec.rb +0 -151
  390. data/spec/extensions/single_table_inheritance_spec.rb +0 -347
  391. data/spec/extensions/singular_table_names_spec.rb +0 -22
  392. data/spec/extensions/skip_create_refresh_spec.rb +0 -18
  393. data/spec/extensions/spec_helper.rb +0 -61
  394. data/spec/extensions/split_array_nil_spec.rb +0 -24
  395. data/spec/extensions/split_values_spec.rb +0 -57
  396. data/spec/extensions/sql_comments_spec.rb +0 -33
  397. data/spec/extensions/sql_expr_spec.rb +0 -59
  398. data/spec/extensions/static_cache_spec.rb +0 -410
  399. data/spec/extensions/string_agg_spec.rb +0 -90
  400. data/spec/extensions/string_date_time_spec.rb +0 -95
  401. data/spec/extensions/string_stripper_spec.rb +0 -68
  402. data/spec/extensions/subclasses_spec.rb +0 -79
  403. data/spec/extensions/subset_conditions_spec.rb +0 -38
  404. data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
  405. data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
  406. data/spec/extensions/synchronize_sql_spec.rb +0 -124
  407. data/spec/extensions/table_select_spec.rb +0 -83
  408. data/spec/extensions/tactical_eager_loading_spec.rb +0 -141
  409. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  410. data/spec/extensions/timestamps_spec.rb +0 -209
  411. data/spec/extensions/to_dot_spec.rb +0 -153
  412. data/spec/extensions/touch_spec.rb +0 -226
  413. data/spec/extensions/tree_spec.rb +0 -284
  414. data/spec/extensions/typecast_on_load_spec.rb +0 -86
  415. data/spec/extensions/unlimited_update_spec.rb +0 -21
  416. data/spec/extensions/update_or_create_spec.rb +0 -83
  417. data/spec/extensions/update_primary_key_spec.rb +0 -105
  418. data/spec/extensions/update_refresh_spec.rb +0 -59
  419. data/spec/extensions/uuid_spec.rb +0 -101
  420. data/spec/extensions/validate_associated_spec.rb +0 -52
  421. data/spec/extensions/validation_class_methods_spec.rb +0 -1040
  422. data/spec/extensions/validation_contexts_spec.rb +0 -31
  423. data/spec/extensions/validation_helpers_spec.rb +0 -525
  424. data/spec/extensions/whitelist_security_spec.rb +0 -157
  425. data/spec/extensions/xml_serializer_spec.rb +0 -213
  426. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  427. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  428. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  429. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  430. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  431. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  432. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  433. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  434. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  435. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  436. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  437. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  438. data/spec/files/double_migration/001_create_sessions.rb +0 -9
  439. data/spec/files/double_migration/002_create_nodes.rb +0 -19
  440. data/spec/files/double_migration/003_3_create_users.rb +0 -4
  441. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  442. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  443. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  444. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  445. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  446. data/spec/files/empty_migration/001_create_sessions.rb +0 -9
  447. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  448. data/spec/files/empty_migration/003_3_create_users.rb +0 -4
  449. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  450. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  451. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  452. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  453. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  454. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  455. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  456. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  457. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  458. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  459. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  460. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  461. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  462. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  463. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  464. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  465. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  466. data/spec/files/reversible_migrations/006_reversible.rb +0 -10
  467. data/spec/files/reversible_migrations/007_reversible.rb +0 -10
  468. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  469. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  470. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  471. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  472. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  473. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  474. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  475. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  476. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  477. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  478. data/spec/guards_helper.rb +0 -58
  479. data/spec/integration/associations_test.rb +0 -2513
  480. data/spec/integration/database_test.rb +0 -113
  481. data/spec/integration/dataset_test.rb +0 -1880
  482. data/spec/integration/eager_loader_test.rb +0 -687
  483. data/spec/integration/migrator_test.rb +0 -262
  484. data/spec/integration/model_test.rb +0 -203
  485. data/spec/integration/plugin_test.rb +0 -2302
  486. data/spec/integration/prepared_statement_test.rb +0 -398
  487. data/spec/integration/schema_test.rb +0 -869
  488. data/spec/integration/spec_helper.rb +0 -64
  489. data/spec/integration/timezone_test.rb +0 -86
  490. data/spec/integration/transaction_test.rb +0 -354
  491. data/spec/integration/type_test.rb +0 -127
  492. data/spec/model/association_reflection_spec.rb +0 -803
  493. data/spec/model/associations_spec.rb +0 -4538
  494. data/spec/model/base_spec.rb +0 -817
  495. data/spec/model/class_dataset_methods_spec.rb +0 -146
  496. data/spec/model/dataset_methods_spec.rb +0 -198
  497. data/spec/model/eager_loading_spec.rb +0 -2262
  498. data/spec/model/hooks_spec.rb +0 -370
  499. data/spec/model/inflector_spec.rb +0 -26
  500. data/spec/model/model_spec.rb +0 -953
  501. data/spec/model/plugins_spec.rb +0 -318
  502. data/spec/model/record_spec.rb +0 -2107
  503. data/spec/model/spec_helper.rb +0 -45
  504. data/spec/model/validations_spec.rb +0 -193
  505. data/spec/model_no_assoc_spec.rb +0 -1
  506. data/spec/model_spec.rb +0 -1
  507. data/spec/plugin_spec.rb +0 -1
  508. data/spec/sequel_coverage.rb +0 -15
  509. data/spec/sequel_warning.rb +0 -4
  510. data/spec/spec_config.rb +0 -12
data/Rakefile DELETED
@@ -1,151 +0,0 @@
1
- require "rake"
2
- require "rake/clean"
3
-
4
- NAME = 'sequel'
5
- VERS = lambda do
6
- require File.expand_path("../lib/sequel/version", __FILE__)
7
- Sequel.version
8
- end
9
- CLEAN.include ["sequel-*.gem", "rdoc", "coverage", "www/public/*.html", "www/public/rdoc*", "spec/bin-sequel-*"]
10
-
11
- # Gem Packaging
12
-
13
- desc "Build sequel gem"
14
- task :package=>[:clean] do |p|
15
- sh %{#{FileUtils::RUBY} -S gem build sequel.gemspec}
16
- end
17
-
18
- ### Website
19
-
20
- desc "Make local version of website"
21
- task :website do
22
- sh %{#{FileUtils::RUBY} www/make_www.rb}
23
- end
24
-
25
- ### RDoc
26
-
27
- RDOC_DEFAULT_OPTS = ["--line-numbers", '--title', 'Sequel: The Database Toolkit for Ruby']
28
-
29
- begin
30
- # Sequel uses hanna-nouveau for the website RDoc.
31
- gem 'hanna-nouveau'
32
- RDOC_DEFAULT_OPTS.concat(['-f', 'hanna'])
33
- rescue Gem::LoadError
34
- end
35
-
36
- require "rdoc/task"
37
-
38
- RDOC_OPTS = RDOC_DEFAULT_OPTS + ['--main', 'README.rdoc']
39
-
40
- RDoc::Task.new do |rdoc|
41
- rdoc.rdoc_dir = "rdoc"
42
- rdoc.options += RDOC_OPTS
43
- rdoc.rdoc_files.add %w"README.rdoc CHANGELOG MIT-LICENSE lib/**/*.rb doc/*.rdoc doc/release_notes/*.txt"
44
- end
45
-
46
- desc "Make rdoc for website"
47
- task :website_rdoc=>[:website_rdoc_main, :website_rdoc_adapters, :website_rdoc_plugins]
48
-
49
- RDoc::Task.new(:website_rdoc_main) do |rdoc|
50
- rdoc.rdoc_dir = "www/public/rdoc"
51
- rdoc.options += RDOC_OPTS + %w'--no-ignore-invalid'
52
- rdoc.rdoc_files.add %w"README.rdoc CHANGELOG doc/CHANGELOG.old MIT-LICENSE lib/*.rb lib/sequel/*.rb lib/sequel/{connection_pool,dataset,database,model}/*.rb doc/*.rdoc doc/release_notes/*.txt lib/sequel/extensions/migration.rb"
53
- end
54
-
55
- RDoc::Task.new(:website_rdoc_adapters) do |rdoc|
56
- rdoc.rdoc_dir = "www/public/rdoc-adapters"
57
- rdoc.options += RDOC_DEFAULT_OPTS + %w'--main Sequel --no-ignore-invalid'
58
- rdoc.rdoc_files.add %w"lib/sequel/adapters/**/*.rb"
59
- end
60
-
61
- RDoc::Task.new(:website_rdoc_plugins) do |rdoc|
62
- rdoc.rdoc_dir = "www/public/rdoc-plugins"
63
- rdoc.options += RDOC_DEFAULT_OPTS + %w'--main Sequel --no-ignore-invalid'
64
- rdoc.rdoc_files.add %w"lib/sequel/{extensions,plugins}/**/*.rb doc/core_*"
65
- end
66
-
67
- ### Specs
68
-
69
- run_spec = proc do |file|
70
- lib_dir = File.join(File.dirname(File.expand_path(__FILE__)), 'lib')
71
- rubylib = ENV['RUBYLIB']
72
- ENV['RUBYLIB'] ? (ENV['RUBYLIB'] += ":#{lib_dir}") : (ENV['RUBYLIB'] = lib_dir)
73
- sh "#{FileUtils::RUBY} #{file}"
74
- ENV['RUBYLIB'] = rubylib
75
- end
76
-
77
- spec_task = proc do |description, name, file, coverage|
78
- desc description
79
- task name do
80
- run_spec.call(file)
81
- end
82
-
83
- desc "#{description} with warnings, some warnings filtered"
84
- task :"#{name}_w" do
85
- rubyopt = ENV['RUBYOPT']
86
- ENV['RUBYOPT'] = "#{rubyopt} -w"
87
- ENV['WARNING'] = '1'
88
- run_spec.call(file)
89
- ENV.delete('WARNING')
90
- ENV['RUBYOPT'] = rubyopt
91
- end
92
-
93
- if coverage
94
- desc "#{description} with coverage"
95
- task :"#{name}_cov" do
96
- ENV['COVERAGE'] = '1'
97
- run_spec.call(file)
98
- ENV.delete('COVERAGE')
99
- end
100
- end
101
- end
102
-
103
- desc "Run the core, model, and extension/plugin specs"
104
- task :default => :spec
105
- desc "Run the core, model, and extension/plugin specs"
106
- task :spec => [:spec_core, :spec_model, :spec_plugin]
107
-
108
- spec_task.call("Run core and model specs together", :spec_core_model, 'spec/core_model_spec.rb', true)
109
- spec_task.call("Run core specs", :spec_core, 'spec/core_spec.rb', false)
110
- spec_task.call("Run model specs", :spec_model, 'spec/model_spec.rb', false)
111
- spec_task.call("Run plugin/extension specs", :spec_plugin, 'spec/plugin_spec.rb', true)
112
- spec_task.call("Run bin/sequel specs", :spec_bin, 'spec/bin_spec.rb', false)
113
- spec_task.call("Run core extensions specs", :spec_core_ext, 'spec/core_extensions_spec.rb', true)
114
- spec_task.call("Run integration tests", :spec_integration, 'spec/adapter_spec.rb none', true)
115
-
116
- %w'postgres sqlite mysql oracle mssql db2 sqlanywhere'.each do |adapter|
117
- spec_task.call("Run #{adapter} tests", :"spec_#{adapter}", "spec/adapter_spec.rb #{adapter}", true)
118
- end
119
-
120
- spec_task.call("Run model specs without the associations code", :_spec_model_no_assoc, 'spec/model_no_assoc_spec.rb', false)
121
- desc "Run model specs without the associations code"
122
- task :spec_model_no_assoc do
123
- ENV['SEQUEL_NO_ASSOCIATIONS'] = '1'
124
- Rake::Task['_spec_model_no_assoc'].invoke
125
- end
126
-
127
- task :spec_travis=>[:spec_core, :spec_model, :spec_plugin, :spec_core_ext] do
128
- if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
129
- ENV['SEQUEL_SQLITE_URL'] = "jdbc:sqlite::memory:"
130
- ENV['SEQUEL_POSTGRES_URL'] = "jdbc:postgresql://localhost/sequel_test?user=postgres"
131
- ENV['SEQUEL_MYSQL_URL'] = "jdbc:mysql://localhost/sequel_test?user=root"
132
- else
133
- ENV['SEQUEL_SQLITE_URL'] = "sqlite:/"
134
- ENV['SEQUEL_POSTGRES_URL'] = "postgres://localhost/sequel_test?user=postgres"
135
- ENV['SEQUEL_MYSQL_URL'] = "mysql2://localhost/sequel_test?user=root"
136
- end
137
-
138
- Rake::Task['spec_sqlite'].invoke
139
- Rake::Task['spec_postgres'].invoke
140
- Rake::Task['spec_mysql'].invoke
141
- end
142
-
143
- desc "Print Sequel version"
144
- task :version do
145
- puts VERS.call
146
- end
147
-
148
- desc "Check syntax of all .rb files"
149
- task :check_syntax do
150
- Dir['**/*.rb'].each{|file| print `#{FileUtils::RUBY} -c #{file} | fgrep -v "Syntax OK"`}
151
- end
@@ -1,262 +0,0 @@
1
- = Backwards Compatibility
2
-
3
- * All behavior resulting in deprecation messages in 3.48.0 has been
4
- removed or modified. If you plan on upgrading to Sequel 4.0.0 and
5
- have not yet upgraded to 3.48.0, upgrade to 3.48.0 first, fix code
6
- that results in deprecation warnings, and then upgrade to 4.0.0.
7
-
8
- * The threaded connection pools now default to
9
- :connection_handling=>:queue. You can manually set
10
- :connection_handling=>:stack to get the previous behavior.
11
-
12
- * Model.raise_on_typecast_failure now defaults to false. Set this to
13
- true to get the previous behavior of raising typecast errors in the
14
- setter methods.
15
-
16
- * Model#save no longer calls Model#_refresh or Model#set_values
17
- internally after an insert. Manual refreshes are now treated
18
- differently than after creation refreshes.
19
-
20
- * On SQLite, integer_booleans now defaults to true. Set this to
21
- false to get the previous behavior of 't' for true and 'f' for
22
- false. Sequel will not automatically upgrade your data, users
23
- are responsible for doing that if they want to switch the
24
- integer_booleans setting. Note that regardless of the setting,
25
- Sequel will return the correct ruby values when retrieving the
26
- rows.
27
-
28
- Example Code to Migrate Existing Data:
29
-
30
- DB[:table].where(:column=>'t').update(:column=>1)
31
- DB[:table].where(:column=>'f').update(:column=>0)
32
-
33
- * On SQLite, use_timestamp_timezones is now false by default. Set
34
- this to true to get the previous behavior with timezone information
35
- in timestamps. Sequel will not automatically upgrade your data,
36
- users are responsible for doing that if they want to switch the
37
- use_timestamp_timezones setting. Note that regardless of the
38
- setting, Sequel will return the correct ruby values when
39
- retrieving the rows.
40
-
41
- * Using window functions when eagerly loading associations with
42
- limits or offsets is now done automatically if the database
43
- supports it. Previously, this had to be enabled manually. If
44
- you would like to disable this optimization and just do the
45
- slicing in ruby, set default_eager_limit_strategy = nil.
46
-
47
- * The default value for most option hash arguments is now an shared
48
- empty frozen hash. If you are overriding methods and modifying
49
- option hashes, fix your code.
50
-
51
- * The defaults_setter plugin now works in a lazy manner instead of
52
- an eager manner. So calling the related method returns the
53
- default value if there is no value stored, but Sequel does not
54
- add the default values to the internal values hash, and will not
55
- attempt to insert what it thinks is the default value when
56
- saving the new object.
57
-
58
- * Model#set_all and #update_all now allow setting the primary key
59
- columns.
60
-
61
- * The many_to_one_pk_lookup and association_autoreloading plugins
62
- are now integrated into the default associations support.
63
-
64
- * Plugins now extend the class with ClassMethods before including
65
- InstanceMethods in the class.
66
-
67
- * Dataset#get, #select_map, and #select_order_map now automatically
68
- add aliases for unaliased expressions if given a single expression.
69
-
70
- * Database#tables and #views on PostgreSQL now check against
71
- the current schemas in the search path.
72
-
73
- * Calling ungraphed on an eager_graph dataset will restore the
74
- row_proc for that dataset. This is not backwards compatible if
75
- your method chain does:
76
-
77
- dataset.eager_graph.naked.ungraphed
78
-
79
- Switch such code to:
80
-
81
- dataset.eager_graph.ungraphed.naked
82
-
83
- * The Model#set_restricted and #update_restricted private methods
84
- have a slightly different API now.
85
-
86
- * Sequel::SQL::SQLArray alias for ValueList has been removed.
87
-
88
- * Sequel::SQL::NoBooleanInputMethods has been removed.
89
-
90
- * Sequel::NotImplemented has been removed. Default implementations
91
- of methods that used to raise this exception have been removed.
92
-
93
- * Sequel::Model::EMPTY_INSTANCE_VARIABLES has been removed.
94
-
95
- * The Sequel::Postgres::DatabaseMethods::EXCLUDE_SCHEMAS and
96
- SYSTEM_TABLE_REGEXP constants have been removed.
97
-
98
- * Dataset#columns_without_introspection has been removed from the
99
- columns_introspection extension.
100
-
101
- * Sequel no longer provides a default database for the adapter or
102
- integration specs. Additionally, if you are using spec_config.rb
103
- to configure a database to use when adapter/integration testing,
104
- you may need to modify it, as Sequel now uses the DB constant for
105
- the database being tested.
106
-
107
- * The SEQUEL_MSSQL_SPEC_REQUIRE and SEQUEL_DB2_SPEC_REQUIRE
108
- environment variables are no longer respected when
109
- adapter/integration testing those databases. Use RUBYOPT with the
110
- -r flag.
111
-
112
- * In the 3.48.0 release notes, it was announced that
113
- Dataset#join_table would default to :qualify=>:deep in 4.0.0. This
114
- change was made but reverted before the release of 4.0.0 as it was
115
- determined too likely to break existing code, there was no
116
- deprecation warning (since it just changed a setting), and the
117
- benefit was minimal. You can make deep qualification the default by
118
- by overriding Dataset#default_join_table_qualification.
119
-
120
- = New Features
121
-
122
- * A pg_array_associations plugin has been added, for creating
123
- an association based on a PostgreSQL array column containing
124
- foreign keys. Example:
125
-
126
- # Database schema:
127
- # tags albums
128
- # :id (int4) <--\ :id
129
- # :name \-- :tag_ids (int4[])
130
- # :name
131
-
132
- class Album
133
- plugin :pg_array_associations
134
- pg_array_to_many :tags
135
- end
136
- class Tag
137
- plugin :pg_array_associations
138
- many_to_pg_array :albums
139
- end
140
-
141
- This operates similarly to a many_to_many association, but does not
142
- require a join table. All of the usual Sequel association features
143
- are supported, such as adding, removing, and clearing associations,
144
- eager loading via eager and eager_graph, filtering by associations,
145
- and dataset associations.
146
-
147
- Note that until PostgreSQL gains the ability to enforce foreign key
148
- constraints in array columns, this plugin is not recommended for
149
- production use unless you plan on emulating referential integrity
150
- constraints via triggers.
151
-
152
- * Dataset#from now accepts virtual_row blocks, making it easy to use
153
- with table returning functions:
154
-
155
- DB.from{table_returning_function(arg)}
156
-
157
- * Sequel.deep_qualify has been added, for easily doing a deep
158
- qualification of objects:
159
-
160
- Sequel.deep_qualify(:table, Sequel.+(:column, 1))
161
- # ("table"."column" + 1)
162
- Sequel.deep_qualify(:table, Sequel.like(:a, 'b'))
163
- # ("table"."a" LIKE 'b' ESCAPE '\')
164
-
165
- * The prepared_statements_associations plugin now handles one_to_one
166
- associations.
167
-
168
- * SQL::Subscript objects now handle ruby range arguments, operating as
169
- an SQL array slice:
170
-
171
- Sequel.subscript(:a, 1..2) # a[1:2]
172
-
173
- * Database#create_view now accepts a :columns option to provide
174
- explicit column names for the view.
175
-
176
- * Postgres::ArrayOp#[] now returns an ArrayOp if given a range, since
177
- a PostgreSQL array slice can be treated as an array.
178
-
179
- * Postgres::ArrayOp#hstore has been added for creating hstores from
180
- PostgreSQL arrays.
181
-
182
- * When creating full text indexes on PostgreSQL, the :index_type=>:gist
183
- option can be used to use a gist index instead of the default gin
184
- index. This can be useful if insert/update speed is more important
185
- than lookup speed.
186
-
187
- * You can now provide the :owner option to Database#create_schema on
188
- PostgreSQL to specify the owner of the schema.
189
-
190
- * You can now provide the :if_exists option to Database#drop_view
191
- on PostgreSQL to not raise an error if the view doesn't exist.
192
-
193
- * The pg_json extension now handles non-JSON plain strings, integers
194
- and floats in PostgreSQL JSON columns.
195
-
196
- = Support for New Features in PostgreSQL 9.3
197
-
198
- * A pg_json_ops extension has been added to support the new json
199
- operators and functions.
200
-
201
- * Postgres::ArrayOp#replace and #remove have been added for using the
202
- array_replace and array_remove functions.
203
-
204
- * You can now provide the :if_not_exists option when using
205
- Database#create_schema on PostgreSQL to not raise an error if the
206
- schema already exists.
207
-
208
- * Database#create_view now supports a :recursive option on PostgreSQL
209
- for creating recursive views.
210
-
211
- * Database#create_view and #drop_view now support a :materialized option
212
- on PostgreSQL for creating/dropping materialized views.
213
-
214
- * Database#refresh_view has been added on PostgreSQL for refreshing
215
- materialized views.
216
-
217
- = Other Improvements
218
-
219
- * Check constraints are now always surrounded by parantheses, since that
220
- is required by the SQL standard. This fixes issues in the cases where
221
- parentheses were not used automatically, such as when a function call
222
- was used.
223
-
224
- * Using an offset without a limit when eager loading now works
225
- correctly.
226
-
227
- * The prepared_statements_associations plugin now works correctly when
228
- the associated class uses a filtered dataset.
229
-
230
- * The prepared_statements_associations plugin can now use a prepared
231
- statement for cases where the association uses :conditions.
232
-
233
- * Boolean prepared statement arguments now work correctly in the sqlite
234
- adapter when the integer_booleans setting is true.
235
-
236
- * Dataset#inspect on prepared statements now handles anonymous dataset
237
- classes correctly.
238
-
239
- * When dataset string/blob literalization depends on having a database
240
- connection and the dataset has an assigned server, a connection to
241
- the assigned server is used.
242
-
243
- * More disconnect errors are now handled when using the postgres
244
- adapter with the postgres-pr driver, and in the jdbc/oracle adapter.
245
-
246
- * Composite primary keys are now parsed correctly on SQLite 3.7.16+.
247
-
248
- * Blobs are now hex escaped on MySQL, which can solve some encoding
249
- issues when blobs are used as literals in the same SQL query with
250
- UTF-8 strings.
251
-
252
- * BigDecimals instances are now formatted nicer in the pretty_table
253
- extension.
254
-
255
- * Sequel now raises an exception when attempting to literalize infinite
256
- and NaN floats on MySQL. In general, this would result in MySQL
257
- raising an error, but in extreme cases it could have failed silently.
258
-
259
- * You can now use a NO_SEQUEL_PG environment variable to not
260
- automatically require sequel_pg in the postgres adapter.
261
-
262
- * Dataset#unbind now always uses symbol keys in the bind variable hash.
@@ -1,85 +0,0 @@
1
- = New Features
2
-
3
- * Database#run and #<< now accept SQL::PlaceholderLiteralString
4
- objects, allowing you to more easily run arbitrary DDL queries with
5
- placeholders:
6
-
7
- DB.run Sequel.lit("CREATE TABLE ? (? integer)", :table, :column)
8
-
9
- * You can now provide options for check constraints by calling the
10
- constraint/add_constraint methods with a hash as the first argument.
11
- On PostgreSQL, you can now use the :not_valid option for check
12
- constraints, so they are enforced for inserts and updates, but
13
- not for existing rows.
14
-
15
- DB.create_table(:table) do
16
- ...
17
- constraint({:name=>:constraint_name, :not_valid=>true}) do
18
- column_name > 10
19
- end
20
- end
21
-
22
- * Dataset#stream has been added to the mysql2 adapter, and will have
23
- the dataset stream results if used with mysql2 0.3.12+. This
24
- allows you to process large datasets without keeping the entire
25
- dataset in memory.
26
-
27
- DB[:large_table].stream.each{|r| ...}
28
-
29
- * Database#error_info has been added to the postgres adapter. It
30
- is supported on PostgreSQL 9.3+ if pg-0.16.0+ is used as the
31
- underlying driver, and it gives you a hash of metadata related
32
- to the exception:
33
-
34
- DB[:table_name].insert(1) rescue DB.error_info($!)
35
- # => {:schema=>"public", :table=>"table_name", :column=>nil,
36
- :constraint=>"constraint_name", :type=>nil}
37
-
38
- * The :deferrable option is now supported when adding exclusion
39
- constraints on PostgreSQL, to allow setting up deferred exclusion
40
- constraints.
41
-
42
- * The :inherits option is now supported in Database#create_table on
43
- PostgreSQL, for table inheritance:
44
-
45
- DB.create_table(:t1, :inherits=>:t0){}
46
- # CREATE TABLE t1 () INHERITS (t0)
47
-
48
- * Dataset#replace and #multi_replace are now supported on SQLite,
49
- just as they have been previously on MySQL.
50
-
51
- * In the jdbc adapter, Java::JavaUtil::HashMap objects are now
52
- converted to ruby Hash objects. This is to make it easier to
53
- handle the PostgreSQL hstore type when using the jdbc/postgres
54
- adapter.
55
-
56
- * The odbc adapter now supports a :drvconnect option that accepts
57
- an ODBC connection string that is passed to ruby-odbc verbatim.
58
-
59
- = Other Improvements
60
-
61
- * The prepared_statements plugin no longer breaks the
62
- instance_filters and update_primary_key plugins.
63
-
64
- * Dropping indexes for tables in a specific schema is now supported
65
- on PostgreSQL. Sequel now explicitly specifies the same schema
66
- as the table when dropping such indexes.
67
-
68
- * Calling Model#add_association methods with a primary key value
69
- now raises a Sequel::NoMatchingRow if there is no object in the
70
- associated table with that primary key. Previously, this
71
- situation was not handled and resulted in a NoMethodError being
72
- raised later.
73
-
74
- * When an invalid virtual row block function call is detected, an
75
- error is now properly raised. Previously, the error was not
76
- raised until the SQL was produced for the query.
77
-
78
- = Backwards Compatibility
79
-
80
- * The :driver option to the odbc adapter is deprecated and will be
81
- removed in a future version. It is thought to be broken, and
82
- users wanting to use DSN-less connections should use the new
83
- :drvconnect option.
84
-
85
- * The Postgres::ArrayOp#text_op private method has been removed.