sequel 4.49.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +130 -0
  3. data/README.rdoc +195 -136
  4. data/Rakefile +26 -42
  5. data/bin/sequel +6 -9
  6. data/doc/advanced_associations.rdoc +91 -168
  7. data/doc/association_basics.rdoc +197 -274
  8. data/doc/bin_sequel.rdoc +5 -3
  9. data/doc/cheat_sheet.rdoc +66 -43
  10. data/doc/code_order.rdoc +1 -8
  11. data/doc/core_extensions.rdoc +81 -56
  12. data/doc/dataset_basics.rdoc +8 -17
  13. data/doc/dataset_filtering.rdoc +81 -86
  14. data/doc/extensions.rdoc +3 -10
  15. data/doc/mass_assignment.rdoc +73 -30
  16. data/doc/migration.rdoc +19 -36
  17. data/doc/model_dataset_method_design.rdoc +14 -17
  18. data/doc/model_hooks.rdoc +15 -25
  19. data/doc/model_plugins.rdoc +10 -10
  20. data/doc/mssql_stored_procedures.rdoc +3 -3
  21. data/doc/object_model.rdoc +52 -70
  22. data/doc/opening_databases.rdoc +39 -32
  23. data/doc/postgresql.rdoc +48 -38
  24. data/doc/prepared_statements.rdoc +27 -22
  25. data/doc/querying.rdoc +173 -150
  26. data/doc/reflection.rdoc +5 -6
  27. data/doc/release_notes/5.0.0.txt +159 -0
  28. data/doc/release_notes/5.1.0.txt +31 -0
  29. data/doc/release_notes/5.2.0.txt +33 -0
  30. data/doc/release_notes/5.3.0.txt +121 -0
  31. data/doc/schema_modification.rdoc +78 -64
  32. data/doc/security.rdoc +97 -88
  33. data/doc/sharding.rdoc +43 -30
  34. data/doc/sql.rdoc +53 -65
  35. data/doc/testing.rdoc +4 -5
  36. data/doc/thread_safety.rdoc +2 -4
  37. data/doc/transactions.rdoc +18 -17
  38. data/doc/validations.rdoc +48 -45
  39. data/doc/virtual_rows.rdoc +87 -115
  40. data/lib/sequel/adapters/ado/access.rb +7 -13
  41. data/lib/sequel/adapters/ado/mssql.rb +2 -9
  42. data/lib/sequel/adapters/ado.rb +9 -25
  43. data/lib/sequel/adapters/amalgalite.rb +3 -18
  44. data/lib/sequel/adapters/ibmdb.rb +9 -45
  45. data/lib/sequel/adapters/jdbc/db2.rb +8 -37
  46. data/lib/sequel/adapters/jdbc/derby.rb +4 -50
  47. data/lib/sequel/adapters/jdbc/h2.rb +6 -26
  48. data/lib/sequel/adapters/jdbc/hsqldb.rb +2 -27
  49. data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
  50. data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
  51. data/lib/sequel/adapters/jdbc/mysql.rb +11 -15
  52. data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
  53. data/lib/sequel/adapters/jdbc/postgresql.rb +23 -33
  54. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
  55. data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
  56. data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
  57. data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
  58. data/lib/sequel/adapters/jdbc.rb +18 -74
  59. data/lib/sequel/adapters/mock.rb +4 -30
  60. data/lib/sequel/adapters/mysql.rb +7 -44
  61. data/lib/sequel/adapters/mysql2.rb +5 -23
  62. data/lib/sequel/adapters/odbc/db2.rb +1 -1
  63. data/lib/sequel/adapters/odbc/mssql.rb +4 -12
  64. data/lib/sequel/adapters/odbc/oracle.rb +1 -1
  65. data/lib/sequel/adapters/odbc.rb +0 -19
  66. data/lib/sequel/adapters/oracle.rb +8 -13
  67. data/lib/sequel/adapters/postgres.rb +28 -150
  68. data/lib/sequel/adapters/postgresql.rb +1 -1
  69. data/lib/sequel/adapters/shared/access.rb +11 -51
  70. data/lib/sequel/adapters/shared/db2.rb +3 -61
  71. data/lib/sequel/adapters/shared/mssql.rb +21 -157
  72. data/lib/sequel/adapters/shared/mysql.rb +61 -227
  73. data/lib/sequel/adapters/shared/oracle.rb +13 -41
  74. data/lib/sequel/adapters/shared/postgres.rb +58 -264
  75. data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
  76. data/lib/sequel/adapters/shared/sqlite.rb +22 -101
  77. data/lib/sequel/adapters/sqlanywhere.rb +4 -23
  78. data/lib/sequel/adapters/sqlite.rb +2 -19
  79. data/lib/sequel/adapters/tinytds.rb +5 -15
  80. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
  81. data/lib/sequel/adapters/utils/mysql_mysql2.rb +4 -4
  82. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
  83. data/lib/sequel/adapters/utils/replace.rb +0 -5
  84. data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
  85. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
  86. data/lib/sequel/ast_transformer.rb +3 -94
  87. data/lib/sequel/connection_pool/sharded_single.rb +1 -4
  88. data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
  89. data/lib/sequel/connection_pool/single.rb +0 -2
  90. data/lib/sequel/connection_pool/threaded.rb +94 -110
  91. data/lib/sequel/connection_pool.rb +38 -28
  92. data/lib/sequel/core.rb +42 -101
  93. data/lib/sequel/database/connecting.rb +23 -60
  94. data/lib/sequel/database/dataset.rb +6 -9
  95. data/lib/sequel/database/dataset_defaults.rb +4 -48
  96. data/lib/sequel/database/features.rb +5 -4
  97. data/lib/sequel/database/logging.rb +2 -9
  98. data/lib/sequel/database/misc.rb +36 -55
  99. data/lib/sequel/database/query.rb +8 -13
  100. data/lib/sequel/database/schema_generator.rb +93 -64
  101. data/lib/sequel/database/schema_methods.rb +61 -79
  102. data/lib/sequel/database/transactions.rb +4 -24
  103. data/lib/sequel/database.rb +12 -2
  104. data/lib/sequel/dataset/actions.rb +57 -107
  105. data/lib/sequel/dataset/dataset_module.rb +4 -16
  106. data/lib/sequel/dataset/features.rb +35 -30
  107. data/lib/sequel/dataset/graph.rb +40 -49
  108. data/lib/sequel/dataset/misc.rb +12 -37
  109. data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
  110. data/lib/sequel/dataset/prepared_statements.rb +23 -51
  111. data/lib/sequel/dataset/query.rb +91 -161
  112. data/lib/sequel/dataset/sql.rb +33 -225
  113. data/lib/sequel/dataset.rb +18 -10
  114. data/lib/sequel/deprecated.rb +18 -27
  115. data/lib/sequel/exceptions.rb +1 -17
  116. data/lib/sequel/extensions/_model_pg_row.rb +0 -7
  117. data/lib/sequel/extensions/_pretty_table.rb +1 -3
  118. data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
  119. data/lib/sequel/extensions/connection_expiration.rb +1 -1
  120. data/lib/sequel/extensions/connection_validator.rb +1 -1
  121. data/lib/sequel/extensions/constraint_validations.rb +11 -11
  122. data/lib/sequel/extensions/core_extensions.rb +39 -49
  123. data/lib/sequel/extensions/core_refinements.rb +39 -45
  124. data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
  125. data/lib/sequel/extensions/date_arithmetic.rb +7 -7
  126. data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
  127. data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
  128. data/lib/sequel/extensions/eval_inspect.rb +4 -11
  129. data/lib/sequel/extensions/freeze_datasets.rb +1 -69
  130. data/lib/sequel/extensions/from_block.rb +1 -35
  131. data/lib/sequel/extensions/graph_each.rb +2 -2
  132. data/lib/sequel/extensions/identifier_mangling.rb +9 -19
  133. data/lib/sequel/extensions/implicit_subquery.rb +2 -2
  134. data/lib/sequel/extensions/inflector.rb +4 -4
  135. data/lib/sequel/extensions/migration.rb +27 -43
  136. data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
  137. data/lib/sequel/extensions/null_dataset.rb +2 -8
  138. data/lib/sequel/extensions/pagination.rb +1 -17
  139. data/lib/sequel/extensions/pg_array.rb +20 -189
  140. data/lib/sequel/extensions/pg_extended_date_support.rb +230 -0
  141. data/lib/sequel/extensions/pg_hstore.rb +11 -50
  142. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
  143. data/lib/sequel/extensions/pg_inet.rb +3 -16
  144. data/lib/sequel/extensions/pg_interval.rb +1 -20
  145. data/lib/sequel/extensions/pg_json.rb +7 -27
  146. data/lib/sequel/extensions/pg_loose_count.rb +1 -1
  147. data/lib/sequel/extensions/pg_range.rb +6 -121
  148. data/lib/sequel/extensions/pg_range_ops.rb +1 -3
  149. data/lib/sequel/extensions/pg_row.rb +5 -77
  150. data/lib/sequel/extensions/pg_row_ops.rb +2 -13
  151. data/lib/sequel/extensions/query.rb +3 -4
  152. data/lib/sequel/extensions/round_timestamps.rb +0 -6
  153. data/lib/sequel/extensions/schema_dumper.rb +13 -13
  154. data/lib/sequel/extensions/select_remove.rb +3 -3
  155. data/lib/sequel/extensions/split_array_nil.rb +2 -2
  156. data/lib/sequel/extensions/sql_comments.rb +2 -2
  157. data/lib/sequel/extensions/string_agg.rb +11 -8
  158. data/lib/sequel/extensions/symbol_aref.rb +6 -20
  159. data/lib/sequel/extensions/synchronize_sql.rb +45 -0
  160. data/lib/sequel/model/associations.rb +129 -131
  161. data/lib/sequel/model/base.rb +133 -731
  162. data/lib/sequel/model/default_inflections.rb +1 -1
  163. data/lib/sequel/model/errors.rb +0 -3
  164. data/lib/sequel/model/exceptions.rb +2 -6
  165. data/lib/sequel/model/inflections.rb +1 -26
  166. data/lib/sequel/model/plugins.rb +1 -0
  167. data/lib/sequel/model.rb +27 -62
  168. data/lib/sequel/plugins/active_model.rb +2 -5
  169. data/lib/sequel/plugins/association_dependencies.rb +15 -15
  170. data/lib/sequel/plugins/association_pks.rb +14 -28
  171. data/lib/sequel/plugins/association_proxies.rb +6 -7
  172. data/lib/sequel/plugins/auto_validations.rb +4 -4
  173. data/lib/sequel/plugins/before_after_save.rb +0 -43
  174. data/lib/sequel/plugins/blacklist_security.rb +9 -8
  175. data/lib/sequel/plugins/boolean_readers.rb +3 -3
  176. data/lib/sequel/plugins/boolean_subsets.rb +2 -2
  177. data/lib/sequel/plugins/caching.rb +5 -5
  178. data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
  179. data/lib/sequel/plugins/column_conflicts.rb +2 -2
  180. data/lib/sequel/plugins/column_select.rb +2 -2
  181. data/lib/sequel/plugins/composition.rb +15 -24
  182. data/lib/sequel/plugins/constraint_validations.rb +4 -3
  183. data/lib/sequel/plugins/csv_serializer.rb +13 -20
  184. data/lib/sequel/plugins/dataset_associations.rb +2 -2
  185. data/lib/sequel/plugins/def_dataset_method.rb +5 -5
  186. data/lib/sequel/plugins/defaults_setter.rb +1 -1
  187. data/lib/sequel/plugins/delay_add_association.rb +1 -1
  188. data/lib/sequel/plugins/finder.rb +16 -10
  189. data/lib/sequel/plugins/force_encoding.rb +1 -7
  190. data/lib/sequel/plugins/hook_class_methods.rb +4 -106
  191. data/lib/sequel/plugins/input_transformer.rb +10 -11
  192. data/lib/sequel/plugins/insert_returning_select.rb +1 -9
  193. data/lib/sequel/plugins/instance_filters.rb +5 -5
  194. data/lib/sequel/plugins/instance_hooks.rb +7 -52
  195. data/lib/sequel/plugins/inverted_subsets.rb +3 -1
  196. data/lib/sequel/plugins/json_serializer.rb +19 -19
  197. data/lib/sequel/plugins/lazy_attributes.rb +1 -10
  198. data/lib/sequel/plugins/list.rb +6 -6
  199. data/lib/sequel/plugins/many_through_many.rb +11 -8
  200. data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
  201. data/lib/sequel/plugins/nested_attributes.rb +18 -31
  202. data/lib/sequel/plugins/optimistic_locking.rb +3 -3
  203. data/lib/sequel/plugins/pg_array_associations.rb +8 -2
  204. data/lib/sequel/plugins/pg_row.rb +2 -11
  205. data/lib/sequel/plugins/prepared_statements.rb +13 -66
  206. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
  207. data/lib/sequel/plugins/rcte_tree.rb +7 -7
  208. data/lib/sequel/plugins/serialization.rb +15 -33
  209. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  210. data/lib/sequel/plugins/sharding.rb +2 -8
  211. data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
  212. data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
  213. data/lib/sequel/plugins/static_cache.rb +8 -9
  214. data/lib/sequel/plugins/string_stripper.rb +3 -3
  215. data/lib/sequel/plugins/subclasses.rb +1 -1
  216. data/lib/sequel/plugins/subset_conditions.rb +2 -2
  217. data/lib/sequel/plugins/table_select.rb +2 -2
  218. data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
  219. data/lib/sequel/plugins/timestamps.rb +6 -7
  220. data/lib/sequel/plugins/touch.rb +4 -8
  221. data/lib/sequel/plugins/tree.rb +3 -3
  222. data/lib/sequel/plugins/typecast_on_load.rb +2 -2
  223. data/lib/sequel/plugins/unlimited_update.rb +1 -7
  224. data/lib/sequel/plugins/update_or_create.rb +3 -3
  225. data/lib/sequel/plugins/update_refresh.rb +3 -3
  226. data/lib/sequel/plugins/uuid.rb +7 -11
  227. data/lib/sequel/plugins/validation_class_methods.rb +10 -9
  228. data/lib/sequel/plugins/validation_contexts.rb +4 -4
  229. data/lib/sequel/plugins/validation_helpers.rb +26 -25
  230. data/lib/sequel/plugins/whitelist_security.rb +13 -9
  231. data/lib/sequel/plugins/xml_serializer.rb +24 -25
  232. data/lib/sequel/sql.rb +145 -276
  233. data/lib/sequel/timezones.rb +8 -23
  234. data/lib/sequel/version.rb +2 -2
  235. data/lib/sequel.rb +1 -1
  236. data/spec/adapter_spec.rb +1 -1
  237. data/spec/adapters/db2_spec.rb +2 -103
  238. data/spec/adapters/mssql_spec.rb +89 -68
  239. data/spec/adapters/mysql_spec.rb +111 -478
  240. data/spec/adapters/oracle_spec.rb +1 -9
  241. data/spec/adapters/postgres_spec.rb +459 -664
  242. data/spec/adapters/spec_helper.rb +12 -31
  243. data/spec/adapters/sqlanywhere_spec.rb +2 -77
  244. data/spec/adapters/sqlite_spec.rb +8 -146
  245. data/spec/bin_spec.rb +11 -16
  246. data/spec/core/connection_pool_spec.rb +173 -74
  247. data/spec/core/database_spec.rb +96 -244
  248. data/spec/core/dataset_spec.rb +99 -414
  249. data/spec/core/deprecated_spec.rb +3 -3
  250. data/spec/core/expression_filters_spec.rb +37 -144
  251. data/spec/core/mock_adapter_spec.rb +241 -4
  252. data/spec/core/object_graph_spec.rb +11 -60
  253. data/spec/core/placeholder_literalizer_spec.rb +1 -14
  254. data/spec/core/schema_generator_spec.rb +51 -40
  255. data/spec/core/schema_spec.rb +88 -77
  256. data/spec/core/spec_helper.rb +6 -24
  257. data/spec/core/version_spec.rb +1 -1
  258. data/spec/core_extensions_spec.rb +7 -83
  259. data/spec/core_model_spec.rb +2 -2
  260. data/spec/deprecation_helper.rb +2 -14
  261. data/spec/extensions/accessed_columns_spec.rb +1 -1
  262. data/spec/extensions/active_model_spec.rb +3 -3
  263. data/spec/extensions/after_initialize_spec.rb +1 -1
  264. data/spec/extensions/arbitrary_servers_spec.rb +2 -2
  265. data/spec/extensions/association_dependencies_spec.rb +1 -1
  266. data/spec/extensions/association_pks_spec.rb +30 -92
  267. data/spec/extensions/association_proxies_spec.rb +1 -1
  268. data/spec/extensions/auto_literal_strings_spec.rb +1 -12
  269. data/spec/extensions/auto_validations_spec.rb +1 -1
  270. data/spec/extensions/blacklist_security_spec.rb +1 -1
  271. data/spec/extensions/blank_spec.rb +1 -1
  272. data/spec/extensions/boolean_readers_spec.rb +1 -1
  273. data/spec/extensions/boolean_subsets_spec.rb +1 -1
  274. data/spec/extensions/caching_spec.rb +1 -1
  275. data/spec/extensions/class_table_inheritance_spec.rb +53 -1118
  276. data/spec/extensions/column_conflicts_spec.rb +1 -1
  277. data/spec/extensions/column_select_spec.rb +4 -4
  278. data/spec/extensions/columns_introspection_spec.rb +1 -1
  279. data/spec/extensions/columns_updated_spec.rb +1 -1
  280. data/spec/extensions/composition_spec.rb +8 -30
  281. data/spec/extensions/connection_expiration_spec.rb +3 -3
  282. data/spec/extensions/connection_validator_spec.rb +3 -3
  283. data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
  284. data/spec/extensions/constraint_validations_spec.rb +1 -1
  285. data/spec/extensions/core_refinements_spec.rb +1 -3
  286. data/spec/extensions/csv_serializer_spec.rb +4 -9
  287. data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
  288. data/spec/extensions/dataset_associations_spec.rb +2 -1
  289. data/spec/extensions/dataset_source_alias_spec.rb +1 -1
  290. data/spec/extensions/date_arithmetic_spec.rb +3 -3
  291. data/spec/extensions/def_dataset_method_spec.rb +1 -1
  292. data/spec/extensions/defaults_setter_spec.rb +2 -2
  293. data/spec/extensions/delay_add_association_spec.rb +8 -9
  294. data/spec/extensions/dirty_spec.rb +1 -1
  295. data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
  296. data/spec/extensions/eager_each_spec.rb +2 -2
  297. data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
  298. data/spec/extensions/error_splitter_spec.rb +1 -1
  299. data/spec/extensions/error_sql_spec.rb +1 -1
  300. data/spec/extensions/eval_inspect_spec.rb +1 -1
  301. data/spec/extensions/finder_spec.rb +1 -1
  302. data/spec/extensions/force_encoding_spec.rb +2 -5
  303. data/spec/extensions/freeze_datasets_spec.rb +1 -1
  304. data/spec/extensions/graph_each_spec.rb +5 -5
  305. data/spec/extensions/hook_class_methods_spec.rb +1 -194
  306. data/spec/extensions/identifier_mangling_spec.rb +17 -170
  307. data/spec/extensions/implicit_subquery_spec.rb +1 -5
  308. data/spec/extensions/inflector_spec.rb +1 -1
  309. data/spec/extensions/input_transformer_spec.rb +7 -2
  310. data/spec/extensions/insert_returning_select_spec.rb +1 -1
  311. data/spec/extensions/instance_filters_spec.rb +1 -1
  312. data/spec/extensions/instance_hooks_spec.rb +1 -95
  313. data/spec/extensions/inverted_subsets_spec.rb +1 -1
  314. data/spec/extensions/json_serializer_spec.rb +1 -1
  315. data/spec/extensions/lazy_attributes_spec.rb +1 -7
  316. data/spec/extensions/list_spec.rb +5 -6
  317. data/spec/extensions/looser_typecasting_spec.rb +1 -1
  318. data/spec/extensions/many_through_many_spec.rb +25 -33
  319. data/spec/extensions/migration_spec.rb +12 -2
  320. data/spec/extensions/modification_detection_spec.rb +1 -1
  321. data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
  322. data/spec/extensions/named_timezones_spec.rb +3 -3
  323. data/spec/extensions/nested_attributes_spec.rb +1 -29
  324. data/spec/extensions/null_dataset_spec.rb +1 -11
  325. data/spec/extensions/optimistic_locking_spec.rb +2 -2
  326. data/spec/extensions/pagination_spec.rb +1 -1
  327. data/spec/extensions/pg_array_associations_spec.rb +22 -26
  328. data/spec/extensions/pg_array_ops_spec.rb +1 -1
  329. data/spec/extensions/pg_array_spec.rb +3 -48
  330. data/spec/extensions/pg_enum_spec.rb +1 -1
  331. data/spec/extensions/pg_extended_date_support_spec.rb +122 -0
  332. data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
  333. data/spec/extensions/pg_hstore_spec.rb +22 -31
  334. data/spec/extensions/pg_inet_ops_spec.rb +1 -1
  335. data/spec/extensions/pg_inet_spec.rb +1 -14
  336. data/spec/extensions/pg_interval_spec.rb +3 -13
  337. data/spec/extensions/pg_json_ops_spec.rb +1 -1
  338. data/spec/extensions/pg_json_spec.rb +1 -13
  339. data/spec/extensions/pg_loose_count_spec.rb +1 -1
  340. data/spec/extensions/pg_range_ops_spec.rb +1 -1
  341. data/spec/extensions/pg_range_spec.rb +3 -88
  342. data/spec/extensions/pg_row_ops_spec.rb +1 -1
  343. data/spec/extensions/pg_row_plugin_spec.rb +1 -1
  344. data/spec/extensions/pg_row_spec.rb +1 -44
  345. data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
  346. data/spec/extensions/prepared_statements_safe_spec.rb +7 -7
  347. data/spec/extensions/prepared_statements_spec.rb +13 -48
  348. data/spec/extensions/pretty_table_spec.rb +40 -9
  349. data/spec/extensions/query_spec.rb +1 -12
  350. data/spec/extensions/rcte_tree_spec.rb +23 -34
  351. data/spec/extensions/round_timestamps_spec.rb +1 -5
  352. data/spec/extensions/s_spec.rb +1 -1
  353. data/spec/extensions/schema_caching_spec.rb +1 -1
  354. data/spec/extensions/schema_dumper_spec.rb +43 -32
  355. data/spec/extensions/select_remove_spec.rb +1 -1
  356. data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
  357. data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
  358. data/spec/extensions/serialization_spec.rb +5 -17
  359. data/spec/extensions/server_block_spec.rb +1 -1
  360. data/spec/extensions/server_logging_spec.rb +2 -2
  361. data/spec/extensions/sharding_spec.rb +1 -1
  362. data/spec/extensions/shared_caching_spec.rb +1 -28
  363. data/spec/extensions/single_table_inheritance_spec.rb +2 -5
  364. data/spec/extensions/singular_table_names_spec.rb +1 -1
  365. data/spec/extensions/skip_create_refresh_spec.rb +1 -1
  366. data/spec/extensions/spec_helper.rb +5 -27
  367. data/spec/extensions/split_array_nil_spec.rb +1 -1
  368. data/spec/extensions/split_values_spec.rb +1 -1
  369. data/spec/extensions/sql_comments_spec.rb +1 -1
  370. data/spec/extensions/sql_expr_spec.rb +1 -1
  371. data/spec/extensions/static_cache_spec.rb +1 -1
  372. data/spec/extensions/string_agg_spec.rb +2 -2
  373. data/spec/extensions/string_date_time_spec.rb +1 -1
  374. data/spec/extensions/string_stripper_spec.rb +1 -1
  375. data/spec/extensions/subclasses_spec.rb +1 -1
  376. data/spec/extensions/subset_conditions_spec.rb +1 -1
  377. data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
  378. data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
  379. data/spec/extensions/synchronize_sql_spec.rb +124 -0
  380. data/spec/extensions/table_select_spec.rb +4 -4
  381. data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
  382. data/spec/extensions/thread_local_timezones_spec.rb +1 -1
  383. data/spec/extensions/timestamps_spec.rb +5 -7
  384. data/spec/extensions/to_dot_spec.rb +1 -1
  385. data/spec/extensions/touch_spec.rb +1 -1
  386. data/spec/extensions/tree_spec.rb +1 -1
  387. data/spec/extensions/typecast_on_load_spec.rb +1 -1
  388. data/spec/extensions/unlimited_update_spec.rb +1 -1
  389. data/spec/extensions/update_or_create_spec.rb +12 -16
  390. data/spec/extensions/update_primary_key_spec.rb +4 -3
  391. data/spec/extensions/update_refresh_spec.rb +1 -1
  392. data/spec/extensions/uuid_spec.rb +10 -13
  393. data/spec/extensions/validate_associated_spec.rb +1 -1
  394. data/spec/extensions/validation_class_methods_spec.rb +3 -3
  395. data/spec/extensions/validation_contexts_spec.rb +1 -1
  396. data/spec/extensions/validation_helpers_spec.rb +10 -44
  397. data/spec/extensions/whitelist_security_spec.rb +5 -5
  398. data/spec/extensions/xml_serializer_spec.rb +8 -13
  399. data/spec/guards_helper.rb +2 -1
  400. data/spec/integration/associations_test.rb +1 -23
  401. data/spec/integration/database_test.rb +7 -7
  402. data/spec/integration/dataset_test.rb +12 -47
  403. data/spec/integration/eager_loader_test.rb +1 -1
  404. data/spec/integration/migrator_test.rb +1 -1
  405. data/spec/integration/model_test.rb +4 -82
  406. data/spec/integration/plugin_test.rb +7 -23
  407. data/spec/integration/prepared_statement_test.rb +8 -88
  408. data/spec/integration/schema_test.rb +10 -10
  409. data/spec/integration/spec_helper.rb +17 -21
  410. data/spec/integration/timezone_test.rb +5 -5
  411. data/spec/integration/transaction_test.rb +3 -55
  412. data/spec/integration/type_test.rb +9 -9
  413. data/spec/model/association_reflection_spec.rb +24 -9
  414. data/spec/model/associations_spec.rb +124 -303
  415. data/spec/model/base_spec.rb +43 -137
  416. data/spec/model/class_dataset_methods_spec.rb +2 -20
  417. data/spec/model/dataset_methods_spec.rb +1 -20
  418. data/spec/model/eager_loading_spec.rb +48 -17
  419. data/spec/model/hooks_spec.rb +5 -300
  420. data/spec/model/inflector_spec.rb +1 -1
  421. data/spec/model/model_spec.rb +29 -339
  422. data/spec/model/plugins_spec.rb +2 -16
  423. data/spec/model/record_spec.rb +33 -129
  424. data/spec/model/spec_helper.rb +5 -15
  425. data/spec/model/validations_spec.rb +1 -1
  426. data/spec/sequel_warning.rb +1 -12
  427. metadata +19 -65
  428. data/doc/active_record.rdoc +0 -927
  429. data/lib/sequel/adapters/cubrid.rb +0 -160
  430. data/lib/sequel/adapters/do/mysql.rb +0 -69
  431. data/lib/sequel/adapters/do/postgres.rb +0 -46
  432. data/lib/sequel/adapters/do/sqlite3.rb +0 -41
  433. data/lib/sequel/adapters/do.rb +0 -166
  434. data/lib/sequel/adapters/jdbc/as400.rb +0 -92
  435. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
  436. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
  437. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
  438. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
  439. data/lib/sequel/adapters/odbc/progress.rb +0 -12
  440. data/lib/sequel/adapters/shared/cubrid.rb +0 -245
  441. data/lib/sequel/adapters/shared/firebird.rb +0 -261
  442. data/lib/sequel/adapters/shared/informix.rb +0 -63
  443. data/lib/sequel/adapters/shared/progress.rb +0 -40
  444. data/lib/sequel/adapters/swift/mysql.rb +0 -50
  445. data/lib/sequel/adapters/swift/postgres.rb +0 -49
  446. data/lib/sequel/adapters/swift/sqlite.rb +0 -48
  447. data/lib/sequel/adapters/swift.rb +0 -169
  448. data/lib/sequel/adapters/utils/pg_types.rb +0 -4
  449. data/lib/sequel/dataset/mutation.rb +0 -98
  450. data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
  451. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
  452. data/lib/sequel/extensions/filter_having.rb +0 -65
  453. data/lib/sequel/extensions/hash_aliases.rb +0 -51
  454. data/lib/sequel/extensions/meta_def.rb +0 -37
  455. data/lib/sequel/extensions/query_literals.rb +0 -86
  456. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
  457. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
  458. data/lib/sequel/extensions/set_overrides.rb +0 -82
  459. data/lib/sequel/no_core_ext.rb +0 -4
  460. data/lib/sequel/plugins/association_autoreloading.rb +0 -11
  461. data/lib/sequel/plugins/identifier_columns.rb +0 -49
  462. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
  463. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
  464. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
  465. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
  466. data/lib/sequel/plugins/schema.rb +0 -84
  467. data/lib/sequel/plugins/scissors.rb +0 -37
  468. data/spec/core/dataset_mutation_spec.rb +0 -253
  469. data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
  470. data/spec/extensions/before_after_save_spec.rb +0 -40
  471. data/spec/extensions/filter_having_spec.rb +0 -42
  472. data/spec/extensions/from_block_spec.rb +0 -21
  473. data/spec/extensions/hash_aliases_spec.rb +0 -26
  474. data/spec/extensions/identifier_columns_spec.rb +0 -19
  475. data/spec/extensions/meta_def_spec.rb +0 -35
  476. data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
  477. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
  478. data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
  479. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
  480. data/spec/extensions/query_literals_spec.rb +0 -185
  481. data/spec/extensions/schema_spec.rb +0 -123
  482. data/spec/extensions/scissors_spec.rb +0 -27
  483. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
  484. data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -1,7 +1,7 @@
