sequel 4.49.0 → 5.3.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 (484) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +130 -0
  3. data/README.rdoc +195 -136
  4. data/Rakefile +26 -42
  5. data/bin/sequel +6 -9
  6. data/doc/advanced_associations.rdoc +91 -168
  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/release_notes/5.1.0.txt +31 -0
  29. data/doc/release_notes/5.2.0.txt +33 -0
  30. data/doc/release_notes/5.3.0.txt +121 -0
  31. data/doc/schema_modification.rdoc +78 -64
  32. data/doc/security.rdoc +97 -88
  33. data/doc/sharding.rdoc +43 -30
  34. data/doc/sql.rdoc +53 -65
  35. data/doc/testing.rdoc +4 -5
  36. data/doc/thread_safety.rdoc +2 -4
  37. data/doc/transactions.rdoc +18 -17
  38. data/doc/validations.rdoc +48 -45
  39. data/doc/virtual_rows.rdoc +87 -115
  40. data/lib/sequel/adapters/ado/access.rb +7 -13
  41. data/lib/sequel/adapters/ado/mssql.rb +2 -9
  42. data/lib/sequel/adapters/ado.rb +9 -25
  43. data/lib/sequel/adapters/amalgalite.rb +3 -18
  44. data/lib/sequel/adapters/ibmdb.rb +9 -45
  45. data/lib/sequel/adapters/jdbc/db2.rb +8 -37
  46. data/lib/sequel/adapters/jdbc/derby.rb +4 -50
  47. data/lib/sequel/adapters/jdbc/h2.rb +6 -26
  48. data/lib/sequel/adapters/jdbc/hsqldb.rb +2 -27
  49. data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
  50. data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
  51. data/lib/sequel/adapters/jdbc/mysql.rb +11 -15
  52. data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
  53. data/lib/sequel/adapters/jdbc/postgresql.rb +23 -33
  54. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
  55. data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
  56. data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
  57. data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
  58. data/lib/sequel/adapters/jdbc.rb +18 -74
  59. data/lib/sequel/adapters/mock.rb +4 -30
  60. data/lib/sequel/adapters/mysql.rb +7 -44
  61. data/lib/sequel/adapters/mysql2.rb +5 -23
  62. data/lib/sequel/adapters/odbc/db2.rb +1 -1
  63. data/lib/sequel/adapters/odbc/mssql.rb +4 -12
  64. data/lib/sequel/adapters/odbc/oracle.rb +1 -1
  65. data/lib/sequel/adapters/odbc.rb +0 -19
  66. data/lib/sequel/adapters/oracle.rb +8 -13
  67. data/lib/sequel/adapters/postgres.rb +28 -150
  68. data/lib/sequel/adapters/postgresql.rb +1 -1
  69. data/lib/sequel/adapters/shared/access.rb +11 -51
  70. data/lib/sequel/adapters/shared/db2.rb +3 -61
  71. data/lib/sequel/adapters/shared/mssql.rb +21 -157
  72. data/lib/sequel/adapters/shared/mysql.rb +61 -227
  73. data/lib/sequel/adapters/shared/oracle.rb +13 -41
  74. data/lib/sequel/adapters/shared/postgres.rb +58 -264
  75. data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
  76. data/lib/sequel/adapters/shared/sqlite.rb +22 -101
  77. data/lib/sequel/adapters/sqlanywhere.rb +4 -23
  78. data/lib/sequel/adapters/sqlite.rb +2 -19
  79. data/lib/sequel/adapters/tinytds.rb +5 -15
  80. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
  81. data/lib/sequel/adapters/utils/mysql_mysql2.rb +4 -4
  82. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
  83. data/lib/sequel/adapters/utils/replace.rb +0 -5
  84. data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
  85. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
  86. data/lib/sequel/ast_transformer.rb +3 -94
  87. data/lib/sequel/connection_pool/sharded_single.rb +1 -4
  88. data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
  89. data/lib/sequel/connection_pool/single.rb +0 -2
  90. data/lib/sequel/connection_pool/threaded.rb +94 -110
  91. data/lib/sequel/connection_pool.rb +38 -28
  92. data/lib/sequel/core.rb +42 -101
  93. data/lib/sequel/database/connecting.rb +23 -60
  94. data/lib/sequel/database/dataset.rb +6 -9
  95. data/lib/sequel/database/dataset_defaults.rb +4 -48
  96. data/lib/sequel/database/features.rb +5 -4
  97. data/lib/sequel/database/logging.rb +2 -9
  98. data/lib/sequel/database/misc.rb +36 -55
  99. data/lib/sequel/database/query.rb +8 -13
  100. data/lib/sequel/database/schema_generator.rb +93 -64
  101. data/lib/sequel/database/schema_methods.rb +61 -79
  102. data/lib/sequel/database/transactions.rb +4 -24
  103. data/lib/sequel/database.rb +12 -2
  104. data/lib/sequel/dataset/actions.rb +57 -107
  105. data/lib/sequel/dataset/dataset_module.rb +4 -16
  106. data/lib/sequel/dataset/features.rb +35 -30
  107. data/lib/sequel/dataset/graph.rb +40 -49
  108. data/lib/sequel/dataset/misc.rb +12 -37
  109. data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
  110. data/lib/sequel/dataset/prepared_statements.rb +23 -51
  111. data/lib/sequel/dataset/query.rb +91 -161
  112. data/lib/sequel/dataset/sql.rb +33 -225
  113. data/lib/sequel/dataset.rb +18 -10
  114. data/lib/sequel/deprecated.rb +18 -27
  115. data/lib/sequel/exceptions.rb +1 -17
  116. data/lib/sequel/extensions/_model_pg_row.rb +0 -7
  117. data/lib/sequel/extensions/_pretty_table.rb +1 -3
  118. data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
  119. data/lib/sequel/extensions/connection_expiration.rb +1 -1
  120. data/lib/sequel/extensions/connection_validator.rb +1 -1
  121. data/lib/sequel/extensions/constraint_validations.rb +11 -11
  122. data/lib/sequel/extensions/core_extensions.rb +39 -49
  123. data/lib/sequel/extensions/core_refinements.rb +39 -45
  124. data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
  125. data/lib/sequel/extensions/date_arithmetic.rb +7 -7
  126. data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
  127. data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
  128. data/lib/sequel/extensions/eval_inspect.rb +4 -11
  129. data/lib/sequel/extensions/freeze_datasets.rb +1 -69
  130. data/lib/sequel/extensions/from_block.rb +1 -35
  131. data/lib/sequel/extensions/graph_each.rb +2 -2
  132. data/lib/sequel/extensions/identifier_mangling.rb +9 -19
  133. data/lib/sequel/extensions/implicit_subquery.rb +2 -2
  134. data/lib/sequel/extensions/inflector.rb +4 -4
  135. data/lib/sequel/extensions/migration.rb +27 -43
  136. data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
  137. data/lib/sequel/extensions/null_dataset.rb +2 -8
  138. data/lib/sequel/extensions/pagination.rb +1 -17
  139. data/lib/sequel/extensions/pg_array.rb +20 -189
  140. data/lib/sequel/extensions/pg_extended_date_support.rb +230 -0
  141. data/lib/sequel/extensions/pg_hstore.rb +11 -50
  142. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
  143. data/lib/sequel/extensions/pg_inet.rb +3 -16
  144. data/lib/sequel/extensions/pg_interval.rb +1 -20
  145. data/lib/sequel/extensions/pg_json.rb +7 -27
  146. data/lib/sequel/extensions/pg_loose_count.rb +1 -1
  147. data/lib/sequel/extensions/pg_range.rb +6 -121
  148. data/lib/sequel/extensions/pg_range_ops.rb +1 -3
  149. data/lib/sequel/extensions/pg_row.rb +5 -77
  150. data/lib/sequel/extensions/pg_row_ops.rb +2 -13
  151. data/lib/sequel/extensions/query.rb +3 -4
  152. data/lib/sequel/extensions/round_timestamps.rb +0 -6
  153. data/lib/sequel/extensions/schema_dumper.rb +13 -13
  154. data/lib/sequel/extensions/select_remove.rb +3 -3
  155. data/lib/sequel/extensions/split_array_nil.rb +2 -2
  156. data/lib/sequel/extensions/sql_comments.rb +2 -2
  157. data/lib/sequel/extensions/string_agg.rb +11 -8
  158. data/lib/sequel/extensions/symbol_aref.rb +6 -20
  159. data/lib/sequel/extensions/synchronize_sql.rb +45 -0
  160. data/lib/sequel/model/associations.rb +129 -131
  161. data/lib/sequel/model/base.rb +133 -731
  162. data/lib/sequel/model/default_inflections.rb +1 -1
  163. data/lib/sequel/model/errors.rb +0 -3
  164. data/lib/sequel/model/exceptions.rb +2 -6
  165. data/lib/sequel/model/inflections.rb +1 -26
  166. data/lib/sequel/model/plugins.rb +1 -0
  167. data/lib/sequel/model.rb +27 -62
  168. data/lib/sequel/plugins/active_model.rb +2 -5
  169. data/lib/sequel/plugins/association_dependencies.rb +15 -15
  170. data/lib/sequel/plugins/association_pks.rb +14 -28
  171. data/lib/sequel/plugins/association_proxies.rb +6 -7
  172. data/lib/sequel/plugins/auto_validations.rb +4 -4
  173. data/lib/sequel/plugins/before_after_save.rb +0 -43
  174. data/lib/sequel/plugins/blacklist_security.rb +9 -8
  175. data/lib/sequel/plugins/boolean_readers.rb +3 -3
  176. data/lib/sequel/plugins/boolean_subsets.rb +2 -2
  177. data/lib/sequel/plugins/caching.rb +5 -5
  178. data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
  179. data/lib/sequel/plugins/column_conflicts.rb +2 -2
  180. data/lib/sequel/plugins/column_select.rb +2 -2
  181. data/lib/sequel/plugins/composition.rb +15 -24
  182. data/lib/sequel/plugins/constraint_validations.rb +4 -3
  183. data/lib/sequel/plugins/csv_serializer.rb +13 -20
  184. data/lib/sequel/plugins/dataset_associations.rb +2 -2
  185. data/lib/sequel/plugins/def_dataset_method.rb +5 -5
  186. data/lib/sequel/plugins/defaults_setter.rb +1 -1
  187. data/lib/sequel/plugins/delay_add_association.rb +1 -1
  188. data/lib/sequel/plugins/finder.rb +16 -10
  189. data/lib/sequel/plugins/force_encoding.rb +1 -7
  190. data/lib/sequel/plugins/hook_class_methods.rb +4 -106
  191. data/lib/sequel/plugins/input_transformer.rb +10 -11
  192. data/lib/sequel/plugins/insert_returning_select.rb +1 -9
  193. data/lib/sequel/plugins/instance_filters.rb +5 -5
  194. data/lib/sequel/plugins/instance_hooks.rb +7 -52
  195. data/lib/sequel/plugins/inverted_subsets.rb +3 -1
  196. data/lib/sequel/plugins/json_serializer.rb +19 -19
  197. data/lib/sequel/plugins/lazy_attributes.rb +1 -10
  198. data/lib/sequel/plugins/list.rb +6 -6
  199. data/lib/sequel/plugins/many_through_many.rb +11 -8
  200. data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
  201. data/lib/sequel/plugins/nested_attributes.rb +18 -31
  202. data/lib/sequel/plugins/optimistic_locking.rb +3 -3
  203. data/lib/sequel/plugins/pg_array_associations.rb +8 -2
  204. data/lib/sequel/plugins/pg_row.rb +2 -11
  205. data/lib/sequel/plugins/prepared_statements.rb +13 -66
  206. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
  207. data/lib/sequel/plugins/rcte_tree.rb +7 -7
  208. data/lib/sequel/plugins/serialization.rb +15 -33
  209. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  210. data/lib/sequel/plugins/sharding.rb +2 -8
  211. data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
  212. data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
  213. data/lib/sequel/plugins/static_cache.rb +8 -9
  214. data/lib/sequel/plugins/string_stripper.rb +3 -3
  215. data/lib/sequel/plugins/subclasses.rb +1 -1
  216. data/lib/sequel/plugins/subset_conditions.rb +2 -2
  217. data/lib/sequel/plugins/table_select.rb +2 -2
  218. data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
  219. data/lib/sequel/plugins/timestamps.rb +6 -7
  220. data/lib/sequel/plugins/touch.rb +4 -8
  221. data/lib/sequel/plugins/tree.rb +3 -3
  222. data/lib/sequel/plugins/typecast_on_load.rb +2 -2
  223. data/lib/sequel/plugins/unlimited_update.rb +1 -7
  224. data/lib/sequel/plugins/update_or_create.rb +3 -3
  225. data/lib/sequel/plugins/update_refresh.rb +3 -3
  226. data/lib/sequel/plugins/uuid.rb +7 -11
  227. data/lib/sequel/plugins/validation_class_methods.rb +10 -9
  228. data/lib/sequel/plugins/validation_contexts.rb +4 -4
  229. data/lib/sequel/plugins/validation_helpers.rb +26 -25
  230. data/lib/sequel/plugins/whitelist_security.rb +13 -9
  231. data/lib/sequel/plugins/xml_serializer.rb +24 -25
  232. data/lib/sequel/sql.rb +145 -276
  233. data/lib/sequel/timezones.rb +8 -23
  234. data/lib/sequel/version.rb +2 -2
  235. data/lib/sequel.rb +1 -1
  236. data/spec/adapter_spec.rb +1 -1
  237. data/spec/adapters/db2_spec.rb +2 -103
  238. data/spec/adapters/mssql_spec.rb +89 -68
  239. data/spec/adapters/mysql_spec.rb +111 -478
  240. data/spec/adapters/oracle_spec.rb +1 -9
  241. data/spec/adapters/postgres_spec.rb +459 -664
  242. data/spec/adapters/spec_helper.rb +12 -31
  243. data/spec/adapters/sqlanywhere_spec.rb +2 -77
  244. data/spec/adapters/sqlite_spec.rb +8 -146
  245. data/spec/bin_spec.rb +11 -16
  246. data/spec/core/connection_pool_spec.rb +173 -74
  247. data/spec/core/database_spec.rb +96 -244
  248. data/spec/core/dataset_spec.rb +99 -414
  249. data/spec/core/deprecated_spec.rb +3 -3
  250. data/spec/core/expression_filters_spec.rb +37 -144
  251. data/spec/core/mock_adapter_spec.rb +241 -4
  252. data/spec/core/object_graph_spec.rb +11 -60
  253. data/spec/core/placeholder_literalizer_spec.rb +1 -14
  254. data/spec/core/schema_generator_spec.rb +51 -40
  255. data/spec/core/schema_spec.rb +88 -77
  256. data/spec/core/spec_helper.rb +6 -24
  257. data/spec/core/version_spec.rb +1 -1
  258. data/spec/core_extensions_spec.rb +7 -83
  259. data/spec/core_model_spec.rb +2 -2
  260. data/spec/deprecation_helper.rb +2 -14
  261. data/spec/extensions/accessed_columns_spec.rb +1 -1
  262. data/spec/extensions/active_model_spec.rb +3 -3
  263. data/spec/extensions/after_initialize_spec.rb +1 -1
  264. data/spec/extensions/arbitrary_servers_spec.rb +2 -2
  265. data/spec/extensions/association_dependencies_spec.rb +1 -1
  266. data/spec/extensions/association_pks_spec.rb +30 -92
  267. data/spec/extensions/association_proxies_spec.rb +1 -1
  268. data/spec/extensions/auto_literal_strings_spec.rb +1 -12
  269. data/spec/extensions/auto_validations_spec.rb +1 -1
  270. data/spec/extensions/blacklist_security_spec.rb +1 -1
  271. data/spec/extensions/blank_spec.rb +1 -1
  272. data/spec/extensions/boolean_readers_spec.rb +1 -1
  273. data/spec/extensions/boolean_subsets_spec.rb +1 -1
  274. data/spec/extensions/caching_spec.rb +1 -1
  275. data/spec/extensions/class_table_inheritance_spec.rb +53 -1118
  276. data/spec/extensions/column_conflicts_spec.rb +1 -1
  277. data/spec/extensions/column_select_spec.rb +4 -4
  278. data/spec/extensions/columns_introspection_spec.rb +1 -1
  279. data/spec/extensions/columns_updated_spec.rb +1 -1
  280. data/spec/extensions/composition_spec.rb +8 -30
  281. data/spec/extensions/connection_expiration_spec.rb +3 -3
  282. data/spec/extensions/connection_validator_spec.rb +3 -3
  283. data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
  284. data/spec/extensions/constraint_validations_spec.rb +1 -1
  285. data/spec/extensions/core_refinements_spec.rb +1 -3
  286. data/spec/extensions/csv_serializer_spec.rb +4 -9
  287. data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
  288. data/spec/extensions/dataset_associations_spec.rb +2 -1
  289. data/spec/extensions/dataset_source_alias_spec.rb +1 -1
  290. data/spec/extensions/date_arithmetic_spec.rb +3 -3
  291. data/spec/extensions/def_dataset_method_spec.rb +1 -1
  292. data/spec/extensions/defaults_setter_spec.rb +2 -2
  293. data/spec/extensions/delay_add_association_spec.rb +8 -9
  294. data/spec/extensions/dirty_spec.rb +1 -1
  295. data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
  296. data/spec/extensions/eager_each_spec.rb +2 -2
  297. data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
  298. data/spec/extensions/error_splitter_spec.rb +1 -1
  299. data/spec/extensions/error_sql_spec.rb +1 -1
  300. data/spec/extensions/eval_inspect_spec.rb +1 -1
  301. data/spec/extensions/finder_spec.rb +1 -1
  302. data/spec/extensions/force_encoding_spec.rb +2 -5
  303. data/spec/extensions/freeze_datasets_spec.rb +1 -1
  304. data/spec/extensions/graph_each_spec.rb +5 -5
  305. data/spec/extensions/hook_class_methods_spec.rb +1 -194
  306. data/spec/extensions/identifier_mangling_spec.rb +17 -170
  307. data/spec/extensions/implicit_subquery_spec.rb +1 -5
  308. data/spec/extensions/inflector_spec.rb +1 -1
  309. data/spec/extensions/input_transformer_spec.rb +7 -2
  310. data/spec/extensions/insert_returning_select_spec.rb +1 -1
  311. data/spec/extensions/instance_filters_spec.rb +1 -1
  312. data/spec/extensions/instance_hooks_spec.rb +1 -95
  313. data/spec/extensions/inverted_subsets_spec.rb +1 -1
  314. data/spec/extensions/json_serializer_spec.rb +1 -1
  315. data/spec/extensions/lazy_attributes_spec.rb +1 -7
  316. data/spec/extensions/list_spec.rb +5 -6
  317. data/spec/extensions/looser_typecasting_spec.rb +1 -1
  318. data/spec/extensions/many_through_many_spec.rb +25 -33
  319. data/spec/extensions/migration_spec.rb +12 -2
  320. data/spec/extensions/modification_detection_spec.rb +1 -1
  321. data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
  322. data/spec/extensions/named_timezones_spec.rb +3 -3
  323. data/spec/extensions/nested_attributes_spec.rb +1 -29
  324. data/spec/extensions/null_dataset_spec.rb +1 -11
  325. data/spec/extensions/optimistic_locking_spec.rb +2 -2
  326. data/spec/extensions/pagination_spec.rb +1 -1
  327. data/spec/extensions/pg_array_associations_spec.rb +22 -26
  328. data/spec/extensions/pg_array_ops_spec.rb +1 -1
  329. data/spec/extensions/pg_array_spec.rb +3 -48
  330. data/spec/extensions/pg_enum_spec.rb +1 -1
  331. data/spec/extensions/pg_extended_date_support_spec.rb +122 -0
  332. data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
  333. data/spec/extensions/pg_hstore_spec.rb +22 -31
  334. data/spec/extensions/pg_inet_ops_spec.rb +1 -1
  335. data/spec/extensions/pg_inet_spec.rb +1 -14
  336. data/spec/extensions/pg_interval_spec.rb +3 -13
  337. data/spec/extensions/pg_json_ops_spec.rb +1 -1
  338. data/spec/extensions/pg_json_spec.rb +1 -13
  339. data/spec/extensions/pg_loose_count_spec.rb +1 -1
  340. data/spec/extensions/pg_range_ops_spec.rb +1 -1
  341. data/spec/extensions/pg_range_spec.rb +3 -88
  342. data/spec/extensions/pg_row_ops_spec.rb +1 -1
  343. data/spec/extensions/pg_row_plugin_spec.rb +1 -1
  344. data/spec/extensions/pg_row_spec.rb +1 -44
  345. data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
  346. data/spec/extensions/prepared_statements_safe_spec.rb +7 -7
  347. data/spec/extensions/prepared_statements_spec.rb +13 -48
  348. data/spec/extensions/pretty_table_spec.rb +40 -9
  349. data/spec/extensions/query_spec.rb +1 -12
  350. data/spec/extensions/rcte_tree_spec.rb +23 -34
  351. data/spec/extensions/round_timestamps_spec.rb +1 -5
  352. data/spec/extensions/s_spec.rb +1 -1
  353. data/spec/extensions/schema_caching_spec.rb +1 -1
  354. data/spec/extensions/schema_dumper_spec.rb +43 -32
  355. data/spec/extensions/select_remove_spec.rb +1 -1
  356. data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
  357. data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
  358. data/spec/extensions/serialization_spec.rb +5 -17
  359. data/spec/extensions/server_block_spec.rb +1 -1
  360. data/spec/extensions/server_logging_spec.rb +2 -2
  361. data/spec/extensions/sharding_spec.rb +1 -1
  362. data/spec/extensions/shared_caching_spec.rb +1 -28
  363. data/spec/extensions/single_table_inheritance_spec.rb +2 -5
  364. data/spec/extensions/singular_table_names_spec.rb +1 -1
  365. data/spec/extensions/skip_create_refresh_spec.rb +1 -1
  366. data/spec/extensions/spec_helper.rb +5 -27
  367. data/spec/extensions/split_array_nil_spec.rb +1 -1
  368. data/spec/extensions/split_values_spec.rb +1 -1
  369. data/spec/extensions/sql_comments_spec.rb +1 -1
  370. data/spec/extensions/sql_expr_spec.rb +1 -1
  371. data/spec/extensions/static_cache_spec.rb +1 -1
  372. data/spec/extensions/string_agg_spec.rb +2 -2
  373. data/spec/extensions/string_date_time_spec.rb +1 -1
  374. data/spec/extensions/string_stripper_spec.rb +1 -1
  375. data/spec/extensions/subclasses_spec.rb +1 -1
  376. data/spec/extensions/subset_conditions_spec.rb +1 -1
  377. data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
  378. data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
  379. data/spec/extensions/synchronize_sql_spec.rb +124 -0
  380. data/spec/extensions/table_select_spec.rb +4 -4
  381. data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
  382. data/spec/extensions/thread_local_timezones_spec.rb +1 -1
  383. data/spec/extensions/timestamps_spec.rb +5 -7
  384. data/spec/extensions/to_dot_spec.rb +1 -1
  385. data/spec/extensions/touch_spec.rb +1 -1
  386. data/spec/extensions/tree_spec.rb +1 -1
  387. data/spec/extensions/typecast_on_load_spec.rb +1 -1
  388. data/spec/extensions/unlimited_update_spec.rb +1 -1
  389. data/spec/extensions/update_or_create_spec.rb +12 -16
  390. data/spec/extensions/update_primary_key_spec.rb +4 -3
  391. data/spec/extensions/update_refresh_spec.rb +1 -1
  392. data/spec/extensions/uuid_spec.rb +10 -13
  393. data/spec/extensions/validate_associated_spec.rb +1 -1
  394. data/spec/extensions/validation_class_methods_spec.rb +3 -3
  395. data/spec/extensions/validation_contexts_spec.rb +1 -1
  396. data/spec/extensions/validation_helpers_spec.rb +10 -44
  397. data/spec/extensions/whitelist_security_spec.rb +5 -5
  398. data/spec/extensions/xml_serializer_spec.rb +8 -13
  399. data/spec/guards_helper.rb +2 -1
  400. data/spec/integration/associations_test.rb +1 -23
  401. data/spec/integration/database_test.rb +7 -7
  402. data/spec/integration/dataset_test.rb +12 -47
  403. data/spec/integration/eager_loader_test.rb +1 -1
  404. data/spec/integration/migrator_test.rb +1 -1
  405. data/spec/integration/model_test.rb +4 -82
  406. data/spec/integration/plugin_test.rb +7 -23
  407. data/spec/integration/prepared_statement_test.rb +8 -88
  408. data/spec/integration/schema_test.rb +10 -10
  409. data/spec/integration/spec_helper.rb +17 -21
  410. data/spec/integration/timezone_test.rb +5 -5
  411. data/spec/integration/transaction_test.rb +3 -55
  412. data/spec/integration/type_test.rb +9 -9
  413. data/spec/model/association_reflection_spec.rb +24 -9
  414. data/spec/model/associations_spec.rb +124 -303
  415. data/spec/model/base_spec.rb +43 -137
  416. data/spec/model/class_dataset_methods_spec.rb +2 -20
  417. data/spec/model/dataset_methods_spec.rb +1 -20
  418. data/spec/model/eager_loading_spec.rb +48 -17
  419. data/spec/model/hooks_spec.rb +5 -300
  420. data/spec/model/inflector_spec.rb +1 -1
  421. data/spec/model/model_spec.rb +29 -339
  422. data/spec/model/plugins_spec.rb +2 -16
  423. data/spec/model/record_spec.rb +33 -129
  424. data/spec/model/spec_helper.rb +5 -15
  425. data/spec/model/validations_spec.rb +1 -1
  426. data/spec/sequel_warning.rb +1 -12
  427. metadata +19 -65
  428. data/doc/active_record.rdoc +0 -927
  429. data/lib/sequel/adapters/cubrid.rb +0 -160
  430. data/lib/sequel/adapters/do/mysql.rb +0 -69
  431. data/lib/sequel/adapters/do/postgres.rb +0 -46
  432. data/lib/sequel/adapters/do/sqlite3.rb +0 -41
  433. data/lib/sequel/adapters/do.rb +0 -166
  434. data/lib/sequel/adapters/jdbc/as400.rb +0 -92
  435. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
  436. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
  437. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
  438. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
  439. data/lib/sequel/adapters/odbc/progress.rb +0 -12
  440. data/lib/sequel/adapters/shared/cubrid.rb +0 -245
  441. data/lib/sequel/adapters/shared/firebird.rb +0 -261
  442. data/lib/sequel/adapters/shared/informix.rb +0 -63
  443. data/lib/sequel/adapters/shared/progress.rb +0 -40
  444. data/lib/sequel/adapters/swift/mysql.rb +0 -50
  445. data/lib/sequel/adapters/swift/postgres.rb +0 -49
  446. data/lib/sequel/adapters/swift/sqlite.rb +0 -48
  447. data/lib/sequel/adapters/swift.rb +0 -169
  448. data/lib/sequel/adapters/utils/pg_types.rb +0 -4
  449. data/lib/sequel/dataset/mutation.rb +0 -98
  450. data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
  451. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
  452. data/lib/sequel/extensions/filter_having.rb +0 -65
  453. data/lib/sequel/extensions/hash_aliases.rb +0 -51
  454. data/lib/sequel/extensions/meta_def.rb +0 -37
  455. data/lib/sequel/extensions/query_literals.rb +0 -86
  456. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
  457. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
  458. data/lib/sequel/extensions/set_overrides.rb +0 -82
  459. data/lib/sequel/no_core_ext.rb +0 -4
  460. data/lib/sequel/plugins/association_autoreloading.rb +0 -11
  461. data/lib/sequel/plugins/identifier_columns.rb +0 -49
  462. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
  463. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
  464. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
  465. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
  466. data/lib/sequel/plugins/schema.rb +0 -84
  467. data/lib/sequel/plugins/scissors.rb +0 -37
  468. data/spec/core/dataset_mutation_spec.rb +0 -253
  469. data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
  470. data/spec/extensions/before_after_save_spec.rb +0 -40
  471. data/spec/extensions/filter_having_spec.rb +0 -42
  472. data/spec/extensions/from_block_spec.rb +0 -21
  473. data/spec/extensions/hash_aliases_spec.rb +0 -26
  474. data/spec/extensions/identifier_columns_spec.rb +0 -19
  475. data/spec/extensions/meta_def_spec.rb +0 -35
  476. data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
  477. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
  478. data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
  479. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
  480. data/spec/extensions/query_literals_spec.rb +0 -185
  481. data/spec/extensions/schema_spec.rb +0 -123
  482. data/spec/extensions/scissors_spec.rb +0 -27
  483. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
  484. data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -5,7 +5,7 @@
