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')
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe Sequel::Dataset, "graphing" do
4
4
  before do
@@ -212,11 +212,8 @@ describe Sequel::Dataset, "graphing" do
212
212
  ds.sql.must_equal 'SELECT points.id, points.x, points.y, lines.id AS lines_id, lines.x AS lines_x, lines.y AS lines_y, lines.graph_id FROM points LEFT OUTER JOIN lines ON ((lines.x = points.id) AND (lines.y = points.id))'
213
213
  end
214
214
 
215
- deprecated "should not add columns if graph is called after set_graph_aliases" do
216
- ds = @ds1.set_graph_aliases([[:x,[:points, :x]], [:y,[:lines, :y]]])
217
- ds.sql.must_equal 'SELECT points.x, lines.y FROM points'
218
- ds = ds.graph(:lines, :x=>:id)
219
- ds.sql.must_equal 'SELECT points.x, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
215
+ it "should raise Error if set_graph_aliases is called on an ungraphed dataset" do
216
+ proc{@ds1.set_graph_aliases([[:x,[:points, :x]], [:y,[:lines, :y]]])}.must_raise Sequel::Error
220
217
  end
221
218
 
222
219
  it "should allow graphing of multiple datasets" do
@@ -243,15 +240,6 @@ describe Sequel::Dataset, "graphing" do
243
240
  end
244
241
 
245
242
  describe "#set_graph_aliases" do
246
- deprecated "should not modify the current dataset's opts" do
247
- o1 = @ds1.opts
248
- o2 = o1.dup
249
- ds1 = @ds1.set_graph_aliases(:x=>[:graphs,:id])
250
- @ds1.opts.must_equal o1
251
- @ds1.opts.must_equal o2
252
- ds1.opts.wont_equal o1
253
- end
254
-
255
243
  it "should not modify the current dataset's opts" do
256
244
  o1 = @ds1.opts
257
245
  o2 = o1.dup
@@ -264,69 +252,32 @@ describe Sequel::Dataset, "graphing" do
264
252
  it "should specify the graph mapping" do
265
253
  ds = @ds1.graph(:lines, :x=>:id)
266
254
  ds.sql.must_equal 'SELECT points.id, points.x, points.y, lines.id AS lines_id, lines.x AS lines_x, lines.y AS lines_y, lines.graph_id FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
267
- ds = ds.set_graph_aliases(:x=>[:points, :x], :y=>[:lines, :y])
268
- ['SELECT points.x, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)',
269
- 'SELECT lines.y, points.x FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
270
- ].must_include(ds.sql)
255
+ ds.set_graph_aliases(:x=>[:points, :x], :y=>[:lines, :y]).sql.must_equal 'SELECT points.x, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
271
256
  end
272
257
 
273
258
  it "should allow a third entry to specify an expression to use other than the default" do
274
- ds = @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :x, 1], :y=>[:lines, :y, Sequel.function(:random)])
275
- ['SELECT 1 AS x, random() AS y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)',
276
- 'SELECT random() AS y, 1 AS x FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
277
- ].must_include(ds.sql)
259
+ @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :x, 1], :y=>[:lines, :y, Sequel.function(:random)]).sql.must_equal 'SELECT 1 AS x, random() AS y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
278
260
  end
279
261
 
280
262
  it "should allow a single array entry to specify a table, assuming the same column as the key" do
281
- ds = @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points], :y=>[:lines])
282
- ['SELECT points.x, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)',
283
- 'SELECT lines.y, points.x FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
284
- ].must_include(ds.sql)
263
+ @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points], :y=>[:lines]).sql.must_equal 'SELECT points.x, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
285
264
  end
286
265
 
287
266
  it "should allow hash values to be symbols specifying table, assuming the same column as the key" do
288
- ds = @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>:points, :y=>:lines)
289
- ['SELECT points.x, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)',
290
- 'SELECT lines.y, points.x FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
291
- ].must_include(ds.sql)
267
+ @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>:points, :y=>:lines).sql.must_equal 'SELECT points.x, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
292
268
  end
293
269
 
294
- deprecated "should only alias columns if necessary" do
295
- ds = @ds1.set_graph_aliases(:x=>[:points, :x], :y=>[:lines, :y])
296
- ['SELECT points.x, lines.y FROM points',
297
- 'SELECT lines.y, points.x FROM points'
298
- ].must_include(ds.sql)
299
-
300
- ds = @ds1.set_graph_aliases(:x1=>[:points, :x], :y=>[:lines, :y])
301
- ['SELECT points.x AS x1, lines.y FROM points',
302
- 'SELECT lines.y, points.x AS x1 FROM points'
303
- ].must_include(ds.sql)
270
+ it "should only alias columns if necessary" do
271
+ @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :x], :y=>[:lines, :y]).sql.must_equal 'SELECT points.x, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
304
272
  end
305
273
 
306
274
  it "should only alias columns if necessary" do
307
- ds = @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :x], :y=>[:lines, :y])
308
- ['SELECT points.x, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)',
309
- 'SELECT lines.y, points.x FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
310
- ].must_include(ds.sql)
311
-
312
- ds = @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x1=>[:points, :x], :y=>[:lines, :y])
313
- ['SELECT points.x AS x1, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)',
314
- 'SELECT lines.y, points.x AS x1 FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
315
- ].must_include(ds.sql)
275
+ @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :x], :y=>[:lines, :y]).sql.must_equal 'SELECT points.x, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
276
+ @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x1=>[:points, :x], :y=>[:lines, :y]).sql.must_equal 'SELECT points.x AS x1, lines.y FROM points LEFT OUTER JOIN lines ON (lines.x = points.id)'
316
277
  end
317
278
  end
318
279
 
