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
@@ -11,13 +11,6 @@ module Sequel
11
11
  class Database < Sequel::Database
12
12
  set_adapter_scheme :odbc
13
13
 
14
- GUARDED_DRV_NAME = /^\{.+\}$/.freeze
15
- Sequel::Deprecation.deprecate_constant(self, :GUARDED_DRV_NAME)
16
- DRV_NAME_GUARDS = '{%s}'.freeze
17
- Sequel::Deprecation.deprecate_constant(self, :DRV_NAME_GUARDS)
18
- DISCONNECT_ERRORS = /\A08S01/.freeze
19
- Sequel::Deprecation.deprecate_constant(self, :DISCONNECT_ERRORS)
20
-
21
14
  def connect(server)
22
15
  opts = server_opts(server)
23
16
  conn = if opts.include?(:drvconnect)
@@ -93,18 +86,6 @@ module Sequel
93
86
  end
94
87
 
95
88
  class Dataset < Sequel::Dataset
96
- BOOL_TRUE = '1'.freeze
97
- Sequel::Deprecation.deprecate_constant(self, :BOOL_TRUE)
98
- BOOL_FALSE = '0'.freeze
99
- Sequel::Deprecation.deprecate_constant(self, :BOOL_FALSE)
100
- ODBC_DATE_FORMAT = "{d '%Y-%m-%d'}".freeze
101
- Sequel::Deprecation.deprecate_constant(self, :ODBC_DATE_FORMAT)
102
- TIMESTAMP_FORMAT="{ts '%Y-%m-%d %H:%M:%S'}".freeze
103
- Sequel::Deprecation.deprecate_constant(self, :TIMESTAMP_FORMAT)
104
-
105
- Database::DatasetClass = self
106
- Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
107
-
108
89
  def fetch_rows(sql)
109
90
  execute(sql) do |s|
110
91
  i = -1
@@ -1,6 +1,6 @@
1
1
  # frozen-string-literal: true
2
2
 
3
- Sequel.require 'adapters/shared/db2'
3
+ require_relative '../shared/db2'
4
4
 
5
5
  Sequel.synchronize do
6
6
  Sequel::ODBC::DATABASE_SETUP[:db2] = proc do |db|
@@ -1,6 +1,6 @@
1
1
  # frozen-string-literal: true
2
2
 
3
- Sequel.require 'adapters/shared/mssql'
3
+ require_relative '../shared/mssql'
4
4
 
5
5
  module Sequel
6
6
  module ODBC
@@ -12,15 +12,10 @@ module Sequel
12
12
  end
13
13
  end
14
14
 
15
- # Database and Dataset instance methods for MSSQL specific
16
- # support via ODBC.
17
15
  module MSSQL
18
16
  module DatabaseMethods
19
17
  include Sequel::MSSQL::DatabaseMethods
20
- LAST_INSERT_ID_SQL='SELECT SCOPE_IDENTITY()'.freeze
21
- Sequel::Deprecation.deprecate_constant(self, :LAST_INSERT_ID_SQL)
22
-
23
- # Return the last inserted identity value.
18
+
24
19
  def execute_insert(sql, opts=OPTS)
25
20
  synchronize(opts[:server]) do |conn|
26
21
  begin
@@ -43,13 +38,10 @@ module Sequel
43
38
  class Dataset < ODBC::Dataset
44
39
  include Sequel::MSSQL::DatasetMethods
45
40
 
46
- # Use ODBC format, not Microsoft format, as the ODBC layer does
47
- # some translation. MSSQL version is over-ridden to allow 3 millisecond decimal places
48
- TIMESTAMP_FORMAT="{ts '%Y-%m-%d %H:%M:%S%N'}".freeze
49
- Sequel::Deprecation.deprecate_constant(self, :TIMESTAMP_FORMAT)
50
-
51
41
  private
52
42
 
43
+ # Use ODBC format, not Microsoft format, as the ODBC layer does
44
+ # some translation, but allow for millisecond precision.
53
45
  def default_timestamp_format
54
46
  "{ts '%Y-%m-%d %H:%M:%S%N'}"
55
47
  end
@@ -1,6 +1,6 @@
1
1
  # frozen-string-literal: true
2
2
 