5
5
  #
6
6
  # This extension integrates with Sequel's native postgres and jdbc/postgresql
7
7
  # adapters, so that when inet/cidr fields are retrieved, they are returned as
8
- # IPAddr instances
8
+ # IPAddr instances.
9
9
  #
10
10
  # To use this extension, load it into your database:
11
11
  #
@@ -29,7 +29,6 @@
29
29
  # Related module: Sequel::Postgres::InetDatabaseMethods
30
30
 
31
31
  require 'ipaddr'
32
- Sequel.require 'adapters/shared/postgres'
33
32
 
34
33
  module Sequel
35
34
  module Postgres
@@ -39,7 +38,7 @@ module Sequel
39
38
  # it will pick up the inet/cidr converter. Also, extend the datasets
40
39
  # with support for literalizing the IPAddr types.
41
40
  def self.extended(db)
42
- db.instance_eval do
41
+ db.instance_exec do
43
42
  extend_datasets(InetDatasetMethods)
44
43
  meth = IPAddr.method(:new)
45
44
  add_conversion_proc(869, meth)
@@ -47,7 +46,7 @@ module Sequel
47
46
  if respond_to?(:register_array_type)
48
47
  register_array_type('inet', :oid=>1041, :scalar_oid=>869)
49
48
  register_array_type('cidr', :oid=>651, :scalar_oid=>650)