319
280
  describe "#add_graph_aliases" do
320
- deprecated "should not modify the current dataset's opts" do
321
- ds1 = @ds1.set_graph_aliases(:x=>[:graphs,:id])
322
- o1 = ds1.opts
323
- o2 = o1.dup
324
- ds2 = ds1.add_graph_aliases(:y=>[:blah,:id])
325
- ds1.opts.must_equal o1
326
- ds1.opts.must_equal o2
327
- ds2.opts.wont_equal o1
328
- end
329
-
330
281
  it "should not modify the current dataset's opts" do
331
282
  ds1 = @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:graphs,:id])
332
283
  o1 = ds1.opts
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Dataset::PlaceholderLiteralizer" do
4
4
  before do
@@ -56,12 +56,6 @@ describe "Dataset::PlaceholderLiteralizer" do
56
56
  @db.sqls.must_equal ["SELECT * FROM items WHERE (id = 1)", "SELECT * FROM items WHERE a(b)"]
57
57
  end
58
58
 
59
- deprecated "should handle calls with a literal strings used as filter arguments" do
60
- loader = @c.loader(@ds){|pl, ds| ds.where(pl.arg)}
61
- loader.first("a = 1").must_equal @h
62
- @db.sqls.must_equal ["SELECT * FROM items WHERE (a = 1)"]
63
- end
64
-
65
59
  it "should handle calls with a literal strings used as filter arguments" do
66
60
  loader = @c.loader(@ds){|pl, ds| ds.where(pl.arg)}
67
61
  loader.first(Sequel.lit("a = 1")).must_equal @h
@@ -83,13 +77,6 @@ describe "Dataset::PlaceholderLiteralizer" do
83
77
  @db.sqls.must_equal ["SELECT * FROM items WHERE ((a = 1) AND (b = 1))", "SELECT * FROM items WHERE ((a = 2) AND (b = 2))"]
84
78
  end
85
79
 
86
- deprecated "should handle calls with a placeholder used multiple times in different capacities" do
87
- loader = @c.loader(@ds){|pl, ds| a = pl.arg; ds.where(a).where(:b=>a)}
88
- loader.first("a = 1").must_equal @h
89
- loader.first(["a = ?", 2]).must_equal @h
90
- @db.sqls.must_equal ["SELECT * FROM items WHERE ((a = 1) AND (b = 'a = 1'))", "SELECT * FROM items WHERE ((a = 2) AND (b IN ('a = ?', 2)))"]
91
- end
92
-
93
80
  it "should handle calls with a placeholder used multiple times in different capacities" do
94
81
  loader = @c.loader(@ds){|pl, ds| a = pl.arg; ds.select(a).where(:b=>a)}
95
82
  loader.first("a").must_equal @h
@@ -1,27 +1,39 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper')
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe Sequel::Schema::CreateTableGenerator do
4
4
  before do
5
5
  @generator = Sequel::Schema::CreateTableGenerator.new(Sequel.mock) do
6
- string :title
7
- column :body, :text
8
- foreign_key :parent_id
9
- primary_key :id
10
- check 'price > 100'
11
- constraint(:xxx) {{:yyy => :zzz}}
12
- index :title
13
- index [:title, :body], :unique => true
14
- foreign_key :node_id, :nodes
15
- foreign_key :deferrable_node_id, :nodes, :deferrable => true
16
- primary_key [:title, :parent_id], :name => :cpk
17
- foreign_key [:node_id, :prop_id], :nodes_props, :name => :cfk
6
+ string(:title).must_be_nil
7
+ column(:body, :text).must_be_nil
8
+ foreign_key(:parent_id).must_be_nil
9
+ primary_key(:id).must_be_nil
10
+ check('price > 100').must_be_nil
11
+ constraint(:xxx){{:yyy => :zzz}}.must_be_nil
12
+ index(:title).must_be_nil
13
+ index([:title, :body], :unique => true).must_be_nil
14
+ foreign_key(:node_id, :nodes).must_be_nil
15
+ foreign_key(:deferrable_node_id, :nodes, :deferrable => true).must_be_nil
16
+ primary_key([:title, :parent_id], :name => :cpk).must_be_nil
17
+ foreign_key([:node_id, :prop_id], :nodes_props, :name => :cfk).must_be_nil
18
18
  end
19
19
  @columns, @indexes, @constraints = @generator.columns, @generator.indexes, @generator.constraints
20
20
  end
21
21
 
22
22
  it "should respond to everything" do
23
23
  @generator.respond_to?(:foo).must_equal true
24
- end if RUBY_VERSION >= '1.9'
24
+ end
25
+
26
+ it "should respond adding types" do
27
+ c = Class.new(Sequel::Schema::CreateTableGenerator)
28
+ c2 = Class.new
29
+ def c2.to_s; 'Foo' end
30
+ c.add_type_method(c2)
31
+ gen = c.new(Sequel.mock) do
32
+ Foo :bar
33
+ end
34
+
35
+ gen.columns.first.values_at(:name, :type).must_equal [:bar, c2]
36
+ end
25
37
 
26
38
  it "should primary key column first" do
27
39
  @columns.first[:name].must_equal :id
@@ -117,38 +129,37 @@ describe Sequel::Schema::CreateTableGenerator do
117
129
  end
118
130
 
119
131
  it "creates indexes" do
120
- @indexes[0][:columns].must_include(:title)
121
- @indexes[1][:columns].must_include(:title)
122
- @indexes[1][:columns].must_include(:body)
132
+ @indexes[0][:columns].must_equal [:title]
133
+ @indexes[1][:columns].must_equal [:title, :body]
123
134
  end
124
135
  end
125
136
 
126
137
  describe Sequel::Schema::AlterTableGenerator do
