sequel 4.26.0 → 5.37.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 (692) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG +405 -5656
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +232 -157
  5. data/bin/sequel +32 -9
  6. data/doc/advanced_associations.rdoc +252 -188
  7. data/doc/association_basics.rdoc +231 -273
  8. data/doc/bin_sequel.rdoc +5 -3
  9. data/doc/cheat_sheet.rdoc +75 -48
  10. data/doc/code_order.rdoc +28 -10
  11. data/doc/core_extensions.rdoc +104 -63
  12. data/doc/dataset_basics.rdoc +12 -21
  13. data/doc/dataset_filtering.rdoc +99 -86
  14. data/doc/extensions.rdoc +3 -10
  15. data/doc/mass_assignment.rdoc +74 -31
  16. data/doc/migration.rdoc +72 -46
  17. data/doc/model_dataset_method_design.rdoc +129 -0
  18. data/doc/model_hooks.rdoc +15 -25
  19. data/doc/model_plugins.rdoc +12 -12
  20. data/doc/mssql_stored_procedures.rdoc +3 -3
  21. data/doc/object_model.rdoc +59 -69
  22. data/doc/opening_databases.rdoc +84 -94
  23. data/doc/postgresql.rdoc +268 -38
  24. data/doc/prepared_statements.rdoc +29 -24
  25. data/doc/querying.rdoc +184 -164
  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.10.0.txt +84 -0
  30. data/doc/release_notes/5.11.0.txt +83 -0
  31. data/doc/release_notes/5.12.0.txt +141 -0
  32. data/doc/release_notes/5.13.0.txt +27 -0
  33. data/doc/release_notes/5.14.0.txt +63 -0
  34. data/doc/release_notes/5.15.0.txt +39 -0
  35. data/doc/release_notes/5.16.0.txt +110 -0
  36. data/doc/release_notes/5.17.0.txt +31 -0
  37. data/doc/release_notes/5.18.0.txt +69 -0
  38. data/doc/release_notes/5.19.0.txt +28 -0
  39. data/doc/release_notes/5.2.0.txt +33 -0
  40. data/doc/release_notes/5.20.0.txt +89 -0
  41. data/doc/release_notes/5.21.0.txt +87 -0
  42. data/doc/release_notes/5.22.0.txt +48 -0
  43. data/doc/release_notes/5.23.0.txt +56 -0
  44. data/doc/release_notes/5.24.0.txt +56 -0
  45. data/doc/release_notes/5.25.0.txt +32 -0
  46. data/doc/release_notes/5.26.0.txt +35 -0
  47. data/doc/release_notes/5.27.0.txt +21 -0
  48. data/doc/release_notes/5.28.0.txt +16 -0
  49. data/doc/release_notes/5.29.0.txt +22 -0
  50. data/doc/release_notes/5.3.0.txt +121 -0
  51. data/doc/release_notes/5.30.0.txt +20 -0
  52. data/doc/release_notes/5.31.0.txt +148 -0
  53. data/doc/release_notes/5.32.0.txt +46 -0
  54. data/doc/release_notes/5.33.0.txt +24 -0
  55. data/doc/release_notes/5.34.0.txt +40 -0
  56. data/doc/release_notes/5.35.0.txt +56 -0
  57. data/doc/release_notes/5.36.0.txt +60 -0
  58. data/doc/release_notes/5.37.0.txt +30 -0
  59. data/doc/release_notes/5.4.0.txt +80 -0
  60. data/doc/release_notes/5.5.0.txt +61 -0
  61. data/doc/release_notes/5.6.0.txt +31 -0
  62. data/doc/release_notes/5.7.0.txt +108 -0
  63. data/doc/release_notes/5.8.0.txt +170 -0
  64. data/doc/release_notes/5.9.0.txt +99 -0
  65. data/doc/schema_modification.rdoc +102 -77
  66. data/doc/security.rdoc +160 -87
  67. data/doc/sharding.rdoc +74 -47
  68. data/doc/sql.rdoc +135 -122
  69. data/doc/testing.rdoc +34 -18
  70. data/doc/thread_safety.rdoc +2 -4
  71. data/doc/transactions.rdoc +101 -19
  72. data/doc/validations.rdoc +64 -51
  73. data/doc/virtual_rows.rdoc +90 -109
  74. data/lib/sequel.rb +3 -1
  75. data/lib/sequel/adapters/ado.rb +154 -22
  76. data/lib/sequel/adapters/ado/access.rb +21 -21
  77. data/lib/sequel/adapters/ado/mssql.rb +8 -15
  78. data/lib/sequel/adapters/amalgalite.rb +17 -25
  79. data/lib/sequel/adapters/ibmdb.rb +52 -58
  80. data/lib/sequel/adapters/jdbc.rb +149 -127
  81. data/lib/sequel/adapters/jdbc/db2.rb +32 -40
  82. data/lib/sequel/adapters/jdbc/derby.rb +56 -58
  83. data/lib/sequel/adapters/jdbc/h2.rb +40 -30
  84. data/lib/sequel/adapters/jdbc/hsqldb.rb +22 -33
  85. data/lib/sequel/adapters/jdbc/jtds.rb +4 -10
  86. data/lib/sequel/adapters/jdbc/mssql.rb +6 -12
  87. data/lib/sequel/adapters/jdbc/mysql.rb +17 -18
  88. data/lib/sequel/adapters/jdbc/oracle.rb +25 -19
  89. data/lib/sequel/adapters/jdbc/postgresql.rb +90 -69
  90. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +14 -24
  91. data/lib/sequel/adapters/jdbc/sqlite.rb +50 -12
  92. data/lib/sequel/adapters/jdbc/sqlserver.rb +36 -9
  93. data/lib/sequel/adapters/jdbc/transactions.rb +25 -39
  94. data/lib/sequel/adapters/mock.rb +104 -113
  95. data/lib/sequel/adapters/mysql.rb +42 -61
  96. data/lib/sequel/adapters/mysql2.rb +126 -35
  97. data/lib/sequel/adapters/odbc.rb +21 -28
  98. data/lib/sequel/adapters/odbc/db2.rb +3 -1
  99. data/lib/sequel/adapters/odbc/mssql.rb +11 -15
  100. data/lib/sequel/adapters/odbc/oracle.rb +11 -0
  101. data/lib/sequel/adapters/oracle.rb +62 -68
  102. data/lib/sequel/adapters/postgres.rb +257 -311
  103. data/lib/sequel/adapters/postgresql.rb +3 -1
  104. data/lib/sequel/adapters/shared/access.rb +75 -79
  105. data/lib/sequel/adapters/shared/db2.rb +96 -74
  106. data/lib/sequel/adapters/shared/mssql.rb +258 -213
  107. data/lib/sequel/adapters/shared/mysql.rb +284 -216
  108. data/lib/sequel/adapters/shared/oracle.rb +175 -60
  109. data/lib/sequel/adapters/shared/postgres.rb +829 -383
  110. data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -127
  111. data/lib/sequel/adapters/shared/sqlite.rb +382 -159
  112. data/lib/sequel/adapters/sqlanywhere.rb +53 -38
  113. data/lib/sequel/adapters/sqlite.rb +111 -105
  114. data/lib/sequel/adapters/tinytds.rb +38 -46
  115. data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +8 -9
  116. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +7 -5
  117. data/lib/sequel/adapters/utils/mysql_mysql2.rb +87 -0
  118. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
  119. data/lib/sequel/adapters/utils/replace.rb +3 -4
  120. data/lib/sequel/adapters/utils/split_alter_table.rb +2 -0
  121. data/lib/sequel/adapters/utils/stored_procedures.rb +9 -22
  122. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
  123. data/lib/sequel/ast_transformer.rb +13 -89
  124. data/lib/sequel/connection_pool.rb +54 -26
  125. data/lib/sequel/connection_pool/sharded_single.rb +19 -12
  126. data/lib/sequel/connection_pool/sharded_threaded.rb +160 -111
  127. data/lib/sequel/connection_pool/single.rb +21 -12
  128. data/lib/sequel/connection_pool/threaded.rb +137 -119
  129. data/lib/sequel/core.rb +352 -320
  130. data/lib/sequel/database.rb +19 -2
  131. data/lib/sequel/database/connecting.rb +70 -55
  132. data/lib/sequel/database/dataset.rb +15 -5
  133. data/lib/sequel/database/dataset_defaults.rb +20 -102
  134. data/lib/sequel/database/features.rb +20 -4
  135. data/lib/sequel/database/logging.rb +25 -7
  136. data/lib/sequel/database/misc.rb +132 -118
  137. data/lib/sequel/database/query.rb +51 -28
  138. data/lib/sequel/database/schema_generator.rb +188 -75
  139. data/lib/sequel/database/schema_methods.rb +161 -92
  140. data/lib/sequel/database/transactions.rb +260 -58
  141. data/lib/sequel/dataset.rb +28 -12
  142. data/lib/sequel/dataset/actions.rb +354 -170
  143. data/lib/sequel/dataset/dataset_module.rb +46 -0
  144. data/lib/sequel/dataset/features.rb +81 -34
  145. data/lib/sequel/dataset/graph.rb +82 -58
  146. data/lib/sequel/dataset/misc.rb +139 -47
  147. data/lib/sequel/dataset/placeholder_literalizer.rb +66 -26
  148. data/lib/sequel/dataset/prepared_statements.rb +188 -85
  149. data/lib/sequel/dataset/query.rb +428 -214
  150. data/lib/sequel/dataset/sql.rb +446 -339
  151. data/lib/sequel/deprecated.rb +14 -2
  152. data/lib/sequel/exceptions.rb +48 -16
  153. data/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
  154. data/lib/sequel/extensions/_model_pg_row.rb +43 -0
  155. data/lib/sequel/extensions/_pretty_table.rb +10 -9
  156. data/lib/sequel/extensions/any_not_empty.rb +45 -0
  157. data/lib/sequel/extensions/arbitrary_servers.rb +15 -11
  158. data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
  159. data/lib/sequel/extensions/blank.rb +2 -0
  160. data/lib/sequel/extensions/caller_logging.rb +79 -0
  161. data/lib/sequel/extensions/columns_introspection.rb +9 -4
  162. data/lib/sequel/extensions/connection_expiration.rb +99 -0
  163. data/lib/sequel/extensions/connection_validator.rb +26 -13
  164. data/lib/sequel/extensions/constant_sql_override.rb +65 -0
  165. data/lib/sequel/extensions/constraint_validations.rb +93 -38
  166. data/lib/sequel/extensions/core_extensions.rb +45 -53
  167. data/lib/sequel/extensions/core_refinements.rb +44 -46
  168. data/lib/sequel/extensions/current_datetime_timestamp.rb +5 -4
  169. data/lib/sequel/extensions/dataset_source_alias.rb +4 -0
  170. data/lib/sequel/extensions/date_arithmetic.rb +42 -16
  171. data/lib/sequel/extensions/datetime_parse_to_time.rb +37 -0
  172. data/lib/sequel/extensions/duplicate_columns_handler.rb +94 -0
  173. data/lib/sequel/extensions/empty_array_consider_nulls.rb +7 -3
  174. data/lib/sequel/extensions/error_sql.rb +7 -3
  175. data/lib/sequel/extensions/escaped_like.rb +100 -0
  176. data/lib/sequel/extensions/eval_inspect.rb +14 -15
  177. data/lib/sequel/extensions/exclude_or_null.rb +68 -0
  178. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  179. data/lib/sequel/extensions/freeze_datasets.rb +3 -0
  180. data/lib/sequel/extensions/from_block.rb +2 -31
  181. data/lib/sequel/extensions/graph_each.rb +19 -6
  182. data/lib/sequel/extensions/identifier_mangling.rb +180 -0
  183. data/lib/sequel/extensions/implicit_subquery.rb +48 -0
  184. data/lib/sequel/extensions/index_caching.rb +109 -0
  185. data/lib/sequel/extensions/inflector.rb +8 -4
  186. data/lib/sequel/extensions/integer64.rb +32 -0
  187. data/lib/sequel/extensions/looser_typecasting.rb +19 -9
  188. data/lib/sequel/extensions/migration.rb +132 -80
  189. data/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +4 -0
  190. data/lib/sequel/extensions/named_timezones.rb +88 -23
  191. data/lib/sequel/extensions/no_auto_literal_strings.rb +4 -0
  192. data/lib/sequel/extensions/null_dataset.rb +12 -8
  193. data/lib/sequel/extensions/pagination.rb +35 -28
  194. data/lib/sequel/extensions/pg_array.rb +227 -316
  195. data/lib/sequel/extensions/pg_array_ops.rb +19 -7
  196. data/lib/sequel/extensions/pg_enum.rb +69 -24
  197. data/lib/sequel/extensions/pg_extended_date_support.rb +250 -0
  198. data/lib/sequel/extensions/pg_hstore.rb +50 -59
  199. data/lib/sequel/extensions/pg_hstore_ops.rb +9 -3
  200. data/lib/sequel/extensions/pg_inet.rb +34 -15
  201. data/lib/sequel/extensions/pg_inet_ops.rb +5 -1
  202. data/lib/sequel/extensions/pg_interval.rb +26 -26
  203. data/lib/sequel/extensions/pg_json.rb +422 -141
  204. data/lib/sequel/extensions/pg_json_ops.rb +248 -9
  205. data/lib/sequel/extensions/pg_loose_count.rb +5 -1
  206. data/lib/sequel/extensions/pg_range.rb +162 -146
  207. data/lib/sequel/extensions/pg_range_ops.rb +10 -5
  208. data/lib/sequel/extensions/pg_row.rb +53 -87
  209. data/lib/sequel/extensions/pg_row_ops.rb +36 -13
  210. data/lib/sequel/extensions/pg_static_cache_updater.rb +6 -2
  211. data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
  212. data/lib/sequel/extensions/pretty_table.rb +4 -0
  213. data/lib/sequel/extensions/query.rb +12 -7
  214. data/lib/sequel/extensions/round_timestamps.rb +6 -9
  215. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  216. data/lib/sequel/extensions/s.rb +59 -0
  217. data/lib/sequel/extensions/schema_caching.rb +14 -1
  218. data/lib/sequel/extensions/schema_dumper.rb +83 -55
  219. data/lib/sequel/extensions/select_remove.rb +8 -4
  220. data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
  221. data/lib/sequel/extensions/server_block.rb +50 -17
  222. data/lib/sequel/extensions/server_logging.rb +61 -0
  223. data/lib/sequel/extensions/split_array_nil.rb +8 -4
  224. data/lib/sequel/extensions/sql_comments.rb +96 -0
  225. data/lib/sequel/extensions/sql_expr.rb +4 -1
  226. data/lib/sequel/extensions/string_agg.rb +181 -0
  227. data/lib/sequel/extensions/string_date_time.rb +2 -0
  228. data/lib/sequel/extensions/symbol_aref.rb +53 -0
  229. data/lib/sequel/extensions/symbol_aref_refinement.rb +43 -0
  230. data/lib/sequel/extensions/symbol_as.rb +23 -0
  231. data/lib/sequel/extensions/symbol_as_refinement.rb +37 -0
  232. data/lib/sequel/extensions/synchronize_sql.rb +45 -0
  233. data/lib/sequel/extensions/thread_local_timezones.rb +4 -0
  234. data/lib/sequel/extensions/to_dot.rb +15 -5
  235. data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
  236. data/lib/sequel/model.rb +36 -126
  237. data/lib/sequel/model/associations.rb +850 -257
  238. data/lib/sequel/model/base.rb +652 -764
  239. data/lib/sequel/model/dataset_module.rb +13 -10
  240. data/lib/sequel/model/default_inflections.rb +3 -1
  241. data/lib/sequel/model/errors.rb +3 -3
  242. data/lib/sequel/model/exceptions.rb +12 -12
  243. data/lib/sequel/model/inflections.rb +8 -19
  244. data/lib/sequel/model/plugins.rb +111 -0
  245. data/lib/sequel/plugins/accessed_columns.rb +2 -0
  246. data/lib/sequel/plugins/active_model.rb +32 -7
  247. data/lib/sequel/plugins/after_initialize.rb +3 -1
  248. data/lib/sequel/plugins/association_dependencies.rb +27 -18
  249. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  250. data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
  251. data/lib/sequel/plugins/association_pks.rb +181 -83
  252. data/lib/sequel/plugins/association_proxies.rb +33 -9
  253. data/lib/sequel/plugins/auto_validations.rb +58 -23
  254. data/lib/sequel/plugins/before_after_save.rb +8 -0
  255. data/lib/sequel/plugins/blacklist_security.rb +23 -12
  256. data/lib/sequel/plugins/boolean_readers.rb +9 -6
  257. data/lib/sequel/plugins/boolean_subsets.rb +64 -0
  258. data/lib/sequel/plugins/caching.rb +27 -16
  259. data/lib/sequel/plugins/class_table_inheritance.rb +192 -94
  260. data/lib/sequel/plugins/column_conflicts.rb +18 -3
  261. data/lib/sequel/plugins/column_select.rb +9 -5
  262. data/lib/sequel/plugins/columns_updated.rb +42 -0
  263. data/lib/sequel/plugins/composition.rb +36 -24
  264. data/lib/sequel/plugins/constraint_validations.rb +37 -16
  265. data/lib/sequel/plugins/csv_serializer.rb +58 -35
  266. data/lib/sequel/plugins/dataset_associations.rb +60 -18
  267. data/lib/sequel/plugins/def_dataset_method.rb +90 -0
  268. data/lib/sequel/plugins/defaults_setter.rb +74 -13
  269. data/lib/sequel/plugins/delay_add_association.rb +4 -1
  270. data/lib/sequel/plugins/dirty.rb +65 -24
  271. data/lib/sequel/plugins/eager_each.rb +27 -3
  272. data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
  273. data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
  274. data/lib/sequel/plugins/error_splitter.rb +19 -12
  275. data/lib/sequel/plugins/finder.rb +246 -0
  276. data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
  277. data/lib/sequel/plugins/force_encoding.rb +9 -12
  278. data/lib/sequel/plugins/hook_class_methods.rb +39 -54
  279. data/lib/sequel/plugins/input_transformer.rb +20 -10
  280. data/lib/sequel/plugins/insert_conflict.rb +72 -0
  281. data/lib/sequel/plugins/insert_returning_select.rb +4 -2
  282. data/lib/sequel/plugins/instance_filters.rb +12 -8
  283. data/lib/sequel/plugins/instance_hooks.rb +36 -17
  284. data/lib/sequel/plugins/instance_specific_default.rb +113 -0
  285. data/lib/sequel/plugins/inverted_subsets.rb +24 -13
  286. data/lib/sequel/plugins/json_serializer.rb +123 -47
  287. data/lib/sequel/plugins/lazy_attributes.rb +20 -14
  288. data/lib/sequel/plugins/list.rb +40 -26
  289. data/lib/sequel/plugins/many_through_many.rb +28 -12
  290. data/lib/sequel/plugins/modification_detection.rb +17 -5
  291. data/lib/sequel/plugins/mssql_optimistic_locking.rb +8 -5
  292. data/lib/sequel/plugins/nested_attributes.rb +55 -28
  293. data/lib/sequel/plugins/optimistic_locking.rb +5 -3
  294. data/lib/sequel/plugins/pg_array_associations.rb +52 -18
  295. data/lib/sequel/plugins/pg_auto_constraint_validations.rb +348 -0
  296. data/lib/sequel/plugins/pg_row.rb +7 -51
  297. data/lib/sequel/plugins/prepared_statements.rb +53 -72
  298. data/lib/sequel/plugins/prepared_statements_safe.rb +13 -5
  299. data/lib/sequel/plugins/rcte_tree.rb +43 -63
  300. data/lib/sequel/plugins/serialization.rb +37 -44
  301. data/lib/sequel/plugins/serialization_modification_detection.rb +3 -1
  302. data/lib/sequel/plugins/sharding.rb +17 -10
  303. data/lib/sequel/plugins/single_table_inheritance.rb +62 -28
  304. data/lib/sequel/plugins/singular_table_names.rb +2 -0
  305. data/lib/sequel/plugins/skip_create_refresh.rb +5 -3
  306. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  307. data/lib/sequel/plugins/split_values.rb +13 -6
  308. data/lib/sequel/plugins/static_cache.rb +79 -53
  309. data/lib/sequel/plugins/static_cache_cache.rb +53 -0
  310. data/lib/sequel/plugins/string_stripper.rb +5 -3
  311. data/lib/sequel/plugins/subclasses.rb +20 -2
  312. data/lib/sequel/plugins/subset_conditions.rb +48 -0
  313. data/lib/sequel/plugins/table_select.rb +4 -2
  314. data/lib/sequel/plugins/tactical_eager_loading.rb +120 -6
  315. data/lib/sequel/plugins/throw_failures.rb +110 -0
  316. data/lib/sequel/plugins/timestamps.rb +22 -8
  317. data/lib/sequel/plugins/touch.rb +21 -8
  318. data/lib/sequel/plugins/tree.rb +57 -30
  319. data/lib/sequel/plugins/typecast_on_load.rb +14 -4
  320. data/lib/sequel/plugins/unlimited_update.rb +3 -7
  321. data/lib/sequel/plugins/update_or_create.rb +6 -4
  322. data/lib/sequel/plugins/update_primary_key.rb +3 -1
  323. data/lib/sequel/plugins/update_refresh.rb +28 -15
  324. data/lib/sequel/plugins/uuid.rb +70 -0
  325. data/lib/sequel/plugins/validate_associated.rb +20 -0
  326. data/lib/sequel/plugins/validation_class_methods.rb +40 -19
  327. data/lib/sequel/plugins/validation_contexts.rb +49 -0
  328. data/lib/sequel/plugins/validation_helpers.rb +49 -31
  329. data/lib/sequel/plugins/whitelist_security.rb +122 -0
  330. data/lib/sequel/plugins/xml_serializer.rb +31 -30
  331. data/lib/sequel/sql.rb +479 -329
  332. data/lib/sequel/timezones.rb +62 -32
  333. data/lib/sequel/version.rb +10 -3
  334. metadata +177 -477
  335. data/Rakefile +0 -165
  336. data/doc/active_record.rdoc +0 -912
  337. data/doc/release_notes/1.0.txt +0 -38
  338. data/doc/release_notes/1.1.txt +0 -143
  339. data/doc/release_notes/1.3.txt +0 -101
  340. data/doc/release_notes/1.4.0.txt +0 -53
  341. data/doc/release_notes/1.5.0.txt +0 -155
  342. data/doc/release_notes/2.0.0.txt +0 -298
  343. data/doc/release_notes/2.1.0.txt +0 -271
  344. data/doc/release_notes/2.10.0.txt +0 -328
  345. data/doc/release_notes/2.11.0.txt +0 -215
  346. data/doc/release_notes/2.12.0.txt +0 -534
  347. data/doc/release_notes/2.2.0.txt +0 -253
  348. data/doc/release_notes/2.3.0.txt +0 -88
  349. data/doc/release_notes/2.4.0.txt +0 -106
  350. data/doc/release_notes/2.5.0.txt +0 -137
  351. data/doc/release_notes/2.6.0.txt +0 -157
  352. data/doc/release_notes/2.7.0.txt +0 -166
  353. data/doc/release_notes/2.8.0.txt +0 -171
  354. data/doc/release_notes/2.9.0.txt +0 -97
  355. data/doc/release_notes/3.0.0.txt +0 -221
  356. data/doc/release_notes/3.1.0.txt +0 -406
  357. data/doc/release_notes/3.10.0.txt +0 -286
  358. data/doc/release_notes/3.11.0.txt +0 -254
  359. data/doc/release_notes/3.12.0.txt +0 -304
  360. data/doc/release_notes/3.13.0.txt +0 -210
  361. data/doc/release_notes/3.14.0.txt +0 -118
  362. data/doc/release_notes/3.15.0.txt +0 -78
  363. data/doc/release_notes/3.16.0.txt +0 -45
  364. data/doc/release_notes/3.17.0.txt +0 -58
  365. data/doc/release_notes/3.18.0.txt +0 -120
  366. data/doc/release_notes/3.19.0.txt +0 -67
  367. data/doc/release_notes/3.2.0.txt +0 -268
  368. data/doc/release_notes/3.20.0.txt +0 -41
  369. data/doc/release_notes/3.21.0.txt +0 -87
  370. data/doc/release_notes/3.22.0.txt +0 -39
  371. data/doc/release_notes/3.23.0.txt +0 -172
  372. data/doc/release_notes/3.24.0.txt +0 -420
  373. data/doc/release_notes/3.25.0.txt +0 -88
  374. data/doc/release_notes/3.26.0.txt +0 -88
  375. data/doc/release_notes/3.27.0.txt +0 -82
  376. data/doc/release_notes/3.28.0.txt +0 -304
  377. data/doc/release_notes/3.29.0.txt +0 -459
  378. data/doc/release_notes/3.3.0.txt +0 -192
  379. data/doc/release_notes/3.30.0.txt +0 -135
  380. data/doc/release_notes/3.31.0.txt +0 -146
  381. data/doc/release_notes/3.32.0.txt +0 -202
  382. data/doc/release_notes/3.33.0.txt +0 -157
  383. data/doc/release_notes/3.34.0.txt +0 -671
  384. data/doc/release_notes/3.35.0.txt +0 -144
  385. data/doc/release_notes/3.36.0.txt +0 -245
  386. data/doc/release_notes/3.37.0.txt +0 -338
  387. data/doc/release_notes/3.38.0.txt +0 -234
  388. data/doc/release_notes/3.39.0.txt +0 -237
  389. data/doc/release_notes/3.4.0.txt +0 -325
  390. data/doc/release_notes/3.40.0.txt +0 -73
  391. data/doc/release_notes/3.41.0.txt +0 -155
  392. data/doc/release_notes/3.42.0.txt +0 -74
  393. data/doc/release_notes/3.43.0.txt +0 -105
  394. data/doc/release_notes/3.44.0.txt +0 -152
  395. data/doc/release_notes/3.45.0.txt +0 -179
  396. data/doc/release_notes/3.46.0.txt +0 -122
  397. data/doc/release_notes/3.47.0.txt +0 -270
  398. data/doc/release_notes/3.48.0.txt +0 -477
  399. data/doc/release_notes/3.5.0.txt +0 -510
  400. data/doc/release_notes/3.6.0.txt +0 -366
  401. data/doc/release_notes/3.7.0.txt +0 -179
  402. data/doc/release_notes/3.8.0.txt +0 -151
  403. data/doc/release_notes/3.9.0.txt +0 -233
  404. data/doc/release_notes/4.0.0.txt +0 -262
  405. data/doc/release_notes/4.1.0.txt +0 -85
  406. data/doc/release_notes/4.10.0.txt +0 -226
  407. data/doc/release_notes/4.11.0.txt +0 -147
  408. data/doc/release_notes/4.12.0.txt +0 -105
  409. data/doc/release_notes/4.13.0.txt +0 -169
  410. data/doc/release_notes/4.14.0.txt +0 -68
  411. data/doc/release_notes/4.15.0.txt +0 -56
  412. data/doc/release_notes/4.16.0.txt +0 -36
  413. data/doc/release_notes/4.17.0.txt +0 -38
  414. data/doc/release_notes/4.18.0.txt +0 -36
  415. data/doc/release_notes/4.19.0.txt +0 -45
  416. data/doc/release_notes/4.2.0.txt +0 -129
  417. data/doc/release_notes/4.20.0.txt +0 -79
  418. data/doc/release_notes/4.21.0.txt +0 -94
  419. data/doc/release_notes/4.22.0.txt +0 -72
  420. data/doc/release_notes/4.23.0.txt +0 -65
  421. data/doc/release_notes/4.24.0.txt +0 -99
  422. data/doc/release_notes/4.25.0.txt +0 -181
  423. data/doc/release_notes/4.26.0.txt +0 -44
  424. data/doc/release_notes/4.3.0.txt +0 -40
  425. data/doc/release_notes/4.4.0.txt +0 -92
  426. data/doc/release_notes/4.5.0.txt +0 -34
  427. data/doc/release_notes/4.6.0.txt +0 -30
  428. data/doc/release_notes/4.7.0.txt +0 -103
  429. data/doc/release_notes/4.8.0.txt +0 -175
  430. data/doc/release_notes/4.9.0.txt +0 -190
  431. data/lib/sequel/adapters/cubrid.rb +0 -142
  432. data/lib/sequel/adapters/do.rb +0 -156
  433. data/lib/sequel/adapters/do/mysql.rb +0 -64
  434. data/lib/sequel/adapters/do/postgres.rb +0 -42
  435. data/lib/sequel/adapters/do/sqlite3.rb +0 -40
  436. data/lib/sequel/adapters/jdbc/as400.rb +0 -82
  437. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -62
  438. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -34
  439. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -31
  440. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -31
  441. data/lib/sequel/adapters/odbc/progress.rb +0 -8
  442. data/lib/sequel/adapters/shared/cubrid.rb +0 -243
  443. data/lib/sequel/adapters/shared/firebird.rb +0 -245
  444. data/lib/sequel/adapters/shared/informix.rb +0 -52
  445. data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -150
  446. data/lib/sequel/adapters/shared/progress.rb +0 -38
  447. data/lib/sequel/adapters/swift.rb +0 -158
  448. data/lib/sequel/adapters/swift/mysql.rb +0 -47
  449. data/lib/sequel/adapters/swift/postgres.rb +0 -45
  450. data/lib/sequel/adapters/swift/sqlite.rb +0 -47
  451. data/lib/sequel/adapters/utils/pg_types.rb +0 -68
  452. data/lib/sequel/dataset/mutation.rb +0 -109
  453. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -3
  454. data/lib/sequel/extensions/filter_having.rb +0 -59
  455. data/lib/sequel/extensions/hash_aliases.rb +0 -45
  456. data/lib/sequel/extensions/meta_def.rb +0 -31
  457. data/lib/sequel/extensions/query_literals.rb +0 -80
  458. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -22
  459. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -118
  460. data/lib/sequel/extensions/set_overrides.rb +0 -72
  461. data/lib/sequel/no_core_ext.rb +0 -1
  462. data/lib/sequel/plugins/association_autoreloading.rb +0 -7
  463. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -7
  464. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -78
  465. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -117
  466. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -59
  467. data/lib/sequel/plugins/schema.rb +0 -80
  468. data/lib/sequel/plugins/scissors.rb +0 -33
  469. data/spec/adapters/db2_spec.rb +0 -160
  470. data/spec/adapters/firebird_spec.rb +0 -411
  471. data/spec/adapters/informix_spec.rb +0 -100
  472. data/spec/adapters/mssql_spec.rb +0 -706
  473. data/spec/adapters/mysql_spec.rb +0 -1287
  474. data/spec/adapters/oracle_spec.rb +0 -313
  475. data/spec/adapters/postgres_spec.rb +0 -3725
  476. data/spec/adapters/spec_helper.rb +0 -43
  477. data/spec/adapters/sqlanywhere_spec.rb +0 -170
  478. data/spec/adapters/sqlite_spec.rb +0 -653
  479. data/spec/bin_spec.rb +0 -254
  480. data/spec/core/connection_pool_spec.rb +0 -1016
  481. data/spec/core/database_spec.rb +0 -2531
  482. data/spec/core/dataset_spec.rb +0 -5098
  483. data/spec/core/deprecated_spec.rb +0 -70
  484. data/spec/core/expression_filters_spec.rb +0 -1243
  485. data/spec/core/mock_adapter_spec.rb +0 -462
  486. data/spec/core/object_graph_spec.rb +0 -303
  487. data/spec/core/placeholder_literalizer_spec.rb +0 -163
  488. data/spec/core/schema_generator_spec.rb +0 -179
  489. data/spec/core/schema_spec.rb +0 -1659
  490. data/spec/core/spec_helper.rb +0 -34
  491. data/spec/core/version_spec.rb +0 -7
  492. data/spec/core_extensions_spec.rb +0 -699
  493. data/spec/extensions/accessed_columns_spec.rb +0 -51
  494. data/spec/extensions/active_model_spec.rb +0 -123
  495. data/spec/extensions/after_initialize_spec.rb +0 -24
  496. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  497. data/spec/extensions/association_dependencies_spec.rb +0 -117
  498. data/spec/extensions/association_pks_spec.rb +0 -365
  499. data/spec/extensions/association_proxies_spec.rb +0 -86
  500. data/spec/extensions/auto_validations_spec.rb +0 -192
  501. data/spec/extensions/blacklist_security_spec.rb +0 -88
  502. data/spec/extensions/blank_spec.rb +0 -69
  503. data/spec/extensions/boolean_readers_spec.rb +0 -93
  504. data/spec/extensions/caching_spec.rb +0 -270
  505. data/spec/extensions/class_table_inheritance_spec.rb +0 -420
  506. data/spec/extensions/column_conflicts_spec.rb +0 -60
  507. data/spec/extensions/column_select_spec.rb +0 -108
  508. data/spec/extensions/columns_introspection_spec.rb +0 -91
  509. data/spec/extensions/composition_spec.rb +0 -242
  510. data/spec/extensions/connection_validator_spec.rb +0 -120
  511. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -274
  512. data/spec/extensions/constraint_validations_spec.rb +0 -325
  513. data/spec/extensions/core_refinements_spec.rb +0 -519
  514. data/spec/extensions/csv_serializer_spec.rb +0 -173
  515. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  516. data/spec/extensions/dataset_associations_spec.rb +0 -311
  517. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  518. data/spec/extensions/date_arithmetic_spec.rb +0 -150
  519. data/spec/extensions/defaults_setter_spec.rb +0 -101
  520. data/spec/extensions/delay_add_association_spec.rb +0 -52
  521. data/spec/extensions/dirty_spec.rb +0 -180
  522. data/spec/extensions/eager_each_spec.rb +0 -42
  523. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  524. data/spec/extensions/error_splitter_spec.rb +0 -18
  525. data/spec/extensions/error_sql_spec.rb +0 -20
  526. data/spec/extensions/eval_inspect_spec.rb +0 -73
  527. data/spec/extensions/filter_having_spec.rb +0 -40
  528. data/spec/extensions/force_encoding_spec.rb +0 -114
  529. data/spec/extensions/from_block_spec.rb +0 -21
  530. data/spec/extensions/graph_each_spec.rb +0 -109
  531. data/spec/extensions/hash_aliases_spec.rb +0 -24
  532. data/spec/extensions/hook_class_methods_spec.rb +0 -429
  533. data/spec/extensions/inflector_spec.rb +0 -183
  534. data/spec/extensions/input_transformer_spec.rb +0 -54
  535. data/spec/extensions/insert_returning_select_spec.rb +0 -46
  536. data/spec/extensions/instance_filters_spec.rb +0 -79
  537. data/spec/extensions/instance_hooks_spec.rb +0 -276
  538. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  539. data/spec/extensions/json_serializer_spec.rb +0 -291
  540. data/spec/extensions/lazy_attributes_spec.rb +0 -170
  541. data/spec/extensions/list_spec.rb +0 -267
  542. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  543. data/spec/extensions/many_through_many_spec.rb +0 -2172
  544. data/spec/extensions/meta_def_spec.rb +0 -21
  545. data/spec/extensions/migration_spec.rb +0 -712
  546. data/spec/extensions/modification_detection_spec.rb +0 -80
  547. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
  548. data/spec/extensions/named_timezones_spec.rb +0 -108
  549. data/spec/extensions/nested_attributes_spec.rb +0 -697
  550. data/spec/extensions/null_dataset_spec.rb +0 -85
  551. data/spec/extensions/optimistic_locking_spec.rb +0 -128
  552. data/spec/extensions/pagination_spec.rb +0 -118
  553. data/spec/extensions/pg_array_associations_spec.rb +0 -736
  554. data/spec/extensions/pg_array_ops_spec.rb +0 -143
  555. data/spec/extensions/pg_array_spec.rb +0 -395
  556. data/spec/extensions/pg_enum_spec.rb +0 -92
  557. data/spec/extensions/pg_hstore_ops_spec.rb +0 -236
  558. data/spec/extensions/pg_hstore_spec.rb +0 -206
  559. data/spec/extensions/pg_inet_ops_spec.rb +0 -101
  560. data/spec/extensions/pg_inet_spec.rb +0 -52
  561. data/spec/extensions/pg_interval_spec.rb +0 -76
  562. data/spec/extensions/pg_json_ops_spec.rb +0 -229
  563. data/spec/extensions/pg_json_spec.rb +0 -218
  564. data/spec/extensions/pg_loose_count_spec.rb +0 -17
  565. data/spec/extensions/pg_range_ops_spec.rb +0 -58
  566. data/spec/extensions/pg_range_spec.rb +0 -404
  567. data/spec/extensions/pg_row_ops_spec.rb +0 -60
  568. data/spec/extensions/pg_row_plugin_spec.rb +0 -62
  569. data/spec/extensions/pg_row_spec.rb +0 -360
  570. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
  571. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
  572. data/spec/extensions/prepared_statements_associations_spec.rb +0 -159
  573. data/spec/extensions/prepared_statements_safe_spec.rb +0 -61
  574. data/spec/extensions/prepared_statements_spec.rb +0 -103
  575. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
  576. data/spec/extensions/pretty_table_spec.rb +0 -92
  577. data/spec/extensions/query_literals_spec.rb +0 -183
  578. data/spec/extensions/query_spec.rb +0 -102
  579. data/spec/extensions/rcte_tree_spec.rb +0 -392
  580. data/spec/extensions/round_timestamps_spec.rb +0 -43
  581. data/spec/extensions/schema_caching_spec.rb +0 -41
  582. data/spec/extensions/schema_dumper_spec.rb +0 -789
  583. data/spec/extensions/schema_spec.rb +0 -117
  584. data/spec/extensions/scissors_spec.rb +0 -26
  585. data/spec/extensions/select_remove_spec.rb +0 -38
  586. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
  587. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  588. data/spec/extensions/serialization_spec.rb +0 -362
  589. data/spec/extensions/server_block_spec.rb +0 -90
  590. data/spec/extensions/set_overrides_spec.rb +0 -61
  591. data/spec/extensions/sharding_spec.rb +0 -198
  592. data/spec/extensions/shared_caching_spec.rb +0 -175
  593. data/spec/extensions/single_table_inheritance_spec.rb +0 -297
  594. data/spec/extensions/singular_table_names_spec.rb +0 -22
  595. data/spec/extensions/skip_create_refresh_spec.rb +0 -17
  596. data/spec/extensions/spec_helper.rb +0 -71
  597. data/spec/extensions/split_array_nil_spec.rb +0 -24
  598. data/spec/extensions/split_values_spec.rb +0 -22
  599. data/spec/extensions/sql_expr_spec.rb +0 -60
  600. data/spec/extensions/static_cache_spec.rb +0 -361
  601. data/spec/extensions/string_date_time_spec.rb +0 -95
  602. data/spec/extensions/string_stripper_spec.rb +0 -68
  603. data/spec/extensions/subclasses_spec.rb +0 -66
  604. data/spec/extensions/table_select_spec.rb +0 -71
  605. data/spec/extensions/tactical_eager_loading_spec.rb +0 -82
  606. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  607. data/spec/extensions/timestamps_spec.rb +0 -175
  608. data/spec/extensions/to_dot_spec.rb +0 -154
  609. data/spec/extensions/touch_spec.rb +0 -203
  610. data/spec/extensions/tree_spec.rb +0 -274
  611. data/spec/extensions/typecast_on_load_spec.rb +0 -80
  612. data/spec/extensions/unlimited_update_spec.rb +0 -20
  613. data/spec/extensions/update_or_create_spec.rb +0 -87
  614. data/spec/extensions/update_primary_key_spec.rb +0 -100
  615. data/spec/extensions/update_refresh_spec.rb +0 -53
  616. data/spec/extensions/validate_associated_spec.rb +0 -52
  617. data/spec/extensions/validation_class_methods_spec.rb +0 -1027
  618. data/spec/extensions/validation_helpers_spec.rb +0 -541
  619. data/spec/extensions/xml_serializer_spec.rb +0 -207
  620. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  621. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  622. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  623. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  624. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  625. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  626. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  627. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  628. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  629. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  630. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  631. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  632. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  633. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  634. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  635. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  636. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  637. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  638. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  639. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  640. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  641. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  642. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  643. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  644. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  645. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  646. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  647. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  648. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  649. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  650. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  651. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  652. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  653. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  654. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  655. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  656. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  657. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  658. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  659. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  660. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  661. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  662. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  663. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  664. data/spec/guards_helper.rb +0 -55
  665. data/spec/integration/associations_test.rb +0 -2454
  666. data/spec/integration/database_test.rb +0 -113
  667. data/spec/integration/dataset_test.rb +0 -1808
  668. data/spec/integration/eager_loader_test.rb +0 -687
  669. data/spec/integration/migrator_test.rb +0 -240
  670. data/spec/integration/model_test.rb +0 -226
  671. data/spec/integration/plugin_test.rb +0 -2240
  672. data/spec/integration/prepared_statement_test.rb +0 -467
  673. data/spec/integration/schema_test.rb +0 -817
  674. data/spec/integration/spec_helper.rb +0 -48
  675. data/spec/integration/timezone_test.rb +0 -86
  676. data/spec/integration/transaction_test.rb +0 -374
  677. data/spec/integration/type_test.rb +0 -133
  678. data/spec/model/association_reflection_spec.rb +0 -525
  679. data/spec/model/associations_spec.rb +0 -4426
  680. data/spec/model/base_spec.rb +0 -759
  681. data/spec/model/class_dataset_methods_spec.rb +0 -146
  682. data/spec/model/dataset_methods_spec.rb +0 -149
  683. data/spec/model/eager_loading_spec.rb +0 -2137
  684. data/spec/model/hooks_spec.rb +0 -604
  685. data/spec/model/inflector_spec.rb +0 -26
  686. data/spec/model/model_spec.rb +0 -982
  687. data/spec/model/plugins_spec.rb +0 -299
  688. data/spec/model/record_spec.rb +0 -2147
  689. data/spec/model/spec_helper.rb +0 -46
  690. data/spec/model/validations_spec.rb +0 -193
  691. data/spec/sequel_coverage.rb +0 -15
  692. data/spec/spec_config.rb +0 -10
