sequel 4.49.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +70 -0
- data/README.rdoc +195 -136
- data/Rakefile +26 -42
- data/bin/sequel +3 -5
- data/doc/advanced_associations.rdoc +86 -163
- data/doc/association_basics.rdoc +197 -274
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +66 -43
- data/doc/code_order.rdoc +1 -8
- data/doc/core_extensions.rdoc +81 -56
- data/doc/dataset_basics.rdoc +8 -17
- data/doc/dataset_filtering.rdoc +81 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/mass_assignment.rdoc +73 -30
- data/doc/migration.rdoc +19 -36
- data/doc/model_dataset_method_design.rdoc +14 -17
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +10 -10
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +52 -70
- data/doc/opening_databases.rdoc +39 -32
- data/doc/postgresql.rdoc +48 -38
- data/doc/prepared_statements.rdoc +27 -22
- data/doc/querying.rdoc +173 -150
- data/doc/reflection.rdoc +5 -6
- data/doc/release_notes/5.0.0.txt +159 -0
- data/doc/schema_modification.rdoc +63 -60
- data/doc/security.rdoc +97 -88
- data/doc/sharding.rdoc +43 -30
- data/doc/sql.rdoc +53 -65
- data/doc/testing.rdoc +3 -5
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +18 -17
- data/doc/validations.rdoc +48 -45
- data/doc/virtual_rows.rdoc +87 -115
- data/lib/sequel.rb +1 -1
- data/lib/sequel/adapters/ado.rb +9 -25
- data/lib/sequel/adapters/ado/access.rb +7 -13
- data/lib/sequel/adapters/ado/mssql.rb +2 -9
- data/lib/sequel/adapters/amalgalite.rb +3 -18
- data/lib/sequel/adapters/ibmdb.rb +9 -45
- data/lib/sequel/adapters/jdbc.rb +13 -73
- data/lib/sequel/adapters/jdbc/db2.rb +8 -37
- data/lib/sequel/adapters/jdbc/derby.rb +4 -50
- data/lib/sequel/adapters/jdbc/h2.rb +4 -25
- data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -26
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
- data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
- data/lib/sequel/adapters/jdbc/mysql.rb +1 -15
- data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
- data/lib/sequel/adapters/jdbc/postgresql.rb +2 -31
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
- data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
- data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
- data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
- data/lib/sequel/adapters/mock.rb +4 -30
- data/lib/sequel/adapters/mysql.rb +7 -44
- data/lib/sequel/adapters/mysql2.rb +5 -23
- data/lib/sequel/adapters/odbc.rb +0 -19
- data/lib/sequel/adapters/odbc/db2.rb +1 -1
- data/lib/sequel/adapters/odbc/mssql.rb +4 -12
- data/lib/sequel/adapters/odbc/oracle.rb +1 -1
- data/lib/sequel/adapters/oracle.rb +7 -13
- data/lib/sequel/adapters/postgres.rb +13 -57
- data/lib/sequel/adapters/postgresql.rb +1 -1
- data/lib/sequel/adapters/shared/access.rb +11 -51
- data/lib/sequel/adapters/shared/db2.rb +3 -61
- data/lib/sequel/adapters/shared/mssql.rb +21 -157
- data/lib/sequel/adapters/shared/mysql.rb +23 -224
- data/lib/sequel/adapters/shared/oracle.rb +13 -41
- data/lib/sequel/adapters/shared/postgres.rb +44 -259
- data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
- data/lib/sequel/adapters/shared/sqlite.rb +12 -101
- data/lib/sequel/adapters/sqlanywhere.rb +4 -23
- data/lib/sequel/adapters/sqlite.rb +2 -19
- data/lib/sequel/adapters/tinytds.rb +5 -15
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -4
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
- data/lib/sequel/adapters/utils/replace.rb +0 -5
- data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
- data/lib/sequel/ast_transformer.rb +3 -94
- data/lib/sequel/connection_pool.rb +26 -28
- data/lib/sequel/connection_pool/sharded_single.rb +1 -4
- data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
- data/lib/sequel/connection_pool/single.rb +0 -2
- data/lib/sequel/connection_pool/threaded.rb +94 -110
- data/lib/sequel/core.rb +42 -101
- data/lib/sequel/database.rb +12 -2
- data/lib/sequel/database/connecting.rb +23 -60
- data/lib/sequel/database/dataset.rb +6 -9
- data/lib/sequel/database/dataset_defaults.rb +4 -48
- data/lib/sequel/database/features.rb +5 -4
- data/lib/sequel/database/logging.rb +2 -9
- data/lib/sequel/database/misc.rb +23 -55
- data/lib/sequel/database/query.rb +8 -13
- data/lib/sequel/database/schema_generator.rb +89 -64
- data/lib/sequel/database/schema_methods.rb +61 -79
- data/lib/sequel/database/transactions.rb +4 -24
- data/lib/sequel/dataset.rb +18 -10
- data/lib/sequel/dataset/actions.rb +53 -107
- data/lib/sequel/dataset/dataset_module.rb +3 -15
- data/lib/sequel/dataset/features.rb +30 -30
- data/lib/sequel/dataset/graph.rb +40 -49
- data/lib/sequel/dataset/misc.rb +12 -37
- data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
- data/lib/sequel/dataset/prepared_statements.rb +23 -51
- data/lib/sequel/dataset/query.rb +71 -155
- data/lib/sequel/dataset/sql.rb +30 -225
- data/lib/sequel/deprecated.rb +18 -27
- data/lib/sequel/exceptions.rb +1 -17
- data/lib/sequel/extensions/_model_pg_row.rb +0 -7
- data/lib/sequel/extensions/_pretty_table.rb +1 -3
- data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
- data/lib/sequel/extensions/connection_expiration.rb +1 -1
- data/lib/sequel/extensions/connection_validator.rb +1 -1
- data/lib/sequel/extensions/constraint_validations.rb +11 -11
- data/lib/sequel/extensions/core_extensions.rb +39 -49
- data/lib/sequel/extensions/core_refinements.rb +39 -45
- data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
- data/lib/sequel/extensions/date_arithmetic.rb +7 -7
- data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
- data/lib/sequel/extensions/eval_inspect.rb +4 -11
- data/lib/sequel/extensions/freeze_datasets.rb +1 -69
- data/lib/sequel/extensions/from_block.rb +1 -35
- data/lib/sequel/extensions/graph_each.rb +2 -2
- data/lib/sequel/extensions/identifier_mangling.rb +9 -19
- data/lib/sequel/extensions/implicit_subquery.rb +2 -2
- data/lib/sequel/extensions/inflector.rb +4 -4
- data/lib/sequel/extensions/migration.rb +23 -40
- data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
- data/lib/sequel/extensions/null_dataset.rb +2 -8
- data/lib/sequel/extensions/pagination.rb +1 -17
- data/lib/sequel/extensions/pg_array.rb +20 -189
- data/lib/sequel/extensions/pg_hstore.rb +11 -50
- data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
- data/lib/sequel/extensions/pg_inet.rb +2 -15
- data/lib/sequel/extensions/pg_interval.rb +1 -20
- data/lib/sequel/extensions/pg_json.rb +7 -27
- data/lib/sequel/extensions/pg_loose_count.rb +1 -1
- data/lib/sequel/extensions/pg_range.rb +6 -121
- data/lib/sequel/extensions/pg_range_ops.rb +1 -3
- data/lib/sequel/extensions/pg_row.rb +5 -77
- data/lib/sequel/extensions/pg_row_ops.rb +2 -13
- data/lib/sequel/extensions/query.rb +3 -4
- data/lib/sequel/extensions/round_timestamps.rb +0 -6
- data/lib/sequel/extensions/schema_dumper.rb +13 -13
- data/lib/sequel/extensions/select_remove.rb +3 -3
- data/lib/sequel/extensions/split_array_nil.rb +2 -2
- data/lib/sequel/extensions/sql_comments.rb +2 -2
- data/lib/sequel/extensions/string_agg.rb +11 -8
- data/lib/sequel/extensions/symbol_aref.rb +6 -20
- data/lib/sequel/model.rb +27 -62
- data/lib/sequel/model/associations.rb +128 -131
- data/lib/sequel/model/base.rb +171 -711
- data/lib/sequel/model/default_inflections.rb +1 -1
- data/lib/sequel/model/errors.rb +0 -3
- data/lib/sequel/model/exceptions.rb +2 -6
- data/lib/sequel/model/inflections.rb +1 -26
- data/lib/sequel/model/plugins.rb +1 -0
- data/lib/sequel/plugins/active_model.rb +2 -5
- data/lib/sequel/plugins/association_dependencies.rb +15 -15
- data/lib/sequel/plugins/association_pks.rb +14 -28
- data/lib/sequel/plugins/association_proxies.rb +6 -7
- data/lib/sequel/plugins/auto_validations.rb +4 -4
- data/lib/sequel/plugins/before_after_save.rb +0 -43
- data/lib/sequel/plugins/blacklist_security.rb +9 -8
- data/lib/sequel/plugins/boolean_readers.rb +3 -3
- data/lib/sequel/plugins/boolean_subsets.rb +2 -2
- data/lib/sequel/plugins/caching.rb +5 -5
- data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
- data/lib/sequel/plugins/column_conflicts.rb +2 -2
- data/lib/sequel/plugins/column_select.rb +2 -2
- data/lib/sequel/plugins/composition.rb +15 -24
- data/lib/sequel/plugins/constraint_validations.rb +4 -3
- data/lib/sequel/plugins/csv_serializer.rb +13 -20
- data/lib/sequel/plugins/dataset_associations.rb +2 -2
- data/lib/sequel/plugins/def_dataset_method.rb +5 -5
- data/lib/sequel/plugins/defaults_setter.rb +1 -1
- data/lib/sequel/plugins/delay_add_association.rb +1 -1
- data/lib/sequel/plugins/finder.rb +16 -10
- data/lib/sequel/plugins/force_encoding.rb +1 -7
- data/lib/sequel/plugins/hook_class_methods.rb +4 -106
- data/lib/sequel/plugins/input_transformer.rb +10 -11
- data/lib/sequel/plugins/insert_returning_select.rb +1 -9
- data/lib/sequel/plugins/instance_filters.rb +5 -5
- data/lib/sequel/plugins/instance_hooks.rb +7 -52
- data/lib/sequel/plugins/inverted_subsets.rb +3 -1
- data/lib/sequel/plugins/json_serializer.rb +19 -19
- data/lib/sequel/plugins/lazy_attributes.rb +1 -10
- data/lib/sequel/plugins/list.rb +6 -6
- data/lib/sequel/plugins/many_through_many.rb +11 -8
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/nested_attributes.rb +18 -31
- data/lib/sequel/plugins/optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/pg_array_associations.rb +8 -2
- data/lib/sequel/plugins/pg_row.rb +2 -11
- data/lib/sequel/plugins/prepared_statements.rb +13 -66
- data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
- data/lib/sequel/plugins/rcte_tree.rb +7 -7
- data/lib/sequel/plugins/serialization.rb +15 -33
- data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
- data/lib/sequel/plugins/sharding.rb +2 -8
- data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
- data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
- data/lib/sequel/plugins/static_cache.rb +8 -9
- data/lib/sequel/plugins/string_stripper.rb +3 -3
- data/lib/sequel/plugins/subclasses.rb +1 -1
- data/lib/sequel/plugins/subset_conditions.rb +2 -2
- data/lib/sequel/plugins/table_select.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
- data/lib/sequel/plugins/timestamps.rb +6 -7
- data/lib/sequel/plugins/touch.rb +4 -8
- data/lib/sequel/plugins/tree.rb +3 -3
- data/lib/sequel/plugins/typecast_on_load.rb +2 -2
- data/lib/sequel/plugins/unlimited_update.rb +1 -7
- data/lib/sequel/plugins/update_or_create.rb +3 -3
- data/lib/sequel/plugins/update_refresh.rb +3 -3
- data/lib/sequel/plugins/uuid.rb +7 -11
- data/lib/sequel/plugins/validation_class_methods.rb +10 -9
- data/lib/sequel/plugins/validation_contexts.rb +4 -4
- data/lib/sequel/plugins/validation_helpers.rb +26 -25
- data/lib/sequel/plugins/whitelist_security.rb +13 -9
- data/lib/sequel/plugins/xml_serializer.rb +24 -25
- data/lib/sequel/sql.rb +145 -276
- data/lib/sequel/timezones.rb +8 -22
- data/lib/sequel/version.rb +2 -2
- data/spec/adapter_spec.rb +1 -1
- data/spec/adapters/db2_spec.rb +2 -103
- data/spec/adapters/mssql_spec.rb +89 -68
- data/spec/adapters/mysql_spec.rb +101 -480
- data/spec/adapters/oracle_spec.rb +1 -9
- data/spec/adapters/postgres_spec.rb +312 -565
- data/spec/adapters/spec_helper.rb +12 -31
- data/spec/adapters/sqlanywhere_spec.rb +2 -77
- data/spec/adapters/sqlite_spec.rb +8 -146
- data/spec/bin_spec.rb +11 -16
- data/spec/core/connection_pool_spec.rb +173 -74
- data/spec/core/database_spec.rb +64 -244
- data/spec/core/dataset_spec.rb +81 -415
- data/spec/core/deprecated_spec.rb +3 -3
- data/spec/core/expression_filters_spec.rb +37 -144
- data/spec/core/mock_adapter_spec.rb +176 -4
- data/spec/core/object_graph_spec.rb +11 -60
- data/spec/core/placeholder_literalizer_spec.rb +1 -14
- data/spec/core/schema_generator_spec.rb +51 -40
- data/spec/core/schema_spec.rb +74 -77
- data/spec/core/spec_helper.rb +6 -24
- data/spec/core/version_spec.rb +1 -1
- data/spec/core_extensions_spec.rb +7 -83
- data/spec/core_model_spec.rb +2 -2
- data/spec/deprecation_helper.rb +2 -14
- data/spec/extensions/accessed_columns_spec.rb +1 -1
- data/spec/extensions/active_model_spec.rb +3 -3
- data/spec/extensions/after_initialize_spec.rb +1 -1
- data/spec/extensions/arbitrary_servers_spec.rb +2 -2
- data/spec/extensions/association_dependencies_spec.rb +1 -1
- data/spec/extensions/association_pks_spec.rb +4 -59
- data/spec/extensions/association_proxies_spec.rb +1 -1
- data/spec/extensions/auto_literal_strings_spec.rb +1 -12
- data/spec/extensions/auto_validations_spec.rb +1 -1
- data/spec/extensions/blacklist_security_spec.rb +1 -1
- data/spec/extensions/blank_spec.rb +1 -1
- data/spec/extensions/boolean_readers_spec.rb +1 -1
- data/spec/extensions/boolean_subsets_spec.rb +1 -1
- data/spec/extensions/caching_spec.rb +1 -1
- data/spec/extensions/class_table_inheritance_spec.rb +35 -1086
- data/spec/extensions/column_conflicts_spec.rb +1 -1
- data/spec/extensions/column_select_spec.rb +4 -4
- data/spec/extensions/columns_introspection_spec.rb +1 -1
- data/spec/extensions/columns_updated_spec.rb +1 -1
- data/spec/extensions/composition_spec.rb +1 -7
- data/spec/extensions/connection_expiration_spec.rb +3 -3
- data/spec/extensions/connection_validator_spec.rb +3 -3
- data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
- data/spec/extensions/constraint_validations_spec.rb +1 -1
- data/spec/extensions/core_refinements_spec.rb +1 -3
- data/spec/extensions/csv_serializer_spec.rb +4 -9
- data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
- data/spec/extensions/dataset_associations_spec.rb +2 -1
- data/spec/extensions/dataset_source_alias_spec.rb +1 -1
- data/spec/extensions/date_arithmetic_spec.rb +3 -3
- data/spec/extensions/def_dataset_method_spec.rb +1 -1
- data/spec/extensions/defaults_setter_spec.rb +2 -2
- data/spec/extensions/delay_add_association_spec.rb +8 -9
- data/spec/extensions/dirty_spec.rb +1 -1
- data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
- data/spec/extensions/eager_each_spec.rb +2 -2
- data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
- data/spec/extensions/error_splitter_spec.rb +1 -1
- data/spec/extensions/error_sql_spec.rb +1 -1
- data/spec/extensions/eval_inspect_spec.rb +1 -1
- data/spec/extensions/finder_spec.rb +1 -1
- data/spec/extensions/force_encoding_spec.rb +2 -5
- data/spec/extensions/freeze_datasets_spec.rb +1 -1
- data/spec/extensions/graph_each_spec.rb +5 -5
- data/spec/extensions/hook_class_methods_spec.rb +1 -194
- data/spec/extensions/identifier_mangling_spec.rb +17 -170
- data/spec/extensions/implicit_subquery_spec.rb +1 -5
- data/spec/extensions/inflector_spec.rb +1 -1
- data/spec/extensions/input_transformer_spec.rb +7 -2
- data/spec/extensions/insert_returning_select_spec.rb +1 -1
- data/spec/extensions/instance_filters_spec.rb +1 -1
- data/spec/extensions/instance_hooks_spec.rb +1 -95
- data/spec/extensions/inverted_subsets_spec.rb +1 -1
- data/spec/extensions/json_serializer_spec.rb +1 -1
- data/spec/extensions/lazy_attributes_spec.rb +1 -7
- data/spec/extensions/list_spec.rb +1 -1
- data/spec/extensions/looser_typecasting_spec.rb +1 -1
- data/spec/extensions/many_through_many_spec.rb +1 -1
- data/spec/extensions/migration_spec.rb +2 -2
- data/spec/extensions/modification_detection_spec.rb +1 -1
- data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
- data/spec/extensions/named_timezones_spec.rb +3 -3
- data/spec/extensions/nested_attributes_spec.rb +1 -29
- data/spec/extensions/null_dataset_spec.rb +1 -11
- data/spec/extensions/optimistic_locking_spec.rb +1 -1
- data/spec/extensions/pagination_spec.rb +1 -1
- data/spec/extensions/pg_array_associations_spec.rb +4 -1
- data/spec/extensions/pg_array_ops_spec.rb +1 -1
- data/spec/extensions/pg_array_spec.rb +3 -48
- data/spec/extensions/pg_enum_spec.rb +1 -1
- data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
- data/spec/extensions/pg_hstore_spec.rb +23 -32
- data/spec/extensions/pg_inet_ops_spec.rb +1 -1
- data/spec/extensions/pg_inet_spec.rb +1 -14
- data/spec/extensions/pg_interval_spec.rb +3 -13
- data/spec/extensions/pg_json_ops_spec.rb +1 -1
- data/spec/extensions/pg_json_spec.rb +1 -13
- data/spec/extensions/pg_loose_count_spec.rb +1 -1
- data/spec/extensions/pg_range_ops_spec.rb +1 -1
- data/spec/extensions/pg_range_spec.rb +3 -88
- data/spec/extensions/pg_row_ops_spec.rb +1 -1
- data/spec/extensions/pg_row_plugin_spec.rb +1 -1
- data/spec/extensions/pg_row_spec.rb +1 -44
- data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
- data/spec/extensions/prepared_statements_safe_spec.rb +1 -1
- data/spec/extensions/prepared_statements_spec.rb +13 -48
- data/spec/extensions/pretty_table_spec.rb +1 -1
- data/spec/extensions/query_spec.rb +1 -12
- data/spec/extensions/rcte_tree_spec.rb +1 -1
- data/spec/extensions/round_timestamps_spec.rb +1 -5
- data/spec/extensions/s_spec.rb +1 -1
- data/spec/extensions/schema_caching_spec.rb +1 -1
- data/spec/extensions/schema_dumper_spec.rb +1 -1
- data/spec/extensions/select_remove_spec.rb +1 -1
- data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
- data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
- data/spec/extensions/serialization_spec.rb +2 -14
- data/spec/extensions/server_block_spec.rb +1 -1
- data/spec/extensions/server_logging_spec.rb +2 -2
- data/spec/extensions/sharding_spec.rb +1 -1
- data/spec/extensions/shared_caching_spec.rb +1 -28
- data/spec/extensions/single_table_inheritance_spec.rb +2 -5
- data/spec/extensions/singular_table_names_spec.rb +1 -1
- data/spec/extensions/skip_create_refresh_spec.rb +1 -1
- data/spec/extensions/spec_helper.rb +5 -27
- data/spec/extensions/split_array_nil_spec.rb +1 -1
- data/spec/extensions/split_values_spec.rb +1 -1
- data/spec/extensions/sql_comments_spec.rb +1 -1
- data/spec/extensions/sql_expr_spec.rb +1 -1
- data/spec/extensions/static_cache_spec.rb +1 -1
- data/spec/extensions/string_agg_spec.rb +2 -2
- data/spec/extensions/string_date_time_spec.rb +1 -1
- data/spec/extensions/string_stripper_spec.rb +1 -1
- data/spec/extensions/subclasses_spec.rb +1 -1
- data/spec/extensions/subset_conditions_spec.rb +1 -1
- data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
- data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
- data/spec/extensions/table_select_spec.rb +4 -4
- data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
- data/spec/extensions/thread_local_timezones_spec.rb +1 -1
- data/spec/extensions/timestamps_spec.rb +3 -3
- data/spec/extensions/to_dot_spec.rb +1 -1
- data/spec/extensions/touch_spec.rb +1 -1
- data/spec/extensions/tree_spec.rb +1 -1
- data/spec/extensions/typecast_on_load_spec.rb +1 -1
- data/spec/extensions/unlimited_update_spec.rb +1 -1
- data/spec/extensions/update_or_create_spec.rb +1 -1
- data/spec/extensions/update_primary_key_spec.rb +4 -3
- data/spec/extensions/update_refresh_spec.rb +1 -1
- data/spec/extensions/uuid_spec.rb +10 -12
- data/spec/extensions/validate_associated_spec.rb +1 -1
- data/spec/extensions/validation_class_methods_spec.rb +3 -3
- data/spec/extensions/validation_contexts_spec.rb +1 -1
- data/spec/extensions/validation_helpers_spec.rb +10 -44
- data/spec/extensions/whitelist_security_spec.rb +5 -5
- data/spec/extensions/xml_serializer_spec.rb +3 -3
- data/spec/guards_helper.rb +2 -1
- data/spec/integration/associations_test.rb +1 -23
- data/spec/integration/database_test.rb +7 -7
- data/spec/integration/dataset_test.rb +5 -47
- data/spec/integration/eager_loader_test.rb +1 -1
- data/spec/integration/migrator_test.rb +1 -1
- data/spec/integration/model_test.rb +4 -82
- data/spec/integration/plugin_test.rb +6 -22
- data/spec/integration/prepared_statement_test.rb +8 -88
- data/spec/integration/schema_test.rb +6 -6
- data/spec/integration/spec_helper.rb +13 -21
- data/spec/integration/timezone_test.rb +5 -5
- data/spec/integration/transaction_test.rb +3 -55
- data/spec/integration/type_test.rb +9 -9
- data/spec/model/association_reflection_spec.rb +24 -9
- data/spec/model/associations_spec.rb +124 -303
- data/spec/model/base_spec.rb +18 -137
- data/spec/model/class_dataset_methods_spec.rb +2 -20
- data/spec/model/dataset_methods_spec.rb +1 -20
- data/spec/model/eager_loading_spec.rb +17 -11
- data/spec/model/hooks_spec.rb +5 -300
- data/spec/model/inflector_spec.rb +1 -1
- data/spec/model/model_spec.rb +15 -320
- data/spec/model/plugins_spec.rb +2 -16
- data/spec/model/record_spec.rb +29 -121
- data/spec/model/spec_helper.rb +5 -15
- data/spec/model/validations_spec.rb +1 -1
- data/spec/sequel_warning.rb +1 -12
- metadata +8 -64
- data/doc/active_record.rdoc +0 -927
- data/lib/sequel/adapters/cubrid.rb +0 -160
- data/lib/sequel/adapters/do.rb +0 -166
- data/lib/sequel/adapters/do/mysql.rb +0 -69
- data/lib/sequel/adapters/do/postgres.rb +0 -46
- data/lib/sequel/adapters/do/sqlite3.rb +0 -41
- data/lib/sequel/adapters/jdbc/as400.rb +0 -92
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
- data/lib/sequel/adapters/odbc/progress.rb +0 -12
- data/lib/sequel/adapters/shared/cubrid.rb +0 -245
- data/lib/sequel/adapters/shared/firebird.rb +0 -261
- data/lib/sequel/adapters/shared/informix.rb +0 -63
- data/lib/sequel/adapters/shared/progress.rb +0 -40
- data/lib/sequel/adapters/swift.rb +0 -169
- data/lib/sequel/adapters/swift/mysql.rb +0 -50
- data/lib/sequel/adapters/swift/postgres.rb +0 -49
- data/lib/sequel/adapters/swift/sqlite.rb +0 -48
- data/lib/sequel/adapters/utils/pg_types.rb +0 -4
- data/lib/sequel/dataset/mutation.rb +0 -98
- data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
- data/lib/sequel/extensions/filter_having.rb +0 -65
- data/lib/sequel/extensions/hash_aliases.rb +0 -51
- data/lib/sequel/extensions/meta_def.rb +0 -37
- data/lib/sequel/extensions/query_literals.rb +0 -86
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
- data/lib/sequel/extensions/set_overrides.rb +0 -82
- data/lib/sequel/no_core_ext.rb +0 -4
- data/lib/sequel/plugins/association_autoreloading.rb +0 -11
- data/lib/sequel/plugins/identifier_columns.rb +0 -49
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
- data/lib/sequel/plugins/schema.rb +0 -84
- data/lib/sequel/plugins/scissors.rb +0 -37
- data/spec/core/dataset_mutation_spec.rb +0 -253
- data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
- data/spec/extensions/before_after_save_spec.rb +0 -40
- data/spec/extensions/filter_having_spec.rb +0 -42
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/hash_aliases_spec.rb +0 -26
- data/spec/extensions/identifier_columns_spec.rb +0 -19
- data/spec/extensions/meta_def_spec.rb +0 -35
- data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
- data/spec/extensions/query_literals_spec.rb +0 -185
- data/spec/extensions/schema_spec.rb +0 -123
- data/spec/extensions/scissors_spec.rb +0 -27
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
- data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
Sequel.extension :pg_array, :pg_json
|
4
4
|
|
@@ -17,18 +17,6 @@ describe "pg_json extension" do
|
|
17
17
|
@db.extension(:pg_array, :pg_json)
|
18
18
|
end
|
19
19
|
|
20
|
-
deprecated "should set up conversion procs correctly" do
|
21
|
-
cp = Sequel::Postgres::PG__TYPES
|
22
|
-
cp[114].call("{}").must_equal @hc.new({})
|
23
|
-
cp[3802].call("{}").must_equal @bhc.new({})
|
24
|
-
end
|
25
|
-
|
26
|
-
deprecated "should set up conversion procs for arrays correctly" do
|
27
|
-
cp = Sequel::Postgres::PG__TYPES
|
28
|
-
cp[199].call("{[]}").must_equal [@ac.new([])]
|
29
|
-
cp[3807].call("{[]}").must_equal [@bac.new([])]
|
30
|
-
end
|
31
|
-
|
32
20
|
it "should set up conversion procs correctly" do
|
33
21
|
cp = @db.conversion_procs
|
34
22
|
cp[114].call("{}").must_equal @hc.new({})
|
@@ -1,13 +1,8 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative "spec_helper"
|
3
2
|
|
4
3
|
describe "pg_range extension" do
|
5
4
|
before(:all) do
|
6
5
|
Sequel.extension :pg_array, :pg_range
|
7
|
-
@pg_types = Sequel::Postgres::PG__TYPES.dup # SEQUEL5: Remove
|
8
|
-
end
|
9
|
-
after(:all) do
|
10
|
-
Sequel::Postgres::PG__TYPES.replace(@pg_types) # SEQUEL5: Remove
|
11
6
|
end
|
12
7
|
|
13
8
|
before do
|
@@ -21,26 +16,6 @@ describe "pg_range extension" do
|
|
21
16
|
@db.extension(:pg_array, :pg_range)
|
22
17
|
end
|
23
18
|
|
24
|
-
deprecated "should set up conversion procs correctly" do
|
25
|
-
cp = Sequel::Postgres::PG__TYPES
|
26
|
-
cp[3904].call("[1,2]").must_equal @R.new(1,2, :exclude_begin=>false, :exclude_end=>false, :db_type=>'int4range')
|
27
|
-
cp[3906].call("[1,2]").must_equal @R.new(1,2, :exclude_begin=>false, :exclude_end=>false, :db_type=>'numrange')
|
28
|
-
cp[3908].call("[2011-01-02 10:20:30,2011-02-03 10:20:30)").must_equal @R.new(Time.local(2011, 1, 2, 10, 20, 30),Time.local(2011, 2, 3, 10, 20, 30), :exclude_begin=>false, :exclude_end=>true, :db_type=>'tsrange')
|
29
|
-
cp[3910].call("[2011-01-02 10:20:30,2011-02-03 10:20:30)").must_equal @R.new(Time.local(2011, 1, 2, 10, 20, 30),Time.local(2011, 2, 3, 10, 20, 30), :exclude_begin=>false, :exclude_end=>true, :db_type=>'tstzrange')
|
30
|
-
cp[3912].call("[2011-01-02,2011-02-03)").must_equal @R.new(Date.new(2011, 1, 2),Date.new(2011, 2, 3), :exclude_begin=>false, :exclude_end=>true, :db_type=>'daterange')
|
31
|
-
cp[3926].call("[1,2]").must_equal @R.new(1,2, :exclude_begin=>false, :exclude_end=>false, :db_type=>'int8range')
|
32
|
-
end
|
33
|
-
|
34
|
-
deprecated "should set up conversion procs for arrays correctly" do
|
35
|
-
cp = Sequel::Postgres::PG__TYPES
|
36
|
-
cp[3905].call("{\"[1,2]\"}").must_equal [@R.new(1,2, :exclude_begin=>false, :exclude_end=>false, :db_type=>'int4range')]
|
37
|
-
cp[3907].call("{\"[1,2]\"}").must_equal [@R.new(1,2, :exclude_begin=>false, :exclude_end=>false, :db_type=>'numrange')]
|
38
|
-
cp[3909].call("{\"[2011-01-02 10:20:30,2011-02-03 10:20:30)\"}").must_equal [@R.new(Time.local(2011, 1, 2, 10, 20, 30),Time.local(2011, 2, 3, 10, 20, 30), :exclude_begin=>false, :exclude_end=>true, :db_type=>'tsrange')]
|
39
|
-
cp[3911].call("{\"[2011-01-02 10:20:30,2011-02-03 10:20:30)\"}").must_equal [@R.new(Time.local(2011, 1, 2, 10, 20, 30),Time.local(2011, 2, 3, 10, 20, 30), :exclude_begin=>false, :exclude_end=>true, :db_type=>'tstzrange')]
|
40
|
-
cp[3913].call("{\"[2011-01-02,2011-02-03)\"}").must_equal [@R.new(Date.new(2011, 1, 2),Date.new(2011, 2, 3), :exclude_begin=>false, :exclude_end=>true, :db_type=>'daterange')]
|
41
|
-
cp[3927].call("{\"[1,2]\"}").must_equal [@R.new(1,2, :exclude_begin=>false, :exclude_end=>false, :db_type=>'int8range')]
|
42
|
-
end
|
43
|
-
|
44
19
|
it "should set up conversion procs correctly" do
|
45
20
|
cp = @db.conversion_procs
|
46
21
|
cp[3904].call("[1,2]").must_equal @R.new(1,2, :exclude_begin=>false, :exclude_end=>false, :db_type=>'int4range')
|
@@ -171,50 +146,6 @@ describe "pg_range extension" do
|
|
171
146
|
end
|
172
147
|
end
|
173
148
|
|
174
|
-
deprecated "should support registering custom range types" do
|
175
|
-
@R.register('foorange')
|
176
|
-
@db.typecast_value(:foorange, 1..2).must_be_kind_of(@R)
|
177
|
-
@db.fetch = [{:name=>'id', :db_type=>'foorange'}]
|
178
|
-
@db.schema(:items).map{|e| e[1][:type]}.must_equal [:foorange]
|
179
|
-
end
|
180
|
-
|
181
|
-
deprecated "should support using a block as a custom conversion proc given as block" do
|
182
|
-
@R.register('foo2range'){|s| (s*2).to_i}
|
183
|
-
@db.typecast_value(:foo2range, '[1,2]').must_be :==, (11..22)
|
184
|
-
end
|
185
|
-
|
186
|
-
deprecated "should support using a block as a custom conversion proc given as :converter option" do
|
187
|
-
@R.register('foo3range', :converter=>proc{|s| (s*2).to_i})
|
188
|
-
@db.typecast_value(:foo3range, '[1,2]').must_be :==, (11..22)
|
189
|
-
end
|
190
|
-
|
191
|
-
deprecated "should support using an existing scaler conversion proc via the :subtype_oid option" do
|
192
|
-
@R.register('foo4range', :subtype_oid=>16)
|
193
|
-
@db.typecast_value(:foo4range, '[t,f]').must_equal @R.new(true, false, :db_type=>'foo4range')
|
194
|
-
end
|
195
|
-
|
196
|
-
deprecated "should raise an error if using :subtype_oid option with unexisting scalar conversion proc" do
|
197
|
-
proc{@R.register('fooirange', :subtype_oid=>0)}.must_raise(Sequel::Error)
|
198
|
-
end
|
199
|
-
|
200
|
-
deprecated "should raise an error if using :converter option and a block argument" do
|
201
|
-
proc{@R.register('fooirange', :converter=>proc{}){}}.must_raise(Sequel::Error)
|
202
|
-
end
|
203
|
-
|
204
|
-
deprecated "should raise an error if using :subtype_oid option and a block argument" do
|
205
|
-
proc{@R.register('fooirange', :subtype_oid=>16){}}.must_raise(Sequel::Error)
|
206
|
-
end
|
207
|
-
|
208
|
-
deprecated "should support registering custom types with :oid option" do
|
209
|
-
@R.register('foo5range', :oid=>331)
|
210
|
-
Sequel::Postgres::PG__TYPES[331].call('[1,3)').must_be_kind_of(@R)
|
211
|
-
end
|
212
|
-
|
213
|
-
deprecated "should not support registering custom range types on a per-Database basis for frozen databases" do
|
214
|
-
@db.freeze
|
215
|
-
proc{@db.register_range_type('banana', :oid=>7865){|s| s}}.must_raise RuntimeError, TypeError
|
216
|
-
end
|
217
|
-
|
218
149
|
it "should support registering custom range types" do
|
219
150
|
@db.register_range_type('foorange')
|
220
151
|
@db.typecast_value(:foorange, 1..2).must_be_kind_of(@R)
|
@@ -349,20 +280,6 @@ describe "pg_range extension" do
|
|
349
280
|
end
|
350
281
|
end
|
351
282
|
|
352
|
-
deprecated "should set appropriate timestamp range conversion procs when resetting conversion procs" do
|
353
|
-
@db.reset_conversion_procs
|
354
|
-
procs = @db.conversion_procs
|
355
|
-
procs[3908].call('[2011-10-20 11:12:13,2011-10-20 11:12:14]').must_be :==, (Time.local(2011, 10, 20, 11, 12, 13)..(Time.local(2011, 10, 20, 11, 12, 14)))
|
356
|
-
procs[3910].call('[2011-10-20 11:12:13,2011-10-20 11:12:14]').must_be :==, (Time.local(2011, 10, 20, 11, 12, 13)..(Time.local(2011, 10, 20, 11, 12, 14)))
|
357
|
-
end
|
358
|
-
|
359
|
-
deprecated "should set appropriate timestamp range array conversion procs when resetting conversion procs" do
|
360
|
-
@db.reset_conversion_procs
|
361
|
-
procs = @db.conversion_procs
|
362
|
-
procs[3909].call('{"[2011-10-20 11:12:13,2011-10-20 11:12:14]"}').must_be :==, [Time.local(2011, 10, 20, 11, 12, 13)..Time.local(2011, 10, 20, 11, 12, 14)]
|
363
|
-
procs[3911].call('{"[2011-10-20 11:12:13,2011-10-20 11:12:14]"}').must_be :==, [Time.local(2011, 10, 20, 11, 12, 13)..Time.local(2011, 10, 20, 11, 12, 14)]
|
364
|
-
end
|
365
|
-
|
366
283
|
describe "a PGRange instance" do
|
367
284
|
before do
|
368
285
|
@r1 = @R.new(1, 2)
|
@@ -420,10 +337,8 @@ describe "pg_range extension" do
|
|
420
337
|
it "should quack like a range" do
|
421
338
|
@r1.cover?(1.5).must_equal true
|
422
339
|
@r1.cover?(2.5).must_equal false
|
423
|
-
|
424
|
-
|
425
|
-
@r1.last(1).must_equal [2]
|
426
|
-
end
|
340
|
+
@r1.first(1).must_equal [1]
|
341
|
+
@r1.last(1).must_equal [2]
|
427
342
|
@r1.to_a.must_equal [1, 2]
|
428
343
|
@r1.first.must_equal 1
|
429
344
|
@r1.last.must_equal 2
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe "pg_row extension" do
|
4
4
|
before do
|
@@ -9,16 +9,6 @@ describe "pg_row extension" do
|
|
9
9
|
@db.sqls
|
10
10
|
end
|
11
11
|
|
12
|
-
deprecated "should parse record objects as arrays" do
|
13
|
-
a = Sequel::Postgres::PG__TYPES[2249].call("(a,b,c)")
|
14
|
-
a.class.must_equal(@m::ArrayRow)
|
15
|
-
a.to_a.must_be_kind_of(Array)
|
16
|
-
a[0].must_equal 'a'
|
17
|
-
a.must_equal %w'a b c'
|
18
|
-
a.db_type.must_be_nil
|
19
|
-
@db.literal(a).must_equal "ROW('a', 'b', 'c')"
|
20
|
-
end
|
21
|
-
|
22
12
|
it "should parse record objects as arrays" do
|
23
13
|
a = @db.conversion_procs[2249].call("(a,b,c)")
|
24
14
|
a.class.must_equal(@m::ArrayRow)
|
@@ -145,30 +135,6 @@ describe "pg_row extension" do
|
|
145
135
|
p.column_converters.must_equal [Array]
|
146
136
|
end
|
147
137
|
|
148
|
-
deprecated "should reload registered row types when reseting conversion procs" do
|
149
|
-
db = Sequel.mock(:host=>'postgres')
|
150
|
-
db.extend_datasets{def quote_identifiers?; false end}
|
151
|
-
db.extension(:pg_row)
|
152
|
-
db.conversion_procs[4] = proc{|s| s.to_i}
|
153
|
-
db.conversion_procs[5] = proc{|s| s * 2}
|
154
|
-
db.sqls
|
155
|
-
db.fetch = [[{:oid=>1, :typrelid=>2, :typarray=>3}], [{:attname=>'bar', :atttypid=>4}, {:attname=>'baz', :atttypid=>5}]]
|
156
|
-
db.register_row_type(:foo)
|
157
|
-
db.sqls.must_equal ["SELECT pg_type.oid, typrelid, typarray FROM pg_type WHERE ((typtype = 'c') AND (typname = 'foo')) LIMIT 1",
|
158
|
-
"SELECT attname, (CASE pg_type.typbasetype WHEN 0 THEN atttypid ELSE pg_type.typbasetype END) AS atttypid FROM pg_attribute INNER JOIN pg_type ON (pg_type.oid = pg_attribute.atttypid) WHERE ((attrelid = 2) AND (attnum > 0) AND NOT attisdropped) ORDER BY attnum"]
|
159
|
-
|
160
|
-
begin
|
161
|
-
pgnt = Sequel::Postgres::PG_NAMED_TYPES.dup
|
162
|
-
Sequel::Postgres::PG_NAMED_TYPES.clear
|
163
|
-
db.fetch = [[{:oid=>1, :typrelid=>2, :typarray=>3}], [{:attname=>'bar', :atttypid=>4}, {:attname=>'baz', :atttypid=>5}]]
|
164
|
-
db.reset_conversion_procs
|
165
|
-
db.sqls.must_equal ["SELECT pg_type.oid, typrelid, typarray FROM pg_type WHERE ((typtype = 'c') AND (typname = 'foo')) LIMIT 1",
|
166
|
-
"SELECT attname, (CASE pg_type.typbasetype WHEN 0 THEN atttypid ELSE pg_type.typbasetype END) AS atttypid FROM pg_attribute INNER JOIN pg_type ON (pg_type.oid = pg_attribute.atttypid) WHERE ((attrelid = 2) AND (attnum > 0) AND NOT attisdropped) ORDER BY attnum"]
|
167
|
-
ensure
|
168
|
-
Sequel::Postgres::PG_NAMED_TYPES.replace pgnt
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
138
|
it "should handle ArrayRows and HashRows in bound variables" do
|
173
139
|
@db.bound_variable_arg(1, nil).must_equal 1
|
174
140
|
@db.bound_variable_arg(@m::ArrayRow.call(["1", "abc\\'\","]), nil).must_equal '("1","abc\\\\\'\\",")'
|
@@ -302,15 +268,6 @@ describe "pg_row extension" do
|
|
302
268
|
@db.typecast_value(:pg_row_foo, 'bar'=>'1', 'baz'=>'b').must_equal(:bar=>1, :baz=>'bb')
|
303
269
|
end
|
304
270
|
|
305
|
-
deprecated "should handle conversion procs that aren't added until later" do
|
306
|
-
@db.conversion_procs[5] = proc{|s| s * 2}
|
307
|
-
@db.fetch = [[{:oid=>1, :typrelid=>2, :typarray=>3}], [{:attname=>'bar', :atttypid=>4}, {:attname=>'baz', :atttypid=>5}]]
|
308
|
-
c = proc{|h| [h]}
|
309
|
-
@db.register_row_type(:foo, :converter=>c)
|
310
|
-
@db.conversion_procs[4] = proc{|s| s.to_i}
|
311
|
-
@db.conversion_procs[1].call('(1,b)').must_equal [{:bar=>1, :baz=>'bb'}]
|
312
|
-
end
|
313
|
-
|
314
271
|
it "should handle nil values when converting columns" do
|
315
272
|
@db.conversion_procs[5] = proc{|s| s * 2}
|
316
273
|
@db.fetch = [[{:oid=>1, :typrelid=>2, :typarray=>3}], [{:attname=>'bar', :atttypid=>4}]]
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe "prepared_statements plugin" do
|
4
4
|
before do
|
@@ -13,11 +13,11 @@ describe "prepared_statements plugin" do
|
|
13
13
|
@db.sqls
|
14
14
|
end
|
15
15
|
|
16
|
-
|
16
|
+
it "should work with implicit subqueries used for joined datasets" do
|
17
17
|
@c.dataset = @c.dataset.from(:people, :people2)
|
18
18
|
@db.sqls
|
19
19
|
@c[1].must_equal @p
|
20
|
-
@db.sqls.must_equal ["SELECT * FROM people, people2 WHERE (
|
20
|
+
@db.sqls.must_equal ["SELECT * FROM (SELECT * FROM people, people2) AS people WHERE (id = 1) LIMIT 1 -- read_only"]
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should correctly lookup by primary key for dataset using subquery" do
|
@@ -32,33 +32,12 @@ describe "prepared_statements plugin" do
|
|
32
32
|
@c.set_primary_key [:id, :name]
|
33
33
|
@c.send(:use_prepared_statements_for_pk_lookup?).must_equal true
|
34
34
|
@c.set_primary_key :id
|
35
|
-
deprecated do
|
36
35
|
@c.dataset = @c.dataset.from(:people, :people2)
|
37
|
-
@c.send(:use_prepared_statements_for_pk_lookup?).must_equal
|
38
|
-
end
|
36
|
+
@c.send(:use_prepared_statements_for_pk_lookup?).must_equal true
|
39
37
|
@c.dataset = @db[:people].select(:id, :name, :i)
|
40
38
|
@c.send(:use_prepared_statements_for_pk_lookup?).must_equal true
|
41
39
|
end
|
42
40
|
|
43
|
-
it "should use prepared statements for refreshes if default is not optimized" do
|
44
|
-
@p.send(:use_prepared_statements_for?, :refresh).must_equal false
|
45
|
-
@c.set_primary_key [:id, :name]
|
46
|
-
@p.send(:use_prepared_statements_for?, :refresh).must_equal true
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should use prepared statements for deletes if default is not optimized" do
|
50
|
-
@p.send(:use_prepared_statements_for?, :delete).must_equal false
|
51
|
-
@c.set_primary_key [:id, :name]
|
52
|
-
@p.send(:use_prepared_statements_for?, :delete).must_equal true
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should use prepared statements for deletes if default on Oracle and DB2" do
|
56
|
-
def @db.database_type; :oracle end
|
57
|
-
@p.send(:use_prepared_statements_for?, :delete).must_equal true
|
58
|
-
def @db.database_type; :db2 end
|
59
|
-
@p.send(:use_prepared_statements_for?, :delete).must_equal true
|
60
|
-
end
|
61
|
-
|
62
41
|
it "should raise Error for unsupported prepared statement types" do
|
63
42
|
proc{@p.send(:use_prepared_statements_for?, :foo)}.must_raise Sequel::Error
|
64
43
|
end
|
@@ -102,22 +81,7 @@ describe "prepared_statements plugin" do
|
|
102
81
|
|
103
82
|
it "should correctly create instance" do
|
104
83
|
@c.create(:name=>'foo').must_equal @c.load(:id=>1, :name=>'foo', :i => 2)
|
105
|
-
@db.sqls.must_equal ["INSERT INTO people (name) VALUES ('foo')", "SELECT
|
106
|
-
end
|
107
|
-
|
108
|
-
it "should correctly lookup by primary key" do
|
109
|
-
@c[1].must_equal @p
|
110
|
-
@db.sqls.must_equal ["SELECT id, name, i FROM people WHERE (id = 1) LIMIT 1 -- read_only"]
|
111
|
-
end
|
112
|
-
|
113
|
-
it "should correctly delete instance" do
|
114
|
-
@p.destroy.must_equal @p
|
115
|
-
@db.sqls.must_equal ["DELETE FROM people WHERE (id = 1)"]
|
116
|
-
end
|
117
|
-
|
118
|
-
it "should correctly delete instance when specifying server" do
|
119
|
-
@p.set_server(:read_only).destroy.must_equal @p
|
120
|
-
@db.sqls.must_equal ["DELETE FROM people WHERE (id = 1) -- read_only"]
|
84
|
+
@db.sqls.must_equal ["INSERT INTO people (name) VALUES ('foo')", "SELECT * FROM people WHERE id = 1"]
|
121
85
|
end
|
122
86
|
|
123
87
|
it "should correctly update instance when specifying server" do
|
@@ -127,7 +91,7 @@ describe "prepared_statements plugin" do
|
|
127
91
|
|
128
92
|
it "should correctly create instance when specifying server" do
|
129
93
|
@c.new(:name=>'foo').set_server(:read_only).save.must_equal @c.load(:id=>1, :name=>'foo', :i => 2)
|
130
|
-
@db.sqls.must_equal ["INSERT INTO people (name) VALUES ('foo') -- read_only", "SELECT
|
94
|
+
@db.sqls.must_equal ["INSERT INTO people (name) VALUES ('foo') -- read_only", "SELECT * FROM people WHERE id = 1 -- read_only"]
|
131
95
|
end
|
132
96
|
|
133
97
|
it "should correctly create instance if dataset supports insert_select when specifying server" do
|
@@ -152,14 +116,15 @@ describe "prepared_statements plugin" do
|
|
152
116
|
|
153
117
|
it "should work correctly when subclassing" do
|
154
118
|
c = Class.new(@c)
|
155
|
-
|
156
|
-
|
119
|
+
@db.sqls
|
120
|
+
c.load(:id=>1, :name=>'foo', :i=>2).save
|
121
|
+
@db.sqls.must_equal ["UPDATE people SET name = 'foo', i = 2 WHERE (id = 1)"]
|
157
122
|
end
|
158
123
|
|
159
124
|
it "should correctly handle without schema type when placeholder type specifiers are required" do
|
160
125
|
@c.dataset = @ds.with_extend{def requires_placeholder_type_specifiers?; true end}
|
161
|
-
@
|
162
|
-
@db.sqls.must_equal ["
|
126
|
+
@p.save
|
127
|
+
@db.sqls.must_equal ["UPDATE people SET name = 'foo', i = 2 WHERE (id = 1)"]
|
163
128
|
end
|
164
129
|
|
165
130
|
it "should correctly handle with schema type when placeholder type specifiers are required" do
|
@@ -183,8 +148,8 @@ describe "prepared_statements plugin" do
|
|
183
148
|
end
|
184
149
|
end
|
185
150
|
@c.db_schema[:id][:type] = :integer
|
186
|
-
@
|
187
|
-
@db.sqls.must_equal ["
|
151
|
+
@p.save
|
152
|
+
@db.sqls.must_equal ["UPDATE people SET name = 'foo', i = 2 WHERE (id = 1)"]
|
188
153
|
end
|
189
154
|
end
|
190
155
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
3
|
describe "Database#query" do
|
4
4
|
before do
|
@@ -87,17 +87,6 @@ describe "Dataset#query" do
|
|
87
87
|
q.sql.must_equal "SELECT * FROM xyz"
|
88
88
|
end
|
89
89
|
|
90
|
-
# SEQUEL5: Remove
|
91
|
-
unless Sequel.mock.dataset.frozen?
|
92
|
-
deprecated "should have an appropriate mutation method" do
|
93
|
-
@d.query! do
|
94
|
-
select :a, Sequel[:b].as(:mongo)
|
95
|
-
from :yyy
|
96
|
-
end
|
97
|
-
@d.sql.must_equal "SELECT a, b AS mongo FROM yyy"
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
90
|
it "should raise on non-chainable method calls" do
|
102
91
|
proc {@d.query {row_proc}}.must_raise(Sequel::Error)
|
103
92
|
proc {@d.query {all}}.must_raise(Sequel::Error)
|
@@ -1,6 +1,5 @@
|
|
1
|
-
|
1
|
+
require_relative "spec_helper"
|
2
2
|
|
3
|
-
if RUBY_VERSION >= '1.9.0'
|
4
3
|
describe "Sequel::Dataset::RoundTimestamps" do
|
5
4
|
before do
|
6
5
|
@dataset = Sequel.mock.dataset.extension(:round_timestamps)
|
@@ -38,6 +37,3 @@ describe "Sequel::Dataset::RoundTimestamps" do
|
|
38
37
|
@dataset.literal(DateTime.new(2010, 1, 2, 3, 4, Rational(54999999, 10000000))).must_equal "'2010-01-02 03:04:05'"
|
39
38
|
end
|
40
39
|
end
|
41
|
-
else
|
42
|
-
skip_warn "round_timestamps extension: only works on ruby 1.9+"
|
43
|
-
end
|
data/spec/extensions/s_spec.rb
CHANGED