sequel 4.49.0 → 5.0.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 (477) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +70 -0
  3. data/README.rdoc +195 -136
  4. data/Rakefile +26 -42
  5. data/bin/sequel +3 -5
  6. data/doc/advanced_associations.rdoc +86 -163
  7. data/doc/association_basics.rdoc +197 -274
  8. data/doc/bin_sequel.rdoc +5 -3
  9. data/doc/cheat_sheet.rdoc +66 -43
  10. data/doc/code_order.rdoc +1 -8
  11. data/doc/core_extensions.rdoc +81 -56
  12. data/doc/dataset_basics.rdoc +8 -17
  13. data/doc/dataset_filtering.rdoc +81 -86
  14. data/doc/extensions.rdoc +3 -10
  15. data/doc/mass_assignment.rdoc +73 -30
  16. data/doc/migration.rdoc +19 -36
  17. data/doc/model_dataset_method_design.rdoc +14 -17
  18. data/doc/model_hooks.rdoc +15 -25
  19. data/doc/model_plugins.rdoc +10 -10
  20. data/doc/mssql_stored_procedures.rdoc +3 -3
  21. data/doc/object_model.rdoc +52 -70
  22. data/doc/opening_databases.rdoc +39 -32
  23. data/doc/postgresql.rdoc +48 -38
  24. data/doc/prepared_statements.rdoc +27 -22
  25. data/doc/querying.rdoc +173 -150
  26. data/doc/reflection.rdoc +5 -6
  27. data/doc/release_notes/5.0.0.txt +159 -0
  28. data/doc/schema_modification.rdoc +63 -60
  29. data/doc/security.rdoc +97 -88
  30. data/doc/sharding.rdoc +43 -30
  31. data/doc/sql.rdoc +53 -65
  32. data/doc/testing.rdoc +3 -5
  33. data/doc/thread_safety.rdoc +2 -4
  34. data/doc/transactions.rdoc +18 -17
  35. data/doc/validations.rdoc +48 -45
  36. data/doc/virtual_rows.rdoc +87 -115
  37. data/lib/sequel.rb +1 -1
  38. data/lib/sequel/adapters/ado.rb +9 -25
  39. data/lib/sequel/adapters/ado/access.rb +7 -13
  40. data/lib/sequel/adapters/ado/mssql.rb +2 -9
  41. data/lib/sequel/adapters/amalgalite.rb +3 -18
  42. data/lib/sequel/adapters/ibmdb.rb +9 -45
  43. data/lib/sequel/adapters/jdbc.rb +13 -73
  44. data/lib/sequel/adapters/jdbc/db2.rb +8 -37
  45. data/lib/sequel/adapters/jdbc/derby.rb +4 -50
  46. data/lib/sequel/adapters/jdbc/h2.rb +4 -25
  47. data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -26
  48. data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
  49. data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
  50. data/lib/sequel/adapters/jdbc/mysql.rb +1 -15
  51. data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
  52. data/lib/sequel/adapters/jdbc/postgresql.rb +2 -31
  53. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
  54. data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
  55. data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
  56. data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
  57. data/lib/sequel/adapters/mock.rb +4 -30
  58. data/lib/sequel/adapters/mysql.rb +7 -44
  59. data/lib/sequel/adapters/mysql2.rb +5 -23
  60. data/lib/sequel/adapters/odbc.rb +0 -19
  61. data/lib/sequel/adapters/odbc/db2.rb +1 -1
  62. data/lib/sequel/adapters/odbc/mssql.rb +4 -12
  63. data/lib/sequel/adapters/odbc/oracle.rb +1 -1
  64. data/lib/sequel/adapters/oracle.rb +7 -13
  65. data/lib/sequel/adapters/postgres.rb +13 -57
  66. data/lib/sequel/adapters/postgresql.rb +1 -1
  67. data/lib/sequel/adapters/shared/access.rb +11 -51
  68. data/lib/sequel/adapters/shared/db2.rb +3 -61
  69. data/lib/sequel/adapters/shared/mssql.rb +21 -157
  70. data/lib/sequel/adapters/shared/mysql.rb +23 -224
  71. data/lib/sequel/adapters/shared/oracle.rb +13 -41
  72. data/lib/sequel/adapters/shared/postgres.rb +44 -259
  73. data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
  74. data/lib/sequel/adapters/shared/sqlite.rb +12 -101
  75. data/lib/sequel/adapters/sqlanywhere.rb +4 -23
  76. data/lib/sequel/adapters/sqlite.rb +2 -19
  77. data/lib/sequel/adapters/tinytds.rb +5 -15
  78. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
  79. data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -4
  80. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
  81. data/lib/sequel/adapters/utils/replace.rb +0 -5
  82. data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
  83. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
  84. data/lib/sequel/ast_transformer.rb +3 -94
  85. data/lib/sequel/connection_pool.rb +26 -28
  86. data/lib/sequel/connection_pool/sharded_single.rb +1 -4
  87. data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
  88. data/lib/sequel/connection_pool/single.rb +0 -2
  89. data/lib/sequel/connection_pool/threaded.rb +94 -110
  90. data/lib/sequel/core.rb +42 -101
  91. data/lib/sequel/database.rb +12 -2
  92. data/lib/sequel/database/connecting.rb +23 -60
  93. data/lib/sequel/database/dataset.rb +6 -9
  94. data/lib/sequel/database/dataset_defaults.rb +4 -48
  95. data/lib/sequel/database/features.rb +5 -4
  96. data/lib/sequel/database/logging.rb +2 -9
  97. data/lib/sequel/database/misc.rb +23 -55
  98. data/lib/sequel/database/query.rb +8 -13
  99. data/lib/sequel/database/schema_generator.rb +89 -64
  100. data/lib/sequel/database/schema_methods.rb +61 -79
  101. data/lib/sequel/database/transactions.rb +4 -24
  102. data/lib/sequel/dataset.rb +18 -10
  103. data/lib/sequel/dataset/actions.rb +53 -107
  104. data/lib/sequel/dataset/dataset_module.rb +3 -15
  105. data/lib/sequel/dataset/features.rb +30 -30
  106. data/lib/sequel/dataset/graph.rb +40 -49
  107. data/lib/sequel/dataset/misc.rb +12 -37
  108. data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
  109. data/lib/sequel/dataset/prepared_statements.rb +23 -51
  110. data/lib/sequel/dataset/query.rb +71 -155
  111. data/lib/sequel/dataset/sql.rb +30 -225
  112. data/lib/sequel/deprecated.rb +18 -27
  113. data/lib/sequel/exceptions.rb +1 -17
  114. data/lib/sequel/extensions/_model_pg_row.rb +0 -7
  115. data/lib/sequel/extensions/_pretty_table.rb +1 -3
  116. data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
  117. data/lib/sequel/extensions/connection_expiration.rb +1 -1
  118. data/lib/sequel/extensions/connection_validator.rb +1 -1
  119. data/lib/sequel/extensions/constraint_validations.rb +11 -11
  120. data/lib/sequel/extensions/core_extensions.rb +39 -49
  121. data/lib/sequel/extensions/core_refinements.rb +39 -45
  122. data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
  123. data/lib/sequel/extensions/date_arithmetic.rb +7 -7
  124. data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
  125. data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
  126. data/lib/sequel/extensions/eval_inspect.rb +4 -11
  127. data/lib/sequel/extensions/freeze_datasets.rb +1 -69
  128. data/lib/sequel/extensions/from_block.rb +1 -35
  129. data/lib/sequel/extensions/graph_each.rb +2 -2
  130. data/lib/sequel/extensions/identifier_mangling.rb +9 -19
  131. data/lib/sequel/extensions/implicit_subquery.rb +2 -2
  132. data/lib/sequel/extensions/inflector.rb +4 -4
  133. data/lib/sequel/extensions/migration.rb +23 -40
  134. data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
  135. data/lib/sequel/extensions/null_dataset.rb +2 -8
  136. data/lib/sequel/extensions/pagination.rb +1 -17
  137. data/lib/sequel/extensions/pg_array.rb +20 -189
  138. data/lib/sequel/extensions/pg_hstore.rb +11 -50
  139. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
  140. data/lib/sequel/extensions/pg_inet.rb +2 -15
  141. data/lib/sequel/extensions/pg_interval.rb +1 -20
  142. data/lib/sequel/extensions/pg_json.rb +7 -27
  143. data/lib/sequel/extensions/pg_loose_count.rb +1 -1
  144. data/lib/sequel/extensions/pg_range.rb +6 -121
  145. data/lib/sequel/extensions/pg_range_ops.rb +1 -3
  146. data/lib/sequel/extensions/pg_row.rb +5 -77
  147. data/lib/sequel/extensions/pg_row_ops.rb +2 -13
  148. data/lib/sequel/extensions/query.rb +3 -4
  149. data/lib/sequel/extensions/round_timestamps.rb +0 -6
  150. data/lib/sequel/extensions/schema_dumper.rb +13 -13
  151. data/lib/sequel/extensions/select_remove.rb +3 -3
  152. data/lib/sequel/extensions/split_array_nil.rb +2 -2
  153. data/lib/sequel/extensions/sql_comments.rb +2 -2
  154. data/lib/sequel/extensions/string_agg.rb +11 -8
  155. data/lib/sequel/extensions/symbol_aref.rb +6 -20
  156. data/lib/sequel/model.rb +27 -62
  157. data/lib/sequel/model/associations.rb +128 -131
  158. data/lib/sequel/model/base.rb +171 -711
  159. data/lib/sequel/model/default_inflections.rb +1 -1
  160. data/lib/sequel/model/errors.rb +0 -3
  161. data/lib/sequel/model/exceptions.rb +2 -6
  162. data/lib/sequel/model/inflections.rb +1 -26
  163. data/lib/sequel/model/plugins.rb +1 -0
  164. data/lib/sequel/plugins/active_model.rb +2 -5
  165. data/lib/sequel/plugins/association_dependencies.rb +15 -15
  166. data/lib/sequel/plugins/association_pks.rb +14 -28
  167. data/lib/sequel/plugins/association_proxies.rb +6 -7
  168. data/lib/sequel/plugins/auto_validations.rb +4 -4
  169. data/lib/sequel/plugins/before_after_save.rb +0 -43
  170. data/lib/sequel/plugins/blacklist_security.rb +9 -8
  171. data/lib/sequel/plugins/boolean_readers.rb +3 -3
  172. data/lib/sequel/plugins/boolean_subsets.rb +2 -2
  173. data/lib/sequel/plugins/caching.rb +5 -5
  174. data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
  175. data/lib/sequel/plugins/column_conflicts.rb +2 -2
  176. data/lib/sequel/plugins/column_select.rb +2 -2
  177. data/lib/sequel/plugins/composition.rb +15 -24
  178. data/lib/sequel/plugins/constraint_validations.rb +4 -3
  179. data/lib/sequel/plugins/csv_serializer.rb +13 -20
  180. data/lib/sequel/plugins/dataset_associations.rb +2 -2
  181. data/lib/sequel/plugins/def_dataset_method.rb +5 -5
  182. data/lib/sequel/plugins/defaults_setter.rb +1 -1
  183. data/lib/sequel/plugins/delay_add_association.rb +1 -1
  184. data/lib/sequel/plugins/finder.rb +16 -10
  185. data/lib/sequel/plugins/force_encoding.rb +1 -7
  186. data/lib/sequel/plugins/hook_class_methods.rb +4 -106
  187. data/lib/sequel/plugins/input_transformer.rb +10 -11
  188. data/lib/sequel/plugins/insert_returning_select.rb +1 -9
  189. data/lib/sequel/plugins/instance_filters.rb +5 -5
  190. data/lib/sequel/plugins/instance_hooks.rb +7 -52
  191. data/lib/sequel/plugins/inverted_subsets.rb +3 -1
  192. data/lib/sequel/plugins/json_serializer.rb +19 -19
  193. data/lib/sequel/plugins/lazy_attributes.rb +1 -10
  194. data/lib/sequel/plugins/list.rb +6 -6
  195. data/lib/sequel/plugins/many_through_many.rb +11 -8
  196. data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
  197. data/lib/sequel/plugins/nested_attributes.rb +18 -31
  198. data/lib/sequel/plugins/optimistic_locking.rb +3 -3
  199. data/lib/sequel/plugins/pg_array_associations.rb +8 -2
  200. data/lib/sequel/plugins/pg_row.rb +2 -11
  201. data/lib/sequel/plugins/prepared_statements.rb +13 -66
  202. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
  203. data/lib/sequel/plugins/rcte_tree.rb +7 -7
  204. data/lib/sequel/plugins/serialization.rb +15 -33
  205. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  206. data/lib/sequel/plugins/sharding.rb +2 -8
  207. data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
  208. data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
  209. data/lib/sequel/plugins/static_cache.rb +8 -9
  210. data/lib/sequel/plugins/string_stripper.rb +3 -3
  211. data/lib/sequel/plugins/subclasses.rb +1 -1
  212. data/lib/sequel/plugins/subset_conditions.rb +2 -2
  213. data/lib/sequel/plugins/table_select.rb +2 -2
  214. data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
  215. data/lib/sequel/plugins/timestamps.rb +6 -7
  216. data/lib/sequel/plugins/touch.rb +4 -8
  217. data/lib/sequel/plugins/tree.rb +3 -3
  218. data/lib/sequel/plugins/typecast_on_load.rb +2 -2
  219. data/lib/sequel/plugins/unlimited_update.rb +1 -7
  220. data/lib/sequel/plugins/update_or_create.rb +3 -3
  221. data/lib/sequel/plugins/update_refresh.rb +3 -3
  222. data/lib/sequel/plugins/uuid.rb +7 -11
  223. data/lib/sequel/plugins/validation_class_methods.rb +10 -9
  224. data/lib/sequel/plugins/validation_contexts.rb +4 -4
  225. data/lib/sequel/plugins/validation_helpers.rb +26 -25
  226. data/lib/sequel/plugins/whitelist_security.rb +13 -9
  227. data/lib/sequel/plugins/xml_serializer.rb +24 -25
  228. data/lib/sequel/sql.rb +145 -276
  229. data/lib/sequel/timezones.rb +8 -22
  230. data/lib/sequel/version.rb +2 -2
  231. data/spec/adapter_spec.rb +1 -1
  232. data/spec/adapters/db2_spec.rb +2 -103
  233. data/spec/adapters/mssql_spec.rb +89 -68
  234. data/spec/adapters/mysql_spec.rb +101 -480
  235. data/spec/adapters/oracle_spec.rb +1 -9
  236. data/spec/adapters/postgres_spec.rb +312 -565
  237. data/spec/adapters/spec_helper.rb +12 -31
  238. data/spec/adapters/sqlanywhere_spec.rb +2 -77
  239. data/spec/adapters/sqlite_spec.rb +8 -146
  240. data/spec/bin_spec.rb +11 -16
  241. data/spec/core/connection_pool_spec.rb +173 -74
  242. data/spec/core/database_spec.rb +64 -244
  243. data/spec/core/dataset_spec.rb +81 -415
  244. data/spec/core/deprecated_spec.rb +3 -3
  245. data/spec/core/expression_filters_spec.rb +37 -144
  246. data/spec/core/mock_adapter_spec.rb +176 -4
  247. data/spec/core/object_graph_spec.rb +11 -60
  248. data/spec/core/placeholder_literalizer_spec.rb +1 -14
  249. data/spec/core/schema_generator_spec.rb +51 -40
  250. data/spec/core/schema_spec.rb +74 -77
  251. data/spec/core/spec_helper.rb +6 -24
  252. data/spec/core/version_spec.rb +1 -1
  253. data/spec/core_extensions_spec.rb +7 -83
  254. data/spec/core_model_spec.rb +2 -2
  255. data/spec/deprecation_helper.rb +2 -14
  256. data/spec/extensions/accessed_columns_spec.rb +1 -1
  257. data/spec/extensions/active_model_spec.rb +3 -3
  258. data/spec/extensions/after_initialize_spec.rb +1 -1
  259. data/spec/extensions/arbitrary_servers_spec.rb +2 -2
  260. data/spec/extensions/association_dependencies_spec.rb +1 -1
  261. data/spec/extensions/association_pks_spec.rb +4 -59
  262. data/spec/extensions/association_proxies_spec.rb +1 -1
  263. data/spec/extensions/auto_literal_strings_spec.rb +1 -12
  264. data/spec/extensions/auto_validations_spec.rb +1 -1
  265. data/spec/extensions/blacklist_security_spec.rb +1 -1
  266. data/spec/extensions/blank_spec.rb +1 -1
  267. data/spec/extensions/boolean_readers_spec.rb +1 -1
  268. data/spec/extensions/boolean_subsets_spec.rb +1 -1
  269. data/spec/extensions/caching_spec.rb +1 -1
  270. data/spec/extensions/class_table_inheritance_spec.rb +35 -1086
  271. data/spec/extensions/column_conflicts_spec.rb +1 -1
  272. data/spec/extensions/column_select_spec.rb +4 -4
  273. data/spec/extensions/columns_introspection_spec.rb +1 -1
  274. data/spec/extensions/columns_updated_spec.rb +1 -1
  275. data/spec/extensions/composition_spec.rb +1 -7
  276. data/spec/extensions/connection_expiration_spec.rb +3 -3
  277. data/spec/extensions/connection_validator_spec.rb +3 -3
  278. data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
  279. data/spec/extensions/constraint_validations_spec.rb +1 -1
  280. data/spec/extensions/core_refinements_spec.rb +1 -3
  281. data/spec/extensions/csv_serializer_spec.rb +4 -9
  282. data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
  283. data/spec/extensions/dataset_associations_spec.rb +2 -1
  284. data/spec/extensions/dataset_source_alias_spec.rb +1 -1
  285. data/spec/extensions/date_arithmetic_spec.rb +3 -3
  286. data/spec/extensions/def_dataset_method_spec.rb +1 -1
  287. data/spec/extensions/defaults_setter_spec.rb +2 -2
  288. data/spec/extensions/delay_add_association_spec.rb +8 -9
  289. data/spec/extensions/dirty_spec.rb +1 -1
  290. data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
  291. data/spec/extensions/eager_each_spec.rb +2 -2
  292. data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
  293. data/spec/extensions/error_splitter_spec.rb +1 -1
  294. data/spec/extensions/error_sql_spec.rb +1 -1
  295. data/spec/extensions/eval_inspect_spec.rb +1 -1
  296. data/spec/extensions/finder_spec.rb +1 -1
  297. data/spec/extensions/force_encoding_spec.rb +2 -5
  298. data/spec/extensions/freeze_datasets_spec.rb +1 -1
  299. data/spec/extensions/graph_each_spec.rb +5 -5
  300. data/spec/extensions/hook_class_methods_spec.rb +1 -194
  301. data/spec/extensions/identifier_mangling_spec.rb +17 -170
  302. data/spec/extensions/implicit_subquery_spec.rb +1 -5
  303. data/spec/extensions/inflector_spec.rb +1 -1
  304. data/spec/extensions/input_transformer_spec.rb +7 -2
  305. data/spec/extensions/insert_returning_select_spec.rb +1 -1
  306. data/spec/extensions/instance_filters_spec.rb +1 -1
  307. data/spec/extensions/instance_hooks_spec.rb +1 -95
  308. data/spec/extensions/inverted_subsets_spec.rb +1 -1
  309. data/spec/extensions/json_serializer_spec.rb +1 -1
  310. data/spec/extensions/lazy_attributes_spec.rb +1 -7
  311. data/spec/extensions/list_spec.rb +1 -1
  312. data/spec/extensions/looser_typecasting_spec.rb +1 -1
  313. data/spec/extensions/many_through_many_spec.rb +1 -1
  314. data/spec/extensions/migration_spec.rb +2 -2
  315. data/spec/extensions/modification_detection_spec.rb +1 -1
  316. data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
  317. data/spec/extensions/named_timezones_spec.rb +3 -3
  318. data/spec/extensions/nested_attributes_spec.rb +1 -29
  319. data/spec/extensions/null_dataset_spec.rb +1 -11
  320. data/spec/extensions/optimistic_locking_spec.rb +1 -1
  321. data/spec/extensions/pagination_spec.rb +1 -1
  322. data/spec/extensions/pg_array_associations_spec.rb +4 -1
  323. data/spec/extensions/pg_array_ops_spec.rb +1 -1
  324. data/spec/extensions/pg_array_spec.rb +3 -48
  325. data/spec/extensions/pg_enum_spec.rb +1 -1
  326. data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
  327. data/spec/extensions/pg_hstore_spec.rb +23 -32
  328. data/spec/extensions/pg_inet_ops_spec.rb +1 -1
  329. data/spec/extensions/pg_inet_spec.rb +1 -14
  330. data/spec/extensions/pg_interval_spec.rb +3 -13
  331. data/spec/extensions/pg_json_ops_spec.rb +1 -1
  332. data/spec/extensions/pg_json_spec.rb +1 -13
  333. data/spec/extensions/pg_loose_count_spec.rb +1 -1
  334. data/spec/extensions/pg_range_ops_spec.rb +1 -1
  335. data/spec/extensions/pg_range_spec.rb +3 -88
  336. data/spec/extensions/pg_row_ops_spec.rb +1 -1
  337. data/spec/extensions/pg_row_plugin_spec.rb +1 -1
  338. data/spec/extensions/pg_row_spec.rb +1 -44
  339. data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
  340. data/spec/extensions/prepared_statements_safe_spec.rb +1 -1
  341. data/spec/extensions/prepared_statements_spec.rb +13 -48
  342. data/spec/extensions/pretty_table_spec.rb +1 -1
  343. data/spec/extensions/query_spec.rb +1 -12
  344. data/spec/extensions/rcte_tree_spec.rb +1 -1
  345. data/spec/extensions/round_timestamps_spec.rb +1 -5
  346. data/spec/extensions/s_spec.rb +1 -1
  347. data/spec/extensions/schema_caching_spec.rb +1 -1
  348. data/spec/extensions/schema_dumper_spec.rb +1 -1
  349. data/spec/extensions/select_remove_spec.rb +1 -1
  350. data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
  351. data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
  352. data/spec/extensions/serialization_spec.rb +2 -14
  353. data/spec/extensions/server_block_spec.rb +1 -1
  354. data/spec/extensions/server_logging_spec.rb +2 -2
  355. data/spec/extensions/sharding_spec.rb +1 -1
  356. data/spec/extensions/shared_caching_spec.rb +1 -28
  357. data/spec/extensions/single_table_inheritance_spec.rb +2 -5
  358. data/spec/extensions/singular_table_names_spec.rb +1 -1
  359. data/spec/extensions/skip_create_refresh_spec.rb +1 -1
  360. data/spec/extensions/spec_helper.rb +5 -27
  361. data/spec/extensions/split_array_nil_spec.rb +1 -1
  362. data/spec/extensions/split_values_spec.rb +1 -1
  363. data/spec/extensions/sql_comments_spec.rb +1 -1
  364. data/spec/extensions/sql_expr_spec.rb +1 -1
  365. data/spec/extensions/static_cache_spec.rb +1 -1
  366. data/spec/extensions/string_agg_spec.rb +2 -2
  367. data/spec/extensions/string_date_time_spec.rb +1 -1
  368. data/spec/extensions/string_stripper_spec.rb +1 -1
  369. data/spec/extensions/subclasses_spec.rb +1 -1
  370. data/spec/extensions/subset_conditions_spec.rb +1 -1
  371. data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
  372. data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
  373. data/spec/extensions/table_select_spec.rb +4 -4
  374. data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
  375. data/spec/extensions/thread_local_timezones_spec.rb +1 -1
  376. data/spec/extensions/timestamps_spec.rb +3 -3
  377. data/spec/extensions/to_dot_spec.rb +1 -1
  378. data/spec/extensions/touch_spec.rb +1 -1
  379. data/spec/extensions/tree_spec.rb +1 -1
  380. data/spec/extensions/typecast_on_load_spec.rb +1 -1
  381. data/spec/extensions/unlimited_update_spec.rb +1 -1
  382. data/spec/extensions/update_or_create_spec.rb +1 -1
  383. data/spec/extensions/update_primary_key_spec.rb +4 -3
  384. data/spec/extensions/update_refresh_spec.rb +1 -1
  385. data/spec/extensions/uuid_spec.rb +10 -12
  386. data/spec/extensions/validate_associated_spec.rb +1 -1
  387. data/spec/extensions/validation_class_methods_spec.rb +3 -3
  388. data/spec/extensions/validation_contexts_spec.rb +1 -1
  389. data/spec/extensions/validation_helpers_spec.rb +10 -44
  390. data/spec/extensions/whitelist_security_spec.rb +5 -5
  391. data/spec/extensions/xml_serializer_spec.rb +3 -3
  392. data/spec/guards_helper.rb +2 -1
  393. data/spec/integration/associations_test.rb +1 -23
  394. data/spec/integration/database_test.rb +7 -7
  395. data/spec/integration/dataset_test.rb +5 -47
  396. data/spec/integration/eager_loader_test.rb +1 -1
  397. data/spec/integration/migrator_test.rb +1 -1
  398. data/spec/integration/model_test.rb +4 -82
  399. data/spec/integration/plugin_test.rb +6 -22
  400. data/spec/integration/prepared_statement_test.rb +8 -88
  401. data/spec/integration/schema_test.rb +6 -6
  402. data/spec/integration/spec_helper.rb +13 -21
  403. data/spec/integration/timezone_test.rb +5 -5
  404. data/spec/integration/transaction_test.rb +3 -55
  405. data/spec/integration/type_test.rb +9 -9
  406. data/spec/model/association_reflection_spec.rb +24 -9
  407. data/spec/model/associations_spec.rb +124 -303
  408. data/spec/model/base_spec.rb +18 -137
  409. data/spec/model/class_dataset_methods_spec.rb +2 -20
  410. data/spec/model/dataset_methods_spec.rb +1 -20
  411. data/spec/model/eager_loading_spec.rb +17 -11
  412. data/spec/model/hooks_spec.rb +5 -300
  413. data/spec/model/inflector_spec.rb +1 -1
  414. data/spec/model/model_spec.rb +15 -320
  415. data/spec/model/plugins_spec.rb +2 -16
  416. data/spec/model/record_spec.rb +29 -121
  417. data/spec/model/spec_helper.rb +5 -15
  418. data/spec/model/validations_spec.rb +1 -1
  419. data/spec/sequel_warning.rb +1 -12
  420. metadata +8 -64
  421. data/doc/active_record.rdoc +0 -927
  422. data/lib/sequel/adapters/cubrid.rb +0 -160
  423. data/lib/sequel/adapters/do.rb +0 -166
  424. data/lib/sequel/adapters/do/mysql.rb +0 -69
  425. data/lib/sequel/adapters/do/postgres.rb +0 -46
  426. data/lib/sequel/adapters/do/sqlite3.rb +0 -41
  427. data/lib/sequel/adapters/jdbc/as400.rb +0 -92
  428. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
  429. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
  430. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
  431. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
  432. data/lib/sequel/adapters/odbc/progress.rb +0 -12
  433. data/lib/sequel/adapters/shared/cubrid.rb +0 -245
  434. data/lib/sequel/adapters/shared/firebird.rb +0 -261
  435. data/lib/sequel/adapters/shared/informix.rb +0 -63
  436. data/lib/sequel/adapters/shared/progress.rb +0 -40
  437. data/lib/sequel/adapters/swift.rb +0 -169
  438. data/lib/sequel/adapters/swift/mysql.rb +0 -50
  439. data/lib/sequel/adapters/swift/postgres.rb +0 -49
  440. data/lib/sequel/adapters/swift/sqlite.rb +0 -48
  441. data/lib/sequel/adapters/utils/pg_types.rb +0 -4
  442. data/lib/sequel/dataset/mutation.rb +0 -98
  443. data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
  444. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
  445. data/lib/sequel/extensions/filter_having.rb +0 -65
  446. data/lib/sequel/extensions/hash_aliases.rb +0 -51
  447. data/lib/sequel/extensions/meta_def.rb +0 -37
  448. data/lib/sequel/extensions/query_literals.rb +0 -86
  449. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
  450. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
  451. data/lib/sequel/extensions/set_overrides.rb +0 -82
  452. data/lib/sequel/no_core_ext.rb +0 -4
  453. data/lib/sequel/plugins/association_autoreloading.rb +0 -11
  454. data/lib/sequel/plugins/identifier_columns.rb +0 -49
  455. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
  456. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
  457. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
  458. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
  459. data/lib/sequel/plugins/schema.rb +0 -84
  460. data/lib/sequel/plugins/scissors.rb +0 -37
  461. data/spec/core/dataset_mutation_spec.rb +0 -253
  462. data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
  463. data/spec/extensions/before_after_save_spec.rb +0 -40
  464. data/spec/extensions/filter_having_spec.rb +0 -42
  465. data/spec/extensions/from_block_spec.rb +0 -21
  466. data/spec/extensions/hash_aliases_spec.rb +0 -26
  467. data/spec/extensions/identifier_columns_spec.rb +0 -19
  468. data/spec/extensions/meta_def_spec.rb +0 -35
  469. data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
  470. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
  471. data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
  472. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
  473. data/spec/extensions/query_literals_spec.rb +0 -185
  474. data/spec/extensions/schema_spec.rb +0 -123
  475. data/spec/extensions/scissors_spec.rb +0 -27
  476. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
  477. data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -14,39 +14,38 @@ module Sequel