@@ -1,5 +1,7 @@
1
- Sequel.require 'adapters/shared/access'
2
- Sequel.require 'adapters/utils/split_alter_table'
1
+ # frozen-string-literal: true
2
+
3
+ require_relative '../shared/access'
4
+ require_relative '../utils/split_alter_table'
3
5
 
4
6
  module Sequel
5
7
  module ADO
@@ -13,7 +15,7 @@ module Sequel
13
15
  :tables => 20,
14
16
  :views => 23,
15
17
  :foreign_keys => 27
16
- }
18
+ }.freeze
17
19
 
18
20
  attr_reader :type, :criteria
19
21
 
@@ -40,7 +42,8 @@ module Sequel
40
42
  131 => "DECIMAL",
41
43
  201 => "TEXT",
42
44
  205 => "IMAGE"
43
- }
45
+ }.freeze
46
+ DATA_TYPE.each_value(&:freeze)
44
47
 
45
48
  def initialize(row)
46
49
  @row = row
@@ -84,13 +87,9 @@ module Sequel
84
87
  end
85
88
 
86
89
  module DatabaseMethods
87
- extend Sequel::Database::ResetIdentifierMangling
88
90
  include Sequel::Access::DatabaseMethods
89
91
  include Sequel::Database::SplitAlterTable
