sequel 4.49.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (477) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +70 -0
  3. data/README.rdoc +195 -136
  4. data/Rakefile +26 -42
  5. data/bin/sequel +3 -5
  6. data/doc/advanced_associations.rdoc +86 -163
  7. data/doc/association_basics.rdoc +197 -274
  8. data/doc/bin_sequel.rdoc +5 -3
  9. data/doc/cheat_sheet.rdoc +66 -43
  10. data/doc/code_order.rdoc +1 -8
  11. data/doc/core_extensions.rdoc +81 -56
  12. data/doc/dataset_basics.rdoc +8 -17
  13. data/doc/dataset_filtering.rdoc +81 -86
  14. data/doc/extensions.rdoc +3 -10
  15. data/doc/mass_assignment.rdoc +73 -30
  16. data/doc/migration.rdoc +19 -36
  17. data/doc/model_dataset_method_design.rdoc +14 -17
  18. data/doc/model_hooks.rdoc +15 -25
  19. data/doc/model_plugins.rdoc +10 -10
  20. data/doc/mssql_stored_procedures.rdoc +3 -3
  21. data/doc/object_model.rdoc +52 -70
  22. data/doc/opening_databases.rdoc +39 -32
  23. data/doc/postgresql.rdoc +48 -38
  24. data/doc/prepared_statements.rdoc +27 -22
  25. data/doc/querying.rdoc +173 -150
  26. data/doc/reflection.rdoc +5 -6
  27. data/doc/release_notes/5.0.0.txt +159 -0
  28. data/doc/schema_modification.rdoc +63 -60
  29. data/doc/security.rdoc +97 -88
  30. data/doc/sharding.rdoc +43 -30
  31. data/doc/sql.rdoc +53 -65
  32. data/doc/testing.rdoc +3 -5
  33. data/doc/thread_safety.rdoc +2 -4
  34. data/doc/transactions.rdoc +18 -17
  35. data/doc/validations.rdoc +48 -45
  36. data/doc/virtual_rows.rdoc +87 -115
  37. data/lib/sequel.rb +1 -1
  38. data/lib/sequel/adapters/ado.rb +9 -25
  39. data/lib/sequel/adapters/ado/access.rb +7 -13
  40. data/lib/sequel/adapters/ado/mssql.rb +2 -9
  41. data/lib/sequel/adapters/amalgalite.rb +3 -18
  42. data/lib/sequel/adapters/ibmdb.rb +9 -45
  43. data/lib/sequel/adapters/jdbc.rb +13 -73
  44. data/lib/sequel/adapters/jdbc/db2.rb +8 -37
  45. data/lib/sequel/adapters/jdbc/derby.rb +4 -50
  46. data/lib/sequel/adapters/jdbc/h2.rb +4 -25
  47. data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -26
  48. data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
  49. data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
  50. data/lib/sequel/adapters/jdbc/mysql.rb +1 -15
  51. data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
  52. data/lib/sequel/adapters/jdbc/postgresql.rb +2 -31
  53. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
  54. data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
  55. data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
  56. data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
  57. data/lib/sequel/adapters/mock.rb +4 -30
  58. data/lib/sequel/adapters/mysql.rb +7 -44
  59. data/lib/sequel/adapters/mysql2.rb +5 -23
  60. data/lib/sequel/adapters/odbc.rb +0 -19
  61. data/lib/sequel/adapters/odbc/db2.rb +1 -1
  62. data/lib/sequel/adapters/odbc/mssql.rb +4 -12
  63. data/lib/sequel/adapters/odbc/oracle.rb +1 -1
  64. data/lib/sequel/adapters/oracle.rb +7 -13
  65. data/lib/sequel/adapters/postgres.rb +13 -57
  66. data/lib/sequel/adapters/postgresql.rb +1 -1
  67. data/lib/sequel/adapters/shared/access.rb +11 -51
  68. data/lib/sequel/adapters/shared/db2.rb +3 -61
  69. data/lib/sequel/adapters/shared/mssql.rb +21 -157
  70. data/lib/sequel/adapters/shared/mysql.rb +23 -224
  71. data/lib/sequel/adapters/shared/oracle.rb +13 -41
  72. data/lib/sequel/adapters/shared/postgres.rb +44 -259
  73. data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
  74. data/lib/sequel/adapters/shared/sqlite.rb +12 -101
  75. data/lib/sequel/adapters/sqlanywhere.rb +4 -23
  76. data/lib/sequel/adapters/sqlite.rb +2 -19
  77. data/lib/sequel/adapters/tinytds.rb +5 -15
  78. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
  79. data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -4
  80. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
  81. data/lib/sequel/adapters/utils/replace.rb +0 -5
  82. data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
  83. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
  84. data/lib/sequel/ast_transformer.rb +3 -94
  85. data/lib/sequel/connection_pool.rb +26 -28
  86. data/lib/sequel/connection_pool/sharded_single.rb +1 -4
  87. data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
  88. data/lib/sequel/connection_pool/single.rb +0 -2
  89. data/lib/sequel/connection_pool/threaded.rb +94 -110
  90. data/lib/sequel/core.rb +42 -101
  91. data/lib/sequel/database.rb +12 -2
  92. data/lib/sequel/database/connecting.rb +23 -60
  93. data/lib/sequel/database/dataset.rb +6 -9
  94. data/lib/sequel/database/dataset_defaults.rb +4 -48
  95. data/lib/sequel/database/features.rb +5 -4
  96. data/lib/sequel/database/logging.rb +2 -9
  97. data/lib/sequel/database/misc.rb +23 -55
  98. data/lib/sequel/database/query.rb +8 -13
  99. data/lib/sequel/database/schema_generator.rb +89 -64
  100. data/lib/sequel/database/schema_methods.rb +61 -79
  101. data/lib/sequel/database/transactions.rb +4 -24
  102. data/lib/sequel/dataset.rb +18 -10
  103. data/lib/sequel/dataset/actions.rb +53 -107
  104. data/lib/sequel/dataset/dataset_module.rb +3 -15
  105. data/lib/sequel/dataset/features.rb +30 -30
  106. data/lib/sequel/dataset/graph.rb +40 -49
  107. data/lib/sequel/dataset/misc.rb +12 -37
  108. data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
  109. data/lib/sequel/dataset/prepared_statements.rb +23 -51
  110. data/lib/sequel/dataset/query.rb +71 -155
  111. data/lib/sequel/dataset/sql.rb +30 -225
  112. data/lib/sequel/deprecated.rb +18 -27
  113. data/lib/sequel/exceptions.rb +1 -17
  114. data/lib/sequel/extensions/_model_pg_row.rb +0 -7
  115. data/lib/sequel/extensions/_pretty_table.rb +1 -3
  116. data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
  117. data/lib/sequel/extensions/connection_expiration.rb +1 -1
  118. data/lib/sequel/extensions/connection_validator.rb +1 -1
  119. data/lib/sequel/extensions/constraint_validations.rb +11 -11
  120. data/lib/sequel/extensions/core_extensions.rb +39 -49
  121. data/lib/sequel/extensions/core_refinements.rb +39 -45
  122. data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
  123. data/lib/sequel/extensions/date_arithmetic.rb +7 -7
  124. data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
  125. data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
  126. data/lib/sequel/extensions/eval_inspect.rb +4 -11
  127. data/lib/sequel/extensions/freeze_datasets.rb +1 -69
  128. data/lib/sequel/extensions/from_block.rb +1 -35
  129. data/lib/sequel/extensions/graph_each.rb +2 -2
  130. data/lib/sequel/extensions/identifier_mangling.rb +9 -19
  131. data/lib/sequel/extensions/implicit_subquery.rb +2 -2
  132. data/lib/sequel/extensions/inflector.rb +4 -4
  133. data/lib/sequel/extensions/migration.rb +23 -40
  134. data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
  135. data/lib/sequel/extensions/null_dataset.rb +2 -8
  136. data/lib/sequel/extensions/pagination.rb +1 -17
  137. data/lib/sequel/extensions/pg_array.rb +20 -189
  138. data/lib/sequel/extensions/pg_hstore.rb +11 -50
  139. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
  140. data/lib/sequel/extensions/pg_inet.rb +2 -15
  141. data/lib/sequel/extensions/pg_interval.rb +1 -20
  142. data/lib/sequel/extensions/pg_json.rb +7 -27
  143. data/lib/sequel/extensions/pg_loose_count.rb +1 -1
  144. data/lib/sequel/extensions/pg_range.rb +6 -121
  145. data/lib/sequel/extensions/pg_range_ops.rb +1 -3
  146. data/lib/sequel/extensions/pg_row.rb +5 -77
  147. data/lib/sequel/extensions/pg_row_ops.rb +2 -13
  148. data/lib/sequel/extensions/query.rb +3 -4
  149. data/lib/sequel/extensions/round_timestamps.rb +0 -6
  150. data/lib/sequel/extensions/schema_dumper.rb +13 -13
  151. data/lib/sequel/extensions/select_remove.rb +3 -3
  152. data/lib/sequel/extensions/split_array_nil.rb +2 -2
  153. data/lib/sequel/extensions/sql_comments.rb +2 -2
  154. data/lib/sequel/extensions/string_agg.rb +11 -8
  155. data/lib/sequel/extensions/symbol_aref.rb +6 -20
  156. data/lib/sequel/model.rb +27 -62
  157. data/lib/sequel/model/associations.rb +128 -131
  158. data/lib/sequel/model/base.rb +171 -711
  159. data/lib/sequel/model/default_inflections.rb +1 -1
  160. data/lib/sequel/model/errors.rb +0 -3
  161. data/lib/sequel/model/exceptions.rb +2 -6
  162. data/lib/sequel/model/inflections.rb +1 -26
  163. data/lib/sequel/model/plugins.rb +1 -0
  164. data/lib/sequel/plugins/active_model.rb +2 -5
  165. data/lib/sequel/plugins/association_dependencies.rb +15 -15
  166. data/lib/sequel/plugins/association_pks.rb +14 -28
  167. data/lib/sequel/plugins/association_proxies.rb +6 -7
  168. data/lib/sequel/plugins/auto_validations.rb +4 -4
  169. data/lib/sequel/plugins/before_after_save.rb +0 -43
  170. data/lib/sequel/plugins/blacklist_security.rb +9 -8
  171. data/lib/sequel/plugins/boolean_readers.rb +3 -3
  172. data/lib/sequel/plugins/boolean_subsets.rb +2 -2
  173. data/lib/sequel/plugins/caching.rb +5 -5
  174. data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
  175. data/lib/sequel/plugins/column_conflicts.rb +2 -2
  176. data/lib/sequel/plugins/column_select.rb +2 -2
  177. data/lib/sequel/plugins/composition.rb +15 -24
  178. data/lib/sequel/plugins/constraint_validations.rb +4 -3
  179. data/lib/sequel/plugins/csv_serializer.rb +13 -20
  180. data/lib/sequel/plugins/dataset_associations.rb +2 -2
  181. data/lib/sequel/plugins/def_dataset_method.rb +5 -5
  182. data/lib/sequel/plugins/defaults_setter.rb +1 -1
  183. data/lib/sequel/plugins/delay_add_association.rb +1 -1
  184. data/lib/sequel/plugins/finder.rb +16 -10
  185. data/lib/sequel/plugins/force_encoding.rb +1 -7
  186. data/lib/sequel/plugins/hook_class_methods.rb +4 -106
  187. data/lib/sequel/plugins/input_transformer.rb +10 -11
  188. data/lib/sequel/plugins/insert_returning_select.rb +1 -9
  189. data/lib/sequel/plugins/instance_filters.rb +5 -5
  190. data/lib/sequel/plugins/instance_hooks.rb +7 -52
  191. data/lib/sequel/plugins/inverted_subsets.rb +3 -1
  192. data/lib/sequel/plugins/json_serializer.rb +19 -19
  193. data/lib/sequel/plugins/lazy_attributes.rb +1 -10
  194. data/lib/sequel/plugins/list.rb +6 -6
  195. data/lib/sequel/plugins/many_through_many.rb +11 -8
  196. data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
  197. data/lib/sequel/plugins/nested_attributes.rb +18 -31
  198. data/lib/sequel/plugins/optimistic_locking.rb +3 -3
  199. data/lib/sequel/plugins/pg_array_associations.rb +8 -2
  200. data/lib/sequel/plugins/pg_row.rb +2 -11
  201. data/lib/sequel/plugins/prepared_statements.rb +13 -66
  202. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
  203. data/lib/sequel/plugins/rcte_tree.rb +7 -7
  204. data/lib/sequel/plugins/serialization.rb +15 -33
  205. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  206. data/lib/sequel/plugins/sharding.rb +2 -8
  207. data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
  208. data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
  209. data/lib/sequel/plugins/static_cache.rb +8 -9
  210. data/lib/sequel/plugins/string_stripper.rb +3 -3
  211. data/lib/sequel/plugins/subclasses.rb +1 -1
  212. data/lib/sequel/plugins/subset_conditions.rb +2 -2
  213. data/lib/sequel/plugins/table_select.rb +2 -2
  214. data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
  215. data/lib/sequel/plugins/timestamps.rb +6 -7
  216. data/lib/sequel/plugins/touch.rb +4 -8
  217. data/lib/sequel/plugins/tree.rb +3 -3
  218. data/lib/sequel/plugins/typecast_on_load.rb +2 -2
  219. data/lib/sequel/plugins/unlimited_update.rb +1 -7
  220. data/lib/sequel/plugins/update_or_create.rb +3 -3
  221. data/lib/sequel/plugins/update_refresh.rb +3 -3
  222. data/lib/sequel/plugins/uuid.rb +7 -11
  223. data/lib/sequel/plugins/validation_class_methods.rb +10 -9
  224. data/lib/sequel/plugins/validation_contexts.rb +4 -4
  225. data/lib/sequel/plugins/validation_helpers.rb +26 -25
  226. data/lib/sequel/plugins/whitelist_security.rb +13 -9
  227. data/lib/sequel/plugins/xml_serializer.rb +24 -25
  228. data/lib/sequel/sql.rb +145 -276
  229. data/lib/sequel/timezones.rb +8 -22
  230. data/lib/sequel/version.rb +2 -2
  231. data/spec/adapter_spec.rb +1 -1
  232. data/spec/adapters/db2_spec.rb +2 -103
  233. data/spec/adapters/mssql_spec.rb +89 -68
  234. data/spec/adapters/mysql_spec.rb +101 -480
  235. data/spec/adapters/oracle_spec.rb +1 -9
  236. data/spec/adapters/postgres_spec.rb +312 -565
  237. data/spec/adapters/spec_helper.rb +12 -31
  238. data/spec/adapters/sqlanywhere_spec.rb +2 -77
  239. data/spec/adapters/sqlite_spec.rb +8 -146
  240. data/spec/bin_spec.rb +11 -16
  241. data/spec/core/connection_pool_spec.rb +173 -74
  242. data/spec/core/database_spec.rb +64 -244
  243. data/spec/core/dataset_spec.rb +81 -415
  244. data/spec/core/deprecated_spec.rb +3 -3
  245. data/spec/core/expression_filters_spec.rb +37 -144
  246. data/spec/core/mock_adapter_spec.rb +176 -4
  247. data/spec/core/object_graph_spec.rb +11 -60
  248. data/spec/core/placeholder_literalizer_spec.rb +1 -14
  249. data/spec/core/schema_generator_spec.rb +51 -40
  250. data/spec/core/schema_spec.rb +74 -77
  251. data/spec/core/spec_helper.rb +6 -24
  252. data/spec/core/version_spec.rb +1 -1
  253. data/spec/core_extensions_spec.rb +7 -83
  254. data/spec/core_model_spec.rb +2 -2
  255. data/spec/deprecation_helper.rb +2 -14
  256. data/spec/extensions/accessed_columns_spec.rb +1 -1
  257. data/spec/extensions/active_model_spec.rb +3 -3
  258. data/spec/extensions/after_initialize_spec.rb +1 -1
  259. data/spec/extensions/arbitrary_servers_spec.rb +2 -2
  260. data/spec/extensions/association_dependencies_spec.rb +1 -1
  261. data/spec/extensions/association_pks_spec.rb +4 -59
  262. data/spec/extensions/association_proxies_spec.rb +1 -1
  263. data/spec/extensions/auto_literal_strings_spec.rb +1 -12
  264. data/spec/extensions/auto_validations_spec.rb +1 -1
  265. data/spec/extensions/blacklist_security_spec.rb +1 -1
  266. data/spec/extensions/blank_spec.rb +1 -1
  267. data/spec/extensions/boolean_readers_spec.rb +1 -1
  268. data/spec/extensions/boolean_subsets_spec.rb +1 -1
  269. data/spec/extensions/caching_spec.rb +1 -1
  270. data/spec/extensions/class_table_inheritance_spec.rb +35 -1086
  271. data/spec/extensions/column_conflicts_spec.rb +1 -1
  272. data/spec/extensions/column_select_spec.rb +4 -4
  273. data/spec/extensions/columns_introspection_spec.rb +1 -1
  274. data/spec/extensions/columns_updated_spec.rb +1 -1
  275. data/spec/extensions/composition_spec.rb +1 -7
  276. data/spec/extensions/connection_expiration_spec.rb +3 -3
  277. data/spec/extensions/connection_validator_spec.rb +3 -3
  278. data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
  279. data/spec/extensions/constraint_validations_spec.rb +1 -1
  280. data/spec/extensions/core_refinements_spec.rb +1 -3
  281. data/spec/extensions/csv_serializer_spec.rb +4 -9
  282. data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
  283. data/spec/extensions/dataset_associations_spec.rb +2 -1
  284. data/spec/extensions/dataset_source_alias_spec.rb +1 -1
  285. data/spec/extensions/date_arithmetic_spec.rb +3 -3
  286. data/spec/extensions/def_dataset_method_spec.rb +1 -1
  287. data/spec/extensions/defaults_setter_spec.rb +2 -2
  288. data/spec/extensions/delay_add_association_spec.rb +8 -9
  289. data/spec/extensions/dirty_spec.rb +1 -1
  290. data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
  291. data/spec/extensions/eager_each_spec.rb +2 -2
  292. data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
  293. data/spec/extensions/error_splitter_spec.rb +1 -1
  294. data/spec/extensions/error_sql_spec.rb +1 -1
  295. data/spec/extensions/eval_inspect_spec.rb +1 -1
  296. data/spec/extensions/finder_spec.rb +1 -1
  297. data/spec/extensions/force_encoding_spec.rb +2 -5
  298. data/spec/extensions/freeze_datasets_spec.rb +1 -1
  299. data/spec/extensions/graph_each_spec.rb +5 -5
  300. data/spec/extensions/hook_class_methods_spec.rb +1 -194
  301. data/spec/extensions/identifier_mangling_spec.rb +17 -170
  302. data/spec/extensions/implicit_subquery_spec.rb +1 -5
  303. data/spec/extensions/inflector_spec.rb +1 -1
  304. data/spec/extensions/input_transformer_spec.rb +7 -2
  305. data/spec/extensions/insert_returning_select_spec.rb +1 -1
  306. data/spec/extensions/instance_filters_spec.rb +1 -1
  307. data/spec/extensions/instance_hooks_spec.rb +1 -95
  308. data/spec/extensions/inverted_subsets_spec.rb +1 -1
  309. data/spec/extensions/json_serializer_spec.rb +1 -1
  310. data/spec/extensions/lazy_attributes_spec.rb +1 -7
  311. data/spec/extensions/list_spec.rb +1 -1
  312. data/spec/extensions/looser_typecasting_spec.rb +1 -1
  313. data/spec/extensions/many_through_many_spec.rb +1 -1
  314. data/spec/extensions/migration_spec.rb +2 -2
  315. data/spec/extensions/modification_detection_spec.rb +1 -1
  316. data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
  317. data/spec/extensions/named_timezones_spec.rb +3 -3
  318. data/spec/extensions/nested_attributes_spec.rb +1 -29
  319. data/spec/extensions/null_dataset_spec.rb +1 -11
  320. data/spec/extensions/optimistic_locking_spec.rb +1 -1
  321. data/spec/extensions/pagination_spec.rb +1 -1
  322. data/spec/extensions/pg_array_associations_spec.rb +4 -1
  323. data/spec/extensions/pg_array_ops_spec.rb +1 -1
  324. data/spec/extensions/pg_array_spec.rb +3 -48
  325. data/spec/extensions/pg_enum_spec.rb +1 -1
  326. data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
  327. data/spec/extensions/pg_hstore_spec.rb +23 -32
  328. data/spec/extensions/pg_inet_ops_spec.rb +1 -1
  329. data/spec/extensions/pg_inet_spec.rb +1 -14
  330. data/spec/extensions/pg_interval_spec.rb +3 -13
  331. data/spec/extensions/pg_json_ops_spec.rb +1 -1
  332. data/spec/extensions/pg_json_spec.rb +1 -13
  333. data/spec/extensions/pg_loose_count_spec.rb +1 -1
  334. data/spec/extensions/pg_range_ops_spec.rb +1 -1
  335. data/spec/extensions/pg_range_spec.rb +3 -88
  336. data/spec/extensions/pg_row_ops_spec.rb +1 -1
  337. data/spec/extensions/pg_row_plugin_spec.rb +1 -1
  338. data/spec/extensions/pg_row_spec.rb +1 -44
  339. data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
  340. data/spec/extensions/prepared_statements_safe_spec.rb +1 -1
  341. data/spec/extensions/prepared_statements_spec.rb +13 -48
  342. data/spec/extensions/pretty_table_spec.rb +1 -1
  343. data/spec/extensions/query_spec.rb +1 -12
  344. data/spec/extensions/rcte_tree_spec.rb +1 -1
  345. data/spec/extensions/round_timestamps_spec.rb +1 -5
  346. data/spec/extensions/s_spec.rb +1 -1
  347. data/spec/extensions/schema_caching_spec.rb +1 -1
  348. data/spec/extensions/schema_dumper_spec.rb +1 -1
  349. data/spec/extensions/select_remove_spec.rb +1 -1
  350. data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
  351. data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
  352. data/spec/extensions/serialization_spec.rb +2 -14
  353. data/spec/extensions/server_block_spec.rb +1 -1
  354. data/spec/extensions/server_logging_spec.rb +2 -2
  355. data/spec/extensions/sharding_spec.rb +1 -1
  356. data/spec/extensions/shared_caching_spec.rb +1 -28
  357. data/spec/extensions/single_table_inheritance_spec.rb +2 -5
  358. data/spec/extensions/singular_table_names_spec.rb +1 -1
  359. data/spec/extensions/skip_create_refresh_spec.rb +1 -1
  360. data/spec/extensions/spec_helper.rb +5 -27
  361. data/spec/extensions/split_array_nil_spec.rb +1 -1
  362. data/spec/extensions/split_values_spec.rb +1 -1
  363. data/spec/extensions/sql_comments_spec.rb +1 -1
  364. data/spec/extensions/sql_expr_spec.rb +1 -1
  365. data/spec/extensions/static_cache_spec.rb +1 -1
  366. data/spec/extensions/string_agg_spec.rb +2 -2
  367. data/spec/extensions/string_date_time_spec.rb +1 -1
  368. data/spec/extensions/string_stripper_spec.rb +1 -1
  369. data/spec/extensions/subclasses_spec.rb +1 -1
  370. data/spec/extensions/subset_conditions_spec.rb +1 -1
  371. data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
  372. data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
  373. data/spec/extensions/table_select_spec.rb +4 -4
  374. data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
  375. data/spec/extensions/thread_local_timezones_spec.rb +1 -1
  376. data/spec/extensions/timestamps_spec.rb +3 -3
  377. data/spec/extensions/to_dot_spec.rb +1 -1
  378. data/spec/extensions/touch_spec.rb +1 -1
  379. data/spec/extensions/tree_spec.rb +1 -1
  380. data/spec/extensions/typecast_on_load_spec.rb +1 -1
  381. data/spec/extensions/unlimited_update_spec.rb +1 -1
  382. data/spec/extensions/update_or_create_spec.rb +1 -1
  383. data/spec/extensions/update_primary_key_spec.rb +4 -3
  384. data/spec/extensions/update_refresh_spec.rb +1 -1
  385. data/spec/extensions/uuid_spec.rb +10 -12
  386. data/spec/extensions/validate_associated_spec.rb +1 -1
  387. data/spec/extensions/validation_class_methods_spec.rb +3 -3
  388. data/spec/extensions/validation_contexts_spec.rb +1 -1
  389. data/spec/extensions/validation_helpers_spec.rb +10 -44
  390. data/spec/extensions/whitelist_security_spec.rb +5 -5
  391. data/spec/extensions/xml_serializer_spec.rb +3 -3
  392. data/spec/guards_helper.rb +2 -1
  393. data/spec/integration/associations_test.rb +1 -23
  394. data/spec/integration/database_test.rb +7 -7
  395. data/spec/integration/dataset_test.rb +5 -47
  396. data/spec/integration/eager_loader_test.rb +1 -1
  397. data/spec/integration/migrator_test.rb +1 -1
  398. data/spec/integration/model_test.rb +4 -82
  399. data/spec/integration/plugin_test.rb +6 -22
  400. data/spec/integration/prepared_statement_test.rb +8 -88
  401. data/spec/integration/schema_test.rb +6 -6
  402. data/spec/integration/spec_helper.rb +13 -21
  403. data/spec/integration/timezone_test.rb +5 -5
  404. data/spec/integration/transaction_test.rb +3 -55
  405. data/spec/integration/type_test.rb +9 -9
  406. data/spec/model/association_reflection_spec.rb +24 -9
  407. data/spec/model/associations_spec.rb +124 -303
  408. data/spec/model/base_spec.rb +18 -137
  409. data/spec/model/class_dataset_methods_spec.rb +2 -20
  410. data/spec/model/dataset_methods_spec.rb +1 -20
  411. data/spec/model/eager_loading_spec.rb +17 -11
  412. data/spec/model/hooks_spec.rb +5 -300
  413. data/spec/model/inflector_spec.rb +1 -1
  414. data/spec/model/model_spec.rb +15 -320
  415. data/spec/model/plugins_spec.rb +2 -16
  416. data/spec/model/record_spec.rb +29 -121
  417. data/spec/model/spec_helper.rb +5 -15
  418. data/spec/model/validations_spec.rb +1 -1
  419. data/spec/sequel_warning.rb +1 -12
  420. metadata +8 -64
  421. data/doc/active_record.rdoc +0 -927
  422. data/lib/sequel/adapters/cubrid.rb +0 -160
  423. data/lib/sequel/adapters/do.rb +0 -166
  424. data/lib/sequel/adapters/do/mysql.rb +0 -69
  425. data/lib/sequel/adapters/do/postgres.rb +0 -46
  426. data/lib/sequel/adapters/do/sqlite3.rb +0 -41
  427. data/lib/sequel/adapters/jdbc/as400.rb +0 -92
  428. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
  429. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
  430. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
  431. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
  432. data/lib/sequel/adapters/odbc/progress.rb +0 -12
  433. data/lib/sequel/adapters/shared/cubrid.rb +0 -245
  434. data/lib/sequel/adapters/shared/firebird.rb +0 -261
  435. data/lib/sequel/adapters/shared/informix.rb +0 -63
  436. data/lib/sequel/adapters/shared/progress.rb +0 -40
  437. data/lib/sequel/adapters/swift.rb +0 -169
  438. data/lib/sequel/adapters/swift/mysql.rb +0 -50
  439. data/lib/sequel/adapters/swift/postgres.rb +0 -49
  440. data/lib/sequel/adapters/swift/sqlite.rb +0 -48
  441. data/lib/sequel/adapters/utils/pg_types.rb +0 -4
  442. data/lib/sequel/dataset/mutation.rb +0 -98
  443. data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
  444. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
  445. data/lib/sequel/extensions/filter_having.rb +0 -65
  446. data/lib/sequel/extensions/hash_aliases.rb +0 -51
  447. data/lib/sequel/extensions/meta_def.rb +0 -37
  448. data/lib/sequel/extensions/query_literals.rb +0 -86
  449. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
  450. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
  451. data/lib/sequel/extensions/set_overrides.rb +0 -82
  452. data/lib/sequel/no_core_ext.rb +0 -4
  453. data/lib/sequel/plugins/association_autoreloading.rb +0 -11
  454. data/lib/sequel/plugins/identifier_columns.rb +0 -49
  455. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
  456. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
  457. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
  458. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
  459. data/lib/sequel/plugins/schema.rb +0 -84
  460. data/lib/sequel/plugins/scissors.rb +0 -37
  461. data/spec/core/dataset_mutation_spec.rb +0 -253
  462. data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
  463. data/spec/extensions/before_after_save_spec.rb +0 -40
  464. data/spec/extensions/filter_having_spec.rb +0 -42
  465. data/spec/extensions/from_block_spec.rb +0 -21
  466. data/spec/extensions/hash_aliases_spec.rb +0 -26
  467. data/spec/extensions/identifier_columns_spec.rb +0 -19
  468. data/spec/extensions/meta_def_spec.rb +0 -35
  469. data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
  470. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
  471. data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
  472. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
  473. data/spec/extensions/query_literals_spec.rb +0 -185
  474. data/spec/extensions/schema_spec.rb +0 -123
  475. data/spec/extensions/scissors_spec.rb +0 -27
  476. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
  477. data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Eagerly loading a tree structure" do
