sequel 5.28.0 → 5.33.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 (380) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +64 -1922
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +1 -1
  5. data/doc/advanced_associations.rdoc +4 -4
  6. data/doc/association_basics.rdoc +3 -3
  7. data/doc/code_order.rdoc +12 -2
  8. data/doc/model_dataset_method_design.rdoc +1 -1
  9. data/doc/postgresql.rdoc +71 -0
  10. data/doc/release_notes/5.29.0.txt +22 -0
  11. data/doc/release_notes/5.30.0.txt +20 -0
  12. data/doc/release_notes/5.31.0.txt +148 -0
  13. data/doc/release_notes/5.32.0.txt +46 -0
  14. data/doc/release_notes/5.33.0.txt +24 -0
  15. data/doc/testing.rdoc +1 -1
  16. data/lib/sequel/adapters/postgres.rb +5 -1
  17. data/lib/sequel/adapters/shared/access.rb +6 -6
  18. data/lib/sequel/adapters/shared/mssql.rb +5 -5
  19. data/lib/sequel/adapters/shared/mysql.rb +10 -10
  20. data/lib/sequel/adapters/shared/oracle.rb +16 -16
  21. data/lib/sequel/adapters/shared/postgres.rb +169 -14
  22. data/lib/sequel/adapters/shared/sqlanywhere.rb +9 -9
  23. data/lib/sequel/adapters/shared/sqlite.rb +32 -5
  24. data/lib/sequel/adapters/tinytds.rb +1 -1
  25. data/lib/sequel/connection_pool/sharded_threaded.rb +2 -2
  26. data/lib/sequel/connection_pool/threaded.rb +1 -1
  27. data/lib/sequel/core.rb +318 -314
  28. data/lib/sequel/database/query.rb +1 -1
  29. data/lib/sequel/database/schema_generator.rb +1 -1
  30. data/lib/sequel/database/transactions.rb +8 -12
  31. data/lib/sequel/dataset/misc.rb +2 -2
  32. data/lib/sequel/extensions/connection_expiration.rb +2 -2
  33. data/lib/sequel/extensions/connection_validator.rb +2 -2
  34. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  35. data/lib/sequel/extensions/index_caching.rb +9 -7
  36. data/lib/sequel/extensions/integer64.rb +2 -0
  37. data/lib/sequel/extensions/migration.rb +1 -1
  38. data/lib/sequel/extensions/pg_enum.rb +5 -2
  39. data/lib/sequel/extensions/pg_hstore.rb +6 -0
  40. data/lib/sequel/extensions/pg_inet.rb +13 -5
  41. data/lib/sequel/extensions/pg_interval.rb +2 -0
  42. data/lib/sequel/extensions/pg_range.rb +2 -0
  43. data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
  44. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  45. data/lib/sequel/extensions/schema_dumper.rb +10 -4
  46. data/lib/sequel/extensions/server_block.rb +3 -3
  47. data/lib/sequel/model/associations.rb +18 -5
  48. data/lib/sequel/model/base.rb +60 -53
  49. data/lib/sequel/model/plugins.rb +1 -0
  50. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  51. data/lib/sequel/plugins/association_multi_add_remove.rb +2 -0
  52. data/lib/sequel/plugins/association_proxies.rb +2 -0
  53. data/lib/sequel/plugins/boolean_subsets.rb +4 -1
  54. data/lib/sequel/plugins/class_table_inheritance.rb +26 -26
  55. data/lib/sequel/plugins/dirty.rb +13 -13
  56. data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
  57. data/lib/sequel/plugins/forbid_lazy_load.rb +214 -0
  58. data/lib/sequel/plugins/json_serializer.rb +18 -11
  59. data/lib/sequel/plugins/single_table_inheritance.rb +15 -15
  60. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  61. data/lib/sequel/plugins/subclasses.rb +2 -0
  62. data/lib/sequel/plugins/throw_failures.rb +1 -1
  63. data/lib/sequel/timezones.rb +6 -4
  64. data/lib/sequel/version.rb +1 -1
  65. metadata +18 -367
  66. data/Rakefile +0 -151
  67. data/doc/release_notes/4.0.0.txt +0 -262
  68. data/doc/release_notes/4.1.0.txt +0 -85
  69. data/doc/release_notes/4.10.0.txt +0 -226
  70. data/doc/release_notes/4.11.0.txt +0 -147
  71. data/doc/release_notes/4.12.0.txt +0 -105
  72. data/doc/release_notes/4.13.0.txt +0 -169
  73. data/doc/release_notes/4.14.0.txt +0 -68
  74. data/doc/release_notes/4.15.0.txt +0 -56
  75. data/doc/release_notes/4.16.0.txt +0 -36
  76. data/doc/release_notes/4.17.0.txt +0 -38
  77. data/doc/release_notes/4.18.0.txt +0 -36
  78. data/doc/release_notes/4.19.0.txt +0 -45
  79. data/doc/release_notes/4.2.0.txt +0 -129
  80. data/doc/release_notes/4.20.0.txt +0 -79
  81. data/doc/release_notes/4.21.0.txt +0 -94
  82. data/doc/release_notes/4.22.0.txt +0 -72
  83. data/doc/release_notes/4.23.0.txt +0 -65
  84. data/doc/release_notes/4.24.0.txt +0 -99
  85. data/doc/release_notes/4.25.0.txt +0 -181
  86. data/doc/release_notes/4.26.0.txt +0 -44
  87. data/doc/release_notes/4.27.0.txt +0 -78
  88. data/doc/release_notes/4.28.0.txt +0 -57
  89. data/doc/release_notes/4.29.0.txt +0 -41
  90. data/doc/release_notes/4.3.0.txt +0 -40
  91. data/doc/release_notes/4.30.0.txt +0 -37
  92. data/doc/release_notes/4.31.0.txt +0 -57
  93. data/doc/release_notes/4.32.0.txt +0 -132
  94. data/doc/release_notes/4.33.0.txt +0 -88
  95. data/doc/release_notes/4.34.0.txt +0 -86
  96. data/doc/release_notes/4.35.0.txt +0 -130
  97. data/doc/release_notes/4.36.0.txt +0 -116
  98. data/doc/release_notes/4.37.0.txt +0 -50
  99. data/doc/release_notes/4.38.0.txt +0 -67
  100. data/doc/release_notes/4.39.0.txt +0 -127
  101. data/doc/release_notes/4.4.0.txt +0 -92
  102. data/doc/release_notes/4.40.0.txt +0 -179
  103. data/doc/release_notes/4.41.0.txt +0 -77
  104. data/doc/release_notes/4.42.0.txt +0 -221
  105. data/doc/release_notes/4.43.0.txt +0 -87
  106. data/doc/release_notes/4.44.0.txt +0 -125
  107. data/doc/release_notes/4.45.0.txt +0 -370
  108. data/doc/release_notes/4.46.0.txt +0 -404
  109. data/doc/release_notes/4.47.0.txt +0 -56
  110. data/doc/release_notes/4.48.0.txt +0 -293
  111. data/doc/release_notes/4.49.0.txt +0 -222
  112. data/doc/release_notes/4.5.0.txt +0 -34
  113. data/doc/release_notes/4.6.0.txt +0 -30
  114. data/doc/release_notes/4.7.0.txt +0 -103
  115. data/doc/release_notes/4.8.0.txt +0 -175
  116. data/doc/release_notes/4.9.0.txt +0 -190
  117. data/spec/adapter_spec.rb +0 -4
  118. data/spec/adapters/db2_spec.rb +0 -170
  119. data/spec/adapters/mssql_spec.rb +0 -828
  120. data/spec/adapters/mysql_spec.rb +0 -1060
  121. data/spec/adapters/oracle_spec.rb +0 -371
  122. data/spec/adapters/postgres_spec.rb +0 -4476
  123. data/spec/adapters/spec_helper.rb +0 -44
  124. data/spec/adapters/sqlanywhere_spec.rb +0 -97
  125. data/spec/adapters/sqlite_spec.rb +0 -652
  126. data/spec/bin_spec.rb +0 -278
  127. data/spec/core/connection_pool_spec.rb +0 -1250
  128. data/spec/core/database_spec.rb +0 -2915
  129. data/spec/core/dataset_spec.rb +0 -5547
  130. data/spec/core/deprecated_spec.rb +0 -70
  131. data/spec/core/expression_filters_spec.rb +0 -1498
  132. data/spec/core/mock_adapter_spec.rb +0 -722
  133. data/spec/core/object_graph_spec.rb +0 -336
  134. data/spec/core/placeholder_literalizer_spec.rb +0 -166
  135. data/spec/core/schema_generator_spec.rb +0 -214
  136. data/spec/core/schema_spec.rb +0 -1844
  137. data/spec/core/spec_helper.rb +0 -24
  138. data/spec/core/version_spec.rb +0 -14
  139. data/spec/core_extensions_spec.rb +0 -763
  140. data/spec/core_model_spec.rb +0 -2
  141. data/spec/core_spec.rb +0 -1
  142. data/spec/deprecation_helper.rb +0 -30
  143. data/spec/extensions/accessed_columns_spec.rb +0 -51
  144. data/spec/extensions/active_model_spec.rb +0 -99
  145. data/spec/extensions/after_initialize_spec.rb +0 -28
  146. data/spec/extensions/any_not_empty_spec.rb +0 -23
  147. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  148. data/spec/extensions/association_dependencies_spec.rb +0 -125
  149. data/spec/extensions/association_multi_add_remove_spec.rb +0 -1041
  150. data/spec/extensions/association_pks_spec.rb +0 -423
  151. data/spec/extensions/association_proxies_spec.rb +0 -100
  152. data/spec/extensions/auto_literal_strings_spec.rb +0 -205
  153. data/spec/extensions/auto_validations_spec.rb +0 -229
  154. data/spec/extensions/blacklist_security_spec.rb +0 -95
  155. data/spec/extensions/blank_spec.rb +0 -69
  156. data/spec/extensions/boolean_readers_spec.rb +0 -93
  157. data/spec/extensions/boolean_subsets_spec.rb +0 -47
  158. data/spec/extensions/caching_spec.rb +0 -273
  159. data/spec/extensions/caller_logging_spec.rb +0 -52
  160. data/spec/extensions/class_table_inheritance_spec.rb +0 -750
  161. data/spec/extensions/column_conflicts_spec.rb +0 -75
  162. data/spec/extensions/column_select_spec.rb +0 -129
  163. data/spec/extensions/columns_introspection_spec.rb +0 -90
  164. data/spec/extensions/columns_updated_spec.rb +0 -35
  165. data/spec/extensions/composition_spec.rb +0 -248
  166. data/spec/extensions/connection_expiration_spec.rb +0 -151
  167. data/spec/extensions/connection_validator_spec.rb +0 -144
  168. data/spec/extensions/constant_sql_override_spec.rb +0 -24
  169. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
  170. data/spec/extensions/constraint_validations_spec.rb +0 -439
  171. data/spec/extensions/core_refinements_spec.rb +0 -528
  172. data/spec/extensions/csv_serializer_spec.rb +0 -183
  173. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  174. data/spec/extensions/dataset_associations_spec.rb +0 -365
  175. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  176. data/spec/extensions/date_arithmetic_spec.rb +0 -181
  177. data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
  178. data/spec/extensions/def_dataset_method_spec.rb +0 -100
  179. data/spec/extensions/defaults_setter_spec.rb +0 -150
  180. data/spec/extensions/delay_add_association_spec.rb +0 -73
  181. data/spec/extensions/dirty_spec.rb +0 -222
  182. data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
  183. data/spec/extensions/eager_each_spec.rb +0 -62
  184. data/spec/extensions/eager_graph_eager_spec.rb +0 -100
  185. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  186. data/spec/extensions/error_splitter_spec.rb +0 -18
  187. data/spec/extensions/error_sql_spec.rb +0 -20
  188. data/spec/extensions/escaped_like_spec.rb +0 -40
  189. data/spec/extensions/eval_inspect_spec.rb +0 -81
  190. data/spec/extensions/exclude_or_null_spec.rb +0 -15
  191. data/spec/extensions/finder_spec.rb +0 -260
  192. data/spec/extensions/force_encoding_spec.rb +0 -126
  193. data/spec/extensions/freeze_datasets_spec.rb +0 -31
  194. data/spec/extensions/graph_each_spec.rb +0 -113
  195. data/spec/extensions/hook_class_methods_spec.rb +0 -402
  196. data/spec/extensions/identifier_mangling_spec.rb +0 -201
  197. data/spec/extensions/implicit_subquery_spec.rb +0 -58
  198. data/spec/extensions/index_caching_spec.rb +0 -66
  199. data/spec/extensions/inflector_spec.rb +0 -183
  200. data/spec/extensions/input_transformer_spec.rb +0 -69
  201. data/spec/extensions/insert_conflict_spec.rb +0 -103
  202. data/spec/extensions/insert_returning_select_spec.rb +0 -72
  203. data/spec/extensions/instance_filters_spec.rb +0 -79
  204. data/spec/extensions/instance_hooks_spec.rb +0 -246
  205. data/spec/extensions/integer64_spec.rb +0 -22
  206. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  207. data/spec/extensions/json_serializer_spec.rb +0 -336
  208. data/spec/extensions/lazy_attributes_spec.rb +0 -183
  209. data/spec/extensions/list_spec.rb +0 -291
  210. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  211. data/spec/extensions/many_through_many_spec.rb +0 -2177
  212. data/spec/extensions/migration_spec.rb +0 -864
  213. data/spec/extensions/modification_detection_spec.rb +0 -93
  214. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
  215. data/spec/extensions/named_timezones_spec.rb +0 -218
  216. data/spec/extensions/nested_attributes_spec.rb +0 -815
  217. data/spec/extensions/null_dataset_spec.rb +0 -85
  218. data/spec/extensions/optimistic_locking_spec.rb +0 -127
  219. data/spec/extensions/pagination_spec.rb +0 -116
  220. data/spec/extensions/pg_array_associations_spec.rb +0 -802
  221. data/spec/extensions/pg_array_ops_spec.rb +0 -144
  222. data/spec/extensions/pg_array_spec.rb +0 -398
  223. data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -209
  224. data/spec/extensions/pg_enum_spec.rb +0 -118
  225. data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
  226. data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
  227. data/spec/extensions/pg_hstore_spec.rb +0 -219
  228. data/spec/extensions/pg_inet_ops_spec.rb +0 -102
  229. data/spec/extensions/pg_inet_spec.rb +0 -72
  230. data/spec/extensions/pg_interval_spec.rb +0 -103
  231. data/spec/extensions/pg_json_ops_spec.rb +0 -356
  232. data/spec/extensions/pg_json_spec.rb +0 -451
  233. data/spec/extensions/pg_loose_count_spec.rb +0 -23
  234. data/spec/extensions/pg_range_ops_spec.rb +0 -60
  235. data/spec/extensions/pg_range_spec.rb +0 -600
  236. data/spec/extensions/pg_row_ops_spec.rb +0 -61
  237. data/spec/extensions/pg_row_plugin_spec.rb +0 -60
  238. data/spec/extensions/pg_row_spec.rb +0 -363
  239. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
  240. data/spec/extensions/pg_timestamptz_spec.rb +0 -17
  241. data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
  242. data/spec/extensions/prepared_statements_spec.rb +0 -177
  243. data/spec/extensions/pretty_table_spec.rb +0 -123
  244. data/spec/extensions/query_spec.rb +0 -94
  245. data/spec/extensions/rcte_tree_spec.rb +0 -387
  246. data/spec/extensions/round_timestamps_spec.rb +0 -39
  247. data/spec/extensions/s_spec.rb +0 -60
  248. data/spec/extensions/schema_caching_spec.rb +0 -64
  249. data/spec/extensions/schema_dumper_spec.rb +0 -870
  250. data/spec/extensions/select_remove_spec.rb +0 -38
  251. data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
  252. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  253. data/spec/extensions/serialization_spec.rb +0 -365
  254. data/spec/extensions/server_block_spec.rb +0 -135
  255. data/spec/extensions/server_logging_spec.rb +0 -45
  256. data/spec/extensions/sharding_spec.rb +0 -197
  257. data/spec/extensions/shared_caching_spec.rb +0 -151
  258. data/spec/extensions/single_table_inheritance_spec.rb +0 -347
  259. data/spec/extensions/singular_table_names_spec.rb +0 -22
  260. data/spec/extensions/skip_create_refresh_spec.rb +0 -18
  261. data/spec/extensions/spec_helper.rb +0 -70
  262. data/spec/extensions/split_array_nil_spec.rb +0 -24
  263. data/spec/extensions/split_values_spec.rb +0 -57
  264. data/spec/extensions/sql_comments_spec.rb +0 -33
  265. data/spec/extensions/sql_expr_spec.rb +0 -59
  266. data/spec/extensions/static_cache_cache_spec.rb +0 -35
  267. data/spec/extensions/static_cache_spec.rb +0 -471
  268. data/spec/extensions/string_agg_spec.rb +0 -90
  269. data/spec/extensions/string_date_time_spec.rb +0 -95
  270. data/spec/extensions/string_stripper_spec.rb +0 -68
  271. data/spec/extensions/subclasses_spec.rb +0 -79
  272. data/spec/extensions/subset_conditions_spec.rb +0 -38
  273. data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
  274. data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
  275. data/spec/extensions/synchronize_sql_spec.rb +0 -124
  276. data/spec/extensions/table_select_spec.rb +0 -83
  277. data/spec/extensions/tactical_eager_loading_spec.rb +0 -402
  278. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  279. data/spec/extensions/throw_failures_spec.rb +0 -74
  280. data/spec/extensions/timestamps_spec.rb +0 -209
  281. data/spec/extensions/to_dot_spec.rb +0 -153
  282. data/spec/extensions/touch_spec.rb +0 -226
  283. data/spec/extensions/tree_spec.rb +0 -334
  284. data/spec/extensions/typecast_on_load_spec.rb +0 -86
  285. data/spec/extensions/unlimited_update_spec.rb +0 -21
  286. data/spec/extensions/update_or_create_spec.rb +0 -83
  287. data/spec/extensions/update_primary_key_spec.rb +0 -105
  288. data/spec/extensions/update_refresh_spec.rb +0 -59
  289. data/spec/extensions/uuid_spec.rb +0 -101
  290. data/spec/extensions/validate_associated_spec.rb +0 -52
  291. data/spec/extensions/validation_class_methods_spec.rb +0 -1040
  292. data/spec/extensions/validation_contexts_spec.rb +0 -31
  293. data/spec/extensions/validation_helpers_spec.rb +0 -525
  294. data/spec/extensions/whitelist_security_spec.rb +0 -157
  295. data/spec/extensions/xml_serializer_spec.rb +0 -213
  296. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  297. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  298. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  299. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  300. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  301. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  302. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  303. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  304. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  305. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  306. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  307. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  308. data/spec/files/double_migration/001_create_sessions.rb +0 -9
  309. data/spec/files/double_migration/002_create_nodes.rb +0 -19
  310. data/spec/files/double_migration/003_3_create_users.rb +0 -4
  311. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  312. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  313. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  314. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  315. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  316. data/spec/files/empty_migration/001_create_sessions.rb +0 -9
  317. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  318. data/spec/files/empty_migration/003_3_create_users.rb +0 -4
  319. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  320. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  321. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  322. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  323. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  324. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  325. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  326. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  327. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  328. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  329. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  330. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  331. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  332. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  333. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  334. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  335. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  336. data/spec/files/reversible_migrations/006_reversible.rb +0 -10
  337. data/spec/files/reversible_migrations/007_reversible.rb +0 -10
  338. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  339. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  340. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  341. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  342. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  343. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  344. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  345. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  346. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  347. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  348. data/spec/guards_helper.rb +0 -59
  349. data/spec/integration/associations_test.rb +0 -2597
  350. data/spec/integration/database_test.rb +0 -113
  351. data/spec/integration/dataset_test.rb +0 -2037
  352. data/spec/integration/eager_loader_test.rb +0 -687
  353. data/spec/integration/migrator_test.rb +0 -262
  354. data/spec/integration/model_test.rb +0 -203
  355. data/spec/integration/plugin_test.rb +0 -2423
  356. data/spec/integration/prepared_statement_test.rb +0 -405
  357. data/spec/integration/schema_test.rb +0 -903
  358. data/spec/integration/spec_helper.rb +0 -71
  359. data/spec/integration/timezone_test.rb +0 -86
  360. data/spec/integration/transaction_test.rb +0 -603
  361. data/spec/integration/type_test.rb +0 -127
  362. data/spec/model/association_reflection_spec.rb +0 -803
  363. data/spec/model/associations_spec.rb +0 -4738
  364. data/spec/model/base_spec.rb +0 -875
  365. data/spec/model/class_dataset_methods_spec.rb +0 -146
  366. data/spec/model/dataset_methods_spec.rb +0 -198
  367. data/spec/model/eager_loading_spec.rb +0 -2377
  368. data/spec/model/hooks_spec.rb +0 -370
  369. data/spec/model/inflector_spec.rb +0 -26
  370. data/spec/model/model_spec.rb +0 -956
  371. data/spec/model/plugins_spec.rb +0 -429
  372. data/spec/model/record_spec.rb +0 -2118
  373. data/spec/model/spec_helper.rb +0 -46
  374. data/spec/model/validations_spec.rb +0 -220
  375. data/spec/model_no_assoc_spec.rb +0 -1
  376. data/spec/model_spec.rb +0 -1
  377. data/spec/plugin_spec.rb +0 -1
  378. data/spec/sequel_coverage.rb +0 -15
  379. data/spec/sequel_warning.rb +0 -4
  380. 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.