127
138
  before do
128
139
  @generator = Sequel::Schema::AlterTableGenerator.new(Sequel.mock) do
129
- add_column :aaa, :text
130
- drop_column :bbb
131
- rename_column :ccc, :ho
132
- set_column_type :ddd, :float
133
- set_column_default :eee, 1
134
- add_index [:fff, :ggg]
135
- drop_index :hhh
136
- drop_index :hhh, :name=>:blah_blah
137
- add_full_text_index :blah
138
- add_spatial_index :geom
139
- add_index :blah, :type => :hash
140
- add_index :blah, :where => {:something => true}
141
- add_constraint :con1, 'fred > 100'
142
- drop_constraint :con2
143
- add_unique_constraint [:aaa, :bbb, :ccc], :name => :con3
144
- add_primary_key :id
145
- add_foreign_key :node_id, :nodes
146
- add_primary_key [:aaa, :bbb]
147
- add_foreign_key [:node_id, :prop_id], :nodes_props
148
- add_foreign_key [:node_id, :prop_id], :nodes_props, :name => :fkey
149
- drop_foreign_key :node_id
150
- drop_foreign_key [:node_id, :prop_id]
151
- drop_foreign_key [:node_id, :prop_id], :name => :fkey
140
+ add_column(:aaa, :text).must_be_nil
141
+ drop_column(:bbb).must_be_nil
142
+ rename_column(:ccc, :ho).must_be_nil
143
+ set_column_type(:ddd, :float).must_be_nil
144
+ set_column_default(:eee, 1).must_be_nil
145
+ add_index([:fff, :ggg]).must_be_nil
146
+ drop_index(:hhh).must_be_nil
147
+ drop_index(:hhh, :name=>:blah_blah).must_be_nil
148
+ add_full_text_index(:blah).must_be_nil
149
+ add_spatial_index(:geom).must_be_nil
150
+ add_index(:blah, :type => :hash).must_be_nil
151
+ add_index(:blah, :where => {:something => true}).must_be_nil
152
+ add_constraint(:con1, 'fred > 100').must_be_nil
153
+ drop_constraint(:con2).must_be_nil
154
+ add_unique_constraint([:aaa, :bbb, :ccc], :name => :con3).must_be_nil
155
+ add_primary_key(:id).must_be_nil
156
+ add_foreign_key(:node_id, :nodes).must_be_nil
157
+ add_primary_key([:aaa, :bbb]).must_be_nil
158
+ add_foreign_key([:node_id, :prop_id], :nodes_props).must_be_nil
159
+ add_foreign_key([:node_id, :prop_id], :nodes_props, :name => :fkey).must_be_nil
160
+ drop_foreign_key(:node_id).must_be_nil
161
+ drop_foreign_key([:node_id, :prop_id]).must_be_nil
162
+ drop_foreign_key([:node_id, :prop_id], :name => :fkey).must_be_nil
152
163
  end
153
164
  end
154
165
 
@@ -1,17 +1,12 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper')
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "DB#create_table" do
4
4
  before do
5
5
  @db = Sequel.mock
6
6
  end
7
7
 
8
- deprecated "should support an CreateTableGenerator as second argument" do
9
- @db.create_table(:cats, Sequel::Schema::CreateTableGenerator.new(@db){})
10
- @db.sqls.must_equal ['CREATE TABLE cats ()']
11
- end
12
-
13
8
  it "should accept the table name" do
14
- @db.create_table(:cats) {}
9
+ @db.create_table(:cats){}.must_be_nil
15
10
  @db.sqls.must_equal ['CREATE TABLE cats ()']
16
11
  end
17
12
 
@@ -514,15 +509,22 @@ describe "DB#create_table" do
514
509
  end
515
510
 
516
511
  it "should ignore errors if the database raises an error on an index creation statement and the :ignore_index_errors option is used" do
517
- meta_def(@db, :execute_ddl){|*a| raise Sequel::DatabaseError if /blah/.match(a.first); super(*a)}
512
+ @db.define_singleton_method(:execute_ddl){|*a| raise Sequel::DatabaseError if /blah/.match(a.first); super(*a)}
518
513
  lambda{@db.create_table(:cats){Integer :id; index :blah; index :id}}.must_raise(Sequel::DatabaseError)
519
514
  @db.sqls.must_equal ['CREATE TABLE cats (id integer)']
520
515
  @db.create_table(:cats, :ignore_index_errors=>true){Integer :id; index :blah; index :id}
521
516
  @db.sqls.must_equal ['CREATE TABLE cats (id integer)', 'CREATE INDEX cats_id_index ON cats (id)']
522
517
  end
523
518
 
524
- it "should use savepoints around index creation if running inside a transaction if :ignore_index_errors option is used" do
525
- meta_def(@db, :execute_ddl){|*a| super(*a); raise Sequel::DatabaseError if /blah/.match(a.first)}
519
+ it "should not use savepoints around index creation if running inside a transaction if :ignore_index_errors option is used" do
520
+ @db.define_singleton_method(:execute_ddl){|*a| super(*a); raise Sequel::DatabaseError if /blah/.match(a.first)}
521
+ @db.transaction{@db.create_table(:cats, :ignore_index_errors=>true){Integer :id; index :blah; index :id}}
522
+ @db.sqls.must_equal ["BEGIN", "CREATE TABLE cats (id integer)", "CREATE INDEX cats_blah_index ON cats (blah)", "CREATE INDEX cats_id_index ON cats (id)", "COMMIT"]
523
+ end
524
+
525
+ it "should use savepoints around index creation if running inside a transaction if :ignore_index_errors option is used and transactional schema modifications are supported" do
526
+ @db.define_singleton_method(:supports_transactional_ddl?){true}
527
+ @db.define_singleton_method(:execute_ddl){|*a| super(*a); raise Sequel::DatabaseError if /blah/.match(a.first)}
526
528
  @db.transaction{@db.create_table(:cats, :ignore_index_errors=>true){Integer :id; index :blah; index :id}}
