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
@@ -4,53 +4,17 @@ module Sequel
4
4
  module SqlAnywhere
5
5
  Sequel::Database.set_shared_adapter_scheme(:sqlanywhere, self)
6
6
 
7
- # SEQUEL5: Remove
8
- @convert_smallint_to_bool = true
9
- class << self
10
- def convert_smallint_to_bool
11
- Sequel::Deprecation.deprecate("Sequel::SqlAnywhere.convert_smallint_to_bool", "Call this method on the Database instance")
12
- @convert_smallint_to_bool
13
- end
14
- def convert_smallint_to_bool=(v)
15
- Sequel::Deprecation.deprecate("Sequel::SqlAnywhere.convert_smallint_to_bool=", "Call this method on the Database instance")
16
- @convert_smallint_to_bool = v
17
- end
18
- end
19
-
20
7
  module DatabaseMethods
21
8
  attr_reader :conversion_procs
22
9
 
23
- # Override the default SqlAnywhere.convert_smallint_to_bool setting for this database.
24
- attr_writer :convert_smallint_to_bool
25
-
26
- AUTO_INCREMENT = 'IDENTITY'.freeze
27
- Sequel::Deprecation.deprecate_constant(self, :AUTO_INCREMENT)
28
- SQL_BEGIN = "BEGIN TRANSACTION".freeze
29
- Sequel::Deprecation.deprecate_constant(self, :SQL_BEGIN)
30
- SQL_COMMIT = "COMMIT TRANSACTION".freeze
31
- Sequel::Deprecation.deprecate_constant(self, :SQL_COMMIT)
32
- SQL_ROLLBACK = "IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION".freeze
33
- Sequel::Deprecation.deprecate_constant(self, :SQL_ROLLBACK)
34
- TEMPORARY = "GLOBAL TEMPORARY ".freeze
35
- Sequel::Deprecation.deprecate_constant(self, :TEMPORARY)
36
- SMALLINT_RE = /smallint/i.freeze
37
- Sequel::Deprecation.deprecate_constant(self, :SMALLINT_RE)
38
- DECIMAL_TYPE_RE = /numeric/i
39
- Sequel::Deprecation.deprecate_constant(self, :DECIMAL_TYPE_RE)
40
-
41
- # Whether to convert smallint to boolean arguments for this dataset.
42
- # Defaults to the SqlAnywhere module setting.
43
- def convert_smallint_to_bool
44
- defined?(@convert_smallint_to_bool) ? @convert_smallint_to_bool : (@convert_smallint_to_bool = ::Sequel::SqlAnywhere.instance_variable_get(:@convert_smallint_to_bool)) # true) # SEQUEL5
45
- end
10
+ # Set whether to convert smallint type to boolean for this Database instance
11
+ attr_accessor :convert_smallint_to_bool
46
12
 
47
- # Sysbase Server uses the :sqlanywhere type.
48
13
  def database_type
49
14
  :sqlanywhere
50
15
  end
51
16
 
52
17
  def freeze
53
- convert_smallint_to_bool
54
18
  @conversion_procs.freeze
55
19
  super
56
20
  end
@@ -172,22 +136,18 @@ module Sequel
172
136
  false
173
137
  end
174
138
 
175
- # SQL fragment for marking a table as temporary
176
139
  def temporary_table_sql
177
140
  "GLOBAL TEMPORARY "
178
141
  end
179
142
 
180
- # SQL to BEGIN a transaction.
181
143
  def begin_transaction_sql
182
144
  "BEGIN TRANSACTION"
183
145
  end
184
146
 
185
- # SQL to ROLLBACK a transaction.
186
147
  def rollback_transaction_sql
187
148
  "IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION"
188
149
  end
189
150
 
190
- # SQL to COMMIT a transaction.
191
151
  def commit_transaction_sql
192
152
  "COMMIT TRANSACTION"
193
153
  end
@@ -214,7 +174,6 @@ module Sequel
214
174
  :image
215
175
  end
216
176
 
217
- # Sybase specific syntax for altering tables.
218
177
  def alter_table_sql(table, op)
219
178
  case op[:op]
220
179
  when :add_column
@@ -278,58 +237,9 @@ module Sequel
278
237
  end
