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
@@ -12,7 +12,8 @@ module Sequel
12
12
 
13
13
  # Array of all databases to which Sequel has connected. If you are
14
14
  # developing an application that can connect to an arbitrary number of
15
- # databases, delete the database objects from this or they will not get
15
+ # databases, delete the database objects from this (or use the :keep_reference
16
+ # Database option or a block when connecting) or they will not get
16
17
  # garbage collected.
17
18
  DATABASES = []
18
19
 
@@ -23,5 +24,14 @@ module Sequel
23
24
  OPTS = Sequel::OPTS
24
25
  end
25
26
 
26
- require(%w"connecting dataset dataset_defaults logging features misc query transactions schema_generator schema_methods", 'database')
27
+ require_relative "database/connecting"
28
+ require_relative "database/dataset"
29
+ require_relative "database/dataset_defaults"
30
+ require_relative "database/logging"
31
+ require_relative "database/features"
32
+ require_relative "database/misc"
33
+ require_relative "database/query"
34
+ require_relative "database/transactions"
35
+ require_relative "database/schema_generator"
36
+ require_relative "database/schema_methods"
27
37
  end
@@ -8,35 +8,13 @@ module Sequel
8
8
  # ---------------------
9
9
 
10
10
  # Array of supported database adapters
11
- ADAPTERS = %w'ado amalgalite cubrid do ibmdb jdbc mock mysql mysql2 odbc oracle postgres sqlanywhere sqlite swift tinytds'.map(&:to_sym)
12
- # SEQUEL5: Remove cubrid do swift
13
-
14
- def self.single_threaded
15
- Sequel::Deprecation.deprecate("Sequel::Database.single_threaded", "Use Sequel.single_threaded instead")
16
- Sequel.single_threaded
17
- end
18
-
19
- def self.single_threaded=(v)
20
- Sequel::Deprecation.deprecate("Sequel::Database.single_threaded=", "Use Sequel.single_threaded= instead")
21
- Sequel.single_threaded = v
22
- end
11
+ ADAPTERS = %w'ado amalgalite ibmdb jdbc mock mysql mysql2 odbc oracle postgres sqlanywhere sqlite tinytds'.map(&:to_sym)
23
12
 
24
13
  # The Database subclass for the given adapter scheme.
25
14
  # Raises Sequel::AdapterNotFound if the adapter
26
15
  # could not be loaded.
27
16
  def self.adapter_class(scheme)
28
- return scheme if scheme.is_a?(Class)
29
-
30
- if scheme.to_s.include?('-')
31
- # :nocov:
32
- Sequel::Deprecation.deprecate("Automatically converting '-' to '_' in adapter schemes", "Use '_' instead of '-' in the adapter scheme")
33
- # :nocov:
34
- end
35
-
36
- scheme = scheme.to_s.gsub('-', '_').to_sym # SEQUEL5: Remove
37
- # scheme = scheme.to_sym # SEQUEL5
38
-
39
- load_adapter(scheme)
17
+ scheme.is_a?(Class) ? scheme : load_adapter(scheme.to_sym)
40
18
  end
41
19
 
42
20
  # Returns the scheme symbol for the Database class.
@@ -48,9 +26,8 @@ module Sequel
48
26
  def self.connect(conn_string, opts = OPTS)
49
27
  case conn_string
50
28
  when String
51
- # SEQUEL5: Remove do
52
- if match = /\A(jdbc|do):/.match(conn_string)
53
- c = adapter_class(match[1].to_sym)
29
+ if conn_string.start_with?('jdbc:')
30
+ c = adapter_class(:jdbc)
54
31
  opts = opts.merge(:orig_opts=>opts.dup)
55
32
  opts = {:uri=>conn_string}.merge!(opts)
56
33
  else
@@ -69,16 +46,16 @@ module Sequel
69
46
  else
70
47
  raise Error, "Sequel::Database.connect takes either a Hash or a String, given: #{conn_string.inspect}"