4
4
  before(:all) do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
1
+ require_relative "spec_helper"
2
2
 
3
3
  Sequel.extension :migration
4
4
  describe Sequel::Migrator do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Model basic support" do
4
4
  before do
@@ -49,20 +49,9 @@ describe "Sequel::Model basic support" do
49
49
  Item.all.must_equal [Item.load(:id=>1, :name=>'J')]
50
50
  end
51
51
 
52
- deprecated "should not raise an error if the implied database table doesn't exist" do
53
- class ::Item::Thing < Sequel::Model(@db)
54
- set_dataset :items
55
- end
56
- Item.create(:name=>'J')
57
- Item::Thing.first.must_equal Item::Thing.load(:id=>1, :name=>'J')
58
- end
59
-
60
- it "should raise an error if the implied database table doesn't exist if require_valid_table is true" do
52
+ it "should raise an error if the implied database table doesn't exist" do
61
53
  proc do
62
- c = Sequel::Model(@db)
63
- c.require_valid_table = true
64
- class ::Item::Thing < c
65
- set_dataset :items
54
+ class ::Item::Thing < Sequel::Model
66
55
  end
67
56
  end.must_raise Sequel::Error
68
57
  end
@@ -108,59 +97,6 @@ describe "Sequel::Model basic support" do
108
97
  i.save.must_be_nil
