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,314 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
2
|
-
|
3
|
-
describe "identifier_mangling extension" do
|
4
|
-
after do
|
5
|
-
deprecated do
|
6
|
-
Sequel.quote_identifiers = false
|
7
|
-
Sequel.identifier_input_method = nil
|
8
|
-
Sequel.identifier_output_method = nil
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
deprecated "should respect the :quote_identifiers option" do
|
13
|
-
db = Sequel::Database.new(:quote_identifiers=>false, :identifier_mangling=>true)
|
14
|
-
db.quote_identifiers?.must_equal false
|
15
|
-
db = Sequel::Database.new(:quote_identifiers=>true, :identifier_mangling=>true)
|
16
|
-
db.quote_identifiers?.must_equal true
|
17
|
-
end
|
18
|
-
|
19
|
-
deprecated "should respect the :quote_identifiers setting" do
|
20
|
-
db = Sequel::Database.new(:identifier_mangling=>true)
|
21
|
-
db.quote_identifiers?.must_equal false
|
22
|
-
db.quote_identifiers = true
|
23
|
-
db.quote_identifiers?.must_equal true
|
24
|
-
end
|
25
|
-
|
26
|
-
deprecated "should upcase on input and downcase on output by default" do
|
27
|
-
db = Sequel::Database.new(:identifier_mangling=>true)
|
28
|
-
db.send(:identifier_input_method_default).must_equal :upcase
|
29
|
-
db.send(:identifier_output_method_default).must_equal :downcase
|
30
|
-
end
|
31
|
-
|
32
|
-
deprecated "should respect the :identifier_input_method option" do
|
33
|
-
Sequel.identifier_input_method = nil
|
34
|
-
Sequel::Database.identifier_input_method.must_equal false
|
35
|
-
db = Sequel::Database.new(:identifier_input_method=>nil, :identifier_mangling=>true)
|
36
|
-
db.identifier_input_method.must_be_nil
|
37
|
-
db.identifier_input_method = :downcase
|
38
|
-
db.identifier_input_method.must_equal :downcase
|
39
|
-
db = Sequel::Database.new(:identifier_input_method=>:upcase, :identifier_mangling=>true)
|
40
|
-
db.identifier_input_method.must_equal :upcase
|
41
|
-
db.identifier_input_method = nil
|
42
|
-
db.identifier_input_method.must_be_nil
|
43
|
-
Sequel.identifier_input_method = :downcase
|
44
|
-
Sequel::Database.identifier_input_method.must_equal :downcase
|
45
|
-
db = Sequel::Database.new(:identifier_input_method=>nil, :identifier_mangling=>true)
|
46
|
-
db.identifier_input_method.must_be_nil
|
47
|
-
db.identifier_input_method = :upcase
|
48
|
-
db.identifier_input_method.must_equal :upcase
|
49
|
-
db = Sequel::Database.new(:identifier_input_method=>:upcase, :identifier_mangling=>true)
|
50
|
-
db.identifier_input_method.must_equal :upcase
|
51
|
-
db.identifier_input_method = nil
|
52
|
-
db.identifier_input_method.must_be_nil
|
53
|
-
end
|
54
|
-
|
55
|
-
deprecated "should respect the :identifier_output_method option" do
|
56
|
-
Sequel.identifier_output_method = nil
|
57
|
-
Sequel::Database.identifier_output_method.must_equal false
|
58
|
-
db = Sequel::Database.new(:identifier_output_method=>nil, :identifier_mangling=>true)
|
59
|
-
db.identifier_output_method.must_be_nil
|
60
|
-
db.identifier_output_method = :downcase
|
61
|
-
db.identifier_output_method.must_equal :downcase
|
62
|
-
db = Sequel::Database.new(:identifier_output_method=>:upcase, :identifier_mangling=>true)
|
63
|
-
db.identifier_output_method.must_equal :upcase
|
64
|
-
db.identifier_output_method = nil
|
65
|
-
db.identifier_output_method.must_be_nil
|
66
|
-
Sequel.identifier_output_method = :downcase
|
67
|
-
Sequel::Database.identifier_output_method.must_equal :downcase
|
68
|
-
db = Sequel::Database.new(:identifier_output_method=>nil, :identifier_mangling=>true)
|
69
|
-
db.identifier_output_method.must_be_nil
|
70
|
-
db.identifier_output_method = :upcase
|
71
|
-
db.identifier_output_method.must_equal :upcase
|
72
|
-
db = Sequel::Database.new(:identifier_output_method=>:upcase, :identifier_mangling=>true)
|
73
|
-
db.identifier_output_method.must_equal :upcase
|
74
|
-
db.identifier_output_method = nil
|
75
|
-
db.identifier_output_method.must_be_nil
|
76
|
-
end
|
77
|
-
|
78
|
-
deprecated "should use the default Sequel.quote_identifiers value" do
|
79
|
-
Sequel.quote_identifiers = true
|
80
|
-
Sequel::Database.new(:identifier_mangling=>true).quote_identifiers?.must_equal true
|
81
|
-
Sequel.quote_identifiers = false
|
82
|
-
Sequel::Database.new(:identifier_mangling=>true).quote_identifiers?.must_equal false
|
83
|
-
Sequel::Database.quote_identifiers = true
|
84
|
-
Sequel::Database.new(:identifier_mangling=>true).quote_identifiers?.must_equal true
|
85
|
-
Sequel::Database.quote_identifiers = false
|
86
|
-
Sequel::Database.new(:identifier_mangling=>true).quote_identifiers?.must_equal false
|
87
|
-
end
|
88
|
-
|
89
|
-
deprecated "should use the default Sequel.identifier_input_method value" do
|
90
|
-
Sequel.identifier_input_method = :downcase
|
91
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_input_method.must_equal :downcase
|
92
|
-
Sequel.identifier_input_method = :upcase
|
93
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_input_method.must_equal :upcase
|
94
|
-
Sequel::Database.identifier_input_method = :downcase
|
95
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_input_method.must_equal :downcase
|
96
|
-
Sequel::Database.identifier_input_method = :upcase
|
97
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_input_method.must_equal :upcase
|
98
|
-
end
|
99
|
-
|
100
|
-
deprecated "should use the default Sequel.identifier_output_method value" do
|
101
|
-
Sequel.identifier_output_method = :downcase
|
102
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_output_method.must_equal :downcase
|
103
|
-
Sequel.identifier_output_method = :upcase
|
104
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_output_method.must_equal :upcase
|
105
|
-
Sequel::Database.identifier_output_method = :downcase
|
106
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_output_method.must_equal :downcase
|
107
|
-
Sequel::Database.identifier_output_method = :upcase
|
108
|
-
Sequel::Database.new(:identifier_mangling=>true).identifier_output_method.must_equal :upcase
|
109
|
-
end
|
110
|
-
|
111
|
-
deprecated "should respect the quote_indentifiers_default method if Sequel.quote_identifiers = nil" do
|
112
|
-
Sequel.quote_identifiers = nil
|
113
|
-
Sequel::Database.new(:identifier_mangling=>true).quote_identifiers?.must_equal true
|
114
|
-
x = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def quote_identifiers_default; false end}
|
115
|
-
x.new(:identifier_mangling=>true).quote_identifiers?.must_equal false
|
116
|
-
y = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def quote_identifiers_default; true end}
|
117
|
-
y.new(:identifier_mangling=>true).quote_identifiers?.must_equal true
|
118
|
-
end
|
119
|
-
|
120
|
-
deprecated "should respect the identifier_input_method_default method if Sequel.identifier_input_method is not called" do
|
121
|
-
class Sequel::Database
|
122
|
-
@identifier_input_method = nil
|
123
|
-
end
|
124
|
-
x = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def identifier_input_method_default; :downcase end}
|
125
|
-
x.new(:identifier_mangling=>true).identifier_input_method.must_equal :downcase
|
126
|
-
y = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def identifier_input_method_default; :camelize end}
|
127
|
-
y.new(:identifier_mangling=>true).identifier_input_method.must_equal :camelize
|
128
|
-
end
|
129
|
-
|
130
|
-
deprecated "should respect the identifier_output_method_default method if Sequel.identifier_output_method is not called" do
|
131
|
-
class Sequel::Database
|
132
|
-
@identifier_output_method = nil
|
133
|
-
end
|
134
|
-
x = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def identifier_output_method_default; :upcase end}
|
135
|
-
x.new(:identifier_mangling=>true).identifier_output_method.must_equal :upcase
|
136
|
-
y = Class.new(Sequel::Database){def dataset_class_default; Sequel::Dataset end; def identifier_output_method_default; :underscore end}
|
137
|
-
y.new(:identifier_mangling=>true).identifier_output_method.must_equal :underscore
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
describe "Database#input_identifier_meth" do
|
142
|
-
deprecated "should be the input_identifer method of a default dataset for this database" do
|
143
|
-
db = Sequel::Database.new(:identifier_mangling=>true)
|
144
|
-
db.send(:input_identifier_meth).call(:a).must_equal 'a'
|
145
|
-
db.identifier_input_method = :upcase
|
146
|
-
db.send(:input_identifier_meth).call(:a).must_equal 'A'
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
describe "Database#output_identifier_meth" do
|
151
|
-
deprecated "should be the output_identifer method of a default dataset for this database" do
|
152
|
-
db = Sequel::Database.new(:identifier_mangling=>true)
|
153
|
-
db.send(:output_identifier_meth).call('A').must_equal :A
|
154
|
-
db.identifier_output_method = :downcase
|
155
|
-
db.send(:output_identifier_meth).call('A').must_equal :a
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
describe "Database#metadata_dataset" do
|
160
|
-
deprecated "should be a dataset with the default settings for identifier_mangling" do
|
161
|
-
ds = Sequel::Database.new(:identifier_mangling=>true).send(:metadata_dataset)
|
162
|
-
ds.literal(:a).must_equal 'A'
|
163
|
-
ds.send(:output_identifier, 'A').must_equal :a
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
describe "Dataset" do
|
168
|
-
before do
|
169
|
-
@dataset = Sequel.mock(:identifier_mangling=>true).dataset
|
170
|
-
end
|
171
|
-
|
172
|
-
deprecated "should get quote_identifiers default from database" do
|
173
|
-
db = Sequel::Database.new(:quote_identifiers=>true, :identifier_mangling=>true)
|
174
|
-
db[:a].quote_identifiers?.must_equal true
|
175
|
-
db = Sequel::Database.new(:quote_identifiers=>false, :identifier_mangling=>true)
|
176
|
-
db[:a].quote_identifiers?.must_equal false
|
177
|
-
end
|
178
|
-
|
179
|
-
deprecated "should get identifier_input_method default from database" do
|
180
|
-
db = Sequel::Database.new(:identifier_input_method=>:upcase, :identifier_mangling=>true)
|
181
|
-
db[:a].identifier_input_method.must_equal :upcase
|
182
|
-
db = Sequel::Database.new(:identifier_input_method=>:downcase, :identifier_mangling=>true)
|
183
|
-
db[:a].identifier_input_method.must_equal :downcase
|
184
|
-
end
|
185
|
-
|
186
|
-
deprecated "should get identifier_output_method default from database" do
|
187
|
-
db = Sequel::Database.new(:identifier_output_method=>:upcase, :identifier_mangling=>true)
|
188
|
-
db[:a].identifier_output_method.must_equal :upcase
|
189
|
-
db = Sequel::Database.new(:identifier_output_method=>:downcase, :identifier_mangling=>true)
|
190
|
-
db[:a].identifier_output_method.must_equal :downcase
|
191
|
-
end
|
192
|
-
|
193
|
-
# SEQUEL5: Remove
|
194
|
-
unless Sequel.mock(:identifier_mangling=>true).dataset.frozen?
|
195
|
-
deprecated "should have quote_identifiers= method which changes literalization of identifiers" do
|
196
|
-
@dataset.quote_identifiers = true
|
197
|
-
@dataset.literal(:a).must_equal '"a"'
|
198
|
-
@dataset.quote_identifiers = false
|
199
|
-
@dataset.literal(:a).must_equal 'a'
|
200
|
-
end
|
201
|
-
|
202
|
-
deprecated "should have identifier_input_method= method which changes literalization of identifiers" do
|
203
|
-
@dataset.identifier_input_method = :upcase
|
204
|
-
@dataset.literal(:a).must_equal 'A'
|
205
|
-
@dataset.identifier_input_method = :downcase
|
206
|
-
@dataset.literal(:A).must_equal 'a'
|
207
|
-
@dataset.identifier_input_method = :reverse
|
208
|
-
@dataset.literal(:at_b).must_equal 'b_ta'
|
209
|
-
end
|
210
|
-
|
211
|
-
deprecated "should have identifier_output_method= method which changes identifiers returned from the database" do
|
212
|
-
@dataset.send(:output_identifier, "at_b_C").must_equal :at_b_C
|
213
|
-
@dataset.identifier_output_method = :upcase
|
214
|
-
@dataset.send(:output_identifier, "at_b_C").must_equal :AT_B_C
|
215
|
-
@dataset.identifier_output_method = :downcase
|
216
|
-
@dataset.send(:output_identifier, "at_b_C").must_equal :at_b_c
|
217
|
-
@dataset.identifier_output_method = :reverse
|
218
|
-
@dataset.send(:output_identifier, "at_b_C").must_equal :C_b_ta
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
|
-
deprecated "should have with_quote_identifiers method which returns cloned dataset with changed literalization of identifiers" do
|
223
|
-
@dataset.with_quote_identifiers(true).literal(:a).must_equal '"a"'
|
224
|
-
@dataset.with_quote_identifiers(false).literal(:a).must_equal 'a'
|
225
|
-
ds = @dataset.freeze.with_quote_identifiers(false)
|
226
|
-
ds.literal(:a).must_equal 'a'
|
227
|
-
ds.frozen?.must_equal true
|
228
|
-
end
|
229
|
-
|
230
|
-
deprecated "should have with_identifier_input_method method which returns cloned dataset with changed literalization of identifiers" do
|
231
|
-
@dataset.with_identifier_input_method(:upcase).literal(:a).must_equal 'A'
|
232
|
-
@dataset.with_identifier_input_method(:downcase).literal(:A).must_equal 'a'
|
233
|
-
@dataset.with_identifier_input_method(:reverse).literal(:at_b).must_equal 'b_ta'
|
234
|
-
ds = @dataset.freeze.with_identifier_input_method(:reverse)
|
235
|
-
ds.frozen?.must_equal true
|
236
|
-
ds.literal(:at_b).must_equal 'b_ta'
|
237
|
-
end
|
238
|
-
|
239
|
-
deprecated "should have with_identifier_output_method method which returns cloned dataset with changed identifiers returned from the database" do
|
240
|
-
@dataset.send(:output_identifier, "at_b_C").must_equal :at_b_C
|
241
|
-
@dataset.with_identifier_output_method(:upcase).send(:output_identifier, "at_b_C").must_equal :AT_B_C
|
242
|
-
@dataset.with_identifier_output_method(:downcase).send(:output_identifier, "at_b_C").must_equal :at_b_c
|
243
|
-
@dataset.with_identifier_output_method(:reverse).send(:output_identifier, "at_b_C").must_equal :C_b_ta
|
244
|
-
ds = @dataset.freeze.with_identifier_output_method(:reverse)
|
245
|
-
ds.send(:output_identifier, "at_b_C").must_equal :C_b_ta
|
246
|
-
ds.frozen?.must_equal true
|
247
|
-
end
|
248
|
-
|
249
|
-
deprecated "should have output_identifier handle empty identifiers" do
|
250
|
-
@dataset.send(:output_identifier, "").must_equal :untitled
|
251
|
-
@dataset.with_identifier_output_method(:upcase).send(:output_identifier, "").must_equal :UNTITLED
|
252
|
-
@dataset.with_identifier_output_method(:downcase).send(:output_identifier, "").must_equal :untitled
|
253
|
-
@dataset.with_identifier_output_method(:reverse).send(:output_identifier, "").must_equal :deltitnu
|
254
|
-
end
|
255
|
-
end
|
256
|
-
|
257
|
-
describe "Frozen Datasets" do
|
258
|
-
before do
|
259
|
-
@ds = Sequel.mock(:identifier_mangling=>true)[:test].freeze
|
260
|
-
end
|
261
|
-
|
262
|
-
deprecated "should raise an error when calling mutation methods" do
|
263
|
-
proc{@ds.identifier_input_method = :a}.must_raise RuntimeError
|
264
|
-
proc{@ds.identifier_output_method = :a}.must_raise RuntimeError
|
265
|
-
proc{@ds.quote_identifiers = false}.must_raise RuntimeError
|
266
|
-
end
|
267
|
-
end
|
268
|
-
|
269
|
-
describe "identifier_mangling extension" do
|
270
|
-
deprecated "should be able to load dialects based on the database name" do
|
271
|
-
begin
|
272
|
-
qi = class Sequel::Database; @quote_identifiers; end
|
273
|
-
ii = class Sequel::Database; @identifier_input_method; end
|
274
|
-
io = class Sequel::Database; @identifier_output_method; end
|
275
|
-
Sequel.quote_identifiers = nil
|
276
|
-
class Sequel::Database; @identifier_input_method=nil; end
|
277
|
-
class Sequel::Database; @identifier_output_method=nil; end
|
278
|
-
Sequel.mock(:host=>'access').select(Date.new(2011, 12, 13)).sql.must_equal 'SELECT #2011-12-13#'
|
279
|
-
Sequel.mock(:host=>'db2').select(1).sql.must_equal 'SELECT 1 FROM "SYSIBM"."SYSDUMMY1"'
|
280
|
-
Sequel.mock(:host=>'mssql')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM [A] WHERE (CONTAINS ([B], 'c'))"
|
281
|
-
Sequel.mock(:host=>'mysql')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM `a` WHERE (MATCH (`b`) AGAINST ('c'))"
|
282
|
-
Sequel.mock(:host=>'oracle')[:a].limit(1).sql.must_equal 'SELECT * FROM (SELECT * FROM "A") "T1" WHERE (ROWNUM <= 1)'
|
283
|
-
Sequel.mock(:host=>'postgres')[:a].full_text_search(:b, 'c').sql.must_equal "SELECT * FROM \"a\" WHERE (to_tsvector(CAST('simple' AS regconfig), (COALESCE(\"b\", ''))) @@ to_tsquery(CAST('simple' AS regconfig), 'c'))"
|
284
|
-
Sequel.mock(:host=>'sqlanywhere').from(:a).offset(1).sql.must_equal 'SELECT TOP 2147483647 START AT (1 + 1) * FROM "A"'
|
285
|
-
Sequel.mock(:host=>'sqlite')[:a___b].sql.must_equal "SELECT * FROM `a` AS 'b'"
|
286
|
-
ensure
|
287
|
-
Sequel.quote_identifiers = qi
|
288
|
-
Sequel::Database.send(:instance_variable_set, :@identifier_input_method, ii)
|
289
|
-
Sequel::Database.send(:instance_variable_set, :@identifier_output_method, io)
|
290
|
-
end
|
291
|
-
end
|
292
|
-
end
|
293
|
-
|
294
|
-
describe Sequel::Model, ".[] optimization" do
|
295
|
-
before do
|
296
|
-
@db = Sequel.mock(:identifier_mangling=>true, :quote_identifiers=>true)
|
297
|
-
def @db.schema(*) [[:id, {:primary_key=>true}]] end
|
298
|
-
def @db.supports_schema_parsing?() true end
|
299
|
-
@c = Class.new(Sequel::Model(@db))
|
300
|
-
@ds = @db.dataset.with_quote_identifiers(true)
|
301
|
-
end
|
302
|
-
|
303
|
-
deprecated "should have simple_pk and simple_table respect dataset's identifier input methods" do
|
304
|
-
ds = @db.from(:ab).with_identifier_input_method(:reverse)
|
305
|
-
@c.set_dataset ds
|
306
|
-
@c.simple_table.must_equal '"ba"'
|
307
|
-
@c.set_primary_key :cd
|
308
|
-
@c.simple_pk.must_equal '"dc"'
|
309
|
-
|
310
|
-
@c.set_dataset ds.from(:ef__gh)
|
311
|
-
@c.simple_table.must_equal '"fe"."hg"'
|
312
|
-
end
|
313
|
-
end
|
314
|
-
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
2
|
-
|
3
|
-
describe "Sequel::Plugins::BeforeAfterSave" do
|
4
|
-
before do
|
5
|
-
@db = Sequel.mock(:numrows=>1, :fetch=>{:id=>1, :name=>'b'})
|
6
|
-
@c = Class.new(Sequel::Model(@db[:test]))
|
7
|
-
@ds = @c.dataset
|
8
|
-
@c.columns :id, :name
|
9
|
-
@c.plugin :before_after_save
|
10
|
-
@c.plugin :instance_hooks
|
11
|
-
@o = @c.new
|
12
|
-
@db.sqls
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should reset modified flag before calling after hooks" do
|
16
|
-
a = []
|
17
|
-
@o.after_create_hook{@o.modified?.must_equal false; a << 1}
|
18
|
-
@o.after_save_hook{@o.modified?.must_equal false; a << 2}
|
19
|
-
|
20
|
-
@o.modified!
|
21
|
-
@o.save
|
22
|
-
a.must_equal [1, 2]
|
23
|
-
|
24
|
-
@o.after_save_hook{@o.modified?.must_equal false; a << 2}
|
25
|
-
@o.after_update_hook{@o.modified?.must_equal false; a << 3}
|
26
|
-
a = []
|
27
|
-
@o.modified!
|
28
|
-
@o.save
|
29
|
-
a.must_equal [3, 2]
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should refresh the instance before calling after hooks" do
|
33
|
-
a = []
|
34
|
-
@o.after_create_hook{@o.values.must_equal(:id=>1, :name=>'b'); a << 1}
|
35
|
-
@o.after_save_hook{@o.values.must_equal(:id=>1, :name=>'b'); a << 2}
|
36
|
-
|
37
|
-
@o.save
|
38
|
-
a.must_equal [1, 2]
|
39
|
-
end
|
40
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
2
|
-
|
3
|
-
describe "filter_having extension" do
|
4
|
-
before do
|
5
|
-
deprecated do
|
6
|
-
@ds = Sequel.mock[:t].extension(:filter_having)
|
7
|
-
end
|
8
|
-
@dsh = @ds.having(:a)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should make filter operate on HAVING clause if dataset has a HAVING clause" do
|
12
|
-
@dsh.filter(:b).sql.must_equal 'SELECT * FROM t HAVING (a AND b)'
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should make filter operate on WHERE clause if dataset does not have a HAVING clause" do
|
16
|
-
@ds.filter(:b).sql.must_equal 'SELECT * FROM t WHERE b'
|
17
|
-
end
|
18
|
-
|
19
|
-
deprecated "should make and operate on HAVING clause if dataset has a HAVING clause" do
|
20
|
-
@dsh.and(:b).sql.must_equal 'SELECT * FROM t HAVING (a AND b)'
|
21
|
-
end
|
22
|
-
|
23
|
-
deprecated "should make and operate on WHERE clause if dataset does not have a HAVING clause" do
|
24
|
-
@ds.where(:a).and(:b).sql.must_equal 'SELECT * FROM t WHERE (a AND b)'
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should make or operate on HAVING clause if dataset has a HAVING clause" do
|
28
|
-
@dsh.or(:b).sql.must_equal 'SELECT * FROM t HAVING (a OR b)'
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should make or operate on WHERE clause if dataset does not have a HAVING clause" do
|
32
|
-
@ds.where(:a).or(:b).sql.must_equal 'SELECT * FROM t WHERE (a OR b)'
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should make exclude operate on HAVING clause if dataset has a HAVING clause" do
|
36
|
-
@dsh.exclude(:b).sql.must_equal 'SELECT * FROM t HAVING (a AND NOT b)'
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should make exclude operate on WHERE clause if dataset does not have a HAVING clause" do
|
40
|
-
@ds.exclude(:b).sql.must_equal 'SELECT * FROM t WHERE NOT b'
|
41
|
-
end
|
42
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
2
|
-
|
3
|
-
describe "from_block extension" do
|
4
|
-
before do
|
5
|
-
@db = Sequel.mock
|
6
|
-
@db.extension(:from_block)
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should make Database#from blocks apply to FROM" do
|
10
|
-
@db.from{f}.sql.must_equal 'SELECT * FROM f'
|
11
|
-
@db.from{[f, g(f)]}.sql.must_equal 'SELECT * FROM f, g(f)'
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should handle from blocks with method arguments" do
|
15
|
-
@db.from(:f){g(f)}.sql.must_equal 'SELECT * FROM f, g(f)'
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should handle from without block" do
|
19
|
-
@db.from(:f).sql.must_equal 'SELECT * FROM f'
|
20
|
-
end
|
21
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
2
|
-
|
3
|
-
describe "hash_aliases extension" do
|
4
|
-
before do
|
5
|
-
deprecated do
|
6
|
-
@ds = Sequel.mock.dataset.extension(:hash_aliases)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should make from treat hash arguments as alias specifiers" do
|
11
|
-
@ds.from(:a=>:b).sql.must_equal "SELECT * FROM a AS b"
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should not affect other arguments to from" do
|
15
|
-
@ds.from(:a, :b).sql.must_equal "SELECT * FROM a, b"
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should make select treat hash arguments as alias specifiers" do
|
19
|
-
@ds.select(:a=>:b).sql.must_equal "SELECT a AS b"
|
20
|
-
@ds.select{{:a=>:b}}.sql.must_equal "SELECT a AS b"
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should not affect other arguments to select" do
|
24
|
-
@ds.select(:a, :b).sql.must_equal "SELECT a, b"
|
25
|
-
end
|
26
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
2
|
-
|
3
|
-
describe "identifier_columns plugin" do
|
4
|
-
before do
|
5
|
-
@db = Sequel.mock(:numrows=>1, :fetch=>{:id=>1, :a__b=>2}, :autoid=>1)
|
6
|
-
@c = Class.new(Sequel::Model(@db[:test]))
|
7
|
-
@ds = @c.dataset
|
8
|
-
@c.columns :id, :a__b
|
9
|
-
deprecated do
|
10
|
-
@c.plugin :identifier_columns
|
11
|
-
end
|
12
|
-
@db.sqls
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should not use qualification when updating or inserting values" do
|
16
|
-
@c.create(:a__b=>2).save
|
17
|
-
@db.sqls.must_equal ["INSERT INTO test (a__b) VALUES (2)", "SELECT * FROM test WHERE (id = 1) LIMIT 1", "UPDATE test SET a__b = 2 WHERE (id = 1)"]
|
18
|
-
end
|
19
|
-
end
|