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