109
98
  end
110
99
 
111
- deprecated "#should respect after_commit, after_rollback, after_destroy_commit, and after_destroy_rollback hooks" do
112
- i = Item.create(:name=>'J')
113
- i.use_transactions = true
114
- def i.hooks
115
- @hooks
116
- end
117
- def i.rb=(x)
118
- @hooks = []
119
- @rb = x
120
- end
121
- def i.after_save
122
- @hooks << :as
123
- raise Sequel::Rollback if @rb
124
- end
125
- def i.after_destroy
126
- @hooks << :ad
127
- raise Sequel::Rollback if @rb
128
- end
129
- def i.after_commit
130
- @hooks << :ac
131
- end
132
- def i.after_rollback
133
- @hooks << :ar
134
- end
135
- def i.after_destroy_commit
136
- @hooks << :adc
137
- end
138
- def i.after_destroy_rollback
139
- @hooks << :adr
140
- end
141
- i.name = 'K'
142
- i.rb = true
143
- i.save.must_be_nil
144
- i.reload.name.must_equal 'J'
145
- i.hooks.must_equal [:as, :ar]
146
-
147
- i.rb = true
148
- i.destroy.must_be_nil
149
- i.exists?.must_equal true
150
- i.hooks.must_equal [:ad, :adr]
151
-
152
- i.name = 'K'
153
- i.rb = false
154
- i.save.wont_equal nil
155
- i.reload.name.must_equal 'K'
156
- i.hooks.must_equal [:as, :ac]
157
-
158
- i.rb = false
159
- i.destroy.wont_equal nil
160
- i.exists?.must_equal false
161
- i.hooks.must_equal [:ad, :adc]
162
- end
163
-
164
100
  it "#exists? should return whether the item is still in the database" do