3
- Sequel.require 'adapters/shared/oracle'
3
+ require_relative '../shared/oracle'
4
4
 
5
5
  Sequel.synchronize do
6
6
  Sequel::ODBC::DATABASE_SETUP[:oracle] = proc do |db|
@@ -1,7 +1,7 @@
1
1
  # frozen-string-literal: true
2
2
 
3
3
  require 'oci8'
4
- Sequel.require 'adapters/shared/oracle'
4
+ require_relative 'shared/oracle'
5
5
 
6
6
  module Sequel
7
7
  module Oracle
@@ -13,12 +13,12 @@ module Sequel
13
13
  # ORA-01012: not logged on
14
14
  # ORA-03113: end-of-file on communication channel
15
15
  # ORA-03114: not connected to ORACLE
16
- CONNECTION_ERROR_CODES = [ 28, 1012, 3113, 3114 ]#.freeze # SEQUEL5
16
+ CONNECTION_ERROR_CODES = [ 28, 1012, 3113, 3114 ].freeze
17
17
 
18
18
  ORACLE_TYPES = {
19
19
  :blob=>lambda{|b| Sequel::SQL::Blob.new(b.read)},
20
- :clob=>lambda(&:read)
21
- }#.freeze # SEQUEL5
20
+ :clob=>:read.to_proc
21
+ }.freeze
22
22
 
23
23
  # Hash of conversion procs for this database.
24
24
  attr_reader :conversion_procs
@@ -40,8 +40,8 @@ module Sequel
40
40
 
41
41
  # The ruby-oci8 gem which retrieves oracle columns with a type of
42
42
  # DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE is complex based on the
43
- # ruby version (1.9.2 or later) and Oracle version (9 or later)
44
- # In the now standard case of 1.9.2 and Oracle 9 or later, the timezone
43
+ # ruby version and Oracle version (9 or later)
44
+ # In the now standard case of Oracle 9 or later, the timezone
45
45
  # is determined by the Oracle session timezone. Thus if the user
46
46
  # requests Sequel provide UTC timezone to the application,
47
47
  # we need to alter the session timezone to be UTC
@@ -114,7 +114,7 @@ module Sequel
114
114
 
115
115
  PS_TYPES = {'string'=>String, 'integer'=>Integer, 'float'=>Float,
116
116
  'decimal'=>Float, 'date'=>Time, 'datetime'=>Time,
117
- 'time'=>Time, 'boolean'=>String, 'blob'=>OCI8::BLOB}#.freeze # SEQUEL5
117
+ 'time'=>Time, 'boolean'=>String, 'blob'=>OCI8::BLOB}.freeze
118
118
  def cursor_bind_params(conn, cursor, args)
119
119
  i = 0
120
120
  args.map do |arg, type|
@@ -324,12 +324,6 @@ module Sequel
324
324
  class Dataset < Sequel::Dataset
325
325
  include DatasetMethods
326
326
 
327
- Database::DatasetClass = self
328
- Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
329
-
330
- PREPARED_ARG_PLACEHOLDER = ':'.freeze
331
- Sequel::Deprecation.deprecate_constant(self, :PREPARED_ARG_PLACEHOLDER)
332
-
333
327
  # Oracle already supports named bind arguments, so use directly.
334
328
  module ArgumentMapper
335
329
  include Sequel::Dataset::ArgumentMapper
@@ -1,6 +1,6 @@
1
1
  # frozen-string-literal: true
2
2
 
3
- Sequel.require 'adapters/shared/postgres'
3
+ require_relative 'shared/postgres'
4
4
 
5
5
  begin
6
6
  require 'pg'
@@ -26,12 +26,6 @@ end
26
26
 
27
27
  module Sequel
28
28
  module Postgres
29
- # SEQUEL5: Remove
30
- TYPE_CONVERTOR = Class.new do
31
- def bytea(s) ::Sequel::SQL::Blob.new(Adapter.unescape_bytea(s)) end
32
- end.new
33
- Sequel::Deprecation.deprecate_constant(self, :TYPE_CONVERTOR)
34
-
35
29
  if Sequel::Postgres::USES_PG
36
30
  # Whether the given sequel_pg version integer is supported.
37
31
  def self.sequel_pg_version_supported?(version)
@@ -39,19 +33,6 @@ module Sequel
39
33
  end
