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
@@ -30,7 +30,7 @@
30
30
  # Since the hstore type only supports strings, non string keys and
31
31
  # values are converted to strings
32
32
  #
33
- # Sequel.hstore(:foo=>1).to_hash # {'foo'=>'1'}
33
+ # Sequel.hstore(foo: 1).to_hash # {'foo'=>'1'}
34
34
  # v = Sequel.hstore({})
35
35
  # v[:foo] = 1
36
36
  # v # {'foo'=>'1'}
@@ -68,7 +68,7 @@
68
68
  #
69
69
  # If you want to insert a hash into an hstore database column:
70
70
  #
71
- # DB[:table].insert(:column=>Sequel.hstore('foo'=>'bar'))
71
+ # DB[:table].insert(column: Sequel.hstore('foo'=>'bar'))
72
72
  #
73
73
  # To use this extension, first load it into your Sequel::Database instance:
74
74
  #
@@ -91,21 +91,6 @@ module Sequel
91
91
 
92
92
  # Parser for PostgreSQL hstore output format.
93
93
  class Parser < StringScanner
94
- QUOTE_RE = /"/.freeze
95
- Sequel::Deprecation.deprecate_constant(self, :QUOTE_RE)
96
- KV_SEP_RE = /"\s*=>\s*/.freeze
97
- Sequel::Deprecation.deprecate_constant(self, :KV_SEP_RE)
98
- NULL_RE = /NULL/.freeze
99
- Sequel::Deprecation.deprecate_constant(self, :NULL_RE)
100
- SEP_RE = /,\s*/.freeze
101
- Sequel::Deprecation.deprecate_constant(self, :SEP_RE)
102
- QUOTED_RE = /(\\"|[^"])*/.freeze
103
- Sequel::Deprecation.deprecate_constant(self, :QUOTED_RE)
104
- REPLACE_RE = /\\(.)/.freeze
105
- Sequel::Deprecation.deprecate_constant(self, :REPLACE_RE)
106
- REPLACE_WITH = '\1'.freeze
107
- Sequel::Deprecation.deprecate_constant(self, :REPLACE_WITH)
108
-
109
94
  # Parse the output format that PostgreSQL uses for hstore
110
95
  # columns. Note that this does not attempt to parse all
111
96
  # input formats that PostgreSQL will accept. For instance,
@@ -144,7 +129,7 @@ module Sequel
144
129
 
145
130
  module DatabaseMethods
146
131
  def self.extended(db)
147
- db.instance_eval do
132
+ db.instance_exec do
148
133
  add_named_conversion_proc(:hstore, &HStore.method(:parse))
149
134
  @schema_type_classes[:hstore] = HStore
150
135
  end
@@ -162,13 +147,6 @@ module Sequel
162
147
  end
163
148
  end
164
149
 
165
- # SEQUEL5: Remove
166
- def reset_conversion_procs
167
- procs = super
168
- add_named_conversion_proc(:hstore, &HStore.method(:parse))
169
- procs
170
- end
171
-
172
150
  private
173
151
 
174
152
  # Recognize the hstore database type.
@@ -198,29 +176,12 @@ module Sequel
198
176
  # keys to strings during lookup.
199
177
  DEFAULT_PROC = lambda{|h, k| h[k.to_s] unless k.is_a?(String)}
200
178
 
201
- QUOTE = '"'.freeze
202
- Sequel::Deprecation.deprecate_constant(self, :QUOTE)
203
- COMMA = ",".freeze
204
- Sequel::Deprecation.deprecate_constant(self, :COMMA)
205
- KV_SEP = "=>".freeze
206
- Sequel::Deprecation.deprecate_constant(self, :KV_SEP)
207
- NULL = "NULL".freeze
208
- Sequel::Deprecation.deprecate_constant(self, :NULL)
209
- ESCAPE_RE = /("|\\)/.freeze
210
- Sequel::Deprecation.deprecate_constant(self, :ESCAPE_RE)
211
- ESCAPE_REPLACE = '\\\\\1'.freeze
212
- Sequel::Deprecation.deprecate_constant(self, :ESCAPE_REPLACE)
213
- HSTORE_CAST = '::hstore'.freeze
214
- Sequel::Deprecation.deprecate_constant(self, :HSTORE_CAST)
215
-
216
- if RUBY_VERSION >= '1.9'
217
- # Undef 1.9 marshal_{dump,load} methods in the delegate class,
218
- # so that ruby 1.9 uses the old style _dump/_load methods defined
219
- # in the delegate class, instead of the marshal_{dump,load} methods
220
- # in the Hash class.
221
- undef_method :marshal_load
222
- undef_method :marshal_dump
223
- end
179
+ # Undef marshal_{dump,load} methods in the delegate class,
180
+ # so that ruby uses the old style _dump/_load methods defined
181
+ # in the delegate class, instead of the marshal_{dump,load} methods
182
+ # in the Hash class.
183
+ undef_method :marshal_load
184
+ undef_method :marshal_dump
224
185
 
225
186
  # Use custom marshal loading, since underlying hash uses a default proc.
226
187
  def self._load(args)
@@ -234,12 +195,12 @@ module Sequel
234
195
  end
235
196
 
236
197
  # Override methods that accept key argument to convert to string.
237
- (%w'[] delete has_key? include? key? member?' + Array((%w'assoc' if RUBY_VERSION >= '1.9.0'))).each do |m|
198
+ %w'[] delete has_key? include? key? member? assoc'.each do |m|
238
199
  class_eval("def #{m}(k) super(k.to_s) end", __FILE__, __LINE__)
239
200
  end
240
201
 
241
202
  # Override methods that accept value argument to convert to string unless nil.
242
- (%w'has_value? value?' + Array((%w'key rassoc' if RUBY_VERSION >= '1.9.0'))).each do |m|
203
+ %w'has_value? value? key rassoc'.each do |m|
243
204
  class_eval("def #{m}(v) super(convert_value(v)) end", __FILE__, __LINE__)
244
205
  end
245
206
 
@@ -57,10 +57,10 @@
57
57
  # Here are a couple examples for updating an existing hstore column:
58
58
  #
59
59
  # # Add a key, or update an existing key with a new value
60
- # DB[:tab].update(:h=>Sequel.hstore_op(:h).concat('c'=>3))
60
+ # DB[:tab].update(h: Sequel.hstore_op(:h).concat('c'=>3))
61
61
  #
62
62
  # # Delete a key
63
- # DB[:tab].update(:h=>Sequel.hstore_op(:h).delete('k1'))
63
+ # DB[:tab].update(h: Sequel.hstore_op(:h).delete('k1'))
64
64
  #
65
65
  # See the PostgreSQL hstore function and operator documentation for more
66
66
  # details on what these functions and operators do.
@@ -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)
@@ -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