165
101
  i = Item.create(:name=>'J')
166
102
  i.exists?.must_equal true
@@ -239,27 +175,13 @@ describe "Sequel::Model basic support" do
239
175
  end
240
176
 
241
177
  describe "Sequel::Model with no existing table" do
242
- deprecated "should not raise an error when setting the dataset" do
243
- db = DB
244
- db.drop_table?(:items)
245
- c = Class.new(Sequel::Model)
246
- c.set_dataset(db[:items])
247
- db.transaction do
248
- c = Class.new(Sequel::Model(db[:items]))
249
- db.get(Sequel.cast(1, Integer)).must_equal 1
250
- end
251
- end
252
-
253
- it "should not raise an error when setting the dataset when require_valid_table is true" do
178
+ it "should not raise an error when setting the dataset" do
254
179
  db = DB
255
180
  db.drop_table?(:items)
256
- c1 = Sequel::Model(db);
257
181
  c = Class.new(Sequel::Model)
258
- c.require_valid_table = true
259
182
  proc{c.set_dataset(db[:items])}.must_raise Sequel::Error
260
183
  db.transaction do
261
184
  c = Class.new(Sequel::Model)
262
- c.require_valid_table = true
263
185
  proc{c.dataset = db[:items]}.must_raise Sequel::Error