50
- register_array_type('macaddr', :oid=>1040)
49
+ register_array_type('macaddr', :oid=>1040, :scalar_oid=>829)
51
50
  end
52
51
  @schema_type_classes[:ipaddr] = IPAddr
53
52
  end
@@ -112,18 +111,6 @@ module Sequel
112
111
  end
113
112
  end
114
113
  end
115
-
116
- # SEQUEL5: Remove
117
- meth = IPAddr.method(:new)
118
- PG__TYPES[869] = PG__TYPES[650] = lambda do |s|
119
- Sequel::Deprecation.deprecate("Conversion proc for inet/cidr added globally by pg_inet extension", "Load the pg_inet extension into the Database instance")
120
- IPAddr.new(s)
121
- end
122
- if defined?(PGArray) && PGArray.respond_to?(:register)
123
- PGArray.register('inet', :oid=>1041, :scalar_oid=>869, :skip_deprecation_warning=>true)
124
- PGArray.register('cidr', :oid=>651, :scalar_oid=>650, :skip_deprecation_warning=>true)
125
- PGArray.register('macaddr', :oid=>1040, :skip_deprecation_warning=>true)
126
- end
127
114
  end
128
115
 
129
116
  Database.register_extension(:pg_inet, Postgres::InetDatabaseMethods)
