sequel 5.20.0 → 5.49.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 (511) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +398 -1922
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +7 -7
  5. data/doc/advanced_associations.rdoc +4 -4
  6. data/doc/association_basics.rdoc +80 -16
  7. data/doc/cheat_sheet.rdoc +6 -5
  8. data/doc/code_order.rdoc +10 -12
  9. data/doc/dataset_filtering.rdoc +17 -2
  10. data/doc/fork_safety.rdoc +84 -0
  11. data/doc/migration.rdoc +11 -5
  12. data/doc/model_dataset_method_design.rdoc +1 -1
  13. data/doc/model_plugins.rdoc +1 -1
  14. data/doc/opening_databases.rdoc +10 -2
  15. data/doc/postgresql.rdoc +82 -3
  16. data/doc/querying.rdoc +4 -4
  17. data/doc/release_notes/5.21.0.txt +87 -0
  18. data/doc/release_notes/5.22.0.txt +48 -0
  19. data/doc/release_notes/5.23.0.txt +56 -0
  20. data/doc/release_notes/5.24.0.txt +56 -0
  21. data/doc/release_notes/5.25.0.txt +32 -0
  22. data/doc/release_notes/5.26.0.txt +35 -0
  23. data/doc/release_notes/5.27.0.txt +21 -0
  24. data/doc/release_notes/5.28.0.txt +16 -0
  25. data/doc/release_notes/5.29.0.txt +22 -0
  26. data/doc/release_notes/5.30.0.txt +20 -0
  27. data/doc/release_notes/5.31.0.txt +148 -0
  28. data/doc/release_notes/5.32.0.txt +46 -0
  29. data/doc/release_notes/5.33.0.txt +24 -0
  30. data/doc/release_notes/5.34.0.txt +40 -0
  31. data/doc/release_notes/5.35.0.txt +56 -0
  32. data/doc/release_notes/5.36.0.txt +60 -0
  33. data/doc/release_notes/5.37.0.txt +30 -0
  34. data/doc/release_notes/5.38.0.txt +28 -0
  35. data/doc/release_notes/5.39.0.txt +19 -0
  36. data/doc/release_notes/5.40.0.txt +40 -0
  37. data/doc/release_notes/5.41.0.txt +25 -0
  38. data/doc/release_notes/5.42.0.txt +136 -0
  39. data/doc/release_notes/5.43.0.txt +98 -0
  40. data/doc/release_notes/5.44.0.txt +32 -0
  41. data/doc/release_notes/5.45.0.txt +34 -0
  42. data/doc/release_notes/5.46.0.txt +87 -0
  43. data/doc/release_notes/5.47.0.txt +59 -0
  44. data/doc/release_notes/5.48.0.txt +14 -0
  45. data/doc/release_notes/5.49.0.txt +59 -0
  46. data/doc/sharding.rdoc +2 -0
  47. data/doc/sql.rdoc +13 -1
  48. data/doc/testing.rdoc +20 -7
  49. data/doc/transactions.rdoc +0 -8
  50. data/doc/validations.rdoc +1 -1
  51. data/doc/virtual_rows.rdoc +1 -1
  52. data/lib/sequel/adapters/ado/access.rb +1 -1
  53. data/lib/sequel/adapters/ado.rb +43 -35
  54. data/lib/sequel/adapters/ibmdb.rb +2 -2
  55. data/lib/sequel/adapters/jdbc/mysql.rb +6 -6
  56. data/lib/sequel/adapters/jdbc/postgresql.rb +11 -17
  57. data/lib/sequel/adapters/jdbc/sqlite.rb +29 -0
  58. data/lib/sequel/adapters/jdbc.rb +24 -6
  59. data/lib/sequel/adapters/mysql.rb +1 -1
  60. data/lib/sequel/adapters/mysql2.rb +2 -3
  61. data/lib/sequel/adapters/odbc.rb +8 -6
  62. data/lib/sequel/adapters/oracle.rb +5 -4
  63. data/lib/sequel/adapters/postgres.rb +15 -9
  64. data/lib/sequel/adapters/shared/access.rb +6 -6
  65. data/lib/sequel/adapters/shared/mssql.rb +66 -21
  66. data/lib/sequel/adapters/shared/mysql.rb +27 -10
  67. data/lib/sequel/adapters/shared/oracle.rb +29 -23
  68. data/lib/sequel/adapters/shared/postgres.rb +271 -32
  69. data/lib/sequel/adapters/shared/sqlanywhere.rb +9 -9
  70. data/lib/sequel/adapters/shared/sqlite.rb +161 -19
  71. data/lib/sequel/adapters/sqlanywhere.rb +1 -1
  72. data/lib/sequel/adapters/sqlite.rb +1 -1
  73. data/lib/sequel/adapters/tinytds.rb +15 -2
  74. data/lib/sequel/adapters/utils/mysql_mysql2.rb +4 -1
  75. data/lib/sequel/ast_transformer.rb +6 -0
  76. data/lib/sequel/connection_pool/sharded_single.rb +4 -1
  77. data/lib/sequel/connection_pool/sharded_threaded.rb +12 -12
  78. data/lib/sequel/connection_pool/single.rb +1 -1
  79. data/lib/sequel/connection_pool/threaded.rb +2 -2
  80. data/lib/sequel/core.rb +333 -319
  81. data/lib/sequel/database/connecting.rb +3 -4
  82. data/lib/sequel/database/logging.rb +7 -1
  83. data/lib/sequel/database/misc.rb +31 -12
  84. data/lib/sequel/database/query.rb +3 -1
  85. data/lib/sequel/database/schema_generator.rb +53 -51
  86. data/lib/sequel/database/schema_methods.rb +38 -23
  87. data/lib/sequel/database/transactions.rb +17 -18
  88. data/lib/sequel/dataset/actions.rb +14 -9
  89. data/lib/sequel/dataset/features.rb +16 -0
  90. data/lib/sequel/dataset/misc.rb +2 -2
  91. data/lib/sequel/dataset/placeholder_literalizer.rb +3 -7
  92. data/lib/sequel/dataset/prepared_statements.rb +2 -0
  93. data/lib/sequel/dataset/query.rb +26 -9
  94. data/lib/sequel/dataset/sql.rb +76 -25
  95. data/lib/sequel/dataset.rb +4 -2
  96. data/lib/sequel/deprecated.rb +3 -1
  97. data/lib/sequel/exceptions.rb +2 -0
  98. data/lib/sequel/extensions/_pretty_table.rb +1 -2
  99. data/lib/sequel/extensions/any_not_empty.rb +45 -0
  100. data/lib/sequel/extensions/async_thread_pool.rb +438 -0
  101. data/lib/sequel/extensions/blank.rb +8 -0
  102. data/lib/sequel/extensions/columns_introspection.rb +1 -2
  103. data/lib/sequel/extensions/connection_expiration.rb +2 -2
  104. data/lib/sequel/extensions/connection_validator.rb +2 -2
  105. data/lib/sequel/extensions/core_refinements.rb +2 -0
  106. data/lib/sequel/extensions/date_arithmetic.rb +36 -24
  107. data/lib/sequel/extensions/duplicate_columns_handler.rb +3 -1
  108. data/lib/sequel/extensions/eval_inspect.rb +2 -0
  109. data/lib/sequel/extensions/exclude_or_null.rb +68 -0
  110. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  111. data/lib/sequel/extensions/index_caching.rb +9 -7
  112. data/lib/sequel/extensions/inflector.rb +9 -1
  113. data/lib/sequel/extensions/integer64.rb +2 -0
  114. data/lib/sequel/extensions/migration.rb +11 -3
  115. data/lib/sequel/extensions/named_timezones.rb +56 -8
  116. data/lib/sequel/extensions/pagination.rb +1 -1
  117. data/lib/sequel/extensions/pg_array.rb +5 -0
  118. data/lib/sequel/extensions/pg_array_ops.rb +14 -6
  119. data/lib/sequel/extensions/pg_enum.rb +11 -3
  120. data/lib/sequel/extensions/pg_extended_date_support.rb +2 -2
  121. data/lib/sequel/extensions/pg_hstore.rb +6 -0
  122. data/lib/sequel/extensions/pg_hstore_ops.rb +54 -2
  123. data/lib/sequel/extensions/pg_inet.rb +15 -5
  124. data/lib/sequel/extensions/pg_interval.rb +36 -8
  125. data/lib/sequel/extensions/pg_json.rb +387 -123
  126. data/lib/sequel/extensions/pg_json_ops.rb +238 -0
  127. data/lib/sequel/extensions/pg_loose_count.rb +3 -1
  128. data/lib/sequel/extensions/pg_range.rb +17 -9
  129. data/lib/sequel/extensions/pg_range_ops.rb +2 -0
  130. data/lib/sequel/extensions/pg_row.rb +4 -2
  131. data/lib/sequel/extensions/pg_row_ops.rb +24 -0
  132. data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
  133. data/lib/sequel/extensions/query.rb +3 -0
  134. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  135. data/lib/sequel/extensions/s.rb +2 -0
  136. data/lib/sequel/extensions/schema_dumper.rb +24 -7
  137. data/lib/sequel/extensions/server_block.rb +18 -7
  138. data/lib/sequel/extensions/sql_comments.rb +2 -2
  139. data/lib/sequel/extensions/string_agg.rb +1 -1
  140. data/lib/sequel/extensions/symbol_aref_refinement.rb +2 -0
  141. data/lib/sequel/extensions/symbol_as_refinement.rb +2 -0
  142. data/lib/sequel/extensions/to_dot.rb +9 -3
  143. data/lib/sequel/model/associations.rb +356 -117
  144. data/lib/sequel/model/base.rb +107 -68
  145. data/lib/sequel/model/errors.rb +10 -1
  146. data/lib/sequel/model/inflections.rb +1 -1
  147. data/lib/sequel/model/plugins.rb +9 -3
  148. data/lib/sequel/model.rb +3 -1
  149. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  150. data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
  151. data/lib/sequel/plugins/association_pks.rb +60 -18
  152. data/lib/sequel/plugins/association_proxies.rb +8 -2
  153. data/lib/sequel/plugins/async_thread_pool.rb +39 -0
  154. data/lib/sequel/plugins/auto_validations.rb +39 -5
  155. data/lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb +68 -0
  156. data/lib/sequel/plugins/blacklist_security.rb +1 -2
  157. data/lib/sequel/plugins/boolean_subsets.rb +4 -1
  158. data/lib/sequel/plugins/caching.rb +3 -0
  159. data/lib/sequel/plugins/class_table_inheritance.rb +33 -28
  160. data/lib/sequel/plugins/column_encryption.rb +728 -0
  161. data/lib/sequel/plugins/composition.rb +7 -2
  162. data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
  163. data/lib/sequel/plugins/constraint_validations.rb +2 -1
  164. data/lib/sequel/plugins/csv_serializer.rb +28 -9
  165. data/lib/sequel/plugins/dataset_associations.rb +4 -1
  166. data/lib/sequel/plugins/dirty.rb +60 -22
  167. data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
  168. data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
  169. data/lib/sequel/plugins/insert_conflict.rb +72 -0
  170. data/lib/sequel/plugins/instance_specific_default.rb +113 -0
  171. data/lib/sequel/plugins/json_serializer.rb +57 -35
  172. data/lib/sequel/plugins/lazy_attributes.rb +1 -1
  173. data/lib/sequel/plugins/many_through_many.rb +108 -9
  174. data/lib/sequel/plugins/nested_attributes.rb +15 -3
  175. data/lib/sequel/plugins/pg_array_associations.rb +58 -41
  176. data/lib/sequel/plugins/pg_auto_constraint_validations.rb +91 -30
  177. data/lib/sequel/plugins/prepared_statements.rb +15 -12
  178. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -3
  179. data/lib/sequel/plugins/rcte_tree.rb +43 -35
  180. data/lib/sequel/plugins/serialization.rb +8 -3
  181. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  182. data/lib/sequel/plugins/sharding.rb +11 -5
  183. data/lib/sequel/plugins/single_table_inheritance.rb +22 -15
  184. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  185. data/lib/sequel/plugins/static_cache.rb +9 -4
  186. data/lib/sequel/plugins/static_cache_cache.rb +53 -0
  187. data/lib/sequel/plugins/string_stripper.rb +1 -1
  188. data/lib/sequel/plugins/subclasses.rb +2 -0
  189. data/lib/sequel/plugins/throw_failures.rb +1 -1
  190. data/lib/sequel/plugins/timestamps.rb +1 -1
  191. data/lib/sequel/plugins/tree.rb +9 -4
  192. data/lib/sequel/plugins/typecast_on_load.rb +3 -2
  193. data/lib/sequel/plugins/unused_associations.rb +521 -0
  194. data/lib/sequel/plugins/update_or_create.rb +1 -1
  195. data/lib/sequel/plugins/validation_class_methods.rb +5 -1
  196. data/lib/sequel/plugins/validation_helpers.rb +18 -11
  197. data/lib/sequel/plugins/xml_serializer.rb +1 -1
  198. data/lib/sequel/sql.rb +20 -5
  199. data/lib/sequel/timezones.rb +63 -17
  200. data/lib/sequel/version.rb +1 -1
  201. metadata +113 -381
  202. data/Rakefile +0 -151
  203. data/doc/release_notes/4.0.0.txt +0 -262
  204. data/doc/release_notes/4.1.0.txt +0 -85
  205. data/doc/release_notes/4.10.0.txt +0 -226
  206. data/doc/release_notes/4.11.0.txt +0 -147
  207. data/doc/release_notes/4.12.0.txt +0 -105
  208. data/doc/release_notes/4.13.0.txt +0 -169
  209. data/doc/release_notes/4.14.0.txt +0 -68
  210. data/doc/release_notes/4.15.0.txt +0 -56
  211. data/doc/release_notes/4.16.0.txt +0 -36
  212. data/doc/release_notes/4.17.0.txt +0 -38
  213. data/doc/release_notes/4.18.0.txt +0 -36
  214. data/doc/release_notes/4.19.0.txt +0 -45
  215. data/doc/release_notes/4.2.0.txt +0 -129
  216. data/doc/release_notes/4.20.0.txt +0 -79
  217. data/doc/release_notes/4.21.0.txt +0 -94
  218. data/doc/release_notes/4.22.0.txt +0 -72
  219. data/doc/release_notes/4.23.0.txt +0 -65
  220. data/doc/release_notes/4.24.0.txt +0 -99
  221. data/doc/release_notes/4.25.0.txt +0 -181
  222. data/doc/release_notes/4.26.0.txt +0 -44
  223. data/doc/release_notes/4.27.0.txt +0 -78
  224. data/doc/release_notes/4.28.0.txt +0 -57
  225. data/doc/release_notes/4.29.0.txt +0 -41
  226. data/doc/release_notes/4.3.0.txt +0 -40
  227. data/doc/release_notes/4.30.0.txt +0 -37
  228. data/doc/release_notes/4.31.0.txt +0 -57
  229. data/doc/release_notes/4.32.0.txt +0 -132
  230. data/doc/release_notes/4.33.0.txt +0 -88
  231. data/doc/release_notes/4.34.0.txt +0 -86
  232. data/doc/release_notes/4.35.0.txt +0 -130
  233. data/doc/release_notes/4.36.0.txt +0 -116
  234. data/doc/release_notes/4.37.0.txt +0 -50
  235. data/doc/release_notes/4.38.0.txt +0 -67
  236. data/doc/release_notes/4.39.0.txt +0 -127
  237. data/doc/release_notes/4.4.0.txt +0 -92
  238. data/doc/release_notes/4.40.0.txt +0 -179
  239. data/doc/release_notes/4.41.0.txt +0 -77
  240. data/doc/release_notes/4.42.0.txt +0 -221
  241. data/doc/release_notes/4.43.0.txt +0 -87
  242. data/doc/release_notes/4.44.0.txt +0 -125
  243. data/doc/release_notes/4.45.0.txt +0 -370
  244. data/doc/release_notes/4.46.0.txt +0 -404
  245. data/doc/release_notes/4.47.0.txt +0 -56
  246. data/doc/release_notes/4.48.0.txt +0 -293
  247. data/doc/release_notes/4.49.0.txt +0 -222
  248. data/doc/release_notes/4.5.0.txt +0 -34
  249. data/doc/release_notes/4.6.0.txt +0 -30
  250. data/doc/release_notes/4.7.0.txt +0 -103
  251. data/doc/release_notes/4.8.0.txt +0 -175
  252. data/doc/release_notes/4.9.0.txt +0 -190
  253. data/spec/adapter_spec.rb +0 -4
  254. data/spec/adapters/db2_spec.rb +0 -170
  255. data/spec/adapters/mssql_spec.rb +0 -804
  256. data/spec/adapters/mysql_spec.rb +0 -1065
  257. data/spec/adapters/oracle_spec.rb +0 -371
  258. data/spec/adapters/postgres_spec.rb +0 -4125
  259. data/spec/adapters/spec_helper.rb +0 -44
  260. data/spec/adapters/sqlanywhere_spec.rb +0 -97
  261. data/spec/adapters/sqlite_spec.rb +0 -652
  262. data/spec/bin_spec.rb +0 -278
  263. data/spec/core/connection_pool_spec.rb +0 -1250
  264. data/spec/core/database_spec.rb +0 -2865
  265. data/spec/core/dataset_spec.rb +0 -5515
  266. data/spec/core/deprecated_spec.rb +0 -70
  267. data/spec/core/expression_filters_spec.rb +0 -1455
  268. data/spec/core/mock_adapter_spec.rb +0 -722
  269. data/spec/core/object_graph_spec.rb +0 -336
  270. data/spec/core/placeholder_literalizer_spec.rb +0 -166
  271. data/spec/core/schema_generator_spec.rb +0 -214
  272. data/spec/core/schema_spec.rb +0 -1826
  273. data/spec/core/spec_helper.rb +0 -24
  274. data/spec/core/version_spec.rb +0 -14
  275. data/spec/core_extensions_spec.rb +0 -763
  276. data/spec/core_model_spec.rb +0 -2
  277. data/spec/core_spec.rb +0 -1
  278. data/spec/deprecation_helper.rb +0 -30
  279. data/spec/extensions/accessed_columns_spec.rb +0 -51
  280. data/spec/extensions/active_model_spec.rb +0 -99
  281. data/spec/extensions/after_initialize_spec.rb +0 -28
  282. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  283. data/spec/extensions/association_dependencies_spec.rb +0 -125
  284. data/spec/extensions/association_pks_spec.rb +0 -423
  285. data/spec/extensions/association_proxies_spec.rb +0 -100
  286. data/spec/extensions/auto_literal_strings_spec.rb +0 -205
  287. data/spec/extensions/auto_validations_spec.rb +0 -229
  288. data/spec/extensions/blacklist_security_spec.rb +0 -95
  289. data/spec/extensions/blank_spec.rb +0 -69
  290. data/spec/extensions/boolean_readers_spec.rb +0 -93
  291. data/spec/extensions/boolean_subsets_spec.rb +0 -47
  292. data/spec/extensions/caching_spec.rb +0 -273
  293. data/spec/extensions/caller_logging_spec.rb +0 -52
  294. data/spec/extensions/class_table_inheritance_spec.rb +0 -750
  295. data/spec/extensions/column_conflicts_spec.rb +0 -75
  296. data/spec/extensions/column_select_spec.rb +0 -129
  297. data/spec/extensions/columns_introspection_spec.rb +0 -90
  298. data/spec/extensions/columns_updated_spec.rb +0 -35
  299. data/spec/extensions/composition_spec.rb +0 -248
  300. data/spec/extensions/connection_expiration_spec.rb +0 -151
  301. data/spec/extensions/connection_validator_spec.rb +0 -144
  302. data/spec/extensions/constant_sql_override_spec.rb +0 -24
  303. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
  304. data/spec/extensions/constraint_validations_spec.rb +0 -439
  305. data/spec/extensions/core_refinements_spec.rb +0 -528
  306. data/spec/extensions/csv_serializer_spec.rb +0 -183
  307. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  308. data/spec/extensions/dataset_associations_spec.rb +0 -365
  309. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  310. data/spec/extensions/date_arithmetic_spec.rb +0 -181
  311. data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
  312. data/spec/extensions/def_dataset_method_spec.rb +0 -100
  313. data/spec/extensions/defaults_setter_spec.rb +0 -150
  314. data/spec/extensions/delay_add_association_spec.rb +0 -73
  315. data/spec/extensions/dirty_spec.rb +0 -189
  316. data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
  317. data/spec/extensions/eager_each_spec.rb +0 -62
  318. data/spec/extensions/eager_graph_eager_spec.rb +0 -100
  319. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  320. data/spec/extensions/error_splitter_spec.rb +0 -18
  321. data/spec/extensions/error_sql_spec.rb +0 -20
  322. data/spec/extensions/escaped_like_spec.rb +0 -40
  323. data/spec/extensions/eval_inspect_spec.rb +0 -81
  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 -402
  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 -291
  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 -864
  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 -111
  348. data/spec/extensions/nested_attributes_spec.rb +0 -767
  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 -172
  356. data/spec/extensions/pg_enum_spec.rb +0 -118
  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 -519
  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 -177
  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 -870
  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 -63
  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 -471
  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 -402
  409. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  410. data/spec/extensions/throw_failures_spec.rb +0 -74
  411. data/spec/extensions/timestamps_spec.rb +0 -209
  412. data/spec/extensions/to_dot_spec.rb +0 -153
  413. data/spec/extensions/touch_spec.rb +0 -226
  414. data/spec/extensions/tree_spec.rb +0 -334
  415. data/spec/extensions/typecast_on_load_spec.rb +0 -86
  416. data/spec/extensions/unlimited_update_spec.rb +0 -21
  417. data/spec/extensions/update_or_create_spec.rb +0 -83
  418. data/spec/extensions/update_primary_key_spec.rb +0 -105
  419. data/spec/extensions/update_refresh_spec.rb +0 -59
  420. data/spec/extensions/uuid_spec.rb +0 -101
  421. data/spec/extensions/validate_associated_spec.rb +0 -52
  422. data/spec/extensions/validation_class_methods_spec.rb +0 -1040
  423. data/spec/extensions/validation_contexts_spec.rb +0 -31
  424. data/spec/extensions/validation_helpers_spec.rb +0 -525
  425. data/spec/extensions/whitelist_security_spec.rb +0 -157
  426. data/spec/extensions/xml_serializer_spec.rb +0 -213
  427. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  428. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  429. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  430. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  431. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  432. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  433. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  434. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  435. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  436. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  437. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  438. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  439. data/spec/files/double_migration/001_create_sessions.rb +0 -9
  440. data/spec/files/double_migration/002_create_nodes.rb +0 -19
  441. data/spec/files/double_migration/003_3_create_users.rb +0 -4
  442. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  443. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  444. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  445. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  446. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  447. data/spec/files/empty_migration/001_create_sessions.rb +0 -9
  448. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  449. data/spec/files/empty_migration/003_3_create_users.rb +0 -4
  450. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  451. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  452. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  453. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  454. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  455. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  456. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  457. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  458. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  459. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  460. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  461. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  462. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  463. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  464. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  465. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  466. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  467. data/spec/files/reversible_migrations/006_reversible.rb +0 -10
  468. data/spec/files/reversible_migrations/007_reversible.rb +0 -10
  469. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  470. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  471. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  472. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  473. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  474. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  475. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  476. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  477. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  478. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  479. data/spec/guards_helper.rb +0 -59
  480. data/spec/integration/associations_test.rb +0 -2597
  481. data/spec/integration/database_test.rb +0 -113
  482. data/spec/integration/dataset_test.rb +0 -1981
  483. data/spec/integration/eager_loader_test.rb +0 -687
  484. data/spec/integration/migrator_test.rb +0 -262
  485. data/spec/integration/model_test.rb +0 -203
  486. data/spec/integration/plugin_test.rb +0 -2396
  487. data/spec/integration/prepared_statement_test.rb +0 -405
  488. data/spec/integration/schema_test.rb +0 -889
  489. data/spec/integration/spec_helper.rb +0 -65
  490. data/spec/integration/timezone_test.rb +0 -86
  491. data/spec/integration/transaction_test.rb +0 -603
  492. data/spec/integration/type_test.rb +0 -127
  493. data/spec/model/association_reflection_spec.rb +0 -803
  494. data/spec/model/associations_spec.rb +0 -4738
  495. data/spec/model/base_spec.rb +0 -875
  496. data/spec/model/class_dataset_methods_spec.rb +0 -146
  497. data/spec/model/dataset_methods_spec.rb +0 -198
  498. data/spec/model/eager_loading_spec.rb +0 -2377
  499. data/spec/model/hooks_spec.rb +0 -370
  500. data/spec/model/inflector_spec.rb +0 -26
  501. data/spec/model/model_spec.rb +0 -956
  502. data/spec/model/plugins_spec.rb +0 -429
  503. data/spec/model/record_spec.rb +0 -2118
  504. data/spec/model/spec_helper.rb +0 -46
  505. data/spec/model/validations_spec.rb +0 -220
  506. data/spec/model_no_assoc_spec.rb +0 -1
  507. data/spec/model_spec.rb +0 -1
  508. data/spec/plugin_spec.rb +0 -1
  509. data/spec/sequel_coverage.rb +0 -15
  510. data/spec/sequel_warning.rb +0 -4
  511. 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.