14
14
  end
15
15
 
16
16
  # Whether this dataset will provide accurate number of rows matched for
17
- # delete and update statements. Accurate in this case is the number of
17
+ # delete and update statements, true by default. Accurate in this case is the number of
18
18
  # rows matched by the dataset's filter.
19
19
  def provides_accurate_rows_matched?
20
20
  true
21
21
  end
22
22
 
23
- # Whether you must use a column alias list for recursive CTEs (false by
24
- # default).
23
+ # Whether you must use a column alias list for recursive CTEs, false by default.
25
24
  def recursive_cte_requires_column_aliases?
26
25
  false
27
26
  end
28
27
 
29
- # Whether the dataset requires SQL standard datetimes (false by default,
30
- # as most allow strings with ISO 8601 format).
28
+ # Whether the dataset requires SQL standard datetimes. False by default,
29
+ # as most allow strings with ISO 8601 format.
31
30
  def requires_sql_standard_datetimes?
32
31
  false
33
32
  end
34
33
 
35
34
  # Whether type specifiers are required for prepared statement/bound
36
- # variable argument placeholders (i.e. :bv__integer)
35
+ # variable argument placeholders (i.e. :bv__integer), false by default.
37
36
  def requires_placeholder_type_specifiers?
38
37
  false
39
38
  end