1
1
  # frozen-string-literal: true
2
2
 
3
3
  Sequel::JDBC.load_driver('org.postgresql.Driver', :Postgres)
4
- Sequel.require 'adapters/shared/postgres'
4
+ require_relative '../shared/postgres'
5
5
 
6
6
  module Sequel
7
7
  module JDBC
@@ -13,22 +13,6 @@ module Sequel
13
13
  end
14
14
  end
15
15
 
16
- # SEQUEL5: Remove
17
- class Type_Convertor
18
- def RubyPGArray(r, i)
19
- if v = r.getArray(i)
20
- v.array.to_ary
21
- end
22
- end
23
- def RubyPGHstore(r, i)
24
- if v = r.getObject(i)
25
- v.to_hash
26
- end
27
- end
28
- end
29
-
30
- # Adapter, Database, and Dataset support for accessing a PostgreSQL
31
- # database via JDBC.
32
16
  module Postgres
33
17
  # Return PostgreSQL array types as ruby Arrays instead of
34
18
  # JDBC PostgreSQL driver-specific array type. Only used if the
@@ -48,8 +32,6 @@ module Sequel
48
32
  end
49
33
  end
50
34
 
51
- # Methods to add to Database instances that access PostgreSQL via
52
- # JDBC.
53
35
  module DatabaseMethods
