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
@@ -14,39 +14,38 @@ module Sequel
|
|
14
14
|
end
|
15
15
|
|
16
16
|
# Whether this dataset will provide accurate number of rows matched for
|
17
|
-
# delete and update statements. Accurate in this case is the number of
|
17
|
+
# delete and update statements, true by default. Accurate in this case is the number of
|
18
18
|
# rows matched by the dataset's filter.
|
19
19
|
def provides_accurate_rows_matched?
|
20
20
|
true
|
21
21
|
end
|
22
22
|
|
23
|
-
# Whether you must use a column alias list for recursive CTEs
|
24
|
-
# default).
|
23
|
+
# Whether you must use a column alias list for recursive CTEs, false by default.
|
25
24
|
def recursive_cte_requires_column_aliases?
|
26
25
|
false
|
27
26
|
end
|
28
27
|
|
29
|
-
# Whether the dataset requires SQL standard datetimes
|
30
|
-
# as most allow strings with ISO 8601 format
|
28
|
+
# Whether the dataset requires SQL standard datetimes. False by default,
|
29
|
+
# as most allow strings with ISO 8601 format.
|
31
30
|
def requires_sql_standard_datetimes?
|
32
31
|
false
|
33
32
|
end
|
34
33
|
|
35
34
|
# Whether type specifiers are required for prepared statement/bound
|
36
|
-
# variable argument placeholders (i.e. :bv__integer)
|
35
|
+
# variable argument placeholders (i.e. :bv__integer), false by default.
|
37
36
|
def requires_placeholder_type_specifiers?
|
38
37
|
false
|
39
38
|
end
|
40
39
|
|
41
|
-
# Whether the dataset supports common table expressions
|
40
|
+
# Whether the dataset supports common table expressions, false by default.
|
42
41
|
# If given, +type+ can be :select, :insert, :update, or :delete, in which case it
|
43
42
|
# determines whether WITH is supported for the respective statement type.
|
44
43
|
def supports_cte?(type=:select)
|
45
44
|
false
|
46
45
|
end
|
47
46
|
|
48
|
-
# Whether the dataset supports common table expressions
|
49
|
-
#
|
47
|
+
# Whether the dataset supports common table expressions in subqueries, false by default.
|
48
|
+
# If false, applies the WITH clause to the main query, which can cause issues
|
50
49
|
# if multiple WITH clauses use the same name.
|
51
50
|
def supports_cte_in_subqueries?
|
52
51
|
false
|
@@ -64,23 +63,23 @@ module Sequel
|
|
64
63
|
false
|
65
64
|
end
|
66
65
|
|
67
|
-
# Whether the dataset supports CUBE with GROUP BY.
|
66
|
+
# Whether the dataset supports CUBE with GROUP BY, false by default.
|
68
67
|
def supports_group_cube?
|
69
68
|
false
|
70
69
|
end
|
71
70
|
|
72
|
-
# Whether the dataset supports ROLLUP with GROUP BY.
|
71
|
+
# Whether the dataset supports ROLLUP with GROUP BY, false by default.
|
73
72
|
def supports_group_rollup?
|
74
73
|
false
|
75
74
|
end
|
76
75
|
|
77
|
-
# Whether the dataset supports GROUPING SETS with GROUP BY.
|
76
|
+
# Whether the dataset supports GROUPING SETS with GROUP BY, false by default.
|
78
77
|
def supports_grouping_sets?
|
79
78
|
false
|
80
79
|
end
|
81
80
|
|
82
81
|
# Whether this dataset supports the +insert_select+ method for returning all columns values
|
83
|
-
# directly from an insert query.
|
82
|
+
# directly from an insert query, false by default.
|
84
83
|
def supports_insert_select?
|
85
84
|
supports_returning?(:insert)
|
86
85
|
end
|
@@ -95,33 +94,34 @@ module Sequel
|
|
95
94
|
true
|
96
95
|
end
|
97
96
|
|
98
|
-
# Whether the dataset supports the IS TRUE syntax.
|
97
|
+
# Whether the dataset supports the IS TRUE syntax, true by default.
|
99
98
|
def supports_is_true?
|
100
99
|
true
|
101
100
|
end
|
102
101
|
|
103
|
-
# Whether the dataset supports the JOIN table USING (column1, ...) syntax.
|
102
|
+
# Whether the dataset supports the JOIN table USING (column1, ...) syntax, true by default.
|
103
|
+
# If false, support is emulated using JOIN table ON (table.column1 = other_table.column1).
|
104
104
|
def supports_join_using?
|
105
105
|
true
|
106
106
|
end
|
107
107
|
|
108
|
-
# Whether the dataset supports LATERAL for subqueries in the FROM or JOIN clauses.
|
108
|
+
# Whether the dataset supports LATERAL for subqueries in the FROM or JOIN clauses, false by default.
|
109
109
|
def supports_lateral_subqueries?
|
110
110
|
false
|
111
111
|
end
|
112
112
|
|
113
|
-
# Whether limits are supported in correlated subqueries
|
113
|
+
# Whether limits are supported in correlated subqueries, true by default.
|
114
114
|
def supports_limits_in_correlated_subqueries?
|
115
115
|
true
|
116
116
|
end
|
117
117
|
|
118
|
-
# Whether modifying joined datasets is supported.
|
118
|
+
# Whether modifying joined datasets is supported, false by default.
|
119
119
|
def supports_modifying_joins?
|
120
120
|
false
|
121
121
|
end
|
122
122
|
|
123
123
|
# Whether the IN/NOT IN operators support multiple columns when an
|
124
|
-
# array of values is given.
|
124
|
+
# array of values is given, true by default.
|
125
125
|
def supports_multiple_column_in?
|
126
126
|
true
|
127
127
|
end
|
@@ -132,12 +132,12 @@ module Sequel
|
|
132
132
|
end
|
133
133
|
|
134
134
|
# Whether the dataset supports or can fully emulate the DISTINCT ON clause,
|
135
|
-
# including respecting the ORDER BY clause, false by default
|
135
|
+
# including respecting the ORDER BY clause, false by default.
|
136
136
|
def supports_ordered_distinct_on?
|
137
137
|
supports_distinct_on?
|
138
138
|
end
|
139
139
|
|
140
|
-
# Whether the dataset supports pattern matching by regular expressions.
|
140
|
+
# Whether the dataset supports pattern matching by regular expressions, false by default.
|
141
141
|
def supports_regexp?
|
142
142
|
false
|
143
143
|
end
|
@@ -147,39 +147,39 @@ module Sequel
|
|
147
147
|
false
|
148
148
|
end
|
149
149
|
|
150
|
-
# Whether the RETURNING clause is supported for the given type of query.
|
150
|
+
# Whether the RETURNING clause is supported for the given type of query, false by default.
|
151
151
|
# +type+ can be :insert, :update, or :delete.
|
152
152
|
def supports_returning?(type)
|
153
153
|
false
|
154
154
|
end
|
155
155
|
|
156
|
-
# Whether the dataset supports skipping locked rows when returning data.
|
156
|
+
# Whether the dataset supports skipping locked rows when returning data, false by default.
|
157
157
|
def supports_skip_locked?
|
158
158
|
false
|
159
159
|
end
|
160
160
|
|
161
|
-
# Whether the database supports SELECT *, column FROM table
|
161
|
+
# Whether the database supports <tt>SELECT *, column FROM table</tt>, true by default.
|
162
162
|
def supports_select_all_and_column?
|
163
163
|
true
|
164
164
|
end
|
165
165
|
|
166
|
-
# Whether the dataset supports timezones in literal timestamps
|
166
|
+
# Whether the dataset supports timezones in literal timestamps, false by default.
|
167
167
|
def supports_timestamp_timezones?
|
168
168
|
false
|
169
169
|
end
|
170
170
|
|
171
|
-
# Whether the dataset supports fractional seconds in literal timestamps
|
171
|
+
# Whether the dataset supports fractional seconds in literal timestamps, true by default.
|
172
172
|
def supports_timestamp_usecs?
|
173
173
|
true
|
174
174
|
end
|
175
175
|
|
176
|
-
# Whether the dataset supports window functions.
|
176
|
+
# Whether the dataset supports window functions, false by default.
|
177
177
|
def supports_window_functions?
|
178
178
|
false
|
179
179
|
end
|
180
180
|
|
181
181
|
# Whether the dataset supports WHERE TRUE (or WHERE 1 for databases that
|
182
|
-
# that use 1 for true).
|
182
|
+
# that use 1 for true), true by default.
|
183
183
|
def supports_where_true?
|
184
184
|
true
|
185
185
|
end
|
@@ -187,12 +187,12 @@ module Sequel
|
|
187
187
|
private
|
188
188
|
|
189
189
|
# Whether insert(nil) or insert({}) must be emulated by
|
190
|
-
# using at least one value
|
190
|
+
# using at least one value.
|
191
191
|
def insert_supports_empty_values?
|
192
192
|
true
|
193
193
|
end
|
194
194
|
|
195
|
-
# Whether the database supports quoting function names
|
195
|
+
# Whether the database supports quoting function names.
|
196
196
|
def supports_quoted_function_names?
|
197
197
|
false
|
198
198
|
end
|
data/lib/sequel/dataset/graph.rb
CHANGED
@@ -13,19 +13,15 @@ module Sequel
|
|
13
13
|
# unlike +set_graph_aliases+, which replaces the list (the equivalent
|
14
14
|
# of +select_append+ when graphing). See +set_graph_aliases+.
|
15
15
|
#
|
16
|
-
# DB[:table].add_graph_aliases(:
|
16
|
+
# DB[:table].add_graph_aliases(some_alias: [:table, :column])
|
17
17
|
# # SELECT ..., table.column AS some_alias
|
18
18
|
def add_graph_aliases(graph_aliases)
|
19
19
|
graph = opts[:graph]
|
20
|
-
unless (
|
20
|
+
unless (graph && (ga = graph[:column_aliases]))
|
21
21
|
raise Error, "cannot call add_graph_aliases on a dataset that has not been called with graph or set_graph_aliases"
|
22
22
|
end
|
23
23
|
columns, graph_aliases = graph_alias_columns(graph_aliases)
|
24
|
-
|
25
|
-
select_append(*columns).clone(:graph_aliases => Hash[ga].merge!(graph_aliases).freeze) # SEQUEL5: Remove
|
26
|
-
else
|
27
|
-
select_append(*columns).clone(:graph => Hash[graph].merge!(:column_aliases=>Hash[ga].merge!(graph_aliases).freeze).freeze)
|
28
|
-
end
|
24
|
+
select_append(*columns).clone(:graph => Hash[graph].merge!(:column_aliases=>Hash[ga].merge!(graph_aliases).freeze).freeze)
|
29
25
|
end
|
30
26
|
|
31
27
|
# Similar to Dataset#join_table, but uses unambiguous aliases for selected
|
@@ -64,7 +60,7 @@ module Sequel
|
|
64
60
|
case dataset
|
65
61
|
when Symbol
|
66
62
|
# let alias be the same as the table name (sans any optional schema)
|
67
|
-
# unless alias explicitly given in the symbol using ___ notation
|
63
|
+
# unless alias explicitly given in the symbol using ___ notation and symbol splitting is enabled
|
68
64
|
table_alias ||= split_symbol(table).compact.last
|
69
65
|
when Dataset
|
70
66
|
if dataset.simple_select_all?
|
@@ -118,8 +114,6 @@ module Sequel
|
|
118
114
|
|
119
115
|
# Whether to include the table in the result set
|
120
116
|
add_table = options[:select] == false ? false : true
|
121
|
-
# Whether to add the columns to the list of column aliases
|
122
|
-
add_columns = !ds.opts.include?(:graph_aliases) # SEQUEL5: Remove graph_aliases support
|
123
117
|
|
124
118
|
if graph = opts[:graph]
|
125
119
|
graph = graph.dup
|
@@ -146,27 +140,25 @@ module Sequel
|
|
146
140
|
# All columns in the master table are never
|
147
141
|
# aliased, but are not included if set_graph_aliases
|
148
142
|
# has been used.
|
149
|
-
if
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
qualified_expression(sel, qualifier)
|
162
|
-
end
|
163
|
-
end
|
164
|
-
else
|
165
|
-
select = columns.map do |column|
|
166
|
-
column_aliases[column] = [master, column]
|
167
|
-
SQL::QualifiedIdentifier.new(qualifier, column)
|
143
|
+
if (select = @opts[:select]) && !select.empty? && !(select.length == 1 && (select.first.is_a?(SQL::ColumnAll)))
|
144
|
+
select = select.map do |sel|
|
145
|
+
raise Error, "can't figure out alias to use for graphing for #{sel.inspect}" unless column = _hash_key_symbol(sel)
|
146
|
+
column_aliases[column] = [master, column]
|
147
|
+
if from_selfed
|
148
|
+
# Initial dataset was wrapped in subselect, selected all
|
149
|
+
# columns in the subselect, qualified by the subselect alias.
|
150
|
+
Sequel.qualify(qualifier, Sequel.identifier(column))
|
151
|
+
else
|
152
|
+
# Initial dataset not wrapped in subslect, just make
|
153
|
+
# sure columns are qualified in some way.
|
154
|
+
qualified_expression(sel, qualifier)
|
168
155
|
end
|
169
156
|
end
|
157
|
+
else
|
158
|
+
select = columns.map do |column|
|
159
|
+
column_aliases[column] = [master, column]
|
160
|
+
SQL::QualifiedIdentifier.new(qualifier, column)
|
161
|
+
end
|
170
162
|
end
|
171
163
|
end
|
172
164
|
|
@@ -178,7 +170,7 @@ module Sequel
|
|
178
170
|
table_aliases[table_alias] = add_table ? dataset : nil
|
179
171
|
|
180
172
|
# Add the columns to the selection unless we are ignoring them
|
181
|
-
if add_table
|
173
|
+
if add_table
|
182
174
|
column_aliases = graph[:column_aliases]
|
183
175
|
ca_num = graph[:column_alias_num]
|
184
176
|
# Which columns to add to the result set
|
@@ -207,7 +199,7 @@ module Sequel
|
|
207
199
|
end
|
208
200
|
[:column_aliases, :table_aliases, :column_alias_num].each{|k| graph[k].freeze}
|
209
201
|
ds = ds.clone(:graph=>graph.freeze)
|
210
|
-
|
202
|
+
ds.select(*select)
|
211
203
|
end
|
212
204
|
|
213
205
|
# This allows you to manually specify the graph aliases to use
|
@@ -217,42 +209,41 @@ module Sequel
|
|
217
209
|
# graphed dataset, and must be used instead of +select+ whenever
|
218
210
|
# graphing is used.
|
219
211
|
#
|
220
|
-
# graph_aliases
|
221
|
-
#
|
222
|
-
#
|
223
|
-
#
|
224
|
-
#
|
225
|
-
#
|
226
|
-
#
|
227
|
-
#
|
228
|
-
#
|
229
|
-
#
|
212
|
+
# graph_aliases should be a hash with keys being symbols of
|
213
|
+
# column aliases, and values being either symbols or arrays with one to three elements.
|
214
|
+
# If the value is a symbol, it is assumed to be the same as a one element
|
215
|
+
# array containing that symbol.
|
216
|
+
# The first element of the array should be the table alias symbol.
|
217
|
+
# The second should be the actual column name symbol. If the array only
|
218
|
+
# has a single element the column name symbol will be assumed to be the
|
219
|
+
# same as the corresponding hash key. If the array
|
220
|
+
# has a third element, it is used as the value returned, instead of
|
221
|
+
# table_alias.column_name.
|
230
222
|
#
|
231
|
-
# DB[:artists].graph(:albums, :artist_id
|
232
|
-
# set_graph_aliases(:
|
233
|
-
# :
|
234
|
-
# :
|
223
|
+
# DB[:artists].graph(:albums, :artist_id: :id).
|
224
|
+
# set_graph_aliases(name: :artists,
|
225
|
+
# album_name: [:albums, :name],
|
226
|
+
# forty_two: [:albums, :fourtwo, 42]).first
|
235
227
|
# # SELECT artists.name, albums.name AS album_name, 42 AS forty_two ...
|
236
228
|
def set_graph_aliases(graph_aliases)
|
237
229
|
columns, graph_aliases = graph_alias_columns(graph_aliases)
|
238
230
|
if graph = opts[:graph]
|
239
231
|
select(*columns).clone(:graph => Hash[graph].merge!(:column_aliases=>graph_aliases.freeze).freeze)
|
240
232
|
else
|
241
|
-
|
242
|
-
select(*columns).clone(:graph_aliases=>graph_aliases.freeze) # SEQUEL5: Remove
|
233
|
+
raise Error, "cannot call #set_graph_aliases on an ungraphed dataset"
|
243
234
|
end
|
244
235
|
end
|
245
236
|
|
246
237
|
# Remove the splitting of results into subhashes, and all metadata
|
247
238
|
# related to the current graph (if any).
|
248
239
|
def ungraphed
|
249
|
-
clone(:graph=>nil
|
240
|
+
clone(:graph=>nil)
|
250
241
|
end
|
251
242
|
|
252
243
|
private
|
253
244
|
|
254
245
|
# Wrap the alias symbol in an SQL::Identifier if the identifier on which is based
|
255
|
-
# is an SQL::Identifier. This works around cases where the alias symbol contains
|
246
|
+
# is an SQL::Identifier. This works around cases where symbol splitting is enabled and the alias symbol contains
|
256
247
|
# double embedded underscores which would be considered an implicit qualified identifier
|
257
248
|
# if not wrapped in an SQL::Identifier.
|
258
249
|
def qualifier_from_alias_symbol(aliaz, identifier)
|
data/lib/sequel/dataset/misc.rb
CHANGED
@@ -7,15 +7,6 @@ module Sequel
|
|
7
7
|
# These methods don't fit cleanly into another section.
|
8
8
|
# ---------------------
|
9
9
|
|
10
|
-
NOTIMPL_MSG = "This method must be overridden in Sequel adapters".freeze
|
11
|
-
Sequel::Deprecation.deprecate_constant(self, :NOTIMPL_MSG)
|
12
|
-
ARRAY_ACCESS_ERROR_MSG = 'You cannot call Dataset#[] with an integer or with no arguments.'.freeze
|
13
|
-
Sequel::Deprecation.deprecate_constant(self, :ARRAY_ACCESS_ERROR_MSG)
|
14
|
-
ARG_BLOCK_ERROR_MSG = 'Must use either an argument or a block, not both'.freeze
|
15
|
-
Sequel::Deprecation.deprecate_constant(self, :ARG_BLOCK_ERROR_MSG)
|
16
|
-
IMPORT_ERROR_MSG = 'Using Sequel::Dataset#import an empty column array is not allowed'.freeze
|
17
|
-
Sequel::Deprecation.deprecate_constant(self, :IMPORT_ERROR_MSG)
|
18
|
-
|
19
10
|
# The database related to this dataset. This is the Database instance that
|
20
11
|
# will execute all of this dataset's queries.
|
21
12
|
attr_reader :db
|
@@ -33,9 +24,9 @@ module Sequel
|
|
33
24
|
# the Database#dataset method return an instance of that subclass.
|
34
25
|
def initialize(db)
|
35
26
|
@db = db
|
36
|
-
@opts =
|
27
|
+
@opts = OPTS
|
37
28
|
@cache = {}
|
38
|
-
|
29
|
+
freeze
|
39
30
|
end
|
40
31
|
|
41
32
|
# Define a hash value such that datasets with the same class, DB, and opts
|
@@ -55,30 +46,16 @@ module Sequel
|
|
55
46
|
self == o
|
56
47
|
end
|
57
48
|
|
58
|
-
#
|
59
|
-
|
60
|
-
|
61
|
-
# end
|
62
|
-
if TRUE_FREEZE
|
63
|
-
# Similar to #clone, but returns an unfrozen clone if the receiver is frozen.
|
64
|
-
def dup
|
65
|
-
_clone(:freeze=>false)
|
66
|
-
end
|
67
|
-
else
|
68
|
-
# :nocov:
|
69
|
-
def dup
|
70
|
-
c = clone
|
71
|
-
c.instance_variable_set(:@opts, Hash[c.opts])
|
72
|
-
c
|
73
|
-
end
|
74
|
-
# :nocov:
|
49
|
+
# Return self, as datasets are always frozen.
|
50
|
+
def dup
|
51
|
+
self
|
75
52
|
end
|
76
53
|
|
77
54
|
# Yield a dataset for each server in the connection pool that is tied to that server.
|
78
55
|
# Intended for use in sharded environments where all servers need to be modified
|
79
56
|
# with the same data:
|
80
57
|
#
|
81
|
-
# DB[:configs].where(:
|
58
|
+
# DB[:configs].where(key: 'setting').each_server{|ds| ds.update(value: 'new_value')}
|
82
59
|
def each_server
|
83
60
|
db.servers.each{|s| yield server(s)}
|
84
61
|
end
|
@@ -101,12 +78,11 @@ module Sequel
|
|
101
78
|
else
|
102
79
|
# :nocov:
|
103
80
|
def freeze # :nodoc:
|
104
|
-
@opts.freeze # SEQUEL5: remove
|
105
81
|
self
|
106
82
|
end
|
107
83
|
|
108
84
|
def frozen? # :nodoc:
|
109
|
-
|
85
|
+
true
|
110
86
|
end
|
111
87
|
# :nocov:
|
112
88
|
end
|
@@ -122,7 +98,7 @@ module Sequel
|
|
122
98
|
# DB[:table].first_source_alias
|
123
99
|
# # => :table
|
124
100
|
#
|
125
|
-
# DB[:
|
101
|
+
# DB[Sequel[:table].as(:t)].first_source_alias
|
126
102
|
# # => :t
|
127
103
|
def first_source_alias
|
128
104
|
source = @opts[:from]
|
@@ -147,7 +123,7 @@ module Sequel
|
|
147
123
|
# DB[:table].first_source_table
|
148
124
|
# # => :table
|
149
125
|
#
|
150
|
-
# DB[:
|
126
|
+
# DB[Sequel[:table].as(:t)].first_source_table
|
151
127
|
# # => :table
|
152
128
|
def first_source_table
|
153
129
|
source = @opts[:from]
|
@@ -215,7 +191,7 @@ module Sequel
|
|
215
191
|
# SQL identifier that represents the unqualified column for the given value.
|
216
192
|
# The given value should be a Symbol, SQL::Identifier, SQL::QualifiedIdentifier,
|
217
193
|
# or SQL::AliasedExpression containing one of those. In other cases, this
|
218
|
-
# returns nil
|
194
|
+
# returns nil.
|
219
195
|
def unqualified_column_for(v)
|
220
196
|
unless v.is_a?(String)
|
221
197
|
_unqualified_column_for(v)
|
@@ -299,12 +275,11 @@ module Sequel
|
|
299
275
|
private
|
300
276
|
|
301
277
|
# Check the cache for the given key, returning the value.
|
302
|
-
# Otherwise, yield to get the dataset
|
303
|
-
# is frozen, cache the dataset under the given key.
|
278
|
+
# Otherwise, yield to get the dataset and cache the dataset under the given key.
|
304
279
|
def cached_dataset(key)
|
305
280
|
unless ds = cache_get(key)
|
306
281
|
ds = yield
|
307
|
-
cache_set(key, ds)
|
282
|
+
cache_set(key, ds)
|
308
283
|
end
|
309
284
|
|
310
285
|
ds
|