sequel 4.49.0 → 5.3.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 +130 -0
- data/README.rdoc +195 -136
- data/Rakefile +26 -42
- data/bin/sequel +6 -9
- data/doc/advanced_associations.rdoc +91 -168
- 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/release_notes/5.1.0.txt +31 -0
- data/doc/release_notes/5.2.0.txt +33 -0
- data/doc/release_notes/5.3.0.txt +121 -0
- data/doc/schema_modification.rdoc +78 -64
- data/doc/security.rdoc +97 -88
- data/doc/sharding.rdoc +43 -30
- data/doc/sql.rdoc +53 -65
- data/doc/testing.rdoc +4 -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/adapters/ado/access.rb +7 -13
- data/lib/sequel/adapters/ado/mssql.rb +2 -9
- data/lib/sequel/adapters/ado.rb +9 -25
- data/lib/sequel/adapters/amalgalite.rb +3 -18
- data/lib/sequel/adapters/ibmdb.rb +9 -45
- 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 +6 -26
- data/lib/sequel/adapters/jdbc/hsqldb.rb +2 -27
- 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 +11 -15
- data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
- data/lib/sequel/adapters/jdbc/postgresql.rb +23 -33
- 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/jdbc.rb +18 -74
- 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/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/odbc.rb +0 -19
- data/lib/sequel/adapters/oracle.rb +8 -13
- data/lib/sequel/adapters/postgres.rb +28 -150
- 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 +61 -227
- data/lib/sequel/adapters/shared/oracle.rb +13 -41
- data/lib/sequel/adapters/shared/postgres.rb +58 -264
- data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
- data/lib/sequel/adapters/shared/sqlite.rb +22 -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 +4 -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/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/connection_pool.rb +38 -28
- data/lib/sequel/core.rb +42 -101
- 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 +36 -55
- data/lib/sequel/database/query.rb +8 -13
- data/lib/sequel/database/schema_generator.rb +93 -64
- data/lib/sequel/database/schema_methods.rb +61 -79
- data/lib/sequel/database/transactions.rb +4 -24
- data/lib/sequel/database.rb +12 -2
- data/lib/sequel/dataset/actions.rb +57 -107
- data/lib/sequel/dataset/dataset_module.rb +4 -16
- data/lib/sequel/dataset/features.rb +35 -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 +91 -161
- data/lib/sequel/dataset/sql.rb +33 -225
- data/lib/sequel/dataset.rb +18 -10
- 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 +27 -43
- 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_extended_date_support.rb +230 -0
- 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 +3 -16
- 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/extensions/synchronize_sql.rb +45 -0
- data/lib/sequel/model/associations.rb +129 -131
- data/lib/sequel/model/base.rb +133 -731
- 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/model.rb +27 -62
- 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 -23
- data/lib/sequel/version.rb +2 -2
- data/lib/sequel.rb +1 -1
- 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 +111 -478
- data/spec/adapters/oracle_spec.rb +1 -9
- data/spec/adapters/postgres_spec.rb +459 -664
- 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 +96 -244
- data/spec/core/dataset_spec.rb +99 -414
- data/spec/core/deprecated_spec.rb +3 -3
- data/spec/core/expression_filters_spec.rb +37 -144
- data/spec/core/mock_adapter_spec.rb +241 -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 +88 -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 +30 -92
- 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 +53 -1118
- 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 +8 -30
- 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 +5 -6
- data/spec/extensions/looser_typecasting_spec.rb +1 -1
- data/spec/extensions/many_through_many_spec.rb +25 -33
- data/spec/extensions/migration_spec.rb +12 -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 +2 -2
- data/spec/extensions/pagination_spec.rb +1 -1
- data/spec/extensions/pg_array_associations_spec.rb +22 -26
- 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_extended_date_support_spec.rb +122 -0
- data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
- data/spec/extensions/pg_hstore_spec.rb +22 -31
- 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 +7 -7
- data/spec/extensions/prepared_statements_spec.rb +13 -48
- data/spec/extensions/pretty_table_spec.rb +40 -9
- data/spec/extensions/query_spec.rb +1 -12
- data/spec/extensions/rcte_tree_spec.rb +23 -34
- 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 +43 -32
- 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 +5 -17
- 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/synchronize_sql_spec.rb +124 -0
- 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 +5 -7
- 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 +12 -16
- 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 -13
- 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 +8 -13
- 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 +12 -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 +7 -23
- data/spec/integration/prepared_statement_test.rb +8 -88
- data/spec/integration/schema_test.rb +10 -10
- data/spec/integration/spec_helper.rb +17 -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 +43 -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 +48 -17
- data/spec/model/hooks_spec.rb +5 -300
- data/spec/model/inflector_spec.rb +1 -1
- data/spec/model/model_spec.rb +29 -339
- data/spec/model/plugins_spec.rb +2 -16
- data/spec/model/record_spec.rb +33 -129
- data/spec/model/spec_helper.rb +5 -15
- data/spec/model/validations_spec.rb +1 -1
- data/spec/sequel_warning.rb +1 -12
- metadata +19 -65
- data/doc/active_record.rdoc +0 -927
- data/lib/sequel/adapters/cubrid.rb +0 -160
- 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/do.rb +0 -166
- 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/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/swift.rb +0 -169
- 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 "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], [:jdbc, :mysql], [: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], [:jdbc, :mysql] 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
|
|
@@ -129,7 +129,7 @@ describe "Database schema parser" do
|
|
|
129
129
|
DB.schema(:items).first.last[:ruby_default].must_equal Sequel::CURRENT_TIMESTAMP
|
|
130
130
|
end
|
|
131
131
|
|
|
132
|
-
cspecify "should parse current date defaults from the schema properly", :mysql, :oracle do
|
|
132
|
+
cspecify "should parse current date defaults from the schema properly", [proc{|db| !db.mariadb? || db.server_version <= 100200}, :mysql], :oracle do
|
|
133
133
|
DB.create_table!(:items){Date :a, :default=>Sequel::CURRENT_DATE}
|
|
134
134
|
DB.schema(:items).first.last[:ruby_default].must_equal Sequel::CURRENT_DATE
|
|
135
135
|
end
|
|
@@ -215,7 +215,7 @@ describe "Database index parsing" do
|
|
|
215
215
|
DB.indexes(:items).must_equal({})
|
|
216
216
|
end
|
|
217
217
|
|
|
218
|
-
|
|
218
|
+
cspecify "should not include partial indexes", [proc{|db| db.sqlite_version < 30808}, :sqlite] do
|
|
219
219
|
DB.create_table!(:items){Integer :n; Integer :a; index :n, :where=>proc{n > 10}}
|
|
220
220
|
DB.indexes(:items).must_equal({})
|
|
221
221
|
end if DB.supports_partial_indexes?
|
|
@@ -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,19 +760,19 @@ 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
|
|
767
767
|
String :number2
|
|
768
|
-
constraint :bar, Sequel.~(:
|
|
768
|
+
constraint :bar, Sequel.~(:number2=>nil, :name2=>nil)
|
|
769
769
|
end
|
|
770
770
|
@ds.insert(:name2=>'A12')
|
|
771
771
|
@db.alter_table(:items) do
|
|
772
772
|
add_column :number, Integer
|
|
773
|
+
drop_constraint :bar
|
|
773
774
|
drop_column :number2
|
|
774
775
|
rename_column :name2, :name
|
|
775
|
-
drop_constraint :bar
|
|
776
776
|
set_column_not_null :name
|
|
777
777
|
set_column_default :name, 'A13'
|
|
778
778
|
add_constraint :foo, Sequel.like(:name, 'A%')
|
|
@@ -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,14 +38,14 @@ 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
|
|
54
44
|
|
|
45
|
+
if ENV['SEQUEL_SYNCHRONIZE_SQL']
|
|
46
|
+
DB.extension :synchronize_sql
|
|
47
|
+
end
|
|
48
|
+
|
|
55
49
|
if ENV['SEQUEL_CONNECTION_VALIDATOR']
|
|
56
50
|
ENV['SEQUEL_NO_CHECK_SQLS'] = '1'
|
|
57
51
|
DB.extension(:connection_validator)
|
|
@@ -68,3 +62,5 @@ if ENV['SEQUEL_FREEZE_DATABASE']
|
|
|
68
62
|
DB.extension(:pg_array) if DB.database_type == :postgres
|
|
69
63
|
DB.freeze
|
|
70
64
|
end
|
|
65
|
+
|
|
66
|
+
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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
require_relative "spec_helper"
|
|
2
2
|
|
|
3
3
|
describe "Database transactions" do
|
|
4
4
|
before(:all) do
|
|
@@ -192,7 +192,6 @@ describe "Database transactions" do
|
|
|
192
192
|
c = Class.new(Sequel::Model(@d))
|
|
193
193
|
c.set_primary_key :name
|
|
194
194
|
c.unrestrict_primary_key
|
|
195
|
-
c.use_after_commit_rollback = false
|
|
196
195
|
@db.transaction(:prepare=>'XYZ'){c.create(:name => '1'); c.create(:name => '2').destroy}
|
|
197
196
|
@db.commit_prepared_transaction('XYZ')
|
|
198
197
|
@d.select_order_map(:name).must_equal ['1']
|
|
@@ -315,57 +314,6 @@ describe "Database transactions" do
|
|
|
315
314
|
end
|
|
316
315
|
end
|
|
317
316
|
|
|
318
|
-
if (! defined?(RUBY_ENGINE) or RUBY_ENGINE == 'ruby') and RUBY_VERSION < '1.9'
|
|
319
|
-
describe "Database transactions and Thread#kill" do
|
|
320
|
-
before do
|
|
321
|
-
@db = DB
|
|
322
|
-
@db.create_table!(:items, :engine=>'InnoDB'){String :name; Integer :value}
|
|
323
|
-
@d = @db[:items]
|
|
324
|
-
end
|
|
325
|
-
after do
|
|
326
|
-
@db.drop_table?(:items)
|
|
327
|
-
end
|
|
328
|
-
|
|
329
|
-
it "should handle transactions inside threads" do
|
|
330
|
-
q = Queue.new
|
|
331
|
-
q1 = Queue.new
|
|
332
|
-
t = Thread.new do
|
|
333
|
-
@db.transaction do
|
|
334
|
-
@d.insert(:name => 'abc', :value => 1)
|
|
335
|
-
q1.push nil
|
|
336
|
-
q.pop
|
|
337
|
-
@d.insert(:name => 'def', :value => 2)
|
|
338
|
-
end
|
|
339
|
-
end
|
|
340
|
-
q1.pop
|
|
341
|
-
t.kill
|
|
342
|
-
@d.count.must_equal 0
|
|
343
|
-
end
|
|
344
|
-
|
|
345
|
-
if DB.supports_savepoints?
|
|
346
|
-
it "should handle transactions with savepoints inside threads" do
|
|
347
|
-
q = Queue.new
|
|
348
|
-
q1 = Queue.new
|
|
349
|
-
t = Thread.new do
|
|
350
|
-
@db.transaction do
|
|
351
|
-
@d.insert(:name => 'abc', :value => 1)
|
|
352
|
-
@db.transaction(:savepoint=>true) do
|
|
353
|
-
@d.insert(:name => 'def', :value => 2)
|
|
354
|
-
q1.push nil
|
|
355
|
-
q.pop
|
|
356
|
-
@d.insert(:name => 'ghi', :value => 3)
|
|
357
|
-
end
|
|
358
|
-
@d.insert(:name => 'jkl', :value => 4)
|
|
359
|
-
end
|
|
360
|
-
end
|
|
361
|
-
q1.pop
|
|
362
|
-
t.kill
|
|
363
|
-
@d.count.must_equal 0
|
|
364
|
-
end
|
|
365
|
-
end
|
|
366
|
-
end
|
|
367
|
-
end
|
|
368
|
-
|
|
369
317
|
describe "Database transaction retrying" do
|
|
370
318
|
before(:all) do
|
|
371
319
|
@db = DB
|
|
@@ -379,7 +327,7 @@ describe "Database transaction retrying" do
|
|
|
379
327
|
@db.drop_table?(:items)
|
|
380
328
|
end
|
|
381
329
|
|
|
382
|
-
|
|
330
|
+
it "should be supported using the :retry_on option" do
|
|
383
331
|
@d.insert('b')
|
|
384
332
|
@d.insert('c')
|
|
385
333
|
s = 'a'
|
|
@@ -390,7 +338,7 @@ describe "Database transaction retrying" do
|
|
|
390
338
|
@d.select_order_map(:a).must_equal %w'b c d'
|
|
391
339
|
end
|
|
392
340
|
|
|
393
|
-
|
|
341
|
+
it "should limit number of retries via the :num_retries option" do
|
|
394
342
|
@d.insert('b')
|
|
395
343
|
@d.insert('c')
|
|
396
344
|
s = 'a'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
require_relative "spec_helper"
|
|
2
2
|
|
|
3
3
|
describe "Supported types" do
|
|
4
4
|
def create_items_table_with_column(name, type, opts={})
|
|
@@ -37,13 +37,13 @@ describe "Supported types" do
|
|
|
37
37
|
ds.all.must_equal [{:number=>2**34}]
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
it "should support generic float type" do
|
|
41
41
|
ds = create_items_table_with_column(:number, Float)
|
|
42
42
|
ds.insert(:number => 2.1)
|
|
43
43
|
ds.all.must_equal [{:number=>2.1}]
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
cspecify "should support generic numeric type", [:odbc, :mssql]
|
|
46
|
+
cspecify "should support generic numeric type", [:odbc, :mssql] do
|
|
47
47
|
ds = create_items_table_with_column(:number, Numeric, :size=>[15, 10])
|
|
48
48
|
ds.insert(:number => BigDecimal.new('2.123456789'))
|
|
49
49
|
ds.all.must_equal [{:number=>BigDecimal.new('2.123456789')}]
|
|
@@ -67,7 +67,7 @@ describe "Supported types" do
|
|
|
67
67
|
ds.all.must_equal [{:name=>'Test User'*100}]
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
-
cspecify "should support generic date type", [:
|
|
70
|
+
cspecify "should support generic date type", [:jdbc, :sqlite], [:tinytds], [:jdbc, :mssql], :oracle do
|
|
71
71
|
ds = create_items_table_with_column(:dat, Date)
|
|
72
72
|
d = Date.today
|
|
73
73
|
ds.insert(:dat => d)
|
|
@@ -75,7 +75,7 @@ describe "Supported types" do
|
|
|
75
75
|
ds.first[:dat].to_s.must_equal d.to_s
|
|
76
76
|
end
|
|
77
77
|
|
|
78
|
-
cspecify "should support generic time type", [:
|
|
78
|
+
cspecify "should support generic time type", [:odbc], [:jdbc, :mssql], [:jdbc, :sqlite], [:mysql2], [:tinytds], :oracle, [:ado] do
|
|
79
79
|
ds = create_items_table_with_column(:tim, Time, :only_time=>true)
|
|
80
80
|
t = Sequel::SQLTime.now
|
|
81
81
|
ds.insert(:tim => t)
|
|
@@ -89,7 +89,7 @@ describe "Supported types" do
|
|
|
89
89
|
v2.must_be_kind_of(Sequel::SQLTime)
|
|
90
90
|
end
|
|
91
91
|
|
|
92
|
-
cspecify "should support generic datetime type", [:
|
|
92
|
+
cspecify "should support generic datetime type", [:jdbc, :sqlite] do
|
|
93
93
|
ds = create_items_table_with_column(:tim, DateTime)
|
|
94
94
|
t = DateTime.now
|
|
95
95
|
ds.insert(:tim => t)
|
|
@@ -100,14 +100,14 @@ describe "Supported types" do
|
|
|
100
100
|
ds.first[:tim].strftime('%Y%m%d%H%M%S').must_equal t.strftime('%Y%m%d%H%M%S')
|
|
101
101
|
end
|
|
102
102
|
|
|
103
|
-
cspecify "should support generic file type", [:
|
|
103
|
+
cspecify "should support generic file type", [:odbc, :mssql], [:mysql2], [:tinytds] do
|
|
104
104
|
ds = create_items_table_with_column(:name, File)
|
|
105
105
|
ds.insert(:name =>Sequel.blob("a\0"*300))
|
|
106
106
|
ds.all.must_equal [{:name=>Sequel.blob("a\0"*300)}]
|
|
107
107
|
ds.first[:name].must_be_kind_of(::Sequel::SQL::Blob)
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
cspecify "should support generic boolean type", [:
|
|
110
|
+
cspecify "should support generic boolean type", [:jdbc, :sqlite], [:jdbc, :db2], :oracle do
|
|
111
111
|
ds = create_items_table_with_column(:number, TrueClass)
|
|
112
112
|
ds.insert(:number => true)
|
|
113
113
|
ds.all.must_equal [{:number=>true}]
|
|
@@ -116,7 +116,7 @@ describe "Supported types" do
|
|
|
116
116
|
ds.all.must_equal [{:number=>true}]
|
|
117
117
|
end
|
|
118
118
|
|
|
119
|
-
cspecify "should support generic boolean type with defaults", [:
|
|
119
|
+
cspecify "should support generic boolean type with defaults", [:jdbc, :sqlite], [:jdbc, :db2], :oracle do
|
|
120
120
|
ds = create_items_table_with_column(:number, TrueClass, :default=>true)
|
|
121
121
|
ds.insert
|
|
122
122
|
ds.all.must_equal [{:number=>true}]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
require_relative "spec_helper"
|
|
2
2
|
|
|
3
3
|
describe Sequel::Model::Associations::AssociationReflection, "#associated_class" do
|
|
4
4
|
before do
|
|
@@ -15,14 +15,34 @@ describe Sequel::Model::Associations::AssociationReflection, "#associated_class"
|
|
|
15
15
|
@c.association_reflection(:c).associated_class.must_equal ParParent
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
+
it "should use the :class value if present" do
|
|
19
|
+
@c.many_to_one :c, :class=>@c
|
|
20
|
+
@c.one_to_many :cs, :class=>@c
|
|
21
|
+
c = @c.association_reflection(:c)
|
|
22
|
+
cs = @c.association_reflection(:cs)
|
|
23
|
+
|
|
24
|
+
c.association_method.must_equal :c
|
|
25
|
+
c.dataset_method.must_equal :c_dataset
|
|
26
|
+
c.setter_method.must_equal :c=
|
|
27
|
+
c._setter_method.must_equal :_c=
|
|
28
|
+
|
|
29
|
+
cs.association_method.must_equal :cs
|
|
30
|
+
cs.dataset_method.must_equal :cs_dataset
|
|
31
|
+
cs.add_method.must_equal :add_c
|
|
32
|
+
cs._add_method.must_equal :_add_c
|
|
33
|
+
cs.remove_method.must_equal :remove_c
|
|
34
|
+
cs._remove_method.must_equal :_remove_c
|
|
35
|
+
cs.remove_all_method.must_equal :remove_all_cs
|
|
36
|
+
cs._remove_all_method.must_equal :_remove_all_cs
|
|
37
|
+
end
|
|
38
|
+
|
|
18
39
|
it "should have inspect include association class and representation of association definition " do
|
|
19
40
|
ParParent.many_to_one :c
|
|
20
41
|
ParParent.association_reflection(:c).inspect.must_equal "#<Sequel::Model::Associations::ManyToOneAssociationReflection ParParent.many_to_one :c>"
|
|
21
42
|
ParParent.many_to_one :c, :class=>ParParent
|
|
22
43
|
ParParent.association_reflection(:c).inspect.must_equal "#<Sequel::Model::Associations::ManyToOneAssociationReflection ParParent.many_to_one :c, :class=>ParParent>"
|
|
23
44
|
ParParent.many_to_one :c, :class=>ParParent, :key=>:c_id
|
|
24
|
-
|
|
25
|
-
"#<Sequel::Model::Associations::ManyToOneAssociationReflection ParParent.many_to_one :c, :class=>ParParent, :key=>:c_id>"].must_include ParParent.association_reflection(:c).inspect
|
|
45
|
+
ParParent.association_reflection(:c).inspect.must_equal "#<Sequel::Model::Associations::ManyToOneAssociationReflection ParParent.many_to_one :c, :key=>:c_id, :class=>ParParent>"
|
|
26
46
|
|
|
27
47
|
@c.one_to_many :foos do |ds| ds end
|
|
28
48
|
@c.association_reflection(:foos).inspect.must_equal "#<Sequel::Model::Associations::OneToManyAssociationReflection #{@c.to_s}.one_to_many :foos, :block=>#{@c.association_reflection(:foos)[:block].inspect}>"
|
|
@@ -286,11 +306,6 @@ describe Sequel::Model::Associations::AssociationReflection do
|
|
|
286
306
|
def @c.name() "C" end
|
|
287
307
|
end
|
|
288
308
|
|
|
289
|
-
deprecated "#eager_loading_predicate_key should be an alias of predicate_key for backwards compatibility" do
|
|
290
|
-
@c.one_to_many :cs, :class=>@c
|
|
291
|
-
@c.dataset.literal(@c.association_reflection(:cs).eager_loading_predicate_key).must_equal 'foo.c_id'
|
|
292
|
-
end
|
|
293
|
-
|
|
294
309
|
it "one_to_many #qualified_primary_key should be a qualified version of the primary key" do
|
|
295
310
|
@c.one_to_many :cs, :class=>@c
|
|
296
311
|
@c.dataset.literal(@c.association_reflection(:cs).qualified_primary_key).must_equal 'foo.id'
|
|
@@ -516,7 +531,7 @@ describe Sequel::Model, " association reflection methods" do
|
|
|
516
531
|
c.associate :many_to_one, :parent2, :class => @c1
|
|
517
532
|
@c1.associations.must_equal [:parent]
|
|
518
533
|
c.associations.sort_by{|x| x.to_s}.must_equal [:parent, :parent2]
|
|
519
|
-
c.instance_methods.
|
|
534
|
+
c.instance_methods.must_include(:parent)
|
|
520
535
|
end
|
|
521
536
|
end
|
|
522
537
|
|