54
36
  include Sequel::Postgres::DatabaseMethods
55
37
 
@@ -83,10 +65,14 @@ module Sequel
83
65
  copier = copy_manager.copy_in(copy_into_sql(table, opts))
84
66
  if block_given?
85
67
  while buf = yield
86
- copier.writeToCopy(buf.to_java_bytes, 0, buf.length)
68
+ java_bytes = buf.to_java_bytes
69
+ copier.writeToCopy(java_bytes, 0, java_bytes.length)
87
70
  end
88
71
  else
89
- data.each { |d| copier.writeToCopy(d.to_java_bytes, 0, d.length) }
72
+ data.each do |d|
73
+ java_bytes = d.to_java_bytes
74
+ copier.writeToCopy(java_bytes, 0, java_bytes.length)
75
+ end
90
76
  end
91
77
  rescue Exception => e
92
78
  copier.cancelCopy if copier
@@ -149,12 +135,6 @@ module Sequel
149
135
 
150
136
  private
151
137
 
152
- # SEQUEL5: Remove
153
- def conversion_procs_updated
154
- super
155
- Sequel.synchronize{@oid_convertor_map = {}}
156
- end
157
-
158
138
  DATABASE_ERROR_CLASSES = [NativeException].freeze
159
139
  def database_error_classes