71
48
  end
72
- # process opts a bit
49
+
73
50
  opts = opts.inject({}) do |m, (k,v)|
74
51
  k = :user if k.to_s == 'username'
75
52
  m[k.to_sym] = v
76
53
  m
77
54
  end
55
+
78
56
  begin
79
57
  db = c.new(opts)
80
- # SEQUEL5: Default opts[:test] to true
81
- db.test_connection if opts[:test] && db.send(:typecast_value_boolean, opts[:test])
58
+ db.test_connection if db.send(:typecast_value_boolean, opts.fetch(:test, true))
82
59
  if block_given?
83
60
  return yield(db)
84
61
  end
@@ -155,7 +132,6 @@ module Sequel
155
132
  # end
156
133
  #
157
134
  # module DatabaseMethods
158
- # extend Sequel::Database::ResetIdentifierMangling
159
135
  # # ...
160
136
  # end
161
137
  #
@@ -181,27 +157,26 @@ module Sequel
181
157
  # +database_type+ (for native adapters), in others (i.e. adapters with
182
158
  # subadapters), it will be different.
183
159
  #
184
- # Sequel.connect('jdbc:postgres://...').adapter_scheme # => :jdbc
160
+ # Sequel.connect('jdbc:postgres://...').adapter_scheme
161
+ # # => :jdbc
185
162
  def adapter_scheme
186
163
  self.class.adapter_scheme
187
164
  end
188
165
 
189
166
  # Dynamically add new servers or modify server options at runtime. Also adds new
190
- # servers to the connection pool. Intended for use with master/slave or shard
191
- # configurations where it is useful to add new server hosts at runtime.
167
+ # servers to the connection pool. Only usable when using a sharded connection pool.
192
168
  #
193
169
  # servers argument should be a hash with server name symbol keys and hash or
194
170
  # proc values. If a servers key is already in use, it's value is overridden
195
171
  # with the value provided.
196
172
  #
197
- # DB.add_servers(:f=>{:host=>"hash_host_f"})
173
+ # DB.add_servers(f: {host: "hash_host_f"})
198
174
  def add_servers(servers)
199
- unless h = @opts[:servers]
200
- Sequel::Deprecation.deprecate("Calling Database#add_servers on a database that does not use sharding", "This method should only be called if the database supports sharding")
201
- # raise Error, "cannot call Database#add_servers on a Database instance that does not use a sharded connection pool" # SEQUEL5
202
- return
175
+ unless sharded?
176
+ raise Error, "cannot call Database#add_servers on a Database instance that does not use a sharded connection pool"
203
177
  end
204
178
 
179
+ h = @opts[:servers]
205
180
  Sequel.synchronize{h.merge!(servers)}
206
181
  @pool.add_servers(servers.keys)
207
182
  end
@@ -213,7 +188,8 @@ module Sequel
213
188
  # type. Even better, you can tell that two Database objects that are using
214
189
  # the same adapter are connecting to different database types.
215
190
  #
216
- # Sequel.connect('jdbc:postgres://...').database_type # => :postgres
191
+ # Sequel.connect('jdbc:postgres://...').database_type
192
+ # # => :postgres
217
193
  def database_type
218
194
  adapter_scheme
219
195
  end
@@ -226,8 +202,8 @@ module Sequel
226
202
  # Example:
227
203
  #
228
204
  # DB.disconnect # All servers
229
- # DB.disconnect(:server=>:server1) # Single server
230
- # DB.disconnect(:server=>[:server1, :server2]) # Multiple servers
205
+ # DB.disconnect(server: :server1) # Single server
206
+ # DB.disconnect(server: [:server1, :server2]) # Multiple servers
231
207
  def disconnect(opts = OPTS)
232
208
  pool.disconnect(opts)
233
209
  end
@@ -239,20 +215,8 @@ module Sequel
239
215
  conn.close