527
529
  @db.sqls.must_equal ["BEGIN", "CREATE TABLE cats (id integer)", "SAVEPOINT autopoint_1", "CREATE INDEX cats_blah_index ON cats (blah)", "ROLLBACK TO SAVEPOINT autopoint_1", "SAVEPOINT autopoint_1", "CREATE INDEX cats_id_index ON cats (id)", "RELEASE SAVEPOINT autopoint_1", "COMMIT"]
528
530
  end
@@ -613,7 +615,7 @@ describe "DB#create_table" do
613
615
  @db.sqls.must_equal ["CREATE TABLE cats (CHECK (price = 100))"]
614
616
  end
615
617
 
616
- deprecated "should accept array constraints" do
618
+ it "should accept array constraints" do
617
619
  @db.create_table(:cats) do
618
620
  check [Sequel.expr(:x) > 0, Sequel.expr(:y) < 1]
619
621
  end
@@ -757,19 +759,19 @@ describe "DB#create_table!" do
757
759
  end
758
760
 
759
761
  it "should create the table if it does not exist" do
760
- meta_def(@db, :table_exists?){|a| false}
761
- @db.create_table!(:cats){|*a|}
762
+ @db.define_singleton_method(:table_exists?){|a| false}
763
+ @db.create_table!(:cats){|*a|}.must_be_nil
762
764
  @db.sqls.must_equal ['CREATE TABLE cats ()']
763
765
  end
764
766
 
765
767
  it "should drop the table before creating it if it already exists" do
766
- meta_def(@db, :table_exists?){|a| true}
768
+ @db.define_singleton_method(:table_exists?){|a| true}
767
769
  @db.create_table!(:cats){|*a|}
768
770
  @db.sqls.must_equal ['DROP TABLE cats', 'CREATE TABLE cats ()']
769
771
  end
770
772
 
771
773
  it "should use IF EXISTS if the database supports it" do
772
- meta_def(@db, :supports_drop_table_if_exists?){true}
774
+ @db.define_singleton_method(:supports_drop_table_if_exists?){true}
773
775
  @db.create_table!(:cats){|*a|}
774
776
  @db.sqls.must_equal ['DROP TABLE IF EXISTS cats', 'CREATE TABLE cats ()']
775
777
  end
@@ -781,30 +783,30 @@ describe "DB#create_table?" do
781
783
  end
782
784
 
783
785
  it "should not create the table if the table already exists" do
784
- meta_def(@db, :table_exists?){|a| true}
785
- @db.create_table?(:cats){|*a|}
786
+ @db.define_singleton_method(:table_exists?){|a| true}
787
+ @db.create_table?(:cats){|*a|}.must_be_nil
786
788
  @db.sqls.must_equal []
787
789
  end
788
790
 
789
791
  it "should create the table if the table doesn't already exist" do
790
- meta_def(@db, :table_exists?){|a| false}
792
+ @db.define_singleton_method(:table_exists?){|a| false}
791
793
  @db.create_table?(:cats){|*a|}
792
794
  @db.sqls.must_equal ['CREATE TABLE cats ()']
793
795
  end
794
796
 
795
797
  it "should use IF NOT EXISTS if the database supports that" do
796
- meta_def(@db, :supports_create_table_if_not_exists?){true}
798
+ @db.define_singleton_method(:supports_create_table_if_not_exists?){true}
797
799
  @db.create_table?(:cats){|*a|}
798
800
  @db.sqls.must_equal ['CREATE TABLE IF NOT EXISTS cats ()']
799
801
  end
800
802
 
801
803
  it "should not use IF NOT EXISTS if the indexes are created" do
802
- meta_def(@db, :table_exists?){|a| false}
803
- meta_def(@db, :supports_create_table_if_not_exists?){true}
804
+ @db.define_singleton_method(:table_exists?){|a| false}
805
+ @db.define_singleton_method(:supports_create_table_if_not_exists?){true}
804
806
  @db.create_table?(:cats){|*a| Integer :a, :index=>true}
805
807
  @db.sqls.must_equal ['CREATE TABLE cats (a integer)', 'CREATE INDEX cats_a_index ON cats (a)']
806
808
 
807
- meta_def(@db, :table_exists?){|a| true}
809
+ @db.define_singleton_method(:table_exists?){|a| true}
808
810
  @db.create_table?(:cats){|*a| Integer :a, :index=>true}
809
811
  @db.sqls.must_equal []
810
812
  end
@@ -816,7 +818,7 @@ describe "DB#create_join_table" do
816
818
  end
817
819
 
818
820
  it "should take a hash with foreign keys and table name values" do
819
- @db.create_join_table(:cat_id=>:cats, :dog_id=>:dogs)
821
+ @db.create_join_table(:cat_id=>:cats, :dog_id=>:dogs).must_be_nil
820
822
  @db.sqls.must_equal ['CREATE TABLE cats_dogs (cat_id integer NOT NULL REFERENCES cats, dog_id integer NOT NULL REFERENCES dogs, PRIMARY KEY (cat_id, dog_id))', 'CREATE INDEX cats_dogs_dog_id_cat_id_index ON cats_dogs (dog_id, cat_id)']
821
823
  end
822
824
 
@@ -864,30 +866,30 @@ describe "DB#create_join_table?" do
864
866
  end
865
867
 
866
868
  it "should create the table if it does not already exist" do