160
140
  DATABASE_ERROR_CLASSES
@@ -171,6 +151,21 @@ module Sequel
171
151
  nil
172
152
  end
173
153
 
154
+ # Work around issue when using Sequel's bound variable support where the
155
+ # same SQL is used in different bound variable calls, but the schema has
156
+ # changed between the calls. This is necessary as jdbc-postgres versions
157
+ # after 9.4.1200 violate the JDBC API. These versions cache separate
158
+ # PreparedStatement instances, which are eventually prepared server side after the
159
+ # prepareThreshold is met. The JDBC API violation is that PreparedStatement#close
160
+ # does not release the server side prepared statement.
161
+ def prepare_jdbc_statement(conn, sql, opts)
162
+ ps = super
163
+ unless opts[:name]
164
+ ps.prepare_threshold = 0
165
+ end
166
+ ps
167
+ end
168
+
174
169
  # If the given argument is a recognized PostgreSQL-specific type, create
175
170
  # a PGObject instance with unknown type and the bound argument string value,
176
171
  # and set that as the prepared statement argument.
@@ -206,13 +201,8 @@ module Sequel
206
201
  end
207
202
  end
208
203
 
209
- # Dataset subclass used for datasets that connect to PostgreSQL via JDBC.
210
204
  class Dataset < JDBC::Dataset