@@ -33,13 +33,10 @@
33
33
  # Related module: Sequel::Postgres::IntervalDatabaseMethods
34
34
 
35
35
  require 'active_support/duration'
36
- Sequel.require 'adapters/shared/postgres'
37
36
 
38
37
  module Sequel
39
38
  module Postgres
40
39
  module IntervalDatabaseMethods
41
- EMPTY_INTERVAL = '0'.freeze
42
- Sequel::Deprecation.deprecate_constant(self, :EMPTY_INTERVAL)
43
40
  DURATION_UNITS = [:years, :months, :weeks, :days, :hours, :minutes, :seconds].freeze
44
41
 
45
42
  # Return an unquoted string version of the duration object suitable for
@@ -64,10 +61,6 @@ module Sequel
64
61
 
65
62
  # Creates callable objects that convert strings into ActiveSupport::Duration instances.
66
63
  class Parser
67
- # Regexp that parses the full range of PostgreSQL interval type output.
68
- PARSER = /\A([+-]?\d+ years?\s?)?([+-]?\d+ mons?\s?)?([+-]?\d+ days?\s?)?(?:(?:([+-])?(\d{2,10}):(\d\d):(\d\d(\.\d+)?))|([+-]?\d+ hours?\s?)?([+-]?\d+ mins?\s?)?([+-]?\d+(\.\d+)? secs?\s?)?)?\z/
69
- Sequel::Deprecation.deprecate_constant(self, :PARSER)
70
-
71
64
  # Parse the interval input string into an ActiveSupport::Duration instance.