90
92
 
91
- DECIMAL_TYPE_RE = /decimal/io
92
- LAST_INSERT_ID = "SELECT @@IDENTITY".freeze
93
-
94
93
  # Remove cached schema after altering a table, since otherwise it can be cached
95
94
  # incorrectly in the rename column case.
96
95
  def alter_table(name, *)
@@ -109,9 +108,10 @@ module Sequel
109
108
  def execute_insert(sql, opts=OPTS)
110
109
  synchronize(opts[:server]) do |conn|
111
110
  begin
112
- log_yield(sql){conn.Execute(sql)}
113
- res = log_yield(LAST_INSERT_ID){conn.Execute(LAST_INSERT_ID)}
114
- res.getRows.transpose.each{|r| return r.shift}
111
+ log_connection_yield(sql, conn){conn.Execute(sql)}
112
+ last_insert_sql = "SELECT @@IDENTITY"
113
+ res = log_connection_yield(last_insert_sql, conn){conn.Execute(last_insert_sql)}
114
+ res.GetRows.transpose.each{|r| return r.shift}
115
115
  rescue ::WIN32OLERuntimeError => e
116
116
  raise_error(e)
117
117
  end
@@ -129,7 +129,7 @@ module Sequel
129
129
  ado_schema_views.map {|tbl| m.call(tbl['TABLE_NAME'])}