867
- meta_def(@db, :table_exists?){|a| false}
868
- @db.create_join_table?(:cat_id=>:cats, :dog_id=>:dogs)
869
+ @db.define_singleton_method(:table_exists?){|a| false}
870
+ @db.create_join_table?(:cat_id=>:cats, :dog_id=>:dogs).must_be_nil
869
871
  @db.sqls.must_equal ['CREATE TABLE cats_dogs (cat_id integer NOT NULL REFERENCES cats, dog_id integer NOT NULL REFERENCES dogs, PRIMARY KEY (cat_id, dog_id))', 'CREATE INDEX cats_dogs_dog_id_cat_id_index ON cats_dogs (dog_id, cat_id)']
870
872
  end
871
873
 
872
874
  it "should not create the table if it already exists" do
873
- meta_def(@db, :table_exists?){|a| true}
875
+ @db.define_singleton_method(:table_exists?){|a| true}
874
876
  @db.create_join_table?(:cat_id=>:cats, :dog_id=>:dogs)
875
877
  @db.sqls.must_equal []
876
878
  end
877
879
 
878
880
  it "should not use IF NOT EXISTS" do
879
- meta_def(@db, :table_exists?){|a| false}
880
- meta_def(@db, :supports_create_table_if_not_exists?){true}
881
+ @db.define_singleton_method(:table_exists?){|a| false}
882
+ @db.define_singleton_method(:supports_create_table_if_not_exists?){true}
881
883
  @db.create_join_table?(:cat_id=>:cats, :dog_id=>:dogs)
882
884
  @db.sqls.must_equal ['CREATE TABLE cats_dogs (cat_id integer NOT NULL REFERENCES cats, dog_id integer NOT NULL REFERENCES dogs, PRIMARY KEY (cat_id, dog_id))', 'CREATE INDEX cats_dogs_dog_id_cat_id_index ON cats_dogs (dog_id, cat_id)']
883
885
 
884
- meta_def(@db, :table_exists?){|a| true}
886
+ @db.define_singleton_method(:table_exists?){|a| true}
885
887
  @db.create_join_table?(:cat_id=>:cats, :dog_id=>:dogs)
886
888
  @db.sqls.must_equal []
887
889
  end
888
890
 
889
891
  it "should not use IF NOT EXISTS if no_index is used" do
890
- meta_def(@db, :supports_create_table_if_not_exists?){true}
892
+ @db.define_singleton_method(:supports_create_table_if_not_exists?){true}
891
893
  @db.create_join_table?({:cat_id=>:cats, :dog_id=>:dogs}, :no_index=>true)
892
894
  @db.sqls.must_equal ['CREATE TABLE IF NOT EXISTS cats_dogs (cat_id integer NOT NULL REFERENCES cats, dog_id integer NOT NULL REFERENCES dogs, PRIMARY KEY (cat_id, dog_id))']
893
895
  end
@@ -899,19 +901,19 @@ describe "DB#create_join_table!" do
899
901
  end
900
902
 
901
903
  it "should drop the table first if it already exists" do
902
- meta_def(@db, :table_exists?){|a| true}
903
- @db.create_join_table!(:cat_id=>:cats, :dog_id=>:dogs)
904
+ @db.define_singleton_method(:table_exists?){|a| true}
905
+ @db.create_join_table!(:cat_id=>:cats, :dog_id=>:dogs).must_be_nil
904
906
  @db.sqls.must_equal ['DROP TABLE cats_dogs', 'CREATE TABLE cats_dogs (cat_id integer NOT NULL REFERENCES cats, dog_id integer NOT NULL REFERENCES dogs, PRIMARY KEY (cat_id, dog_id))', 'CREATE INDEX cats_dogs_dog_id_cat_id_index ON cats_dogs (dog_id, cat_id)']
905
907
  end
906
908
 
907
909
  it "should not drop the table if it doesn't exists" do
908
- meta_def(@db, :table_exists?){|a| false}
910
+ @db.define_singleton_method(:table_exists?){|a| false}
909
911
  @db.create_join_table!(:cat_id=>:cats, :dog_id=>:dogs)
910
912
  @db.sqls.must_equal ['CREATE TABLE cats_dogs (cat_id integer NOT NULL REFERENCES cats, dog_id integer NOT NULL REFERENCES dogs, PRIMARY KEY (cat_id, dog_id))', 'CREATE INDEX cats_dogs_dog_id_cat_id_index ON cats_dogs (dog_id, cat_id)']
911
913
  end
912
914
 
913
915
  it "should use IF EXISTS if the database supports it" do
914
- meta_def(@db, :supports_drop_table_if_exists?){true}
916
+ @db.define_singleton_method(:supports_drop_table_if_exists?){true}
915
917
  @db.create_join_table!(:cat_id=>:cats, :dog_id=>:dogs)
916
918
  @db.sqls.must_equal ['DROP TABLE IF EXISTS cats_dogs', 'CREATE TABLE cats_dogs (cat_id integer NOT NULL REFERENCES cats, dog_id integer NOT NULL REFERENCES dogs, PRIMARY KEY (cat_id, dog_id))', 'CREATE INDEX cats_dogs_dog_id_cat_id_index ON cats_dogs (dog_id, cat_id)']
917
919
  end
@@ -923,7 +925,7 @@ describe "DB#drop_join_table" do
923
925
  end
924
926
 
925
927
  it "should take a hash with foreign keys and table name values and drop the table" do
926
- @db.drop_join_table(:cat_id=>:cats, :dog_id=>:dogs)
928
+ @db.drop_join_table(:cat_id=>:cats, :dog_id=>:dogs).must_be_nil
927
929
  @db.sqls.must_equal ['DROP TABLE cats_dogs']
928
930
  end
929
931
 