211
205
  include Sequel::Postgres::DatasetMethods
212
- APOS = "'".freeze
213
- Sequel::Deprecation.deprecate_constant(self, :APOS)
214
- HSTORE_TYPE = 'hstore'.freeze
215
- Sequel::Deprecation.deprecate_constant(self, :HSTORE_TYPE)
216
206
 
217
207
  private
218
208
 
@@ -229,7 +219,7 @@ module Sequel
229
219
  STRING_TYPE = Java::JavaSQL::Types::VARCHAR
230
220
  ARRAY_TYPE = Java::JavaSQL::Types::ARRAY
231
221
  ARRAY_METHOD = Postgres.method(:RubyPGArray)
232
- PG_SPECIFIC_TYPES = [ARRAY_TYPE, Java::JavaSQL::Types::OTHER, Java::JavaSQL::Types::STRUCT]#.freeze # SEQUEL5
222
+ PG_SPECIFIC_TYPES = [ARRAY_TYPE, Java::JavaSQL::Types::OTHER, Java::JavaSQL::Types::STRUCT].freeze
233
223
  HSTORE_METHOD = Postgres.method(:RubyPGHstore)
234
224
 
235
225
  def type_convertor(map, meta, type, i)
@@ -1,7 +1,7 @@
1
1
  # frozen-string-literal: true