40
39
 
41
- # Whether the dataset supports common table expressions (the WITH clause).
40
+ # Whether the dataset supports common table expressions, false by default.
42
41
  # If given, +type+ can be :select, :insert, :update, or :delete, in which case it
43
42
  # determines whether WITH is supported for the respective statement type.
44
43
  def supports_cte?(type=:select)
45
44
  false
46
45
  end
47
46
 
48
- # Whether the dataset supports common table expressions (the WITH clause)
49
- # in subqueries. If false, applies the WITH clause to the main query, which can cause issues
47
+ # Whether the dataset supports common table expressions in subqueries, false by default.
48
+ # If false, applies the WITH clause to the main query, which can cause issues
50
49
  # if multiple WITH clauses use the same name.
51
50
  def supports_cte_in_subqueries?
52
51
  false
@@ -64,23 +63,23 @@ module Sequel
64
63
  false
65
64
  end
66
65
 
67
- # Whether the dataset supports CUBE with GROUP BY.
66
+ # Whether the dataset supports CUBE with GROUP BY, false by default.
68
67
  def supports_group_cube?
69
68
  false
70
69
  end
71
70
 
72
- # Whether the dataset supports ROLLUP with GROUP BY.
71
+ # Whether the dataset supports ROLLUP with GROUP BY, false by default.
73
72
  def supports_group_rollup?