72
65
  def call(string)
73
66
  raise(InvalidValue, "invalid or unhandled interval format: #{string.inspect}") unless matches = /\A([+-]?\d+ years?\s?)?([+-]?\d+ mons?\s?)?([+-]?\d+ days?\s?)?(?:(?:([+-])?(\d{2,10}):(\d\d):(\d\d(\.\d+)?))|([+-]?\d+ hours?\s?)?([+-]?\d+ mins?\s?)?([+-]?\d+(\.\d+)? secs?\s?)?)?\z/.match(string)
@@ -121,7 +114,7 @@ module Sequel
121
114
  # Reset the conversion procs if using the native postgres adapter,
122
115
  # and extend the datasets to correctly literalize ActiveSupport::Duration values.
123
116
  def self.extended(db)
124
- db.instance_eval do
117
+ db.instance_exec do
125
118
  extend_datasets(IntervalDatasetMethods)
126
119
  add_conversion_proc(1186, Postgres::IntervalDatabaseMethods::PARSER)
127
120
  if respond_to?(:register_array_type)
@@ -175,9 +168,6 @@ module Sequel
175
168
  end
176
169
 
177
170
  module IntervalDatasetMethods
178
- CAST_INTERVAL = '::interval'.freeze
179
- Sequel::Deprecation.deprecate_constant(self, :CAST_INTERVAL)
180
-
181
171
  # Handle literalization of ActiveSupport::Duration objects, treating them as
182
172
  # PostgreSQL intervals.
183
173
  def literal_other_append(sql, v)
@@ -190,15 +180,6 @@ module Sequel
190
180
  end
191
181
  end
192
182
  end
193
-
194
- # SEQUEL5: Remove
195
- PG__TYPES[1186] = lambda do |s|
196
- Sequel::Deprecation.deprecate("Conversion proc for interval added globally by pg_interval extension", "Load the pg_interval extension into the Database instance")
197
- Postgres::IntervalDatabaseMethods::PARSER.call(s)
198
- end
199
- if defined?(PGArray) && PGArray.respond_to?(:register)
200
- PGArray.register('interval', :oid=>1187, :scalar_oid=>1186, :skip_deprecation_warning=>true)
201
- end
202
183
  end
203
184
 
204
185
  Database.register_extension(:pg_interval, Postgres::IntervalDatabaseMethods)
@@ -8,7 +8,7 @@
8
8
  # PostgreSQL json values that are not arrays or objects, but support
9
9
  # is fairly limited and the values do not roundtrip.
10
10
  #
11
- # This extension integrates with Sequel's native postgres adapter, so
11
+ # This extension integrates with Sequel's native postgres and jdbc/postgresql adapters, so
12
12
  # that when json fields are retrieved, they are parsed and returned
13
13
  # as instances of Sequel::Postgres::JSONArray or
14
14
  # Sequel::Postgres::JSONHash (or JSONBArray or JSONBHash for jsonb
@@ -35,8 +35,8 @@
35
35
  #
36
36
  # So if you want to insert an array or hash into an json database column:
37
37
  #
38
- # DB[:table].insert(:column=>Sequel.pg_json([1, 2, 3]))
39
- # DB[:table].insert(:column=>Sequel.pg_json({'a'=>1, 'b'=>2}))
38
+ # DB[:table].insert(column: Sequel.pg_json([1, 2, 3]))
39
+ # DB[:table].insert(column: Sequel.pg_json({'a'=>1, 'b'=>2}))
40
40
  #
41
41
  # To use this extension, please load it into the Database instance:
42
42
  #
@@ -62,15 +62,9 @@
62
62
 
63
63
  require 'delegate'
64
64
  require 'json'
65
- Sequel.require 'adapters/shared/postgres'
66
65
 
67
66
  module Sequel
68
67
  module Postgres
69
- CAST_JSON = '::json'.freeze
70
- Sequel::Deprecation.deprecate_constant(self, :CAST_JSON)
71
- CAST_JSONB = '::jsonb'.freeze
72
- Sequel::Deprecation.deprecate_constant(self, :CAST_JSONB)
73
-
74
68
  # Class representing PostgreSQL JSON/JSONB column array values.
75
69
  class JSONArrayBase < DelegateClass(Array)
76
70
  include Sequel::SQL::AliasMethods
@@ -133,7 +127,7 @@ module Sequel
133
127
  # Methods enabling Database object integration with the json type.
134
128
  module JSONDatabaseMethods
135
129
  def self.extended(db)
136
- db.instance_eval do
130
+ db.instance_exec do
137
131
  add_conversion_proc(114, JSONDatabaseMethods.method(:db_parse_json))
138
132
  add_conversion_proc(3802, JSONDatabaseMethods.method(:db_parse_jsonb))
139
133
  if respond_to?(:register_array_type)
@@ -186,7 +180,7 @@ module Sequel
186
180
  end
187
181
  end
188
182
 
189
- # Handle JSONArray and JSONHash in bound variables
183
+ # Handle json and jsonb types in bound variables
190
184
  def bound_variable_arg(arg, conn)
191
185
  case arg
192
186
  when JSONArrayBase, JSONHashBase
@@ -198,7 +192,7 @@ module Sequel
198
192
 
199
193
  private
200
194
 
201
- # Handle json[] types in bound variables.
195
+ # Handle json[] and jsonb[] types in bound variables.
202
196
  def bound_variable_array(a)
203
197
  case a
204
198
  when JSONHashBase, JSONArrayBase
@@ -208,7 +202,7 @@ module Sequel
208
202
  end
209
203
  end
210
204
 