130
130
  end
131
131
 
132
- # Note OpenSchema returns compound indexes as multiple rows
132
+ # OpenSchema returns compound indexes as multiple rows
133
133
  def indexes(table_name,opts=OPTS)
134
134
  m = output_identifier_meth
135
135
  idxs = ado_schema_indexes(table_name).inject({}) do |memo, idx|
@@ -144,7 +144,7 @@ module Sequel
144
144
  idxs
145
145
  end
146
146
 
147
- # Note OpenSchema returns compound foreign key relationships as multiple rows
147
+ # OpenSchema returns compound foreign key relationships as multiple rows
148
148
  def foreign_key_list(table, opts=OPTS)
149
149
  m = output_identifier_meth
150
150
  fks = ado_schema_foreign_keys(table).inject({}) do |memo, fk|
@@ -201,15 +201,15 @@ module Sequel
201
201
  end
202
202
 
203
203
  def begin_transaction(conn, opts=OPTS)
204
- log_yield('Transaction.begin'){conn.BeginTrans}
204
+ log_connection_yield('Transaction.begin', conn){conn.BeginTrans}
205
205
  end
206
206
 
207
207
  def commit_transaction(conn, opts=OPTS)
208
- log_yield('Transaction.commit'){conn.CommitTrans}
208
+ log_connection_yield('Transaction.commit', conn){conn.CommitTrans}
209
209
  end