240
216
  end
241
217
 
242
- # Yield a new Database instance for every server in the connection pool.
243
- # Intended for use in sharded environments where there is a need to make schema
244
- # modifications (DDL queries) on each shard.
245
- #
246
- # DB.each_server{|db| db.create_table(:users){primary_key :id; String :name}}
247
- def each_server(&block)
248
- Sequel::Deprecation.deprecate("Database#each_server", "Switching to using Dataset#servers and Database#with_server from the server_block extension: \"DB.servers.each{|s| DB.with_server(s){}}\"")
249
- raise(Error, "Database#each_server must be passed a block") unless block
250
- servers.each{|s| self.class.connect(server_opts(s), &block)}
251
- end
252
-
253
- # Dynamically remove existing servers from the connection pool. Intended for
254
- # use with master/slave or shard configurations where it is useful to remove
255
- # existing server hosts at runtime.
218
+ # Dynamically remove existing servers from the connection pool. Only usable
219
+ # when using a sharded connection pool
256
220
  #
257
221
  # servers should be symbols or arrays of symbols. If a nonexistent server
258
222
  # is specified, it is ignored. If no servers have been specified for
@@ -261,12 +225,11 @@ module Sequel
261
225
  #
262
226
  # DB.remove_servers(:f1, :f2)
263
227
  def remove_servers(*servers)
264
- unless h = @opts[:servers]
265
- Sequel::Deprecation.deprecate("Calling Database#add_servers on a database that does not use sharding", "This method should only be called if the database supports sharding")
266
- # raise Error, "cannot call Database#remove_servers on a Database instance that does not use a sharded connection pool" # SEQUEL5
267
- return
228
+ unless sharded?
229
+ raise Error, "cannot call Database#remove_servers on a Database instance that does not use a sharded connection pool"
268
230
  end
269
231
 
232
+ h = @opts[:servers]
270
233
  servers.flatten.each{|s| Sequel.synchronize{h.delete(s)}}
271
234
  @pool.remove_servers(servers)
272
235
  end
@@ -53,18 +53,15 @@ module Sequel
53
53
  end
54
54
 
55
55
  # Returns a new dataset with the +from+ method invoked. If a block is given,
56
- # it is used as a filter on the dataset.
56
+ # it acts as a virtual row block
57
57
  #
58
58
  # DB.from(:items) # SELECT * FROM items
59
- # DB.from(:items){id > 2} # SELECT * FROM items WHERE (id > 2)
59
+ # DB.from{schema[:table]} # SELECT * FROM schema.table
60
60
  def from(*args, &block)
61
61
  if block
62
- Sequel::Deprecation.deprecate("Sequel::Database#from with a block", "Use .from(*args).where(&block) instead")
63
- @default_dataset.from(*args).where(&block)
64
- #SEQUEL5
65
- # @default_dataset.from(*args, &block)
66
- #elsif args.length == 1 && (table = args[0]).is_a?(Symbol)
67
- # @default_dataset.send(:cached_dataset, :"_from_#{table}_ds"){@default_dataset.from(table)}
62
+ @default_dataset.from(*args, &block)
63
+ elsif args.length == 1 && (table = args[0]).is_a?(Symbol)
64
+ @default_dataset.send(:cached_dataset, :"_from_#{table}_ds"){@default_dataset.from(table)}
68
65
  else
69
66
  @default_dataset.from(*args)
70
67
  end
@@ -73,7 +70,7 @@ module Sequel
73
70
  # Returns a new dataset with the select method invoked.
74
71
  #
75
72
  # DB.select(1) # SELECT 1
76
- # DB.select{server_version{}} # SELECT server_version()
73
+ # DB.select{server_version.function} # SELECT server_version()
77
74
  # DB.select(:id).from(:items) # SELECT id FROM items
78
75
  def select(*args, &block)
79
76
  @default_dataset.select(*args, &block)