74
73
  false
75
74
  end
76
75
 
77
- # Whether the dataset supports GROUPING SETS with GROUP BY.
76
+ # Whether the dataset supports GROUPING SETS with GROUP BY, false by default.
78
77
  def supports_grouping_sets?
79
78
  false
80
79
  end
81
80
 
82
81
  # Whether this dataset supports the +insert_select+ method for returning all columns values
83
- # directly from an insert query.
82
+ # directly from an insert query, false by default.
84
83
  def supports_insert_select?
85
84
  supports_returning?(:insert)
86
85
  end
@@ -95,33 +94,34 @@ module Sequel
95
94
  true
96
95
  end
97
96
 
98
- # Whether the dataset supports the IS TRUE syntax.
97
+ # Whether the dataset supports the IS TRUE syntax, true by default.
99
98
  def supports_is_true?
100
99
  true
101
100
  end
102
101
 
103
- # Whether the dataset supports the JOIN table USING (column1, ...) syntax.
102
+ # Whether the dataset supports the JOIN table USING (column1, ...) syntax, true by default.
103
+ # If false, support is emulated using JOIN table ON (table.column1 = other_table.column1).
104
104
  def supports_join_using?
105
105
  true
106
106
  end
107
107
 
108
- # Whether the dataset supports LATERAL for subqueries in the FROM or JOIN clauses.
108
+ # Whether the dataset supports LATERAL for subqueries in the FROM or JOIN clauses, false by default.
109
109
  def supports_lateral_subqueries?