264
186
  db.get(Sequel.cast(1, Integer)).must_equal 1
265
187
  end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Class Table Inheritance Plugin" do
4
4
  before(:all) do
@@ -26,7 +26,7 @@ describe "Class Table Inheritance Plugin" do
26
26
  before do
27
27
  [:staff, :executives, :managers, :employees].each{|t| @db[t].delete}
28
28
  class ::Employee < Sequel::Model(@db)
29
- plugin :class_table_inheritance, :key=>:kind, :table_map=>{:Staff=>:staff}, :alias=>:employees
29
+ plugin :class_table_inheritance, :key=>:kind, :table_map=>{:Staff=>:staff}
30
30
  end
31
31
  class ::Manager < Employee
32
32
  one_to_many :staff_members, :class=>:Staff
@@ -570,7 +570,7 @@ describe "Touch plugin" do
570
570
  @album.updated_at.to_i.must_be_close_to Time.now.to_i, 2
571
571
  end
572
572
 
573
- cspecify "should update the timestamp column for many_to_one associated records when the record is updated or destroyed", [:do, :sqlite], [:jdbc, :sqlite], [:swift] do
573
+ cspecify "should update the timestamp column for many_to_one associated records when the record is updated or destroyed", [:jdbc, :sqlite] do
574
574
  Album.many_to_one :artist
