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,51 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The hash_aliases extension allows Dataset#select and Dataset#from
|
4
|
-
# to treat a hash argument as an alias specification, with keys
|
5
|
-
# being the expressions and values being the aliases,
|
6
|
-
# which was the historical behavior before Sequel 4.
|
7
|
-
# It is only recommended to use this for backwards compatibility.
|
8
|
-
#
|
9
|
-
# You can load this extension into specific datasets:
|
10
|
-
#
|
11
|
-
# ds = DB[:table]
|
12
|
-
# ds = ds.extension(:hash_aliases)
|
13
|
-
#
|
14
|
-
# Or you can load it into all of a database's datasets, which
|
15
|
-
# is probably the desired behavior if you are using this extension:
|
16
|
-
#
|
17
|
-
# DB.extension(:hash_aliases)
|
18
|
-
#
|
19
|
-
# Related module: Sequel::HashAliases
|
20
|
-
|
21
|
-
Sequel::Deprecation.deprecate("The hash_aliases extension", "Please consider maintaining it yourself as an external gem if you want to continue using it")
|
22
|
-
|
23
|
-
#
|
24
|
-
module Sequel
|
25
|
-
module HashAliases
|
26
|
-
def from(*source)
|
27
|
-
super(*convert_hash_aliases(source))
|
28
|
-
end
|
29
|
-
|
30
|
-
def select(*columns, &block)
|
31
|
-
virtual_row_columns(columns, block)
|
32
|
-
super(*convert_hash_aliases(columns), &nil)
|
33
|
-
end
|
34
|
-
|
35
|
-
private
|
36
|
-
|
37
|
-
def convert_hash_aliases(columns)
|
38
|
-
m = []
|
39
|
-
columns.each do |i|
|
40
|
-
if i.is_a?(Hash)
|
41
|
-
m.concat(i.map{|k, v| SQL::AliasedExpression.new(k,v)})
|
42
|
-
else
|
43
|
-
m << i
|
44
|
-
end
|
45
|
-
end
|
46
|
-
m
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
Dataset.register_extension(:hash_aliases, HashAliases)
|
51
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The meta_def extension is designed for backwards compatibility
|
4
|
-
# with older Sequel code that uses the meta_def method on
|
5
|
-
# Database, Dataset, and Model classes and/or instances. It is
|
6
|
-
# not recommended for usage in new code. To load this extension:
|
7
|
-
#
|
8
|
-
# Sequel.extension :meta_def
|
9
|
-
#
|
10
|
-
# Related module: Sequel::Metaprogramming
|
11
|
-
|
12
|
-
Sequel::Deprecation.deprecate("The meta_def extension", "Replace meta_def usage with define_singleton_method")
|
13
|
-
|
14
|
-
#
|
15
|
-
module Sequel
|
16
|
-
# Contains meta_def method for adding methods to objects via blocks.
|
17
|
-
# Only recommended for backwards compatibility with existing code.
|
18
|
-
module Metaprogramming
|
19
|
-
# Define a method with the given name and block body on the receiver.
|
20
|
-
#
|
21
|
-
# ds = DB[:items]
|
22
|
-
# ds.meta_def(:x){42}
|
23
|
-
# ds.x # => 42
|
24
|
-
def meta_def(name, &block)
|
25
|
-
(class << self; self end).send(:define_method, name, &block)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
Database.extend Metaprogramming
|
30
|
-
Database.send(:include, Metaprogramming)
|
31
|
-
Dataset.extend Metaprogramming
|
32
|
-
Dataset.send(:include, Metaprogramming)
|
33
|
-
if defined?(Model)
|
34
|
-
Model.extend Metaprogramming
|
35
|
-
Model.send(:include, Metaprogramming)
|
36
|
-
end
|
37
|
-
end
|
@@ -1,86 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The query_literals extension changes Sequel's default behavior of
|
4
|
-
# the select, order and group methods so that if the first argument
|
5
|
-
# is a regular string, it is treated as a literal string, with the
|
6
|
-
# rest of the arguments (if any) treated as placeholder values. This
|
7
|
-
# allows you to write code such as:
|
8
|
-
#
|
9
|
-
# DB[:table].select('a, b, ?', 2).group('a, b').order('c')
|
10
|
-
#
|
11
|
-
# The default Sequel behavior would literalize that as:
|
12
|
-
#
|
13
|
-
# SELECT 'a, b, ?', 2 FROM table GROUP BY 'a, b' ORDER BY 'c'
|
14
|
-
#
|
15
|
-
# Using this extension changes the literalization to:
|
16
|
-
#
|
17
|
-
# SELECT a, b, 2, FROM table GROUP BY a, b ORDER BY c
|
18
|
-
#
|
19
|
-
# This extension makes select, group, and order methods operate
|
20
|
-
# like filter methods, which support the same interface. Note
|
21
|
-
# that this extension can add SQL injection vulnerabilities to existing
|
22
|
-
# code if any of the strings passed to one of the supported
|
23
|
-
# methods is derived from user input. For that reason, it should
|
24
|
-
# be used with caution.
|
25
|
-
#
|
26
|
-
# You can load this extension into specific datasets:
|
27
|
-
#
|
28
|
-
# ds = DB[:table]
|
29
|
-
# ds = ds.extension(:query_literals)
|
30
|
-
#
|
31
|
-
# Or you can load it into all of a database's datasets, which
|
32
|
-
# is probably the desired behavior if you are using this extension:
|
33
|
-
#
|
34
|
-
# DB.extension(:query_literals)
|
35
|
-
#
|
36
|
-
# Related module: Sequel::QueryLiterals
|
37
|
-
|
38
|
-
Sequel::Deprecation.deprecate("The query_literals extension", "Please consider maintaining it yourself as an external gem if you want to continue using it")
|
39
|
-
|
40
|
-
#
|
41
|
-
module Sequel
|
42
|
-
# The QueryLiterals module can be used to make select, group, and
|
43
|
-
# order methods operate similar to the filter methods if the first
|
44
|
-
# argument is a plain string, treating it like a literal string,
|
45
|
-
# with any remaining arguments treated as placeholder values.
|
46
|
-
#
|
47
|
-
# This adds such support to the following methods: select, select_append,
|
48
|
-
# select_group, select_more, group, group_and_count, order, order_append,
|
49
|
-
# and order_more.
|
50
|
-
#
|
51
|
-
# Note that if you pass a block to these methods, it will use the default
|
52
|
-
# implementation without the special literal handling.
|
53
|
-
module QueryLiterals
|
54
|
-
%w'select select_append select_group select_more group group_and_count group_append order order_append order_more'.each do |m|
|
55
|
-
class_eval(<<-END, __FILE__, __LINE__ + 1)
|
56
|
-
def #{m}(*args)
|
57
|
-
if !block_given? && (l = query_literal(args))
|
58
|
-
super(l)
|
59
|
-
else
|
60
|
-
super
|
61
|
-
end
|
62
|
-
end
|
63
|
-
END
|
64
|
-
end
|
65
|
-
|
66
|
-
private
|
67
|
-
|
68
|
-
# If the first argument is a plain string, return a literal string
|
69
|
-
# if there are no additional args or a placeholder literal string with
|
70
|
-
# the remaining args. Otherwise, return nil.
|
71
|
-
def query_literal(args)
|
72
|
-
case (s = args[0])
|
73
|
-
when LiteralString, SQL::Blob
|
74
|
-
nil
|
75
|
-
when String
|
76
|
-
if args.length == 1
|
77
|
-
LiteralString.new(s)
|
78
|
-
else
|
79
|
-
SQL::PlaceholderLiteralString.new(s, args[1..-1])
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
Dataset.register_extension(:query_literals, QueryLiterals)
|
86
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The ruby18_symbol_extensions adds the <, <=, >, >= to Symbol
|
4
|
-
# to reflect the mathmatical operators. It also adds the [] method
|
5
|
-
# to Symbol for creating SQL functions.
|
6
|
-
#
|
7
|
-
# Usage of this extension is not recommended. This extension will
|
8
|
-
# only load on ruby 1.8, so you will not be able to upgrade to
|
9
|
-
# newer ruby versions if you use it. If you still want to use it,
|
10
|
-
# you can load it via:
|
11
|
-
#
|
12
|
-
# Sequel.extension :ruby18_symbol_extensions
|
13
|
-
|
14
|
-
raise(Sequel::Error, "The ruby18_symbol_extensions is only available on ruby 1.8.") unless RUBY_VERSION < '1.9.0'
|
15
|
-
|
16
|
-
class Symbol
|
17
|
-
include Sequel::SQL::InequalityMethods
|
18
|
-
|
19
|
-
# Create an SQL Function with the receiver as the function name
|
20
|
-
# and the given arguments.
|
21
|
-
def [](*args)
|
22
|
-
Sequel::SQL::Function.new(self, *args)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# SEQUEL5: Remove extension
|
@@ -1,133 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# This adds the following dataset methods:
|
4
|
-
#
|
5
|
-
# []= :: filter with the first argument, update with the second
|
6
|
-
# insert_multiple :: insert multiple rows at once
|
7
|
-
# set :: alias for update
|
8
|
-
# to_csv :: return string in csv format for the dataset
|
9
|
-
# db= :: change the dataset's database
|
10
|
-
# opts= :: change the dataset's opts
|
11
|
-
#
|
12
|
-
# It is only recommended to use this for backwards compatibility.
|
13
|
-
#
|
14
|
-
# You can load this extension into specific datasets:
|
15
|
-
#
|
16
|
-
# ds = DB[:table]
|
17
|
-
# ds = ds.extension(:sequel_3_dataset_methods)
|
18
|
-
#
|
19
|
-
# Or you can load it into all of a database's datasets, which
|
20
|
-
# is probably the desired behavior if you are using this extension:
|
21
|
-
#
|
22
|
-
# DB.extension(:sequel_3_dataset_methods)
|
23
|
-
#
|
24
|
-
# Related module: Sequel::Sequel3DatasetMethods
|
25
|
-
|
26
|
-
Sequel::Deprecation.deprecate("The sequel_3_dataset_methods extension", "Please consider maintaining it yourself as an external gem if you want to continue using it")
|
27
|
-
|
28
|
-
#
|
29
|
-
module Sequel
|
30
|
-
module Sequel3DatasetMethods
|
31
|
-
COMMA = ', '
|
32
|
-
Sequel::Deprecation.deprecate_constant(self, :COMMA)
|
33
|
-
|
34
|
-
# Change the database for this dataset.
|
35
|
-
def db=(v)
|
36
|
-
raise_if_frozen!("db=")
|
37
|
-
@db = v
|
38
|
-
@cache = {}
|
39
|
-
end
|
40
|
-
|
41
|
-
# Change the options for this dataset.
|
42
|
-
def opts=(v)
|
43
|
-
raise_if_frozen!("opts=")
|
44
|
-
@opts = v
|
45
|
-
@cache = {}
|
46
|
-
end
|
47
|
-
|
48
|
-
# Update all records matching the conditions with the values specified.
|
49
|
-
# Returns the number of rows affected.
|
50
|
-
#
|
51
|
-
# DB[:table][:id=>1] = {:id=>2} # UPDATE table SET id = 2 WHERE id = 1
|
52
|
-
# # => 1 # number of rows affected
|
53
|
-
def []=(conditions, values)
|
54
|
-
where(conditions).update(values)
|
55
|
-
end
|
56
|
-
|
57
|
-
# Inserts multiple values. If a block is given it is invoked for each
|
58
|
-
# item in the given array before inserting it. See +multi_insert+ as
|
59
|
-
# a possibly faster version that may be able to insert multiple
|
60
|
-
# records in one SQL statement (if supported by the database).
|
61
|
-
# Returns an array of primary keys of inserted rows.
|
62
|
-
#
|
63
|
-
# DB[:table].insert_multiple([{:x=>1}, {:x=>2}])
|
64
|
-
# # => [4, 5]
|
65
|
-
# # INSERT INTO table (x) VALUES (1)
|
66
|
-
# # INSERT INTO table (x) VALUES (2)
|
67
|
-
#
|
68
|
-
# DB[:table].insert_multiple([{:x=>1}, {:x=>2}]){|row| row[:y] = row[:x] * 2; row }
|
69
|
-
# # => [6, 7]
|
70
|
-
# # INSERT INTO table (x, y) VALUES (1, 2)
|
71
|
-
# # INSERT INTO table (x, y) VALUES (2, 4)
|
72
|
-
def insert_multiple(array, &block)
|
73
|
-
if block
|
74
|
-
array.map{|i| insert(block.call(i))}
|
75
|
-
else
|
76
|
-
array.map{|i| insert(i)}
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
# Return a copy of the dataset with unqualified identifiers in the
|
81
|
-
# SELECT, WHERE, GROUP, HAVING, and ORDER clauses qualified by the
|
82
|
-
# given table. If no columns are currently selected, select all
|
83
|
-
# columns of the given table.
|
84
|
-
#
|
85
|
-
# DB[:items].where(:id=>1).qualify_to(:i)
|
86
|
-
# # SELECT i.* FROM items WHERE (i.id = 1)
|
87
|
-
def qualify_to(table)
|
88
|
-
qualify(table)
|
89
|
-
end
|
90
|
-
|
91
|
-
# Qualify the dataset to its current first source. This is useful
|
92
|
-
# if you have unqualified identifiers in the query that all refer to
|
93
|
-
# the first source, and you want to join to another table which
|
94
|
-
# has columns with the same name as columns in the current dataset.
|
95
|
-
# See +qualify_to+.
|
96
|
-
#
|
97
|
-
# DB[:items].where(:id=>1).qualify_to_first_source
|
98
|
-
# # SELECT items.* FROM items WHERE (items.id = 1)
|
99
|
-
def qualify_to_first_source
|
100
|
-
qualify
|
101
|
-
end
|
102
|
-
|
103
|
-
# Alias for update, but not aliased directly so subclasses
|
104
|
-
# don't have to override both methods.
|
105
|
-
def set(*args)
|
106
|
-
update(*args)
|
107
|
-
end
|
108
|
-
|
109
|
-
# Returns a string in CSV format containing the dataset records. By
|
110
|
-
# default the CSV representation includes the column titles in the
|
111
|
-
# first line. You can turn that off by passing false as the
|
112
|
-
# include_column_titles argument.
|
113
|
-
#
|
114
|
-
# This does not use a CSV library or handle quoting of values in
|
115
|
-
# any way. If any values in any of the rows could include commas or line
|
116
|
-
# endings, you shouldn't use this.
|
117
|
-
#
|
118
|
-
# puts DB[:table].to_csv # SELECT * FROM table
|
119
|
-
# # id,name
|
120
|
-
# # 1,Jim
|
121
|
-
# # 2,Bob
|
122
|
-
def to_csv(include_column_titles = true)
|
123
|
-
n = naked
|
124
|
-
cols = n.columns
|
125
|
-
csv = String.new
|
126
|
-
csv << "#{cols.join(', ')}\r\n" if include_column_titles
|
127
|
-
n.each{|r| csv << "#{cols.map{|c| r[c]}.join(', ')}\r\n"}
|
128
|
-
csv
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
Dataset.register_extension(:sequel_3_dataset_methods, Sequel3DatasetMethods)
|
133
|
-
end
|
@@ -1,82 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The set_overrides extension adds the Dataset#set_overrides and
|
4
|
-
# Dataset#set_defaults methods which provide a crude way to
|
5
|
-
# control the values used in INSERT/UPDATE statements if a hash
|
6
|
-
# of values is passed to Dataset#insert or Dataset#update.
|
7
|
-
# It is only recommended to use this for backwards compatibility.
|
8
|
-
#
|
9
|
-
# You can load this extension into specific datasets:
|
10
|
-
#
|
11
|
-
# ds = DB[:table]
|
12
|
-
# ds = ds.extension(:set_overrides)
|
13
|
-
#
|
14
|
-
# Or you can load it into all of a database's datasets, which
|
15
|
-
# is probably the desired behavior if you are using this extension:
|
16
|
-
#
|
17
|
-
# DB.extension(:set_overrides)
|
18
|
-
#
|
19
|
-
# Related module: Sequel::SetOverrides
|
20
|
-
|
21
|
-
Sequel::Deprecation.deprecate("The set_overrides extension", "Please consider maintaining it yourself as an external sequel extension if you want to continue using it")
|
22
|
-
|
23
|
-
#
|
24
|
-
module Sequel
|
25
|
-
module SetOverrides
|
26
|
-
Dataset.def_mutation_method(:set_defaults, :set_overrides, :module=>self)
|
27
|
-
|
28
|
-
# Set overrides/defaults for insert hashes
|
29
|
-
def insert_sql(*values)
|
30
|
-
if values.size == 1 && (vals = values.first).is_a?(Hash)
|
31
|
-
super(merge_defaults_overrides(vals))
|
32
|
-
else
|
33
|
-
super
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# Set the default values for insert and update statements. The values hash passed
|
38
|
-
# to insert or update are merged into this hash, so any values in the hash passed
|
39
|
-
# to insert or update will override values passed to this method.
|
40
|
-
#
|
41
|
-
# DB[:items].set_defaults(:a=>'a', :c=>'c').insert(:a=>'d', :b=>'b')
|
42
|
-
# # INSERT INTO items (a, c, b) VALUES ('d', 'c', 'b')
|
43
|
-
def set_defaults(hash)
|
44
|
-
clone(:defaults=>(@opts[:defaults]||{}).merge(hash))
|
45
|
-
end
|
46
|
-
|
47
|
-
# Set values that override hash arguments given to insert and update statements.
|
48
|
-
# This hash is merged into the hash provided to insert or update, so values
|
49
|
-
# will override any values given in the insert/update hashes.
|
50
|
-
#
|
51
|
-
# DB[:items].set_overrides(:a=>'a', :c=>'c').insert(:a=>'d', :b=>'b')
|
52
|
-
# # INSERT INTO items (a, c, b) VALUES ('a', 'c', 'b')
|
53
|
-
def set_overrides(hash)
|
54
|
-
clone(:overrides=>hash.merge(@opts[:overrides]||{}))
|
55
|
-
end
|
56
|
-
|
57
|
-
# Set overrides/defaults for update hashes
|
58
|
-
def update_sql(values = {})
|
59
|
-
if values.is_a?(Hash)
|
60
|
-
super(merge_defaults_overrides(values))
|
61
|
-
else
|
62
|
-
super
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
private
|
67
|
-
|
68
|
-
# Return new hashe with merged defaults and overrides.
|
69
|
-
def merge_defaults_overrides(vals)
|
70
|
-
vals = @opts[:defaults].merge(vals) if @opts[:defaults]
|
71
|
-
vals = vals.merge(@opts[:overrides]) if @opts[:overrides]
|
72
|
-
vals
|
73
|
-
end
|
74
|
-
|
75
|
-
# Dataset options that do not affect the generated SQL.
|
76
|
-
def non_sql_option?(key)
|
77
|
-
super || key == :defaults || key == :overrides
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
Dataset.register_extension(:set_overrides, SetOverrides)
|
82
|
-
end
|
data/lib/sequel/no_core_ext.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
Sequel::Deprecation.deprecate("The association_autoreloading plugin", "This plugin was integrated into the default model behavior in Sequel 4.0, and no longer has an effect")
|
4
|
-
|
5
|
-
module Sequel
|
6
|
-
module Plugins
|
7
|
-
# Empty plugin module for backwards compatibility
|
8
|
-
module AssociationAutoreloading
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
Sequel::Deprecation.deprecate("The identifier_columns plugin", "Set Sequel.split_symbols = false instead")
|
4
|
-
|
5
|
-
module Sequel
|
6
|
-
module Plugins
|
7
|
-
# The identifier_columns plugin makes Sequel automatically
|
8
|
-
# handle column names containing 2 or more consecutive
|
9
|
-
# underscores when creating or updating model objects.
|
10
|
-
# By default, this doesn't work correctly in Sequel, as it
|
11
|
-
# handles such symbols specially.
|
12
|
-
#
|
13
|
-
# This behavior isn't the default as it hurts performance,
|
14
|
-
# and is rarely necessary.
|
15
|
-
#
|
16
|
-
# Usage:
|
17
|
-
#
|
18
|
-
# # Make all model subclasses handle column names
|
19
|
-
# # with two or more underscores when saving
|
20
|
-
# Sequel::Model.plugin :identifier_columns
|
21
|
-
#
|
22
|
-
# # Make the Album class handle column names
|
23
|
-
# # with two or more underscores when saving
|
24
|
-
# Album.plugin :identifier_columns
|
25
|
-
module IdentifierColumns
|
26
|
-
module InstanceMethods
|
27
|
-
private
|
28
|
-
|
29
|
-
# Use identifiers for value hash keys when inserting.
|
30
|
-
def _insert_values
|
31
|
-
identifier_hash(super)
|
32
|
-
end
|
33
|
-
|
34
|
-
# Use identifiers for value hash keys when updating.
|
35
|
-
def _update_without_checking(columns)
|
36
|
-
super(identifier_hash(columns))
|
37
|
-
end
|
38
|
-
|
39
|
-
# Convert the given columns hash from symbol
|
40
|
-
# keys to Sequel::SQL::Identifier keys.
|
41
|
-
def identifier_hash(columns)
|
42
|
-
h = {}
|
43
|
-
columns.each{|k,v| h[Sequel.identifier(k)] = v}
|
44
|
-
h
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|