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,50 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
require 'swift/db/mysql'
|
4
|
-
Sequel.require 'adapters/shared/mysql'
|
5
|
-
|
6
|
-
module Sequel
|
7
|
-
module Swift
|
8
|
-
# Database and Dataset instance methods for MySQL specific
|
9
|
-
# support via Swift.
|
10
|
-
module MySQL
|
11
|
-
# Database instance methods for MySQL databases accessed via Swift.
|
12
|
-
module DatabaseMethods
|
13
|
-
include Sequel::MySQL::DatabaseMethods
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
# The database name for the given database.
|
18
|
-
def database_name
|
19
|
-
opts[:database]
|
20
|
-
end
|
21
|
-
|
22
|
-
# Consider tinyint(1) columns as boolean.
|
23
|
-
def schema_column_type(db_type)
|
24
|
-
db_type =~ /\Atinyint\(1\)/ ? :boolean : super
|
25
|
-
end
|
26
|
-
|
27
|
-
# Apply the connectiong setting SQLs for every new connection.
|
28
|
-
def setup_connection(conn)
|
29
|
-
mysql_connection_setting_sqls.each{|sql| log_connection_yield(sql, conn){conn.execute(sql)}}
|
30
|
-
super
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# Dataset class for MySQL datasets accessed via Swift.
|
35
|
-
class Dataset < Swift::Dataset
|
36
|
-
include Sequel::MySQL::DatasetMethods
|
37
|
-
|
38
|
-
APOS = "'".freeze
|
39
|
-
Sequel::Deprecation.deprecate_constant(self, :APOS)
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
# Use Swift's escape method for quoting.
|
44
|
-
def literal_string_append(sql, s)
|
45
|
-
sql << "'" << db.synchronize(@opts[:server]){|c| c.escape(s)} << "'"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
require 'swift/db/postgres'
|
4
|
-
Sequel.require 'adapters/shared/postgres'
|
5
|
-
|
6
|
-
module Sequel
|
7
|
-
module Swift
|
8
|
-
# Adapter, Database, and Dataset support for accessing a PostgreSQL
|
9
|
-
# database via Swift.
|
10
|
-
module Postgres
|
11
|
-
# Methods to add to Database instances that access PostgreSQL via Swift.
|
12
|
-
module DatabaseMethods
|
13
|
-
include Sequel::Postgres::DatabaseMethods
|
14
|
-
|
15
|
-
# Add the primary_keys and primary_key_sequences instance variables,
|
16
|
-
# so we can get the correct return values for inserted rows.
|
17
|
-
def self.extended(db)
|
18
|
-
super
|
19
|
-
db.send(:initialize_postgres_adapter)
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
DATABASE_ERROR_CLASSES = [::Swift::Error].freeze
|
25
|
-
def database_error_classes
|
26
|
-
DATABASE_ERROR_CLASSES
|
27
|
-
end
|
28
|
-
|
29
|
-
# Remove all other options except for ones specifically handled, as
|
30
|
-
# otherwise swift passes them to dbic++ which passes them to PostgreSQL
|
31
|
-
# which can raise an error.
|
32
|
-
def server_opts(o)
|
33
|
-
o = super
|
34
|
-
so = {}
|
35
|
-
[:db, :user, :password, :host, :port].each{|s| so[s] = o[s] if o.has_key?(s)}
|
36
|
-
so
|
37
|
-
end
|
38
|
-
|
39
|
-
# Extend the adapter with the Swift PostgreSQL AdapterMethods.
|
40
|
-
def setup_connection(conn)
|
41
|
-
conn = super(conn)
|
42
|
-
conn.native_bind_format = true
|
43
|
-
connection_configuration_sqls.each{|sql| log_connection_yield(sql, conn){conn.execute(sql)}}
|
44
|
-
conn
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
require 'swift/db/sqlite3'
|
4
|
-
Sequel.require 'adapters/shared/sqlite'
|
5
|
-
|
6
|
-
module Sequel
|
7
|
-
module Swift
|
8
|
-
# Database and Dataset instance methods for SQLite specific
|
9
|
-
# support via Swift.
|
10
|
-
module SQLite
|
11
|
-
# Database instance methods for SQLite databases accessed via Swift.
|
12
|
-
module DatabaseMethods
|
13
|
-
include Sequel::SQLite::DatabaseMethods
|
14
|
-
|
15
|
-
DATABASE_ERROR_REGEXPS = {
|
16
|
-
/\AUNIQUE constraint failed: / => UniqueConstraintViolation,
|
17
|
-
/\AFOREIGN KEY constraint failed/ => ForeignKeyConstraintViolation,
|
18
|
-
/\ACHECK constraint failed/ => CheckConstraintViolation,
|
19
|
-
/\A(SQLITE ERROR 19 \(CONSTRAINT\) : )?constraint failed/ => ConstraintViolation,
|
20
|
-
/may not be NULL\z|NOT NULL constraint failed: .+/ => NotNullConstraintViolation,
|
21
|
-
/\ASQLITE ERROR \d+ \(\) : CHECK constraint failed: / => CheckConstraintViolation
|
22
|
-
}.freeze
|
23
|
-
def database_error_regexps
|
24
|
-
DATABASE_ERROR_REGEXPS
|
25
|
-
end
|
26
|
-
|
27
|
-
# Set the correct pragmas on the connection.
|
28
|
-
def connect(opts)
|
29
|
-
c = super
|
30
|
-
connection_pragmas.each{|s| log_connection_yield(s, c){c.execute(s)}}
|
31
|
-
c
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# Dataset class for SQLite datasets accessed via Swift.
|
36
|
-
class Dataset < Swift::Dataset
|
37
|
-
include Sequel::SQLite::DatasetMethods
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
# Use Swift's escape method for quoting.
|
42
|
-
def literal_string_append(sql, s)
|
43
|
-
sql << "'" << db.synchronize(@opts[:server]){|c| c.escape(s)} << "'"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,4 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
Sequel::Deprecation.deprecate("requiring sequel/adapters/utils/pg_types", "This file should no longer be required, use Database#conversion_procs to modify conversion procs for a Database instance")
|
4
|
-
Sequel.require 'adapters/shared/postgres'
|
@@ -1,98 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
module Sequel
|
4
|
-
class Dataset
|
5
|
-
# ---------------------
|
6
|
-
# :section: 7 - Mutation methods
|
7
|
-
# These methods modify the receiving dataset and should be used with care.
|
8
|
-
# ---------------------
|
9
|
-
|
10
|
-
# All methods that should have a ! method added that modifies the receiver.
|
11
|
-
MUTATION_METHODS = QUERY_METHODS - [:naked, :from_self]
|
12
|
-
Sequel::Deprecation.deprecate_constant(self, :MUTATION_METHODS)
|
13
|
-
|
14
|
-
# Setup mutation (e.g. filter!) methods. These operate the same as the
|
15
|
-
# non-! methods, but replace the options of the current dataset with the
|
16
|
-
# options of the resulting dataset.
|
17
|
-
#
|
18
|
-
# Do not call this method with untrusted input, as that can result in
|
19
|
-
# arbitrary code execution.
|
20
|
-
def self.def_mutation_method(*meths)
|
21
|
-
options = meths.pop if meths.last.is_a?(Hash)
|
22
|
-
mod = options[:module] if options
|
23
|
-
mod ||= self
|
24
|
-
meths.each do |meth|
|
25
|
-
mod.class_eval("def #{meth}!(*args, &block); mutation_method(:#{meth}, *args, &block) end", __FILE__, __LINE__)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
# Add the mutation methods via metaprogramming
|
30
|
-
def_mutation_method(*(QUERY_METHODS - [:naked, :from_self]))
|
31
|
-
|
32
|
-
# Like #extension, but modifies and returns the receiver instead of returning a modified clone.
|
33
|
-
def extension!(*exts)
|
34
|
-
raise_if_frozen!(%w"extension! extension")
|
35
|
-
_extension!(exts)
|
36
|
-
end
|
37
|
-
|
38
|
-
# Avoid self-referential dataset by cloning.
|
39
|
-
def from_self!(*args, &block)
|
40
|
-
raise_if_frozen!(%w"from_self! from_self")
|
41
|
-
@opts = clone.from_self(*args, &block).opts
|
42
|
-
self
|
43
|
-
end
|
44
|
-
|
45
|
-
# Remove the row_proc from the current dataset.
|
46
|
-
def naked!
|
47
|
-
raise_if_frozen!(%w"naked! naked")
|
48
|
-
@opts[:row_proc] = nil
|
49
|
-
self
|
50
|
-
end
|
51
|
-
|
52
|
-
# Set whether to quote identifiers for this dataset
|
53
|
-
def quote_identifiers=(v)
|
54
|
-
raise_if_frozen!(%w"quote_identifiers= with_quote_identifiers")
|
55
|
-
skip_symbol_cache!
|
56
|
-
@opts[:quote_identifiers] = v
|
57
|
-
end
|
58
|
-
|
59
|
-
# Override the row_proc for this dataset
|
60
|
-
def row_proc=(v)
|
61
|
-
raise_if_frozen!(%w"row_proc= with_row_proc")
|
62
|
-
@opts[:row_proc] = v
|
63
|
-
end
|
64
|
-
|
65
|
-
private
|
66
|
-
|
67
|
-
# Modify the receiver with the results of sending the meth, args, and block
|
68
|
-
# to the receiver and merging the options of the resulting dataset into
|
69
|
-
# the receiver's options.
|
70
|
-
def mutation_method(meth, *args, &block)
|
71
|
-
raise_if_frozen!(["#{meth}!", meth])
|
72
|
-
@opts = send(meth, *args, &block).opts
|
73
|
-
@cache = {}
|
74
|
-
self
|
75
|
-
end
|
76
|
-
|
77
|
-
# Raise a RuntimeError if the receiver is frozen
|
78
|
-
def raise_if_frozen!(meth = nil)
|
79
|
-
if frozen?
|
80
|
-
raise RuntimeError, "can't modify frozen #{visible_class_name}"
|
81
|
-
end
|
82
|
-
case meth
|
83
|
-
when Array
|
84
|
-
meth = " (method called: #{meth.first}, non-mutating replacement: #{meth.last})"
|
85
|
-
when String
|
86
|
-
# :nocov:
|
87
|
-
meth = " (method called: #{meth})"
|
88
|
-
# :nocov:
|
89
|
-
end
|
90
|
-
Sequel::Deprecation.deprecate("Dataset mutation is deprecated and will be removed in Sequel 5#{meth}")
|
91
|
-
end
|
92
|
-
|
93
|
-
# Set the dataset to skip the symbol cache
|
94
|
-
def skip_symbol_cache!
|
95
|
-
@opts[:skip_symbol_cache] = true
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
@@ -1,117 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
#
|
4
|
-
module Sequel
|
5
|
-
module DeprecatedIdentifierMangling
|
6
|
-
module DatabaseMethods
|
7
|
-
def self.extended(db)
|
8
|
-
db.instance_exec do
|
9
|
-
@identifier_input_method = nil
|
10
|
-
@identifier_output_method = nil
|
11
|
-
@quote_identifiers = nil
|
12
|
-
reset_identifier_mangling
|
13
|
-
extend_datasets(DatasetMethods)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
attr_reader :identifier_input_method
|
18
|
-
attr_reader :identifier_output_method
|
19
|
-
|
20
|
-
def identifier_input_method=(v)
|
21
|
-
Sequel::Deprecation.deprecate("Database#identifier_input_method=", "Explicitly load the identifier_mangling extension if you would like to use this")
|
22
|
-
reset_default_dataset
|
23
|
-
@identifier_input_method = v
|
24
|
-
end
|
25
|
-
|
26
|
-
def identifier_output_method=(v)
|
27
|
-
Sequel::Deprecation.deprecate("Database#identifier_output_method=", "Explicitly load the identifier_mangling extension if you would like to use this")
|
28
|
-
reset_default_dataset
|
29
|
-
@identifier_output_method = v
|
30
|
-
end
|
31
|
-
|
32
|
-
def quote_identifiers=(v)
|
33
|
-
Sequel::Deprecation.deprecate("Database#quote_identifiers=", "Explicitly load the identifier_mangling extension if you would like to use this")
|
34
|
-
reset_default_dataset
|
35
|
-
@quote_identifiers = v
|
36
|
-
end
|
37
|
-
|
38
|
-
def quote_identifiers?
|
39
|
-
@quote_identifiers
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def _metadata_dataset
|
45
|
-
super.clone(:identifier_input_method=>identifier_input_method_default, :identifier_output_method=>identifier_output_method_default, :skip_symbol_cache=>true)
|
46
|
-
end
|
47
|
-
|
48
|
-
def identifier_input_method_default
|
49
|
-
return super if defined?(super)
|
50
|
-
:upcase if folds_unquoted_identifiers_to_uppercase?
|
51
|
-
end
|
52
|
-
|
53
|
-
def identifier_output_method_default
|
54
|
-
return super if defined?(super)
|
55
|
-
:downcase if folds_unquoted_identifiers_to_uppercase?
|
56
|
-
end
|
57
|
-
|
58
|
-
def reset_identifier_mangling
|
59
|
-
@quote_identifiers = @opts.fetch(:quote_identifiers){(qi = Database.quote_identifiers).nil? ? quote_identifiers_default : qi}
|
60
|
-
@identifier_input_method = @opts.fetch(:identifier_input_method){(iim = Database.identifier_input_method).nil? ? identifier_input_method_default : (iim if iim)}
|
61
|
-
@identifier_output_method = @opts.fetch(:identifier_output_method){(iom = Database.identifier_output_method).nil? ? identifier_output_method_default : (iom if iom)}
|
62
|
-
reset_default_dataset
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
module DatasetMethods
|
67
|
-
def identifier_input_method
|
68
|
-
@opts.fetch(:identifier_input_method, db.identifier_input_method)
|
69
|
-
end
|
70
|
-
|
71
|
-
def identifier_input_method=(v)
|
72
|
-
Sequel::Deprecation.deprecate("Dataset#identifier_input_method=", "Explicitly load the identifier_mangling extension if you would like to use this")
|
73
|
-
raise_if_frozen!(%w"identifier_input_method= with_identifier_input_method")
|
74
|
-
skip_symbol_cache!
|
75
|
-
@opts[:identifier_input_method] = v
|
76
|
-
end
|
77
|
-
|
78
|
-
def identifier_output_method
|
79
|
-
@opts.fetch(:identifier_output_method, db.identifier_output_method)
|
80
|
-
end
|
81
|
-
|
82
|
-
def identifier_output_method=(v)
|
83
|
-
Sequel::Deprecation.deprecate("Dataset#identifier_output_method=", "Explicitly load the identifier_mangling extension if you would like to use this")
|
84
|
-
raise_if_frozen!(%w"identifier_output_method= with_identifier_output_method")
|
85
|
-
@opts[:identifier_output_method] = v
|
86
|
-
end
|
87
|
-
|
88
|
-
def quote_identifiers?
|
89
|
-
@opts.fetch(:quote_identifiers, db.quote_identifiers?)
|
90
|
-
end
|
91
|
-
|
92
|
-
def with_identifier_input_method(meth)
|
93
|
-
Sequel::Deprecation.deprecate("Dataset#with_identifier_input_method", "Explicitly load the identifier_mangling extension if you would like to use this")
|
94
|
-
clone(:identifier_input_method=>meth, :skip_symbol_cache=>true)
|
95
|
-
end
|
96
|
-
|
97
|
-
def with_identifier_output_method(meth)
|
98
|
-
Sequel::Deprecation.deprecate("Dataset#with_identifier_output_method", "Explicitly load the identifier_mangling extension if you would like to use this")
|
99
|
-
clone(:identifier_output_method=>meth)
|
100
|
-
end
|
101
|
-
|
102
|
-
private
|
103
|
-
|
104
|
-
def input_identifier(v)
|
105
|
-
(i = identifier_input_method) ? v.to_s.send(i) : v.to_s
|
106
|
-
end
|
107
|
-
|
108
|
-
def output_identifier(v)
|
109
|
-
v = 'untitled' if v == ''
|
110
|
-
(i = identifier_output_method) ? v.to_s.send(i).to_sym : v.to_sym
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
Database.register_extension(:_deprecated_identifier_mangling, DeprecatedIdentifierMangling::DatabaseMethods)
|
116
|
-
end
|
117
|
-
|
@@ -1,8 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# This only exists for backwards compatibility, as the behavior
|
4
|
-
# added by this extension is now the default Sequel behavior.
|
5
|
-
|
6
|
-
Sequel::Deprecation.deprecate("The empty_array_ignore_nulls", "It has been a no-op since 4.25.0")
|
7
|
-
|
8
|
-
Sequel::Dataset.register_extension(:empty_array_ignore_nulls){}
|
@@ -1,65 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The filter_having extension allows Dataset#filter, #and, #or
|
4
|
-
# and #exclude to operate on the HAVING clause if the dataset
|
5
|
-
# already has a HAVING clause, which was the historical behavior
|
6
|
-
# before Sequel 4. It is only recommended to use this for
|
7
|
-
# backwards compatibility.
|
8
|
-
#
|
9
|
-
# You can load this extension into specific datasets:
|
10
|
-
#
|
11
|
-
# ds = DB[:table]
|
12
|
-
# ds = ds.extension(:filter_having)
|
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(:filter_having)
|
18
|
-
#
|
19
|
-
# Related module: Sequel::FilterHaving
|
20
|
-
|
21
|
-
Sequel::Deprecation.deprecate("The filter_having extension", "Please consider maintaining it yourself as an external gem if you want to continue using it")
|
22
|
-
|
23
|
-
#
|
24
|
-
module Sequel
|
25
|
-
module FilterHaving
|
26
|
-
# Operate on HAVING clause if HAVING clause already present.
|
27
|
-
def and(*cond, &block)
|
28
|
-
if @opts[:having]
|
29
|
-
having(*cond, &block)
|
30
|
-
else
|
31
|
-
super
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# Operate on HAVING clause if HAVING clause already present.
|
36
|
-
def exclude(*cond, &block)
|
37
|
-
if @opts[:having]
|
38
|
-
exclude_having(*cond, &block)
|
39
|
-
else
|
40
|
-
super
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
# Operate on HAVING clause if HAVING clause already present.
|
45
|
-
def filter(*cond, &block)
|
46
|
-
if @opts[:having]
|
47
|
-
having(*cond, &block)
|
48
|
-
else
|
49
|
-
super
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# Operate on HAVING clause if HAVING clause already present.
|
54
|
-
def or(*cond, &block)
|
55
|
-
if having = @opts[:having]
|
56
|
-
cond = cond.first if cond.size == 1
|
57
|
-
clone(:having => SQL::BooleanExpression.new(:OR, having, filter_expr(cond, &block)))
|
58
|
-
else
|
59
|
-
super
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
Dataset.register_extension(:filter_having, FilterHaving)
|
65
|
-
end
|