110
110
  false
111
111
  end
112
112
 
113
- # Whether limits are supported in correlated subqueries. True by default.
113
+ # Whether limits are supported in correlated subqueries, true by default.
114
114
  def supports_limits_in_correlated_subqueries?
115
115
  true
116
116
  end
117
117
 
118
- # Whether modifying joined datasets is supported.
118
+ # Whether modifying joined datasets is supported, false by default.
119
119
  def supports_modifying_joins?
120
120
  false
121
121
  end
122
122
 
123
123
  # Whether the IN/NOT IN operators support multiple columns when an
124
- # array of values is given.
124
+ # array of values is given, true by default.
125
125
  def supports_multiple_column_in?
126
126
  true
127
127
  end
@@ -132,12 +132,12 @@ module Sequel
132
132
  end
133
133
 
134
134
  # Whether the dataset supports or can fully emulate the DISTINCT ON clause,
135
- # including respecting the ORDER BY clause, false by default
135
+ # including respecting the ORDER BY clause, false by default.
136
136
  def supports_ordered_distinct_on?
137
137
  supports_distinct_on?
138
138
  end
139
139
 
140
- # Whether the dataset supports pattern matching by regular expressions.
140
+ # Whether the dataset supports pattern matching by regular expressions, false by default.
141
141
  def supports_regexp?
