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
@@ -1,51 +0,0 @@
1
- # frozen-string-literal: true
2
- #
3
- # The hash_aliases extension allows Dataset#select and Dataset#from
4
- # to treat a hash argument as an alias specification, with keys
5
- # being the expressions and values being the aliases,
6
- # which was the historical behavior before Sequel 4.
7
- # It is only recommended to use this for backwards compatibility.
8
- #
9
- # You can load this extension into specific datasets:
10
- #
11
- # ds = DB[:table]
12
- # ds = ds.extension(:hash_aliases)
13
- #
14
- # Or you can load it into all of a database's datasets, which
15
- # is probably the desired behavior if you are using this extension:
16
- #
17
- # DB.extension(:hash_aliases)
18
- #
19
- # Related module: Sequel::HashAliases
20
-
21
- Sequel::Deprecation.deprecate("The hash_aliases extension", "Please consider maintaining it yourself as an external gem if you want to continue using it")
22
-
23
- #
24
- module Sequel
25
- module HashAliases
26
- def from(*source)
27
- super(*convert_hash_aliases(source))
28
- end
29
-
30
- def select(*columns, &block)
31
- virtual_row_columns(columns, block)
32
- super(*convert_hash_aliases(columns), &nil)
33
- end
34
-
35
- private
36
-
37
- def convert_hash_aliases(columns)
38
- m = []
39
- columns.each do |i|
40
- if i.is_a?(Hash)
41
- m.concat(i.map{|k, v| SQL::AliasedExpression.new(k,v)})
42
- else
43
- m << i
44
- end
45
- end
46
- m
47
- end
48
- end
49
-
50
- Dataset.register_extension(:hash_aliases, HashAliases)
51
- end
@@ -1,37 +0,0 @@
1
- # frozen-string-literal: true
2
- #
3
- # The meta_def extension is designed for backwards compatibility
4
- # with older Sequel code that uses the meta_def method on
5
- # Database, Dataset, and Model classes and/or instances. It is
6
- # not recommended for usage in new code. To load this extension:
7
- #
8
- # Sequel.extension :meta_def
9
- #
10
- # Related module: Sequel::Metaprogramming
11
-
12
- Sequel::Deprecation.deprecate("The meta_def extension", "Replace meta_def usage with define_singleton_method")
13
-
14
- #
15
- module Sequel
16
- # Contains meta_def method for adding methods to objects via blocks.
17
- # Only recommended for backwards compatibility with existing code.
18
- module Metaprogramming
19
- # Define a method with the given name and block body on the receiver.
20
- #
21
- # ds = DB[:items]
22
- # ds.meta_def(:x){42}
23
- # ds.x # => 42
24
- def meta_def(name, &block)
25
- (class << self; self end).send(:define_method, name, &block)
26
- end
27
- end
28
-
29
- Database.extend Metaprogramming
30
- Database.send(:include, Metaprogramming)
31
- Dataset.extend Metaprogramming
32
- Dataset.send(:include, Metaprogramming)
33
- if defined?(Model)
34
- Model.extend Metaprogramming
35
- Model.send(:include, Metaprogramming)
36
- end
37
- end
@@ -1,86 +0,0 @@
1
- # frozen-string-literal: true
2
- #
3
- # The query_literals extension changes Sequel's default behavior of
4
- # the select, order and group methods so that if the first argument
5
- # is a regular string, it is treated as a literal string, with the
6
- # rest of the arguments (if any) treated as placeholder values. This
7
- # allows you to write code such as:
8
- #
9
- # DB[:table].select('a, b, ?', 2).group('a, b').order('c')
10
- #
11
- # The default Sequel behavior would literalize that as:
12
- #
13
- # SELECT 'a, b, ?', 2 FROM table GROUP BY 'a, b' ORDER BY 'c'
14
- #
15
- # Using this extension changes the literalization to:
16
- #
17
- # SELECT a, b, 2, FROM table GROUP BY a, b ORDER BY c
18
- #
19
- # This extension makes select, group, and order methods operate
20
- # like filter methods, which support the same interface. Note
21
- # that this extension can add SQL injection vulnerabilities to existing
22
- # code if any of the strings passed to one of the supported
23
- # methods is derived from user input. For that reason, it should
24
- # be used with caution.
25
- #
26
- # You can load this extension into specific datasets:
27
- #
28
- # ds = DB[:table]
29
- # ds = ds.extension(:query_literals)
30
- #
31
- # Or you can load it into all of a database's datasets, which
32
- # is probably the desired behavior if you are using this extension:
33
- #
34
- # DB.extension(:query_literals)
35
- #
36
- # Related module: Sequel::QueryLiterals
37
-
38
- Sequel::Deprecation.deprecate("The query_literals extension", "Please consider maintaining it yourself as an external gem if you want to continue using it")
39
-
40
- #
41
- module Sequel
42
- # The QueryLiterals module can be used to make select, group, and
43
- # order methods operate similar to the filter methods if the first
44
- # argument is a plain string, treating it like a literal string,
45
- # with any remaining arguments treated as placeholder values.
46
- #
47
- # This adds such support to the following methods: select, select_append,
48
- # select_group, select_more, group, group_and_count, order, order_append,
49
- # and order_more.
50
- #
51
- # Note that if you pass a block to these methods, it will use the default
52
- # implementation without the special literal handling.
53
- module QueryLiterals
54
- %w'select select_append select_group select_more group group_and_count group_append order order_append order_more'.each do |m|
55
- class_eval(<<-END, __FILE__, __LINE__ + 1)
56
- def #{m}(*args)
57
- if !block_given? && (l = query_literal(args))
58
- super(l)
59
- else
60
- super
61
- end
62
- end
63
- END
64
- end
65
-
66
- private
67
-
68
- # If the first argument is a plain string, return a literal string
69
- # if there are no additional args or a placeholder literal string with
70
- # the remaining args. Otherwise, return nil.
71
- def query_literal(args)
72
- case (s = args[0])
73
- when LiteralString, SQL::Blob
74
- nil
75
- when String
76
- if args.length == 1
77
- LiteralString.new(s)
78
- else
79
- SQL::PlaceholderLiteralString.new(s, args[1..-1])
80
- end
81
- end
82
- end
83
- end
84
-
85
- Dataset.register_extension(:query_literals, QueryLiterals)
86
- end
@@ -1,26 +0,0 @@
1
- # frozen-string-literal: true
2
- #
3
- # The ruby18_symbol_extensions adds the <, <=, >, >= to Symbol
4
- # to reflect the mathmatical operators. It also adds the [] method
5
- # to Symbol for creating SQL functions.
6
- #
7
- # Usage of this extension is not recommended. This extension will
8
- # only load on ruby 1.8, so you will not be able to upgrade to
9
- # newer ruby versions if you use it. If you still want to use it,
10
- # you can load it via:
11
- #
12
- # Sequel.extension :ruby18_symbol_extensions
13
-
14
- raise(Sequel::Error, "The ruby18_symbol_extensions is only available on ruby 1.8.") unless RUBY_VERSION < '1.9.0'
15
-
16
- class Symbol
17
- include Sequel::SQL::InequalityMethods
18
-
19
- # Create an SQL Function with the receiver as the function name
20
- # and the given arguments.
21
- def [](*args)
22
- Sequel::SQL::Function.new(self, *args)
23
- end
24
- end
25
-
26
- # SEQUEL5: Remove extension
@@ -1,133 +0,0 @@
1
- # frozen-string-literal: true
2
- #
3
- # This adds the following dataset methods:
4
- #
5
- # []= :: filter with the first argument, update with the second
6
- # insert_multiple :: insert multiple rows at once
7
- # set :: alias for update
8
- # to_csv :: return string in csv format for the dataset
9
- # db= :: change the dataset's database
10
- # opts= :: change the dataset's opts
11
- #
12
- # It is only recommended to use this for backwards compatibility.
13
- #
14
- # You can load this extension into specific datasets:
15
- #
16
- # ds = DB[:table]
17
- # ds = ds.extension(:sequel_3_dataset_methods)
18
- #
19
- # Or you can load it into all of a database's datasets, which
20
- # is probably the desired behavior if you are using this extension:
21
- #
22
- # DB.extension(:sequel_3_dataset_methods)
23
- #
24
- # Related module: Sequel::Sequel3DatasetMethods
25
-
26
- Sequel::Deprecation.deprecate("The sequel_3_dataset_methods extension", "Please consider maintaining it yourself as an external gem if you want to continue using it")
27
-
28
- #
29
- module Sequel
30
- module Sequel3DatasetMethods
31
- COMMA = ', '
32
- Sequel::Deprecation.deprecate_constant(self, :COMMA)
33
-
34
- # Change the database for this dataset.
35
- def db=(v)
36
- raise_if_frozen!("db=")
37
- @db = v
38
- @cache = {}
39
- end
40
-
41
- # Change the options for this dataset.
42
- def opts=(v)
43
- raise_if_frozen!("opts=")
44
- @opts = v
45
- @cache = {}
46
- end
47
-
48
- # Update all records matching the conditions with the values specified.
49
- # Returns the number of rows affected.
50
- #
51
- # DB[:table][:id=>1] = {:id=>2} # UPDATE table SET id = 2 WHERE id = 1
52
- # # => 1 # number of rows affected
53
- def []=(conditions, values)
54
- where(conditions).update(values)
55
- end
56
-
57
- # Inserts multiple values. If a block is given it is invoked for each
58
- # item in the given array before inserting it. See +multi_insert+ as
59
- # a possibly faster version that may be able to insert multiple
60
- # records in one SQL statement (if supported by the database).
61
- # Returns an array of primary keys of inserted rows.
62
- #
63
- # DB[:table].insert_multiple([{:x=>1}, {:x=>2}])
64
- # # => [4, 5]
65
- # # INSERT INTO table (x) VALUES (1)
66
- # # INSERT INTO table (x) VALUES (2)
67
- #
68
- # DB[:table].insert_multiple([{:x=>1}, {:x=>2}]){|row| row[:y] = row[:x] * 2; row }
69
- # # => [6, 7]
70
- # # INSERT INTO table (x, y) VALUES (1, 2)
71
- # # INSERT INTO table (x, y) VALUES (2, 4)
72
- def insert_multiple(array, &block)
73
- if block
74
- array.map{|i| insert(block.call(i))}
75
- else
76
- array.map{|i| insert(i)}
77
- end
78
- end
79
-
80
- # Return a copy of the dataset with unqualified identifiers in the
81
- # SELECT, WHERE, GROUP, HAVING, and ORDER clauses qualified by the
82
- # given table. If no columns are currently selected, select all
83
- # columns of the given table.
84
- #
85
- # DB[:items].where(:id=>1).qualify_to(:i)
86
- # # SELECT i.* FROM items WHERE (i.id = 1)
87
- def qualify_to(table)
88
- qualify(table)
89
- end
90
-
91
- # Qualify the dataset to its current first source. This is useful
92
- # if you have unqualified identifiers in the query that all refer to
93
- # the first source, and you want to join to another table which
94
- # has columns with the same name as columns in the current dataset.
95
- # See +qualify_to+.
96
- #
97
- # DB[:items].where(:id=>1).qualify_to_first_source
98
- # # SELECT items.* FROM items WHERE (items.id = 1)
99
- def qualify_to_first_source
100
- qualify
101
- end
102
-
103
- # Alias for update, but not aliased directly so subclasses
104
- # don't have to override both methods.
105
- def set(*args)
106
- update(*args)
107
- end
108
-
109
- # Returns a string in CSV format containing the dataset records. By
110
- # default the CSV representation includes the column titles in the
111
- # first line. You can turn that off by passing false as the
112
- # include_column_titles argument.
113
- #
114
- # This does not use a CSV library or handle quoting of values in
115
- # any way. If any values in any of the rows could include commas or line
116
- # endings, you shouldn't use this.
117
- #
118
- # puts DB[:table].to_csv # SELECT * FROM table
119
- # # id,name
120
- # # 1,Jim
121
- # # 2,Bob
122
- def to_csv(include_column_titles = true)
123
- n = naked
124
- cols = n.columns
125
- csv = String.new
126
- csv << "#{cols.join(', ')}\r\n" if include_column_titles
127
- n.each{|r| csv << "#{cols.map{|c| r[c]}.join(', ')}\r\n"}
128
- csv
129
- end
130
- end
131
-
132
- Dataset.register_extension(:sequel_3_dataset_methods, Sequel3DatasetMethods)
133
- end
@@ -1,82 +0,0 @@
1
- # frozen-string-literal: true
2
- #
3
- # The set_overrides extension adds the Dataset#set_overrides and
4
- # Dataset#set_defaults methods which provide a crude way to
5
- # control the values used in INSERT/UPDATE statements if a hash
6
- # of values is passed to Dataset#insert or Dataset#update.
7
- # It is only recommended to use this for backwards compatibility.
8
- #
9
- # You can load this extension into specific datasets:
10
- #
11
- # ds = DB[:table]
12
- # ds = ds.extension(:set_overrides)
13
- #
14
- # Or you can load it into all of a database's datasets, which
15
- # is probably the desired behavior if you are using this extension:
16
- #
17
- # DB.extension(:set_overrides)
18
- #
19
- # Related module: Sequel::SetOverrides
20
-
21
- Sequel::Deprecation.deprecate("The set_overrides extension", "Please consider maintaining it yourself as an external sequel extension if you want to continue using it")
22
-
23
- #
24
- module Sequel
25
- module SetOverrides
26
- Dataset.def_mutation_method(:set_defaults, :set_overrides, :module=>self)
27
-
28
- # Set overrides/defaults for insert hashes
29
- def insert_sql(*values)
30
- if values.size == 1 && (vals = values.first).is_a?(Hash)
31
- super(merge_defaults_overrides(vals))
32
- else
33
- super
34
- end
35
- end
36
-
37
- # Set the default values for insert and update statements. The values hash passed
38
- # to insert or update are merged into this hash, so any values in the hash passed
39
- # to insert or update will override values passed to this method.
40
- #
41
- # DB[:items].set_defaults(:a=>'a', :c=>'c').insert(:a=>'d', :b=>'b')
42
- # # INSERT INTO items (a, c, b) VALUES ('d', 'c', 'b')
43
- def set_defaults(hash)
44
- clone(:defaults=>(@opts[:defaults]||{}).merge(hash))
45
- end
46
-
47
- # Set values that override hash arguments given to insert and update statements.
48
- # This hash is merged into the hash provided to insert or update, so values
49
- # will override any values given in the insert/update hashes.
50
- #
51
- # DB[:items].set_overrides(:a=>'a', :c=>'c').insert(:a=>'d', :b=>'b')
52
- # # INSERT INTO items (a, c, b) VALUES ('a', 'c', 'b')
53
- def set_overrides(hash)
54
- clone(:overrides=>hash.merge(@opts[:overrides]||{}))
55
- end
56
-
57
- # Set overrides/defaults for update hashes
58
- def update_sql(values = {})
59
- if values.is_a?(Hash)
60
- super(merge_defaults_overrides(values))
61
- else
62
- super
63
- end
64
- end
65
-
66
- private
67
-
68
- # Return new hashe with merged defaults and overrides.
69
- def merge_defaults_overrides(vals)
70
- vals = @opts[:defaults].merge(vals) if @opts[:defaults]
71
- vals = vals.merge(@opts[:overrides]) if @opts[:overrides]
72
- vals
73
- end
74
-
75
- # Dataset options that do not affect the generated SQL.
76
- def non_sql_option?(key)
77
- super || key == :defaults || key == :overrides
78
- end
79
- end
80
-
81
- Dataset.register_extension(:set_overrides, SetOverrides)
82
- end
@@ -1,4 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- require 'sequel'
4
- Sequel::Deprecation.deprecate("requiring 'sequel/no_core_ext'", "Just require 'sequel' instead")
@@ -1,11 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- Sequel::Deprecation.deprecate("The association_autoreloading plugin", "This plugin was integrated into the default model behavior in Sequel 4.0, and no longer has an effect")
4
-
5
- module Sequel
6
- module Plugins
7
- # Empty plugin module for backwards compatibility
8
- module AssociationAutoreloading
9
- end
10
- end
11
- end
@@ -1,49 +0,0 @@
1
- # frozen-string-literal: true
2
-
3
- Sequel::Deprecation.deprecate("The identifier_columns plugin", "Set Sequel.split_symbols = false instead")
4
-
5
- module Sequel
6
- module Plugins
7
- # The identifier_columns plugin makes Sequel automatically
8
- # handle column names containing 2 or more consecutive
9
- # underscores when creating or updating model objects.
10
- # By default, this doesn't work correctly in Sequel, as it
11
- # handles such symbols specially.
12
- #
13
- # This behavior isn't the default as it hurts performance,
14
- # and is rarely necessary.
15
- #
16
- # Usage:
17
- #
18
- # # Make all model subclasses handle column names
19
- # # with two or more underscores when saving
20
- # Sequel::Model.plugin :identifier_columns
21
- #
22
- # # Make the Album class handle column names
23
- # # with two or more underscores when saving
24
- # Album.plugin :identifier_columns
25
- module IdentifierColumns
26
- module InstanceMethods
27
- private
28
-
29
- # Use identifiers for value hash keys when inserting.
30
- def _insert_values
31
- identifier_hash(super)
32
- end
33
-
34
- # Use identifiers for value hash keys when updating.
35
- def _update_without_checking(columns)
36
- super(identifier_hash(columns))
37
- end
38
-
39
- # Convert the given columns hash from symbol
40
- # keys to Sequel::SQL::Identifier keys.
41
- def identifier_hash(columns)
42
- h = {}
43
- columns.each{|k,v| h[Sequel.identifier(k)] = v}
44
- h
45
- end
46
- end
47
- end
48
- end
49
- end