@@ -956,7 +958,7 @@ describe "DB#drop_table" do
956
958
  end
957
959
 
958
960
  it "should generate a DROP TABLE statement" do
959
- @db.drop_table :cats
961
+ @db.drop_table(:cats).must_be_nil
960
962
  @db.sqls.must_equal ['DROP TABLE cats']
961
963
  end
962
964
 
@@ -977,37 +979,37 @@ describe "DB#drop_table?" do
977
979
  end
978
980
 
979
981
  it "should drop the table if it exists" do
980
- meta_def(@db, :table_exists?){|a| true}
981
- @db.drop_table?(:cats)
982
+ @db.define_singleton_method(:table_exists?){|a| true}
983
+ @db.drop_table?(:cats).must_be_nil
982
984
  @db.sqls.must_equal ["DROP TABLE cats"]
983
985
  end
984
986
 
985
987
  it "should do nothing if the table does not exist" do
986
- meta_def(@db, :table_exists?){|a| false}
988
+ @db.define_singleton_method(:table_exists?){|a| false}
987
989
  @db.drop_table?(:cats)
988
990
  @db.sqls.must_equal []
989
991
  end
990
992
 
991
993
  it "should operate on multiple tables at once" do
992
- meta_def(@db, :table_exists?){|a| a == :cats}
994
+ @db.define_singleton_method(:table_exists?){|a| a == :cats}
993
995
  @db.drop_table? :cats, :dogs
994
996
  @db.sqls.must_equal ['DROP TABLE cats']
995
997
  end
996
998
 
997
999
  it "should take an options hash and support the :cascade option" do
998
- meta_def(@db, :table_exists?){|a| true}
1000
+ @db.define_singleton_method(:table_exists?){|a| true}
999
1001
  @db.drop_table? :cats, :dogs, :cascade=>true
1000
1002
  @db.sqls.must_equal ['DROP TABLE cats CASCADE', 'DROP TABLE dogs CASCADE']
1001
1003
  end
1002
1004
 
1003
1005
  it "should use IF NOT EXISTS if the database supports that" do
1004
- meta_def(@db, :supports_drop_table_if_exists?){true}
1006
+ @db.define_singleton_method(:supports_drop_table_if_exists?){true}
1005
1007
  @db.drop_table? :cats, :dogs
1006
1008
  @db.sqls.must_equal ['DROP TABLE IF EXISTS cats', 'DROP TABLE IF EXISTS dogs']
1007
1009
  end
1008
1010
 
1009
1011
  it "should use IF NOT EXISTS with CASCADE if the database supports that" do
1010
- meta_def(@db, :supports_drop_table_if_exists?){true}
1012
+ @db.define_singleton_method(:supports_drop_table_if_exists?){true}
1011
1013
  @db.drop_table? :cats, :dogs, :cascade=>true
1012
1014
  @db.sqls.must_equal ['DROP TABLE IF EXISTS cats CASCADE', 'DROP TABLE IF EXISTS dogs CASCADE']
1013
1015
  end
@@ -1018,15 +1020,10 @@ describe "DB#alter_table" do
1018
1020
  @db = Sequel.mock
1019
1021
  end
1020
1022
 
1021
- deprecated "should support an AlterTableGenerator as second argument" do
1022
- @db.alter_table(:cats, Sequel::Schema::AlterTableGenerator.new(@db){set_column_allow_null :score, false})
1023
- @db.sqls.must_equal ["ALTER TABLE cats ALTER COLUMN score SET NOT NULL"]
1024
- end
1025
-
1026
1023
  it "should allow adding not null constraint via set_column_allow_null with false argument" do
1027
1024
  @db.alter_table(:cats) do
1028
1025
  set_column_allow_null :score, false
1029
- end
1026
+ end.must_be_nil
1030
1027
  @db.sqls.must_equal ["ALTER TABLE cats ALTER COLUMN score SET NOT NULL"]
1031
1028
  end
1032
1029
 
@@ -1128,7 +1125,7 @@ describe "DB#alter_table" do
1128
1125
  end
1129
1126
 
1130
1127
  it "should ignore errors if the database raises an error on an add_index call and the :ignore_errors option is used" do
1131
- meta_def(@db, :execute_ddl){|*a| raise Sequel::DatabaseError}
1128
+ @db.define_singleton_method(:execute_ddl){|*a| raise Sequel::DatabaseError}
1132
1129
  lambda{@db.add_index(:cats, :id)}.must_raise(Sequel::DatabaseError)
1133
1130
  @db.add_index(:cats, :id, :ignore_errors=>true)
1134
1131
  @db.sqls.must_equal []
@@ -1283,7 +1280,7 @@ describe "DB#alter_table" do
1283
1280
  end
1284
1281
 
1285
1282
  it "should combine operations into a single query if the database supports it" do
1286
- meta_def(@db, :supports_combining_alter_table_ops?){true}
1283
+ @db.define_singleton_method(:supports_combining_alter_table_ops?){true}
1287
1284
  @db.alter_table(:cats) do
1288
1285
  add_column :a, Integer
1289
1286
  drop_column :b
@@ -1298,7 +1295,7 @@ describe "DB#alter_table" do
1298
1295
  end
1299
1296
 
1300
1297
  it "should combine operations into consecutive groups of combinable operations if the database supports combining operations" do
1301
- meta_def(@db, :supports_combining_alter_table_ops?){true}
1298
+ @db.define_singleton_method(:supports_combining_alter_table_ops?){true}
1302
1299
  @db.alter_table(:cats) do
1303
1300
  add_column :a, Integer
1304
1301
  drop_column :b
@@ -1373,7 +1370,7 @@ end
1373
1370
  describe "Database#add_column" do
1374
1371
  it "should construct proper SQL" do
