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
data/spec/core/schema_spec.rb
DELETED
@@ -1,1676 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper')
|
2
|
-
|
3
|
-
describe "DB#create_table" do
|
4
|
-
before do
|
5
|
-
@db = Sequel.mock
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should accept the table name" do
|
9
|
-
@db.create_table(:cats) {}
|
10
|
-
@db.sqls.must_equal ['CREATE TABLE cats ()']
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should accept the table name in multiple formats" do
|
14
|
-
@db.create_table(:cats__cats) {}
|
15
|
-
@db.create_table("cats__cats1") {}
|
16
|
-
@db.create_table(Sequel.identifier(:cats__cats2)) {}
|
17
|
-
@db.create_table(Sequel.qualify(:cats3, :cats)) {}
|
18
|
-
@db.sqls.must_equal ['CREATE TABLE cats.cats ()', 'CREATE TABLE cats__cats1 ()', 'CREATE TABLE cats__cats2 ()', 'CREATE TABLE cats3.cats ()']
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should raise an error if the table name argument is not valid" do
|
22
|
-
proc{@db.create_table(1) {}}.must_raise(Sequel::Error)
|
23
|
-
proc{@db.create_table(Sequel.as(:cats, :c)) {}}.must_raise(Sequel::Error)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should remove cached schema entry" do
|
27
|
-
@db.instance_variable_set(:@schemas, {'cats'=>[]})
|
28
|
-
@db.create_table(:cats){Integer :a}
|
29
|
-
@db.instance_variable_get(:@schemas).must_be :empty?
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should accept multiple columns" do
|
33
|
-
@db.create_table(:cats) do
|
34
|
-
column :id, :integer
|
35
|
-
column :name, :text
|
36
|
-
end
|
37
|
-
@db.sqls.must_equal ['CREATE TABLE cats (id integer, name text)']
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should accept method calls as data types" do
|
41
|
-
@db.create_table(:cats) do
|
42
|
-
integer :id
|
43
|
-
text :name
|
44
|
-
end
|
45
|
-
@db.sqls.must_equal ['CREATE TABLE cats (id integer, name text)']
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should transform types given as ruby classes to database-specific types" do
|
49
|
-
@db.create_table(:cats) do
|
50
|
-
String :a
|
51
|
-
Integer :b
|
52
|
-
Fixnum :c
|
53
|
-
Bignum :d
|
54
|
-
Float :e
|
55
|
-
BigDecimal :f
|
56
|
-
Date :g
|
57
|
-
DateTime :h
|
58
|
-
Time :i
|
59
|
-
Numeric :j
|
60
|
-
File :k
|
61
|
-
TrueClass :l
|
62
|
-
FalseClass :m
|
63
|
-
column :n, Fixnum
|
64
|
-
primary_key :o, :type=>String
|
65
|
-
foreign_key :p, :f, :type=>Date
|
66
|
-
end
|
67
|
-
@db.sqls.must_equal ['CREATE TABLE cats (o varchar(255) PRIMARY KEY AUTOINCREMENT, a varchar(255), b integer, c integer, d bigint, e double precision, f numeric, g date, h timestamp, i timestamp, j numeric, k blob, l boolean, m boolean, n integer, p date REFERENCES f)']
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should transform types given as ruby classes to database-specific types" do
|
71
|
-
@db.default_string_column_size = 50
|
72
|
-
@db.create_table(:cats) do
|
73
|
-
String :a
|
74
|
-
String :a2, :size=>13
|
75
|
-
String :a3, :fixed=>true
|
76
|
-
String :a4, :size=>13, :fixed=>true
|
77
|
-
String :a5, :text=>true
|
78
|
-
varchar :a6
|
79
|
-
varchar :a7, :size=>13
|
80
|
-
end
|
81
|
-
@db.sqls.must_equal ['CREATE TABLE cats (a varchar(50), a2 varchar(13), a3 char(50), a4 char(13), a5 text, a6 varchar(50), a7 varchar(13))']
|
82
|
-
end
|
83
|
-
|
84
|
-
it "should allow the use of modifiers with ruby class types" do
|
85
|
-
@db.create_table(:cats) do
|
86
|
-
String :a, :size=>50
|
87
|
-
String :b, :text=>true
|
88
|
-
String :c, :fixed=>true, :size=>40
|
89
|
-
Time :d, :only_time=>true
|
90
|
-
BigDecimal :e, :size=>[11,2]
|
91
|
-
end
|
92
|
-
@db.sqls.must_equal ['CREATE TABLE cats (a varchar(50), b text, c char(40), d time, e numeric(11, 2))']
|
93
|
-
end
|
94
|
-
|
95
|
-
it "should raise an error if you use a ruby class that isn't handled" do
|
96
|
-
proc{@db.create_table(:cats){column :a, Class}}.must_raise(Sequel::Error)
|
97
|
-
end
|
98
|
-
|
99
|
-
it "should accept primary key definition" do
|
100
|
-
@db.create_table(:cats) do
|
101
|
-
primary_key :id
|
102
|
-
end
|
103
|
-
@db.sqls.must_equal ['CREATE TABLE cats (id integer PRIMARY KEY AUTOINCREMENT)']
|
104
|
-
|
105
|
-
@db.create_table(:cats) do
|
106
|
-
primary_key :id, :serial, :auto_increment => false
|
107
|
-
end
|
108
|
-
@db.sqls.must_equal ['CREATE TABLE cats (id serial PRIMARY KEY)']
|
109
|
-
|
110
|
-
@db.create_table(:cats) do
|
111
|
-
primary_key :id, :type => :serial, :auto_increment => false
|
112
|
-
end
|
113
|
-
@db.sqls.must_equal ['CREATE TABLE cats (id serial PRIMARY KEY)']
|
114
|
-
|
115
|
-
@db.create_table(:cats) do
|
116
|
-
Integer :a
|
117
|
-
primary_key :id
|
118
|
-
end
|
119
|
-
@db.sqls.must_equal ['CREATE TABLE cats (id integer PRIMARY KEY AUTOINCREMENT, a integer)']
|
120
|
-
|
121
|
-
@db.create_table(:cats) do
|
122
|
-
Integer :a
|
123
|
-
primary_key :id, :keep_order=>true
|
124
|
-
end
|
125
|
-
@db.sqls.must_equal ['CREATE TABLE cats (a integer, id integer PRIMARY KEY AUTOINCREMENT)']
|
126
|
-
end
|
127
|
-
|
128
|
-
it "should allow naming primary key constraint with :primary_key_constraint_name option" do
|
129
|
-
@db.create_table(:cats) do
|
130
|
-
primary_key :id, :primary_key_constraint_name=>:foo
|
131
|
-
end
|
132
|
-
@db.sqls.must_equal ['CREATE TABLE cats (id integer CONSTRAINT foo PRIMARY KEY AUTOINCREMENT)']
|
133
|
-
end
|
134
|
-
|
135
|
-
it "should handling splitting named column constraints into table constraints if unsupported" do
|
136
|
-
def @db.supports_named_column_constraints?; false end
|
137
|
-
@db.create_table(:cats) do
|
138
|
-
primary_key :id, :primary_key_constraint_name=>:foo
|
139
|
-
foreign_key :cat_id, :cats, :unique=>true, :unique_constraint_name=>:bar, :foreign_key_constraint_name=>:baz, :deferrable=>true, :key=>:foo_id, :on_delete=>:cascade, :on_update=>:restrict
|
140
|
-
end
|
141
|
-
@db.sqls.must_equal ['CREATE TABLE cats (id integer AUTOINCREMENT, cat_id integer, CONSTRAINT foo PRIMARY KEY (id), CONSTRAINT baz FOREIGN KEY (cat_id) REFERENCES cats(foo_id) ON DELETE CASCADE ON UPDATE RESTRICT DEFERRABLE INITIALLY DEFERRED, CONSTRAINT bar UNIQUE (cat_id))']
|
142
|
-
end
|
143
|
-
|
144
|
-
it "should accept and literalize default values" do
|
145
|
-
@db.create_table(:cats) do
|
146
|
-
integer :id, :default => 123
|
147
|
-
text :name, :default => "abc'def"
|
148
|
-
end
|
149
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer DEFAULT 123, name text DEFAULT 'abc''def')"]
|
150
|
-
end
|
151
|
-
|
152
|
-
it "should accept not null definition" do
|
153
|
-
@db.create_table(:cats) do
|
154
|
-
integer :id
|
155
|
-
text :name, :null => false
|
156
|
-
text :name2, :allow_null => false
|
157
|
-
end
|
158
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer, name text NOT NULL, name2 text NOT NULL)"]
|
159
|
-
end
|
160
|
-
|
161
|
-
it "should accept null definition" do
|
162
|
-
@db.create_table(:cats) do
|
163
|
-
integer :id
|
164
|
-
text :name, :null => true
|
165
|
-
text :name2, :allow_null => true
|
166
|
-
end
|
167
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer, name text NULL, name2 text NULL)"]
|
168
|
-
end
|
169
|
-
|
170
|
-
it "should accept unique definition" do
|
171
|
-
@db.create_table(:cats) do
|
172
|
-
integer :id
|
173
|
-
text :name, :unique => true
|
174
|
-
end
|
175
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer, name text UNIQUE)"]
|
176
|
-
end
|
177
|
-
|
178
|
-
it "should allow naming unique constraint with :unique_constraint_name option" do
|
179
|
-
@db.create_table(:cats) do
|
180
|
-
text :name, :unique => true, :unique_constraint_name=>:foo
|
181
|
-
end
|
182
|
-
@db.sqls.must_equal ["CREATE TABLE cats (name text CONSTRAINT foo UNIQUE)"]
|
183
|
-
end
|
184
|
-
|
185
|
-
it "should handle not deferred unique constraints" do
|
186
|
-
@db.create_table(:cats) do
|
187
|
-
integer :id
|
188
|
-
text :name
|
189
|
-
unique :name, :deferrable=>false
|
190
|
-
end
|
191
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer, name text, UNIQUE (name) NOT DEFERRABLE)"]
|
192
|
-
end
|
193
|
-
|
194
|
-
it "should handle deferred unique constraints" do
|
195
|
-
@db.create_table(:cats) do
|
196
|
-
integer :id
|
197
|
-
text :name
|
198
|
-
unique :name, :deferrable=>true
|
199
|
-
end
|
200
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer, name text, UNIQUE (name) DEFERRABLE INITIALLY DEFERRED)"]
|
201
|
-
end
|
202
|
-
|
203
|
-
it "should handle deferred initially immediate unique constraints" do
|
204
|
-
@db.create_table(:cats) do
|
205
|
-
integer :id
|
206
|
-
text :name
|
207
|
-
unique :name, :deferrable=>:immediate
|
208
|
-
end
|
209
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer, name text, UNIQUE (name) DEFERRABLE INITIALLY IMMEDIATE)"]
|
210
|
-
end
|
211
|
-
|
212
|
-
it "should accept unsigned definition" do
|
213
|
-
@db.create_table(:cats) do
|
214
|
-
integer :value, :unsigned => true
|
215
|
-
end
|
216
|
-
@db.sqls.must_equal ["CREATE TABLE cats (value integer UNSIGNED)"]
|
217
|
-
end
|
218
|
-
|
219
|
-
it "should accept [SET|ENUM](...) types" do
|
220
|
-
@db.create_table(:cats) do
|
221
|
-
set :color, :elements => ['black', 'tricolor', 'grey']
|
222
|
-
end
|
223
|
-
@db.sqls.must_equal ["CREATE TABLE cats (color set('black', 'tricolor', 'grey'))"]
|
224
|
-
end
|
225
|
-
|
226
|
-
it "should accept varchar size" do
|
227
|
-
@db.create_table(:cats) do
|
228
|
-
varchar :name
|
229
|
-
end
|
230
|
-
@db.sqls.must_equal ["CREATE TABLE cats (name varchar(255))"]
|
231
|
-
@db.create_table(:cats) do
|
232
|
-
varchar :name, :size => 51
|
233
|
-
end
|
234
|
-
@db.sqls.must_equal ["CREATE TABLE cats (name varchar(51))"]
|
235
|
-
end
|
236
|
-
|
237
|
-
it "should use double precision for double type" do
|
238
|
-
@db.create_table(:cats) do
|
239
|
-
double :name
|
240
|
-
end
|
241
|
-
@db.sqls.must_equal ["CREATE TABLE cats (name double precision)"]
|
242
|
-
end
|
243
|
-
|
244
|
-
it "should accept foreign keys without options" do
|
245
|
-
@db.create_table(:cats) do
|
246
|
-
foreign_key :project_id
|
247
|
-
end
|
248
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer)"]
|
249
|
-
end
|
250
|
-
|
251
|
-
it "should accept foreign keys with options" do
|
252
|
-
@db.create_table(:cats) do
|
253
|
-
foreign_key :project_id, :table => :projects
|
254
|
-
end
|
255
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects)"]
|
256
|
-
end
|
257
|
-
|
258
|
-
it "should accept foreign keys with separate table argument" do
|
259
|
-
@db.create_table(:cats) do
|
260
|
-
foreign_key :project_id, :projects, :default=>3
|
261
|
-
end
|
262
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer DEFAULT 3 REFERENCES projects)"]
|
263
|
-
end
|
264
|
-
|
265
|
-
it "should allowing naming foreign key constraint with :foreign_key_constraint_name option" do
|
266
|
-
@db.create_table(:cats) do
|
267
|
-
foreign_key :project_id, :projects, :foreign_key_constraint_name=>:foo
|
268
|
-
end
|
269
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer CONSTRAINT foo REFERENCES projects)"]
|
270
|
-
end
|
271
|
-
|
272
|
-
it "should raise an error if the table argument to foreign_key isn't a hash, symbol, or nil" do
|
273
|
-
proc{@db.create_table(:cats){foreign_key :project_id, Object.new, :default=>3}}.must_raise(Sequel::Error)
|
274
|
-
end
|
275
|
-
|
276
|
-
it "should accept foreign keys with arbitrary keys" do
|
277
|
-
@db.create_table(:cats) do
|
278
|
-
foreign_key :project_id, :table => :projects, :key => :id
|
279
|
-
end
|
280
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects(id))"]
|
281
|
-
|
282
|
-
@db.create_table(:cats) do
|
283
|
-
foreign_key :project_id, :table => :projects, :key => :zzz
|
284
|
-
end
|
285
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects(zzz))"]
|
286
|
-
end
|
287
|
-
|
288
|
-
it "should accept foreign keys with ON DELETE clause" do
|
289
|
-
@db.create_table(:cats) do
|
290
|
-
foreign_key :project_id, :table => :projects, :on_delete => :restrict
|
291
|
-
end
|
292
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON DELETE RESTRICT)"]
|
293
|
-
|
294
|
-
@db.create_table(:cats) do
|
295
|
-
foreign_key :project_id, :table => :projects, :on_delete => :cascade
|
296
|
-
end
|
297
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON DELETE CASCADE)"]
|
298
|
-
|
299
|
-
@db.create_table(:cats) do
|
300
|
-
foreign_key :project_id, :table => :projects, :on_delete => :no_action
|
301
|
-
end
|
302
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON DELETE NO ACTION)"]
|
303
|
-
|
304
|
-
@db.create_table(:cats) do
|
305
|
-
foreign_key :project_id, :table => :projects, :on_delete => :set_null
|
306
|
-
end
|
307
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON DELETE SET NULL)"]
|
308
|
-
|
309
|
-
@db.create_table(:cats) do
|
310
|
-
foreign_key :project_id, :table => :projects, :on_delete => :set_default
|
311
|
-
end
|
312
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON DELETE SET DEFAULT)"]
|
313
|
-
|
314
|
-
@db.create_table(:cats) do
|
315
|
-
foreign_key :project_id, :table => :projects, :on_delete => 'NO ACTION FOO'
|
316
|
-
end
|
317
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON DELETE NO ACTION FOO)"]
|
318
|
-
end
|
319
|
-
|
320
|
-
it "should accept foreign keys with ON UPDATE clause" do
|
321
|
-
@db.create_table(:cats) do
|
322
|
-
foreign_key :project_id, :table => :projects, :on_update => :restrict
|
323
|
-
end
|
324
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON UPDATE RESTRICT)"]
|
325
|
-
|
326
|
-
@db.create_table(:cats) do
|
327
|
-
foreign_key :project_id, :table => :projects, :on_update => :cascade
|
328
|
-
end
|
329
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON UPDATE CASCADE)"]
|
330
|
-
|
331
|
-
@db.create_table(:cats) do
|
332
|
-
foreign_key :project_id, :table => :projects, :on_update => :no_action
|
333
|
-
end
|
334
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON UPDATE NO ACTION)"]
|
335
|
-
|
336
|
-
@db.create_table(:cats) do
|
337
|
-
foreign_key :project_id, :table => :projects, :on_update => :set_null
|
338
|
-
end
|
339
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON UPDATE SET NULL)"]
|
340
|
-
|
341
|
-
@db.create_table(:cats) do
|
342
|
-
foreign_key :project_id, :table => :projects, :on_update => :set_default
|
343
|
-
end
|
344
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON UPDATE SET DEFAULT)"]
|
345
|
-
|
346
|
-
@db.create_table(:cats) do
|
347
|
-
foreign_key :project_id, :table => :projects, :on_update => 'SET DEFAULT FOO'
|
348
|
-
end
|
349
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON UPDATE SET DEFAULT FOO)"]
|
350
|
-
end
|
351
|
-
|
352
|
-
it "should accept foreign keys with deferrable option" do
|
353
|
-
@db.create_table(:cats) do
|
354
|
-
foreign_key :project_id, :projects, :deferrable=>true
|
355
|
-
end
|
356
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects DEFERRABLE INITIALLY DEFERRED)"]
|
357
|
-
end
|
358
|
-
|
359
|
-
it "should accept collation" do
|
360
|
-
@db.quote_identifiers = true
|
361
|
-
@db.create_table(:cats) do
|
362
|
-
String :name, :collate => :utf8_bin
|
363
|
-
end
|
364
|
-
@db.sqls.must_equal ['CREATE TABLE "cats" ("name" varchar(255) COLLATE utf8_bin)']
|
365
|
-
end
|
366
|
-
|
367
|
-
it "should accept collation as a String, treated literally" do
|
368
|
-
@db.create_table(:cats) do
|
369
|
-
String :name, :collate => '"utf8_bin"'
|
370
|
-
end
|
371
|
-
@db.sqls.must_equal ['CREATE TABLE cats (name varchar(255) COLLATE "utf8_bin")']
|
372
|
-
end
|
373
|
-
|
374
|
-
it "should accept inline index definition" do
|
375
|
-
@db.create_table(:cats) do
|
376
|
-
integer :id, :index => true
|
377
|
-
end
|
378
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer)", "CREATE INDEX cats_id_index ON cats (id)"]
|
379
|
-
end
|
380
|
-
|
381
|
-
it "should accept inline index definition with a hash of options" do
|
382
|
-
@db.create_table(:cats) do
|
383
|
-
integer :id, :index => {:unique=>true}
|
384
|
-
end
|
385
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer)", "CREATE UNIQUE INDEX cats_id_index ON cats (id)"]
|
386
|
-
end
|
387
|
-
|
388
|
-
it "should accept inline index definition for foreign keys" do
|
389
|
-
@db.create_table(:cats) do
|
390
|
-
foreign_key :project_id, :table => :projects, :on_delete => :cascade, :index => true
|
391
|
-
end
|
392
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON DELETE CASCADE)",
|
393
|
-
"CREATE INDEX cats_project_id_index ON cats (project_id)"]
|
394
|
-
end
|
395
|
-
|
396
|
-
it "should accept inline index definition for foreign keys with a hash of options" do
|
397
|
-
@db.create_table(:cats) do
|
398
|
-
foreign_key :project_id, :table => :projects, :on_delete => :cascade, :index => {:unique=>true}
|
399
|
-
end
|
400
|
-
@db.sqls.must_equal ["CREATE TABLE cats (project_id integer REFERENCES projects ON DELETE CASCADE)",
|
401
|
-
"CREATE UNIQUE INDEX cats_project_id_index ON cats (project_id)"]
|
402
|
-
end
|
403
|
-
|
404
|
-
it "should accept index definitions" do
|
405
|
-
@db.create_table(:cats) do
|
406
|
-
integer :id
|
407
|
-
index :id
|
408
|
-
end
|
409
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer)", "CREATE INDEX cats_id_index ON cats (id)"]
|
410
|
-
end
|
411
|
-
|
412
|
-
it "should accept unique constraint definitions" do
|
413
|
-
@db.create_table(:cats) do
|
414
|
-
text :name
|
415
|
-
unique :name
|
416
|
-
end
|
417
|
-
@db.sqls.must_equal ["CREATE TABLE cats (name text, UNIQUE (name))"]
|
418
|
-
end
|
419
|
-
|
420
|
-
it "should accept partial index definitions" do
|
421
|
-
def @db.supports_partial_indexes?() true end
|
422
|
-
@db.create_table(:cats) do
|
423
|
-
integer :id
|
424
|
-
index :id, :where=>proc{id > 1}
|
425
|
-
end
|
426
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer)", "CREATE INDEX cats_id_index ON cats (id) WHERE (id > 1)"]
|
427
|
-
end
|
428
|
-
|
429
|
-
it "should raise an error if partial indexes are not supported" do
|
430
|
-
proc do
|
431
|
-
@db.create_table(:cats) do
|
432
|
-
integer :id
|
433
|
-
index :id, :where=>proc{id > 1}
|
434
|
-
end
|
435
|
-
end.must_raise(Sequel::Error)
|
436
|
-
end
|
437
|
-
|
438
|
-
it "should not raise on index error for unsupported index definitions if ignore_index_errors is used" do
|
439
|
-
@db.create_table(:cats, :ignore_index_errors=>true) do
|
440
|
-
text :name
|
441
|
-
full_text_index :name
|
442
|
-
end
|
443
|
-
end
|
444
|
-
|
445
|
-
it "should raise on full-text index definitions" do
|
446
|
-
proc {
|
447
|
-
@db.create_table(:cats) do
|
448
|
-
text :name
|
449
|
-
full_text_index :name
|
450
|
-
end
|
451
|
-
}.must_raise(Sequel::Error)
|
452
|
-
end
|
453
|
-
|
454
|
-
it "should raise on spatial index definitions" do
|
455
|
-
proc {
|
456
|
-
@db.create_table(:cats) do
|
457
|
-
point :geom
|
458
|
-
spatial_index :geom
|
459
|
-
end
|
460
|
-
}.must_raise(Sequel::Error)
|
461
|
-
end
|
462
|
-
|
463
|
-
it "should raise on partial index definitions" do
|
464
|
-
proc {
|
465
|
-
@db.create_table(:cats) do
|
466
|
-
text :name
|
467
|
-
index :name, :where => {:something => true}
|
468
|
-
end
|
469
|
-
}.must_raise(Sequel::Error)
|
470
|
-
end
|
471
|
-
|
472
|
-
it "should raise index definitions with type" do
|
473
|
-
proc {
|
474
|
-
@db.create_table(:cats) do
|
475
|
-
text :name
|
476
|
-
index :name, :type => :hash
|
477
|
-
end
|
478
|
-
}.must_raise(Sequel::Error)
|
479
|
-
end
|
480
|
-
|
481
|
-
it "should ignore errors if the database raises an error on an index creation statement and the :ignore_index_errors option is used" do
|
482
|
-
meta_def(@db, :execute_ddl){|*a| raise Sequel::DatabaseError if /blah/.match(a.first); super(*a)}
|
483
|
-
lambda{@db.create_table(:cats){Integer :id; index :blah; index :id}}.must_raise(Sequel::DatabaseError)
|
484
|
-
@db.sqls.must_equal ['CREATE TABLE cats (id integer)']
|
485
|
-
@db.create_table(:cats, :ignore_index_errors=>true){Integer :id; index :blah; index :id}
|
486
|
-
@db.sqls.must_equal ['CREATE TABLE cats (id integer)', 'CREATE INDEX cats_id_index ON cats (id)']
|
487
|
-
end
|
488
|
-
|
489
|
-
it "should accept multiple index definitions" do
|
490
|
-
@db.create_table(:cats) do
|
491
|
-
integer :id
|
492
|
-
index :id
|
493
|
-
index :name
|
494
|
-
end
|
495
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer)", "CREATE INDEX cats_id_index ON cats (id)", "CREATE INDEX cats_name_index ON cats (name)"]
|
496
|
-
end
|
497
|
-
|
498
|
-
it "should accept functional indexes" do
|
499
|
-
@db.create_table(:cats) do
|
500
|
-
integer :id
|
501
|
-
index Sequel.function(:lower, :name)
|
502
|
-
end
|
503
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer)", "CREATE INDEX cats_lower_name__index ON cats (lower(name))"]
|
504
|
-
end
|
505
|
-
|
506
|
-
it "should accept indexes with identifiers" do
|
507
|
-
@db.create_table(:cats) do
|
508
|
-
integer :id
|
509
|
-
index Sequel.identifier(:lower__name)
|
510
|
-
end
|
511
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer)", "CREATE INDEX cats_lower__name_index ON cats (lower__name)"]
|
512
|
-
end
|
513
|
-
|
514
|
-
it "should accept custom index names" do
|
515
|
-
@db.create_table(:cats) do
|
516
|
-
integer :id
|
517
|
-
index :id, :name => 'abc'
|
518
|
-
end
|
519
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer)", "CREATE INDEX abc ON cats (id)"]
|
520
|
-
end
|
521
|
-
|
522
|
-
it "should accept unique index definitions" do
|
523
|
-
@db.create_table(:cats) do
|
524
|
-
integer :id
|
525
|
-
index :id, :unique => true
|
526
|
-
end
|
527
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer)", "CREATE UNIQUE INDEX cats_id_index ON cats (id)"]
|
528
|
-
end
|
529
|
-
|
530
|
-
it "should accept composite index definitions" do
|
531
|
-
@db.create_table(:cats) do
|
532
|
-
integer :id
|
533
|
-
index [:id, :name], :unique => true
|
534
|
-
end
|
535
|
-
@db.sqls.must_equal ["CREATE TABLE cats (id integer)", "CREATE UNIQUE INDEX cats_id_name_index ON cats (id, name)"]
|
536
|
-
end
|
537
|
-
|
538
|
-
it "should accept unnamed constraint definitions with blocks" do
|
539
|
-
@db.create_table(:cats) do
|
540
|
-
integer :score
|
541
|
-
check{(x > 0) & (y < 1)}
|
542
|
-
end
|
543
|
-
@db.sqls.must_equal ["CREATE TABLE cats (score integer, CHECK ((x > 0) AND (y < 1)))"]
|
544
|
-
end
|
545
|
-
|
546
|
-
it "should accept unnamed constraint definitions with function calls" do
|
547
|
-
@db.create_table(:cats) do
|
548
|
-
integer :score
|
549
|
-
check{f(x)}
|
550
|
-
end
|
551
|
-
@db.sqls.must_equal ["CREATE TABLE cats (score integer, CHECK (f(x)))"]
|
552
|
-
end
|
553
|
-
|
554
|
-
it "should accept unnamed constraint definitions" do
|
555
|
-
@db.create_table(:cats) do
|
556
|
-
check 'price < ?', 100
|
557
|
-
end
|
558
|
-
@db.sqls.must_equal ["CREATE TABLE cats (CHECK (price < 100))"]
|
559
|
-
end
|
560
|
-
|
561
|
-
it "should accept arrays of pairs constraints" do
|
562
|
-
@db.create_table(:cats) do
|
563
|
-
check [[:price, 100]]
|
564
|
-
end
|
565
|
-
@db.sqls.must_equal ["CREATE TABLE cats (CHECK (price = 100))"]
|
566
|
-
end
|
567
|
-
|
568
|
-
it "should accept hash constraints" do
|
569
|
-
@db.create_table(:cats) do
|
570
|
-
check :price=>100
|
571
|
-
end
|
572
|
-
@db.sqls.must_equal ["CREATE TABLE cats (CHECK (price = 100))"]
|
573
|
-
end
|
574
|
-
|
575
|
-
it "should accept array constraints" do
|
576
|
-
@db.create_table(:cats) do
|
577
|
-
check [Sequel.expr(:x) > 0, Sequel.expr(:y) < 1]
|
578
|
-
end
|
579
|
-
@db.sqls.must_equal ["CREATE TABLE cats (CHECK ((x > 0) AND (y < 1)))"]
|
580
|
-
end
|
581
|
-
|
582
|
-
it "should accept named constraint definitions" do
|
583
|
-
@db.create_table(:cats) do
|
584
|
-
integer :score
|
585
|
-
constraint :valid_score, 'score <= 100'
|
586
|
-
end
|
587
|
-
@db.sqls.must_equal ["CREATE TABLE cats (score integer, CONSTRAINT valid_score CHECK (score <= 100))"]
|
588
|
-
end
|
589
|
-
|
590
|
-
it "should accept named constraint definitions with options" do
|
591
|
-
@db.create_table(:cats) do
|
592
|
-
integer :score
|
593
|
-
constraint({:name=>:valid_score, :deferrable=>true}, 'score <= 100')
|
594
|
-
end
|
595
|
-
@db.sqls.must_equal ["CREATE TABLE cats (score integer, CONSTRAINT valid_score CHECK (score <= 100) DEFERRABLE INITIALLY DEFERRED)"]
|
596
|
-
end
|
597
|
-
|
598
|
-
it "should accept named constraint definitions with block" do
|
599
|
-
@db.create_table(:cats) do
|
600
|
-
constraint(:blah_blah){(x.sql_number > 0) & (y.sql_number < 1)}
|
601
|
-
end
|
602
|
-
@db.sqls.must_equal ["CREATE TABLE cats (CONSTRAINT blah_blah CHECK ((x > 0) AND (y < 1)))"]
|
603
|
-
end
|
604
|
-
|
605
|
-
it "should raise an error if an invalid constraint type is used" do
|
606
|
-
proc{@db.create_table(:cats){unique [:a, :b], :type=>:bb}}.must_raise(Sequel::Error)
|
607
|
-
end
|
608
|
-
|
609
|
-
it "should accept composite primary keys" do
|
610
|
-
@db.create_table(:cats) do
|
611
|
-
integer :a
|
612
|
-
integer :b
|
613
|
-
primary_key [:a, :b]
|
614
|
-
end
|
615
|
-
@db.sqls.must_equal ["CREATE TABLE cats (a integer, b integer, PRIMARY KEY (a, b))"]
|
616
|
-
end
|
617
|
-
|
618
|
-
it "should accept named composite primary keys" do
|
619
|
-
@db.create_table(:cats) do
|
620
|
-
integer :a
|
621
|
-
integer :b
|
622
|
-
primary_key [:a, :b], :name => :cpk
|
623
|
-
end
|
624
|
-
@db.sqls.must_equal ["CREATE TABLE cats (a integer, b integer, CONSTRAINT cpk PRIMARY KEY (a, b))"]
|
625
|
-
end
|
626
|
-
|
627
|
-
it "should accept composite foreign keys" do
|
628
|
-
@db.create_table(:cats) do
|
629
|
-
integer :a
|
630
|
-
integer :b
|
631
|
-
foreign_key [:a, :b], :abc
|
632
|
-
end
|
633
|
-
@db.sqls.must_equal ["CREATE TABLE cats (a integer, b integer, FOREIGN KEY (a, b) REFERENCES abc)"]
|
634
|
-
end
|
635
|
-
|
636
|
-
it "should accept named composite foreign keys" do
|
637
|
-
@db.create_table(:cats) do
|
638
|
-
integer :a
|
639
|
-
integer :b
|
640
|
-
foreign_key [:a, :b], :abc, :name => :cfk
|
641
|
-
end
|
642
|
-
@db.sqls.must_equal ["CREATE TABLE cats (a integer, b integer, CONSTRAINT cfk FOREIGN KEY (a, b) REFERENCES abc)"]
|
643
|
-
end
|
644
|
-
|
645
|
-
it "should accept composite foreign keys with arbitrary keys" do
|
646
|
-
@db.create_table(:cats) do
|
647
|
-
integer :a
|
648
|
-
integer :b
|
649
|
-
foreign_key [:a, :b], :abc, :key => [:real_a, :real_b]
|
650
|
-
end
|
651
|
-
@db.sqls.must_equal ["CREATE TABLE cats (a integer, b integer, FOREIGN KEY (a, b) REFERENCES abc(real_a, real_b))"]
|
652
|
-
|
653
|
-
@db.create_table(:cats) do
|
654
|
-
integer :a
|
655
|
-
integer :b
|
656
|
-
foreign_key [:a, :b], :abc, :key => [:z, :x]
|
657
|
-
end
|
658
|
-
@db.sqls.must_equal ["CREATE TABLE cats (a integer, b integer, FOREIGN KEY (a, b) REFERENCES abc(z, x))"]
|
659
|
-
end
|
660
|
-
|
661
|
-
it "should accept composite foreign keys with on delete and on update clauses" do
|
662
|
-
@db.create_table(:cats) do
|
663
|
-
integer :a
|
664
|
-
integer :b
|
665
|
-
foreign_key [:a, :b], :abc, :on_delete => :cascade
|
666
|
-
end
|
667
|
-
@db.sqls.must_equal ["CREATE TABLE cats (a integer, b integer, FOREIGN KEY (a, b) REFERENCES abc ON DELETE CASCADE)"]
|
668
|
-
|
669
|
-
@db.create_table(:cats) do
|
670
|
-
integer :a
|
671
|
-
integer :b
|
672
|
-
foreign_key [:a, :b], :abc, :on_update => :no_action
|
673
|
-
end
|
674
|
-
@db.sqls.must_equal ["CREATE TABLE cats (a integer, b integer, FOREIGN KEY (a, b) REFERENCES abc ON UPDATE NO ACTION)"]
|
675
|
-
|
676
|
-
@db.create_table(:cats) do
|
677
|
-
integer :a
|
678
|
-
integer :b
|
679
|
-
foreign_key [:a, :b], :abc, :on_delete => :restrict, :on_update => :set_default
|
680
|
-
end
|
681
|
-
@db.sqls.must_equal ["CREATE TABLE cats (a integer, b integer, FOREIGN KEY (a, b) REFERENCES abc ON DELETE RESTRICT ON UPDATE SET DEFAULT)"]
|
682
|
-
|
683
|
-
@db.create_table(:cats) do
|
684
|
-
integer :a
|
685
|
-
integer :b
|
686
|
-
foreign_key [:a, :b], :abc, :key => [:x, :y], :on_delete => :set_null, :on_update => :set_null
|
687
|
-
end
|
688
|
-
@db.sqls.must_equal ["CREATE TABLE cats (a integer, b integer, FOREIGN KEY (a, b) REFERENCES abc(x, y) ON DELETE SET NULL ON UPDATE SET NULL)"]
|
689
|
-
end
|
690
|
-
|
691
|
-
it "should accept an :as option to create a table from the results of a dataset" do
|
692
|
-
@db.create_table(:cats, :as=>@db[:a])
|
693
|
-
@db.sqls.must_equal ['CREATE TABLE cats AS SELECT * FROM a']
|
694
|
-
end
|
695
|
-
|
696
|
-
it "should accept an :as option to create a table from a SELECT string" do
|
697
|
-
@db.create_table(:cats, :as=>'SELECT * FROM a')
|
698
|
-
@db.sqls.must_equal ['CREATE TABLE cats AS SELECT * FROM a']
|
699
|
-
end
|
700
|
-
|
701
|
-
it "should raise an Error if both a block and an :as argument are given" do
|
702
|
-
proc{@db.create_table(:cats, :as=>@db[:a]){}}.must_raise(Sequel::Error)
|
703
|
-
end
|
704
|
-
end
|
705
|
-
|
706
|
-
describe "DB#create_table!" do
|
707
|
-
before do
|
708
|
-
@db = Sequel.mock
|
709
|
-
end
|
710
|
-
|
711
|
-
it "should create the table if it does not exist" do
|
712
|
-
meta_def(@db, :table_exists?){|a| false}
|
713
|
-
@db.create_table!(:cats){|*a|}
|
714
|
-
@db.sqls.must_equal ['CREATE TABLE cats ()']
|
715
|
-
end
|
716
|
-
|
717
|
-
it "should drop the table before creating it if it already exists" do
|
718
|
-
meta_def(@db, :table_exists?){|a| true}
|
719
|
-
@db.create_table!(:cats){|*a|}
|
720
|
-
@db.sqls.must_equal ['DROP TABLE cats', 'CREATE TABLE cats ()']
|
721
|
-
end
|
722
|
-
|
723
|
-
it "should use IF EXISTS if the database supports it" do
|
724
|
-
meta_def(@db, :supports_drop_table_if_exists?){true}
|
725
|
-
@db.create_table!(:cats){|*a|}
|
726
|
-
@db.sqls.must_equal ['DROP TABLE IF EXISTS cats', 'CREATE TABLE cats ()']
|
727
|
-
end
|
728
|
-
end
|
729
|
-
|
730
|
-
describe "DB#create_table?" do
|
731
|
-
before do
|
732
|
-
@db = Sequel.mock
|
733
|
-
end
|
734
|
-
|
735
|
-
it "should not create the table if the table already exists" do
|
736
|
-
meta_def(@db, :table_exists?){|a| true}
|
737
|
-
@db.create_table?(:cats){|*a|}
|
738
|
-
@db.sqls.must_equal []
|
739
|
-
end
|
740
|
-
|
741
|
-
it "should create the table if the table doesn't already exist" do
|
742
|
-
meta_def(@db, :table_exists?){|a| false}
|
743
|
-
@db.create_table?(:cats){|*a|}
|
744
|
-
@db.sqls.must_equal ['CREATE TABLE cats ()']
|
745
|
-
end
|
746
|
-
|
747
|
-
it "should use IF NOT EXISTS if the database supports that" do
|
748
|
-
meta_def(@db, :supports_create_table_if_not_exists?){true}
|
749
|
-
@db.create_table?(:cats){|*a|}
|
750
|
-
@db.sqls.must_equal ['CREATE TABLE IF NOT EXISTS cats ()']
|
751
|
-
end
|
752
|
-
|
753
|
-
it "should not use IF NOT EXISTS if the indexes are created" do
|
754
|
-
meta_def(@db, :table_exists?){|a| false}
|
755
|
-
meta_def(@db, :supports_create_table_if_not_exists?){true}
|
756
|
-
@db.create_table?(:cats){|*a| Integer :a, :index=>true}
|
757
|
-
@db.sqls.must_equal ['CREATE TABLE cats (a integer)', 'CREATE INDEX cats_a_index ON cats (a)']
|
758
|
-
|
759
|
-
meta_def(@db, :table_exists?){|a| true}
|
760
|
-
@db.create_table?(:cats){|*a| Integer :a, :index=>true}
|
761
|
-
@db.sqls.must_equal []
|
762
|
-
end
|
763
|
-
end
|
764
|
-
|
765
|
-
describe "DB#create_join_table" do
|
766
|
-
before do
|
767
|
-
@db = Sequel.mock
|
768
|
-
end
|
769
|
-
|
770
|
-
it "should take a hash with foreign keys and table name values" do
|
771
|
-
@db.create_join_table(:cat_id=>:cats, :dog_id=>:dogs)
|
772
|
-
@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)']
|
773
|
-
end
|
774
|
-
|
775
|
-
it "should be able to have values be a hash of options" do
|
776
|
-
@db.create_join_table(:cat_id=>{:table=>:cats, :null=>true}, :dog_id=>{:table=>:dogs, :default=>0})
|
777
|
-
@db.sqls.must_equal ['CREATE TABLE cats_dogs (cat_id integer NULL REFERENCES cats, dog_id integer DEFAULT 0 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)']
|
778
|
-
end
|
779
|
-
|
780
|
-
it "should be able to pass a second hash of table options" do
|
781
|
-
@db.create_join_table({:cat_id=>:cats, :dog_id=>:dogs}, :temp=>true)
|
782
|
-
@db.sqls.must_equal ['CREATE TEMPORARY 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)']
|
783
|
-
end
|
784
|
-
|
785
|
-
it "should recognize :name option in table options" do
|
786
|
-
@db.create_join_table({:cat_id=>:cats, :dog_id=>:dogs}, :name=>:f)
|
787
|
-
@db.sqls.must_equal ['CREATE TABLE f (cat_id integer NOT NULL REFERENCES cats, dog_id integer NOT NULL REFERENCES dogs, PRIMARY KEY (cat_id, dog_id))', 'CREATE INDEX f_dog_id_cat_id_index ON f (dog_id, cat_id)']
|
788
|
-
end
|
789
|
-
|
790
|
-
it "should recognize :index_options option in table options" do
|
791
|
-
@db.create_join_table({:cat_id=>:cats, :dog_id=>:dogs}, :index_options=>{:name=>:foo_index})
|
792
|
-
@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 foo_index ON cats_dogs (dog_id, cat_id)']
|
793
|
-
end
|
794
|
-
|
795
|
-
it "should recognize :no_index option in table options" do
|
796
|
-
@db.create_join_table({:cat_id=>:cats, :dog_id=>:dogs}, :no_index=>true)
|
797
|
-
@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))']
|
798
|
-
end
|
799
|
-
|
800
|
-
it "should recognize :no_primary_key option in table options" do
|
801
|
-
@db.create_join_table({:cat_id=>:cats, :dog_id=>:dogs}, :no_primary_key=>true)
|
802
|
-
@db.sqls.must_equal ['CREATE TABLE cats_dogs (cat_id integer NOT NULL REFERENCES cats, dog_id integer NOT NULL REFERENCES dogs)', 'CREATE INDEX cats_dogs_dog_id_cat_id_index ON cats_dogs (dog_id, cat_id)']
|
803
|
-
end
|
804
|
-
|
805
|
-
it "should raise an error if the hash doesn't have 2 entries with table names" do
|
806
|
-
proc{@db.create_join_table({})}.must_raise(Sequel::Error)
|
807
|
-
proc{@db.create_join_table({:cat_id=>:cats})}.must_raise(Sequel::Error)
|
808
|
-
proc{@db.create_join_table({:cat_id=>:cats, :human_id=>:humans, :dog_id=>:dog})}.must_raise(Sequel::Error)
|
809
|
-
proc{@db.create_join_table({:cat_id=>:cats, :dog_id=>{}})}.must_raise(Sequel::Error)
|
810
|
-
end
|
811
|
-
end
|
812
|
-
|
813
|
-
describe "DB#create_join_table?" do
|
814
|
-
before do
|
815
|
-
@db = Sequel.mock
|
816
|
-
end
|
817
|
-
|
818
|
-
it "should create the table if it does not already exist" do
|
819
|
-
meta_def(@db, :table_exists?){|a| false}
|
820
|
-
@db.create_join_table?(:cat_id=>:cats, :dog_id=>:dogs)
|
821
|
-
@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)']
|
822
|
-
end
|
823
|
-
|
824
|
-
it "should not create the table if it already exists" do
|
825
|
-
meta_def(@db, :table_exists?){|a| true}
|
826
|
-
@db.create_join_table?(:cat_id=>:cats, :dog_id=>:dogs)
|
827
|
-
@db.sqls.must_equal []
|
828
|
-
end
|
829
|
-
|
830
|
-
it "should not use IF NOT EXISTS" do
|
831
|
-
meta_def(@db, :table_exists?){|a| false}
|
832
|
-
meta_def(@db, :supports_create_table_if_not_exists?){true}
|
833
|
-
@db.create_join_table?(:cat_id=>:cats, :dog_id=>:dogs)
|
834
|
-
@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)']
|
835
|
-
|
836
|
-
meta_def(@db, :table_exists?){|a| true}
|
837
|
-
@db.create_join_table?(:cat_id=>:cats, :dog_id=>:dogs)
|
838
|
-
@db.sqls.must_equal []
|
839
|
-
end
|
840
|
-
|
841
|
-
it "should not use IF NOT EXISTS if no_index is used" do
|
842
|
-
meta_def(@db, :supports_create_table_if_not_exists?){true}
|
843
|
-
@db.create_join_table?({:cat_id=>:cats, :dog_id=>:dogs}, :no_index=>true)
|
844
|
-
@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))']
|
845
|
-
end
|
846
|
-
end
|
847
|
-
|
848
|
-
describe "DB#create_join_table!" do
|
849
|
-
before do
|
850
|
-
@db = Sequel.mock
|
851
|
-
end
|
852
|
-
|
853
|
-
it "should drop the table first if it already exists" do
|
854
|
-
meta_def(@db, :table_exists?){|a| true}
|
855
|
-
@db.create_join_table!(:cat_id=>:cats, :dog_id=>:dogs)
|
856
|
-
@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)']
|
857
|
-
end
|
858
|
-
|
859
|
-
it "should not drop the table if it doesn't exists" do
|
860
|
-
meta_def(@db, :table_exists?){|a| false}
|
861
|
-
@db.create_join_table!(:cat_id=>:cats, :dog_id=>:dogs)
|
862
|
-
@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)']
|
863
|
-
end
|
864
|
-
|
865
|
-
it "should use IF EXISTS if the database supports it" do
|
866
|
-
meta_def(@db, :supports_drop_table_if_exists?){true}
|
867
|
-
@db.create_join_table!(:cat_id=>:cats, :dog_id=>:dogs)
|
868
|
-
@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)']
|
869
|
-
end
|
870
|
-
end
|
871
|
-
|
872
|
-
describe "DB#drop_join_table" do
|
873
|
-
before do
|
874
|
-
@db = Sequel.mock
|
875
|
-
end
|
876
|
-
|
877
|
-
it "should take a hash with foreign keys and table name values and drop the table" do
|
878
|
-
@db.drop_join_table(:cat_id=>:cats, :dog_id=>:dogs)
|
879
|
-
@db.sqls.must_equal ['DROP TABLE cats_dogs']
|
880
|
-
end
|
881
|
-
|
882
|
-
it "should be able to have values be a hash of options" do
|
883
|
-
@db.drop_join_table(:cat_id=>{:table=>:cats, :null=>true}, :dog_id=>{:table=>:dogs, :default=>0})
|
884
|
-
@db.sqls.must_equal ['DROP TABLE cats_dogs']
|
885
|
-
end
|
886
|
-
|
887
|
-
it "should respect a second hash of table options" do
|
888
|
-
@db.drop_join_table({:cat_id=>:cats, :dog_id=>:dogs}, :cascade=>true)
|
889
|
-
@db.sqls.must_equal ['DROP TABLE cats_dogs CASCADE']
|
890
|
-
end
|
891
|
-
|
892
|
-
it "should respect :name option for table name" do
|
893
|
-
@db.drop_join_table({:cat_id=>:cats, :dog_id=>:dogs}, :name=>:f)
|
894
|
-
@db.sqls.must_equal ['DROP TABLE f']
|
895
|
-
end
|
896
|
-
|
897
|
-
it "should raise an error if the hash doesn't have 2 entries with table names" do
|
898
|
-
proc{@db.drop_join_table({})}.must_raise(Sequel::Error)
|
899
|
-
proc{@db.drop_join_table({:cat_id=>:cats})}.must_raise(Sequel::Error)
|
900
|
-
proc{@db.drop_join_table({:cat_id=>:cats, :human_id=>:humans, :dog_id=>:dog})}.must_raise(Sequel::Error)
|
901
|
-
proc{@db.drop_join_table({:cat_id=>:cats, :dog_id=>{}})}.must_raise(Sequel::Error)
|
902
|
-
end
|
903
|
-
end
|
904
|
-
|
905
|
-
describe "DB#drop_table" do
|
906
|
-
before do
|
907
|
-
@db = Sequel.mock
|
908
|
-
end
|
909
|
-
|
910
|
-
it "should generate a DROP TABLE statement" do
|
911
|
-
@db.drop_table :cats
|
912
|
-
@db.sqls.must_equal ['DROP TABLE cats']
|
913
|
-
end
|
914
|
-
|
915
|
-
it "should drop multiple tables at once" do
|
916
|
-
@db.drop_table :cats, :dogs
|
917
|
-
@db.sqls.must_equal ['DROP TABLE cats', 'DROP TABLE dogs']
|
918
|
-
end
|
919
|
-
|
920
|
-
it "should take an options hash and support the :cascade option" do
|
921
|
-
@db.drop_table :cats, :dogs, :cascade=>true
|
922
|
-
@db.sqls.must_equal ['DROP TABLE cats CASCADE', 'DROP TABLE dogs CASCADE']
|
923
|
-
end
|
924
|
-
end
|
925
|
-
|
926
|
-
describe "DB#drop_table?" do
|
927
|
-
before do
|
928
|
-
@db = Sequel.mock
|
929
|
-
end
|
930
|
-
|
931
|
-
it "should drop the table if it exists" do
|
932
|
-
meta_def(@db, :table_exists?){|a| true}
|
933
|
-
@db.drop_table?(:cats)
|
934
|
-
@db.sqls.must_equal ["DROP TABLE cats"]
|
935
|
-
end
|
936
|
-
|
937
|
-
it "should do nothing if the table does not exist" do
|
938
|
-
meta_def(@db, :table_exists?){|a| false}
|
939
|
-
@db.drop_table?(:cats)
|
940
|
-
@db.sqls.must_equal []
|
941
|
-
end
|
942
|
-
|
943
|
-
it "should operate on multiple tables at once" do
|
944
|
-
meta_def(@db, :table_exists?){|a| a == :cats}
|
945
|
-
@db.drop_table? :cats, :dogs
|
946
|
-
@db.sqls.must_equal ['DROP TABLE cats']
|
947
|
-
end
|
948
|
-
|
949
|
-
it "should take an options hash and support the :cascade option" do
|
950
|
-
meta_def(@db, :table_exists?){|a| true}
|
951
|
-
@db.drop_table? :cats, :dogs, :cascade=>true
|
952
|
-
@db.sqls.must_equal ['DROP TABLE cats CASCADE', 'DROP TABLE dogs CASCADE']
|
953
|
-
end
|
954
|
-
|
955
|
-
it "should use IF NOT EXISTS if the database supports that" do
|
956
|
-
meta_def(@db, :supports_drop_table_if_exists?){true}
|
957
|
-
@db.drop_table? :cats, :dogs
|
958
|
-
@db.sqls.must_equal ['DROP TABLE IF EXISTS cats', 'DROP TABLE IF EXISTS dogs']
|
959
|
-
end
|
960
|
-
|
961
|
-
it "should use IF NOT EXISTS with CASCADE if the database supports that" do
|
962
|
-
meta_def(@db, :supports_drop_table_if_exists?){true}
|
963
|
-
@db.drop_table? :cats, :dogs, :cascade=>true
|
964
|
-
@db.sqls.must_equal ['DROP TABLE IF EXISTS cats CASCADE', 'DROP TABLE IF EXISTS dogs CASCADE']
|
965
|
-
end
|
966
|
-
end
|
967
|
-
|
968
|
-
describe "DB#alter_table" do
|
969
|
-
before do
|
970
|
-
@db = Sequel.mock
|
971
|
-
end
|
972
|
-
|
973
|
-
it "should allow adding not null constraint via set_column_allow_null with false argument" do
|
974
|
-
@db.alter_table(:cats) do
|
975
|
-
set_column_allow_null :score, false
|
976
|
-
end
|
977
|
-
@db.sqls.must_equal ["ALTER TABLE cats ALTER COLUMN score SET NOT NULL"]
|
978
|
-
end
|
979
|
-
|
980
|
-
it "should allow removing not null constraint via set_column_allow_null with true argument" do
|
981
|
-
@db.alter_table(:cats) do
|
982
|
-
set_column_allow_null :score, true
|
983
|
-
end
|
984
|
-
@db.sqls.must_equal ["ALTER TABLE cats ALTER COLUMN score DROP NOT NULL"]
|
985
|
-
end
|
986
|
-
|
987
|
-
it "should allow adding not null constraint via set_column_not_null" do
|
988
|
-
@db.alter_table(:cats) do
|
989
|
-
set_column_not_null :score
|
990
|
-
end
|
991
|
-
@db.sqls.must_equal ["ALTER TABLE cats ALTER COLUMN score SET NOT NULL"]
|
992
|
-
end
|
993
|
-
|
994
|
-
it "should allow removing not null constraint via set_column_allow_null without argument" do
|
995
|
-
@db.alter_table(:cats) do
|
996
|
-
set_column_allow_null :score
|
997
|
-
end
|
998
|
-
@db.sqls.must_equal ["ALTER TABLE cats ALTER COLUMN score DROP NOT NULL"]
|
999
|
-
end
|
1000
|
-
|
1001
|
-
it "should support add_column" do
|
1002
|
-
@db.alter_table(:cats) do
|
1003
|
-
add_column :score, :integer
|
1004
|
-
end
|
1005
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD COLUMN score integer"]
|
1006
|
-
end
|
1007
|
-
|
1008
|
-
it "should support add_constraint" do
|
1009
|
-
@db.alter_table(:cats) do
|
1010
|
-
add_constraint :valid_score, 'score <= 100'
|
1011
|
-
end
|
1012
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD CONSTRAINT valid_score CHECK (score <= 100)"]
|
1013
|
-
end
|
1014
|
-
|
1015
|
-
it "should support add_constraint with options" do
|
1016
|
-
@db.alter_table(:cats) do
|
1017
|
-
add_constraint({:name=>:valid_score, :deferrable=>true}, 'score <= 100')
|
1018
|
-
end
|
1019
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD CONSTRAINT valid_score CHECK (score <= 100) DEFERRABLE INITIALLY DEFERRED"]
|
1020
|
-
end
|
1021
|
-
|
1022
|
-
it "should support add_constraint with block" do
|
1023
|
-
@db.alter_table(:cats) do
|
1024
|
-
add_constraint(:blah_blah){(x.sql_number > 0) & (y.sql_number < 1)}
|
1025
|
-
end
|
1026
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD CONSTRAINT blah_blah CHECK ((x > 0) AND (y < 1))"]
|
1027
|
-
end
|
1028
|
-
|
1029
|
-
it "should support add_unique_constraint" do
|
1030
|
-
@db.alter_table(:cats) do
|
1031
|
-
add_unique_constraint [:a, :b]
|
1032
|
-
end
|
1033
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD UNIQUE (a, b)"]
|
1034
|
-
|
1035
|
-
@db.alter_table(:cats) do
|
1036
|
-
add_unique_constraint [:a, :b], :name => :ab_uniq
|
1037
|
-
end
|
1038
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD CONSTRAINT ab_uniq UNIQUE (a, b)"]
|
1039
|
-
end
|
1040
|
-
|
1041
|
-
it "should support add_foreign_key" do
|
1042
|
-
@db.alter_table(:cats) do
|
1043
|
-
add_foreign_key :node_id, :nodes
|
1044
|
-
end
|
1045
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD COLUMN node_id integer REFERENCES nodes"]
|
1046
|
-
end
|
1047
|
-
|
1048
|
-
it "should support add_foreign_key with composite foreign keys" do
|
1049
|
-
@db.alter_table(:cats) do
|
1050
|
-
add_foreign_key [:node_id, :prop_id], :nodes_props
|
1051
|
-
end
|
1052
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD FOREIGN KEY (node_id, prop_id) REFERENCES nodes_props"]
|
1053
|
-
|
1054
|
-
@db.alter_table(:cats) do
|
1055
|
-
add_foreign_key [:node_id, :prop_id], :nodes_props, :name => :cfk
|
1056
|
-
end
|
1057
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD CONSTRAINT cfk FOREIGN KEY (node_id, prop_id) REFERENCES nodes_props"]
|
1058
|
-
|
1059
|
-
@db.alter_table(:cats) do
|
1060
|
-
add_foreign_key [:node_id, :prop_id], :nodes_props, :key => [:nid, :pid]
|
1061
|
-
end
|
1062
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD FOREIGN KEY (node_id, prop_id) REFERENCES nodes_props(nid, pid)"]
|
1063
|
-
|
1064
|
-
@db.alter_table(:cats) do
|
1065
|
-
add_foreign_key [:node_id, :prop_id], :nodes_props, :on_delete => :restrict, :on_update => :cascade
|
1066
|
-
end
|
1067
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD FOREIGN KEY (node_id, prop_id) REFERENCES nodes_props ON DELETE RESTRICT ON UPDATE CASCADE"]
|
1068
|
-
end
|
1069
|
-
|
1070
|
-
it "should support add_index" do
|
1071
|
-
@db.alter_table(:cats) do
|
1072
|
-
add_index :name
|
1073
|
-
end
|
1074
|
-
@db.sqls.must_equal ["CREATE INDEX cats_name_index ON cats (name)"]
|
1075
|
-
end
|
1076
|
-
|
1077
|
-
it "should ignore errors if the database raises an error on an add_index call and the :ignore_errors option is used" do
|
1078
|
-
meta_def(@db, :execute_ddl){|*a| raise Sequel::DatabaseError}
|
1079
|
-
lambda{@db.add_index(:cats, :id)}.must_raise(Sequel::DatabaseError)
|
1080
|
-
@db.add_index(:cats, :id, :ignore_errors=>true)
|
1081
|
-
@db.sqls.must_equal []
|
1082
|
-
end
|
1083
|
-
|
1084
|
-
it "should support add_primary_key" do
|
1085
|
-
@db.alter_table(:cats) do
|
1086
|
-
add_primary_key :id
|
1087
|
-
end
|
1088
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD COLUMN id integer PRIMARY KEY AUTOINCREMENT"]
|
1089
|
-
end
|
1090
|
-
|
1091
|
-
it "should support add_primary_key with composite primary keys" do
|
1092
|
-
@db.alter_table(:cats) do
|
1093
|
-
add_primary_key [:id, :type]
|
1094
|
-
end
|
1095
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD PRIMARY KEY (id, type)"]
|
1096
|
-
|
1097
|
-
@db.alter_table(:cats) do
|
1098
|
-
add_primary_key [:id, :type], :name => :cpk
|
1099
|
-
end
|
1100
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD CONSTRAINT cpk PRIMARY KEY (id, type)"]
|
1101
|
-
end
|
1102
|
-
|
1103
|
-
it "should support drop_column" do
|
1104
|
-
@db.alter_table(:cats) do
|
1105
|
-
drop_column :score
|
1106
|
-
end
|
1107
|
-
@db.sqls.must_equal ["ALTER TABLE cats DROP COLUMN score"]
|
1108
|
-
end
|
1109
|
-
|
1110
|
-
it "should support drop_column with :cascade=>true option" do
|
1111
|
-
@db.alter_table(:cats) do
|
1112
|
-
drop_column :score, :cascade=>true
|
1113
|
-
end
|
1114
|
-
@db.sqls.must_equal ["ALTER TABLE cats DROP COLUMN score CASCADE"]
|
1115
|
-
end
|
1116
|
-
|
1117
|
-
it "should support drop_constraint" do
|
1118
|
-
@db.alter_table(:cats) do
|
1119
|
-
drop_constraint :valid_score
|
1120
|
-
end
|
1121
|
-
@db.sqls.must_equal ["ALTER TABLE cats DROP CONSTRAINT valid_score"]
|
1122
|
-
end
|
1123
|
-
|
1124
|
-
it "should support drop_constraint with :cascade=>true option" do
|
1125
|
-
@db.alter_table(:cats) do
|
1126
|
-
drop_constraint :valid_score, :cascade=>true
|
1127
|
-
end
|
1128
|
-
@db.sqls.must_equal ["ALTER TABLE cats DROP CONSTRAINT valid_score CASCADE"]
|
1129
|
-
end
|
1130
|
-
|
1131
|
-
it "should support drop_foreign_key" do
|
1132
|
-
def @db.foreign_key_list(table_name)
|
1133
|
-
[{:name=>:cats_node_id_fkey, :columns=>[:node_id]}]
|
1134
|
-
end
|
1135
|
-
@db.alter_table(:cats) do
|
1136
|
-
drop_foreign_key :node_id
|
1137
|
-
end
|
1138
|
-
@db.sqls.must_equal ["ALTER TABLE cats DROP CONSTRAINT cats_node_id_fkey", "ALTER TABLE cats DROP COLUMN node_id"]
|
1139
|
-
end
|
1140
|
-
|
1141
|
-
it "should support drop_foreign_key with composite foreign keys" do
|
1142
|
-
def @db.foreign_key_list(table_name)
|
1143
|
-
[{:name=>:cats_node_id_prop_id_fkey, :columns=>[:node_id, :prop_id]}]
|
1144
|
-
end
|
1145
|
-
@db.alter_table(:cats) do
|
1146
|
-
drop_foreign_key [:node_id, :prop_id]
|
1147
|
-
end
|
1148
|
-
@db.sqls.must_equal ["ALTER TABLE cats DROP CONSTRAINT cats_node_id_prop_id_fkey"]
|
1149
|
-
|
1150
|
-
@db.alter_table(:cats) do
|
1151
|
-
drop_foreign_key [:node_id, :prop_id], :name => :cfk
|
1152
|
-
end
|
1153
|
-
@db.sqls.must_equal ["ALTER TABLE cats DROP CONSTRAINT cfk"]
|
1154
|
-
end
|
1155
|
-
|
1156
|
-
it "should have drop_foreign_key raise Error if no name is found" do
|
1157
|
-
def @db.foreign_key_list(table_name)
|
1158
|
-
[{:name=>:cats_node_id_fkey, :columns=>[:foo_id]}]
|
1159
|
-
end
|
1160
|
-
lambda{@db.alter_table(:cats){drop_foreign_key :node_id}}.must_raise(Sequel::Error)
|
1161
|
-
end
|
1162
|
-
|
1163
|
-
it "should have drop_foreign_key raise Error if multiple foreign keys found" do
|
1164
|
-
def @db.foreign_key_list(table_name)
|
1165
|
-
[{:name=>:cats_node_id_fkey, :columns=>[:node_id]}, {:name=>:cats_node_id_fkey2, :columns=>[:node_id]}]
|
1166
|
-
end
|
1167
|
-
lambda{@db.alter_table(:cats){drop_foreign_key :node_id}}.must_raise(Sequel::Error)
|
1168
|
-
end
|
1169
|
-
|
1170
|
-
it "should support drop_index" do
|
1171
|
-
@db.alter_table(:cats) do
|
1172
|
-
drop_index :name
|
1173
|
-
end
|
1174
|
-
@db.sqls.must_equal ["DROP INDEX cats_name_index"]
|
1175
|
-
end
|
1176
|
-
|
1177
|
-
it "should support drop_index with a given name" do
|
1178
|
-
@db.alter_table(:cats) do
|
1179
|
-
drop_index :name, :name=>:blah_blah
|
1180
|
-
end
|
1181
|
-
@db.sqls.must_equal ["DROP INDEX blah_blah"]
|
1182
|
-
end
|
1183
|
-
|
1184
|
-
it "should support rename_column" do
|
1185
|
-
@db.alter_table(:cats) do
|
1186
|
-
rename_column :name, :old_name
|
1187
|
-
end
|
1188
|
-
@db.sqls.must_equal ["ALTER TABLE cats RENAME COLUMN name TO old_name"]
|
1189
|
-
end
|
1190
|
-
|
1191
|
-
it "should support set_column_default" do
|
1192
|
-
@db.alter_table(:cats) do
|
1193
|
-
set_column_default :score, 3
|
1194
|
-
end
|
1195
|
-
@db.sqls.must_equal ["ALTER TABLE cats ALTER COLUMN score SET DEFAULT 3"]
|
1196
|
-
end
|
1197
|
-
|
1198
|
-
it "should support set_column_type" do
|
1199
|
-
@db.alter_table(:cats) do
|
1200
|
-
set_column_type :score, :real
|
1201
|
-
end
|
1202
|
-
@db.sqls.must_equal ["ALTER TABLE cats ALTER COLUMN score TYPE real"]
|
1203
|
-
end
|
1204
|
-
|
1205
|
-
it "should support set_column_type with options" do
|
1206
|
-
@db.alter_table(:cats) do
|
1207
|
-
set_column_type :score, :integer, :unsigned=>true
|
1208
|
-
set_column_type :score, :varchar, :size=>30
|
1209
|
-
set_column_type :score, :enum, :elements=>['a', 'b']
|
1210
|
-
end
|
1211
|
-
@db.sqls.must_equal ["ALTER TABLE cats ALTER COLUMN score TYPE integer UNSIGNED",
|
1212
|
-
"ALTER TABLE cats ALTER COLUMN score TYPE varchar(30)",
|
1213
|
-
"ALTER TABLE cats ALTER COLUMN score TYPE enum('a', 'b')"]
|
1214
|
-
end
|
1215
|
-
|
1216
|
-
it "should combine operations into a single query if the database supports it" do
|
1217
|
-
meta_def(@db, :supports_combining_alter_table_ops?){true}
|
1218
|
-
@db.alter_table(:cats) do
|
1219
|
-
add_column :a, Integer
|
1220
|
-
drop_column :b
|
1221
|
-
set_column_not_null :c
|
1222
|
-
rename_column :d, :e
|
1223
|
-
set_column_default :f, 'g'
|
1224
|
-
set_column_type :h, Integer
|
1225
|
-
add_constraint(:i){a > 1}
|
1226
|
-
drop_constraint :j
|
1227
|
-
end
|
1228
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD COLUMN a integer, DROP COLUMN b, ALTER COLUMN c SET NOT NULL, RENAME COLUMN d TO e, ALTER COLUMN f SET DEFAULT 'g', ALTER COLUMN h TYPE integer, ADD CONSTRAINT i CHECK (a > 1), DROP CONSTRAINT j"]
|
1229
|
-
end
|
1230
|
-
|
1231
|
-
it "should combine operations into consecutive groups of combinable operations if the database supports combining operations" do
|
1232
|
-
meta_def(@db, :supports_combining_alter_table_ops?){true}
|
1233
|
-
@db.alter_table(:cats) do
|
1234
|
-
add_column :a, Integer
|
1235
|
-
drop_column :b
|
1236
|
-
set_column_not_null :c
|
1237
|
-
rename_column :d, :e
|
1238
|
-
add_index :e
|
1239
|
-
set_column_default :f, 'g'
|
1240
|
-
set_column_type :h, Integer
|
1241
|
-
add_constraint(:i){a > 1}
|
1242
|
-
drop_constraint :j
|
1243
|
-
end
|
1244
|
-
@db.sqls.must_equal ["ALTER TABLE cats ADD COLUMN a integer, DROP COLUMN b, ALTER COLUMN c SET NOT NULL, RENAME COLUMN d TO e",
|
1245
|
-
"CREATE INDEX cats_e_index ON cats (e)",
|
1246
|
-
"ALTER TABLE cats ALTER COLUMN f SET DEFAULT 'g', ALTER COLUMN h TYPE integer, ADD CONSTRAINT i CHECK (a > 1), DROP CONSTRAINT j"]
|
1247
|
-
end
|
1248
|
-
|
1249
|
-
end
|
1250
|
-
|
1251
|
-
describe "Database#create_table" do
|
1252
|
-
before do
|
1253
|
-
@db = Sequel.mock
|
1254
|
-
end
|
1255
|
-
|
1256
|
-
it "should construct proper SQL" do
|
1257
|
-
@db.create_table :test do
|
1258
|
-
primary_key :id, :integer, :null => false
|
1259
|
-
column :name, :text
|
1260
|
-
index :name, :unique => true
|
1261
|
-
end
|
1262
|
-
@db.sqls.must_equal ['CREATE TABLE test (id integer NOT NULL PRIMARY KEY AUTOINCREMENT, name text)',
|
1263
|
-
'CREATE UNIQUE INDEX test_name_index ON test (name)']
|
1264
|
-
end
|
1265
|
-
|
1266
|
-
it "should create a temporary table" do
|
1267
|
-
@db.create_table :test_tmp, :temp => true do
|
1268
|
-
primary_key :id, :integer, :null => false
|
1269
|
-
column :name, :text
|
1270
|
-
index :name, :unique => true
|
1271
|
-
end
|
1272
|
-
|
1273
|
-
@db.sqls.must_equal ['CREATE TEMPORARY TABLE test_tmp (id integer NOT NULL PRIMARY KEY AUTOINCREMENT, name text)',
|
1274
|
-
'CREATE UNIQUE INDEX test_tmp_name_index ON test_tmp (name)']
|
1275
|
-
end
|
1276
|
-
end
|
1277
|
-
|
1278
|
-
describe "Database#alter_table" do
|
1279
|
-
before do
|
1280
|
-
@db = Sequel.mock
|
1281
|
-
end
|
1282
|
-
|
1283
|
-
it "should construct proper SQL" do
|
1284
|
-
@db.alter_table :xyz do
|
1285
|
-
add_column :aaa, :text, :null => false, :unique => true
|
1286
|
-
drop_column :bbb
|
1287
|
-
rename_column :ccc, :ddd
|
1288
|
-
set_column_type :eee, :integer
|
1289
|
-
set_column_default :hhh, 'abcd'
|
1290
|
-
add_index :fff, :unique => true
|
1291
|
-
drop_index :ggg
|
1292
|
-
end
|
1293
|
-
|
1294
|
-
@db.sqls.must_equal ['ALTER TABLE xyz ADD COLUMN aaa text NOT NULL UNIQUE',
|
1295
|
-
'ALTER TABLE xyz DROP COLUMN bbb',
|
1296
|
-
'ALTER TABLE xyz RENAME COLUMN ccc TO ddd',
|
1297
|
-
'ALTER TABLE xyz ALTER COLUMN eee TYPE integer',
|
1298
|
-
"ALTER TABLE xyz ALTER COLUMN hhh SET DEFAULT 'abcd'",
|
1299
|
-
'CREATE UNIQUE INDEX xyz_fff_index ON xyz (fff)',
|
1300
|
-
'DROP INDEX xyz_ggg_index']
|
1301
|
-
end
|
1302
|
-
end
|
1303
|
-
|
1304
|
-
describe "Database#add_column" do
|
1305
|
-
it "should construct proper SQL" do
|
1306
|
-
db = Sequel.mock
|
1307
|
-
db.add_column :test, :name, :text, :unique => true
|
1308
|
-
db.sqls.must_equal ['ALTER TABLE test ADD COLUMN name text UNIQUE']
|
1309
|
-
end
|
1310
|
-
end
|
1311
|
-
|
1312
|
-
describe "Database#drop_column" do
|
1313
|
-
before do
|
1314
|
-
@db = Sequel.mock
|
1315
|
-
end
|
1316
|
-
|
1317
|
-
it "should construct proper SQL" do
|
1318
|
-
@db.drop_column :test, :name
|
1319
|
-
@db.sqls.must_equal ['ALTER TABLE test DROP COLUMN name']
|
1320
|
-
end
|
1321
|
-
|
1322
|
-
it "should use CASCADE for :cascade=>true option" do
|
1323
|
-
@db.drop_column :test, :name, :cascade=>true
|
1324
|
-
@db.sqls.must_equal ['ALTER TABLE test DROP COLUMN name CASCADE']
|
1325
|
-
end
|
1326
|
-
end
|
1327
|
-
|
1328
|
-
describe "Database#rename_column" do
|
1329
|
-
before do
|
1330
|
-
@db = Sequel.mock
|
1331
|
-
end
|
1332
|
-
|
1333
|
-
it "should construct proper SQL" do
|
1334
|
-
@db.rename_column :test, :abc, :def
|
1335
|
-
@db.sqls.must_equal ['ALTER TABLE test RENAME COLUMN abc TO def']
|
1336
|
-
end
|
1337
|
-
end
|
1338
|
-
|
1339
|
-
describe "Database#set_column_type" do
|
1340
|
-
before do
|
1341
|
-
@db = Sequel.mock
|
1342
|
-
end
|
1343
|
-
|
1344
|
-
it "should construct proper SQL" do
|
1345
|
-
@db.set_column_type :test, :name, :integer
|
1346
|
-
@db.sqls.must_equal ['ALTER TABLE test ALTER COLUMN name TYPE integer']
|
1347
|
-
end
|
1348
|
-
end
|
1349
|
-
|
1350
|
-
describe "Database#set_column_default" do
|
1351
|
-
before do
|
1352
|
-
@db = Sequel.mock
|
1353
|
-
end
|
1354
|
-
|
1355
|
-
it "should construct proper SQL" do
|
1356
|
-
@db.set_column_default :test, :name, 'zyx'
|
1357
|
-
@db.sqls.must_equal ["ALTER TABLE test ALTER COLUMN name SET DEFAULT 'zyx'"]
|
1358
|
-
end
|
1359
|
-
end
|
1360
|
-
|
1361
|
-
describe "Database#add_index" do
|
1362
|
-
before do
|
1363
|
-
@db = Sequel.mock
|
1364
|
-
end
|
1365
|
-
|
1366
|
-
it "should construct proper SQL" do
|
1367
|
-
@db.add_index :test, :name, :unique => true
|
1368
|
-
@db.sqls.must_equal ['CREATE UNIQUE INDEX test_name_index ON test (name)']
|
1369
|
-
end
|
1370
|
-
|
1371
|
-
it "should accept multiple columns" do
|
1372
|
-
@db.add_index :test, [:one, :two]
|
1373
|
-
@db.sqls.must_equal ['CREATE INDEX test_one_two_index ON test (one, two)']
|
1374
|
-
end
|
1375
|
-
end
|
1376
|
-
|
1377
|
-
describe "Database#drop_index" do
|
1378
|
-
before do
|
1379
|
-
@db = Sequel.mock
|
1380
|
-
end
|
1381
|
-
|
1382
|
-
it "should construct proper SQL" do
|
1383
|
-
@db.drop_index :test, :name
|
1384
|
-
@db.sqls.must_equal ['DROP INDEX test_name_index']
|
1385
|
-
end
|
1386
|
-
|
1387
|
-
end
|
1388
|
-
|
1389
|
-
describe "Database#drop_table" do
|
1390
|
-
before do
|
1391
|
-
@db = Sequel.mock
|
1392
|
-
end
|
1393
|
-
|
1394
|
-
it "should construct proper SQL" do
|
1395
|
-
@db.drop_table :test
|
1396
|
-
@db.sqls.must_equal ['DROP TABLE test']
|
1397
|
-
end
|
1398
|
-
|
1399
|
-
it "should accept multiple table names" do
|
1400
|
-
@db.drop_table :a, :bb, :ccc
|
1401
|
-
@db.sqls.must_equal ['DROP TABLE a', 'DROP TABLE bb', 'DROP TABLE ccc']
|
1402
|
-
end
|
1403
|
-
end
|
1404
|
-
|
1405
|
-
describe "Database#rename_table" do
|
1406
|
-
before do
|
1407
|
-
@db = Sequel.mock
|
1408
|
-
end
|
1409
|
-
|
1410
|
-
it "should construct proper SQL" do
|
1411
|
-
@db.rename_table :abc, :xyz
|
1412
|
-
@db.sqls.must_equal ['ALTER TABLE abc RENAME TO xyz']
|
1413
|
-
end
|
1414
|
-
end
|
1415
|
-
|
1416
|
-
describe "Database#create_view" do
|
1417
|
-
before do
|
1418
|
-
@db = Sequel.mock
|
1419
|
-
end
|
1420
|
-
|
1421
|
-
it "should construct proper SQL with raw SQL" do
|
1422
|
-
@db.create_view :test, "SELECT * FROM xyz"
|
1423
|
-
@db.sqls.must_equal ['CREATE VIEW test AS SELECT * FROM xyz']
|
1424
|
-
@db.create_view Sequel.identifier(:test), "SELECT * FROM xyz"
|
1425
|
-
@db.sqls.must_equal ['CREATE VIEW test AS SELECT * FROM xyz']
|
1426
|
-
end
|
1427
|
-
|
1428
|
-
it "should construct proper SQL with dataset" do
|
1429
|
-
@db.create_view :test, @db[:items].select(:a, :b).order(:c)
|
1430
|
-
@db.sqls.must_equal ['CREATE VIEW test AS SELECT a, b FROM items ORDER BY c']
|
1431
|
-
end
|
1432
|
-
|
1433
|
-
it "should handle :columns option" do
|
1434
|
-
@db.create_view :test, @db[:items].select(:a, :b).order(:c), :columns=>[:d, :e]
|
1435
|
-
@db.sqls.must_equal ['CREATE VIEW test (d, e) AS SELECT a, b FROM items ORDER BY c']
|
1436
|
-
@db.create_view :test, @db[:items].select(:a, :b).order(:c), :columns=>%w'd e'
|
1437
|
-
@db.sqls.must_equal ['CREATE VIEW test (d, e) AS SELECT a, b FROM items ORDER BY c']
|
1438
|
-
@db.create_view :test, @db[:items].select(:a, :b).order(:c), :columns=>[Sequel.identifier('d'), Sequel.lit('e')]
|
1439
|
-
@db.sqls.must_equal ['CREATE VIEW test (d, e) AS SELECT a, b FROM items ORDER BY c']
|
1440
|
-
end
|
1441
|
-
|
1442
|
-
it "should handle :check option" do
|
1443
|
-
@db.create_view :test, @db[:items].select(:a, :b).order(:c), :check=>true
|
1444
|
-
@db.sqls.must_equal ['CREATE VIEW test AS SELECT a, b FROM items ORDER BY c WITH CHECK OPTION']
|
1445
|
-
@db.create_view :test, @db[:items].select(:a, :b).order(:c), :check=>:local
|
1446
|
-
@db.sqls.must_equal ['CREATE VIEW test AS SELECT a, b FROM items ORDER BY c WITH LOCAL CHECK OPTION']
|
1447
|
-
end
|
1448
|
-
|
1449
|
-
it "should handle create_or_replace_view" do
|
1450
|
-
@db.create_or_replace_view :sch__test, "SELECT * FROM xyz"
|
1451
|
-
@db.sqls.must_equal ['DROP VIEW sch.test', 'CREATE VIEW sch.test AS SELECT * FROM xyz']
|
1452
|
-
@db.create_or_replace_view :test, @db[:items].select(:a, :b).order(:c)
|
1453
|
-
@db.sqls.must_equal ['DROP VIEW test', 'CREATE VIEW test AS SELECT a, b FROM items ORDER BY c']
|
1454
|
-
@db.create_or_replace_view Sequel.identifier(:test), @db[:items].select(:a, :b).order(:c)
|
1455
|
-
@db.sqls.must_equal ['DROP VIEW test', 'CREATE VIEW test AS SELECT a, b FROM items ORDER BY c']
|
1456
|
-
end
|
1457
|
-
|
1458
|
-
it "should use CREATE OR REPLACE VIEW if such syntax is supported" do
|
1459
|
-
def @db.supports_create_or_replace_view?() true end
|
1460
|
-
@db.create_or_replace_view :test, @db[:items]
|
1461
|
-
@db.sqls.must_equal ['CREATE OR REPLACE VIEW test AS SELECT * FROM items']
|
1462
|
-
end
|
1463
|
-
end
|
1464
|
-
|
1465
|
-
describe "Database#drop_view" do
|
1466
|
-
before do
|
1467
|
-
@db = Sequel.mock
|
1468
|
-
end
|
1469
|
-
|
1470
|
-
it "should construct proper SQL" do
|
1471
|
-
@db.drop_view :test
|
1472
|
-
@db.drop_view Sequel.identifier(:test)
|
1473
|
-
@db.drop_view :sch__test
|
1474
|
-
@db.drop_view Sequel.qualify(:sch, :test)
|
1475
|
-
@db.sqls.must_equal ['DROP VIEW test', 'DROP VIEW test', 'DROP VIEW sch.test', 'DROP VIEW sch.test']
|
1476
|
-
end
|
1477
|
-
|
1478
|
-
it "should drop multiple views at once" do
|
1479
|
-
@db.drop_view :cats, :dogs
|
1480
|
-
@db.sqls.must_equal ['DROP VIEW cats', 'DROP VIEW dogs']
|
1481
|
-
end
|
1482
|
-
|
1483
|
-
it "should support the :cascade option" do
|
1484
|
-
@db.drop_view :cats, :dogs, :cascade=>true
|
1485
|
-
@db.sqls.must_equal ['DROP VIEW cats CASCADE', 'DROP VIEW dogs CASCADE']
|
1486
|
-
end
|
1487
|
-
|
1488
|
-
it "should support the :if_exists option" do
|
1489
|
-
@db.drop_view :cats, :dogs, :if_exists=>true
|
1490
|
-
@db.sqls.must_equal ['DROP VIEW IF EXISTS cats', 'DROP VIEW IF EXISTS dogs']
|
1491
|
-
end
|
1492
|
-
end
|
1493
|
-
|
1494
|
-
describe "Database#alter_table_sql" do
|
1495
|
-
it "should raise error for an invalid op" do
|
1496
|
-
proc {Sequel.mock.send(:alter_table_sql, :mau, :op => :blah)}.must_raise(Sequel::Error)
|
1497
|
-
end
|
1498
|
-
end
|
1499
|
-
|
1500
|
-
describe "Schema Parser" do
|
1501
|
-
before do
|
1502
|
-
@sqls = []
|
1503
|
-
@db = Sequel::Database.new
|
1504
|
-
end
|
1505
|
-
|
1506
|
-
it "should raise an error if there are no columns" do
|
1507
|
-
meta_def(@db, :schema_parse_table) do |t, opts|
|
1508
|
-
[]
|
1509
|
-
end
|
1510
|
-
proc{@db.schema(:x)}.must_raise(Sequel::Error)
|
1511
|
-
end
|
1512
|
-
|
1513
|
-
it "should cache data by default" do
|
1514
|
-
meta_def(@db, :schema_parse_table) do |t, opts|
|
1515
|
-
[[:a, {}]]
|
1516
|
-
end
|
1517
|
-
@db.schema(:x).must_be_same_as(@db.schema(:x))
|
1518
|
-
end
|
1519
|
-
|
1520
|
-
it "should not cache data if :reload=>true is given" do
|
1521
|
-
meta_def(@db, :schema_parse_table) do |t, opts|
|
1522
|
-
[[:a, {}]]
|
1523
|
-
end
|
1524
|
-
@db.schema(:x).wont_be_same_as(@db.schema(:x, :reload=>true))
|
1525
|
-
end
|
1526
|
-
|
1527
|
-
it "should not cache schema metadata if cache_schema is false" do
|
1528
|
-
@db.cache_schema = false
|
1529
|
-
meta_def(@db, :schema_parse_table) do |t, opts|
|
1530
|
-
[[:a, {}]]
|
1531
|
-
end
|
1532
|
-
@db.schema(:x).wont_be_same_as(@db.schema(:x))
|
1533
|
-
end
|
1534
|
-
|
1535
|
-
it "should provide options if given a table name" do
|
1536
|
-
c = nil
|
1537
|
-
meta_def(@db, :schema_parse_table) do |t, opts|
|
1538
|
-
c = [t, opts]
|
1539
|
-
[[:a, {:db_type=>t.to_s}]]
|
1540
|
-
end
|
1541
|
-
@db.schema(:x)
|
1542
|
-
c.must_equal ["x", {}]
|
1543
|
-
@db.schema(:s__x)
|
1544
|
-
c.must_equal ["x", {:schema=>"s"}]
|
1545
|
-
ds = @db[:s__y]
|
1546
|
-
@db.schema(ds)
|
1547
|
-
c.must_equal ["y", {:schema=>"s", :dataset=>ds}]
|
1548
|
-
end
|
1549
|
-
|
1550
|
-
it "should parse the schema correctly for a single table" do
|
1551
|
-
sqls = @sqls
|
1552
|
-
proc{@db.schema(:x)}.must_raise(Sequel::Error)
|
1553
|
-
meta_def(@db, :schema_parse_table) do |t, opts|
|
1554
|
-
sqls << t
|
1555
|
-
[[:a, {:db_type=>t.to_s}]]
|
1556
|
-
end
|
1557
|
-
@db.schema(:x).must_equal [[:a, {:db_type=>"x", :ruby_default=>nil}]]
|
1558
|
-
@sqls.must_equal ['x']
|
1559
|
-
@db.schema(:x).must_equal [[:a, {:db_type=>"x", :ruby_default=>nil}]]
|
1560
|
-
@sqls.must_equal ['x']
|
1561
|
-
@db.schema(:x, :reload=>true).must_equal [[:a, {:db_type=>"x", :ruby_default=>nil}]]
|
1562
|
-
@sqls.must_equal ['x', 'x']
|
1563
|
-
end
|
1564
|
-
|
1565
|
-
it "should set :auto_increment to true by default if unset and a single integer primary key is used" do
|
1566
|
-
meta_def(@db, :schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'integer'}]]}
|
1567
|
-
@db.schema(:x).first.last[:auto_increment].must_equal true
|
1568
|
-
end
|
1569
|
-
|
1570
|
-
it "should not set :auto_increment if already set" do
|
1571
|
-
meta_def(@db, :schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'integer', :auto_increment=>false}]]}
|
1572
|
-
@db.schema(:x).first.last[:auto_increment].must_equal false
|
1573
|
-
end
|
1574
|
-
|
1575
|
-
it "should set :auto_increment to false by default if unset and a single nonintegery primary key is used" do
|
1576
|
-
meta_def(@db, :schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'varchar'}]]}
|
1577
|
-
@db.schema(:x).first.last[:auto_increment].must_equal false
|
1578
|
-
end
|
1579
|
-
|
1580
|
-
it "should set :auto_increment to false by default if unset and a composite primary key" do
|
1581
|
-
meta_def(@db, :schema_parse_table){|*| [[:a, {:primary_key=>true, :db_type=>'integer'}], [:b, {:primary_key=>true, :db_type=>'integer'}]]}
|
1582
|
-
@db.schema(:x).first.last[:auto_increment].must_equal false
|
1583
|
-
@db.schema(:x).last.last[:auto_increment].must_equal false
|
1584
|
-
end
|
1585
|
-
|
1586
|
-
it "should set :auto_increment to true by default if set and not the first column" do
|
1587
|
-
meta_def(@db, :schema_parse_table){|*| [[:b, {}], [:a, {:primary_key=>true, :db_type=>'integer'}]]}
|
1588
|
-
@db.schema(:x).last.last[:auto_increment].must_equal true
|
1589
|
-
end
|
1590
|
-
|
1591
|
-
it "should convert various types of table name arguments" do
|
1592
|
-
meta_def(@db, :schema_parse_table) do |t, opts|
|
1593
|
-
[[t, opts]]
|
1594
|
-
end
|
1595
|
-
s1 = @db.schema(:x)
|
1596
|
-
s1.must_equal [['x', {:ruby_default=>nil}]]
|
1597
|
-
@db.schema(:x).object_id.must_equal s1.object_id
|
1598
|
-
@db.schema(Sequel.identifier(:x)).object_id.must_equal s1.object_id
|
1599
|
-
|
1600
|
-
s2 = @db.schema(:x__y)
|
1601
|
-
s2.must_equal [['y', {:schema=>'x', :ruby_default=>nil}]]
|
1602
|
-
@db.schema(:x__y).object_id.must_equal s2.object_id
|
1603
|
-
@db.schema(Sequel.qualify(:x, :y)).object_id.must_equal s2.object_id
|
1604
|
-
|
1605
|
-
s2 = @db.schema(Sequel.qualify(:v, :x__y))
|
1606
|
-
s2.must_equal [['y', {:schema=>'x', :ruby_default=>nil, :information_schema_schema=>Sequel.identifier('v')}]]
|
1607
|
-
@db.schema(Sequel.qualify(:v, :x__y)).object_id.must_equal s2.object_id
|
1608
|
-
@db.schema(Sequel.qualify(:v__x, :y)).object_id.must_equal s2.object_id
|
1609
|
-
|
1610
|
-
s2 = @db.schema(Sequel.qualify(:u__v, :x__y))
|
1611
|
-
s2.must_equal [['y', {:schema=>'x', :ruby_default=>nil, :information_schema_schema=>Sequel.qualify('u', 'v')}]]
|
1612
|
-
@db.schema(Sequel.qualify(:u__v, :x__y)).object_id.must_equal s2.object_id
|
1613
|
-
@db.schema(Sequel.qualify(Sequel.qualify(:u, :v), Sequel.qualify(:x, :y))).object_id.must_equal s2.object_id
|
1614
|
-
end
|
1615
|
-
|
1616
|
-
it "should correctly parse all supported data types" do
|
1617
|
-
sm = Module.new do
|
1618
|
-
def schema_parse_table(t, opts)
|
1619
|
-
[[:x, {:db_type=>t.to_s, :type=>schema_column_type(t.to_s)}]]
|
1620
|
-
end
|
1621
|
-
end
|
1622
|
-
@db.extend(sm)
|
1623
|
-
@db.schema(:tinyint).first.last[:type].must_equal :integer
|
1624
|
-
@db.schema(:int).first.last[:type].must_equal :integer
|
1625
|
-
@db.schema(:integer).first.last[:type].must_equal :integer
|
1626
|
-
@db.schema(:bigint).first.last[:type].must_equal :integer
|
1627
|
-
@db.schema(:smallint).first.last[:type].must_equal :integer
|
1628
|
-
@db.schema(:character).first.last[:type].must_equal :string
|
1629
|
-
@db.schema(:"character varying").first.last[:type].must_equal :string
|
1630
|
-
@db.schema(:varchar).first.last[:type].must_equal :string
|
1631
|
-
@db.schema(:"varchar(255)").first.last[:type].must_equal :string
|
1632
|
-
@db.schema(:"varchar(255)").first.last[:max_length].must_equal 255
|
1633
|
-
@db.schema(:text).first.last[:type].must_equal :string
|
1634
|
-
@db.schema(:date).first.last[:type].must_equal :date
|
1635
|
-
@db.schema(:datetime).first.last[:type].must_equal :datetime
|
1636
|
-
@db.schema(:timestamp).first.last[:type].must_equal :datetime
|
1637
|
-
@db.schema(:"timestamp with time zone").first.last[:type].must_equal :datetime
|
1638
|
-
@db.schema(:"timestamp without time zone").first.last[:type].must_equal :datetime
|
1639
|
-
@db.schema(:time).first.last[:type].must_equal :time
|
1640
|
-
@db.schema(:"time with time zone").first.last[:type].must_equal :time
|
1641
|
-
@db.schema(:"time without time zone").first.last[:type].must_equal :time
|
1642
|
-
@db.schema(:boolean).first.last[:type].must_equal :boolean
|
1643
|
-
@db.schema(:real).first.last[:type].must_equal :float
|
1644
|
-
@db.schema(:float).first.last[:type].must_equal :float
|
1645
|
-
@db.schema(:double).first.last[:type].must_equal :float
|
1646
|
-
@db.schema(:"double(1,2)").first.last[:type].must_equal :float
|
1647
|
-
@db.schema(:"double precision").first.last[:type].must_equal :float
|
1648
|
-
@db.schema(:number).first.last[:type].must_equal :decimal
|
1649
|
-
@db.schema(:numeric).first.last[:type].must_equal :decimal
|
1650
|
-
@db.schema(:decimal).first.last[:type].must_equal :decimal
|
1651
|
-
@db.schema(:"number(10,0)").first.last[:type].must_equal :integer
|
1652
|
-
@db.schema(:"numeric(10, 10)").first.last[:type].must_equal :decimal
|
1653
|
-
@db.schema(:"decimal(10,1)").first.last[:type].must_equal :decimal
|
1654
|
-
@db.schema(:bytea).first.last[:type].must_equal :blob
|
1655
|
-
@db.schema(:blob).first.last[:type].must_equal :blob
|
1656
|
-
@db.schema(:image).first.last[:type].must_equal :blob
|
1657
|
-
@db.schema(:nchar).first.last[:type].must_equal :string
|
1658
|
-
@db.schema(:nvarchar).first.last[:type].must_equal :string
|
1659
|
-
@db.schema(:ntext).first.last[:type].must_equal :string
|
1660
|
-
@db.schema(:smalldatetime).first.last[:type].must_equal :datetime
|
1661
|
-
@db.schema(:binary).first.last[:type].must_equal :blob
|
1662
|
-
@db.schema(:varbinary).first.last[:type].must_equal :blob
|
1663
|
-
@db.schema(:enum).first.last[:type].must_equal :enum
|
1664
|
-
|
1665
|
-
@db = Sequel.mock(:host=>'postgres')
|
1666
|
-
@db.extend(sm)
|
1667
|
-
@db.schema(:interval).first.last[:type].must_equal :interval
|
1668
|
-
@db.schema(:citext).first.last[:type].must_equal :string
|
1669
|
-
|
1670
|
-
@db = Sequel.mock(:host=>'mysql')
|
1671
|
-
@db.extend(sm)
|
1672
|
-
@db.schema(:set).first.last[:type].must_equal :set
|
1673
|
-
@db.schema(:mediumint).first.last[:type].must_equal :integer
|
1674
|
-
@db.schema(:mediumtext).first.last[:type].must_equal :string
|
1675
|
-
end
|
1676
|
-
end
|