142
142
  false
143
143
  end
@@ -147,39 +147,39 @@ module Sequel
147
147
  false
148
148
  end
149
149
 
150
- # Whether the RETURNING clause is supported for the given type of query.
150
+ # Whether the RETURNING clause is supported for the given type of query, false by default.
151
151
  # +type+ can be :insert, :update, or :delete.
152
152
  def supports_returning?(type)
153
153
  false
154
154
  end
155
155
 
156
- # Whether the dataset supports skipping locked rows when returning data.
156
+ # Whether the dataset supports skipping locked rows when returning data, false by default.
157
157
  def supports_skip_locked?
158
158
  false
159
159
  end
160
160
 
161
- # Whether the database supports SELECT *, column FROM table
161
+ # Whether the database supports <tt>SELECT *, column FROM table</tt>, true by default.
162
162
  def supports_select_all_and_column?
163
163
  true
164
164
  end
165
165
 
166
- # Whether the dataset supports timezones in literal timestamps
166
+ # Whether the dataset supports timezones in literal timestamps, false by default.
167
167
  def supports_timestamp_timezones?
168
168
  false
169
169
  end
170
170
 
171
- # Whether the dataset supports fractional seconds in literal timestamps
171
+ # Whether the dataset supports fractional seconds in literal timestamps, true by default.
172
172
  def supports_timestamp_usecs?
173
173
  true
174
174
  end
175
175
 
176
- # Whether the dataset supports window functions.
176
+ # Whether the dataset supports window functions, false by default.
177
177
  def supports_window_functions?
178
178
  false
179
179
  end
180
180
 
181
181
  # Whether the dataset supports WHERE TRUE (or WHERE 1 for databases that
182
- # that use 1 for true).
182
+ # that use 1 for true), true by default.
183
183
  def supports_where_true?
184
184
  true
185
185
  end
@@ -187,12 +187,12 @@ module Sequel
187
187
  private
188
188
 
189
189
  # Whether insert(nil) or insert({}) must be emulated by
190
- # using at least one value, false by default.
190
+ # using at least one value.
191
191
  def insert_supports_empty_values?
192
192
  true
193
193
  end
194
194
 
195
- # Whether the database supports quoting function names, false by default.
195
+ # Whether the database supports quoting function names.
196
196
  def supports_quoted_function_names?
197
197
  false
198
198
  end
@@ -13,19 +13,15 @@ module Sequel
13
13
  # unlike +set_graph_aliases+, which replaces the list (the equivalent
14
14
  # of +select_append+ when graphing). See +set_graph_aliases+.
15
15
  #
16
- # DB[:table].add_graph_aliases(:some_alias=>[:table, :column])
16
+ # DB[:table].add_graph_aliases(some_alias: [:table, :column])
17
17
  # # SELECT ..., table.column AS some_alias
18
18
  def add_graph_aliases(graph_aliases)
19
19
  graph = opts[:graph]
20
- unless (ga = opts[:graph_aliases]) || (graph && (ga = graph[:column_aliases])) # SEQUEL5: Remove graph_aliases support
20
+ unless (graph && (ga = graph[:column_aliases]))
21
21
  raise Error, "cannot call add_graph_aliases on a dataset that has not been called with graph or set_graph_aliases"
22
22
  end
23
23
  columns, graph_aliases = graph_alias_columns(graph_aliases)