1375
1372
  db = Sequel.mock
1376
- db.add_column :test, :name, :text, :unique => true
1373
+ db.add_column(:test, :name, :text, :unique => true).must_be_nil
1377
1374
  db.sqls.must_equal ['ALTER TABLE test ADD COLUMN name text UNIQUE']
1378
1375
  end
1379
1376
  end
@@ -1384,7 +1381,7 @@ describe "Database#drop_column" do
1384
1381
  end
1385
1382
 
1386
1383
  it "should construct proper SQL" do
1387
- @db.drop_column :test, :name
1384
+ @db.drop_column(:test, :name).must_be_nil
1388
1385
  @db.sqls.must_equal ['ALTER TABLE test DROP COLUMN name']
1389
1386
  end
1390
1387
 
@@ -1400,7 +1397,7 @@ describe "Database#rename_column" do
1400
1397
  end
1401
1398
 
1402
1399
  it "should construct proper SQL" do
1403
- @db.rename_column :test, :abc, :def
1400
+ @db.rename_column(:test, :abc, :def).must_be_nil
1404
1401
  @db.sqls.must_equal ['ALTER TABLE test RENAME COLUMN abc TO def']
1405
1402
  end
1406
1403
  end
@@ -1411,7 +1408,7 @@ describe "Database#set_column_type" do
1411
1408
  end
1412
1409
 
1413
1410
  it "should construct proper SQL" do
1414
- @db.set_column_type :test, :name, :integer
1411
+ @db.set_column_type(:test, :name, :integer).must_be_nil
1415
1412
  @db.sqls.must_equal ['ALTER TABLE test ALTER COLUMN name TYPE integer']
1416
1413
  end
1417
1414
  end
@@ -1422,7 +1419,7 @@ describe "Database#set_column_default" do
1422
1419
  end
1423
1420
 
1424
1421
  it "should construct proper SQL" do
1425
- @db.set_column_default :test, :name, 'zyx'
1422
+ @db.set_column_default(:test, :name, 'zyx').must_be_nil
1426
1423
  @db.sqls.must_equal ["ALTER TABLE test ALTER COLUMN name SET DEFAULT 'zyx'"]
1427
1424
  end
1428
1425
  end
@@ -1433,7 +1430,7 @@ describe "Database#add_index" do
1433
1430
  end
1434
1431
 
1435
1432
  it "should construct proper SQL" do
1436
- @db.add_index :test, :name, :unique => true
1433
+ @db.add_index(:test, :name, :unique => true).must_be_nil
1437
1434
  @db.sqls.must_equal ['CREATE UNIQUE INDEX test_name_index ON test (name)']
1438
1435
  end
1439
1436
 
@@ -1449,7 +1446,7 @@ describe "Database#drop_index" do
1449
1446
  end
1450
1447
 
1451
1448
  it "should construct proper SQL" do
1452
- @db.drop_index :test, :name
1449
+ @db.drop_index(:test, :name).must_be_nil
1453
1450
  @db.sqls.must_equal ['DROP INDEX test_name_index']
1454
1451
  end
1455
1452
 
@@ -1461,7 +1458,7 @@ describe "Database#drop_table" do
1461
1458
  end
1462
1459
 
1463
1460
  it "should construct proper SQL" do
1464
- @db.drop_table :test
1461
+ @db.drop_table(:test).must_be_nil
1465
1462
  @db.sqls.must_equal ['DROP TABLE test']
1466
1463
  end
1467
1464
 
@@ -1477,7 +1474,7 @@ describe "Database#rename_table" do
1477
1474
  end
1478
1475
 
1479
1476
  it "should construct proper SQL" do
1480
- @db.rename_table :abc, :xyz
1477
+ @db.rename_table(:abc, :xyz).must_be_nil
1481
1478
  @db.sqls.must_equal ['ALTER TABLE abc RENAME TO xyz']
1482
1479
  end
1483
1480
  end
@@ -1488,7 +1485,7 @@ describe "Database#create_view" do
1488
1485
  end
1489
1486
 
1490
1487
  it "should construct proper SQL with raw SQL" do
1491
- @db.create_view :test, "SELECT * FROM xyz"
1488
+ @db.create_view(:test, "SELECT * FROM xyz").must_be_nil
1492
1489
  @db.sqls.must_equal ['CREATE VIEW test AS SELECT * FROM xyz']
1493
1490
  @db.create_view Sequel.identifier(:test), "SELECT * FROM xyz"
1494
1491
  @db.sqls.must_equal ['CREATE VIEW test AS SELECT * FROM xyz']
@@ -1540,7 +1537,7 @@ describe "Database#drop_view" do
1540
1537
  end
1541
1538
 
1542
1539
  with_symbol_splitting "should construct proper SQL for splittable symbols" do
1543
- @db.drop_view :sch__test
1540
+ @db.drop_view(:sch__test).must_be_nil
1544
1541
  @db.sqls.must_equal ['DROP VIEW sch.test']
1545
1542
  end
1546
1543
 
@@ -1580,21 +1577,21 @@ describe "Schema Parser" do
1580
1577
  end
1581
1578
 
1582
1579
  it "should raise an error if there are no columns" do
1583
- meta_def(@db, :schema_parse_table) do |t, opts|
1580
+ @db.define_singleton_method(:schema_parse_table) do |t, opts|
1584
1581
  []
1585
1582
  end
1586
1583
  proc{@db.schema(:x)}.must_raise(Sequel::Error)
1587
1584
  end
1588
1585
 
1589
1586
  it "should cache data by default" do
1590
- meta_def(@db, :schema_parse_table) do |t, opts|
1587
+ @db.define_singleton_method(:schema_parse_table) do |t, opts|
1591
1588
  [[:a, {}]]