@@ -7,42 +7,6 @@ module Sequel
7
7
  # This methods change the default behavior of this database's datasets.
8
8
  # ---------------------
9
9
 
10
- # The default class to use for datasets
11
- DatasetClass = Sequel::Dataset
12
- Sequel::Deprecation.deprecate_constant(self, :DatasetClass)
13
-
14
- # SEQUEL5: Remove
15
- @identifier_input_method = nil
16
- @identifier_output_method = nil
17
- @quote_identifiers = nil
18
- class << self
19
- # The identifier input method to use by default for all databases (default: adapter default)
20
- attr_reader :identifier_input_method
21
-
22
- # The identifier output method to use by default for all databases (default: adapter default)
23
- attr_reader :identifier_output_method
24
-
25
- # Whether to quote identifiers (columns and tables) by default for all databases (default: adapter default)
26
- attr_reader :quote_identifiers
27
- end
28
-
29
- # Change the default identifier input method to use for all databases,
30
- def self.identifier_input_method=(v)
31
- Sequel::Deprecation.deprecate("Sequel.identifier_input_method= and Sequel::Database.identifier_input_method=", "Call Sequel::Database#identifier_input_method= instead")
32
- @identifier_input_method = v.nil? ? false : v
33
- end
34
-
35
- # Change the default identifier output method to use for all databases,
36
- def self.identifier_output_method=(v)
37
- Sequel::Deprecation.deprecate("Sequel.identifier_output_method= and Sequel::Database.identifier_output_method=", "Call Sequel::Database#identifier_output_method= instead")
38
- @identifier_output_method = v.nil? ? false : v
39
- end
40
-
41
- def self.quote_identifiers=(v)
42
- Sequel::Deprecation.deprecate("Sequel.quote_identifiers= and Sequel::Database.quote_identifiers=", "Call Sequel::Database#quote_identifiers= instead")
43
- @quote_identifiers = v
44
- end
45
-
46
10
  # The class to use for creating datasets. Should respond to
47
11
  # new with the Database argument as the first argument, and
48
12
  # an optional options hash.
@@ -74,7 +38,7 @@ module Sequel
74
38
  #
75
39
  # Examples:
76
40
  #
77
- # # Introspec columns for all of DB's datasets
41
+ # # Introspect columns for all of DB's datasets
78
42
  # DB.extend_datasets(Sequel::ColumnsIntrospection)
79
43
  #
80
44
  # # Trace all SELECT queries by printing the SQL and the full backtrace
@@ -112,24 +76,16 @@ module Sequel
112
76
 
113
77
  # The default dataset class to use for the database
114
78
  def dataset_class_default
115
- if self.class == Sequel::Database
116
- Sequel::Dataset
117
- else
118
- Sequel::Deprecation.deprecate("Using self.class.const_get(:DatasetClass) to get the default dataset class", "Modify the database adapter to implement Database#dataset_class_default")
119
- self.class.const_get(:DatasetClass)
120
- end
79
+ Sequel::Dataset
121
80
  end
122
81
 
123
- # Reset the default dataset used by most Database methods that
124
- # create datasets. Usually done after changes to the identifier
125
- # mangling methods.
82
+ # Reset the default dataset used by most Database methods that create datasets.
126
83
  def reset_default_dataset
127
84
  Sequel.synchronize{@symbol_literal_cache.clear}
128
85
  @default_dataset = dataset
129
86
  end
130
87
 
131
- # Whether to quote identifiers by default for this database, true
132
- # by default.
88
+ # Whether to quote identifiers by default for this database, true by default.
133
89
  def quote_identifiers_default
134
90
  true
135
91
  end
@@ -8,7 +8,7 @@ module Sequel
8
8
  # database supprots a given feature.
9
9
  # ---------------------
10
10
 
11
- # Whether the database uses a global namespace for the index. If
11
+ # Whether the database uses a global namespace for the index, true by default. If
12
12
  # false, the indexes are going to be namespaced per table.