24
- if opts[:graph_aliases]
25
- select_append(*columns).clone(:graph_aliases => Hash[ga].merge!(graph_aliases).freeze) # SEQUEL5: Remove
26
- else
27
- select_append(*columns).clone(:graph => Hash[graph].merge!(:column_aliases=>Hash[ga].merge!(graph_aliases).freeze).freeze)
28
- end
24
+ select_append(*columns).clone(:graph => Hash[graph].merge!(:column_aliases=>Hash[ga].merge!(graph_aliases).freeze).freeze)
29
25
  end
30
26
 
31
27
  # Similar to Dataset#join_table, but uses unambiguous aliases for selected
@@ -64,7 +60,7 @@ module Sequel
64
60
  case dataset
65
61
  when Symbol
66
62
  # let alias be the same as the table name (sans any optional schema)
67
- # unless alias explicitly given in the symbol using ___ notation
63
+ # unless alias explicitly given in the symbol using ___ notation and symbol splitting is enabled
68
64
  table_alias ||= split_symbol(table).compact.last
69
65
  when Dataset
70
66
  if dataset.simple_select_all?
@@ -118,8 +114,6 @@ module Sequel
118
114
 
119
115
  # Whether to include the table in the result set
120
116
  add_table = options[:select] == false ? false : true
121
- # Whether to add the columns to the list of column aliases
122
- add_columns = !ds.opts.include?(:graph_aliases) # SEQUEL5: Remove graph_aliases support
123
117
 
124
118
  if graph = opts[:graph]
125
119
  graph = graph.dup
@@ -146,27 +140,25 @@ module Sequel
146
140
  # All columns in the master table are never
147
141
  # aliased, but are not included if set_graph_aliases
148
142
  # has been used.
149
- if add_columns
150
- if (select = @opts[:select]) && !select.empty? && !(select.length == 1 && (select.first.is_a?(SQL::ColumnAll)))
151
- select = select.map do |sel|
152
- raise Error, "can't figure out alias to use for graphing for #{sel.inspect}" unless column = _hash_key_symbol(sel)
153
- column_aliases[column] = [master, column]
154
- if from_selfed
155
- # Initial dataset was wrapped in subselect, selected all
156
- # columns in the subselect, qualified by the subselect alias.
157
- Sequel.qualify(qualifier, Sequel.identifier(column))
158
- else
159
- # Initial dataset not wrapped in subslect, just make
160
- # sure columns are qualified in some way.
161
- qualified_expression(sel, qualifier)
162
- end
163
- end
164
- else
165
- select = columns.map do |column|
166
- column_aliases[column] = [master, column]
167
- SQL::QualifiedIdentifier.new(qualifier, column)
143
+ if (select = @opts[:select]) && !select.empty? && !(select.length == 1 && (select.first.is_a?(SQL::ColumnAll)))
144
+ select = select.map do |sel|
145
+ raise Error, "can't figure out alias to use for graphing for #{sel.inspect}" unless column = _hash_key_symbol(sel)
146
+ column_aliases[column] = [master, column]
147
+ if from_selfed
148
+ # Initial dataset was wrapped in subselect, selected all
149
+ # columns in the subselect, qualified by the subselect alias.
150
+ Sequel.qualify(qualifier, Sequel.identifier(column))
151
+ else
152
+ # Initial dataset not wrapped in subslect, just make
153
+ # sure columns are qualified in some way.
154
+ qualified_expression(sel, qualifier)
168
155
  end
169
156
  end
157
+ else
158
+ select = columns.map do |column|
159
+ column_aliases[column] = [master, column]
160
+ SQL::QualifiedIdentifier.new(qualifier, column)
161
+ end
170
162
  end
171
163
  end
172
164
 
@@ -178,7 +170,7 @@ module Sequel
178
170
  table_aliases[table_alias] = add_table ? dataset : nil
179
171
 
180
172
  # Add the columns to the selection unless we are ignoring them
181
- if add_table && add_columns
173
+ if add_table
182
174
  column_aliases = graph[:column_aliases]
183
175
  ca_num = graph[:column_alias_num]
184
176
  # Which columns to add to the result set
@@ -207,7 +199,7 @@ module Sequel
207
199
  end
208
200
  [:column_aliases, :table_aliases, :column_alias_num].each{|k| graph[k].freeze}
209
201
  ds = ds.clone(:graph=>graph.freeze)
210
- add_columns ? ds.select(*select) : ds
202
+ ds.select(*select)
211
203
  end
212
204
 
213
205
  # This allows you to manually specify the graph aliases to use
@@ -217,42 +209,41 @@ module Sequel
217
209
  # graphed dataset, and must be used instead of +select+ whenever
218
210
  # graphing is used.
219
211
  #
220
- # graph_aliases :: Should be a hash with keys being symbols of
221
- # column aliases, and values being either symbols or arrays with one to three elements.
222
- # If the value is a symbol, it is assumed to be the same as a one element
223
- # array containing that symbol.
224
- # The first element of the array should be the table alias symbol.
225
- # The second should be the actual column name symbol. If the array only
226
- # has a single element the column name symbol will be assumed to be the
227
- # same as the corresponding hash key. If the array
228
- # has a third element, it is used as the value returned, instead of
229
- # table_alias.column_name.
212
+ # graph_aliases should be a hash with keys being symbols of
213
+ # column aliases, and values being either symbols or arrays with one to three elements.
214
+ # If the value is a symbol, it is assumed to be the same as a one element
215
+ # array containing that symbol.
216
+ # The first element of the array should be the table alias symbol.
217
+ # The second should be the actual column name symbol. If the array only
218
+ # has a single element the column name symbol will be assumed to be the
219
+ # same as the corresponding hash key. If the array
220
+ # has a third element, it is used as the value returned, instead of
221
+ # table_alias.column_name.
230
222
  #
231
- # DB[:artists].graph(:albums, :artist_id=>:id).
232
- # set_graph_aliases(:name=>:artists,
233
- # :album_name=>[:albums, :name],
234
- # :forty_two=>[:albums, :fourtwo, 42]).first
223
+ # DB[:artists].graph(:albums, :artist_id: :id).
224
+ # set_graph_aliases(name: :artists,
225
+ # album_name: [:albums, :name],
226
+ # forty_two: [:albums, :fourtwo, 42]).first
235
227
  # # SELECT artists.name, albums.name AS album_name, 42 AS forty_two ...
236
228
  def set_graph_aliases(graph_aliases)
237
229
  columns, graph_aliases = graph_alias_columns(graph_aliases)
238
230
  if graph = opts[:graph]