575
575
  Album.plugin :touch, :associations=>:artist
576
576
  @artist.updated_at.must_be_nil
@@ -590,7 +590,7 @@ describe "Touch plugin" do
590
590
  end
591
591
  end
592
592
 
593
- cspecify "should update the timestamp column for one_to_many associated records when the record is updated", [:do, :sqlite], [:jdbc, :sqlite], [:swift] do
593
+ cspecify "should update the timestamp column for one_to_many associated records when the record is updated", [:jdbc, :sqlite] do
594
594
  Artist.one_to_many :albums
595
595
  Artist.plugin :touch, :associations=>:albums
596
596
  @album.updated_at.must_be_nil
@@ -603,7 +603,7 @@ describe "Touch plugin" do
603
603
  end
604
604
  end
605
605
 
606
- cspecify "should update the timestamp column for many_to_many associated records when the record is updated", [:do, :sqlite], [:jdbc, :sqlite], [:swift] do
606
+ cspecify "should update the timestamp column for many_to_many associated records when the record is updated", [:jdbc, :sqlite] do
607
607
  Artist.many_to_many :albums
608
608
  Artist.plugin :touch, :associations=>:albums
609
609
  @artist.add_album(@album)
@@ -1315,25 +1315,9 @@ describe "AssociationPks plugin" do
1315
1315
  Vocalist.order(:first, :last).all.map{|a| a.hit_pks.sort}.must_equal [[@h1, @h2, @h3], [@h2], []]
1316
1316
  end
1317
1317
 
1318
- deprecated "should handle :delay_pks=>true association option for new instances" do
1318
+ it "should default to delaying association_pks setter method changes until saving" do
1319
1319
  album_class = Class.new(Album)
1320
1320
  album_class.many_to_many :tags, :clone=>:tags, :delay_pks=>true, :join_table=>:albums_tags, :left_key=>:album_id
1321
- album = album_class.new(:name=>'test album')
1322
- album.tag_pks.must_equal []
1323
- album.tag_pks = [@t1, @t2]
1324
- album.tag_pks.must_equal [@t1, @t2]
1325
- album.save
1326
- album_class.with_pk!(album.pk).tag_pks.sort.must_equal [@t1, @t2]
1327
-
1328
- album.tag_pks = []
1329
- album.tag_pks.must_equal []
1330
- album.save
1331
- album_class.with_pk!(album.pk).tag_pks.sort.must_equal []
1332
- end
1333
-
1334
- it "should handle :delay_pks=>:always association option for existing instances" do
1335
- album_class = Class.new(Album)
1336
- album_class.many_to_many :tags, :clone=>:tags, :delay_pks=>:always, :join_table=>:albums_tags, :left_key=>:album_id
1337
1321
  album = album_class.with_pk!(@al1)
1338
1322
  album.tag_pks.sort.must_equal [@t1, @t2, @t3]
1339
1323
  album.tag_pks = [@t1, @t2]
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Prepared Statements and Bound Arguments" do
4
4
  before do
@@ -332,27 +332,27 @@ describe "Bound Argument Types" do
332
332
  @db.drop_table?(:items)
333
333
  end
334
334
 
335
- cspecify "should handle date type", [:do, :sqlite], [:tinytds], [:jdbc, :mssql], [:jdbc, :sqlite], :oracle do
335
+ cspecify "should handle date type", [:tinytds], [:jdbc, :mssql], [:jdbc, :sqlite], :oracle do
336
336
  @ds.filter(:d=>:$x).prepare(:first, :ps_date).call(:x=>@vs[:d])[:d].must_equal @vs[:d]
337
337
  end
338
338
 
339
- cspecify "should handle datetime type", [:do], [:mysql2], [:jdbc, :sqlite], [:tinytds], [:oracle] do
339
+ cspecify "should handle datetime type", [:mysql2], [:jdbc, :sqlite], [:tinytds], [:oracle] do
340
340
  Sequel.datetime_class = DateTime
341
341
  @ds.filter(:dt=>:$x).prepare(:first, :ps_datetime).call(:x=>@vs[:dt])[:dt].must_equal @vs[:dt]
342
342
  end
343
343
 
344
- cspecify "should handle datetime type with fractional seconds", [:do, :postgres], [:jdbc, :sqlite], [:oracle] do
344
+ cspecify "should handle datetime type with fractional seconds", [:jdbc, :sqlite], [:oracle] do
345
345
  Sequel.datetime_class = DateTime
346
346
  fract_time = DateTime.parse('2010-10-12 13:14:15.500000')
347
347
  @ds.prepare(:update, :ps_datetime_up, :dt=>:$x).call(:x=>fract_time)
348
348
  @ds.literal(@ds.filter(:dt=>:$x).prepare(:first, :ps_datetime).call(:x=>fract_time)[:dt]).must_equal @ds.literal(fract_time)
349
349
  end
350
350
 
351
- cspecify "should handle time type", [:do], [:jdbc, :sqlite], [:swift], [:oracle] do
351
+ cspecify "should handle time type", [:jdbc, :sqlite] do
352
352
  @ds.filter(:t=>:$x).prepare(:first, :ps_time).call(:x=>@vs[:t])[:t].must_equal @vs[:t]
353
353
  end
354
354
 
355
- cspecify "should handle time type with fractional seconds", [:do, :postgres], [:jdbc, :sqlite], [:oracle], [:swift, :postgres] do
355
+ cspecify "should handle time type with fractional seconds", [:jdbc, :sqlite] do
356
356
  fract_time = @vs[:t] + 0.5
357
357
  @ds.prepare(:update, :ps_time_up, :t=>:$x).call(:x=>fract_time)
358
358
  @ds.literal(@ds.filter(:t=>:$x).prepare(:first, :ps_time).call(:x=>fract_time)[:t]).must_equal @ds.literal(fract_time)
@@ -384,7 +384,7 @@ describe "Bound Argument Types" do
384
384
  @ds.get(:file).must_equal zero_blob
385
385
  end
386
386
 
387
- cspecify "should handle float type", [:swift, :sqlite] do
387
+ it "should handle float type" do
388
388
  @ds.filter(:f=>:$x).prepare(:first, :ps_float).call(:x=>@vs[:f])[:f].must_equal @vs[:f]