40
34
  end
41
35
 
42
- # SEQUEL5: Remove
43
- @use_iso_date_format = true
44
- class << self
45
- def use_iso_date_format
46
- Sequel::Deprecation.deprecate("Sequel::Postgres.use_iso_date_format", "Use the :use_iso_date_format Database option instead")
47
- @use_iso_date_format
48
- end
49
- def use_iso_date_format=(v)
50
- Sequel::Deprecation.deprecate("Sequel::Postgres.use_iso_date_format=", "Use the :use_iso_date_format Database option instead")
51
- @use_iso_date_format = v
52
- end
53
- end
54
-
55
36
  # PGconn subclass for connection specific methods used with the
56
37
  # pg or postgres-pr driver.
57
38
  class Adapter < PGconn
@@ -61,7 +42,7 @@ module Sequel
61
42
  if defined?(::PG::ConnectionBad)
62
43
  DISCONNECT_ERROR_CLASSES << ::PG::ConnectionBad
63
44
  end
64
- #DISCONNECT_ERROR_CLASSES.freeze # SEQUEL5
45
+ DISCONNECT_ERROR_CLASSES.freeze
65
46
 
66
47
  disconnect_errors = [
67
48
  'could not receive data from server',
@@ -89,7 +70,6 @@ module Sequel
89
70
  # Escape bytea values. Uses historical format instead of hex
90
71
  # format for maximum compatibility.
91
72
  def escape_bytea(str)
92
- # each_byte used instead of [] for 1.9 compatibility
93
73
  str.gsub(/[\000-\037\047\134\177-\377]/n){|b| "\\#{sprintf('%o', b.each_byte{|x| break x}).rjust(3, '0')}"}
94
74
  end
95
75
 
@@ -160,15 +140,12 @@ module Sequel
160
140
 
161
141
  private
162
142
 
163
- # Return the PGResult object that is returned by executing the given
164
- # sql and args.
143
+ # Return the PGResult containing the query results.
165
144
  def execute_query(sql, args)
166
145
  @db.log_connection_yield(sql, self, args){args ? async_exec(sql, args) : async_exec(sql)}
167
146
  end
168
147
  end
169
148
 
170
- # Database class for PostgreSQL databases used with Sequel and the
171
- # pg, postgres, or postgres-pr driver.
172
149
  class Database < Sequel::Database
173
150
  include Sequel::Postgres::DatabaseMethods
174
151
 
@@ -185,15 +162,12 @@ module Sequel
185
162
  attr_reader :convert_infinite_timestamps
186
163
 
187
164
  # Convert given argument so that it can be used directly by pg. Currently, pg doesn't
188
- # handle fractional seconds in Time/DateTime or blobs with "\0", and it won't ever
189
- # handle Sequel::SQLTime values correctly. Only public for use by the adapter, shouldn't
190
- # be used by external code.
165
+ # handle fractional seconds in Time/DateTime or blobs with "\0". Only public for use by
166
+ # the adapter, shouldn't be used by external code.
191
167
  def bound_variable_arg(arg, conn)
192
168
  case arg
193
169
  when Sequel::SQL::Blob
194
170
  {:value=>arg, :type=>17, :format=>1}
195
- when Sequel::SQLTime
196
- literal(arg)
197
171
  when DateTime, Time
198
172
  literal(arg)
199
173
  else
@@ -230,7 +204,7 @@ module Sequel
230
204
  conn.set_notice_receiver(&receiver)
231
205
  end
232
206
  else
233
- unless typecast_value_boolean(@opts.fetch(:force_standard_strings, Postgres.instance_variable_get(:@force_standard_strings))) # , true)) # SEQUEL5
207
+ unless typecast_value_boolean(@opts.fetch(:force_standard_strings, true))
234
208
  raise Error, "Cannot create connection using postgres-pr unless force_standard_strings is set"
235
209
  end
236
210
 
@@ -290,7 +264,6 @@ module Sequel
290
264
  add_conversion_proc(1082, pr)
291
265
  end
292
266
 
293
- # Disconnect given connection
294
267
  def disconnect_connection(conn)
295
268
  conn.finish
296
269
  rescue PGError, IOError
@@ -322,7 +295,6 @@ module Sequel
322
295
  end
323
296
  end
324
297
 
325
- # Execute the given SQL with the given args on an available connection.
326
298
  def execute(sql, opts=OPTS, &block)
327
299
  synchronize(opts[:server]){|conn| check_database_errors{_execute(conn, sql, opts, &block)}}
328
300
  end
@@ -524,7 +496,7 @@ module Sequel
524
496
  # Add the primary_keys and primary_key_sequences instance variables,
525
497
  # so we can get the correct return values for inserted rows.
526
498
  def adapter_initialize
527
- @use_iso_date_format = typecast_value_boolean(@opts.fetch(:use_iso_date_format, Postgres.instance_variable_get(:@use_iso_date_format))) # , true)) # SEQUEL5
499
+ @use_iso_date_format = typecast_value_boolean(@opts.fetch(:use_iso_date_format, true))
528
500
  initialize_postgres_adapter
529
501
  add_conversion_proc(17, method(:unescape_bytea)) if USES_PG
530
502
  add_conversion_proc(1082, TYPE_TRANSLATOR.method(:date)) if @use_iso_date_format
@@ -629,7 +601,7 @@ module Sequel
629
601
  end
630
602
 
631
603
  # If the value is an infinite value (either an infinite float or a string returned by
632
- # by PostgreSQL for an infinite timestamp), return it without converting it if
604
+ # by PostgreSQL for an infinite date), return it without converting it if
633
605
  # convert_infinite_timestamps is set.
634
606
  def typecast_value_date(value)
635
607
  if convert_infinite_timestamps
@@ -661,20 +633,9 @@ module Sequel
661
633
  end
662
634
  end
663
635
 
664
- # Dataset class for PostgreSQL datasets that use the pg, postgres, or
665
- # postgres-pr driver.
666
636
  class Dataset < Sequel::Dataset
667
637
  include Sequel::Postgres::DatasetMethods
668
638
 
669
- Database::DatasetClass = self
670
- Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
671
- APOS = "'".freeze
672
- Sequel::Deprecation.deprecate_constant(self, :APOS)
673
- DEFAULT_CURSOR_NAME = 'sequel_cursor'.freeze
674
- Sequel::Deprecation.deprecate_constant(self, :DEFAULT_CURSOR_NAME)
675
-
676
- # Yield all rows returned by executing the given SQL and converting
677
- # the types.
678
639
  def fetch_rows(sql)
679
640
  return cursor_fetch_rows(sql){|h| yield h} if @opts[:cursor]
680
641
  execute(sql){|res| yield_hash_rows(res, fetch_rows_set_cols(res)){|h| yield h}}
@@ -702,8 +663,8 @@ module Sequel
702
663
  # Usage:
703
664
  #
704
665
  # DB[:huge_table].use_cursor.each{|row| p row}
705
- # DB[:huge_table].use_cursor(:rows_per_fetch=>10000).each{|row| p row}
706
- # DB[:huge_table].use_cursor(:cursor_name=>'my_cursor').each{|row| p row}
666
+ # DB[:huge_table].use_cursor(rows_per_fetch: 10000).each{|row| p row}
667
+ # DB[:huge_table].use_cursor(cursor_name: 'my_cursor').each{|row| p row}
707
668
  #
708
669
  # This is untested with the prepared statement/bound variable support,
709
670
  # and unlikely to work with either.
@@ -716,15 +677,14 @@ module Sequel
716
677
  # large dataset by updating individual rows while processing the dataset
717
678
  # via a cursor:
718
679
  #
719
- # DB[:huge_table].use_cursor(:rows_per_fetch=>1).each do |row|
720
- # DB[:huge_table].where_current_of.update(:column=>ruby_method(row))
680
+ # DB[:huge_table].use_cursor(rows_per_fetch: 1).each do |row|
681
+ # DB[:huge_table].where_current_of.update(column: ruby_method(row))
721
682
  # end
722
683
  def where_current_of(cursor_name='sequel_cursor')
723
684
  clone(:where=>Sequel.lit(['CURRENT OF '], Sequel.identifier(cursor_name)))
724
685
  end
725
686
 
726
687
  if USES_PG
727
-
728
688
  PREPARED_ARG_PLACEHOLDER = LiteralString.new('$').freeze
729
689
 
730
690
  # PostgreSQL specific argument mapper used for mapping the named
@@ -789,7 +749,7 @@ module Sequel
789
749
  cursor_name = quote_identifier(cursor[:cursor_name] || 'sequel_cursor')
790
750
  rows_per_fetch = cursor[:rows_per_fetch].to_i
791
751
 
792
- db.send(*(hold ? [:synchronize, server_opts[:server]] : [:transaction, server_opts])) do
752
+ db.public_send(*(hold ? [:synchronize, server_opts[:server]] : [:transaction, server_opts])) do
793
753
  begin
794
754
  execute_ddl("DECLARE #{cursor_name} NO SCROLL CURSOR WITH#{'OUT' unless hold} HOLD FOR #{sql}", server_opts)
795
755
  rows_per_fetch = 1000 if rows_per_fetch <= 0
@@ -869,7 +829,3 @@ if Sequel::Postgres::USES_PG && !ENV['NO_SEQUEL_PG']
869
829
  rescue LoadError
870
830
  end
871
831
  end
872
-
873
- # SEQUEL5: Remove
874
- SEQUEL_POSTGRES_USES_PG = Sequel::Postgres::USES_PG
875
- Sequel::Deprecation.deprecate_constant(Object, :SEQUEL_POSTGRES_USES_PG)
@@ -1,3 +1,3 @@
1
1
  # frozen-string-literal: true
2
2
 
3
- Sequel.require 'adapters/postgres'
3
+ require_relative 'postgres'
@@ -1,6 +1,7 @@
1
1
  # frozen-string-literal: true
2
2
 
3
- Sequel.require %w'emulate_offset_with_reverse_and_count unmodified_identifiers', 'adapters/utils'
3
+ require_relative '../utils/emulate_offset_with_reverse_and_count'
4
+ require_relative '../utils/unmodified_identifiers'
4
5
 
5
6
  module Sequel
6
7
  module Access
@@ -9,7 +10,6 @@ module Sequel
9
10
  module DatabaseMethods
10
11
  include UnmodifiedIdentifiers::DatabaseMethods
11
12
 
12
- # Access uses type :access as the database_type
13
13
  def database_type
14
14
  :access
15
15
  end
@@ -56,7 +56,6 @@ module Sequel
56
56
  DATABASE_ERROR_REGEXPS
57
57
  end
58
58
 
59
- # The SQL to drop an index for the table.
60
59
  def drop_index_sql(table, op)
61
60
  "DROP INDEX #{quote_identifier(op[:name] || default_index_name(table, op[:columns]))} ON #{quote_schema_table(table)}"
62
61
  end
@@ -85,52 +84,12 @@ module Sequel
85
84
  include EmulateOffsetWithReverseAndCount
86
85
  include UnmodifiedIdentifiers::DatasetMethods
87
86
 
88
- EXTRACT_MAP = {:year=>"'yyyy'", :month=>"'m'", :day=>"'d'", :hour=>"'h'", :minute=>"'n'", :second=>"'s'"}#.freeze # SEQUEL5
89
- #EXTRACT_MAP.each_value(&:freeze) # SEQUEL5
90
- OPS = {:'%'=>' Mod '.freeze, :'||'=>' & '.freeze}#.freeze # SEQUEL5
91
- CAST_TYPES = {String=>:CStr, Integer=>:CLng, Date=>:CDate, Time=>:CDate, DateTime=>:CDate, Numeric=>:CDec, BigDecimal=>:CDec, File=>:CStr, Float=>:CDbl, TrueClass=>:CBool, FalseClass=>:CBool}#.freeze # SEQUEL5
92
-
93
- DATE_FORMAT = '#%Y-%m-%d#'.freeze
94
- Sequel::Deprecation.deprecate_constant(self, :DATE_FORMAT)
95
- TIMESTAMP_FORMAT = '#%Y-%m-%d %H:%M:%S#'.freeze
96
- Sequel::Deprecation.deprecate_constant(self, :TIMESTAMP_FORMAT)
97
- TOP = " TOP ".freeze
98
- Sequel::Deprecation.deprecate_constant(self, :TOP)
99
- BRACKET_CLOSE = ']'.freeze
100
- Sequel::Deprecation.deprecate_constant(self, :BRACKET_CLOSE)
101
- BRACKET_OPEN = '['.freeze
102
- Sequel::Deprecation.deprecate_constant(self, :BRACKET_OPEN)
103
- COMMA = ', '.freeze
104
- Sequel::Deprecation.deprecate_constant(self, :COMMA)
105
- PAREN_CLOSE = ')'.freeze
106
- Sequel::Deprecation.deprecate_constant(self, :PAREN_CLOSE)
107
- PAREN_OPEN = '('.freeze
108
- Sequel::Deprecation.deprecate_constant(self, :PAREN_OPEN)
109
- INTO = " INTO ".freeze
110
- Sequel::Deprecation.deprecate_constant(self, :INTO)
111
- FROM = ' FROM '.freeze
112
- Sequel::Deprecation.deprecate_constant(self, :FROM)
113
- SPACE = ' '.freeze
114
- Sequel::Deprecation.deprecate_constant(self, :SPACE)
115
- NOT_EQUAL = ' <> '.freeze
116
- Sequel::Deprecation.deprecate_constant(self, :NOT_EQUAL)
117
- BOOL_FALSE = '0'.freeze
118
- Sequel::Deprecation.deprecate_constant(self, :BOOL_FALSE)
119
- BOOL_TRUE = '-1'.freeze
120
- Sequel::Deprecation.deprecate_constant(self, :BOOL_TRUE)
121
- DATE_FUNCTION = 'Date()'.freeze
122
- Sequel::Deprecation.deprecate_constant(self, :DATE_FUNCTION)
123
- NOW_FUNCTION = 'Now()'.freeze
124
- Sequel::Deprecation.deprecate_constant(self, :NOW_FUNCTION)
125
- TIME_FUNCTION = 'Time()'.freeze
126
- Sequel::Deprecation.deprecate_constant(self, :TIME_FUNCTION)
127
- DATEPART_OPEN = "datepart(".freeze
128
- Sequel::Deprecation.deprecate_constant(self, :DATEPART_OPEN)
129
- EMULATED_FUNCTION_MAP = {:char_length=>:len}
130
- Sequel::Deprecation.deprecate_constant(self, :EMULATED_FUNCTION_MAP)
131
-
132
- # Access doesn't support CASE, but it can be emulated with nested
133
- # IIF function calls.
87
+ EXTRACT_MAP = {:year=>"'yyyy'", :month=>"'m'", :day=>"'d'", :hour=>"'h'", :minute=>"'n'", :second=>"'s'"}.freeze
88
+ EXTRACT_MAP.each_value(&:freeze)
89
+ OPS = {:'%'=>' Mod '.freeze, :'||'=>' & '.freeze}.freeze
90
+ CAST_TYPES = {String=>:CStr, Integer=>:CLng, Date=>:CDate, Time=>:CDate, DateTime=>:CDate, Numeric=>:CDec, BigDecimal=>:CDec, File=>:CStr, Float=>:CDbl, TrueClass=>:CBool, FalseClass=>:CBool}.freeze
91
+
92
+ # Access doesn't support CASE, so emulate it with nested IIF function calls.
134
93
  def case_expression_sql_append(sql, ce)
135
94
  literal_append(sql, ce.with_merged_expression.conditions.reverse.inject(ce.default){|exp,(cond,val)| Sequel::SQL::Function.new(:IIF, cond, val, exp)})
136
95
  end
@@ -189,7 +148,7 @@ module Sequel
189
148
  end
190
149
  end
191
150
 
192
- # Use Date() and Now() for CURRENT_DATE and CURRENT_TIMESTAMP
151
+ # Use Date(), Now(), and Time() for CURRENT_DATE, CURRENT_TIMESTAMP, and CURRENT_TIME
193
152
  def constant_sql_append(sql, constant)
194
153
  case constant
195
154
  when :CURRENT_DATE
@@ -317,7 +276,8 @@ module Sequel
317
276
  end
318
277
  end
319
278
 
320
- # Access uses [] for quoting identifiers
279
+ # Access uses [] for quoting identifiers, and can't handle
280
+ # ] inside identifiers.
321
281
  def quoted_identifier_append(sql, v)
322
282
  sql << '[' << v.to_s << ']'
323
283
  end