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
data/spec/model/hooks_spec.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
require_relative "spec_helper"
|
|
2
2
|
|
|
3
3
|
describe "Model#before_create && Model#after_create" do
|
|
4
4
|
before do
|
|
@@ -17,14 +17,7 @@ describe "Model#before_create && Model#after_create" do
|
|
|
17
17
|
it "should be called around new record creation" do
|
|
18
18
|
@c.send(:define_method, :before_create){DB << "BLAH before"}
|
|
19
19
|
@c.create(:x => 2)
|
|
20
|
-
DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', '
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
deprecated ".create should cancel the save and raise an error if before_create returns false and raise_on_save_failure is true" do
|
|
24
|
-
@c.send(:define_method, :before_create){false}
|
|
25
|
-
proc{@c.create(:x => 2)}.must_raise(Sequel::HookFailed)
|
|
26
|
-
DB.sqls.must_equal []
|
|
27
|
-
@c.load(:id => 2233).save
|
|
20
|
+
DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'SELECT * FROM items WHERE x = 2', 'BLAH after']
|
|
28
21
|
end
|
|
29
22
|
|
|
30
23
|
it ".create should cancel the save and raise an error if before_create calls cancel_action and raise_on_save_failure is true" do
|
|
@@ -34,13 +27,6 @@ describe "Model#before_create && Model#after_create" do
|
|
|
34
27
|
@c.load(:id => 2233).save
|
|
35
28
|
end
|
|
36
29
|
|
|
37
|
-
deprecated ".create should cancel the save and return nil if before_create returns false and raise_on_save_failure is false" do
|
|
38
|
-
@c.send(:define_method, :before_create){false}
|
|
39
|
-
@c.raise_on_save_failure = false
|
|
40
|
-
@c.create(:x => 2).must_be_nil
|
|
41
|
-
DB.sqls.must_equal []
|
|
42
|
-
end
|
|
43
|
-
|
|
44
30
|
it ".create should cancel the save and return nil if before_create calls cancel_action and raise_on_save_failure is false" do
|
|
45
31
|
@c.send(:define_method, :before_create){cancel_action}
|
|
46
32
|
@c.raise_on_save_failure = false
|
|
@@ -67,32 +53,12 @@ describe "Model#before_update && Model#after_update" do
|
|
|
67
53
|
DB.sqls.must_equal ['BLAH before', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'BLAH after']
|
|
68
54
|
end
|
|
69
55
|
|
|
70
|
-
deprecated "#save should cancel the save and raise an error if before_update returns false and raise_on_save_failure is true" do
|
|
71
|
-
@c.send(:define_method, :before_update){false}
|
|
72
|
-
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
|
73
|
-
DB.sqls.must_equal []
|
|
74
|
-
end
|
|
75
|
-
|
|
76
56
|
it "#save should cancel the save and raise an error if before_update calls cancel_action and raise_on_save_failure is true" do
|
|
77
57
|
@c.send(:define_method, :before_update){cancel_action}
|
|
78
58
|
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
|
79
59
|
DB.sqls.must_equal []
|
|
80
60
|
end
|
|
81
61
|
|
|
82
|
-
deprecated "#save should cancel the save and raise an error if before_update returns false and raise_on_failure option is true" do
|
|
83
|
-
@c.send(:define_method, :before_update){false}
|
|
84
|
-
@c.raise_on_save_failure = false
|
|
85
|
-
proc{@c.load(:id => 2233).save(:raise_on_failure => true)}.must_raise(Sequel::HookFailed)
|
|
86
|
-
DB.sqls.must_equal []
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
deprecated "#save should cancel the save and return nil if before_update returns false and raise_on_save_failure is false" do
|
|
90
|
-
@c.send(:define_method, :before_update){false}
|
|
91
|
-
@c.raise_on_save_failure = false
|
|
92
|
-
@c.load(:id => 2233).save.must_be_nil
|
|
93
|
-
DB.sqls.must_equal []
|
|
94
|
-
end
|
|
95
|
-
|
|
96
62
|
it "#save should cancel the save and return nil if before_update calls cancel_action and raise_on_save_failure is false" do
|
|
97
63
|
@c.send(:define_method, :before_update){cancel_action}
|
|
98
64
|
@c.raise_on_save_failure = false
|
|
@@ -124,20 +90,7 @@ describe "Model#before_save && Model#after_save" do
|
|
|
124
90
|
@c.set_primary_key :x
|
|
125
91
|
@c.unrestrict_primary_key
|
|
126
92
|
@c.create(:x => 2)
|
|
127
|
-
DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', '
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
deprecated "#save should cancel the save and raise an error if before_save returns false and raise_on_save_failure is true" do
|
|
131
|
-
@c.send(:define_method, :before_save){false}
|
|
132
|
-
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
|
133
|
-
DB.sqls.must_equal []
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
deprecated "#save should cancel the save and raise an error if before_save returns false and raise_on_failure option is true" do
|
|
137
|
-
@c.send(:define_method, :before_save){false}
|
|
138
|
-
@c.raise_on_save_failure = false
|
|
139
|
-
proc{@c.load(:id => 2233).save(:raise_on_failure => true)}.must_raise(Sequel::HookFailed)
|
|
140
|
-
DB.sqls.must_equal []
|
|
93
|
+
DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'SELECT * FROM items WHERE x = 2', 'BLAH after']
|
|
141
94
|
end
|
|
142
95
|
|
|
143
96
|
it "#save should cancel the save and raise an error if before_save calls cancel_action and raise_on_failure option is true" do
|
|
@@ -147,13 +100,6 @@ describe "Model#before_save && Model#after_save" do
|
|
|
147
100
|
DB.sqls.must_equal []
|
|
148
101
|
end
|
|
149
102
|
|
|
150
|
-
deprecated "#save should cancel the save and return nil if before_save returns false and raise_on_save_failure is false" do
|
|
151
|
-
@c.send(:define_method, :before_save){false}
|
|
152
|
-
@c.raise_on_save_failure = false
|
|
153
|
-
@c.load(:id => 2233).save.must_be_nil
|
|
154
|
-
DB.sqls.must_equal []
|
|
155
|
-
end
|
|
156
|
-
|
|
157
103
|
it "#save should cancel the save and return nil if before_save calls cancel_action and raise_on_save_failure is false" do
|
|
158
104
|
@c.send(:define_method, :before_save){cancel_action}
|
|
159
105
|
@c.raise_on_save_failure = false
|
|
@@ -185,32 +131,12 @@ describe "Model#before_destroy && Model#after_destroy" do
|
|
|
185
131
|
DB.sqls.must_equal ['BLAH before', 'DELETE FROM items WHERE id = 2233', 'BLAH after']
|
|
186
132
|
end
|
|
187
133
|
|
|
188
|
-
deprecated "#destroy should cancel the destroy and raise an error if before_destroy returns false and raise_on_save_failure is true" do
|
|
189
|
-
@c.send(:define_method, :before_destroy){false}
|
|
190
|
-
proc{@c.load(:id => 2233).destroy}.must_raise(Sequel::HookFailed)
|
|
191
|
-
DB.sqls.must_equal []
|
|
192
|
-
end
|
|
193
|
-
|
|
194
134
|
it "#destroy should cancel the destroy and raise an error if before_destroy calls cancel_action and raise_on_save_failure is true" do
|
|
195
135
|
@c.send(:define_method, :before_destroy){cancel_action; true}
|
|
196
136
|
proc{@c.load(:id => 2233).destroy}.must_raise(Sequel::HookFailed)
|
|
197
137
|
DB.sqls.must_equal []
|
|
198
138
|
end
|
|
199
139
|
|
|
200
|
-
deprecated "#destroy should cancel the destroy and raise an error if before_destroy returns false and raise_on_failure option is true" do
|
|
201
|
-
@c.send(:define_method, :before_destroy){false}
|
|
202
|
-
@c.raise_on_save_failure = false
|
|
203
|
-
proc{@c.load(:id => 2233).destroy(:raise_on_failure => true)}.must_raise(Sequel::HookFailed)
|
|
204
|
-
DB.sqls.must_equal []
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
deprecated "#destroy should cancel the destroy and return nil if before_destroy returns false and raise_on_save_failure is false" do
|
|
208
|
-
@c.send(:define_method, :before_destroy){false}
|
|
209
|
-
@c.raise_on_save_failure = false
|
|
210
|
-
@c.load(:id => 2233).destroy.must_be_nil
|
|
211
|
-
DB.sqls.must_equal []
|
|
212
|
-
end
|
|
213
|
-
|
|
214
140
|
it "#destroy should cancel the destroy and return nil if before_destroy calls cancel_action and raise_on_save_failure is false" do
|
|
215
141
|
@c.send(:define_method, :before_destroy){cancel_action; true}
|
|
216
142
|
@c.raise_on_save_failure = false
|
|
@@ -257,32 +183,12 @@ describe "Model#before_validation && Model#after_validation" do
|
|
|
257
183
|
DB.sqls.must_equal ['BLAH before', 'BLAH after']
|
|
258
184
|
end
|
|
259
185
|
|
|
260
|
-
deprecated "#save should cancel the save and raise an error if before_validation returns false and raise_on_save_failure is true" do
|
|
261
|
-
@c.send(:define_method, :before_validation){false}
|
|
262
|
-
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
|
263
|
-
DB.sqls.must_equal []
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
deprecated "#save should cancel the save and raise an error if before_validation returns false and raise_on_failure option is true" do
|
|
267
|
-
@c.send(:define_method, :before_validation){false}
|
|
268
|
-
@c.raise_on_save_failure = false
|
|
269
|
-
proc{@c.load(:id => 2233).save(:raise_on_failure => true)}.must_raise(Sequel::HookFailed)
|
|
270
|
-
DB.sqls.must_equal []
|
|
271
|
-
end
|
|
272
|
-
|
|
273
186
|
it "#save should cancel the save and raise an error if before_validation calls cancel_action and raise_on_save_failure is true" do
|
|
274
187
|
@c.send(:define_method, :before_validation){cancel_action}
|
|
275
188
|
proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
|
|
276
189
|
DB.sqls.must_equal []
|
|
277
190
|
end
|
|
278
191
|
|
|
279
|
-
deprecated "#save should cancel the save and return nil if before_validation returns false and raise_on_save_failure is false" do
|
|
280
|
-
@c.send(:define_method, :before_validation){false}
|
|
281
|
-
@c.raise_on_save_failure = false
|
|
282
|
-
@c.load(:id => 2233).save.must_be_nil
|
|
283
|
-
DB.sqls.must_equal []
|
|
284
|
-
end
|
|
285
|
-
|
|
286
192
|
it "#save should cancel the save and return nil if before_validation calls cancel_action and raise_on_save_failure is false" do
|
|
287
193
|
@c.send(:define_method, :before_validation){cancel_action}
|
|
288
194
|
@c.raise_on_save_failure = false
|
|
@@ -294,11 +200,6 @@ describe "Model#before_validation && Model#after_validation" do
|
|
|
294
200
|
@c.send(:define_method, :before_validation){cancel_action}
|
|
295
201
|
@c.load(:id => 2233).valid?.must_equal false
|
|
296
202
|
end
|
|
297
|
-
|
|
298
|
-
deprecated "#valid? should return false if before_validation returns false" do
|
|
299
|
-
@c.send(:define_method, :before_validation){false}
|
|
300
|
-
@c.load(:id => 2233).valid?.must_equal false
|
|
301
|
-
end
|
|
302
203
|
end
|
|
303
204
|
|
|
304
205
|
describe "Model around filters" do
|
|
@@ -318,7 +219,7 @@ describe "Model around filters" do
|
|
|
318
219
|
end
|
|
319
220
|
end
|
|
320
221
|
@c.create(:x => 2)
|
|
321
|
-
DB.sqls.must_equal ['ac_before', 'INSERT INTO items (x) VALUES (2)',
|
|
222
|
+
DB.sqls.must_equal ['ac_before', 'INSERT INTO items (x) VALUES (2)', "SELECT * FROM items WHERE id = 10", 'ac_after']
|
|
322
223
|
end
|
|
323
224
|
|
|
324
225
|
it "around_delete should be called around record destruction" do
|
|
@@ -364,7 +265,7 @@ describe "Model around filters" do
|
|
|
364
265
|
end
|
|
365
266
|
end
|
|
366
267
|
@c.create(:x => 2)
|
|
367
|
-
DB.sqls.must_equal ['as_before', 'ac_before', 'INSERT INTO items (x) VALUES (2)',
|
|
268
|
+
DB.sqls.must_equal ['as_before', 'ac_before', 'INSERT INTO items (x) VALUES (2)', "SELECT * FROM items WHERE id = 10", 'ac_after', 'as_after']
|
|
368
269
|
@c.load(:id=>1, :x => 2).save
|
|
369
270
|
DB.sqls.must_equal ['as_before', 'au_before', 'UPDATE items SET x = 2 WHERE (id = 1)', 'au_after', 'as_after']
|
|
370
271
|
end
|
|
@@ -467,199 +368,3 @@ describe "Model around filters" do
|
|
|
467
368
|
o.save.must_be_nil
|
|
468
369
|
end
|
|
469
370
|
end
|
|
470
|
-
|
|
471
|
-
describe "Model#after_commit and #after_rollback" do
|
|
472
|
-
before do
|
|
473
|
-
@db = Sequel.mock(:servers=>{:test=>{}})
|
|
474
|
-
@m = Class.new(Sequel::Model(@db[:items])) do
|
|
475
|
-
attr_accessor :rb
|
|
476
|
-
def _delete
|
|
477
|
-
end
|
|
478
|
-
def after_save
|
|
479
|
-
db.execute('as')
|
|
480
|
-
raise Sequel::Rollback if rb
|
|
481
|
-
end
|
|
482
|
-
def after_commit
|
|
483
|
-
db.execute('ac')
|
|
484
|
-
end
|
|
485
|
-
def after_rollback
|
|
486
|
-
db.execute('ar')
|
|
487
|
-
end
|
|
488
|
-
def after_destroy
|
|
489
|
-
db.execute('ad')
|
|
490
|
-
raise Sequel::Rollback if rb
|
|
491
|
-
end
|
|
492
|
-
def after_destroy_commit
|
|
493
|
-
db.execute('adc')
|
|
494
|
-
end
|
|
495
|
-
def after_destroy_rollback
|
|
496
|
-
db.execute('adr')
|
|
497
|
-
end
|
|
498
|
-
end
|
|
499
|
-
@m.use_transactions = true
|
|
500
|
-
@o = @m.load({})
|
|
501
|
-
@db.sqls
|
|
502
|
-
end
|
|
503
|
-
|
|
504
|
-
deprecated "should call after_commit for save after the transaction commits if it commits" do
|
|
505
|
-
@o.save
|
|
506
|
-
@db.sqls.must_equal ['BEGIN', 'as', 'COMMIT', 'ac']
|
|
507
|
-
end
|
|
508
|
-
|
|
509
|
-
deprecated "should call after_rollback for save after the transaction rolls back if it rolls back" do
|
|
510
|
-
@o.rb = true
|
|
511
|
-
@o.save
|
|
512
|
-
@db.sqls.must_equal ['BEGIN', 'as', 'ROLLBACK', 'ar']
|
|
513
|
-
end
|
|
514
|
-
|
|
515
|
-
deprecated "should have after_commit respect any surrounding transactions" do
|
|
516
|
-
@db.transaction do
|
|
517
|
-
@o.save
|
|
518
|
-
end
|
|
519
|
-
@db.sqls.must_equal ['BEGIN', 'as', 'COMMIT', 'ac']
|
|
520
|
-
end
|
|
521
|
-
|
|
522
|
-
deprecated "should have after_rollback respect any surrounding transactions" do
|
|
523
|
-
@db.transaction do
|
|
524
|
-
@o.rb = true
|
|
525
|
-
@o.save
|
|
526
|
-
end
|
|
527
|
-
@db.sqls.must_equal ['BEGIN', 'as', 'ROLLBACK', 'ar']
|
|
528
|
-
end
|
|
529
|
-
|
|
530
|
-
deprecated "should have after_commit work with surrounding transactions and sharding" do
|
|
531
|
-
@db.transaction(:server=>:test) do
|
|
532
|
-
@o.save
|
|
533
|
-
end
|
|
534
|
-
@db.sqls.must_equal ['BEGIN -- test', 'BEGIN', 'as', 'COMMIT', 'ac', 'COMMIT -- test']
|
|
535
|
-
end
|
|
536
|
-
|
|
537
|
-
deprecated "should have after_rollback work with surrounding transactions and sharding" do
|
|
538
|
-
@db.transaction(:server=>:test) do
|
|
539
|
-
@o.rb = true
|
|
540
|
-
@o.save
|
|
541
|
-
end
|
|
542
|
-
@db.sqls.must_equal ['BEGIN -- test', 'BEGIN', 'as', 'ROLLBACK', 'ar', 'COMMIT -- test']
|
|
543
|
-
end
|
|
544
|
-
|
|
545
|
-
deprecated "should call after_destroy_commit for destroy after the transaction commits if it commits" do
|
|
546
|
-
@o.destroy
|
|
547
|
-
@db.sqls.must_equal ['BEGIN', 'ad', 'COMMIT', 'adc']
|
|
548
|
-
end
|
|
549
|
-
|
|
550
|
-
deprecated "should call after_destroy_rollback for destroy after the transaction rolls back if it rolls back" do
|
|
551
|
-
@o.rb = true
|
|
552
|
-
@o.destroy
|
|
553
|
-
@db.sqls.must_equal ['BEGIN', 'ad', 'ROLLBACK', 'adr']
|
|
554
|
-
end
|
|
555
|
-
|
|
556
|
-
deprecated "should have after_destroy_commit respect any surrounding transactions" do
|
|
557
|
-
@db.transaction do
|
|
558
|
-
@o.destroy
|
|
559
|
-
end
|
|
560
|
-
@db.sqls.must_equal ['BEGIN', 'ad', 'COMMIT', 'adc']
|
|
561
|
-
end
|
|
562
|
-
|
|
563
|
-
deprecated "should have after_destroy_rollback respect any surrounding transactions" do
|
|
564
|
-
@db.transaction do
|
|
565
|
-
@o.rb = true
|
|
566
|
-
@o.destroy
|
|
567
|
-
end
|
|
568
|
-
@db.sqls.must_equal ['BEGIN', 'ad', 'ROLLBACK', 'adr']
|
|
569
|
-
end
|
|
570
|
-
|
|
571
|
-
deprecated "should have after_destroy commit work with surrounding transactions and sharding" do
|
|
572
|
-
@db.transaction(:server=>:test) do
|
|
573
|
-
@o.destroy
|
|
574
|
-
end
|
|
575
|
-
@db.sqls.must_equal ['BEGIN -- test', 'BEGIN', 'ad', 'COMMIT', 'adc', 'COMMIT -- test']
|
|
576
|
-
end
|
|
577
|
-
|
|
578
|
-
deprecated "should have after_destroy_rollback work with surrounding transactions and sharding" do
|
|
579
|
-
@db.transaction(:server=>:test) do
|
|
580
|
-
@o.rb = true
|
|
581
|
-
@o.destroy
|
|
582
|
-
end
|
|
583
|
-
@db.sqls.must_equal ['BEGIN -- test', 'BEGIN', 'ad', 'ROLLBACK', 'adr', 'COMMIT -- test']
|
|
584
|
-
end
|
|
585
|
-
|
|
586
|
-
deprecated "should not call after_commit if use_after_commit_rollback is false" do
|
|
587
|
-
@o.use_after_commit_rollback = false
|
|
588
|
-
@o.save
|
|
589
|
-
@db.sqls.must_equal ['BEGIN', 'as', 'COMMIT']
|
|
590
|
-
end
|
|
591
|
-
|
|
592
|
-
deprecated "should not call after_rollback if use_after_commit_rollback is false" do
|
|
593
|
-
@o.use_after_commit_rollback = false
|
|
594
|
-
@o.rb = true
|
|
595
|
-
@o.save
|
|
596
|
-
@db.sqls.must_equal ['BEGIN', 'as', 'ROLLBACK']
|
|
597
|
-
end
|
|
598
|
-
|
|
599
|
-
deprecated "should not call after_destroy_commit if use_after_commit_rollback is false" do
|
|
600
|
-
@o.use_after_commit_rollback = false
|
|
601
|
-
@o.destroy
|
|
602
|
-
@db.sqls.must_equal ['BEGIN', 'ad', 'COMMIT']
|
|
603
|
-
end
|
|
604
|
-
|
|
605
|
-
deprecated "should not call after_destroy_rollback for save if use_after_commit_rollback is false" do
|
|
606
|
-
@o.use_after_commit_rollback = false
|
|
607
|
-
@o.rb = true
|
|
608
|
-
@o.destroy
|
|
609
|
-
@db.sqls.must_equal ['BEGIN', 'ad', 'ROLLBACK']
|
|
610
|
-
end
|
|
611
|
-
|
|
612
|
-
deprecated "should handle use_after_commit_rollback at the class level" do
|
|
613
|
-
@m.use_after_commit_rollback = false
|
|
614
|
-
@o.save
|
|
615
|
-
@db.sqls.must_equal ['BEGIN', 'as', 'COMMIT']
|
|
616
|
-
end
|
|
617
|
-
|
|
618
|
-
deprecated "should handle use_after_commit_rollback when subclassing" do
|
|
619
|
-
@m.use_after_commit_rollback = false
|
|
620
|
-
o = Class.new(@m).load({})
|
|
621
|
-
@db.sqls
|
|
622
|
-
o.save
|
|
623
|
-
@db.sqls.must_equal ['BEGIN', 'as', 'COMMIT']
|
|
624
|
-
end
|
|
625
|
-
|
|
626
|
-
deprecated "should handle use_after_commit_rollback when subclassing after loading" do
|
|
627
|
-
@m = Class.new(Sequel::Model(@db[:items]))
|
|
628
|
-
@m.use_transactions = true
|
|
629
|
-
o = @m.load({})
|
|
630
|
-
@db.sqls
|
|
631
|
-
o.save
|
|
632
|
-
@db.sqls.must_equal ['BEGIN', 'COMMIT']
|
|
633
|
-
|
|
634
|
-
c = Class.new(@m)
|
|
635
|
-
o = c.load({})
|
|
636
|
-
def o.after_commit; db.execute 'ac' end
|
|
637
|
-
@db.sqls
|
|
638
|
-
o.save
|
|
639
|
-
@db.sqls.must_equal ['BEGIN', 'COMMIT', 'ac']
|
|
640
|
-
|
|
641
|
-
o = c.load({})
|
|
642
|
-
@db.sqls
|
|
643
|
-
o.save
|
|
644
|
-
@db.sqls.must_equal ['BEGIN', 'COMMIT']
|
|
645
|
-
|
|
646
|
-
c.send(:define_method, :after_commit){db.execute 'ac'}
|
|
647
|
-
o = c.load({})
|
|
648
|
-
@db.sqls
|
|
649
|
-
o.save
|
|
650
|
-
@db.sqls.must_equal ['BEGIN', 'COMMIT', 'ac']
|
|
651
|
-
|
|
652
|
-
c = Class.new(@m)
|
|
653
|
-
c.send(:include, Module.new{def after_commit; db.execute 'ac'; end})
|
|
654
|
-
o = c.load({})
|
|
655
|
-
@db.sqls
|
|
656
|
-
o.save
|
|
657
|
-
@db.sqls.must_equal ['BEGIN', 'COMMIT', 'ac']
|
|
658
|
-
|
|
659
|
-
c.use_after_commit_rollback = false
|
|
660
|
-
o = c.load({})
|
|
661
|
-
@db.sqls
|
|
662
|
-
o.save
|
|
663
|
-
@db.sqls.must_equal ['BEGIN', 'COMMIT']
|
|
664
|
-
end
|
|
665
|
-
end
|