211
- # Make the column type detection recognize the json type.
205
+ # Make the column type detection recognize the json types.
212
206
  def schema_column_type(db_type)
213
207
  case db_type
214
208
  when 'json'
@@ -260,20 +254,6 @@ module Sequel
260
254
  end
261
255
  end
262
256
  end
263
-
264
- # SEQUEL5: Remove
265
- PG__TYPES[114] = lambda do |s|
266
- Sequel::Deprecation.deprecate("Conversion proc for json added globally by pg_json extension", "Load the pg_json extension into the Database instance")
267
- JSONDatabaseMethods.db_parse_json(s)
268
- end
269
- PG__TYPES[3802] = lambda do |s|
270
- Sequel::Deprecation.deprecate("Conversion proc for jsonb added globally by pg_json extension", "Load the pg_json extension into the Database instance")
271
- JSONDatabaseMethods.db_parse_jsonb(s)
272
- end
273
- if defined?(PGArray) && PGArray.respond_to?(:register)
274
- PGArray.register('json', :oid=>199, :scalar_oid=>114, :skip_deprecation_warning=>true)
275
- PGArray.register('jsonb', :oid=>3807, :scalar_oid=>3802, :skip_deprecation_warning=>true)
276
- end
277
257
  end
278
258
 
279
259
  module SQL::Builders
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # It can also support schema qualified tables:
10
10
  #
11
- # DB.loose_count(:schema__table) # => 123456
11
+ # DB.loose_count(Sequel[:schema][:table]) # => 123456
12
12
  #
13
13
  # How accurate this count is depends on the number of rows
14
14
  # added/deleted from the table since the last time it was
@@ -70,97 +70,13 @@
70
70
  #
71
71
  # Related module: Sequel::Postgres::PGRange
72
72
 
73
- Sequel.require 'adapters/shared/postgres'
74
-
75
73
  module Sequel
76
74
  module Postgres
77
75
  class PGRange
78
76
  include Sequel::SQL::AliasMethods
79
77
 
80
- # SEQUEL5: Remove
81
- RANGE_TYPES = {}
82
-
83
- EMPTY = 'empty'.freeze
84
- Sequel::Deprecation.deprecate_constant(self, :EMPTY)
85
- EMPTY_STRING = ''.freeze
86
- Sequel::Deprecation.deprecate_constant(self, :EMPTY_STRING)
87
- COMMA = ','.freeze
88
- Sequel::Deprecation.deprecate_constant(self, :COMMA)
89
- QUOTED_EMPTY_STRING = '""'.freeze
90
- Sequel::Deprecation.deprecate_constant(self, :QUOTED_EMPTY_STRING)
91
- OPEN_PAREN = "(".freeze
92
- Sequel::Deprecation.deprecate_constant(self, :OPEN_PAREN)
93
- CLOSE_PAREN = ")".freeze
94
- Sequel::Deprecation.deprecate_constant(self, :CLOSE_PAREN)
95
- OPEN_BRACKET = "[".freeze
96
- Sequel::Deprecation.deprecate_constant(self, :OPEN_BRACKET)
97
- CLOSE_BRACKET = "]".freeze
98
- Sequel::Deprecation.deprecate_constant(self, :CLOSE_BRACKET)
99
- ESCAPE_RE = /("|,|\\|\[|\]|\(|\))/.freeze
100
- Sequel::Deprecation.deprecate_constant(self, :ESCAPE_RE)
101
- ESCAPE_REPLACE = '\\\\\1'.freeze
102
- Sequel::Deprecation.deprecate_constant(self, :ESCAPE_REPLACE)
103
- CAST = '::'.freeze
104
- Sequel::Deprecation.deprecate_constant(self, :CAST)
105
-
106
- # SEQUEL5: Remove
107
- def self.register(db_type, opts=OPTS, &block)
108
- Sequel::Deprecation.deprecate("Sequel::Postgres::PGRange.register", "Use Database#register_range_type on a Database instance using the pg_range extension") unless opts[:skip_deprecation_warning]
109
- db_type = db_type.to_s.dup.freeze
110
-
111
- type_procs = opts[:type_procs] || PG__TYPES
112
- mod = opts[:typecast_methods_module] || DatabaseMethods
113
- typecast_method_map = opts[:typecast_method_map] || RANGE_TYPES
114
-
115
- if converter = opts[:converter]
116
- raise Error, "can't provide both a block and :converter option to register" if block
117
- else
118
- converter = block
119
- end
120
-
121
- if soid = opts[:subtype_oid]
122
- raise Error, "can't provide both a converter and :subtype_oid option to register" if converter
123
- raise Error, "no conversion proc for :subtype_oid=>#{soid.inspect} in PG_TYPES" unless converter = type_procs[soid]
124
- end
125
-
126
- parser = Parser.new(db_type, converter)
127
-
128
- typecast_method_map[db_type] = db_type.to_sym
129
-
130
- define_range_typecast_method(mod, db_type, parser)
131
-
132
- if oid = opts[:oid]
133
- if opts[:skip_deprecation_warning]
134
- def parser.call(s)
135
- Sequel::Deprecation.deprecate("Conversion proc for #{db_type} added globally by pg_range extension", "Load the pg_range extension into the Database instance")
136
- super
137
- end
138
- end
139
- type_procs[oid] = parser
140
- end
141
-
142
- nil
143
- end
144
-
145
- # SEQUEL5: Remove
146
- def self.define_range_typecast_method(mod, type, parser)
147
- mod.class_eval do
148
- meth = :"typecast_value_#{type}"
149
- define_method(meth){|v| typecast_value_pg_range(v, parser)}
150
- private meth
151
- end
152
- end
153
- private_class_method :define_range_typecast_method
154
-
155
78
  # Creates callable objects that convert strings into PGRange instances.
156
79
  class Parser
157
- PARSER = /\A(\[|\()("((?:\\"|[^"])*)"|[^"]*),("((?:\\"|[^"])*)"|[^"]*)(\]|\))\z/
158
- Sequel::Deprecation.deprecate_constant(self, :PARSER)
159
- REPLACE_RE = /\\(.)/.freeze
160
- Sequel::Deprecation.deprecate_constant(self, :REPLACE_RE)
161
- REPLACE_WITH = '\1'.freeze
162
- Sequel::Deprecation.deprecate_constant(self, :REPLACE_WITH)
163
-
164
80
  # The database range type for this parser (e.g. 'int4range'),
165
81
  # automatically setting the db_type for the returned PGRange instances.
166
82
  attr_reader :db_type
@@ -215,10 +131,10 @@ module Sequel
215
131
  end
216
132
 
217
133
  module DatabaseMethods
218
- # Reset the conversion procs if using the native postgres adapter,
134
+ # Add the conversion procs to the database
219
135
  # and extend the datasets to correctly literalize ruby Range values.
220
136
  def self.extended(db)
221
- db.instance_eval do
137
+ db.instance_exec do
222
138
  @pg_range_schema_types ||= {}
223
139
  extend_datasets(DatasetMethods)
224
140
  register_range_type('int4range', :oid=>3904, :subtype_oid=>23)
@@ -315,14 +231,13 @@ module Sequel
315
231
 
316
232
  @pg_range_schema_types[db_type] = db_type.to_sym
317
233
 
318
- (class << self; self end).class_eval do
234
+ singleton_class.class_eval do
319
235
  meth = :"typecast_value_#{db_type}"
320
236
  define_method(meth){|v| typecast_value_pg_range(v, parser)}
321
237
  private meth
322
238
  end
323
239
 
324
240
  @schema_type_classes[:"#{opts[:type_symbol] || db_type}"] = PGRange
325
- conversion_procs_updated # SEQUEL5: Remove
326
241
  nil
327
242
  end
328
243
 
@@ -338,23 +253,9 @@ module Sequel
338
253
  end
339
254
  end
340
255
 
341
- # SEQUEL5: Remove
342
- def get_conversion_procs
343
- procs = super
344
-
345
- procs[3908] = Parser.new("tsrange", procs[1114])
346
- procs[3910] = Parser.new("tstzrange", procs[1184])
347
- if defined?(PGArray::Creator)
348
- procs[3909] = PGArray::Creator.new("tsrange", procs[3908])
349
- procs[3911] = PGArray::Creator.new("tstzrange", procs[3910])
350
- end
351
-
352
- procs
353
- end
354
-
355
256
  # Recognize the registered database range types.
356
257
  def schema_column_type(db_type)
357
- if type = @pg_range_schema_types[db_type] || RANGE_TYPES[db_type] # SEQUEL5: Remove || RANGE_TYPES[db_type]
258
+ if type = @pg_range_schema_types[db_type]
358
259
  type
359
260
  else
360
261
  super
@@ -451,9 +352,9 @@ module Sequel
451
352
  def cover?(value)
452
353
  return false if empty?
453
354
  b = self.begin
454
- return false if b && b.send(exclude_begin? ? :>= : :>, value)
355
+ return false if b && b.public_send(exclude_begin? ? :>= : :>, value)
455
356
  e = self.end
456
- return false if e && e.send(exclude_end? ? :<= : :<, value)
357
+ return false if e && e.public_send(exclude_end? ? :<= : :<, value)
457
358
  true
458
359
  end
459
360
 
@@ -601,22 +502,6 @@ module Sequel
601
502
  end
602
503
  end
603
504
  end
604
-
605
- # SEQUEL5: Remove
606
- PGRange.register('int4range', :oid=>3904, :subtype_oid=>23, :skip_deprecation_warning=>true)
607
- PGRange.register('numrange', :oid=>3906, :subtype_oid=>1700, :skip_deprecation_warning=>true)
608
- PGRange.register('tsrange', :oid=>3908, :subtype_oid=>1114, :skip_deprecation_warning=>true)
609
- PGRange.register('tstzrange', :oid=>3910, :subtype_oid=>1184, :skip_deprecation_warning=>true)
610
- PGRange.register('daterange', :oid=>3912, :subtype_oid=>1082, :skip_deprecation_warning=>true)
611
- PGRange.register('int8range', :oid=>3926, :subtype_oid=>20, :skip_deprecation_warning=>true)
612
- if defined?(PGArray) && PGArray.respond_to?(:register)
613
- PGArray.register('int4range', :oid=>3905, :scalar_oid=>3904, :scalar_typecast=>:int4range, :skip_deprecation_warning=>true)
614
- PGArray.register('numrange', :oid=>3907, :scalar_oid=>3906, :scalar_typecast=>:numrange, :skip_deprecation_warning=>true)
615
- PGArray.register('tsrange', :oid=>3909, :scalar_oid=>3908, :scalar_typecast=>:tsrange, :skip_deprecation_warning=>true)
616
- PGArray.register('tstzrange', :oid=>3911, :scalar_oid=>3910, :scalar_typecast=>:tstzrange, :skip_deprecation_warning=>true)
617
- PGArray.register('daterange', :oid=>3913, :scalar_oid=>3912, :scalar_typecast=>:daterange, :skip_deprecation_warning=>true)
618
- PGArray.register('int8range', :oid=>3927, :scalar_oid=>3926, :scalar_typecast=>:int8range, :skip_deprecation_warning=>true)
619
- end
620
505
  end
621
506
 
622
507
  module SQL::Builders
@@ -75,9 +75,7 @@ module Sequel
75
75
  :starts_after => ["(".freeze, " &> ".freeze, ")".freeze].freeze,
76
76
  :adjacent_to => ["(".freeze, " -|- ".freeze, ")".freeze].freeze,
77
77
  :overlaps => ["(".freeze, " && ".freeze, ")".freeze].freeze,
78
- }#.freeze # SEQUEL5
79
- FUNCTIONS = %w'lower upper isempty lower_inc upper_inc lower_inf upper_inf'
80
- Sequel::Deprecation.deprecate_constant(self, :FUNCTIONS)
78
+ }.freeze
81
79
 