279
238
 
280
239
  module DatasetMethods
281
- BOOL_TRUE = '1'.freeze
282
- Sequel::Deprecation.deprecate_constant(self, :BOOL_TRUE)
283
- BOOL_FALSE = '0'.freeze
284
- Sequel::Deprecation.deprecate_constant(self, :BOOL_FALSE)
285
- WILDCARD = LiteralString.new('%').freeze
286
- Sequel::Deprecation.deprecate_constant(self, :WILDCARD)
287
- TOP = " TOP ".freeze
288
- Sequel::Deprecation.deprecate_constant(self, :TOP)
289
- START_AT = " START AT ".freeze
290
- Sequel::Deprecation.deprecate_constant(self, :START_AT)
291
- SQL_WITH_RECURSIVE = "WITH RECURSIVE ".freeze
292
- Sequel::Deprecation.deprecate_constant(self, :SQL_WITH_RECURSIVE)
293
- DATE_FUNCTION = 'today()'.freeze
294
- Sequel::Deprecation.deprecate_constant(self, :DATE_FUNCTION)
295
- NOW_FUNCTION = 'now()'.freeze
296
- Sequel::Deprecation.deprecate_constant(self, :NOW_FUNCTION)
297
- DATEPART = 'datepart'.freeze
298
- Sequel::Deprecation.deprecate_constant(self, :DATEPART)
299
- REGEXP = 'REGEXP'.freeze
300
- Sequel::Deprecation.deprecate_constant(self, :REGEXP)
301
- NOT_REGEXP = 'NOT REGEXP'.freeze
302
- Sequel::Deprecation.deprecate_constant(self, :NOT_REGEXP)
303
- APOS = "'".freeze
304
- Sequel::Deprecation.deprecate_constant(self, :APOS)
305
- APOS_RE = /'/.freeze
306
- Sequel::Deprecation.deprecate_constant(self, :APOS_RE)
307
- DOUBLE_APOS = "''".freeze
308
- Sequel::Deprecation.deprecate_constant(self, :DOUBLE_APOS)
309
- BACKSLASH_RE = /\\/.freeze
310
- Sequel::Deprecation.deprecate_constant(self, :BACKSLASH_RE)
311
- QUAD_BACKSLASH = "\\\\\\\\".freeze
312
- Sequel::Deprecation.deprecate_constant(self, :QUAD_BACKSLASH)
313
- BLOB_START = "0x".freeze
314
- Sequel::Deprecation.deprecate_constant(self, :BLOB_START)
315
- HSTAR = "H*".freeze
316
- Sequel::Deprecation.deprecate_constant(self, :HSTAR)
317
- CROSS_APPLY = 'CROSS APPLY'.freeze
318
- Sequel::Deprecation.deprecate_constant(self, :CROSS_APPLY)
319
- OUTER_APPLY = 'OUTER APPLY'.freeze
320
- Sequel::Deprecation.deprecate_constant(self, :OUTER_APPLY)
321
- ONLY_OFFSET = " TOP 2147483647".freeze
322
- Sequel::Deprecation.deprecate_constant(self, :ONLY_OFFSET)
323
-
324
240
  Dataset.def_sql_method(self, :insert, %w'with insert into columns values')
325
241
  Dataset.def_sql_method(self, :select, %w'with select distinct limit columns into from join where group having compounds order lock')
326
242
 
327
- # Override the default IBMDB.convert_smallint_to_bool setting for this dataset.
328
- def convert_smallint_to_bool=(v)
329
- Sequel::Deprecation.deprecate("Sequel::SqlAnywhere::Dataset#convert_smallint_to_bool=", "Call with_convert_smallint_to_bool instead, which returns a modified copy instead of modifying the object")
330
- @opts[:convert_smallint_to_bool] = v
331
- end
332
-
333
243
  # Whether to convert smallint to boolean arguments for this dataset.
334
244
  # Defaults to the IBMDB module setting.
335
245
  def convert_smallint_to_bool
@@ -380,7 +290,6 @@ module Sequel
380
290
  true
381
291
  end
382
292
 
383
- # SQLAnywhere uses + for string concatenation, and LIKE is case insensitive by default.
384
293
  def complex_expression_sql_append(sql, op, args)