13
13
  def global_index_namespace?
14
14
  true
@@ -33,7 +33,7 @@ module Sequel
33
33
  end
34
34
 
35
35
  # Whether the database supports DROP TABLE IF EXISTS syntax,
36
- # default is the same as #supports_create_table_if_not_exists?.
36
+ # false by default.
37
37
  def supports_drop_table_if_exists?
38
38
  supports_create_table_if_not_exists?
39
39
  end
@@ -49,7 +49,8 @@ module Sequel
49
49
  respond_to?(:indexes)
50
50
  end
51
51
 
52
- # Whether the database supports partial indexes (indexes on a subset of a table).
52
+ # Whether the database supports partial indexes (indexes on a subset of a table),
53
+ # false by default.
53
54
  def supports_partial_indexes?
54
55
  false
55
56
  end
@@ -66,7 +67,7 @@ module Sequel
66
67
  end
67
68
 
68
69
  # Whether the database and adapter support savepoints inside prepared transactions
69
- # (two-phase commit), default is false.
70
+ # (two-phase commit), false by default.
70
71
  def supports_savepoints_in_prepared_transactions?
71
72
  supports_prepared_transactions? && supports_savepoints?
72
73
  end
@@ -32,13 +32,6 @@ module Sequel
32
32
  log_each(:info, args ? "#{message}; #{args.inspect}" : message)
33
33
  end
34
34
 
35
- # Yield to the block, logging any errors at error level to all loggers,
36
- # and all other queries with the duration at warn or info level.
37
- def log_yield(sql, args=nil, &block)
38
- Sequel::Deprecation.deprecate("Sequel::Database#log_yield", "Update the adapter to use Sequel::Database#log_connection_yield")
39
- log_connection_yield(sql, nil, args, &block)
40
- end
41
-
42
35
  # Yield to the block, logging any errors at error level to all loggers,
43
36
  # and all other queries with the duration at warn or info level.
44
37
  def log_connection_yield(sql, conn, args=nil)
@@ -73,7 +66,7 @@ module Sequel
73
66
  # Log the given SQL and then execute it on the connection, used by
74
67
  # the transaction code.
75
68
  def log_connection_execute(conn, sql)
76
- log_connection_yield(sql, conn){conn.send(connection_execute_method, sql)}
69
+ log_connection_yield(sql, conn){conn.public_send(connection_execute_method, sql)}
77
70
  end
78
71
 
79
72
  # Log message with message prefixed by duration at info level, or
@@ -85,7 +78,7 @@ module Sequel
85
78
  # Log message at level (which should be :error, :warn, or :info)
86
79
  # to all loggers.
87
80
  def log_each(level, message)
88
- @loggers.each{|logger| logger.send(level, message)}
81
+ @loggers.each{|logger| logger.public_send(level, message)}
89
82
  end
90
83
  end
91
84
  end
@@ -26,18 +26,6 @@ module Sequel
26
26
  :time=>Sequel::SQLTime, :boolean=>[TrueClass, FalseClass].freeze, :float=>Float, :decimal=>BigDecimal,
27
27
  :blob=>Sequel::SQL::Blob}.freeze
28
28
 
29
- # Module to be included in shared adapters so that when the DatabaseMethods are
30
- # included in the database, the identifier mangling defaults are reset correctly.
31
- module ResetIdentifierMangling
32
- def self.extended(obj)
33
- # :nocov:
34
- Sequel::Deprecation.deprecate("Sequel::Database::ResetIdentifierMangling is no longer needed and will be removed in Sequel 5. Please update your adapter")
35
- obj.send(:reset_identifier_mangling) if obj.respond_to?(:reset_identifier_mangling)
36
- # :nocov:
37
- end
38
- end
39
- Sequel::Deprecation.deprecate_constant(self, :ResetIdentifierMangling)
40
-
41
29
  # Nested hook Proc; each new hook Proc just wraps the previous one.