2
2
 
3
- Sequel.require 'adapters/shared/sqlanywhere'
4
- Sequel.require 'adapters/jdbc/transactions'
3
+ require_relative '../shared/sqlanywhere'
4
+ require_relative 'transactions'
5
5
 
6
6
  module Sequel
7
7
  module JDBC
@@ -23,37 +23,25 @@ module Sequel
23
23
  Sequel.synchronize do
24
24
  DATABASE_SETUP[:sqlanywhere] = proc do |db|
25
25
  db.extend(Sequel::JDBC::SqlAnywhere::DatabaseMethods)
26
+ db.convert_smallint_to_bool = true
26
27
  db.dataset_class = Sequel::JDBC::SqlAnywhere::Dataset
27
28
  drv
28
29
  end
29
30
  end
30
31
 
31
- # SEQUEL5: Remove
32
- class Type_Convertor
33
- def SqlAnywhereBoolean(r, i)
34
- if v = Short(r, i)
35
- v != 0
36
- end
37
- end
38
- end
39
-
40
32
  module SqlAnywhere
41
33
  def self.SqlAnywhereBoolean(r, i)
42
34
  v = r.getShort(i)
43
35
  v != 0 unless r.wasNull
44
36
  end
45
37
 
46
- # Database instance methods for Sybase databases accessed via JDBC.
47
38
  module DatabaseMethods
48
39
  include Sequel::SqlAnywhere::DatabaseMethods
49
40
  include Sequel::JDBC::Transactions
50
41
 
51
- LAST_INSERT_ID = 'SELECT @@IDENTITY'.freeze
52
- Sequel::Deprecation.deprecate_constant(self, :LAST_INSERT_ID)
53
-
54
42
  private
55
43
 
56
- # Get the last inserted id.
44
+ # Use @@IDENTITY to get the last inserted id
57
45
  def last_insert_id(conn, opts=OPTS)
58
46
  statement(conn) do |stmt|
59
47
  sql = 'SELECT @@IDENTITY'
@@ -64,7 +52,6 @@ module Sequel
64
52
  end
65
53
  end
66
54
 
67
- #Dataset class for Sybase datasets accessed via JDBC.
68
55
  class Dataset < JDBC::Dataset
69
56
  include Sequel::SqlAnywhere::DatasetMethods
70
57
 
@@ -1,7 +1,7 @@
1
1
  # frozen-string-literal: true
2
2
 
3
3
  Sequel::JDBC.load_driver('org.sqlite.JDBC', :SQLite3)
4
- Sequel.require 'adapters/shared/sqlite'
4
+ require_relative '../shared/sqlite'
5
5
 
6
6
  module Sequel
7
7
  module JDBC
@@ -14,15 +14,9 @@ module Sequel
14
14
  end
15
15
  end
16
16
 
17
- # Database and Dataset support for SQLite databases accessed via JDBC.
18
17
  module SQLite
19
- # Instance methods for SQLite Database objects accessed via JDBC.
20
18
  module DatabaseMethods
21
19
  include Sequel::SQLite::DatabaseMethods
22
- LAST_INSERT_ROWID = 'SELECT last_insert_rowid()'.freeze
23
- Sequel::Deprecation.deprecate_constant(self, :LAST_INSERT_ROWID)
24
- FOREIGN_KEY_ERROR_RE = /query does not return ResultSet/.freeze
25
- Sequel::Deprecation.deprecate_constant(self, :FOREIGN_KEY_ERROR_RE)
26
20
 
27
21
  # Swallow pointless exceptions when the foreign key list pragma
28
22
  # doesn't return any rows.
@@ -1,7 +1,7 @@
1
1
  # frozen-string-literal: true
2
2
 
3
3
  Sequel::JDBC.load_driver('com.microsoft.sqlserver.jdbc.SQLServerDriver')
4
- Sequel.require 'adapters/jdbc/mssql'
4
+ require_relative 'mssql'
5
5
 
6
6
  module Sequel
7
7
  module JDBC
@@ -14,17 +14,6 @@ module Sequel
14
14
  end
15
15
  end
16
16
 
17
- # SEQUEL5: Remove
18
- class Type_Convertor
19
- def MSSQLRubyTime(r, i)
20
- if v = r.getString(i)
21
- Sequel.string_to_time("#{v}")
22
- end
23
- end
24
- end
25
-
26
- # Database and Dataset instance methods for SQLServer specific
27
- # support via JDBC.
28
17
  module SQLServer
29
18
  def self.MSSQLRubyTime(r, i)
30
19
  # MSSQL-Server TIME should be fetched as string to keep the precision intact, see:
@@ -34,7 +23,6 @@ module Sequel
34
23
  end
35
24
  end
36
25
 
37
- # Database instance methods for SQLServer databases accessed via JDBC.
38
26
  module DatabaseMethods
39
27
  include Sequel::JDBC::MSSQL::DatabaseMethods
40
28
 
@@ -3,19 +3,6 @@
3
3
  module Sequel
4
4
  module JDBC
5
5
  module Transactions
6
- TRANSACTION_BEGIN = 'Transaction.begin'.freeze
7
- Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_BEGIN)
8
- TRANSACTION_COMMIT = 'Transaction.commit'.freeze
9
- Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_COMMIT)
10
- TRANSACTION_RELEASE_SP = 'Transaction.release_savepoint'.freeze
11
- Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_RELEASE_SP)
12
- TRANSACTION_ROLLBACK = 'Transaction.rollback'.freeze
13
- Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_ROLLBACK)
14
- TRANSACTION_ROLLBACK_SP = 'Transaction.rollback_savepoint'.freeze
15
- Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_ROLLBACK_SP)
16
- TRANSACTION_SAVEPOINT= 'Transaction.savepoint'.freeze
17
- Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_SAVEPOINT)
18
-
19
6
  def freeze
20
7
  supports_savepoints?
21
8
  super
@@ -38,7 +25,7 @@ module Sequel
38
25
  JDBC_TRANSACTION_ISOLATION_LEVELS = {:uncommitted=>JavaSQL::Connection::TRANSACTION_READ_UNCOMMITTED,
39
26
  :committed=>JavaSQL::Connection::TRANSACTION_READ_COMMITTED,
40
27
  :repeatable=>JavaSQL::Connection::TRANSACTION_REPEATABLE_READ,
41
- :serializable=>JavaSQL::Connection::TRANSACTION_SERIALIZABLE}#.freeze # SEQUEL5
28
+ :serializable=>JavaSQL::Connection::TRANSACTION_SERIALIZABLE}.freeze
42
29
 
43
30
  # Set the transaction isolation level on the given connection using
44
31
  # the JDBC API.
@@ -1,37 +1,19 @@
1
1
  # frozen-string-literal: true
2
2
 
3
3
  require 'java'
4
- Sequel.require 'adapters/utils/stored_procedures'
4
+ require_relative 'utils/stored_procedures'
5
5
 
6
6
  module Sequel
7
- # Houses Sequel's JDBC support when running on JRuby.
8
7
  module JDBC