385
294
  case op
386
295
  when :'||'
@@ -437,7 +346,7 @@ module Sequel
437
346
  string.gsub(/[\\%_\[]/){|m| "\\#{m}"}
438
347
  end
439
348
 
440
- # Use today() and Now() for CURRENT_DATE and CURRENT_TIMESTAMP
349
+ # Use today() for CURRENT_DATE and now() for CURRENT_TIMESTAMP and CURRENT_TIME
441
350
  def constant_sql_append(sql, constant)
442
351
  case constant
443
352
  when :CURRENT_DATE
@@ -492,8 +401,7 @@ module Sequel
492
401
  end
493
402
  end
494
403
 
495
- # Sybase uses TOP N for limit. For Sybase TOP (N) is used
496
- # to allow the limit to be a bound variable.
404
+ # Sybase uses TOP N for limit.
497
405
  def select_limit_sql(sql)
498
406
  l = @opts[:limit]
499
407
  o = @opts[:offset]
@@ -1,13 +1,14 @@
1
1
  # frozen-string-literal: true
2
2
 
3
- Sequel.require %w'replace unmodified_identifiers', 'adapters/utils'
3
+ require_relative '../utils/replace'
4
+ require_relative '../utils/unmodified_identifiers'
4
5
 
5
6
  module Sequel
6
7
  module SQLite
7
8
  Sequel::Database.set_shared_adapter_scheme(:sqlite, self)
8
9
 
9
10
  def self.mock_adapter_setup(db)
10
- db.instance_eval do
11
+ db.instance_exec do
11
12
  @sqlite_version = 30903
12
13
  end
13
14
  end
@@ -18,13 +19,6 @@ module Sequel
18
19
  module DatabaseMethods
19
20
  include UnmodifiedIdentifiers::DatabaseMethods
20
21
 
21
- PRIMARY_KEY_INDEX_RE = /\Asqlite_autoindex_/.freeze
22
- Sequel::Deprecation.deprecate_constant(self, :PRIMARY_KEY_INDEX_RE)
23
- TABLES_FILTER = Sequel.~(:name=>'sqlite_sequence'.freeze) & {:type => 'table'.freeze}
24
- Sequel::Deprecation.deprecate_constant(self, :TABLES_FILTER)
25
- VIEWS_FILTER = {:type => 'view'.freeze}.freeze
26
- Sequel::Deprecation.deprecate_constant(self, :VIEWS_FILTER)
27
-
28
22
  AUTO_VACUUM = [:none, :full, :incremental].freeze
29
23
  SYNCHRONOUS = [:off, :normal, :full].freeze
30
24
  TEMP_STORE = [:default, :file, :memory].freeze
@@ -56,46 +50,6 @@ module Sequel
56
50
  :sqlite
57
51
  end
58
52
 
59
- # SEQUEL5: Remove
60
- def auto_vacuum
61
- AUTO_VACUUM[pragma_get(:auto_vacuum).to_i]
62
- end
63
- def auto_vacuum=(value)
64
- value = AUTO_VACUUM.index(value) || (raise Error, "Invalid value for auto_vacuum option. Please specify one of :none, :full, :incremental.")
65
- pragma_set(:auto_vacuum, value)
66
- end
67
- def case_sensitive_like=(value)
68
- pragma_set(:case_sensitive_like, !!value ? 'on' : 'off') if sqlite_version >= 30203
69
- end
70
- def foreign_keys
71
- pragma_get(:foreign_keys).to_i == 1 if sqlite_version >= 30619
72
- end
73
- def foreign_keys=(value)
74
- pragma_set(:foreign_keys, !!value ? 'on' : 'off') if sqlite_version >= 30619
75
- end
76
- def pragma_get(name)
77
- Sequel::Deprecation.deprecate('Database#{pragma_get,auto_vacuum,case_sensitive_like,foreign_keys,synchronous,temp_store} on SQLite', "These methods may not be safe when using multiple connections, call fetch(#{"PRAGMA #{name}".inspect}).single_value if you really want to get the pragma value")
78
- self["PRAGMA #{name}"].single_value
79
- end
80
- def pragma_set(name, value)
81
- Sequel::Deprecation.deprecate('Database#{pragma_set,auto_vacuum=,case_sensitive_like=,foreign_keys=,synchronous=,temp_store=} on SQLite', "These methods are not thread safe or safe when using multiple connections, pass the appropriate option when connecting to set the pragma correctly for all connections")
82
- execute_ddl("PRAGMA #{name} = #{value}")
83
- end
84
- def synchronous
85
- SYNCHRONOUS[pragma_get(:synchronous).to_i]
86
- end
87
- def synchronous=(value)
88
- value = SYNCHRONOUS.index(value) || (raise Error, "Invalid value for synchronous option. Please specify one of :off, :normal, :full.")
89
- pragma_set(:synchronous, value)
90
- end
91
- def temp_store
92
- TEMP_STORE[pragma_get(:temp_store).to_i]
93
- end
94
- def temp_store=(value)
95
- value = TEMP_STORE.index(value) || (raise Error, "Invalid value for temp_store option. Please specify one of :default, :file, :memory.")
96
- pragma_set(:temp_store, value)
97
- end
98
-
99
53
  # Set the integer_booleans option using the passed in :integer_boolean option.
100
54
  def set_integer_booleans
101
55
  @integer_booleans = @opts.has_key?(:integer_booleans) ? typecast_value_boolean(@opts[:integer_booleans]) : true
@@ -203,7 +157,7 @@ module Sequel
203
157
  # Creates a dataset that uses the VALUES clause:
204
158
  #
205
159
  # DB.values([[1, 2], [3, 4]])
206
- # VALUES ((1, 2), (3, 4))
160
+ # # VALUES ((1, 2), (3, 4))
207
161
  def values(v)
208
162
  @default_dataset.clone(:values=>v)
209
163
  end
@@ -527,7 +481,6 @@ module Sequel
527
481
  end
528
482
  end
529
483
 
530
- # Instance methods for datasets that connect to an SQLite database
531
484
  module DatasetMethods
532
485
  include Dataset::Replace
533
486
  include UnmodifiedIdentifiers::DatasetMethods
@@ -535,50 +488,9 @@ module Sequel
535
488
  # The allowed values for insert_conflict
536
489
  INSERT_CONFLICT_RESOLUTIONS = %w'ROLLBACK ABORT FAIL IGNORE REPLACE'.each(&:freeze).freeze
537
490
 
538
- CONSTANT_MAP = {:CURRENT_DATE=>"date(CURRENT_TIMESTAMP, 'localtime')".freeze, :CURRENT_TIMESTAMP=>"datetime(CURRENT_TIMESTAMP, 'localtime')".freeze, :CURRENT_TIME=>"time(CURRENT_TIMESTAMP, 'localtime')".freeze}#.freeze # SEQUEL5
539
- EXTRACT_MAP = {:year=>"'%Y'", :month=>"'%m'", :day=>"'%d'", :hour=>"'%H'", :minute=>"'%M'", :second=>"'%f'"}#.freeze # SEQUEL5
540
- #EXTRACT_MAP.each_value(&:freeze) # SEQUEL5
541
-
542
- NOT_SPACE = 'NOT '.freeze
543
- Sequel::Deprecation.deprecate_constant(self, :NOT_SPACE)
544
- COMMA = ', '.freeze
545
- Sequel::Deprecation.deprecate_constant(self, :COMMA)
546
- PAREN_CLOSE = ')'.freeze
547
- Sequel::Deprecation.deprecate_constant(self, :PAREN_CLOSE)
548
- AS = ' AS '.freeze
549
- Sequel::Deprecation.deprecate_constant(self, :AS)
550
- APOS = "'".freeze
551
- Sequel::Deprecation.deprecate_constant(self, :APOS)
552
- EXTRACT_OPEN = "CAST(strftime(".freeze
553
- Sequel::Deprecation.deprecate_constant(self, :EXTRACT_OPEN)
554
- EXTRACT_CLOSE = ') AS '.freeze
555
- Sequel::Deprecation.deprecate_constant(self, :EXTRACT_CLOSE)
556
- NUMERIC = 'NUMERIC'.freeze
557
- Sequel::Deprecation.deprecate_constant(self, :NUMERIC)
558
- INTEGER = 'INTEGER'.freeze
559
- Sequel::Deprecation.deprecate_constant(self, :INTEGER)
560
- BACKTICK = '`'.freeze
561
- Sequel::Deprecation.deprecate_constant(self, :BACKTICK)
562
- BACKTICK_RE = /`/.freeze
563
- Sequel::Deprecation.deprecate_constant(self, :BACKTICK_RE)
564
- DOUBLE_BACKTICK = '``'.freeze
565
- Sequel::Deprecation.deprecate_constant(self, :DOUBLE_BACKTICK)
566
- BLOB_START = "X'".freeze
567
- Sequel::Deprecation.deprecate_constant(self, :BLOB_START)
568
- HSTAR = "H*".freeze
569
- Sequel::Deprecation.deprecate_constant(self, :HSTAR)
570
- DATE_OPEN = "date(".freeze
571
- Sequel::Deprecation.deprecate_constant(self, :DATE_OPEN)
572
- DATETIME_OPEN = "datetime(".freeze
573
- Sequel::Deprecation.deprecate_constant(self, :DATETIME_OPEN)
574
- ONLY_OFFSET = " LIMIT -1 OFFSET ".freeze
575
- Sequel::Deprecation.deprecate_constant(self, :ONLY_OFFSET)
576
- OR = " OR ".freeze
577
- Sequel::Deprecation.deprecate_constant(self, :OR)
578
- SELECT_VALUES = "VALUES ".freeze
579
- Sequel::Deprecation.deprecate_constant(self, :SELECT_VALUES)
580
- EMULATED_FUNCTION_MAP = {:char_length=>'length'.freeze}
581
- Sequel::Deprecation.deprecate_constant(self, :EMULATED_FUNCTION_MAP)
491
+ CONSTANT_MAP = {:CURRENT_DATE=>"date(CURRENT_TIMESTAMP, 'localtime')".freeze, :CURRENT_TIMESTAMP=>"datetime(CURRENT_TIMESTAMP, 'localtime')".freeze, :CURRENT_TIME=>"time(CURRENT_TIMESTAMP, 'localtime')".freeze}.freeze
492
+ EXTRACT_MAP = {:year=>"'%Y'", :month=>"'%m'", :day=>"'%d'", :hour=>"'%H'", :minute=>"'%M'", :second=>"'%f'"}.freeze
493
+ EXTRACT_MAP.each_value(&:freeze)
582
494
 
583
495
  Dataset.def_sql_method(self, :delete, [['if db.sqlite_version >= 30803', %w'with delete from where'], ["else", %w'delete from where']])
584
496
  Dataset.def_sql_method(self, :insert, [['if db.sqlite_version >= 30803', %w'with insert conflict into columns values'], ["else", %w'insert conflict into columns values']])
@@ -600,7 +512,7 @@ module Sequel
600
512
  end
601
513
 
602
514
  # SQLite doesn't support a NOT LIKE b, you need to use NOT (a LIKE b).
603
- # It doesn't support xor or the extract function natively, so those have to be emulated.
515
+ # It doesn't support xor, power, or the extract function natively, so those have to be emulated.
604
516
  def complex_expression_sql_append(sql, op, args)
605
517
  case op
606
518
  when :"NOT LIKE", :"NOT ILIKE"
@@ -703,15 +615,14 @@ module Sequel
703
615
  #
704
616
  # Examples:
705
617
  #
706
- # DB[:table].insert_conflict.insert(:a=>1, :b=>2)
618
+ # DB[:table].insert_conflict.insert(a: 1, b: 2)
707
619
  # # INSERT OR IGNORE INTO TABLE (a, b) VALUES (1, 2)
708
620
  #
709
- # DB[:table].insert_conflict(:replace).insert(:a=>1, :b=>2)
621
+ # DB[:table].insert_conflict(:replace).insert(a: 1, b: 2)
710
622
  # # INSERT OR REPLACE INTO TABLE (a, b) VALUES (1, 2)
711
623
  def insert_conflict(resolution = :ignore)
712
624
  unless INSERT_CONFLICT_RESOLUTIONS.include?(resolution.to_s.upcase)
713
- Sequel::Deprecation.deprecate("Passing #{resolution.inspect} argument to Dataset#insert_conflict", "The allowed values are: :rollback, :abort, :fail, :ignore, or :replace")
714
- # raise Error, "Invalid value passed to Dataset#insert_conflict: #{resolution.inspect}. The allowed values are: :rollback, :abort, :fail, :ignore, or :replace"
625
+ raise Error, "Invalid value passed to Dataset#insert_conflict: #{resolution.inspect}. The allowed values are: :rollback, :abort, :fail, :ignore, or :replace"
715
626
  end
716
627
  clone(:insert_conflict => resolution)
717
628
  end
@@ -719,7 +630,7 @@ module Sequel
719
630
  # Ignore uniqueness/exclusion violations when inserting, using INSERT OR IGNORE.
720
631
  # Exists mostly for compatibility to MySQL's insert_ignore. Example:
721
632
  #
722
- # DB[:table].insert_ignore.insert(:a=>1, :b=>2)
633
+ # DB[:table].insert_ignore.insert(a: 1, b: 2)
723
634
  # # INSERT OR IGNORE INTO TABLE (a, b) VALUES (1, 2)
724
635
  def insert_ignore
725
636
  insert_conflict(:ignore)
@@ -1,11 +1,9 @@
1
1
  # frozen-string-literal: true
2
2
 
3
3
  require 'sqlanywhere'
4
-
5
- Sequel.require %w'shared/sqlanywhere', 'adapters'
4
+ require_relative 'shared/sqlanywhere'
6
5
 
7
6
  module Sequel
8
- # Module for holding all SqlAnywhere-related classes and modules for Sequel.
9
7
  module SqlAnywhere
10
8
 
11
9
  class SQLAnywhereException < StandardError
@@ -27,9 +25,6 @@ module Sequel
27
25
  def time(s) ::Sequel.string_to_time(s) end
28
26
  end.new
29
27
 
30
- TYPE_TRANSLATOR = tt
31
- Sequel::Deprecation.deprecate_constant(self, :TYPE_TRANSLATOR)
32
-
33
28
  SQLANYWHERE_TYPES = {}
34
29
  {
35
30
  [0, 484] => tt.method(:decimal),
@@ -40,15 +35,11 @@ module Sequel
40
35
  }.each do |k,v|
41
36
  k.each{|n| SQLANYWHERE_TYPES[n] = v}
42
37
  end
43
- # SQLANYWHERE_TYPES.freeze # SEQUEL5
38
+ SQLANYWHERE_TYPES.freeze
44
39
 
45
- # Database class for SQLAnywhere databases used with Sequel.
46
40
  class Database < Sequel::Database
47
41
  include Sequel::SqlAnywhere::DatabaseMethods
48
42
 
49
- DEFAULT_CONFIG = { :user => 'dba', :password => 'sql' }
50
- Sequel::Deprecation.deprecate_constant(self, :DEFAULT_CONFIG)
51
-
52
43
  attr_accessor :api
53
44
 
54
45
  set_adapter_scheme :sqlanywhere
@@ -79,12 +70,10 @@ module Sequel
79
70
  conn
80
71
  end
81
72
 
82
- # Closes given database connection.
83
73
  def disconnect_connection(c)
84
74
  @api.sqlany_disconnect(c)
85
75
  end
86
76
 
87
- # Returns number of rows affected
88
77
  def execute_dui(sql, opts=OPTS)
89
78
  synchronize(opts[:server]) do |conn|
90
79
  _execute(conn, :rows, sql, opts)
@@ -110,8 +99,6 @@ module Sequel
110
99
 
111
100
  private
112
101
 
113
- LAST_INSERT_ID = 'SELECT @@IDENTITY'.freeze
114
- Sequel::Deprecation.deprecate_constant(self, :LAST_INSERT_ID)
115
102
  def _execute(conn, type, sql, opts)
116
103
  unless rs = log_connection_yield(sql, conn){@api.sqlany_execute_direct(conn, sql)}
117
104
  result, errstr = @api.sqlany_error(conn)
@@ -132,6 +119,7 @@ module Sequel
132
119
  end
133
120
 
134
121
  def adapter_initialize
122
+ @convert_smallint_to_bool = true
135
123
  @conversion_procs = SQLANYWHERE_TYPES.dup
136
124
  @conversion_procs[392] = method(:to_application_timestamp_sa)
137
125
  @api = SQLAnywhere::SQLAnywhereInterface.new
@@ -148,22 +136,15 @@ module Sequel
148
136
  end
149
137
  end
150
138
 
151
- # Dataset class for SqlAnywhere datasets accessed via the native driver.
152
139
  class Dataset < Sequel::Dataset
153
140
  include Sequel::SqlAnywhere::DatasetMethods
154
141
 
155
- Database::DatasetClass = self
156
- Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
157
-
158
- # Yield all rows matching this dataset. If the dataset is set to
159
- # split multiple statements, yield arrays of hashes one per statement
160
- # instead of yielding results for all statements as hashes.
161
142
  def fetch_rows(sql)
162
143
  db = @db
163
144
  cps = db.conversion_procs
164
145
  api = db.api
165
146
  execute(sql) do |rs|
166
- convert = (convert_smallint_to_bool and db.convert_smallint_to_bool)
147
+ convert = convert_smallint_to_bool
167
148
  col_infos = []
168
149
  api.sqlany_num_cols(rs).times do |i|
169
150
  _, _, name, _, type = api.sqlany_get_column_info(rs, i)
@@ -1,11 +1,9 @@
1
1
  # frozen-string-literal: true
2
2
 
3
3
  require 'sqlite3'
4
- Sequel.require 'adapters/shared/sqlite'
4
+ require_relative 'shared/sqlite'
5
5
 
6
6
  module Sequel
7
- # Top level module for holding all SQLite-related modules and classes
8
- # for Sequel.
9
7
  module SQLite
10
8
  FALSE_VALUES = (%w'0 false f no n' + [0]).freeze
11
9
 
@@ -60,9 +58,6 @@ module Sequel
60
58
  end
61
59
  end.new
62
60
 
63
- TYPE_TRANSLATOR = tt
64
- Sequel::Deprecation.deprecate_constant(self, :TYPE_TRANSLATOR)
65
-
66
61
  # Hash with string keys and callable values for converting SQLite types.
67
62
  SQLITE_TYPES = {}
68
63
  {
@@ -76,10 +71,8 @@ module Sequel
76
71
  }.each do |k,v|
77
72
  k.each{|n| SQLITE_TYPES[n] = v}
78
73
  end
79
- # SQLITE_TYPES.freeze # SEQUEL5
74
+ SQLITE_TYPES.freeze
80
75
 
81
- # Database class for SQLite databases used with Sequel and the
82
- # ruby-sqlite3 driver.
83
76
  class Database < Sequel::Database
84
77
  include ::Sequel::SQLite::DatabaseMethods
85
78
 
@@ -149,7 +142,6 @@ module Sequel
149
142
  end
150
143
  end
151
144
 
152
- # Run the given SQL with the given arguments and return the last inserted row id.
153
145
  def execute_insert(sql, opts=OPTS)
154
146
  _execute(:insert, sql, opts)
155
147
  end
@@ -291,17 +283,9 @@ module Sequel
291
283
  #end
292
284
  end
293
285
 
294
- # Dataset class for SQLite datasets that use the ruby-sqlite3 driver.
295
286
  class Dataset < Sequel::Dataset
296
287
  include ::Sequel::SQLite::DatasetMethods
297
288
 
298
- Database::DatasetClass = self
299
- Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
300
-
301
- PREPARED_ARG_PLACEHOLDER = ':'.freeze
302
- Sequel::Deprecation.deprecate_constant(self, :PREPARED_ARG_PLACEHOLDER)
303
-
304
- # SQLite already supports named bind arguments, so use directly.
305
289
  module ArgumentMapper
306
290
  include Sequel::Dataset::ArgumentMapper
307
291
 
@@ -332,7 +316,6 @@ module Sequel
332
316
  BindArgumentMethods = prepared_statements_module(:bind, ArgumentMapper)
333
317
  PreparedStatementMethods = prepared_statements_module(:prepare, BindArgumentMethods)
334
318
 
335
- # Yield a hash for each row in the dataset.
336
319
  def fetch_rows(sql)
337
320
  execute(sql) do |result|
338
321
  i = -1