210
210
 
211
211
  def rollback_transaction(conn, opts=OPTS)
212
- log_yield('Transaction.rollback'){conn.RollbackTrans}
212
+ log_connection_yield('Transaction.rollback', conn){conn.RollbackTrans}
213
213
  end
214
214
 
215
215
  def schema_column_type(db_type)
@@ -239,7 +239,7 @@ module Sequel
239
239
  idx["COLUMN_NAME"] == row["COLUMN_NAME"] &&
240
240
  idx["PRIMARY_KEY"]
241
241
  },
242
- :type => if row.db_type =~ DECIMAL_TYPE_RE && row.scale == 0
242
+ :type => if row.db_type =~ /decimal/i && row.scale == 0
243
243
  :integer
244
244
  else
245
245
  schema_column_type(row.db_type)
@@ -294,8 +294,9 @@ module Sequel
294
294
 
295
295
  def fetch_ado_schema(type, criteria=[])
296
296
  execute_open_ado_schema(type, criteria) do |s|
297
- cols = s.Fields.extend(Enumerable).map(&:Name)
298
- s.getRows.transpose.each do |r|
297
+ cols = []
298
+ s.Fields.each{|f| cols << f.Name}
299
+ s.GetRows.transpose.each do |r|
299
300
  row = {}
300
301
  cols.each{|c| row[c] = r.shift}