9
- # Make it accesing the java.lang hierarchy more ruby friendly.
10
- module JavaLang
11
- include_package 'java.lang'
12
- end
13
- Sequel::Deprecation.deprecate_constant(self, :JavaLang)
14
-
15
8
  # Make it accesing the java.sql hierarchy more ruby friendly.
16
9
  module JavaSQL
17
10
  include_package 'java.sql'
18
11
  end
19
12
 
20
- # Make it accesing the javax.naming hierarchy more ruby friendly.
21
- module JavaxNaming
22
- include_package 'javax.naming'
23
- end
24
- Sequel::Deprecation.deprecate_constant(self, :JavaxNaming)
25
-
26
13
  # Used to identify a jndi connection and to extract the jndi
27
14
  # resource name.
28
15
  JNDI_URI_REGEXP = /\Ajdbc:jndi:(.+)/
29
16
 
30
- # The types to check for 0 scale to transform :decimal types
31
- # to :integer.
32
- DECIMAL_TYPE_RE = /number|numeric|decimal/io
33
- Sequel::Deprecation.deprecate_constant(self, :DECIMAL_TYPE_RE)
34
-
35
17
  # Contains procs keyed on subadapter type that extend the
36
18
  # given database object so it supports the correct database type.
37
19
  DATABASE_SETUP = {}
@@ -100,8 +82,7 @@ module Sequel
100
82
  end
101
83
  end
102
84
 
103
- INSTANCE = new
104
- o = INSTANCE
85
+ o = new
105
86
  MAP = Hash.new(o.method(:Object))
106
87
  types = Java::JavaSQL::Types
107
88
 
@@ -143,16 +124,9 @@ module Sequel
143
124
 
144
125
  MAP.freeze
145
126
  BASIC_MAP.freeze
146
- INSTANCE.freeze
147
- # freeze # SEQUEL5
127
+ freeze
148
128
  end
149
129
 
150
- # SEQUEL5: Remove
151
- Type_Convertor = TypeConvertor
152
- Sequel::Deprecation.deprecate_constant(self, :TypeConvertor)
153
-
154
- # JDBC Databases offer a fairly uniform interface that does not change
155
- # much based on the sub adapter.
156
130
  class Database < Sequel::Database
157
131
  set_adapter_scheme :jdbc
158
132
 
@@ -202,7 +176,8 @@ module Sequel
202
176
  end
203
177
  end
204
178
 
205
- # Connect to the database using JavaSQL::DriverManager.getConnection.
179
+ # Connect to the database using JavaSQL::DriverManager.getConnection, and falling back
180
+ # to driver.new.connect if the driver is known.
206
181
  def connect(server)
207
182
  opts = server_opts(server)
208
183
  conn = if jndi?
@@ -245,8 +220,6 @@ module Sequel
245
220
  c.close
246
221
  end
247
222
 
248
- # Execute the given SQL. If a block is given, if should be a SELECT
249
- # statement or something else that returns rows.
250
223
  def execute(sql, opts=OPTS, &block)
251
224
  return call_sproc(sql, opts, &block) if opts[:sproc]
252
225
  return execute_prepared_statement(sql, opts, &block) if [Symbol, Dataset].any?{|c| sql.is_a?(c)}
@@ -273,16 +246,12 @@ module Sequel
273
246
  end
274
247
  alias execute_dui execute
275
248
 
276
- # Execute the given DDL SQL, which should not return any
277
- # values or rows.
278
249
  def execute_ddl(sql, opts=OPTS)
279
250
  opts = Hash[opts]
280
251
  opts[:type] = :ddl
281
252
  execute(sql, opts)
282
253
  end
283
254
 
284
- # Execute the given INSERT SQL, returning the last inserted
285
- # row id.
286
255
  def execute_insert(sql, opts=OPTS)
287
256
  opts = Hash[opts]
288
257
  opts[:type] = :insert
@@ -435,6 +404,10 @@ module Sequel
435
404
  cps = cps[1]
436
405
  else
437
406
  log_connection_yield("CLOSE #{name}", conn){cps[1].close} if cps
407
+ if name
408
+ opts = Hash[opts]
409
+ opts[:name] = name
410
+ end
438
411
  cps = log_connection_yield("PREPARE#{" #{name}:" if name} #{sql}", conn){prepare_jdbc_statement(conn, sql, opts)}
439
412
  if size = fetch_size
440
413
  cps.setFetchSize(size)
@@ -520,27 +493,24 @@ module Sequel
520
493
  # Support DateTime objects used in bound variables
521
494
  def java_sql_datetime(datetime)
522
495
  ts = java.sql.Timestamp.new(Time.local(datetime.year, datetime.month, datetime.day, datetime.hour, datetime.min, datetime.sec).to_i * 1000)
523
- ts.setNanos((datetime.sec_fraction * (RUBY_VERSION >= '1.9.0' ? 1000000000 : 86400000000000)).to_i)
496
+ ts.setNanos((datetime.sec_fraction * 1000000000).to_i)
524
497
  ts
525
498
  end
526
499
 
527
500
  # Support fractional seconds for Time objects used in bound variables
528
501
  def java_sql_timestamp(time)
529
502
  ts = java.sql.Timestamp.new(time.to_i * 1000)
530
- # Work around jruby 1.6 ruby 1.9 mode bug # SEQUEL5: Remove workaround
531
- ts.setNanos((RUBY_VERSION >= '1.9.0' && time.nsec != 0) ? time.nsec : time.usec * 1000)
503
+ ts.setNanos(time.nsec)
532
504
  ts
533
505
  end
534
506
 
535
- # Log the given SQL and then execute it on the connection, used by
536
- # the transaction code.
537
507
  def log_connection_execute(conn, sql)
538
508
  statement(conn){|s| log_connection_yield(sql, conn){s.execute(sql)}}
539
509
  end
540
510
 
541
511
  # By default, there is no support for determining the last inserted
542
512
  # id, so return nil. This method should be overridden in
543
- # sub adapters.
513
+ # subadapters.
544
514
  def last_insert_id(conn, opts)
545
515
  nil
546
516
  end
@@ -548,7 +518,7 @@ module Sequel
548
518
  # Yield the metadata for this database
549
519
  def metadata(*args, &block)
550
520
  synchronize do |c|
551
- result = c.getMetaData.send(*args)
521
+ result = c.getMetaData.public_send(*args)
552
522
  begin
553
523
  metadata_dataset.send(:process_result_set, result, &block)
554
524
  ensure
@@ -610,8 +580,7 @@ module Sequel
610
580
  cps.setString(i, nil)
611
581
  end
612
582
 
613
- # Return the connection. Used to do configuration on the
614
- # connection object before adding it to the connection pool.
583
+ # Return the connection. Can be overridden in subadapters for database specific setup.
615
584
  def setup_connection(conn)
616
585
  conn
617
586
  end
@@ -629,7 +598,6 @@ module Sequel
629
598
  end
630
599
  end
631
600
 
632
- # Parse the table schema for the given table.
633
601
  def schema_parse_table(table, opts=OPTS)
634
602
  m = output_identifier_meth(opts[:dataset])
635
603
  schema, table = metadata_schema_and_table(table, opts)
@@ -668,8 +636,7 @@ module Sequel
668
636
  ts
669
637
  end
670
638
 
671
- # Whether schema_parse_table should skip the given row when
672
- # parsing the schema.
639
+ # Skip tables in the INFORMATION_SCHEMA when parsing columns.
673
640
  def schema_parse_table_skip?(h, schema)
674
641
  h[:table_schem] == 'INFORMATION_SCHEMA'
675
642
  end
@@ -679,11 +646,10 @@ module Sequel
679
646
  end
680
647
 
681
648
  # Called before loading subadapter-specific code, necessary so that subadapter initialization code
682
- # that runs queries works correctly. This cannot be overriding in subadapters,
649
+ # that runs queries works correctly. This cannot be overridden in subadapters.
683
650
  def setup_type_convertor_map_early
684
- # SEQUEL5: Change back to TypeConvertor
685
- @type_convertor_map = Type_Convertor::MAP.merge(Java::JavaSQL::Types::TIMESTAMP=>method(:timestamp_convert))
686
- @basic_type_convertor_map = Type_Convertor::BASIC_MAP.dup
651
+ @type_convertor_map = TypeConvertor::MAP.merge(Java::JavaSQL::Types::TIMESTAMP=>method(:timestamp_convert))
652
+ @basic_type_convertor_map = TypeConvertor::BASIC_MAP.dup
687
653
  end
688
654
 
689
655
  # Yield a new statement object, and ensure that it is closed before returning.
@@ -703,27 +669,17 @@ module Sequel
703
669
  to_application_timestamp([v.getYear + 1900, v.getMonth + 1, v.getDate, v.getHours, v.getMinutes, v.getSeconds, v.getNanos])
704
670
  end
705
671
  end
706
-
707
- # SEQUEL5: Remove
708
- def timestamp_convertor
709
- Sequel::Deprecation.deprecate("Sequel::JDBC::Database#timestamp_convertor", "Use method(:timestamp_convert) instead")
710
- method(:timestamp_convert)
711
- end
712
672
  end
713
673
 
714
674
  class Dataset < Sequel::Dataset
715
675
  include StoredProcedures
716
676
 
717
- Database::DatasetClass = self
718
- Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
719
-
720
677
  PreparedStatementMethods = prepared_statements_module(
721
678
  "sql = self; opts = Hash[opts]; opts[:arguments] = bind_arguments",
722
679
  Sequel::Dataset::UnnumberedArgumentMapper,
723
680
  %w"execute execute_dui") do
724
681
  private
725
682
 
726
- # Same as execute, explicit due to intricacies of alias and super.
727
683
  def execute_insert(sql, opts=OPTS)
728
684
  sql = self
729
685
  opts = Hash[opts]
@@ -739,7 +695,6 @@ module Sequel
739
695
  %w"execute execute_dui") do