82
80
  %w'lower upper isempty lower_inc upper_inc lower_inf upper_inf'.each do |f|
83
81
  class_eval("def #{f}; function(:#{f}) end", __FILE__, __LINE__)
@@ -64,12 +64,12 @@
64
64
  #
65
65
  # You can also use a hash:
66
66
  #
67
- # DB.row_type(:address, :street=>'123 Sesame St.', :city=>'Some City', :zip=>'12345')
67
+ # DB.row_type(:address, street: '123 Sesame St.', city: 'Some City', zip: '12345')
68
68
  #
69
69
  # So if you have a person table that has an address column, here's how you
70
70
  # could insert into the column:
71
71
  #
72
- # DB[:table].insert(:address=>DB.row_type(:address, :street=>'123 Sesame St.', :city=>'Some City', :zip=>'12345'))
72
+ # DB[:table].insert(address: DB.row_type(:address, street: '123 Sesame St.', city: 'Some City', zip: '12345'))
73
73
  #
74
74
  # Note that registering row types without providing an explicit :converter option
75
75
  # creates anonymous classes. This results in ruby being unable to Marshal such
@@ -88,16 +88,10 @@
88
88
 
89
89
  require 'delegate'
90
90
  require 'strscan'
91
- Sequel.require 'adapters/shared/postgres'
92
91
 
93
92
  module Sequel
94
93
  module Postgres
95
94
  module PGRow
96
- ROW = 'ROW'.freeze
97
- Sequel::Deprecation.deprecate_constant(self, :ROW)
98
- CAST = '::'.freeze
99
- Sequel::Deprecation.deprecate_constant(self, :CAST)
100
-
101
95
  # Class for row-valued/composite types that are treated as arrays. By default,
102
96
  # this is only used for generic PostgreSQL record types, as registered
103
97
  # types use HashRow by default.
@@ -216,7 +210,7 @@ module Sequel
216
210
  end
217
211
  end
218
212
 
219
- ROW_TYPE_CLASSES = [HashRow, ArrayRow]#.freeze # SEQUEL5
213
+ ROW_TYPE_CLASSES = [HashRow, ArrayRow].freeze
220
214
 
221
215
  # This parser-like class splits the PostgreSQL
222
216
  # row-valued/composite type output string format
@@ -225,25 +219,6 @@ module Sequel
225
219
  # will accept, it only handles the output format that
226
220
  # PostgreSQL uses.
227
221
  class Splitter < StringScanner