301
302
  yield row
@@ -306,12 +307,11 @@ module Sequel
306
307
  # This is like execute() in that it yields an ADO RecordSet, except
307
308
  # instead of an SQL interface there's this OpenSchema call
308
309
  # cf. http://msdn.microsoft.com/en-us/library/ee275721(v=bts.10)
309
- #
310
310
  def execute_open_ado_schema(type, criteria=[])
311
311
  ado_schema = AdoSchema.new(type, criteria)
312
312
  synchronize(opts[:server]) do |conn|
313
313
  begin
314
- r = log_yield("OpenSchema #{type.inspect}, #{criteria.inspect}") {
314
+ r = log_connection_yield("OpenSchema #{type.inspect}, #{criteria.inspect}", conn) {
315
315
  if ado_schema.criteria.empty?
316
316
  conn.OpenSchema(ado_schema.type)
317
317
  else
@@ -1,27 +1,20 @@
1
- Sequel.require 'adapters/shared/mssql'
1
+ # frozen-string-literal: true
2
+
3
+ require_relative '../shared/mssql'
2
4
 
3
5
  module Sequel
4
6
  module ADO
5
- # Database and Dataset instance methods for MSSQL specific
6
- # support via ADO.
7
7
  module MSSQL
8
8
  module DatabaseMethods
9
- extend Sequel::Database::ResetIdentifierMangling
10
9
  include Sequel::MSSQL::DatabaseMethods
11
- # Query to use to get the number of rows affected by an update or
12
- # delete query.
13
- ROWS_AFFECTED = "SELECT @@ROWCOUNT AS AffectedRows"
14
-
15
- # Issue a separate query to get the rows modified. ADO appears to
16
- # use pass by reference with an integer variable, which is obviously
17
- # not supported directly in ruby, and I'm not aware of a workaround.
10
+
18
11
  def execute_dui(sql, opts=OPTS)
19
12
  return super unless @opts[:provider]
20
13
  synchronize(opts[:server]) do |conn|
21
14
  begin
22
- log_yield(sql){conn.Execute(sql)}
23
- res = log_yield(ROWS_AFFECTED){conn.Execute(ROWS_AFFECTED)}
24
- res.getRows.transpose.each{|r| return r.shift}
15
+ sql = "SET NOCOUNT ON; #{sql}; SELECT @@ROWCOUNT"
16
+ rst = log_connection_yield(sql, conn){conn.Execute(sql)}
17
+ rst.GetRows[0][0]
25
18
  rescue ::WIN32OLERuntimeError => e
26
19
  raise_error(e)
27
20
  end
@@ -54,7 +47,7 @@ module Sequel
54
47
  # is necessary as ADO's default :provider uses a separate native
55
48
  # connection for each query.
56
49
  def insert(*values)
57
- return super if @opts[:sql]
50
+ return super if (@opts[:sql] && !@opts[:prepared_sql]) || @opts[:returning]
58
51
  with_sql("SET NOCOUNT ON; #{insert_sql(*values)}; SELECT CAST(SCOPE_IDENTITY() AS INTEGER)").single_value
59
52
  end
60
53
 
@@ -1,9 +1,9 @@
1
+ # frozen-string-literal: true
2
+
1
3
  require 'amalgalite'
2
- Sequel.require 'adapters/shared/sqlite'
4
+ require_relative 'shared/sqlite'
3
5
 
4
6
  module Sequel
5
- # Top level module for holding all Amalgalite-related modules and classes
6
- # for Sequel.
7
7
  module Amalgalite
8
8
  # Type conversion map class for Sequel's use of Amalgamite
9
9
  class SequelTypeMap < ::Amalgalite::TypeMaps::DefaultMap
@@ -30,7 +30,7 @@ module Sequel
30
30
  # Return numeric/decimal types as instances of BigDecimal
31
31
  # instead of Float
32
32
  def decimal(s)
33
- BigDecimal.new(s)
33
+ BigDecimal(s)
34
34
  end
35
35
 
36
36
  # Return datetime types as instances of Sequel.datetime_class
@@ -48,15 +48,13 @@ module Sequel
48
48
  if value.is_a?(::Amalgalite::Blob)
49
49
  SQL::Blob.new(value.to_s)
50
50
  elsif value.is_a?(String) && declared_type
51
- (meth = self.class.sql_to_method(declared_type.downcase)) ? send(meth, value) : value
51
+ (meth = self.class.sql_to_method(declared_type.downcase)) ? public_send(meth, value) : value
52
52
  else
53
53
  super
54
54
  end
55
55
  end
56
56
  end
57
57
 
58
- # Database class for SQLite databases used with Sequel and the
59
- # amalgalite driver.
60
58
  class Database < Sequel::Database
61
59
  include ::Sequel::SQLite::DatabaseMethods
62
60
 
@@ -79,36 +77,31 @@ module Sequel
79
77
  db = ::Amalgalite::Database.new(opts[:database])
80
78
  db.busy_handler(::Amalgalite::BusyTimeout.new(opts.fetch(:timeout, 5000)/50, 50))
81
79
  db.type_map = SequelTypeMap.new(self)
82
- connection_pragmas.each{|s| log_yield(s){db.execute_batch(s)}}
80
+ connection_pragmas.each{|s| log_connection_yield(s, db){db.execute_batch(s)}}
83
81
  db
84
82
  end
85
83
 
86
- # Amalgalite is just the SQLite database without a separate SQLite installation.
87
84
  def database_type
88
85
  :sqlite
89
86
  end
90
87
 
91
- # Run the given SQL with the given arguments. Returns nil.
92
88
  def execute_ddl(sql, opts=OPTS)
93
- _execute(sql, opts){|conn| log_yield(sql){conn.execute_batch(sql)}}
89
+ _execute(sql, opts){|conn| log_connection_yield(sql, conn){conn.execute_batch(sql)}}
94
90
  nil
95
91
  end
96
92
 
97
- # Run the given SQL with the given arguments and return the number of changed rows.
98
93
  def execute_dui(sql, opts=OPTS)
99
- _execute(sql, opts){|conn| log_yield(sql){conn.execute_batch(sql)}; conn.row_changes}
94
+ _execute(sql, opts){|conn| log_connection_yield(sql, conn){conn.execute_batch(sql)}; conn.row_changes}
100
95
  end
101
96
 
102
- # Run the given SQL with the given arguments and return the last inserted row id.
103
97
  def execute_insert(sql, opts=OPTS)
104
- _execute(sql, opts){|conn| log_yield(sql){conn.execute_batch(sql)}; conn.last_insert_rowid}
98
+ _execute(sql, opts){|conn| log_connection_yield(sql, conn){conn.execute_batch(sql)}; conn.last_insert_rowid}
105
99
  end
106
100
 
107
- # Run the given SQL with the given arguments and yield each row.
108
101
  def execute(sql, opts=OPTS)
109
102
  _execute(sql, opts) do |conn|
110
103
  begin
111
- yield(stmt = log_yield(sql){conn.prepare(sql)})
104
+ yield(stmt = log_connection_yield(sql, conn){conn.prepare(sql)})
112
105
  ensure
113
106
  stmt.close if stmt
114
107
  end
@@ -117,7 +110,7 @@ module Sequel
117
110
 
118
111
  # Run the given SQL with the given arguments and return the first value of the first row.
119
112
  def single_value(sql, opts=OPTS)
120
- _execute(sql, opts){|conn| log_yield(sql){conn.first_value_from(sql)}}
113
+ _execute(sql, opts){|conn| log_connection_yield(sql, conn){conn.first_value_from(sql)}}
121
114
  end
122
115
 
123
116
  private
@@ -143,22 +136,21 @@ module Sequel
143
136
  o
144
137
  end
145
138
 
146
- # Both main error classes that Amalgalite raises
139
+ def dataset_class_default
140
+ Dataset
141
+ end
142
+
147
143
  def database_error_classes
148
144
  [::Amalgalite::Error, ::Amalgalite::SQLite3::Error]
149
145
  end
150
146
  end
151
147
 
152
- # Dataset class for SQLite datasets that use the amalgalite driver.
153
148
  class Dataset < Sequel::Dataset
154
149
  include ::Sequel::SQLite::DatasetMethods
155
150
 
156
- Database::DatasetClass = self
157
-
158
- # Yield a hash for each row in the dataset.
159
151
  def fetch_rows(sql)
160
152
  execute(sql) do |stmt|
161
- @columns = cols = stmt.result_fields.map{|c| output_identifier(c)}
153
+ self.columns = cols = stmt.result_fields.map{|c| output_identifier(c)}
162
154
  col_count = cols.size
163
155
  stmt.each do |result|
164
156
  row = {}
@@ -170,7 +162,7 @@ module Sequel
170
162
 
171
163
  private
172
164
 
173
- # Quote the string using the adapter instance method.
165
+ # Quote the string using the connection instance method.
174
166
  def literal_string_append(sql, v)
175
167
  db.synchronize(@opts[:server]){|c| sql << c.quote(v)}
176
168
  end
@@ -1,17 +1,11 @@
1
+ # frozen-string-literal: true
2
+
1
3
  require 'ibm_db'
2
- Sequel.require 'adapters/shared/db2'
4
+ require_relative 'shared/db2'
3
5
 
4
6
  module Sequel
5
7
 
6
8
  module IBMDB
7
- @convert_smallint_to_bool = true
8
-
9
- class << self
10
- # Whether to convert smallint values to bool, true by default.
11
- # Can also be overridden per dataset.
12
- attr_accessor :convert_smallint_to_bool
13
- end
14
-
15
9
  tt = Class.new do
16
10
  def boolean(s) !s.to_i.zero? end
17
11
  def int(s) s.to_i end
@@ -24,13 +18,14 @@ module Sequel
24
18
  :blob => ::Sequel::SQL::Blob.method(:new),
25
19
  :time => ::Sequel.method(:string_to_time),
26
20
  :date => ::Sequel.method(:string_to_date)
27
- }
21
+ }.freeze
28
22
 