42
30
  @initialize_hook = Proc.new {|db| }
43
31
 
@@ -88,7 +76,7 @@ module Sequel
88
76
  :user => uri.user,
89
77
  :password => uri.password,
90
78
  :port => uri.port,
91
- :host => RUBY_VERSION < '1.9.3' ? uri.host : uri.hostname,
79
+ :host => uri.hostname,
92
80
  :database => (m = /\/(.*)/.match(uri.path)) && (m[1])
93
81
  }
94
82
  end
@@ -107,12 +95,16 @@ module Sequel
107
95
  # options hash.
108
96
  #
109
97
  # Accepts the following options:
98
+ # :cache_schema :: Whether schema should be cached for this Database instance
110
99
  # :default_string_column_size :: The default size of string columns, 255 by default.
111
- # :identifier_mangling :: Whether to support non-default identifier mangling for the current database.
100
+ # :keep_reference :: Whether to keep a reference to this instance in Sequel::DATABASES, true by default.
112
101
  # :logger :: A specific logger to use.
113
102
  # :loggers :: An array of loggers to use.
103
+ # :log_connection_info :: Whether connection information should be logged when logging queries.
104
+ # :log_warn_duration :: The number of elapsed seconds after which queries should be logged at warn level.
114
105
  # :name :: A name to use for the Database object.
115
- # :preconnect :: Whether to automatically connect to the maximum number of servers.
106
+ # :preconnect :: Whether to automatically connect to the maximum number of servers. Can use a valid
107
+ # of 'concurrently' to preconnect in separate threads.
116
108
  # :quote_identifiers :: Whether to quote identifiers.
117
109
  # :servers :: A hash specifying a server/shard specific options, keyed by shard symbol .
118
110
  # :single_threaded :: Whether to use a single-threaded connection pool.
@@ -150,10 +142,6 @@ module Sequel
150
142
 
151
143
  reset_default_dataset
152
144
  adapter_initialize
153
- if typecast_value_boolean(@opts.fetch(:identifier_mangling, true))
154
- # SEQUEL5: Remove
155
- extension(:_deprecated_identifier_mangling)
156
- end
157
145
 
158
146
  unless typecast_value_boolean(@opts[:keep_reference]) == false
159
147
  Sequel.synchronize{::Sequel::DATABASES.push(self)}
@@ -176,22 +164,20 @@ module Sequel
176
164
  @dataset_modules.freeze
177
165
  @schema_type_classes.freeze
178
166
  @loaded_extensions.freeze
179
- # SEQUEL5: Frozen by default, remove this
180
- @default_dataset.freeze
181
- metadata_dataset.freeze
167
+ metadata_dataset
182
168
  super
183
169
  end
184
170
 
185
- def initialize_copy(_)
186
- Sequel::Deprecation.deprecate("Database#dup and #clone", "Use Sequel.connect to create a new Database instance")
187
- # raise(Error, "cannot dup/clone a Sequel::Database instance") # SEQUEL5
188
- super
171
+ # Disallow dup/clone for Database instances
172
+ undef_method :dup, :clone, :initialize_copy
173
+ if RUBY_VERSION >= '1.9.3'
174
+ undef_method :initialize_clone, :initialize_dup
189
175
  end
190
176
 
191
177
  # Cast the given type to a literal type
192
178
  #
193
179
  # DB.cast_type_literal(Float) # double precision
194
- # DB.cast_type_literal(:foo) # foo
180
+ # DB.cast_type_literal(:foo) # foo
195
181
  def cast_type_literal(type)
196
182
  type_literal(:type=>type)
197
183
  end
@@ -236,8 +222,8 @@ module Sequel
236
222
 
237
223
  # Proxy the literal call to the dataset.
238
224
  #