228
- OPEN_PAREN = /\(/.freeze
229
- Sequel::Deprecation.deprecate_constant(self, :OPEN_PAREN)
230
- CLOSE_PAREN = /\)/.freeze
231
- Sequel::Deprecation.deprecate_constant(self, :CLOSE_PAREN)
232
- UNQUOTED_RE = /[^,)]*/.freeze
233
- Sequel::Deprecation.deprecate_constant(self, :UNQUOTED_RE)
234
- SEP_RE = /[,)]/.freeze
235
- Sequel::Deprecation.deprecate_constant(self, :SEP_RE)
236
- QUOTE_RE = /"/.freeze
237
- Sequel::Deprecation.deprecate_constant(self, :QUOTE_RE)
238
- QUOTE_SEP_RE = /"[,)]/.freeze
239
- Sequel::Deprecation.deprecate_constant(self, :QUOTE_SEP_RE)
240
- QUOTED_RE = /(\\.|""|[^"])*/.freeze
241
- Sequel::Deprecation.deprecate_constant(self, :QUOTED_RE)
242
- REPLACE_RE = /\\(.)|"(")/.freeze
243
- Sequel::Deprecation.deprecate_constant(self, :REPLACE_RE)
244
- REPLACE_WITH = '\1\2'.freeze
245
- Sequel::Deprecation.deprecate_constant(self, :REPLACE_WITH)
246
-
247
222
  # Split the stored string into an array of strings, handling
248
223
  # the different types of quoting.
249
224
  def parse
@@ -387,13 +362,6 @@ module Sequel
387
362
  end
388
363
 
389
364
  module DatabaseMethods
390
- ESCAPE_RE = /("|\\)/.freeze
391
- Sequel::Deprecation.deprecate_constant(self, :ESCAPE_RE)
392
- ESCAPE_REPLACEMENT = '\\\\\1'.freeze
393
- Sequel::Deprecation.deprecate_constant(self, :ESCAPE_REPLACEMENT)
394
- COMMA = ','.freeze
395
- Sequel::Deprecation.deprecate_constant(self, :COMMA)
396
-
397
365
  # A hash mapping row type keys (usually symbols), to option
398
366
  # hashes. At the least, the values will contain the :parser
399
367
  # option for the Parser instance that the type will use.
@@ -401,7 +369,7 @@ module Sequel
401
369
 
402
370
  # Do some setup for the data structures the module uses.
403
371
  def self.extended(db)
404
- db.instance_eval do
372
+ db.instance_exec do
405
373
  @row_types = {}
406
374
  @row_schema_types = {}
407
375
  extend(@row_type_method_module = Module.new)
@@ -433,8 +401,6 @@ module Sequel
433
401
  super
434
402
  end
435
403
 
436
- STRING_TYPES = [18, 19, 25, 1042, 1043].freeze
437
-
438
404
  # Register a new row type for the Database instance. db_type should be the type
439
405
  # symbol. This parses the PostgreSQL system tables to get information the
440
406
  # composite type, and by default has the type return instances of a subclass
@@ -487,23 +453,7 @@ module Sequel
487
453
 
488
454
  # Using the conversion_procs, lookup converters for each member of the composite type
489
455
  parser_opts[:column_converters] = parser_opts[:column_oids].map do |oid|
490
- # procs[oid] # SEQUEL5
491
-
492
- # SEQUEL5: Remove
493
- if pr = procs[oid]
494
- pr
495
- elsif !STRING_TYPES.include?(oid)
496
- # It's not a string type, and it's possible a conversion proc for this
497
- # oid will be added later, so do a runtime check for it.
498
- lambda do |s|
499
- if (pr = procs[oid])
500
- Sequel::Deprecation.deprecate("Calling conversion proc for subtype (oid: #{oid}) of composite type (oid: #{parser_opts[:oid]}) not added until after composite type registration", "Register subtype conversion procs before registering composite type")
501
- pr.call(s)
502
- else
503
- s
504
- end
505
- end
506
- end
456
+ procs[oid]
507
457
  end
508
458
 
509
459
  # Setup the converter and typecaster
@@ -533,21 +483,9 @@ module Sequel
533
483
  private meth
534
484
  end
535
485
 
536
- conversion_procs_updated # SEQUEL5: Remove
537
486
  nil
538
487
  end
539
488
 
540
- # SEQUEL5: Remove
541
- def reset_conversion_procs
542
- procs = super
543
-
544
- row_types.values.each do |opts|
545
- register_row_type(opts[:type], opts)
546
- end
547
-
548
- procs
549
- end
550
-
551
489
  # Handle typecasting of the given object to the given database type.
552
490
  # In general, the given database type should already be registered,
553
491
  # but if obj is an array, this will handled unregistered types.
@@ -602,16 +540,6 @@ module Sequel
602
540
  end
603
541
  end
604
542
  end
605
-
606
- # SEQUEL5: Remove
607
- parser = PGRow::Parser.new(:converter=>PGRow::ArrayRow)
608
- PG__TYPES[2249] = lambda do |s|
609
- Sequel::Deprecation.deprecate("Conversion proc for record added globally by pg_row extension", "Load the pg_row extension into the Database instance")
610
- parser.call(s)
611
- end
612
- if defined?(PGArray) && PGArray.respond_to?(:register)
613
- PGArray.register('record', :oid=>2287, :scalar_oid=>2249, :skip_deprecation_warning=>true)
614
- end
615
543
  end
616
544
 
617
545
  module SQL::Builders
@@ -76,8 +76,8 @@
76
76
  #
77
77
  # This feature is mostly useful for a different way to graph tables:
78
78
  #
79
- # DB[:a].join(:b, :id=>:b_id).select(Sequel.pg_row_op(:a).splat(:a),
80
- # Sequel.pg_row_op(:b).splat(:b))
79
+ # DB[:a].join(:b, id: :b_id).select(Sequel.pg_row_op(:a).splat(:a),
80
+ # Sequel.pg_row_op(:b).splat(:b))
81
81
  # # SELECT (a.*)::a, (b.*)::b FROM a INNER JOIN b ON (b.id = a.b_id)
82
82
  # # => {:a=>{:id=>1, :b_id=>2}, :b=>{:id=>2}}
83
83
  #
@@ -88,17 +88,6 @@ module Sequel
88
88
  module Postgres
89
89
  # This class represents a composite type expression reference.
90
90
  class PGRowOp < SQL::PlaceholderLiteralString
91
- OPEN = '('.freeze
92
- Sequel::Deprecation.deprecate_constant(self, :OPEN)
93
- CLOSE_DOT = ').'.freeze
94
- Sequel::Deprecation.deprecate_constant(self, :CLOSE_DOT)
95
- CLOSE_STAR = '.*)'.freeze
96
- Sequel::Deprecation.deprecate_constant(self, :CLOSE_STAR)
97
- CLOSE_STAR_CAST = '.*)::'.freeze
98
- Sequel::Deprecation.deprecate_constant(self, :CLOSE_STAR_CAST)
99
- EMPTY = "".freeze
100
- Sequel::Deprecation.deprecate_constant(self, :EMPTY)
101
-
102
91
  ROW = ['(', '.*)'].freeze.each(&:freeze)
103
92
  ROW_CAST = ['(', '.*)::'].freeze.each(&:freeze)
104
93
  QUALIFY = ['(', ').'].freeze.each(&:freeze)
@@ -37,11 +37,9 @@ module Sequel
37
37
  end
38
38
 
39
39
  module DatasetQuery
40
- Dataset.def_mutation_method(:query, :module=>self)
41
-
42
40
  # Translates a query block into a dataset. Query blocks are an
43
41
  # alternative to Sequel's usual method chaining, by using
44
- # instance_eval with a proxy object:
42
+ # instance_exec with a proxy object:
45
43
  #
46
44
  # dataset = DB[:items].query do
47
45
  # select :x, :y, :z
@@ -54,7 +52,7 @@ module Sequel
54
52
  # dataset = DB[:items].select(:x, :y, :z).where{(x > 1) & (y > 2)}.reverse(:z)
55
53
  def query(&block)
56
54
  query = Dataset::Query.new(self)
57
- query.instance_eval(&block)
55
+ query.instance_exec(&block)
58
56
  query.dataset
59
57
  end
60
58
  end
@@ -71,6 +69,7 @@ module Sequel
71
69
 
72
70
  # Replace the query's dataset with dataset returned by the method call.
73
71
  def method_missing(method, *args, &block)
72
+ # Allow calling private methods, so things like raise works
74
73
  @dataset = @dataset.send(method, *args, &block)
75
74
  raise(Sequel::Error, "method #{method.inspect} did not return a dataset") unless @dataset.is_a?(Dataset)
76
75
  self
@@ -25,12 +25,6 @@
25
25
  #
26
26
  # Related module: Sequel::Dataset::RoundTimestamps
27
27
 
28
- unless RUBY_VERSION >= '1.9'
29
- # :nocov:
30
- raise LoadError, 'the round_timestamps extension only works on ruby 1.9+'
31
- # :nocov:
32
- end
33
-
34
28
  module Sequel
35
29
  class Dataset
36
30
  module RoundTimestamps