239
231
  select(*columns).clone(:graph => Hash[graph].merge!(:column_aliases=>graph_aliases.freeze).freeze)
240
232
  else
241
- Sequel::Deprecation.deprecate("Calling Dataset#set_graph_aliases before Dataset#graph", "Call Dataset#set_graph_aliases after Dataset#graph now")
242
- select(*columns).clone(:graph_aliases=>graph_aliases.freeze) # SEQUEL5: Remove
233
+ raise Error, "cannot call #set_graph_aliases on an ungraphed dataset"
243
234
  end
244
235
  end
245
236
 
246
237
  # Remove the splitting of results into subhashes, and all metadata
247
238
  # related to the current graph (if any).
248
239
  def ungraphed
249
- clone(:graph=>nil, :graph_aliases=>nil) # SEQUEL5: Remove :graph_aliases
240
+ clone(:graph=>nil)
250
241
  end
251
242
 
252
243
  private
253
244
 
254
245
  # Wrap the alias symbol in an SQL::Identifier if the identifier on which is based
255
- # is an SQL::Identifier. This works around cases where the alias symbol contains
246
+ # is an SQL::Identifier. This works around cases where symbol splitting is enabled and the alias symbol contains
256
247
  # double embedded underscores which would be considered an implicit qualified identifier
257
248
  # if not wrapped in an SQL::Identifier.
258
249
  def qualifier_from_alias_symbol(aliaz, identifier)
@@ -7,15 +7,6 @@ module Sequel
7
7
  # These methods don't fit cleanly into another section.
8
8
  # ---------------------
9
9
 
10
- NOTIMPL_MSG = "This method must be overridden in Sequel adapters".freeze
11
- Sequel::Deprecation.deprecate_constant(self, :NOTIMPL_MSG)
12
- ARRAY_ACCESS_ERROR_MSG = 'You cannot call Dataset#[] with an integer or with no arguments.'.freeze
13
- Sequel::Deprecation.deprecate_constant(self, :ARRAY_ACCESS_ERROR_MSG)
14
- ARG_BLOCK_ERROR_MSG = 'Must use either an argument or a block, not both'.freeze
15
- Sequel::Deprecation.deprecate_constant(self, :ARG_BLOCK_ERROR_MSG)
16
- IMPORT_ERROR_MSG = 'Using Sequel::Dataset#import an empty column array is not allowed'.freeze
17
- Sequel::Deprecation.deprecate_constant(self, :IMPORT_ERROR_MSG)
18
-
19
10
  # The database related to this dataset. This is the Database instance that
20
11
  # will execute all of this dataset's queries.
21
12
  attr_reader :db
@@ -33,9 +24,9 @@ module Sequel
33
24
  # the Database#dataset method return an instance of that subclass.
34
25
  def initialize(db)
35
26
  @db = db
36
- @opts = {} # OPTS # SEQUEL5
27
+ @opts = OPTS
37
28
  @cache = {}
38
- # freeze # SEQUEL5
29
+ freeze
39
30
  end
40
31
 
41
32
  # Define a hash value such that datasets with the same class, DB, and opts
@@ -55,30 +46,16 @@ module Sequel
55
46
  self == o
56
47
  end
57
48
 
58
- # SEQUEL5: Remove other dup methods
59
- # def dup
60
- # self
61
- # end
62
- if TRUE_FREEZE
63
- # Similar to #clone, but returns an unfrozen clone if the receiver is frozen.
64
- def dup
65
- _clone(:freeze=>false)
66
- end
67
- else
68
- # :nocov:
69
- def dup
70
- c = clone
71
- c.instance_variable_set(:@opts, Hash[c.opts])
72
- c
73
- end
74
- # :nocov:
49
+ # Return self, as datasets are always frozen.
50
+ def dup
51
+ self
75
52
  end
76
53
 
77
54
  # Yield a dataset for each server in the connection pool that is tied to that server.
78
55
  # Intended for use in sharded environments where all servers need to be modified
79
56
  # with the same data:
80
57
  #
81
- # DB[:configs].where(:key=>'setting').each_server{|ds| ds.update(:value=>'new_value')}
58
+ # DB[:configs].where(key: 'setting').each_server{|ds| ds.update(value: 'new_value')}
82
59
  def each_server
83
60
  db.servers.each{|s| yield server(s)}
84
61
  end
@@ -101,12 +78,11 @@ module Sequel
101
78
  else
102
79
  # :nocov:
103
80
  def freeze # :nodoc:
104
- @opts.freeze # SEQUEL5: remove
105
81
  self
106
82
  end
107
83
 
108
84
  def frozen? # :nodoc:
109
- @opts.frozen? # SEQUEL5: true
85
+ true
110
86
  end
111
87
  # :nocov:
112
88
  end
@@ -122,7 +98,7 @@ module Sequel
122
98
  # DB[:table].first_source_alias
123
99
  # # => :table
124
100
  #
125
- # DB[:table___t].first_source_alias
101
+ # DB[Sequel[:table].as(:t)].first_source_alias
126
102
  # # => :t
127
103
  def first_source_alias
128
104
  source = @opts[:from]
@@ -147,7 +123,7 @@ module Sequel
147
123
  # DB[:table].first_source_table
148
124
  # # => :table
149
125
  #
150
- # DB[:table___t].first_source_table
126
+ # DB[Sequel[:table].as(:t)].first_source_table
151
127
  # # => :table
152
128
  def first_source_table
153
129
  source = @opts[:from]
@@ -215,7 +191,7 @@ module Sequel
215
191
  # SQL identifier that represents the unqualified column for the given value.
216
192
  # The given value should be a Symbol, SQL::Identifier, SQL::QualifiedIdentifier,
217
193
  # or SQL::AliasedExpression containing one of those. In other cases, this
218
- # returns nil
194
+ # returns nil.
219
195
  def unqualified_column_for(v)
220
196
  unless v.is_a?(String)
221
197
  _unqualified_column_for(v)
@@ -299,12 +275,11 @@ module Sequel
299
275
  private
300
276
 
301
277
  # Check the cache for the given key, returning the value.
302
- # Otherwise, yield to get the dataset, and if the current dataset
303
- # is frozen, cache the dataset under the given key.
278
+ # Otherwise, yield to get the dataset and cache the dataset under the given key.
304
279
  def cached_dataset(key)
305
280
  unless ds = cache_get(key)
306
281
  ds = yield
307
- cache_set(key, ds) if frozen? # SEQUEL5: Remove if frozen?
282
+ cache_set(key, ds)
308
283
  end
309
284
 
310
285
  ds