29
- # Wraps an underlying connection to DB2 using IBM_DB.
23
+ # Wraps an underlying connection to DB2 using IBM_DB, to provide a more
24
+ # rubyish API.
30
25
  class Connection
31
26
  # A hash with prepared statement name symbol keys, where each value is
32
27
  # a two element array with an sql string and cached Statement value.
33
- attr_accessor :prepared_statements
28
+ attr_reader :prepared_statements
34
29
 
35
30
  # Error class for exceptions raised by the connection.
36
31
  class Error < StandardError
@@ -185,6 +180,9 @@ module Sequel
185
180
 
186
181
  # Hash of connection procs for converting
187
182
  attr_reader :conversion_procs
183
+
184
+ # Whether to convert smallint values to bool for this Database instance
185
+ attr_accessor :convert_smallint_to_bool
188
186
 
189
187
  # Create a new connection object for the given server.
190
188
  def connect(server)
@@ -207,7 +205,6 @@ module Sequel
207
205
  Connection.new(connection_params)
208
206
  end
209
207
 
210
- # Execute the given SQL on the database.
211
208
  def execute(sql, opts=OPTS, &block)
212
209
  if sql.is_a?(Symbol)
213
210
  execute_prepared_statement(sql, opts, &block)
@@ -218,8 +215,6 @@ module Sequel
218
215
  raise_error(e)
219
216
  end
220
217
 
221
- # Execute the given SQL on the database, returning the last inserted
222
- # identity value.
223
218
  def execute_insert(sql, opts=OPTS)
224
219
  synchronize(opts[:server]) do |c|