740
696
  private
741
697
 
742
- # Same as execute, explicit due to intricacies of alias and super.
743
698
  def execute_insert(sql, opts=OPTS)
744
699
  sql = @opts[:sproc_name]
745
700
  opts = Hash[opts]
@@ -750,17 +705,6 @@ module Sequel
750
705
  end
751
706
  end
752
707
 
753
- # Whether to convert some Java types to ruby types when retrieving rows.
754
- def convert_types
755
- Sequel::Deprecation.deprecate("Sequel::JDBC::Dataset#convert_types", "The private #convert_types? method returns whether to convert types for this dataset")
756
- @opts[:convert_types]
757
- end
758
- def convert_types=(v)
759
- Sequel::Deprecation.deprecate("Sequel::JDBC::Dataset#convert_types=", "Switch to using #with_convert_types, which returns a modified copy")
760
- @opts[:convert_types] = v
761
- end
762
-
763
- # Correctly return rows from the database and return them as hashes.
764
708
  def fetch_rows(sql, &block)
765
709
  execute(sql){|result| process_result_set(result, &block)}
766
710
  self
@@ -1,10 +1,9 @@
1
1
  # frozen-string-literal: true
2
2
 
3
- Sequel.require 'adapters/utils/unmodified_identifiers'
3
+ require_relative 'utils/unmodified_identifiers'
4
4
 
5
5
  module Sequel
6
6
  module Mock
7
- # Connection class for Sequel's mock adapter.
8
7
  class Connection
9
8
  # Sequel::Mock::Database object that created this connection
10
9
  attr_reader :db
@@ -30,7 +29,6 @@ module Sequel
30
29
  end
31
30
  end
32
31
 
33
- # Database class for Sequel's mock adapter.
34
32
  class Database < Sequel::Database
35
33
  set_adapter_scheme :mock
36
34
 
@@ -61,9 +59,9 @@ module Sequel
61
59
  # Set the columns to set in the dataset when the dataset fetches
62
60
  # rows. Argument types supported:
63
61
  # nil :: Set no columns
64
- # Array of Symbols: Used for all datasets
65
- # Array (otherwise): First retrieval gets the first value in the
66
- # array, second gets the second value, etc.
62
+ # Array of Symbols :: Used for all datasets
63
+ # Array (otherwise) :: First retrieval gets the first value in the
64
+ # array, second gets the second value, etc.
67
65
  # Proc :: Called with the select SQL query, uses the value
68
66
  # returned, which should be an array of symbols
69
67
  attr_writer :columns
@@ -311,45 +309,21 @@ module Sequel
311
309
  end
312
310
 
313
311
  class Dataset < Sequel::Dataset
314
- Database::DatasetClass = self
315
- Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
316
-
317
312
  # The autoid setting for this dataset, if it has been overridden
318
313
  def autoid
319
314
  cache_get(:_autoid) || @opts[:autoid]
320
315
  end
321
316
 
322
- # Override the databases's autoid setting for this dataset
323
- def autoid=(v)
324
- Sequel::Deprecation.deprecate("Sequel::Mock::Dataset#autoid=", "Use with_autoid to return a modified dataset")
325
- cache_set(:_autoid, nil)
326
- @opts[:autoid] = v
327
- end
328
-
329
317
  # The fetch setting for this dataset, if it has been overridden
330
318
  def _fetch
331
319
  cache_get(:_fetch) || @opts[:fetch]
332
320
  end
333
321
 
334
- # Override the databases's fetch setting for this dataset
335
- def _fetch=(v)
336
- Sequel::Deprecation.deprecate("Sequel::Mock::Dataset#_fetch=", "Use with_fetch to return a modified dataset")
337
- cache_set(:_fetch, nil)
338
- @opts[:fetch] = v
339
- end
340
-
341
322
  # The numrows setting for this dataset, if it has been overridden
342
323
  def numrows
343
324
  cache_get(:_numrows) || @opts[:numrows]
344
325
  end
345
326
 
346
- # Override the databases's numrows setting for this dataset
347
- def numrows=(v)
348
- Sequel::Deprecation.deprecate("Sequel::Mock::Dataset#_numrows=", "Use with_numrows to return a modified dataset")
349
- cache_set(:_numrows, nil)
350
- @opts[:numrows] = v
351
- end
352
-
353
327
  # If arguments are provided, use them to set the columns
354
328
  # for this dataset and return self. Otherwise, use the
355
329
  # default Sequel behavior and return the columns.