sequel 4.36.0 → 5.61.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.
- checksums.yaml +5 -5
- data/CHANGELOG +548 -5749
- data/MIT-LICENSE +1 -1
- data/README.rdoc +265 -159
- data/bin/sequel +34 -12
- data/doc/advanced_associations.rdoc +228 -187
- data/doc/association_basics.rdoc +281 -291
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +86 -51
- data/doc/code_order.rdoc +25 -19
- data/doc/core_extensions.rdoc +104 -63
- data/doc/dataset_basics.rdoc +12 -21
- data/doc/dataset_filtering.rdoc +99 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/fork_safety.rdoc +84 -0
- data/doc/mass_assignment.rdoc +74 -31
- data/doc/migration.rdoc +59 -51
- data/doc/model_dataset_method_design.rdoc +129 -0
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +12 -12
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +58 -68
- data/doc/opening_databases.rdoc +85 -95
- data/doc/postgresql.rdoc +263 -38
- data/doc/prepared_statements.rdoc +29 -24
- data/doc/querying.rdoc +189 -167
- data/doc/reflection.rdoc +5 -6
- data/doc/release_notes/5.0.0.txt +159 -0
- data/doc/release_notes/5.1.0.txt +31 -0
- data/doc/release_notes/5.10.0.txt +84 -0
- data/doc/release_notes/5.11.0.txt +83 -0
- data/doc/release_notes/5.12.0.txt +141 -0
- data/doc/release_notes/5.13.0.txt +27 -0
- data/doc/release_notes/5.14.0.txt +63 -0
- data/doc/release_notes/5.15.0.txt +39 -0
- data/doc/release_notes/5.16.0.txt +110 -0
- data/doc/release_notes/5.17.0.txt +31 -0
- data/doc/release_notes/5.18.0.txt +69 -0
- data/doc/release_notes/5.19.0.txt +28 -0
- data/doc/release_notes/5.2.0.txt +33 -0
- data/doc/release_notes/5.20.0.txt +89 -0
- data/doc/release_notes/5.21.0.txt +87 -0
- data/doc/release_notes/5.22.0.txt +48 -0
- data/doc/release_notes/5.23.0.txt +56 -0
- data/doc/release_notes/5.24.0.txt +56 -0
- data/doc/release_notes/5.25.0.txt +32 -0
- data/doc/release_notes/5.26.0.txt +35 -0
- data/doc/release_notes/5.27.0.txt +21 -0
- data/doc/release_notes/5.28.0.txt +16 -0
- data/doc/release_notes/5.29.0.txt +22 -0
- data/doc/release_notes/5.3.0.txt +121 -0
- data/doc/release_notes/5.30.0.txt +20 -0
- data/doc/release_notes/5.31.0.txt +148 -0
- data/doc/release_notes/5.32.0.txt +46 -0
- data/doc/release_notes/5.33.0.txt +24 -0
- data/doc/release_notes/5.34.0.txt +40 -0
- data/doc/release_notes/5.35.0.txt +56 -0
- data/doc/release_notes/5.36.0.txt +60 -0
- data/doc/release_notes/5.37.0.txt +30 -0
- data/doc/release_notes/5.38.0.txt +28 -0
- data/doc/release_notes/5.39.0.txt +19 -0
- data/doc/release_notes/5.4.0.txt +80 -0
- data/doc/release_notes/5.40.0.txt +40 -0
- data/doc/release_notes/5.41.0.txt +25 -0
- data/doc/release_notes/5.42.0.txt +136 -0
- data/doc/release_notes/5.43.0.txt +98 -0
- data/doc/release_notes/5.44.0.txt +32 -0
- data/doc/release_notes/5.45.0.txt +34 -0
- data/doc/release_notes/5.46.0.txt +87 -0
- data/doc/release_notes/5.47.0.txt +59 -0
- data/doc/release_notes/5.48.0.txt +14 -0
- data/doc/release_notes/5.49.0.txt +59 -0
- data/doc/release_notes/5.5.0.txt +61 -0
- data/doc/release_notes/5.50.0.txt +78 -0
- data/doc/release_notes/5.51.0.txt +47 -0
- data/doc/release_notes/5.52.0.txt +87 -0
- data/doc/release_notes/5.53.0.txt +23 -0
- data/doc/release_notes/5.54.0.txt +27 -0
- data/doc/release_notes/5.55.0.txt +21 -0
- data/doc/release_notes/5.56.0.txt +51 -0
- data/doc/release_notes/5.57.0.txt +23 -0
- data/doc/release_notes/5.58.0.txt +31 -0
- data/doc/release_notes/5.59.0.txt +73 -0
- data/doc/release_notes/5.6.0.txt +31 -0
- data/doc/release_notes/5.60.0.txt +22 -0
- data/doc/release_notes/5.61.0.txt +43 -0
- data/doc/release_notes/5.7.0.txt +108 -0
- data/doc/release_notes/5.8.0.txt +170 -0
- data/doc/release_notes/5.9.0.txt +99 -0
- data/doc/schema_modification.rdoc +95 -75
- data/doc/security.rdoc +109 -80
- data/doc/sharding.rdoc +74 -47
- data/doc/sql.rdoc +147 -122
- data/doc/testing.rdoc +43 -20
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +97 -18
- data/doc/validations.rdoc +52 -50
- data/doc/virtual_rows.rdoc +90 -109
- data/lib/sequel/adapters/ado/access.rb +15 -17
- data/lib/sequel/adapters/ado/mssql.rb +6 -15
- data/lib/sequel/adapters/ado.rb +150 -20
- data/lib/sequel/adapters/amalgalite.rb +11 -23
- data/lib/sequel/adapters/ibmdb.rb +47 -55
- data/lib/sequel/adapters/jdbc/db2.rb +29 -39
- data/lib/sequel/adapters/jdbc/derby.rb +58 -54
- data/lib/sequel/adapters/jdbc/h2.rb +93 -35
- data/lib/sequel/adapters/jdbc/hsqldb.rb +24 -31
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -10
- data/lib/sequel/adapters/jdbc/mssql.rb +3 -11
- data/lib/sequel/adapters/jdbc/mysql.rb +17 -20
- data/lib/sequel/adapters/jdbc/oracle.rb +22 -18
- data/lib/sequel/adapters/jdbc/postgresql.rb +69 -71
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +11 -23
- data/lib/sequel/adapters/jdbc/sqlite.rb +47 -11
- data/lib/sequel/adapters/jdbc/sqlserver.rb +34 -9
- data/lib/sequel/adapters/jdbc/transactions.rb +22 -38
- data/lib/sequel/adapters/jdbc.rb +145 -130
- data/lib/sequel/adapters/mock.rb +100 -111
- data/lib/sequel/adapters/mysql.rb +114 -122
- data/lib/sequel/adapters/mysql2.rb +147 -63
- data/lib/sequel/adapters/odbc/db2.rb +1 -1
- data/lib/sequel/adapters/odbc/mssql.rb +8 -14
- data/lib/sequel/adapters/odbc/oracle.rb +11 -0
- data/lib/sequel/adapters/odbc.rb +20 -25
- data/lib/sequel/adapters/oracle.rb +50 -56
- data/lib/sequel/adapters/postgres.rb +305 -327
- data/lib/sequel/adapters/postgresql.rb +1 -1
- data/lib/sequel/adapters/shared/access.rb +74 -78
- data/lib/sequel/adapters/shared/db2.rb +118 -71
- data/lib/sequel/adapters/shared/mssql.rb +301 -220
- data/lib/sequel/adapters/shared/mysql.rb +299 -217
- data/lib/sequel/adapters/shared/oracle.rb +226 -65
- data/lib/sequel/adapters/shared/postgres.rb +935 -395
- data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -126
- data/lib/sequel/adapters/shared/sqlite.rb +447 -173
- data/lib/sequel/adapters/sqlanywhere.rb +48 -35
- data/lib/sequel/adapters/sqlite.rb +156 -111
- data/lib/sequel/adapters/tinytds.rb +30 -38
- data/lib/sequel/adapters/utils/columns_limit_1.rb +22 -0
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +3 -6
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +2 -2
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +87 -0
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
- data/lib/sequel/adapters/utils/replace.rb +1 -4
- data/lib/sequel/adapters/utils/stored_procedures.rb +7 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
- data/lib/sequel/ast_transformer.rb +17 -89
- data/lib/sequel/connection_pool/sharded_single.rb +18 -15
- data/lib/sequel/connection_pool/sharded_threaded.rb +130 -111
- data/lib/sequel/connection_pool/single.rb +18 -13
- data/lib/sequel/connection_pool/threaded.rb +121 -120
- data/lib/sequel/connection_pool.rb +48 -29
- data/lib/sequel/core.rb +351 -301
- data/lib/sequel/database/connecting.rb +69 -57
- data/lib/sequel/database/dataset.rb +13 -5
- data/lib/sequel/database/dataset_defaults.rb +18 -102
- data/lib/sequel/database/features.rb +18 -4
- data/lib/sequel/database/logging.rb +12 -11
- data/lib/sequel/database/misc.rb +180 -122
- data/lib/sequel/database/query.rb +47 -27
- data/lib/sequel/database/schema_generator.rb +178 -84
- data/lib/sequel/database/schema_methods.rb +172 -97
- data/lib/sequel/database/transactions.rb +205 -44
- data/lib/sequel/database.rb +17 -2
- data/lib/sequel/dataset/actions.rb +339 -155
- data/lib/sequel/dataset/dataset_module.rb +46 -0
- data/lib/sequel/dataset/features.rb +90 -35
- data/lib/sequel/dataset/graph.rb +80 -58
- data/lib/sequel/dataset/misc.rb +137 -47
- data/lib/sequel/dataset/placeholder_literalizer.rb +63 -25
- data/lib/sequel/dataset/prepared_statements.rb +188 -85
- data/lib/sequel/dataset/query.rb +530 -222
- data/lib/sequel/dataset/sql.rb +590 -368
- data/lib/sequel/dataset.rb +26 -16
- data/lib/sequel/deprecated.rb +12 -2
- data/lib/sequel/exceptions.rb +46 -16
- data/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
- data/lib/sequel/extensions/_model_pg_row.rb +43 -0
- data/lib/sequel/extensions/_pretty_table.rb +2 -5
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
- data/lib/sequel/extensions/async_thread_pool.rb +438 -0
- data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
- data/lib/sequel/extensions/blank.rb +8 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +4 -3
- data/lib/sequel/extensions/connection_expiration.rb +20 -10
- data/lib/sequel/extensions/connection_validator.rb +11 -10
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +62 -39
- data/lib/sequel/extensions/core_extensions.rb +42 -48
- data/lib/sequel/extensions/core_refinements.rb +80 -59
- data/lib/sequel/extensions/current_datetime_timestamp.rb +1 -4
- data/lib/sequel/extensions/date_arithmetic.rb +98 -39
- data/lib/sequel/extensions/date_parse_input_handler.rb +67 -0
- data/lib/sequel/extensions/datetime_parse_to_time.rb +41 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +21 -14
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +12 -15
- data/lib/sequel/extensions/exclude_or_null.rb +68 -0
- data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
- data/lib/sequel/extensions/freeze_datasets.rb +3 -0
- data/lib/sequel/extensions/from_block.rb +1 -34
- data/lib/sequel/extensions/graph_each.rb +4 -4
- data/lib/sequel/extensions/identifier_mangling.rb +180 -0
- data/lib/sequel/extensions/implicit_subquery.rb +48 -0
- data/lib/sequel/extensions/index_caching.rb +109 -0
- data/lib/sequel/extensions/inflector.rb +13 -5
- data/lib/sequel/extensions/integer64.rb +32 -0
- data/lib/sequel/extensions/is_distinct_from.rb +141 -0
- data/lib/sequel/extensions/looser_typecasting.rb +17 -8
- data/lib/sequel/extensions/migration.rb +119 -78
- data/lib/sequel/extensions/named_timezones.rb +88 -23
- data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -82
- data/lib/sequel/extensions/null_dataset.rb +8 -8
- data/lib/sequel/extensions/pagination.rb +32 -29
- data/lib/sequel/extensions/pg_array.rb +221 -287
- data/lib/sequel/extensions/pg_array_ops.rb +17 -9
- data/lib/sequel/extensions/pg_enum.rb +63 -23
- data/lib/sequel/extensions/pg_extended_date_support.rb +241 -0
- data/lib/sequel/extensions/pg_hstore.rb +45 -54
- data/lib/sequel/extensions/pg_hstore_ops.rb +58 -6
- data/lib/sequel/extensions/pg_inet.rb +31 -12
- data/lib/sequel/extensions/pg_inet_ops.rb +2 -2
- data/lib/sequel/extensions/pg_interval.rb +56 -29
- data/lib/sequel/extensions/pg_json.rb +417 -140
- data/lib/sequel/extensions/pg_json_ops.rb +270 -18
- data/lib/sequel/extensions/pg_loose_count.rb +4 -2
- data/lib/sequel/extensions/pg_multirange.rb +372 -0
- data/lib/sequel/extensions/pg_range.rb +131 -191
- data/lib/sequel/extensions/pg_range_ops.rb +42 -13
- data/lib/sequel/extensions/pg_row.rb +48 -81
- data/lib/sequel/extensions/pg_row_ops.rb +33 -14
- data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
- data/lib/sequel/extensions/query.rb +9 -7
- data/lib/sequel/extensions/round_timestamps.rb +0 -6
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +60 -0
- data/lib/sequel/extensions/schema_caching.rb +10 -1
- data/lib/sequel/extensions/schema_dumper.rb +71 -48
- data/lib/sequel/extensions/select_remove.rb +4 -4
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
- data/lib/sequel/extensions/server_block.rb +51 -27
- data/lib/sequel/extensions/split_array_nil.rb +4 -4
- data/lib/sequel/extensions/sql_comments.rb +119 -7
- data/lib/sequel/extensions/sql_expr.rb +2 -1
- data/lib/sequel/extensions/sql_log_normalizer.rb +108 -0
- data/lib/sequel/extensions/sqlite_json_ops.rb +255 -0
- data/lib/sequel/extensions/string_agg.rb +11 -8
- data/lib/sequel/extensions/string_date_time.rb +19 -23
- data/lib/sequel/extensions/symbol_aref.rb +55 -0
- data/lib/sequel/extensions/symbol_aref_refinement.rb +43 -0
- data/lib/sequel/extensions/symbol_as.rb +23 -0
- data/lib/sequel/extensions/symbol_as_refinement.rb +37 -0
- data/lib/sequel/extensions/synchronize_sql.rb +45 -0
- data/lib/sequel/extensions/to_dot.rb +10 -4
- data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
- data/lib/sequel/model/associations.rb +1006 -284
- data/lib/sequel/model/base.rb +560 -805
- data/lib/sequel/model/dataset_module.rb +11 -10
- data/lib/sequel/model/default_inflections.rb +1 -1
- data/lib/sequel/model/errors.rb +10 -3
- data/lib/sequel/model/exceptions.rb +8 -10
- data/lib/sequel/model/inflections.rb +7 -20
- data/lib/sequel/model/plugins.rb +114 -0
- data/lib/sequel/model.rb +32 -82
- data/lib/sequel/plugins/active_model.rb +30 -14
- data/lib/sequel/plugins/after_initialize.rb +1 -1
- data/lib/sequel/plugins/association_dependencies.rb +25 -18
- data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
- data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
- data/lib/sequel/plugins/association_pks.rb +147 -70
- data/lib/sequel/plugins/association_proxies.rb +33 -9
- data/lib/sequel/plugins/async_thread_pool.rb +39 -0
- data/lib/sequel/plugins/auto_restrict_eager_graph.rb +62 -0
- data/lib/sequel/plugins/auto_validations.rb +95 -28
- data/lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb +68 -0
- data/lib/sequel/plugins/before_after_save.rb +0 -42
- data/lib/sequel/plugins/blacklist_security.rb +21 -12
- data/lib/sequel/plugins/boolean_readers.rb +5 -5
- data/lib/sequel/plugins/boolean_subsets.rb +13 -8
- data/lib/sequel/plugins/caching.rb +25 -16
- data/lib/sequel/plugins/class_table_inheritance.rb +179 -100
- data/lib/sequel/plugins/column_conflicts.rb +16 -3
- data/lib/sequel/plugins/column_encryption.rb +728 -0
- data/lib/sequel/plugins/column_select.rb +7 -5
- data/lib/sequel/plugins/columns_updated.rb +42 -0
- data/lib/sequel/plugins/composition.rb +42 -26
- data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
- data/lib/sequel/plugins/constraint_validations.rb +20 -14
- data/lib/sequel/plugins/csv_serializer.rb +56 -35
- data/lib/sequel/plugins/dataset_associations.rb +40 -17
- data/lib/sequel/plugins/def_dataset_method.rb +90 -0
- data/lib/sequel/plugins/defaults_setter.rb +65 -10
- data/lib/sequel/plugins/delay_add_association.rb +1 -1
- data/lib/sequel/plugins/dirty.rb +62 -24
- data/lib/sequel/plugins/eager_each.rb +3 -3
- data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
- data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
- data/lib/sequel/plugins/enum.rb +124 -0
- data/lib/sequel/plugins/error_splitter.rb +17 -12
- data/lib/sequel/plugins/finder.rb +246 -0
- data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
- data/lib/sequel/plugins/force_encoding.rb +7 -12
- data/lib/sequel/plugins/hook_class_methods.rb +37 -54
- data/lib/sequel/plugins/input_transformer.rb +18 -10
- data/lib/sequel/plugins/insert_conflict.rb +76 -0
- data/lib/sequel/plugins/insert_returning_select.rb +2 -2
- data/lib/sequel/plugins/instance_filters.rb +10 -8
- data/lib/sequel/plugins/instance_hooks.rb +34 -17
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +22 -13
- data/lib/sequel/plugins/json_serializer.rb +124 -64
- data/lib/sequel/plugins/lazy_attributes.rb +21 -14
- data/lib/sequel/plugins/list.rb +35 -21
- data/lib/sequel/plugins/many_through_many.rb +134 -21
- data/lib/sequel/plugins/modification_detection.rb +15 -5
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +6 -5
- data/lib/sequel/plugins/nested_attributes.rb +61 -31
- data/lib/sequel/plugins/optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/pg_array_associations.rb +103 -53
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +350 -0
- data/lib/sequel/plugins/pg_row.rb +5 -51
- data/lib/sequel/plugins/prepared_statements.rb +60 -72
- data/lib/sequel/plugins/prepared_statements_safe.rb +9 -4
- data/lib/sequel/plugins/rcte_tree.rb +68 -82
- data/lib/sequel/plugins/require_valid_schema.rb +67 -0
- data/lib/sequel/plugins/serialization.rb +43 -46
- data/lib/sequel/plugins/serialization_modification_detection.rb +3 -2
- data/lib/sequel/plugins/sharding.rb +15 -10
- data/lib/sequel/plugins/single_table_inheritance.rb +67 -28
- data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/split_values.rb +11 -6
- data/lib/sequel/plugins/sql_comments.rb +189 -0
- data/lib/sequel/plugins/static_cache.rb +77 -53
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +3 -3
- data/lib/sequel/plugins/subclasses.rb +43 -10
- data/lib/sequel/plugins/subset_conditions.rb +15 -5
- data/lib/sequel/plugins/table_select.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +96 -12
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/timestamps.rb +20 -8
- data/lib/sequel/plugins/touch.rb +19 -8
- data/lib/sequel/plugins/tree.rb +62 -32
- data/lib/sequel/plugins/typecast_on_load.rb +12 -4
- data/lib/sequel/plugins/unlimited_update.rb +1 -7
- data/lib/sequel/plugins/unused_associations.rb +521 -0
- data/lib/sequel/plugins/update_or_create.rb +4 -4
- data/lib/sequel/plugins/update_primary_key.rb +1 -1
- data/lib/sequel/plugins/update_refresh.rb +26 -15
- data/lib/sequel/plugins/uuid.rb +7 -11
- data/lib/sequel/plugins/validate_associated.rb +18 -0
- data/lib/sequel/plugins/validation_class_methods.rb +38 -19
- data/lib/sequel/plugins/validation_contexts.rb +49 -0
- data/lib/sequel/plugins/validation_helpers.rb +57 -41
- data/lib/sequel/plugins/whitelist_security.rb +122 -0
- data/lib/sequel/plugins/xml_serializer.rb +30 -31
- data/lib/sequel/sql.rb +471 -331
- data/lib/sequel/timezones.rb +78 -47
- data/lib/sequel/version.rb +7 -2
- data/lib/sequel.rb +1 -1
- metadata +217 -521
- data/Rakefile +0 -164
- data/doc/active_record.rdoc +0 -928
- data/doc/release_notes/1.0.txt +0 -38
- data/doc/release_notes/1.1.txt +0 -143
- data/doc/release_notes/1.3.txt +0 -101
- data/doc/release_notes/1.4.0.txt +0 -53
- data/doc/release_notes/1.5.0.txt +0 -155
- data/doc/release_notes/2.0.0.txt +0 -298
- data/doc/release_notes/2.1.0.txt +0 -271
- data/doc/release_notes/2.10.0.txt +0 -328
- data/doc/release_notes/2.11.0.txt +0 -215
- data/doc/release_notes/2.12.0.txt +0 -534
- data/doc/release_notes/2.2.0.txt +0 -253
- data/doc/release_notes/2.3.0.txt +0 -88
- data/doc/release_notes/2.4.0.txt +0 -106
- data/doc/release_notes/2.5.0.txt +0 -137
- data/doc/release_notes/2.6.0.txt +0 -157
- data/doc/release_notes/2.7.0.txt +0 -166
- data/doc/release_notes/2.8.0.txt +0 -171
- data/doc/release_notes/2.9.0.txt +0 -97
- data/doc/release_notes/3.0.0.txt +0 -221
- data/doc/release_notes/3.1.0.txt +0 -406
- data/doc/release_notes/3.10.0.txt +0 -286
- data/doc/release_notes/3.11.0.txt +0 -254
- data/doc/release_notes/3.12.0.txt +0 -304
- data/doc/release_notes/3.13.0.txt +0 -210
- data/doc/release_notes/3.14.0.txt +0 -118
- data/doc/release_notes/3.15.0.txt +0 -78
- data/doc/release_notes/3.16.0.txt +0 -45
- data/doc/release_notes/3.17.0.txt +0 -58
- data/doc/release_notes/3.18.0.txt +0 -120
- data/doc/release_notes/3.19.0.txt +0 -67
- data/doc/release_notes/3.2.0.txt +0 -268
- data/doc/release_notes/3.20.0.txt +0 -41
- data/doc/release_notes/3.21.0.txt +0 -87
- data/doc/release_notes/3.22.0.txt +0 -39
- data/doc/release_notes/3.23.0.txt +0 -172
- data/doc/release_notes/3.24.0.txt +0 -420
- data/doc/release_notes/3.25.0.txt +0 -88
- data/doc/release_notes/3.26.0.txt +0 -88
- data/doc/release_notes/3.27.0.txt +0 -82
- data/doc/release_notes/3.28.0.txt +0 -304
- data/doc/release_notes/3.29.0.txt +0 -459
- data/doc/release_notes/3.3.0.txt +0 -192
- data/doc/release_notes/3.30.0.txt +0 -135
- data/doc/release_notes/3.31.0.txt +0 -146
- data/doc/release_notes/3.32.0.txt +0 -202
- data/doc/release_notes/3.33.0.txt +0 -157
- data/doc/release_notes/3.34.0.txt +0 -671
- data/doc/release_notes/3.35.0.txt +0 -144
- data/doc/release_notes/3.36.0.txt +0 -245
- data/doc/release_notes/3.37.0.txt +0 -338
- data/doc/release_notes/3.38.0.txt +0 -234
- data/doc/release_notes/3.39.0.txt +0 -237
- data/doc/release_notes/3.4.0.txt +0 -325
- data/doc/release_notes/3.40.0.txt +0 -73
- data/doc/release_notes/3.41.0.txt +0 -155
- data/doc/release_notes/3.42.0.txt +0 -74
- data/doc/release_notes/3.43.0.txt +0 -105
- data/doc/release_notes/3.44.0.txt +0 -152
- data/doc/release_notes/3.45.0.txt +0 -179
- data/doc/release_notes/3.46.0.txt +0 -122
- data/doc/release_notes/3.47.0.txt +0 -270
- data/doc/release_notes/3.48.0.txt +0 -477
- data/doc/release_notes/3.5.0.txt +0 -510
- data/doc/release_notes/3.6.0.txt +0 -366
- data/doc/release_notes/3.7.0.txt +0 -179
- data/doc/release_notes/3.8.0.txt +0 -151
- data/doc/release_notes/3.9.0.txt +0 -233
- data/doc/release_notes/4.0.0.txt +0 -262
- data/doc/release_notes/4.1.0.txt +0 -85
- data/doc/release_notes/4.10.0.txt +0 -226
- data/doc/release_notes/4.11.0.txt +0 -147
- data/doc/release_notes/4.12.0.txt +0 -105
- data/doc/release_notes/4.13.0.txt +0 -169
- data/doc/release_notes/4.14.0.txt +0 -68
- data/doc/release_notes/4.15.0.txt +0 -56
- data/doc/release_notes/4.16.0.txt +0 -36
- data/doc/release_notes/4.17.0.txt +0 -38
- data/doc/release_notes/4.18.0.txt +0 -36
- data/doc/release_notes/4.19.0.txt +0 -45
- data/doc/release_notes/4.2.0.txt +0 -129
- data/doc/release_notes/4.20.0.txt +0 -79
- data/doc/release_notes/4.21.0.txt +0 -94
- data/doc/release_notes/4.22.0.txt +0 -72
- data/doc/release_notes/4.23.0.txt +0 -65
- data/doc/release_notes/4.24.0.txt +0 -99
- data/doc/release_notes/4.25.0.txt +0 -181
- data/doc/release_notes/4.26.0.txt +0 -44
- data/doc/release_notes/4.27.0.txt +0 -78
- data/doc/release_notes/4.28.0.txt +0 -57
- data/doc/release_notes/4.29.0.txt +0 -41
- data/doc/release_notes/4.3.0.txt +0 -40
- data/doc/release_notes/4.30.0.txt +0 -37
- data/doc/release_notes/4.31.0.txt +0 -57
- data/doc/release_notes/4.32.0.txt +0 -132
- data/doc/release_notes/4.33.0.txt +0 -88
- data/doc/release_notes/4.34.0.txt +0 -86
- data/doc/release_notes/4.35.0.txt +0 -130
- data/doc/release_notes/4.36.0.txt +0 -116
- data/doc/release_notes/4.4.0.txt +0 -92
- data/doc/release_notes/4.5.0.txt +0 -34
- data/doc/release_notes/4.6.0.txt +0 -30
- data/doc/release_notes/4.7.0.txt +0 -103
- data/doc/release_notes/4.8.0.txt +0 -175
- data/doc/release_notes/4.9.0.txt +0 -190
- data/lib/sequel/adapters/cubrid.rb +0 -144
- data/lib/sequel/adapters/do/mysql.rb +0 -66
- data/lib/sequel/adapters/do/postgres.rb +0 -44
- data/lib/sequel/adapters/do/sqlite3.rb +0 -42
- data/lib/sequel/adapters/do.rb +0 -158
- data/lib/sequel/adapters/jdbc/as400.rb +0 -84
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -64
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -36
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -33
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -33
- data/lib/sequel/adapters/odbc/progress.rb +0 -10
- data/lib/sequel/adapters/shared/cubrid.rb +0 -245
- data/lib/sequel/adapters/shared/firebird.rb +0 -247
- data/lib/sequel/adapters/shared/informix.rb +0 -54
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -152
- data/lib/sequel/adapters/shared/progress.rb +0 -40
- data/lib/sequel/adapters/swift/mysql.rb +0 -49
- data/lib/sequel/adapters/swift/postgres.rb +0 -47
- data/lib/sequel/adapters/swift/sqlite.rb +0 -49
- data/lib/sequel/adapters/swift.rb +0 -160
- data/lib/sequel/adapters/utils/pg_types.rb +0 -70
- data/lib/sequel/dataset/mutation.rb +0 -111
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -5
- data/lib/sequel/extensions/filter_having.rb +0 -63
- data/lib/sequel/extensions/hash_aliases.rb +0 -49
- data/lib/sequel/extensions/meta_def.rb +0 -35
- data/lib/sequel/extensions/query_literals.rb +0 -84
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -24
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -122
- data/lib/sequel/extensions/set_overrides.rb +0 -76
- data/lib/sequel/no_core_ext.rb +0 -3
- data/lib/sequel/plugins/association_autoreloading.rb +0 -9
- data/lib/sequel/plugins/identifier_columns.rb +0 -47
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -9
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -81
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -119
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -61
- data/lib/sequel/plugins/schema.rb +0 -82
- data/lib/sequel/plugins/scissors.rb +0 -35
- data/spec/adapter_spec.rb +0 -4
- data/spec/adapters/db2_spec.rb +0 -160
- data/spec/adapters/firebird_spec.rb +0 -411
- data/spec/adapters/informix_spec.rb +0 -100
- data/spec/adapters/mssql_spec.rb +0 -733
- data/spec/adapters/mysql_spec.rb +0 -1319
- data/spec/adapters/oracle_spec.rb +0 -313
- data/spec/adapters/postgres_spec.rb +0 -3790
- data/spec/adapters/spec_helper.rb +0 -49
- data/spec/adapters/sqlanywhere_spec.rb +0 -170
- data/spec/adapters/sqlite_spec.rb +0 -688
- data/spec/bin_spec.rb +0 -258
- data/spec/core/connection_pool_spec.rb +0 -1045
- data/spec/core/database_spec.rb +0 -2636
- data/spec/core/dataset_spec.rb +0 -5175
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1247
- data/spec/core/mock_adapter_spec.rb +0 -464
- data/spec/core/object_graph_spec.rb +0 -303
- data/spec/core/placeholder_literalizer_spec.rb +0 -163
- data/spec/core/schema_generator_spec.rb +0 -203
- data/spec/core/schema_spec.rb +0 -1676
- data/spec/core/spec_helper.rb +0 -34
- data/spec/core/version_spec.rb +0 -7
- data/spec/core_extensions_spec.rb +0 -699
- data/spec/core_model_spec.rb +0 -2
- data/spec/core_spec.rb +0 -1
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -85
- data/spec/extensions/after_initialize_spec.rb +0 -24
- data/spec/extensions/arbitrary_servers_spec.rb +0 -109
- data/spec/extensions/association_dependencies_spec.rb +0 -117
- data/spec/extensions/association_pks_spec.rb +0 -405
- data/spec/extensions/association_proxies_spec.rb +0 -86
- data/spec/extensions/auto_validations_spec.rb +0 -192
- data/spec/extensions/before_after_save_spec.rb +0 -40
- data/spec/extensions/blacklist_security_spec.rb +0 -88
- data/spec/extensions/blank_spec.rb +0 -69
- data/spec/extensions/boolean_readers_spec.rb +0 -93
- data/spec/extensions/boolean_subsets_spec.rb +0 -47
- data/spec/extensions/caching_spec.rb +0 -270
- data/spec/extensions/class_table_inheritance_spec.rb +0 -444
- data/spec/extensions/column_conflicts_spec.rb +0 -60
- data/spec/extensions/column_select_spec.rb +0 -108
- data/spec/extensions/columns_introspection_spec.rb +0 -91
- data/spec/extensions/composition_spec.rb +0 -242
- data/spec/extensions/connection_expiration_spec.rb +0 -121
- data/spec/extensions/connection_validator_spec.rb +0 -127
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -288
- data/spec/extensions/constraint_validations_spec.rb +0 -389
- data/spec/extensions/core_refinements_spec.rb +0 -519
- data/spec/extensions/csv_serializer_spec.rb +0 -180
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -343
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -167
- data/spec/extensions/defaults_setter_spec.rb +0 -102
- data/spec/extensions/delay_add_association_spec.rb +0 -74
- data/spec/extensions/dirty_spec.rb +0 -180
- data/spec/extensions/duplicate_columns_handler_spec.rb +0 -110
- data/spec/extensions/eager_each_spec.rb +0 -66
- data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
- data/spec/extensions/error_splitter_spec.rb +0 -18
- data/spec/extensions/error_sql_spec.rb +0 -20
- data/spec/extensions/eval_inspect_spec.rb +0 -73
- data/spec/extensions/filter_having_spec.rb +0 -40
- data/spec/extensions/force_encoding_spec.rb +0 -114
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/graph_each_spec.rb +0 -119
- data/spec/extensions/hash_aliases_spec.rb +0 -24
- data/spec/extensions/hook_class_methods_spec.rb +0 -429
- data/spec/extensions/identifier_columns_spec.rb +0 -17
- data/spec/extensions/inflector_spec.rb +0 -183
- data/spec/extensions/input_transformer_spec.rb +0 -54
- data/spec/extensions/insert_returning_select_spec.rb +0 -46
- data/spec/extensions/instance_filters_spec.rb +0 -79
- data/spec/extensions/instance_hooks_spec.rb +0 -276
- data/spec/extensions/inverted_subsets_spec.rb +0 -33
- data/spec/extensions/json_serializer_spec.rb +0 -304
- data/spec/extensions/lazy_attributes_spec.rb +0 -170
- data/spec/extensions/list_spec.rb +0 -278
- data/spec/extensions/looser_typecasting_spec.rb +0 -43
- data/spec/extensions/many_through_many_spec.rb +0 -2172
- data/spec/extensions/meta_def_spec.rb +0 -21
- data/spec/extensions/migration_spec.rb +0 -728
- data/spec/extensions/modification_detection_spec.rb +0 -80
- data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
- data/spec/extensions/named_timezones_spec.rb +0 -108
- data/spec/extensions/nested_attributes_spec.rb +0 -697
- data/spec/extensions/no_auto_literal_strings_spec.rb +0 -65
- data/spec/extensions/null_dataset_spec.rb +0 -85
- data/spec/extensions/optimistic_locking_spec.rb +0 -128
- data/spec/extensions/pagination_spec.rb +0 -118
- data/spec/extensions/pg_array_associations_spec.rb +0 -736
- data/spec/extensions/pg_array_ops_spec.rb +0 -143
- data/spec/extensions/pg_array_spec.rb +0 -390
- data/spec/extensions/pg_enum_spec.rb +0 -92
- data/spec/extensions/pg_hstore_ops_spec.rb +0 -236
- data/spec/extensions/pg_hstore_spec.rb +0 -206
- data/spec/extensions/pg_inet_ops_spec.rb +0 -101
- data/spec/extensions/pg_inet_spec.rb +0 -52
- data/spec/extensions/pg_interval_spec.rb +0 -76
- data/spec/extensions/pg_json_ops_spec.rb +0 -275
- data/spec/extensions/pg_json_spec.rb +0 -218
- data/spec/extensions/pg_loose_count_spec.rb +0 -17
- data/spec/extensions/pg_range_ops_spec.rb +0 -58
- data/spec/extensions/pg_range_spec.rb +0 -473
- data/spec/extensions/pg_row_ops_spec.rb +0 -60
- data/spec/extensions/pg_row_plugin_spec.rb +0 -62
- data/spec/extensions/pg_row_spec.rb +0 -360
- data/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -159
- data/spec/extensions/prepared_statements_safe_spec.rb +0 -61
- data/spec/extensions/prepared_statements_spec.rb +0 -103
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
- data/spec/extensions/pretty_table_spec.rb +0 -92
- data/spec/extensions/query_literals_spec.rb +0 -183
- data/spec/extensions/query_spec.rb +0 -102
- data/spec/extensions/rcte_tree_spec.rb +0 -392
- data/spec/extensions/round_timestamps_spec.rb +0 -43
- data/spec/extensions/schema_caching_spec.rb +0 -41
- data/spec/extensions/schema_dumper_spec.rb +0 -814
- data/spec/extensions/schema_spec.rb +0 -117
- data/spec/extensions/scissors_spec.rb +0 -26
- data/spec/extensions/select_remove_spec.rb +0 -38
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
- data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
- data/spec/extensions/serialization_spec.rb +0 -362
- data/spec/extensions/server_block_spec.rb +0 -90
- data/spec/extensions/server_logging_spec.rb +0 -45
- data/spec/extensions/set_overrides_spec.rb +0 -61
- data/spec/extensions/sharding_spec.rb +0 -198
- data/spec/extensions/shared_caching_spec.rb +0 -175
- data/spec/extensions/single_table_inheritance_spec.rb +0 -297
- data/spec/extensions/singular_table_names_spec.rb +0 -22
- data/spec/extensions/skip_create_refresh_spec.rb +0 -17
- data/spec/extensions/spec_helper.rb +0 -71
- data/spec/extensions/split_array_nil_spec.rb +0 -24
- data/spec/extensions/split_values_spec.rb +0 -22
- data/spec/extensions/sql_comments_spec.rb +0 -27
- data/spec/extensions/sql_expr_spec.rb +0 -60
- data/spec/extensions/static_cache_spec.rb +0 -361
- data/spec/extensions/string_agg_spec.rb +0 -85
- data/spec/extensions/string_date_time_spec.rb +0 -95
- data/spec/extensions/string_stripper_spec.rb +0 -68
- data/spec/extensions/subclasses_spec.rb +0 -66
- data/spec/extensions/subset_conditions_spec.rb +0 -38
- data/spec/extensions/table_select_spec.rb +0 -71
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -136
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- data/spec/extensions/timestamps_spec.rb +0 -175
- data/spec/extensions/to_dot_spec.rb +0 -154
- data/spec/extensions/touch_spec.rb +0 -203
- data/spec/extensions/tree_spec.rb +0 -274
- data/spec/extensions/typecast_on_load_spec.rb +0 -80
- data/spec/extensions/unlimited_update_spec.rb +0 -20
- data/spec/extensions/update_or_create_spec.rb +0 -87
- data/spec/extensions/update_primary_key_spec.rb +0 -100
- data/spec/extensions/update_refresh_spec.rb +0 -53
- data/spec/extensions/uuid_spec.rb +0 -106
- data/spec/extensions/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1027
- data/spec/extensions/validation_helpers_spec.rb +0 -554
- data/spec/extensions/xml_serializer_spec.rb +0 -207
- data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
- data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
- data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
- data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
- data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/double_migration/001_create_sessions.rb +0 -9
- data/spec/files/double_migration/002_create_nodes.rb +0 -19
- data/spec/files/double_migration/003_3_create_users.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
- data/spec/files/empty_migration/001_create_sessions.rb +0 -9
- data/spec/files/empty_migration/002_create_nodes.rb +0 -0
- data/spec/files/empty_migration/003_3_create_users.rb +0 -4
- data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
- data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
- data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
- data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
- data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/reversible_migrations/001_reversible.rb +0 -5
- data/spec/files/reversible_migrations/002_reversible.rb +0 -5
- data/spec/files/reversible_migrations/003_reversible.rb +0 -5
- data/spec/files/reversible_migrations/004_reversible.rb +0 -5
- data/spec/files/reversible_migrations/005_reversible.rb +0 -10
- data/spec/files/reversible_migrations/006_reversible.rb +0 -10
- data/spec/files/reversible_migrations/007_reversible.rb +0 -10
- data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
- data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
- data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
- data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
- data/spec/guards_helper.rb +0 -55
- data/spec/integration/associations_test.rb +0 -2506
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1858
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -262
- data/spec/integration/model_test.rb +0 -230
- data/spec/integration/plugin_test.rb +0 -2297
- data/spec/integration/prepared_statement_test.rb +0 -467
- data/spec/integration/schema_test.rb +0 -815
- data/spec/integration/spec_helper.rb +0 -56
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -406
- data/spec/integration/type_test.rb +0 -133
- data/spec/model/association_reflection_spec.rb +0 -565
- data/spec/model/associations_spec.rb +0 -4589
- data/spec/model/base_spec.rb +0 -759
- data/spec/model/class_dataset_methods_spec.rb +0 -150
- data/spec/model/dataset_methods_spec.rb +0 -149
- data/spec/model/eager_loading_spec.rb +0 -2197
- data/spec/model/hooks_spec.rb +0 -604
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -1097
- data/spec/model/plugins_spec.rb +0 -299
- data/spec/model/record_spec.rb +0 -2162
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -193
- data/spec/model_no_assoc_spec.rb +0 -1
- data/spec/model_spec.rb +0 -1
- data/spec/plugin_spec.rb +0 -1
- data/spec/sequel_coverage.rb +0 -15
- data/spec/spec_config.rb +0 -10
@@ -1,728 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper')
|
2
|
-
|
3
|
-
Sequel.extension :migration
|
4
|
-
|
5
|
-
describe "Migration.descendants" do
|
6
|
-
before do
|
7
|
-
Sequel::Migration.descendants.clear
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should include Migration subclasses" do
|
11
|
-
@class = Class.new(Sequel::Migration)
|
12
|
-
|
13
|
-
Sequel::Migration.descendants.must_equal [@class]
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should include Migration subclasses in order of creation" do
|
17
|
-
@c1 = Class.new(Sequel::Migration)
|
18
|
-
@c2 = Class.new(Sequel::Migration)
|
19
|
-
@c3 = Class.new(Sequel::Migration)
|
20
|
-
|
21
|
-
Sequel::Migration.descendants.must_equal [@c1, @c2, @c3]
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should include SimpleMigration instances created by migration DSL" do
|
25
|
-
i1 = Sequel.migration{}
|
26
|
-
i2 = Sequel.migration{}
|
27
|
-
i3 = Sequel.migration{}
|
28
|
-
|
29
|
-
Sequel::Migration.descendants.must_equal [i1, i2, i3]
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "Migration.apply" do
|
34
|
-
before do
|
35
|
-
@c = Class.new do
|
36
|
-
define_method(:one) {|x| [1111, x]}
|
37
|
-
define_method(:two) {|x| [2222, x]}
|
38
|
-
end
|
39
|
-
@db = @c.new
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should raise for an invalid direction" do
|
43
|
-
proc {Sequel::Migration.apply(@db, :hahaha)}.must_raise(ArgumentError)
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should apply the up and down directions correctly" do
|
47
|
-
m = Class.new(Sequel::Migration) do
|
48
|
-
define_method(:up) {one(3333)}
|
49
|
-
define_method(:down) {two(4444)}
|
50
|
-
end
|
51
|
-
m.apply(@db, :up).must_equal [1111, 3333]
|
52
|
-
m.apply(@db, :down).must_equal [2222, 4444]
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should have default up and down actions that do nothing" do
|
56
|
-
m = Class.new(Sequel::Migration)
|
57
|
-
m.apply(@db, :up).must_equal nil
|
58
|
-
m.apply(@db, :down).must_equal nil
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should respond to the methods the database responds to" do
|
62
|
-
m = Sequel::Migration.new(Sequel.mock)
|
63
|
-
m.respond_to?(:foo).must_equal false
|
64
|
-
m.respond_to?(:execute).must_equal true
|
65
|
-
end if RUBY_VERSION >= '1.9'
|
66
|
-
end
|
67
|
-
|
68
|
-
describe "SimpleMigration#apply" do
|
69
|
-
before do
|
70
|
-
@c = Class.new do
|
71
|
-
define_method(:one) {|x| [1111, x]}
|
72
|
-
define_method(:two) {|x| [2222, x]}
|
73
|
-
end
|
74
|
-
@db = @c.new
|
75
|
-
end
|
76
|
-
|
77
|
-
it "should raise for an invalid direction" do
|
78
|
-
proc {Sequel.migration{}.apply(@db, :hahaha)}.must_raise(ArgumentError)
|
79
|
-
end
|
80
|
-
|
81
|
-
it "should apply the up and down directions correctly" do
|
82
|
-
m = Sequel.migration do
|
83
|
-
up{one(3333)}
|
84
|
-
down{two(4444)}
|
85
|
-
end
|
86
|
-
m.apply(@db, :up).must_equal [1111, 3333]
|
87
|
-
m.apply(@db, :down).must_equal [2222, 4444]
|
88
|
-
end
|
89
|
-
|
90
|
-
it "should have default up and down actions that do nothing" do
|
91
|
-
m = Sequel.migration{}
|
92
|
-
m.apply(@db, :up).must_equal nil
|
93
|
-
m.apply(@db, :down).must_equal nil
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
describe "Reversible Migrations with Sequel.migration{change{}}" do
|
98
|
-
before do
|
99
|
-
@c = Class.new do
|
100
|
-
self::AT = Class.new do
|
101
|
-
attr_reader :actions
|
102
|
-
def initialize(&block)
|
103
|
-
@actions = []
|
104
|
-
instance_eval(&block)
|
105
|
-
end
|
106
|
-
def method_missing(*args)
|
107
|
-
@actions << args
|
108
|
-
end
|
109
|
-
self
|
110
|
-
end
|
111
|
-
attr_reader :actions
|
112
|
-
def initialize
|
113
|
-
@actions = []
|
114
|
-
end
|
115
|
-
def method_missing(*args)
|
116
|
-
@actions << args
|
117
|
-
end
|
118
|
-
def alter_table(*args, &block)
|
119
|
-
@actions << [:alter_table, self.class::AT.new(&block).actions]
|
120
|
-
end
|
121
|
-
end
|
122
|
-
@db = @c.new
|
123
|
-
@p = Proc.new do
|
124
|
-
create_table(:a, :foo=>:bar){Integer :a}
|
125
|
-
add_column :a, :b, String
|
126
|
-
add_index :a, :b
|
127
|
-
rename_column :a, :b, :c
|
128
|
-
rename_table :a, :b
|
129
|
-
alter_table(:b) do
|
130
|
-
add_column :d, String
|
131
|
-
add_constraint :blah, 'd IS NOT NULL'
|
132
|
-
add_foreign_key :e, :b
|
133
|
-
add_foreign_key [:e], :b, :name=>'e_fk'
|
134
|
-
add_foreign_key [:e, :a], :b
|
135
|
-
add_primary_key :f, :b
|
136
|
-
add_index :e, :name=>'e_n'
|
137
|
-
add_full_text_index :e, :name=>'e_ft'
|
138
|
-
add_spatial_index :e, :name=>'e_s'
|
139
|
-
rename_column :e, :g
|
140
|
-
end
|
141
|
-
create_view(:c, 'SELECT * FROM b', :foo=>:bar)
|
142
|
-
create_join_table(:cat_id=>:cats, :dog_id=>:dogs)
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
it "should apply up with normal actions in normal order" do
|
147
|
-
p = @p
|
148
|
-
Sequel.migration{change(&p)}.apply(@db, :up)
|
149
|
-
@db.actions.must_equal [[:create_table, :a, {:foo=>:bar}],
|
150
|
-
[:add_column, :a, :b, String],
|
151
|
-
[:add_index, :a, :b],
|
152
|
-
[:rename_column, :a, :b, :c],
|
153
|
-
[:rename_table, :a, :b],
|
154
|
-
[:alter_table, [
|
155
|
-
[:add_column, :d, String],
|
156
|
-
[:add_constraint, :blah, "d IS NOT NULL"],
|
157
|
-
[:add_foreign_key, :e, :b],
|
158
|
-
[:add_foreign_key, [:e], :b, {:name=>"e_fk"}],
|
159
|
-
[:add_foreign_key, [:e, :a], :b],
|
160
|
-
[:add_primary_key, :f, :b],
|
161
|
-
[:add_index, :e, {:name=>"e_n"}],
|
162
|
-
[:add_full_text_index, :e, {:name=>"e_ft"}],
|
163
|
-
[:add_spatial_index, :e, {:name=>"e_s"}],
|
164
|
-
[:rename_column, :e, :g]]
|
165
|
-
],
|
166
|
-
[:create_view, :c, "SELECT * FROM b", {:foo=>:bar}],
|
167
|
-
[:create_join_table, {:cat_id=>:cats, :dog_id=>:dogs}]]
|
168
|
-
end
|
169
|
-
|
170
|
-
it "should execute down with reversing actions in reverse order" do
|
171
|
-
p = @p
|
172
|
-
Sequel.migration{change(&p)}.apply(@db, :down)
|
173
|
-
@db.actions.must_equal [
|
174
|
-
[:drop_join_table, {:cat_id=>:cats, :dog_id=>:dogs}],
|
175
|
-
[:drop_view, :c, {:foo=>:bar}],
|
176
|
-
[:alter_table, [
|
177
|
-
[:rename_column, :g, :e],
|
178
|
-
[:drop_index, :e, {:name=>"e_s"}],
|
179
|
-
[:drop_index, :e, {:name=>"e_ft"}],
|
180
|
-
[:drop_index, :e, {:name=>"e_n"}],
|
181
|
-
[:drop_column, :f],
|
182
|
-
[:drop_foreign_key, [:e, :a]],
|
183
|
-
[:drop_foreign_key, [:e], {:name=>"e_fk"}],
|
184
|
-
[:drop_foreign_key, :e],
|
185
|
-
[:drop_constraint, :blah],
|
186
|
-
[:drop_column, :d]]
|
187
|
-
],
|
188
|
-
[:rename_table, :b, :a],
|
189
|
-
[:rename_column, :a, :c, :b],
|
190
|
-
[:drop_index, :a, :b],
|
191
|
-
[:drop_column, :a, :b],
|
192
|
-
[:drop_table, :a, {:foo=>:bar}]]
|
193
|
-
end
|
194
|
-
|
195
|
-
it "should raise in the down direction if migration uses unsupported method" do
|
196
|
-
m = Sequel.migration{change{run 'SQL'}}
|
197
|
-
m.apply(@db, :up)
|
198
|
-
proc{m.apply(@db, :down)}.must_raise(Sequel::Error)
|
199
|
-
end
|
200
|
-
|
201
|
-
it "should raise in the down direction if migration uses add_primary_key with an array" do
|
202
|
-
m = Sequel.migration{change{alter_table(:a){add_primary_key [:b]}}}
|
203
|
-
m.apply(@db, :up)
|
204
|
-
proc{m.apply(@db, :down)}.must_raise(Sequel::Error)
|
205
|
-
end
|
206
|
-
|
207
|
-
it "should raise in the down direction if migration uses add_foreign_key with an array" do
|
208
|
-
m = Sequel.migration{change{alter_table(:a){add_foreign_key [:b]}}}
|
209
|
-
m.apply(@db, :up)
|
210
|
-
proc{m.apply(@db, :down)}.must_raise(Sequel::Error)
|
211
|
-
end
|
212
|
-
end
|
213
|
-
|
214
|
-
describe "Sequel::Migrator.migrator_class" do
|
215
|
-
it "should return IntegerMigrator if not using timestamp migrations" do
|
216
|
-
Sequel::Migrator.migrator_class("spec/files/integer_migrations").must_equal Sequel::IntegerMigrator
|
217
|
-
end
|
218
|
-
|
219
|
-
it "should return TimestampMigrator if using timestamp migrations" do
|
220
|
-
Sequel::Migrator.migrator_class('spec/files/timestamped_migrations').must_equal Sequel::TimestampMigrator
|
221
|
-
end
|
222
|
-
|
223
|
-
it "should return self if run on a subclass" do
|
224
|
-
Sequel::IntegerMigrator.migrator_class("spec/files/timestamped_migrations").must_equal Sequel::IntegerMigrator
|
225
|
-
Sequel::TimestampMigrator.migrator_class("spec/files/integer_migrations").must_equal Sequel::TimestampMigrator
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
describe "Sequel::IntegerMigrator" do
|
230
|
-
before do
|
231
|
-
dbc = Class.new(Sequel::Mock::Database) do
|
232
|
-
attr_reader :drops, :tables_created, :columns_created, :versions
|
233
|
-
def initialize(*args)
|
234
|
-
super
|
235
|
-
@drops = []
|
236
|
-
@tables_created = []
|
237
|
-
@columns_created = []
|
238
|
-
@versions = Hash.new{|h,k| h[k.to_sym]}
|
239
|
-
end
|
240
|
-
|
241
|
-
def version; versions.values.first || 0; end
|
242
|
-
def creates; @tables_created.map{|x| y = x.to_s; y !~ /\Asm(\d+)/; $1.to_i if $1}.compact; end
|
243
|
-
def drop_table(*a); super; @drops.concat(a.map{|x| y = x.to_s; y !~ /\Asm(\d+)/; $1.to_i if $1}.compact); end
|
244
|
-
|
245
|
-
def create_table(name, opts={}, &block)
|
246
|
-
super
|
247
|
-
@columns_created << / \(?(\w+) integer.*\)?\z/.match(@sqls.last)[1].to_sym
|
248
|
-
@tables_created << name.to_sym
|
249
|
-
end
|
250
|
-
|
251
|
-
def dataset
|
252
|
-
ds = super
|
253
|
-
ds.extend(Module.new do
|
254
|
-
def count; 1; end
|
255
|
-
def columns; db.columns_created end
|
256
|
-
def insert(h); db.versions.merge!(h); db.run insert_sql(h) end
|
257
|
-
def update(h); db.versions.merge!(h); db.run update_sql(h) end
|
258
|
-
def fetch_rows(sql); db.execute(sql); yield(db.versions) unless db.versions.empty? end
|
259
|
-
end)
|
260
|
-
ds
|
261
|
-
end
|
262
|
-
|
263
|
-
def table_exists?(name)
|
264
|
-
@tables_created.include?(name.to_sym)
|
265
|
-
end
|
266
|
-
end
|
267
|
-
@db = dbc.new
|
268
|
-
|
269
|
-
@dirname = "spec/files/integer_migrations"
|
270
|
-
end
|
271
|
-
|
272
|
-
after do
|
273
|
-
Object.send(:remove_const, "CreateSessions") if Object.const_defined?("CreateSessions")
|
274
|
-
end
|
275
|
-
|
276
|
-
it "should raise and error if there is a missing integer migration version" do
|
277
|
-
proc{Sequel::Migrator.apply(@db, "spec/files/missing_integer_migrations")}.must_raise(Sequel::Migrator::Error)
|
278
|
-
end
|
279
|
-
|
280
|
-
it "should not raise and error if there is a missing integer migration version and allow_missing_migration_files is true" do
|
281
|
-
Sequel::Migrator.run(@db, "spec/files/missing_integer_migrations", :allow_missing_migration_files => true)
|
282
|
-
@db.sqls.last.must_equal "UPDATE schema_info SET version = 3"
|
283
|
-
Sequel::Migrator.run(@db, "spec/files/missing_integer_migrations", :allow_missing_migration_files => true, :target=>0)
|
284
|
-
@db.sqls.last.must_equal "UPDATE schema_info SET version = 0"
|
285
|
-
end
|
286
|
-
|
287
|
-
it "should raise and error if there is a duplicate integer migration version" do
|
288
|
-
proc{Sequel::Migrator.apply(@db, "spec/files/duplicate_integer_migrations")}.must_raise(Sequel::Migrator::Error)
|
289
|
-
end
|
290
|
-
|
291
|
-
it "should raise an error if there is an empty migration file" do
|
292
|
-
proc{Sequel::Migrator.apply(@db, "spec/files/empty_migration")}.must_raise(Sequel::Migrator::Error)
|
293
|
-
end
|
294
|
-
|
295
|
-
it "should raise an error if there is a migration file with multiple migrations" do
|
296
|
-
proc{Sequel::Migrator.apply(@db, "spec/files/double_migration")}.must_raise(Sequel::Migrator::Error)
|
297
|
-
end
|
298
|
-
|
299
|
-
it "should add a column name if it doesn't already exist in the schema_info table" do
|
300
|
-
@db.create_table(:schema_info){Integer :v}
|
301
|
-
def @db.alter_table(*); end
|
302
|
-
Sequel::Migrator.apply(@db, @dirname)
|
303
|
-
end
|
304
|
-
|
305
|
-
it "should automatically create the schema_info table with the version column" do
|
306
|
-
@db.table_exists?(:schema_info).must_equal false
|
307
|
-
Sequel::Migrator.run(@db, @dirname, :target=>0)
|
308
|
-
@db.table_exists?(:schema_info).must_equal true
|
309
|
-
@db.dataset.columns.must_equal [:version]
|
310
|
-
end
|
311
|
-
|
312
|
-
it "should allow specifying the table and columns" do
|
313
|
-
@db.table_exists?(:si).must_equal false
|
314
|
-
Sequel::Migrator.run(@db, @dirname, :target=>0, :table=>:si, :column=>:sic)
|
315
|
-
@db.table_exists?(:si).must_equal true
|
316
|
-
@db.dataset.columns.must_equal [:sic]
|
317
|
-
end
|
318
|
-
|
319
|
-
it "should apply migrations correctly in the up direction if no target is given" do
|
320
|
-
Sequel::Migrator.apply(@db, @dirname)
|
321
|
-
@db.creates.must_equal [1111, 2222, 3333]
|
322
|
-
@db.version.must_equal 3
|
323
|
-
@db.sqls.map{|x| x =~ /\AUPDATE.*(\d+)/ ? $1.to_i : nil}.compact.must_equal [1, 2, 3]
|
324
|
-
end
|
325
|
-
|
326
|
-
it "should be able to tell whether there are outstanding migrations" do
|
327
|
-
Sequel::Migrator.is_current?(@db, @dirname).must_equal false
|
328
|
-
Sequel::Migrator.apply(@db, @dirname)
|
329
|
-
Sequel::Migrator.is_current?(@db, @dirname).must_equal true
|
330
|
-
end
|
331
|
-
|
332
|
-
it "should have #check_current raise an exception if the migrator is not current" do
|
333
|
-
proc{Sequel::Migrator.check_current(@db, @dirname)}.must_raise(Sequel::Migrator::NotCurrentError)
|
334
|
-
Sequel::Migrator.apply(@db, @dirname)
|
335
|
-
Sequel::Migrator.check_current(@db, @dirname)
|
336
|
-
end
|
337
|
-
|
338
|
-
it "should apply migrations correctly in the up direction with target" do
|
339
|
-
Sequel::Migrator.apply(@db, @dirname, 2)
|
340
|
-
@db.creates.must_equal [1111, 2222]
|
341
|
-
@db.version.must_equal 2
|
342
|
-
@db.sqls.map{|x| x =~ /\AUPDATE.*(\d+)/ ? $1.to_i : nil}.compact.must_equal [1, 2]
|
343
|
-
end
|
344
|
-
|
345
|
-
it "should apply migrations correctly in the up direction with target and existing" do
|
346
|
-
Sequel::Migrator.apply(@db, @dirname, 2, 1)
|
347
|
-
@db.creates.must_equal [2222]
|
348
|
-
@db.version.must_equal 2
|
349
|
-
@db.sqls.map{|x| x =~ /\AUPDATE.*(\d+)/ ? $1.to_i : nil}.compact.must_equal [2]
|
350
|
-
end
|
351
|
-
|
352
|
-
it "should apply migrations correctly in the down direction with target" do
|
353
|
-
@db.create_table(:schema_info){Integer :version, :default=>0}
|
354
|
-
@db[:schema_info].insert(:version=>3)
|
355
|
-
@db.version.must_equal 3
|
356
|
-
Sequel::Migrator.apply(@db, @dirname, 0)
|
357
|
-
@db.drops.must_equal [3333, 2222, 1111]
|
358
|
-
@db.version.must_equal 0
|
359
|
-
@db.sqls.map{|x| x =~ /\AUPDATE.*(\d+)/ ? $1.to_i : nil}.compact.must_equal [2, 1, 0]
|
360
|
-
end
|
361
|
-
|
362
|
-
it "should apply migrations correctly in the down direction with target and existing" do
|
363
|
-
Sequel::Migrator.apply(@db, @dirname, 1, 2)
|
364
|
-
@db.drops.must_equal [2222]
|
365
|
-
@db.version.must_equal 1
|
366
|
-
@db.sqls.map{|x| x =~ /\AUPDATE.*(\d+)/ ? $1.to_i : nil}.compact.must_equal [1]
|
367
|
-
end
|
368
|
-
|
369
|
-
it "should return the target version" do
|
370
|
-
Sequel::Migrator.apply(@db, @dirname, 3, 2).must_equal 3
|
371
|
-
Sequel::Migrator.apply(@db, @dirname, 0).must_equal 0
|
372
|
-
Sequel::Migrator.apply(@db, @dirname).must_equal 3
|
373
|
-
end
|
374
|
-
|
375
|
-
it "should use IntegerMigrator if IntegerMigrator.apply called, even for timestamped migration directory" do
|
376
|
-
proc{Sequel::IntegerMigrator.apply(@db, "spec/files/timestamped_migrations")}.must_raise(Sequel::Migrator::Error)
|
377
|
-
end
|
378
|
-
|
379
|
-
it "should not use transactions by default" do
|
380
|
-
Sequel::Migrator.apply(@db, "spec/files/transaction_unspecified_migrations")
|
381
|
-
@db.sqls.must_equal ["CREATE TABLE schema_info (version integer DEFAULT 0 NOT NULL)", "SELECT 1 AS one FROM schema_info LIMIT 1", "INSERT INTO schema_info (version) VALUES (0)", "SELECT version FROM schema_info LIMIT 1", "CREATE TABLE sm11111 (smc1 integer)", "UPDATE schema_info SET version = 1", "CREATE TABLE sm (smc1 integer)", "UPDATE schema_info SET version = 2"]
|
382
|
-
end
|
383
|
-
|
384
|
-
it "should use transactions by default if the database supports transactional ddl" do
|
385
|
-
@db.meta_def(:supports_transactional_ddl?){true}
|
386
|
-
Sequel::Migrator.apply(@db, "spec/files/transaction_unspecified_migrations")
|
387
|
-
@db.sqls.must_equal ["CREATE TABLE schema_info (version integer DEFAULT 0 NOT NULL)", "SELECT 1 AS one FROM schema_info LIMIT 1", "INSERT INTO schema_info (version) VALUES (0)", "SELECT version FROM schema_info LIMIT 1", "BEGIN", "CREATE TABLE sm11111 (smc1 integer)", "UPDATE schema_info SET version = 1", "COMMIT", "BEGIN", "CREATE TABLE sm (smc1 integer)", "UPDATE schema_info SET version = 2", "COMMIT"]
|
388
|
-
end
|
389
|
-
|
390
|
-
it "should respect transaction use on a per migration basis" do
|
391
|
-
@db.meta_def(:supports_transactional_ddl?){true}
|
392
|
-
Sequel::Migrator.apply(@db, "spec/files/transaction_specified_migrations")
|
393
|
-
@db.sqls.must_equal ["CREATE TABLE schema_info (version integer DEFAULT 0 NOT NULL)", "SELECT 1 AS one FROM schema_info LIMIT 1", "INSERT INTO schema_info (version) VALUES (0)", "SELECT version FROM schema_info LIMIT 1", "BEGIN", "CREATE TABLE sm11111 (smc1 integer)", "UPDATE schema_info SET version = 1", "COMMIT", "CREATE TABLE sm (smc1 integer)", "UPDATE schema_info SET version = 2"]
|
394
|
-
end
|
395
|
-
|
396
|
-
it "should force transactions if enabled in the migrator" do
|
397
|
-
Sequel::Migrator.run(@db, "spec/files/transaction_specified_migrations", :use_transactions=>true)
|
398
|
-
@db.sqls.must_equal ["CREATE TABLE schema_info (version integer DEFAULT 0 NOT NULL)", "SELECT 1 AS one FROM schema_info LIMIT 1", "INSERT INTO schema_info (version) VALUES (0)", "SELECT version FROM schema_info LIMIT 1", "BEGIN", "CREATE TABLE sm11111 (smc1 integer)", "UPDATE schema_info SET version = 1", "COMMIT", "BEGIN", "CREATE TABLE sm (smc1 integer)", "UPDATE schema_info SET version = 2", "COMMIT"]
|
399
|
-
end
|
400
|
-
|
401
|
-
it "should not use transactions if disabled in the migrator" do
|
402
|
-
Sequel::Migrator.run(@db, "spec/files/transaction_unspecified_migrations", :use_transactions=>false)
|
403
|
-
@db.sqls.must_equal ["CREATE TABLE schema_info (version integer DEFAULT 0 NOT NULL)", "SELECT 1 AS one FROM schema_info LIMIT 1", "INSERT INTO schema_info (version) VALUES (0)", "SELECT version FROM schema_info LIMIT 1", "CREATE TABLE sm11111 (smc1 integer)", "UPDATE schema_info SET version = 1", "CREATE TABLE sm (smc1 integer)", "UPDATE schema_info SET version = 2"]
|
404
|
-
end
|
405
|
-
end
|
406
|
-
|
407
|
-
describe "Sequel::TimestampMigrator" do
|
408
|
-
before do
|
409
|
-
sequel_migration_version = 0
|
410
|
-
@dsc = dsc = Class.new(Sequel::Mock::Dataset) do
|
411
|
-
self::FILES =[]
|
412
|
-
define_method(:sequel_migration_version){sequel_migration_version}
|
413
|
-
define_method(:sequel_migration_version=){|v| sequel_migration_version = v}
|
414
|
-
|
415
|
-
def columns
|
416
|
-
super
|
417
|
-
case opts[:from].first
|
418
|
-
when :schema_info, 'schema_info'
|
419
|
-
[:version]
|
420
|
-
when :schema_migrations, 'schema_migrations'
|
421
|
-
[:filename]
|
422
|
-
when :sm, 'sm'
|
423
|
-
[:fn]
|
424
|
-
end
|
425
|
-
end
|
426
|
-
|
427
|
-
def fetch_rows(sql)
|
428
|
-
super
|
429
|
-
case opts[:from].first
|
430
|
-
when :schema_info, 'schema_info'
|
431
|
-
yield({:version=>sequel_migration_version})
|
432
|
-
when :schema_migrations, 'schema_migrations'
|
433
|
-
self.class::FILES.sort.each{|f| yield(:filename=>f)}
|
434
|
-
when :sm, 'sm'
|
435
|
-
self.class::FILES.sort.each{|f| yield(:fn=>f)}
|
436
|
-
end
|
437
|
-
end
|
438
|
-
|
439
|
-
def insert(h={})
|
440
|
-
super
|
441
|
-
case opts[:from].first
|
442
|
-
when :schema_info, 'schema_info'
|
443
|
-
self.sequel_migration_version = h.values.first
|
444
|
-
when :schema_migrations, :sm, 'schema_migrations', 'sm'
|
445
|
-
self.class::FILES << h.values.first
|
446
|
-
end
|
447
|
-
end
|
448
|
-
|
449
|
-
def update(h={})
|
450
|
-
super
|
451
|
-
case opts[:from].first
|
452
|
-
when :schema_info, 'schema_info'
|
453
|
-
self.sequel_migration_version = h.values.first
|
454
|
-
end
|
455
|
-
end
|
456
|
-
|
457
|
-
def delete
|
458
|
-
super
|
459
|
-
case opts[:from].first
|
460
|
-
when :schema_migrations, :sm, 'schema_migrations', 'sm'
|
461
|
-
self.class::FILES.delete(opts[:where].args.last)
|
462
|
-
end
|
463
|
-
end
|
464
|
-
end
|
465
|
-
dbc = Class.new(Sequel::Mock::Database) do
|
466
|
-
self::Tables = tables= {}
|
467
|
-
define_method(:dataset){|*a| dsc.new(self, *a)}
|
468
|
-
def create_table(name, *args, &block)
|
469
|
-
super
|
470
|
-
self.class::Tables[name.to_sym] = true
|
471
|
-
end
|
472
|
-
define_method(:drop_table){|*names| super(*names); names.each{|n| tables.delete(n.to_sym)}}
|
473
|
-
define_method(:table_exists?){|name| super(name); tables.has_key?(name.to_sym)}
|
474
|
-
end
|
475
|
-
@db = dbc.new
|
476
|
-
@m = Sequel::Migrator
|
477
|
-
end
|
478
|
-
|
479
|
-
after do
|
480
|
-
Object.send(:remove_const, "CreateSessions") if Object.const_defined?("CreateSessions")
|
481
|
-
Object.send(:remove_const, "CreateArtists") if Object.const_defined?("CreateArtists")
|
482
|
-
Object.send(:remove_const, "CreateAlbums") if Object.const_defined?("CreateAlbums")
|
483
|
-
end
|
484
|
-
|
485
|
-
it "should raise an error if there is an empty migration file" do
|
486
|
-
proc{Sequel::TimestampMigrator.apply(@db, "spec/files/empty_migration")}.must_raise(Sequel::Migrator::Error)
|
487
|
-
end
|
488
|
-
|
489
|
-
it "should raise an error if there is a migration file with multiple migrations" do
|
490
|
-
proc{Sequel::TimestampMigrator.apply(@db, "spec/files/double_migration")}.must_raise(Sequel::Migrator::Error)
|
491
|
-
end
|
492
|
-
|
493
|
-
it "should handle migrating up or down all the way" do
|
494
|
-
@dir = 'spec/files/timestamped_migrations'
|
495
|
-
@m.apply(@db, @dir)
|
496
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
497
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
498
|
-
@m.apply(@db, @dir, 0)
|
499
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
500
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal []
|
501
|
-
end
|
502
|
-
|
503
|
-
it "should handle migrating up or down to specific timestamps" do
|
504
|
-
@dir = 'spec/files/timestamped_migrations'
|
505
|
-
@m.apply(@db, @dir, 1273253851)
|
506
|
-
[:schema_migrations, :sm1111, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
|
507
|
-
@db.table_exists?(:sm3333).must_equal false
|
508
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb'
|
509
|
-
@m.apply(@db, @dir, 1273253849)
|
510
|
-
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
511
|
-
@db.table_exists?(:sm1111).must_equal true
|
512
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb'
|
513
|
-
end
|
514
|
-
|
515
|
-
it "should not be current when there are migrations to apply" do
|
516
|
-
@dir = 'spec/files/timestamped_migrations'
|
517
|
-
@m.apply(@db, @dir)
|
518
|
-
@m.is_current?(@db, @dir).must_equal true
|
519
|
-
@dir = 'spec/files/interleaved_timestamped_migrations'
|
520
|
-
@m.is_current?(@db, @dir).must_equal false
|
521
|
-
end
|
522
|
-
|
523
|
-
it "should raise an exception if the migrator is not current" do
|
524
|
-
@dir = 'spec/files/timestamped_migrations'
|
525
|
-
@m.apply(@db, @dir)
|
526
|
-
@m.check_current(@db, @dir)
|
527
|
-
@dir = 'spec/files/interleaved_timestamped_migrations'
|
528
|
-
proc{@m.check_current(@db, @dir)}.must_raise(Sequel::Migrator::NotCurrentError)
|
529
|
-
end
|
530
|
-
|
531
|
-
it "should apply all missing files when migrating up" do
|
532
|
-
@dir = 'spec/files/timestamped_migrations'
|
533
|
-
@m.apply(@db, @dir)
|
534
|
-
@dir = 'spec/files/interleaved_timestamped_migrations'
|
535
|
-
@m.apply(@db, @dir)
|
536
|
-
[:schema_migrations, :sm1111, :sm1122, :sm2222, :sm2233, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
537
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253850_create_artists.rb 1273253851_create_nodes.rb 1273253852_create_albums.rb 1273253853_3_create_users.rb'
|
538
|
-
end
|
539
|
-
|
540
|
-
it "should not apply down action to migrations where up action hasn't been applied" do
|
541
|
-
@dir = 'spec/files/timestamped_migrations'
|
542
|
-
@m.apply(@db, @dir)
|
543
|
-
@dir = 'spec/files/interleaved_timestamped_migrations'
|
544
|
-
@m.apply(@db, @dir, 0)
|
545
|
-
[:sm1111, :sm1122, :sm2222, :sm2233, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
546
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal []
|
547
|
-
end
|
548
|
-
|
549
|
-
it "should handle updating to a specific timestamp when interleaving migrations" do
|
550
|
-
@dir = 'spec/files/timestamped_migrations'
|
551
|
-
@m.apply(@db, @dir)
|
552
|
-
@dir = 'spec/files/interleaved_timestamped_migrations'
|
553
|
-
@m.apply(@db, @dir, 1273253851)
|
554
|
-
[:schema_migrations, :sm1111, :sm1122, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
|
555
|
-
[:sm2233, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
556
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253850_create_artists.rb 1273253851_create_nodes.rb'
|
557
|
-
end
|
558
|
-
|
559
|
-
it "should correctly update schema_migrations table when an error occurs when migrating up or down" do
|
560
|
-
@dir = 'spec/files/bad_timestamped_migrations'
|
561
|
-
proc{@m.apply(@db, @dir)}.must_raise NoMethodError
|
562
|
-
[:schema_migrations, :sm1111, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
|
563
|
-
@db.table_exists?(:sm3333).must_equal false
|
564
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb'
|
565
|
-
proc{@m.apply(@db, @dir, 0)}.must_raise NoMethodError
|
566
|
-
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
567
|
-
@db.table_exists?(:sm1111).must_equal true
|
568
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb'
|
569
|
-
end
|
570
|
-
|
571
|
-
it "should handle multiple migrations with the same timestamp correctly" do
|
572
|
-
@dir = 'spec/files/duplicate_timestamped_migrations'
|
573
|
-
@m.apply(@db, @dir)
|
574
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
575
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253853_create_nodes.rb 1273253853_create_users.rb'
|
576
|
-
@m.apply(@db, @dir, 1273253853)
|
577
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
578
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253853_create_nodes.rb 1273253853_create_users.rb'
|
579
|
-
@m.apply(@db, @dir, 1273253849)
|
580
|
-
[:sm1111].each{|n| @db.table_exists?(n).must_equal true}
|
581
|
-
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
582
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb'
|
583
|
-
@m.apply(@db, @dir, 1273253848)
|
584
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
585
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal []
|
586
|
-
end
|
587
|
-
|
588
|
-
it "should convert schema_info table to schema_migrations table" do
|
589
|
-
@dir = 'spec/files/integer_migrations'
|
590
|
-
@m.apply(@db, @dir)
|
591
|
-
[:schema_info, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
592
|
-
[:schema_migrations, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
593
|
-
|
594
|
-
@dir = 'spec/files/convert_to_timestamp_migrations'
|
595
|
-
@m.apply(@db, @dir)
|
596
|
-
[:schema_info, :sm1111, :sm2222, :sm3333, :schema_migrations, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal true}
|
597
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb 1273253852_create_albums.rb'
|
598
|
-
|
599
|
-
@m.apply(@db, @dir, 4)
|
600
|
-
[:schema_info, :schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
601
|
-
[:sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
602
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb'
|
603
|
-
|
604
|
-
@m.apply(@db, @dir, 0)
|
605
|
-
[:schema_info, :schema_migrations].each{|n| @db.table_exists?(n).must_equal true}
|
606
|
-
[:sm1111, :sm2222, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
607
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal []
|
608
|
-
end
|
609
|
-
|
610
|
-
it "should handle unapplied migrations when migrating schema_info table to schema_migrations table" do
|
611
|
-
@dir = 'spec/files/integer_migrations'
|
612
|
-
@m.apply(@db, @dir, 2)
|
613
|
-
[:schema_info, :sm1111, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
|
614
|
-
[:schema_migrations, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
615
|
-
|
616
|
-
@dir = 'spec/files/convert_to_timestamp_migrations'
|
617
|
-
@m.apply(@db, @dir, 1273253850)
|
618
|
-
[:schema_info, :sm1111, :sm2222, :sm3333, :schema_migrations, :sm1122].each{|n| @db.table_exists?(n).must_equal true}
|
619
|
-
[:sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
620
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb'
|
621
|
-
end
|
622
|
-
|
623
|
-
it "should handle unapplied migrations when migrating schema_info table to schema_migrations table and target is less than last integer migration version" do
|
624
|
-
@dir = 'spec/files/integer_migrations'
|
625
|
-
@m.apply(@db, @dir, 1)
|
626
|
-
[:schema_info, :sm1111].each{|n| @db.table_exists?(n).must_equal true}
|
627
|
-
[:schema_migrations, :sm2222, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
628
|
-
|
629
|
-
@dir = 'spec/files/convert_to_timestamp_migrations'
|
630
|
-
@m.apply(@db, @dir, 2)
|
631
|
-
[:schema_info, :sm1111, :sm2222, :schema_migrations].each{|n| @db.table_exists?(n).must_equal true}
|
632
|
-
[:sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
|
633
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb'
|
634
|
-
|
635
|
-
@m.apply(@db, @dir)
|
636
|
-
[:schema_info, :sm1111, :sm2222, :schema_migrations, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal true}
|
637
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb 1273253852_create_albums.rb'
|
638
|
-
end
|
639
|
-
|
640
|
-
it "should raise error for applied migrations not in file system" do
|
641
|
-
@dir = 'spec/files/timestamped_migrations'
|
642
|
-
@m.apply(@db, @dir)
|
643
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
644
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
645
|
-
|
646
|
-
@dir = 'spec/files/missing_timestamped_migrations'
|
647
|
-
proc{@m.apply(@db, @dir, 0)}.must_raise(Sequel::Migrator::Error)
|
648
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
649
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
650
|
-
end
|
651
|
-
|
652
|
-
it "should not raise error for applied migrations not in file system if :allow_missing_migration_files is true" do
|
653
|
-
@dir = 'spec/files/timestamped_migrations'
|
654
|
-
@m.apply(@db, @dir)
|
655
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
656
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
657
|
-
|
658
|
-
@dir = 'spec/files/missing_timestamped_migrations'
|
659
|
-
@m.run(@db, @dir, :allow_missing_migration_files => true)
|
660
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
661
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
662
|
-
end
|
663
|
-
|
664
|
-
it "should raise error missing column name in existing schema_migrations table" do
|
665
|
-
@dir = 'spec/files/timestamped_migrations'
|
666
|
-
@m.apply(@db, @dir)
|
667
|
-
proc{@m.run(@db, @dir, :column=>:fn)}.must_raise(Sequel::Migrator::Error)
|
668
|
-
end
|
669
|
-
|
670
|
-
it "should handle migration filenames in a case insensitive manner" do
|
671
|
-
@dir = 'spec/files/uppercase_timestamped_migrations'
|
672
|
-
@m.apply(@db, @dir)
|
673
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
674
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
675
|
-
@dir = 'spec/files/timestamped_migrations'
|
676
|
-
@m.apply(@db, @dir, 0)
|
677
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
678
|
-
@db[:schema_migrations].select_order_map(:filename).must_equal []
|
679
|
-
end
|
680
|
-
|
681
|
-
it "should :table and :column options" do
|
682
|
-
@dir = 'spec/files/timestamped_migrations'
|
683
|
-
@m.run(@db, @dir, :table=>:sm, :column=>:fn)
|
684
|
-
[:sm, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
|
685
|
-
@db[:sm].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
686
|
-
@m.run(@db, @dir, :target=>0, :table=>:sm, :column=>:fn)
|
687
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
|
688
|
-
@db[:sm].select_order_map(:fn).must_equal []
|
689
|
-
end
|
690
|
-
|
691
|
-
it "should return nil" do
|
692
|
-
@dir = 'spec/files/timestamped_migrations'
|
693
|
-
@m.apply(@db, @dir, 1273253850).must_equal nil
|
694
|
-
@m.apply(@db, @dir, 0).must_equal nil
|
695
|
-
@m.apply(@db, @dir).must_equal nil
|
696
|
-
end
|
697
|
-
|
698
|
-
it "should use TimestampMigrator if TimestampMigrator.apply is called even for integer migrations directory" do
|
699
|
-
Sequel::TimestampMigrator.apply(@db, "spec/files/integer_migrations")
|
700
|
-
@db.sqls.must_equal ["SELECT NULL AS nil FROM schema_migrations LIMIT 1", "CREATE TABLE schema_migrations (filename varchar(255) PRIMARY KEY)", "SELECT NULL AS nil FROM schema_info LIMIT 1", "SELECT filename FROM schema_migrations ORDER BY filename", "CREATE TABLE sm1111 (smc1 integer)", "INSERT INTO schema_migrations (filename) VALUES ('001_create_sessions.rb')", "CREATE TABLE sm2222 (smc2 integer)", "INSERT INTO schema_migrations (filename) VALUES ('002_create_nodes.rb')", "CREATE TABLE sm3333 (smc3 integer)", "INSERT INTO schema_migrations (filename) VALUES ('003_3_create_users.rb')"]
|
701
|
-
end
|
702
|
-
|
703
|
-
it "should not use transactions by default" do
|
704
|
-
Sequel::TimestampMigrator.apply(@db, "spec/files/transaction_unspecified_migrations")
|
705
|
-
@db.sqls.must_equal ["SELECT NULL AS nil FROM schema_migrations LIMIT 1", "CREATE TABLE schema_migrations (filename varchar(255) PRIMARY KEY)", "SELECT NULL AS nil FROM schema_info LIMIT 1", "SELECT filename FROM schema_migrations ORDER BY filename", "CREATE TABLE sm11111 (smc1 integer)", "INSERT INTO schema_migrations (filename) VALUES ('001_create_alt_basic.rb')", "CREATE TABLE sm (smc1 integer)", "INSERT INTO schema_migrations (filename) VALUES ('002_create_basic.rb')"]
|
706
|
-
end
|
707
|
-
|
708
|
-
it "should use transactions by default if database supports transactional ddl" do
|
709
|
-
@db.meta_def(:supports_transactional_ddl?){true}
|
710
|
-
Sequel::TimestampMigrator.apply(@db, "spec/files/transaction_unspecified_migrations")
|
711
|
-
@db.sqls.must_equal ["SELECT NULL AS nil FROM schema_migrations LIMIT 1", "CREATE TABLE schema_migrations (filename varchar(255) PRIMARY KEY)", "SELECT NULL AS nil FROM schema_info LIMIT 1", "SELECT filename FROM schema_migrations ORDER BY filename", "BEGIN", "CREATE TABLE sm11111 (smc1 integer)", "INSERT INTO schema_migrations (filename) VALUES ('001_create_alt_basic.rb')", "COMMIT", "BEGIN", "CREATE TABLE sm (smc1 integer)", "INSERT INTO schema_migrations (filename) VALUES ('002_create_basic.rb')", "COMMIT"]
|
712
|
-
end
|
713
|
-
|
714
|
-
it "should support transaction use on a per migration basis" do
|
715
|
-
Sequel::TimestampMigrator.apply(@db, "spec/files/transaction_specified_migrations")
|
716
|
-
@db.sqls.must_equal ["SELECT NULL AS nil FROM schema_migrations LIMIT 1", "CREATE TABLE schema_migrations (filename varchar(255) PRIMARY KEY)", "SELECT NULL AS nil FROM schema_info LIMIT 1", "SELECT filename FROM schema_migrations ORDER BY filename", "BEGIN", "CREATE TABLE sm11111 (smc1 integer)", "INSERT INTO schema_migrations (filename) VALUES ('001_create_alt_basic.rb')", "COMMIT", "CREATE TABLE sm (smc1 integer)", "INSERT INTO schema_migrations (filename) VALUES ('002_create_basic.rb')"]
|
717
|
-
end
|
718
|
-
|
719
|
-
it "should force transactions if enabled by the migrator" do
|
720
|
-
Sequel::TimestampMigrator.run(@db, "spec/files/transaction_specified_migrations", :use_transactions=>true)
|
721
|
-
@db.sqls.must_equal ["SELECT NULL AS nil FROM schema_migrations LIMIT 1", "CREATE TABLE schema_migrations (filename varchar(255) PRIMARY KEY)", "SELECT NULL AS nil FROM schema_info LIMIT 1", "SELECT filename FROM schema_migrations ORDER BY filename", "BEGIN", "CREATE TABLE sm11111 (smc1 integer)", "INSERT INTO schema_migrations (filename) VALUES ('001_create_alt_basic.rb')", "COMMIT", "BEGIN", "CREATE TABLE sm (smc1 integer)", "INSERT INTO schema_migrations (filename) VALUES ('002_create_basic.rb')", "COMMIT"]
|
722
|
-
end
|
723
|
-
|
724
|
-
it "should not use transactions if disabled in the migrator" do
|
725
|
-
Sequel::TimestampMigrator.run(@db, "spec/files/transaction_unspecified_migrations", :use_transactions=>false)
|
726
|
-
@db.sqls.must_equal ["SELECT NULL AS nil FROM schema_migrations LIMIT 1", "CREATE TABLE schema_migrations (filename varchar(255) PRIMARY KEY)", "SELECT NULL AS nil FROM schema_info LIMIT 1", "SELECT filename FROM schema_migrations ORDER BY filename", "CREATE TABLE sm11111 (smc1 integer)", "INSERT INTO schema_migrations (filename) VALUES ('001_create_alt_basic.rb')", "CREATE TABLE sm (smc1 integer)", "INSERT INTO schema_migrations (filename) VALUES ('002_create_basic.rb')"]
|
727
|
-
end
|
728
|
-
end
|