225
220
  if sql.is_a?(Symbol)
@@ -240,17 +235,17 @@ module Sequel
240
235
  sql = ps.prepared_sql
241
236
  synchronize(opts[:server]) do |conn|
242
237
  unless conn.prepared_statements.fetch(ps_name, []).first == sql
243
- log_yield("PREPARE #{ps_name}: #{sql}"){conn.prepare(sql, ps_name)}
238
+ log_connection_yield("PREPARE #{ps_name}: #{sql}", conn){conn.prepare(sql, ps_name)}
244
239
  end
245
240
  args = args.map{|v| v.nil? ? nil : prepared_statement_arg(v)}
246
241
  log_sql = "EXECUTE #{ps_name}"
247
242
  if ps.log_sql
248
- log_sql << " ("
243
+ log_sql += " ("
249
244
  log_sql << sql
250
245
  log_sql << ")"
251
246
  end
252
247
  begin
253
- stmt = log_yield(log_sql, args){conn.execute_prepared(ps_name, *args)}
248
+ stmt = log_connection_yield(log_sql, conn, args){conn.execute_prepared(ps_name, *args)}
254
249
  if block_given?
255
250
  yield(stmt)
256
251
  else
@@ -262,11 +257,17 @@ module Sequel
262
257
  end
263
258
  end
264
259
 
260
+ def freeze
261
+ @conversion_procs.freeze
262
+ super
263
+ end
264
+
265
265
  private
266
266
 
267
- # Execute the given SQL on the database.
267
+ # Execute the given SQL on the database, yielding the related statement if a block
268
+ # is given or returning the number of affected rows if not, and ensuring the statement is freed.
268
269
  def _execute(conn, sql, opts)
269
- stmt = log_yield(sql){conn.execute(sql)}
270
+ stmt = log_connection_yield(sql, conn){conn.execute(sql)}
270
271
  if block_given?
271
272
  yield(stmt)
272
273
  else
@@ -277,6 +278,7 @@ module Sequel
277
278
  end
278
279
 
279
280
  def adapter_initialize
281
+ @convert_smallint_to_bool = typecast_value_boolean(opts.fetch(:convert_smallint_to_bool, true))
280
282
  @conversion_procs = DB2_TYPES.dup
281
283
  @conversion_procs[:timestamp] = method(:to_application_timestamp)
282
284
  end
@@ -284,14 +286,14 @@ module Sequel
284
286
  # IBM_DB uses an autocommit setting instead of sending SQL queries.
285
287
  # So starting a transaction just turns autocommit off.
286
288
  def begin_transaction(conn, opts=OPTS)
287
- log_yield(TRANSACTION_BEGIN){conn.autocommit = false}
289
+ log_connection_yield('Transaction.begin', conn){conn.autocommit = false}
288
290
  set_transaction_isolation(conn, opts)
289
291
  end
290
292
 
291
293
  # This commits transaction in progress on the
292
294
  # connection and sets autocommit back on.
293
295
  def commit_transaction(conn, opts=OPTS)
294
- log_yield(TRANSACTION_COMMIT){conn.commit}
296
+ log_connection_yield('Transaction.commit', conn){conn.commit}
295
297
  end
296
298
 
297
299
  def database_error_classes
@@ -302,14 +304,16 @@ module Sequel
302
304
  exception.sqlstate
303
305
  end
304
306
 
307
+ def dataset_class_default
308
+ Dataset
309
+ end
310
+
305
311
  # Don't convert smallint to boolean for the metadata
306
312
  # dataset, since the DB2 metadata does not use
307
313
  # boolean columns, and some smallint columns are
308
314
  # accidently treated as booleans.
309
- def metadata_dataset
310
- ds = super
311
- ds.convert_smallint_to_bool = false
312
- ds
315
+ def _metadata_dataset
316
+ super.with_convert_smallint_to_bool(false)
313
317
  end
314
318
 
315
319
  # Format Numeric, Date, and Time types specially for use
@@ -335,12 +339,12 @@ module Sequel
335
339
  # This rolls back the transaction in progress on the
336
340
  # connection and sets autocommit back on.
337
341
  def rollback_transaction(conn, opts=OPTS)
338
- log_yield(TRANSACTION_ROLLBACK){conn.rollback}
342
+ log_connection_yield('Transaction.rollback', conn){conn.rollback}
339
343
  end
340
344
 
341
345
  # Convert smallint type to boolean if convert_smallint_to_bool is true
342
346
  def schema_column_type(db_type)
343
- if Sequel::IBMDB.convert_smallint_to_bool && db_type =~ /smallint/i
347
+ if convert_smallint_to_bool && db_type =~ /smallint/i
344
348
  :boolean
345
349
  else
346
350
  super
@@ -351,39 +355,31 @@ module Sequel
351
355
  class Dataset < Sequel::Dataset
352
356
  include Sequel::DB2::DatasetMethods
353
357
 
354
- Database::DatasetClass = self
355
-
356
358
  module CallableStatementMethods
357
359
  # Extend given dataset with this module so subselects inside subselects in
358
360
  # prepared statements work.
359
361
  def subselect_sql_append(sql, ds)
360
- ps = ds.to_prepared_statement(:select).clone(:append_sql=>sql)
361
- ps.extend(CallableStatementMethods)
362
+ ps = ds.to_prepared_statement(:select).
363
+ clone(:append_sql=>sql, :prepared_args=>prepared_args).
364
+ with_extend(CallableStatementMethods)
362
365
  ps = ps.bind(@opts[:bind_vars]) if @opts[:bind_vars]
363
- ps.prepared_args = prepared_args
364
366
  ps.prepared_sql
365
367
  end
366
368
  end
367
369
 
368
370
  PreparedStatementMethods = prepared_statements_module(:prepare_bind, Sequel::Dataset::UnnumberedArgumentMapper)
369
371
 
370
- # Emulate support of bind arguments in called statements.
371
- def call(type, bind_arguments={}, *values, &block)
372
- ps = to_prepared_statement(type, values)
373
- ps.extend(CallableStatementMethods)
374
- ps.call(bind_arguments, &block)
375
- end
376
-
377
372
  # Whether to convert smallint to boolean arguments for this dataset.
378
- # Defaults to the IBMDB module setting.
373
+ # Defaults to the Database setting.
379
374
  def convert_smallint_to_bool
380
- defined?(@convert_smallint_to_bool) ? @convert_smallint_to_bool : (@convert_smallint_to_bool = IBMDB.convert_smallint_to_bool)
375
+ opts.has_key?(:convert_smallint_to_bool) ? opts[:convert_smallint_to_bool] : db.convert_smallint_to_bool
381
376
  end
382
377
 
383
- # Override the default IBMDB.convert_smallint_to_bool setting for this dataset.
384
- attr_writer :convert_smallint_to_bool
378
+ # Return a cloned dataset with the convert_smallint_to_bool option set.
379
+ def with_convert_smallint_to_bool(v)
380
+ clone(:convert_smallint_to_bool=>v)
381
+ end
385
382
 
386
- # Fetch the rows from the database and yield plain hashes.
387
383
  def fetch_rows(sql)
388
384
  execute(sql) do |stmt|
389
385
  columns = []
@@ -395,11 +391,11 @@ module Sequel
395
391
  type = stmt.field_type(i).downcase.to_sym
396
392
  # decide if it is a smallint from precision
397
393
  type = :boolean if type == :int && convert && stmt.field_precision(i) < 8
398
- type = :blob if type == :clob && Sequel::DB2.use_clob_as_blob
394
+ type = :blob if type == :clob && db.use_clob_as_blob
399
395
  columns << [key, cps[type]]
400
396
  end
401
- cols = columns.map{|c| c.at(0)}
402
- @columns = cols
397
+ cols = columns.map{|c| c[0]}
398
+ self.columns = cols
403
399
 
404
400
  while res = stmt.fetch_array
405
401
  row = {}
@@ -412,16 +408,14 @@ module Sequel
412
408
  self
413
409
  end
414
410
 
415
- # Store the given type of prepared statement in the associated database
416
- # with the given name.
417
- def prepare(type, name=nil, *values)
418
- ps = to_prepared_statement(type, values)
419
- ps.extend(PreparedStatementMethods)
420
- if name
421
- ps.prepared_statement_name = name
422
- db.set_prepared_statement(name, ps)
423
- end
424
- ps
411
+ private
412
+
413
+ def bound_variable_modules
414
+ [CallableStatementMethods]
415
+ end
416
+
417
+ def prepared_statement_modules
418
+ [PreparedStatementMethods]
425
419
  end
426
420
  end
427
421
  end