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
@@ -75,9 +75,7 @@ module Sequel
75
75
  :starts_after => ["(".freeze, " &> ".freeze, ")".freeze].freeze,
76
76
  :adjacent_to => ["(".freeze, " -|- ".freeze, ")".freeze].freeze,
77
77
  :overlaps => ["(".freeze, " && ".freeze, ")".freeze].freeze,
78
- }#.freeze # SEQUEL5
79
- FUNCTIONS = %w'lower upper isempty lower_inc upper_inc lower_inf upper_inf'
80
- Sequel::Deprecation.deprecate_constant(self, :FUNCTIONS)
78
+ }.freeze
81
79
 
82
80
  %w'lower upper isempty lower_inc upper_inc lower_inf upper_inf'.each do |f|
83
81
  class_eval("def #{f}; function(:#{f}) end", __FILE__, __LINE__)
@@ -64,12 +64,12 @@
64
64
  #
65
65
  # You can also use a hash:
66
66
  #
67
- # DB.row_type(:address, :street=>'123 Sesame St.', :city=>'Some City', :zip=>'12345')
67
+ # DB.row_type(:address, street: '123 Sesame St.', city: 'Some City', zip: '12345')
68
68
  #
69
69
  # So if you have a person table that has an address column, here's how you
70
70
  # could insert into the column:
71
71
  #
72
- # DB[:table].insert(:address=>DB.row_type(:address, :street=>'123 Sesame St.', :city=>'Some City', :zip=>'12345'))
72
+ # DB[:table].insert(address: DB.row_type(:address, street: '123 Sesame St.', city: 'Some City', zip: '12345'))
73
73
  #
74
74
  # Note that registering row types without providing an explicit :converter option
75
75
  # creates anonymous classes. This results in ruby being unable to Marshal such
@@ -88,16 +88,10 @@
88
88
 
89
89
  require 'delegate'
90
90
  require 'strscan'
91
- Sequel.require 'adapters/shared/postgres'
92
91
 
93
92
  module Sequel
94
93
  module Postgres
95
94
  module PGRow
96
- ROW = 'ROW'.freeze
97
- Sequel::Deprecation.deprecate_constant(self, :ROW)
98
- CAST = '::'.freeze
99
- Sequel::Deprecation.deprecate_constant(self, :CAST)
100
-
101
95
  # Class for row-valued/composite types that are treated as arrays. By default,
102
96
  # this is only used for generic PostgreSQL record types, as registered
103
97
  # types use HashRow by default.
@@ -216,7 +210,7 @@ module Sequel
216
210
  end
217
211
  end
218
212
 
219
- ROW_TYPE_CLASSES = [HashRow, ArrayRow]#.freeze # SEQUEL5
213
+ ROW_TYPE_CLASSES = [HashRow, ArrayRow].freeze
220
214
 
221
215
  # This parser-like class splits the PostgreSQL
222
216
  # row-valued/composite type output string format
@@ -225,25 +219,6 @@ module Sequel
225
219
  # will accept, it only handles the output format that
226
220
  # PostgreSQL uses.
227
221
  class Splitter < StringScanner