389
389
  end
390
390
 
@@ -392,87 +392,7 @@ describe "Bound Argument Types" do
392
392
  @ds.filter(:s=>:$x).prepare(:first, :ps_string).call(:x=>@vs[:s])[:s].must_equal @vs[:s]
393
393
  end
394
394
 
395
- cspecify "should handle boolean type", [:do, :sqlite], [:jdbc, :sqlite], [:jdbc, :db2], :oracle do
395
+ cspecify "should handle boolean type", [:jdbc, :sqlite], [:jdbc, :db2], :oracle do
396
396
  @ds.filter(:b=>:$x).prepare(:first, :ps_string).call(:x=>@vs[:b])[:b].must_equal @vs[:b]
397
397
  end
398
398
  end
399
-
400
- describe "Dataset#unbind" do
401
- before do
402
- deprecated do
403
- @ds = ds = DB[:items]
404
- @ct = proc do |t, v|
405
- DB.create_table!(:items) do
406
- column :c, t
407
- end
408
- ds.insert(:c=>v)
409
- end
410
- @u = proc{|ds1| ds2, bv = ds1.unbind; ds2.call(:first, bv)}
411
- end
412
- end
413
- after do
414
- DB.drop_table?(:items)
415
- end
416
-
417
- deprecated "should unbind values assigned to equality and inequality statements" do
418
- @ct[Integer, 10]
419
- @u[@ds.filter(:c=>10)].must_equal(:c=>10)
420
- @u[@ds.exclude(:c=>10)].must_be_nil
421
- @u[@ds.filter{c < 10}].must_be_nil
422
- @u[@ds.filter{c <= 10}].must_equal(:c=>10)
423
- @u[@ds.filter{c > 10}].must_be_nil
424
- @u[@ds.filter{c >= 10}].must_equal(:c=>10)
425
- end
426
-
427
- cspecify "should handle numerics and strings", [:odbc], [:swift, :sqlite] do
428
- deprecated do
429
- @ct[Integer, 10]
430
- @u[@ds.filter(:c=>10)].must_equal(:c=>10)
431
- @ct[Float, 0.0]
432
- @u[@ds.filter{c < 1}].must_equal(:c=>0.0)
433
- @ct[String, 'foo']
434
- @u[@ds.filter(:c=>'foo')].must_equal(:c=>'foo')
435
-
436
- DB.create_table!(:items) do
437
- BigDecimal :c, :size=>[15,2]
438
- end
439
- @ds.insert(:c=>BigDecimal.new('1.1'))
440
- @u[@ds.filter{c > 0}].must_equal(:c=>BigDecimal.new('1.1'))
441
- end
442
- end
443
-
444
- cspecify "should handle dates and times", [:do], [:jdbc, :mssql], [:jdbc, :sqlite], [:swift], [:tinytds], :oracle do
445
- deprecated do
446
- @ct[Date, Date.today]
447
- @u[@ds.filter(:c=>Date.today)].must_equal(:c=>Date.today)
448
- t = Time.now
449
- @ct[Time, t]
450
- @u[@ds.filter{c < t + 1}][:c].to_i.must_equal t.to_i
451
- end
452
- end
453
-
454
- deprecated "should handle QualifiedIdentifiers" do
455
- @ct[Integer, 10]
456
- @u[@ds.filter{items[:c] > 1}].must_equal(:c=>10)
457
- end
458
-
459
- cspecify "should handle deep nesting", :h2 do
460
- deprecated do
461
- DB.create_table!(:items) do
462
- Integer :a
463
- Integer :b
464
- Integer :c
465
- Integer :d
466
- end
467
- @ds.insert(:a=>2, :b=>0, :c=>3, :d=>5)
468
- @u[@ds.filter{a > 1}.and{b < 2}.or(:c=>3).and(Sequel.case({~Sequel.expr(:d=>4)=>1}, 0) => 1)].must_equal(:a=>2, :b=>0, :c=>3, :d=>5)
469
- @u[@ds.filter{a > 1}.and{b < 2}.or(:c=>3).and(Sequel.case({~Sequel.expr(:d=>5)=>1}, 0) => 1)].must_be_nil
470
- end
471
- end
472
-
473
- deprecated "should handle case where the same variable has the same value in multiple places " do
474
- @ct[Integer, 1]
475
- @u[@ds.filter{c > 1}.or{c < 1}.invert].must_equal(:c=>1)
476
- @u[@ds.filter{c > 1}.or{c < 1}].must_be_nil
477
- end
478
- end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Database schema parser" do
4
4
  after do
@@ -610,7 +610,7 @@ describe "Database schema modifiers" do
610
610
  @ds.all.must_equal [{:id2=>10}]
611
611
  end
612
612
 
613
- cspecify "should set column NULL/NOT NULL correctly", [:jdbc, :db2], [:db2] do
613
+ cspecify "should set column NULL/NOT NULL correctly", [:jdbc, :db2] do
614
614
  @db.create_table!(:items, :engine=>:InnoDB){Integer :id}
615
615
  @ds.insert(:id=>10)
616
616
  @db.alter_table(:items){set_column_allow_null :id, false}
@@ -632,7 +632,7 @@ describe "Database schema modifiers" do
632
632
  @ds.all.must_equal [{:id=>10}, {:id=>20}]
633
633
  end
634
634
 
635
- cspecify "should set column types correctly", [:jdbc, :db2], [:db2], :oracle do
635
+ cspecify "should set column types correctly", [:jdbc, :db2], :oracle do
636
636
  @db.create_table!(:items){Integer :id}
637
637
  @ds.insert(:id=>10)
638
638
  @db.alter_table(:items){set_column_type :id, String}
@@ -642,7 +642,7 @@ describe "Database schema modifiers" do
642
642
  @ds.order(:id).all.must_equal [{:id=>"10"}, {:id=>"20"}]
643
643
  end
644
644
 
645
- cspecify "should set column types without modifying NULL/NOT NULL", [:jdbc, :db2], [:db2], :oracle, :derby do
645
+ cspecify "should set column types without modifying NULL/NOT NULL", [:jdbc, :db2], :derby do
646
646
  @db.create_table!(:items){Integer :id, :null=>false, :default=>2}
647
647
  proc{@ds.insert(:id=>nil)}.must_raise(Sequel::NotNullConstraintViolation, Sequel::ConstraintViolation, Sequel::DatabaseError)
648
648
  @db.alter_table(:items){set_column_type :id, String}
@@ -655,7 +655,7 @@ describe "Database schema modifiers" do
655
655
  @ds.map(:id).must_equal [nil, nil]
656
656
  end
657
657
 
658
- cspecify "should set column types without modifying defaults", [:jdbc, :db2], [:db2], :oracle, :derby do
658
+ cspecify "should set column types without modifying defaults", [:jdbc, :db2], :oracle, :derby do
659
659
  @db.create_table!(:items){Integer :id, :default=>0}
660
660
  @ds.insert
661
661
  @ds.map(:id).must_equal [0]