239
- # DB.literal(1) # 1
240
- # DB.literal(:a) # a
225
+ # DB.literal(1) # 1
226
+ # DB.literal(:a) # a
241
227
  # DB.literal('a') # 'a'
242
228
  def literal(v)
243
229
  schema_utility_dataset.literal(v)
@@ -271,8 +257,7 @@ module Sequel
271
257
  @schema_type_classes[type]
272
258
  end
273
259
 
274
- # Default serial primary key options, used by the table creation
275
- # code.
260
+ # Default serial primary key options, used by the table creation code.
276
261
  def serial_primary_key_options
277
262
  {:primary_key => true, :type => Integer, :auto_increment => true}
278
263
  end
@@ -309,6 +294,7 @@ module Sequel
309
294
  return nil if value.nil?
310
295
  meth = "typecast_value_#{column_type}"
311
296
  begin
297
+ # Allow calling private methods as per-type typecasting methods are private
312
298
  respond_to?(meth, true) ? send(meth, value) : value
313
299
  rescue ArgumentError, TypeError => e
314
300
  raise Sequel.convert_exception_class(e, InvalidValue)
@@ -363,8 +349,7 @@ module Sequel
363
349
  database_specific_error_class(exception, opts) || DatabaseError
364
350
  end
365
351
 
366
- # Return the SQLState for the given exception, if one can be
367
- # determined
352
+ # Return the SQLState for the given exception, if one can be determined
368
353
  def database_exception_sqlstate(exception, opts)
369
354
  nil
370
355
  end
@@ -415,7 +400,7 @@ module Sequel
415
400
  end
416
401
 
417
402
  # Convert the given exception to an appropriate Sequel::DatabaseError
418
- # subclass, keeping message and traceback.
403
+ # subclass, keeping message and backtrace.
419
404
  def raise_error(exception, opts=OPTS)
420
405
  if !opts[:classes] || Array(opts[:classes]).any?{|c| exception.is_a?(c)}
421
406
  raise Sequel.convert_exception_class(exception, database_error_class(exception, opts))
@@ -503,25 +488,9 @@ module Sequel
503
488
  Float(value)
504
489
  end
505
490
 
506
- # Used for checking/removing leading zeroes from strings so they don't get
507
- # interpreted as octal.
508
- LEADING_ZERO_RE = /\A0+(\d)/
509
- Sequel::Deprecation.deprecate_constant(self, :LEADING_ZERO_RE)
510
-
511
- if RUBY_VERSION >= '1.9'
512
- # Typecast the value to an Integer
513
- def typecast_value_integer(value)
514
- (value.is_a?(String) && value =~ /\A0+(\d)/) ? Integer(value, 10) : Integer(value)
515
- end
516
- else
517
- # :nocov:
518
- # Replacement string when replacing leading zeroes.
519
- LEADING_ZERO_REP = "\\1".freeze
520
- # Typecast the value to an Integer
521
- def typecast_value_integer(value)
522
- Integer(value.is_a?(String) ? value.sub(LEADING_ZERO_RE, LEADING_ZERO_REP) : value)
523
- end
524
- # :nocov:
491
+ # Typecast the value to an Integer
492
+ def typecast_value_integer(value)
493
+ (value.is_a?(String) && value =~ /\A0+(\d)/) ? Integer(value, 10) : Integer(value)
525
494
  end
526
495
 
527
496
  # Typecast the value to a String
@@ -541,8 +510,7 @@ module Sequel
541
510
  if value.is_a?(SQLTime)
542
511
  value
543
512
  else
544
- # specifically check for nsec == 0 value to work around JRuby 1.6 ruby 1.9 mode bug
545
- SQLTime.create(value.hour, value.min, value.sec, (value.respond_to?(:nsec) && value.nsec != 0) ? value.nsec/1000.0 : value.usec)
513
+ SQLTime.create(value.hour, value.min, value.sec, value.nsec/1000.0)
546
514
  end
547
515
  when String
548
516
  Sequel.string_to_time(value)