228
- OPEN_PAREN = /\(/.freeze
229
- Sequel::Deprecation.deprecate_constant(self, :OPEN_PAREN)
230
- CLOSE_PAREN = /\)/.freeze
231
- Sequel::Deprecation.deprecate_constant(self, :CLOSE_PAREN)
232
- UNQUOTED_RE = /[^,)]*/.freeze
233
- Sequel::Deprecation.deprecate_constant(self, :UNQUOTED_RE)
234
- SEP_RE = /[,)]/.freeze
235
- Sequel::Deprecation.deprecate_constant(self, :SEP_RE)
236
- QUOTE_RE = /"/.freeze
237
- Sequel::Deprecation.deprecate_constant(self, :QUOTE_RE)
238
- QUOTE_SEP_RE = /"[,)]/.freeze
239
- Sequel::Deprecation.deprecate_constant(self, :QUOTE_SEP_RE)
240
- QUOTED_RE = /(\\.|""|[^"])*/.freeze
241
- Sequel::Deprecation.deprecate_constant(self, :QUOTED_RE)
242
- REPLACE_RE = /\\(.)|"(")/.freeze
243
- Sequel::Deprecation.deprecate_constant(self, :REPLACE_RE)
244
- REPLACE_WITH = '\1\2'.freeze
245
- Sequel::Deprecation.deprecate_constant(self, :REPLACE_WITH)
246
-
247
222
  # Split the stored string into an array of strings, handling
248
223
  # the different types of quoting.
249
224
  def parse
@@ -387,13 +362,6 @@ module Sequel
387
362
  end
388
363
 
389
364
  module DatabaseMethods
390
- ESCAPE_RE = /("|\\)/.freeze
391
- Sequel::Deprecation.deprecate_constant(self, :ESCAPE_RE)
392
- ESCAPE_REPLACEMENT = '\\\\\1'.freeze
393
- Sequel::Deprecation.deprecate_constant(self, :ESCAPE_REPLACEMENT)
394
- COMMA = ','.freeze
395
- Sequel::Deprecation.deprecate_constant(self, :COMMA)
396
-
397
365
  # A hash mapping row type keys (usually symbols), to option
398
366
  # hashes. At the least, the values will contain the :parser
399
367
  # option for the Parser instance that the type will use.
@@ -401,7 +369,7 @@ module Sequel
401
369
 
402
370
  # Do some setup for the data structures the module uses.
403
371
  def self.extended(db)
404
- db.instance_eval do
372
+ db.instance_exec do
405
373
  @row_types = {}
406
374
  @row_schema_types = {}
407
375
  extend(@row_type_method_module = Module.new)
@@ -433,8 +401,6 @@ module Sequel
433
401
  super
434
402
  end
435
403
 
436
- STRING_TYPES = [18, 19, 25, 1042, 1043].freeze
437
-
438
404
  # Register a new row type for the Database instance. db_type should be the type
439
405
  # symbol. This parses the PostgreSQL system tables to get information the
440
406
  # composite type, and by default has the type return instances of a subclass
@@ -487,23 +453,7 @@ module Sequel
487
453
 
488
454
  # Using the conversion_procs, lookup converters for each member of the composite type
489
455
  parser_opts[:column_converters] = parser_opts[:column_oids].map do |oid|
490
- # procs[oid] # SEQUEL5
491
-
492
- # SEQUEL5: Remove
493
- if pr = procs[oid]
494
- pr
495
- elsif !STRING_TYPES.include?(oid)
496
- # It's not a string type, and it's possible a conversion proc for this
497
- # oid will be added later, so do a runtime check for it.
498
- lambda do |s|
499
- if (pr = procs[oid])
500
- Sequel::Deprecation.deprecate("Calling conversion proc for subtype (oid: #{oid}) of composite type (oid: #{parser_opts[:oid]}) not added until after composite type registration", "Register subtype conversion procs before registering composite type")
501
- pr.call(s)
502
- else
503
- s
504
- end
505
- end
506
- end
456
+ procs[oid]
507
457
  end
508
458
 
509
459
  # Setup the converter and typecaster
@@ -533,21 +483,9 @@ module Sequel
533
483
  private meth
534
484
  end
535
485
 
536
- conversion_procs_updated # SEQUEL5: Remove
537
486
  nil
538
487
  end
539
488
 
540
- # SEQUEL5: Remove
541
- def reset_conversion_procs
542
- procs = super
543
-
544
- row_types.values.each do |opts|
545
- register_row_type(opts[:type], opts)
546
- end
547
-
548
- procs
549
- end
550
-
551
489
  # Handle typecasting of the given object to the given database type.
552
490
  # In general, the given database type should already be registered,
553
491
  # but if obj is an array, this will handled unregistered types.
@@ -602,16 +540,6 @@ module Sequel
602
540
  end
603
541
  end
604
542
  end
605
-
606
- # SEQUEL5: Remove
607
- parser = PGRow::Parser.new(:converter=>PGRow::ArrayRow)
608
- PG__TYPES[2249] = lambda do |s|
609
- Sequel::Deprecation.deprecate("Conversion proc for record added globally by pg_row extension", "Load the pg_row extension into the Database instance")
610
- parser.call(s)
611
- end
612
- if defined?(PGArray) && PGArray.respond_to?(:register)
613
- PGArray.register('record', :oid=>2287, :scalar_oid=>2249, :skip_deprecation_warning=>true)
614
- end
615
543
  end
616
544
 
617
545
  module SQL::Builders
@@ -76,8 +76,8 @@
76
76
  #
77
77
  # This feature is mostly useful for a different way to graph tables:
78
78
  #
79
- # DB[:a].join(:b, :id=>:b_id).select(Sequel.pg_row_op(:a).splat(:a),
80
- # Sequel.pg_row_op(:b).splat(:b))
79
+ # DB[:a].join(:b, id: :b_id).select(Sequel.pg_row_op(:a).splat(:a),
80
+ # Sequel.pg_row_op(:b).splat(:b))
81
81
  # # SELECT (a.*)::a, (b.*)::b FROM a INNER JOIN b ON (b.id = a.b_id)
82
82
  # # => {:a=>{:id=>1, :b_id=>2}, :b=>{:id=>2}}
83
83
  #
@@ -88,17 +88,6 @@ module Sequel
88
88
  module Postgres
89
89
  # This class represents a composite type expression reference.
90
90
  class PGRowOp < SQL::PlaceholderLiteralString
91
- OPEN = '('.freeze
92
- Sequel::Deprecation.deprecate_constant(self, :OPEN)
93
- CLOSE_DOT = ').'.freeze
94
- Sequel::Deprecation.deprecate_constant(self, :CLOSE_DOT)
95
- CLOSE_STAR = '.*)'.freeze
96
- Sequel::Deprecation.deprecate_constant(self, :CLOSE_STAR)
97
- CLOSE_STAR_CAST = '.*)::'.freeze
98
- Sequel::Deprecation.deprecate_constant(self, :CLOSE_STAR_CAST)
99
- EMPTY = "".freeze
100
- Sequel::Deprecation.deprecate_constant(self, :EMPTY)
101
-
102
91
  ROW = ['(', '.*)'].freeze.each(&:freeze)
103
92
  ROW_CAST = ['(', '.*)::'].freeze.each(&:freeze)
104
93
  QUALIFY = ['(', ').'].freeze.each(&:freeze)
@@ -37,11 +37,9 @@ module Sequel
37
37
  end
38
38
 
39
39
  module DatasetQuery
40
- Dataset.def_mutation_method(:query, :module=>self)
41
-
42
40
  # Translates a query block into a dataset. Query blocks are an
43
41
  # alternative to Sequel's usual method chaining, by using
44
- # instance_eval with a proxy object:
42
+ # instance_exec with a proxy object:
45
43
  #
46
44
  # dataset = DB[:items].query do
47
45
  # select :x, :y, :z
@@ -54,7 +52,7 @@ module Sequel
54
52
  # dataset = DB[:items].select(:x, :y, :z).where{(x > 1) & (y > 2)}.reverse(:z)
55
53
  def query(&block)
56
54
  query = Dataset::Query.new(self)
57
- query.instance_eval(&block)
55
+ query.instance_exec(&block)
58
56
  query.dataset
59
57
  end
60
58
  end
@@ -71,6 +69,7 @@ module Sequel
71
69
 
72
70
  # Replace the query's dataset with dataset returned by the method call.
73
71
  def method_missing(method, *args, &block)
72
+ # Allow calling private methods, so things like raise works
74
73
  @dataset = @dataset.send(method, *args, &block)
75
74
  raise(Sequel::Error, "method #{method.inspect} did not return a dataset") unless @dataset.is_a?(Dataset)
76
75
  self
@@ -25,12 +25,6 @@
25
25
  #
26
26
  # Related module: Sequel::Dataset::RoundTimestamps
27
27
 
28
- unless RUBY_VERSION >= '1.9'
29
- # :nocov:
30
- raise LoadError, 'the round_timestamps extension only works on ruby 1.9+'
31
- # :nocov:
32
- end
33
-
34
28
  module Sequel
35
29
  class Dataset
36
30
  module RoundTimestamps
@@ -70,7 +70,7 @@ module Sequel
70
70
  end
71
71
 
72
72
  # Dump foreign key constraints for all tables as a migration. This complements
73
- # the :foreign_keys=>false option to dump_schema_migration. This only dumps
73
+ # the foreign_keys: false option to dump_schema_migration. This only dumps
74
74
  # the constraints (not the columns) using alter_table/add_foreign_key with an
75
75
  # array of columns.
76
76
  #
@@ -81,14 +81,14 @@ module Sequel
81
81
  <<END_MIG
82
82
  Sequel.migration do
83
83
  change do
84
- #{ts.sort_by(&:to_s).map{|t| dump_table_foreign_keys(t)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')}
84
+ #{ts.sort.map{|t| dump_table_foreign_keys(t)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')}
85
85
  end
86
86
  end
87
87
  END_MIG
88
88
  end
89
89
 
90
90
  # Dump indexes for all tables as a migration. This complements
91
- # the :indexes=>false option to dump_schema_migration. Options:
91
+ # the indexes: false option to dump_schema_migration. Options:
92
92
  # :same_db :: Create a dump for the same database type, so
93
93
  # don't ignore errors if the index statements fail.
94
94
  # :index_names :: If set to false, don't record names of indexes. If
@@ -99,13 +99,13 @@ END_MIG
99
99
  <<END_MIG
100
100
  Sequel.migration do
101
101
  change do
102
- #{ts.sort_by(&:to_s).map{|t| dump_table_indexes(t, :add_index, options)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')}
102
+ #{ts.sort.map{|t| dump_table_indexes(t, :add_index, options)}.reject{|x| x == ''}.join("\n\n").gsub(/^/, ' ')}
103
103
  end
104
104
  end
105
105
  END_MIG
106
106
  end
107
107
 
108
- # Return a string that contains a Sequel::Migration subclass that when
108
+ # Return a string that contains a Sequel migration that when
109
109
  # run would recreate the database structure. Options:
110
110
  # :same_db :: Don't attempt to translate database types to ruby types.
111
111
  # If this isn't set to true, all database types will be translated to
@@ -132,7 +132,7 @@ END_MIG
132
132
  # Handle skipped foreign keys by adding them at the end via
133
133
  # alter_table/add_foreign_key. Note that skipped foreign keys
134
134
  # probably result in a broken down migration.
135
- sfka = sfk.sort_by{|table, fks| table.to_s}.map{|table, fks| dump_add_fk_constraints(table, fks.values)}
135
+ sfka = sfk.sort.map{|table, fks| dump_add_fk_constraints(table, fks.values)}
136
136
  sfka.join("\n\n").gsub(/^/, ' ') unless sfka.empty?
137
137
  end
138
138
 
@@ -225,7 +225,7 @@ END_MIG
225
225
  sfks = String.new
226
226
  sfks << "alter_table(#{table.inspect}) do\n"
227
227
  sfks << create_table_generator do
228
- fks.sort_by{|fk| fk[:columns].map(&:to_s)}.each do |fk|
228
+ fks.sort_by{|fk| fk[:columns]}.each do |fk|
229
229
  foreign_key fk[:columns], fk
230
230
  end
231
231
  end.dump_constraints.gsub(/^foreign_key /, ' add_foreign_key ')
@@ -236,7 +236,7 @@ END_MIG
236
236
  # string that would add the foreign keys if run in a migration.
237
237
  def dump_table_foreign_keys(table, options=OPTS)
238
238
  if supports_foreign_key_parsing?
239
- fks = foreign_key_list(table, options).sort_by{|fk| fk[:columns].map(&:to_s)}
239
+ fks = foreign_key_list(table, options).sort_by{|fk| fk[:columns]}
240
240
  end
241
241
 
242
242
  if fks.nil? || fks.empty?
@@ -256,7 +256,7 @@ END_MIG
256
256
  im = method(:index_to_generator_opts)
257
257
 
258
258
  if options[:indexes] != false && supports_index_parsing?
259
- indexes = indexes(table).sort_by{|k,v| k.to_s}
259
+ indexes = indexes(table).sort
260
260
  end
261
261
 
262
262
  if options[:foreign_keys] != false && supports_foreign_key_parsing?
@@ -296,7 +296,7 @@ END_MIG
296
296
  # creating the index migration.
297
297
  def dump_table_indexes(table, meth, options=OPTS)
298
298
  if supports_index_parsing?
299
- indexes = indexes(table).sort_by{|k,v| k.to_s}
299
+ indexes = indexes(table).sort
300
300
  else
301
301
  return ''
302
302
  end
@@ -335,7 +335,7 @@ END_MIG
335
335
  options[:skipped_foreign_keys] = skipped_foreign_keys
336
336
  tables
337
337
  else
338
- tables.sort_by(&:to_s)
338
+ tables.sort
339
339
  end
340
340
  end
341
341
 
@@ -360,14 +360,14 @@ END_MIG
360
360
  # outstanding foreign keys and skipping those foreign keys.
361
361
  # The skipped foreign keys will be added at the end of the
362
362
  # migration.
363
- skip_table, skip_fks = table_fks.sort_by{|table, fks| [fks.length, table.to_s]}.first
363
+ skip_table, skip_fks = table_fks.sort_by{|table, fks| [fks.length, table]}.first
364
364
  skip_fks_hash = skipped_foreign_keys[skip_table] = {}
365
365
  skip_fks.each{|fk| skip_fks_hash[fk[:columns]] = fk}
366
366
  this_loop << skip_table
367
367
  end
368
368
 
369
369
  # Add sorted tables from this loop to the final list
370
- sorted_tables.concat(this_loop.sort_by(&:to_s))
370
+ sorted_tables.concat(this_loop.sort)
371
371
 
372
372
  # Remove tables that were handled this loop
373
373
  this_loop.each{|t| table_fks.delete(t)}
@@ -1,6 +1,6 @@
1
1
  # frozen-string-literal: true
2
2
  #
3
- # The select_remove extension adds Sequel::Dataset#select_remove for removing existing selected
3
+ # The select_remove extension adds select_remove for removing existing selected
4
4
  # columns from a dataset. It's not part of Sequel core as it is rarely needed and has
5
5
  # some corner cases where it can't work correctly.
6
6
  #
@@ -26,8 +26,8 @@ module Sequel
26
26
  # # Assume columns a, b, and c in items table
27
27
  # DB[:items] # SELECT * FROM items
28
28
  # DB[:items].select_remove(:c) # SELECT a, b FROM items
29
- # DB[:items].select(:a, :b___c, :c___b).select_remove(:c) # SELECT a, c AS b FROM items
30
- # DB[:items].select(:a, :b___c, :c___b).select_remove(:c___b) # SELECT a, b AS c FROM items
29
+ # DB[:items].select(:a, Sequel[:b].as(:c), Sequel[:c].as(:b)).select_remove(:c) # SELECT a, c AS b FROM items
30
+ # DB[:items].select(:a, Sequel[:b][:c], Sequel[:c][:b]).select_remove(Sequel[:c][:b]) # SELECT a, b AS c FROM items
31
31
  #
32
32
  # Note that there are a few cases where this method may not work correctly:
33
33
  #
@@ -3,7 +3,7 @@
3
3
  # The split_array_nil extension overrides Sequel's default handling of
4
4
  # IN/NOT IN with arrays of values to do specific nil checking. For example,
5
5
  #
6
- # ds = DB[:table].where(:column=>[1, nil])
6
+ # ds = DB[:table].where(column: [1, nil])
7
7
  #
8
8
  # By default, that produces the following SQL:
9
9
  #
@@ -19,7 +19,7 @@
19
19
  #
20
20
  # Similarly, for NOT IN queries:
21
21
  #
22
- # ds = DB[:table].exclude(:column=>[1, nil])
22
+ # ds = DB[:table].exclude(column: [1, nil])
23
23
  # # Default:
24
24
  # # SELECT * FROM table WHERE (column NOT IN (1, NULL))
25
25
  # # with split_array_nils extension:
@@ -20,7 +20,7 @@
20
20
  # work correctly when used in subqueries:
21
21
  #
22
22
  # ds = DB[:table].comment("Some\r\nComment Here")
23
- # ds.where(:id=>ds).all
23
+ # ds.where(id: ds).all
24
24
  # # SELECT * FROM table WHERE (id IN (SELECT * FROM table -- Some Comment Here
25
25
  # # )) -- Some Comment Here
26
26
  # #
@@ -31,7 +31,7 @@
31
31
  # Due to the use of single line SQL comments and converting all
32
32
  # whitespace to spaces, this should correctly handle even
33
33
  # malicious input. However, it would be unwise to rely on that,
34
- # you should probably attempt to ensure that the argument given
34
+ # you should ensure that the argument given
35
35
  # to Dataset#comment is not derived from user input.
36
36
  #
37
37
  # You can load this extension into specific datasets:
@@ -103,8 +103,7 @@ module Sequel
103
103
  f = f.distinct
104
104
  end
105
105
  literal_append(sql, f)
106
- # SEQUEL5: Remove cubrid
107
- when :mysql, :hsqldb, :cubrid, :h2
106
+ when :mysql, :hsqldb, :h2
108
107
  sql << "GROUP_CONCAT("
109
108
  if distinct
110
109
  sql << "DISTINCT "
@@ -148,6 +147,8 @@ module Sequel
148
147
  def initialize(expr, separator=nil)
149
148
  @expr = expr
150
149
  @separator = separator
150
+ yield self if block_given?
151
+ freeze
151
152
  end
152
153
 
153
154
  # Whether the current expression uses distinct expressions
@@ -157,16 +158,18 @@ module Sequel
157
158
 
158
159
  # Return a modified StringAgg that uses distinct expressions
159
160
  def distinct
160
- sa = dup
161
- sa.instance_variable_set(:@distinct, true)
162
- sa
161
+ self.class.new(@expr, @separator) do |sa|
162
+ sa.instance_variable_set(:@order_expr, @order_expr) if @order_expr
163
+ sa.instance_variable_set(:@distinct, true)
164
+ end
163
165
  end
164
166
 
165
167
  # Return a modified StringAgg with the given order
166
168
  def order(*o)
167
- sa = dup
168
- sa.instance_variable_set(:@order_expr, o.empty? ? nil : o)
169
- sa
169
+ self.class.new(@expr, @separator) do |sa|
170
+ sa.instance_variable_set(:@distinct, @distinct) if @distinct
171
+ sa.instance_variable_set(:@order_expr, o.empty? ? nil : o.freeze)
172
+ end
170
173
  end
171
174
 
172
175
  to_s_method :string_agg_sql