@@ -760,7 +760,7 @@ describe "Database schema modifiers" do
760
760
  @db.schema(:items, :reload=>true).map{|x| x.first}.must_equal [:id]
761
761
  end
762
762
 
763
- cspecify "should work correctly with many operations in a single alter_table call", [:jdbc, :db2], [:db2] do
763
+ cspecify "should work correctly with many operations in a single alter_table call", [:jdbc, :db2] do
764
764
  @db.create_table!(:items) do
765
765
  primary_key :id
766
766
  String :name2
@@ -1,39 +1,33 @@
1
- require 'rubygems'
2
1
  require 'logger'
3
- require "#{File.dirname(File.dirname(__FILE__))}/sequel_warning.rb"
2
+ require_relative "../sequel_warning"
4
3
 
5
4
  if ENV['COVERAGE']
6
- require File.join(File.dirname(File.expand_path(__FILE__)), "../sequel_coverage")
5
+ require_relative "../sequel_coverage"
7
6
  SimpleCov.sequel_coverage(:group=>%r{lib/sequel/adapters})
8
7
  end
9
8
 
10
- unless Object.const_defined?('Sequel')
11
- $:.unshift(File.join(File.dirname(File.expand_path(__FILE__)), "../../lib/"))
12
- require 'sequel'
13
- end
9
+ $:.unshift(File.join(File.dirname(File.expand_path(__FILE__)), "../../lib/"))
10
+ require_relative "../../lib/sequel"
11
+
14
12
  begin
15
- require File.join(File.dirname(File.dirname(__FILE__)), 'spec_config.rb') unless defined?(DB)
13
+ require_relative "../spec_config" unless defined?(DB)
16
14
  rescue LoadError
17
15
  end
18
16
  Sequel::Deprecation.backtrace_filter = lambda{|line, lineno| lineno < 4 || line =~ /_(spec|test)\.rb/}
19
17
 
20
- Sequel.split_symbols = false if ENV['SEQUEL_NO_SPLIT_SYMBOLS']
18
+ Sequel.split_symbols = true if ENV['SEQUEL_SPLIT_SYMBOLS']
21
19
  Sequel::Database.extension :columns_introspection if ENV['SEQUEL_COLUMNS_INTROSPECTION']
22
20
  Sequel::Model.cache_associations = false if ENV['SEQUEL_NO_CACHE_ASSOCIATIONS']
23
21
  Sequel::Model.plugin :prepared_statements if ENV['SEQUEL_MODEL_PREPARED_STATEMENTS']
24
22
  Sequel::Model.use_transactions = false
25
23
  Sequel::Model.cache_anonymous_models = false
26
24
 
27
- require './spec/guards_helper'
25
+ require_relative '../guards_helper'
28
26
 
29
- IDENTIFIER_MANGLING = !!ENV['SEQUEL_IDENTIFIER_MANGLING'] unless defined?(IDENTIFIER_MANGLING)
27
+ DB = Sequel.connect(ENV['SEQUEL_INTEGRATION_URL']) unless defined?(DB)
30
28
 
31
- unless defined?(DB)
32
- # SEQUEL5: Remove :identifier_mangling=>false
33
- DB = Sequel.connect(ENV['SEQUEL_INTEGRATION_URL'], :identifier_mangling=>false)
34
- DB.extension(:freeze_datasets) if ENV['SEQUEL_FREEZE_DATASETS']
35
- DB.extension(:identifier_mangling) if IDENTIFIER_MANGLING
36
- end
29
+ IDENTIFIER_MANGLING = !!ENV['SEQUEL_IDENTIFIER_MANGLING'] unless defined?(IDENTIFIER_MANGLING)
30
+ DB.extension(:identifier_mangling) if IDENTIFIER_MANGLING
37
31
 
38
32
  if DB.adapter_scheme == :ibmdb || (DB.adapter_scheme == :ado && DB.database_type == :access)
39
33
  def DB.drop_table(*tables)
@@ -44,10 +38,6 @@ if DB.adapter_scheme == :ibmdb || (DB.adapter_scheme == :ado && DB.database_type
44
38
  end
45
39
  end
46
40
 
47
- if ENV['SEQUEL_NO_AUTO_LITERAL_STRINGS']
48
- DB.extension :no_auto_literal_strings
49
- end
50
-
51
41
  if ENV['SEQUEL_ERROR_SQL']
52
42
  DB.extension :error_sql
53
43
  end
@@ -68,3 +58,5 @@ if ENV['SEQUEL_FREEZE_DATABASE']
68
58
  DB.extension(:pg_array) if DB.database_type == :postgres
69
59
  DB.freeze
70
60
  end
61
+
62
+ puts "running #{defined?(SEQUEL_ADAPTER_TEST) ? SEQUEL_ADAPTER_TEST : "integration (database type: #{DB.database_type})"} specs on #{RUBY_ENGINE} #{defined?(JRUBY_VERSION) ? JRUBY_VERSION : RUBY_VERSION} with #{DB.adapter_scheme} adapter"
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel timezone support" do
4
4
  def _test_timezone(timezone=Sequel.application_timezone)
@@ -39,7 +39,7 @@ describe "Sequel timezone support" do
39
39
  @db.drop_table(:t)
40
40
  end
41
41
 
42
- cspecify "should support using UTC for database storage and local time for the application", [:tinytds], [:do, :mysql], [:do, :postgres], [:oracle] do
42
+ cspecify "should support using UTC for database storage and local time for the application", [:tinytds], [:oracle] do
43
43
  Sequel.database_timezone = :utc
44
44
  Sequel.application_timezone = :local
45
45
  _test_timezone
@@ -48,7 +48,7 @@ describe "Sequel timezone support" do
48
48
  _test_timezone
49
49
  end
50
50
 
51
- cspecify "should support using local time for database storage and UTC for the application", [:tinytds], [:do, :mysql], [:do, :postgres], [:oracle] do
51
+ cspecify "should support using local time for database storage and UTC for the application", [:tinytds], [:oracle] do
52
52
  Sequel.database_timezone = :local
53
53
  Sequel.application_timezone = :utc
54
54
  _test_timezone
@@ -57,7 +57,7 @@ describe "Sequel timezone support" do
57
57
  _test_timezone
58
58
  end
59
59
 
60
- cspecify "should support using UTC for both database storage and for application", [:do, :mysql], [:do, :postgres], [:oracle] do
60
+ cspecify "should support using UTC for both database storage and for application", [:oracle] do
61
61
  Sequel.default_timezone = :utc
62
62
  _test_timezone
63
63
  Sequel.database_timezone = :local
@@ -65,7 +65,7 @@ describe "Sequel timezone support" do
65
65
  _test_timezone
66
66
  end
67
67
 
68
- cspecify "should support using local time for both database storage and for application", [:do, :postgres], [:oracle] do
68
+ cspecify "should support using local time for both database storage and for application", [:oracle] do
69
69
  Sequel.default_timezone = :local
70
70
  _test_timezone
71
71
  Sequel.database_timezone = :utc