1592
1589
  end
1593
1590
  @db.schema(:x).must_be_same_as(@db.schema(:x))
1594
1591
  end
1595
1592
 
1596
1593
  it "should not cache data if :reload=>true is given" do
1597
- meta_def(@db, :schema_parse_table) do |t, opts|
1594
+ @db.define_singleton_method(:schema_parse_table) do |t, opts|
1598
1595
  [[:a, {}]]
1599
1596
  end
1600
1597
  @db.schema(:x).wont_be_same_as(@db.schema(:x, :reload=>true))
@@ -1602,7 +1599,7 @@ describe "Schema Parser" do
1602
1599
 
1603
1600
  it "should not cache schema metadata if cache_schema is false" do
1604
1601
  @db.cache_schema = false
1605
- meta_def(@db, :schema_parse_table) do |t, opts|
1602
+ @db.define_singleton_method(:schema_parse_table) do |t, opts|
1606
1603
  [[:a, {}]]
1607
1604
  end
1608
1605
  @db.schema(:x).wont_be_same_as(@db.schema(:x))
@@ -1610,7 +1607,7 @@ describe "Schema Parser" do
1610
1607
 
1611
1608
  it "should provide options if given a table name" do
1612
1609
  c = nil
1613
- meta_def(@db, :schema_parse_table) do |t, opts|
1610
+ @db.define_singleton_method(:schema_parse_table) do |t, opts|
1614
1611
  c = [t, opts]
1615
1612
  [[:a, {:db_type=>t.to_s}]]
1616
1613
  end
@@ -1625,7 +1622,7 @@ describe "Schema Parser" do
1625
1622
 
1626
1623
  with_symbol_splitting "should provide options if given a table name with splittable symbols" do
1627
1624
  c = nil
1628
- meta_def(@db, :schema_parse_table) do |t, opts|
1625
+ @db.define_singleton_method(:schema_parse_table) do |t, opts|
1629
1626
  c = [t, opts]
1630
1627
  [[:a, {:db_type=>t.to_s}]]
1631
1628
  end
@@ -1639,7 +1636,7 @@ describe "Schema Parser" do
1639
1636
  it "should parse the schema correctly for a single table" do
1640
1637
  sqls = @sqls
1641
1638
  proc{@db.schema(:x)}.must_raise(Sequel::Error)
1642
- meta_def(@db, :schema_parse_table) do |t, opts|
1639
+ @db.define_singleton_method(:schema_parse_table) do |t, opts|
1643
1640
  sqls << t
1644
1641
  [[:a, {:db_type=>t.to_s}]]
1645
1642
  end
@@ -1652,33 +1649,33 @@ describe "Schema Parser" do
1652
1649
  end
1653
1650
 
1654
1651
  it "should set :auto_increment to true by default if unset and a single integer primary key is used" do
1655
- meta_def(@db, :schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'integer'}]]}
1652
+ @db.define_singleton_method(:schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'integer'}]]}
1656
1653
  @db.schema(:x).first.last[:auto_increment].must_equal true
1657
1654
  end
1658
1655
 
1659
1656
  it "should not set :auto_increment if already set" do
1660
- meta_def(@db, :schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'integer', :auto_increment=>false}]]}
1657
+ @db.define_singleton_method(:schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'integer', :auto_increment=>false}]]}
1661
1658
  @db.schema(:x).first.last[:auto_increment].must_equal false
1662
1659
  end
1663
1660
 
1664
1661
  it "should set :auto_increment to false by default if unset and a single nonintegery primary key is used" do
1665
- meta_def(@db, :schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'varchar'}]]}
1662
+ @db.define_singleton_method(:schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'varchar'}]]}
1666
1663
  @db.schema(:x).first.last[:auto_increment].must_equal false
1667
1664
  end
1668
1665
 
1669
1666
  it "should set :auto_increment to false by default if unset and a composite primary key" do
1670
- meta_def(@db, :schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'integer'}], [:b, {:primary_key=>true, :db_type=>'integer'}]]}
1667
+ @db.define_singleton_method(:schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'integer'}], [:b, {:primary_key=>true, :db_type=>'integer'}]]}
1671
1668
  @db.schema(:x).first.last[:auto_increment].must_equal false
1672
1669
  @db.schema(:x).last.last[:auto_increment].must_equal false
1673
1670
  end
1674
1671
 
1675
1672
  it "should set :auto_increment to true by default if set and not the first column" do
1676
- meta_def(@db, :schema_parse_table){|*| [[:b, {}], [:a, {:primary_key=>true, :db_type=>'integer'}]]}
1673
+ @db.define_singleton_method(:schema_parse_table){|*| [[:b, {}], [:a, {:primary_key=>true, :db_type=>'integer'}]]}
1677
1674
  @db.schema(:x).last.last[:auto_increment].must_equal true
1678
1675
  end
1679
1676
 
1680
1677
  it "should convert various types of table name arguments" do
1681
- meta_def(@db, :schema_parse_table) do |t, opts|
1678
+ @db.define_singleton_method(:schema_parse_table) do |t, opts|
1682
1679
  [[t, opts]]
1683
1680
  end
1684
1681
  s1 = @db.schema(:x)
@@ -1703,7 +1700,7 @@ describe "Schema Parser" do
1703
1700
  end
1704
1701
 
1705
1702
  with_symbol_splitting "should convert splittable symbol arguments" do
1706
- meta_def(@db, :schema_parse_table) do |t, opts|
1703
+ @db.define_singleton_method(:schema_parse_table) do |t, opts|
1707
1704
  [[t, opts]]
1708
1705
  end
1709
1706
  s1 = @db.schema(:x)