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
data/lib/sequel/dataset/sql.rb
CHANGED
@@ -17,7 +17,7 @@ module Sequel
|
|
17
17
|
|
18
18
|
# Returns an INSERT SQL query string. See +insert+.
|
19
19
|
#
|
20
|
-
# DB[:items].insert_sql(:
|
20
|
+
# DB[:items].insert_sql(a: 1)
|
21
21
|
# # => "INSERT INTO items (a) VALUES (1)"
|
22
22
|
def insert_sql(*values)
|
23
23
|
return static_sql(@opts[:sql]) if @opts[:sql]
|
@@ -112,9 +112,6 @@ module Sequel
|
|
112
112
|
# Returns an array of insert statements for inserting multiple records.
|
113
113
|
# This method is used by +multi_insert+ to format insert statements and
|
114
114
|
# expects a keys array and and an array of value arrays.
|
115
|
-
#
|
116
|
-
# This method should be overridden by descendants if the support
|
117
|
-
# inserting multiple records in a single SQL statement.
|
118
115
|
def multi_insert_sql(columns, values)
|
119
116
|
case multi_insert_sql_strategy
|
120
117
|
when :values
|
@@ -165,7 +162,7 @@ module Sequel
|
|
165
162
|
|
166
163
|
# Formats an UPDATE statement using the given values. See +update+.
|
167
164
|
#
|
168
|
-
# DB[:items].update_sql(:
|
165
|
+
# DB[:items].update_sql(price: 100, category: 'software')
|
169
166
|
# # => "UPDATE items SET price = 100, category = 'software'
|
170
167
|
#
|
171
168
|
# Raises an +Error+ if the dataset is grouped or includes more
|
@@ -179,8 +176,7 @@ module Sequel
|
|
179
176
|
when LiteralString
|
180
177
|
# nothing
|
181
178
|
when String
|
182
|
-
|
183
|
-
# raise Error, "plain string passed to Dataset#update" # SEQUEL5
|
179
|
+
raise Error, "plain string passed to Dataset#update is not supported, use Sequel.lit to use a literal string"
|
184
180
|
end
|
185
181
|
|
186
182
|
clone(:values=>values).send(:_update_sql)
|
@@ -246,10 +242,10 @@ module Sequel
|
|
246
242
|
DEFAULT = LiteralString.new('DEFAULT').freeze
|
247
243
|
|
248
244
|
EXISTS = ['EXISTS '.freeze].freeze
|
249
|
-
BITWISE_METHOD_MAP = {:& =>:BITAND, :| => :BITOR, :^ => :BITXOR}
|
250
|
-
COUNT_FROM_SELF_OPTS = [:distinct, :group, :sql, :limit, :offset, :compounds]
|
245
|
+
BITWISE_METHOD_MAP = {:& =>:BITAND, :| => :BITOR, :^ => :BITXOR}.freeze
|
246
|
+
COUNT_FROM_SELF_OPTS = [:distinct, :group, :sql, :limit, :offset, :compounds].freeze
|
251
247
|
IS_LITERALS = {nil=>'NULL'.freeze, true=>'TRUE'.freeze, false=>'FALSE'.freeze}.freeze
|
252
|
-
QUALIFY_KEYS = [:select, :where, :having, :order, :group]
|
248
|
+
QUALIFY_KEYS = [:select, :where, :having, :order, :group].freeze
|
253
249
|
|
254
250
|
IS_OPERATORS = ::Sequel::SQL::ComplexExpression::IS_OPERATORS
|
255
251
|
LIKE_OPERATORS = ::Sequel::SQL::ComplexExpression::LIKE_OPERATORS
|
@@ -257,196 +253,6 @@ module Sequel
|
|
257
253
|
TWO_ARITY_OPERATORS = ::Sequel::SQL::ComplexExpression::TWO_ARITY_OPERATORS
|
258
254
|
REGEXP_OPERATORS = ::Sequel::SQL::ComplexExpression::REGEXP_OPERATORS
|
259
255
|
|
260
|
-
EMULATED_FUNCTION_MAP = {}
|
261
|
-
Sequel::Deprecation.deprecate_constant(self, :EMULATED_FUNCTION_MAP)
|
262
|
-
|
263
|
-
ALL = ' ALL'.freeze
|
264
|
-
Sequel::Deprecation.deprecate_constant(self, :ALL)
|
265
|
-
AND_SEPARATOR = " AND ".freeze
|
266
|
-
Sequel::Deprecation.deprecate_constant(self, :AND_SEPARATOR)
|
267
|
-
APOS = "'".freeze
|
268
|
-
Sequel::Deprecation.deprecate_constant(self, :APOS)
|
269
|
-
APOS_RE = /'/.freeze
|
270
|
-
Sequel::Deprecation.deprecate_constant(self, :APOS_RE)
|
271
|
-
ARRAY_EMPTY = '(NULL)'.freeze
|
272
|
-
Sequel::Deprecation.deprecate_constant(self, :ARRAY_EMPTY)
|
273
|
-
AS = ' AS '.freeze
|
274
|
-
Sequel::Deprecation.deprecate_constant(self, :AS)
|
275
|
-
ASC = ' ASC'.freeze
|
276
|
-
Sequel::Deprecation.deprecate_constant(self, :ASC)
|
277
|
-
BACKSLASH = "\\".freeze
|
278
|
-
Sequel::Deprecation.deprecate_constant(self, :BACKSLASH)
|
279
|
-
BITCOMP_CLOSE = ") - 1)".freeze
|
280
|
-
Sequel::Deprecation.deprecate_constant(self, :BITCOMP_CLOSE)
|
281
|
-
BITCOMP_OPEN = "((0 - ".freeze
|
282
|
-
Sequel::Deprecation.deprecate_constant(self, :BITCOMP_OPEN)
|
283
|
-
BOOL_FALSE = "'f'".freeze
|
284
|
-
Sequel::Deprecation.deprecate_constant(self, :BOOL_FALSE)
|
285
|
-
BOOL_TRUE = "'t'".freeze
|
286
|
-
Sequel::Deprecation.deprecate_constant(self, :BOOL_TRUE)
|
287
|
-
BRACKET_CLOSE = ']'.freeze
|
288
|
-
Sequel::Deprecation.deprecate_constant(self, :BRACKET_CLOSE)
|
289
|
-
BRACKET_OPEN = '['.freeze
|
290
|
-
Sequel::Deprecation.deprecate_constant(self, :BRACKET_OPEN)
|
291
|
-
CASE_ELSE = " ELSE ".freeze
|
292
|
-
Sequel::Deprecation.deprecate_constant(self, :CASE_ELSE)
|
293
|
-
CASE_END = " END)".freeze
|
294
|
-
Sequel::Deprecation.deprecate_constant(self, :CASE_END)
|
295
|
-
CASE_OPEN = '(CASE'.freeze
|
296
|
-
Sequel::Deprecation.deprecate_constant(self, :CASE_OPEN)
|
297
|
-
CASE_THEN = " THEN ".freeze
|
298
|
-
Sequel::Deprecation.deprecate_constant(self, :CASE_THEN)
|
299
|
-
CASE_WHEN = " WHEN ".freeze
|
300
|
-
Sequel::Deprecation.deprecate_constant(self, :CASE_WHEN)
|
301
|
-
CAST_OPEN = 'CAST('.freeze
|
302
|
-
Sequel::Deprecation.deprecate_constant(self, :CAST_OPEN)
|
303
|
-
COLON = ':'.freeze
|
304
|
-
Sequel::Deprecation.deprecate_constant(self, :COLON)
|
305
|
-
COLUMN_REF_RE1 = /\A((?:(?!__).)+)__((?:(?!___).)+)___(.+)\z/.freeze
|
306
|
-
Sequel::Deprecation.deprecate_constant(self, :COLUMN_REF_RE1)
|
307
|
-
COLUMN_REF_RE2 = /\A((?:(?!___).)+)___(.+)\z/.freeze
|
308
|
-
Sequel::Deprecation.deprecate_constant(self, :COLUMN_REF_RE2)
|
309
|
-
COLUMN_REF_RE3 = /\A((?:(?!__).)+)__(.+)\z/.freeze
|
310
|
-
Sequel::Deprecation.deprecate_constant(self, :COLUMN_REF_RE3)
|
311
|
-
COMMA = ', '.freeze
|
312
|
-
Sequel::Deprecation.deprecate_constant(self, :COMMA)
|
313
|
-
COMMA_SEPARATOR = ', '.freeze
|
314
|
-
Sequel::Deprecation.deprecate_constant(self, :COMMA_SEPARATOR)
|
315
|
-
CONDITION_FALSE = '(1 = 0)'.freeze
|
316
|
-
Sequel::Deprecation.deprecate_constant(self, :CONDITION_FALSE)
|
317
|
-
CONDITION_TRUE = '(1 = 1)'.freeze
|
318
|
-
Sequel::Deprecation.deprecate_constant(self, :CONDITION_TRUE)
|
319
|
-
DATASET_ALIAS_BASE_NAME = 't'.freeze
|
320
|
-
Sequel::Deprecation.deprecate_constant(self, :DATASET_ALIAS_BASE_NAME)
|
321
|
-
DATETIME_SECFRACTION_ARG = RUBY_VERSION >= '1.9.0' ? 1000000 : 86400000000
|
322
|
-
Sequel::Deprecation.deprecate_constant(self, :DATETIME_SECFRACTION_ARG)
|
323
|
-
DEFAULT_VALUES = " DEFAULT VALUES".freeze
|
324
|
-
Sequel::Deprecation.deprecate_constant(self, :DEFAULT_VALUES)
|
325
|
-
DELETE = 'DELETE'.freeze
|
326
|
-
Sequel::Deprecation.deprecate_constant(self, :DELETE)
|
327
|
-
DESC = ' DESC'.freeze
|
328
|
-
Sequel::Deprecation.deprecate_constant(self, :DESC)
|
329
|
-
DISTINCT = " DISTINCT".freeze
|
330
|
-
Sequel::Deprecation.deprecate_constant(self, :DISTINCT)
|
331
|
-
DOT = '.'.freeze
|
332
|
-
Sequel::Deprecation.deprecate_constant(self, :DOT)
|
333
|
-
DOUBLE_APOS = "''".freeze
|
334
|
-
Sequel::Deprecation.deprecate_constant(self, :DOUBLE_APOS)
|
335
|
-
DOUBLE_QUOTE = '""'.freeze
|
336
|
-
Sequel::Deprecation.deprecate_constant(self, :DOUBLE_QUOTE)
|
337
|
-
EQUAL = ' = '.freeze
|
338
|
-
Sequel::Deprecation.deprecate_constant(self, :EQUAL)
|
339
|
-
EMPTY_PARENS = '()'.freeze
|
340
|
-
Sequel::Deprecation.deprecate_constant(self, :EMPTY_PARENS)
|
341
|
-
ESCAPE = " ESCAPE ".freeze
|
342
|
-
Sequel::Deprecation.deprecate_constant(self, :ESCAPE)
|
343
|
-
EXTRACT = 'extract('.freeze
|
344
|
-
Sequel::Deprecation.deprecate_constant(self, :EXTRACT)
|
345
|
-
FILTER = " FILTER (WHERE ".freeze
|
346
|
-
Sequel::Deprecation.deprecate_constant(self, :FILTER)
|
347
|
-
FOR_UPDATE = ' FOR UPDATE'.freeze
|
348
|
-
Sequel::Deprecation.deprecate_constant(self, :FOR_UPDATE)
|
349
|
-
FORMAT_DATE = "'%Y-%m-%d'".freeze
|
350
|
-
Sequel::Deprecation.deprecate_constant(self, :FORMAT_DATE)
|
351
|
-
FORMAT_DATE_STANDARD = "DATE '%Y-%m-%d'".freeze
|
352
|
-
Sequel::Deprecation.deprecate_constant(self, :FORMAT_DATE_STANDARD)
|
353
|
-
FORMAT_OFFSET = "%+03i%02i".freeze
|
354
|
-
Sequel::Deprecation.deprecate_constant(self, :FORMAT_OFFSET)
|
355
|
-
FORMAT_TIMESTAMP_RE = /%[Nz]/.freeze
|
356
|
-
Sequel::Deprecation.deprecate_constant(self, :FORMAT_TIMESTAMP_RE)
|
357
|
-
FORMAT_USEC = '%N'.freeze
|
358
|
-
Sequel::Deprecation.deprecate_constant(self, :FORMAT_USEC)
|
359
|
-
FRAME_ALL = "ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING".freeze
|
360
|
-
Sequel::Deprecation.deprecate_constant(self, :FRAME_ALL)
|
361
|
-
FRAME_ROWS = "ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW".freeze
|
362
|
-
Sequel::Deprecation.deprecate_constant(self, :FRAME_ROWS)
|
363
|
-
FROM = ' FROM '.freeze
|
364
|
-
Sequel::Deprecation.deprecate_constant(self, :FROM)
|
365
|
-
FUNCTION_DISTINCT = "DISTINCT ".freeze
|
366
|
-
Sequel::Deprecation.deprecate_constant(self, :FUNCTION_DISTINCT)
|
367
|
-
GROUP_BY = " GROUP BY ".freeze
|
368
|
-
Sequel::Deprecation.deprecate_constant(self, :GROUP_BY)
|
369
|
-
HAVING = " HAVING ".freeze
|
370
|
-
Sequel::Deprecation.deprecate_constant(self, :HAVING)
|
371
|
-
INSERT = "INSERT".freeze
|
372
|
-
Sequel::Deprecation.deprecate_constant(self, :INSERT)
|
373
|
-
INTO = " INTO ".freeze
|
374
|
-
Sequel::Deprecation.deprecate_constant(self, :INTO)
|
375
|
-
LATERAL = 'LATERAL '.freeze
|
376
|
-
Sequel::Deprecation.deprecate_constant(self, :LATERAL)
|
377
|
-
LIMIT = " LIMIT ".freeze
|
378
|
-
Sequel::Deprecation.deprecate_constant(self, :LIMIT)
|
379
|
-
NOT_SPACE = 'NOT '.freeze
|
380
|
-
Sequel::Deprecation.deprecate_constant(self, :NOT_SPACE)
|
381
|
-
NULL = "NULL".freeze
|
382
|
-
Sequel::Deprecation.deprecate_constant(self, :NULL)
|
383
|
-
NULLS_FIRST = " NULLS FIRST".freeze
|
384
|
-
Sequel::Deprecation.deprecate_constant(self, :NULLS_FIRST)
|
385
|
-
NULLS_LAST = " NULLS LAST".freeze
|
386
|
-
Sequel::Deprecation.deprecate_constant(self, :NULLS_LAST)
|
387
|
-
OFFSET = " OFFSET ".freeze
|
388
|
-
Sequel::Deprecation.deprecate_constant(self, :OFFSET)
|
389
|
-
ON = ' ON '.freeze
|
390
|
-
Sequel::Deprecation.deprecate_constant(self, :ON)
|
391
|
-
ON_PAREN = " ON (".freeze
|
392
|
-
Sequel::Deprecation.deprecate_constant(self, :ON_PAREN)
|
393
|
-
ORDER_BY = " ORDER BY ".freeze
|
394
|
-
Sequel::Deprecation.deprecate_constant(self, :ORDER_BY)
|
395
|
-
ORDER_BY_NS = "ORDER BY ".freeze
|
396
|
-
Sequel::Deprecation.deprecate_constant(self, :ORDER_BY_NS)
|
397
|
-
OVER = ' OVER '.freeze
|
398
|
-
Sequel::Deprecation.deprecate_constant(self, :OVER)
|
399
|
-
PAREN_CLOSE = ')'.freeze
|
400
|
-
Sequel::Deprecation.deprecate_constant(self, :PAREN_CLOSE)
|
401
|
-
PAREN_OPEN = '('.freeze
|
402
|
-
Sequel::Deprecation.deprecate_constant(self, :PAREN_OPEN)
|
403
|
-
PAREN_SPACE_OPEN = ' ('.freeze
|
404
|
-
Sequel::Deprecation.deprecate_constant(self, :PAREN_SPACE_OPEN)
|
405
|
-
PARTITION_BY = "PARTITION BY ".freeze
|
406
|
-
Sequel::Deprecation.deprecate_constant(self, :PARTITION_BY)
|
407
|
-
QUESTION_MARK = '?'.freeze
|
408
|
-
Sequel::Deprecation.deprecate_constant(self, :QUESTION_MARK)
|
409
|
-
QUESTION_MARK_RE = /\?/.freeze
|
410
|
-
Sequel::Deprecation.deprecate_constant(self, :QUESTION_MARK_RE)
|
411
|
-
QUOTE = '"'.freeze
|
412
|
-
Sequel::Deprecation.deprecate_constant(self, :QUOTE)
|
413
|
-
QUOTE_RE = /"/.freeze
|
414
|
-
Sequel::Deprecation.deprecate_constant(self, :QUOTE_RE)
|
415
|
-
RETURNING = " RETURNING ".freeze
|
416
|
-
Sequel::Deprecation.deprecate_constant(self, :RETURNING)
|
417
|
-
SELECT = 'SELECT'.freeze
|
418
|
-
Sequel::Deprecation.deprecate_constant(self, :SELECT)
|
419
|
-
SET = ' SET '.freeze
|
420
|
-
Sequel::Deprecation.deprecate_constant(self, :SET)
|
421
|
-
SPACE = ' '.freeze
|
422
|
-
Sequel::Deprecation.deprecate_constant(self, :SPACE)
|
423
|
-
SQL_WITH = "WITH ".freeze
|
424
|
-
Sequel::Deprecation.deprecate_constant(self, :SQL_WITH)
|
425
|
-
SPACE_WITH = " WITH ".freeze
|
426
|
-
Sequel::Deprecation.deprecate_constant(self, :SPACE_WITH)
|
427
|
-
TILDE = '~'.freeze
|
428
|
-
Sequel::Deprecation.deprecate_constant(self, :TILDE)
|
429
|
-
TIMESTAMP_FORMAT = "'%Y-%m-%d %H:%M:%S%N%z'".freeze
|
430
|
-
Sequel::Deprecation.deprecate_constant(self, :TIMESTAMP_FORMAT)
|
431
|
-
STANDARD_TIMESTAMP_FORMAT = "TIMESTAMP '%Y-%m-%d %H:%M:%S%N%z'".freeze
|
432
|
-
Sequel::Deprecation.deprecate_constant(self, :STANDARD_TIMESTAMP_FORMAT)
|
433
|
-
UNDERSCORE = '_'.freeze
|
434
|
-
Sequel::Deprecation.deprecate_constant(self, :UNDERSCORE)
|
435
|
-
UPDATE = 'UPDATE'.freeze
|
436
|
-
Sequel::Deprecation.deprecate_constant(self, :UPDATE)
|
437
|
-
USING = ' USING ('.freeze
|
438
|
-
Sequel::Deprecation.deprecate_constant(self, :USING)
|
439
|
-
UNION_ALL_SELECT = ' UNION ALL SELECT '.freeze
|
440
|
-
Sequel::Deprecation.deprecate_constant(self, :UNION_ALL_SELECT)
|
441
|
-
VALUES = " VALUES ".freeze
|
442
|
-
Sequel::Deprecation.deprecate_constant(self, :VALUES)
|
443
|
-
WHERE = " WHERE ".freeze
|
444
|
-
Sequel::Deprecation.deprecate_constant(self, :WHERE)
|
445
|
-
WITH_ORDINALITY = " WITH ORDINALITY".freeze
|
446
|
-
Sequel::Deprecation.deprecate_constant(self, :WITH_ORDINALITY)
|
447
|
-
WITHIN_GROUP = " WITHIN GROUP (ORDER BY ".freeze
|
448
|
-
Sequel::Deprecation.deprecate_constant(self, :WITHIN_GROUP)
|
449
|
-
|
450
256
|
[:literal, :quote_identifier, :quote_schema_table].each do |meth|
|
451
257
|
class_eval(<<-END, __FILE__, __LINE__ + 1)
|
452
258
|
def #{meth}(*args, &block)
|
@@ -874,9 +680,9 @@ module Sequel
|
|
874
680
|
# Splits table_name into an array of strings.
|
875
681
|
#
|
876
682
|
# ds.split_qualifiers(:s) # ['s']
|
877
|
-
# ds.split_qualifiers(:
|
878
|
-
# ds.split_qualifiers(Sequel[:d][:
|
879
|
-
# ds.split_qualifiers(Sequel[:
|
683
|
+
# ds.split_qualifiers(Sequel[:t][:s]) # ['t', 's']
|
684
|
+
# ds.split_qualifiers(Sequel[:d][:t][:s]) # ['d', 't', 's']
|
685
|
+
# ds.split_qualifiers(Sequel.qualify(Sequel[:h][:d], Sequel[:t][:s])) # ['h', 'd', 't', 's']
|
880
686
|
def split_qualifiers(table_name, *args)
|
881
687
|
case table_name
|
882
688
|
when SQL::QualifiedIdentifier
|
@@ -889,9 +695,10 @@ module Sequel
|
|
889
695
|
|
890
696
|
# Append literalization of subscripts (SQL array accesses) to SQL string.
|
891
697
|
def subscript_sql_append(sql, s)
|
892
|
-
literal_append(sql, s.
|
698
|
+
literal_append(sql, s.expression)
|
893
699
|
sql << '['
|
894
|
-
|
700
|
+
sub = s.sub
|
701
|
+
if sub.length == 1 && (range = sub.first).is_a?(Range)
|
895
702
|
literal_append(sql, range.begin)
|
896
703
|
sql << ':'
|
897
704
|
e = range.end
|
@@ -1015,25 +822,21 @@ module Sequel
|
|
1015
822
|
end
|
1016
823
|
end
|
1017
824
|
|
1018
|
-
#
|
1019
|
-
# specifically been marked as not allowing SQL caching.
|
825
|
+
# Don't allow caching SQL if specifically marked not to.
|
1020
826
|
def cache_sql?
|
1021
|
-
|
827
|
+
!@opts[:no_cache_sql] && !cache_get(:_no_cache_sql)
|
1022
828
|
end
|
1023
829
|
|
1024
|
-
# Raise an InvalidOperation exception if deletion is not allowed
|
1025
|
-
# for this dataset
|
830
|
+
# Raise an InvalidOperation exception if deletion is not allowed for this dataset.
|
1026
831
|
def check_modification_allowed!
|
1027
832
|
raise(InvalidOperation, "Grouped datasets cannot be modified") if opts[:group]
|
1028
833
|
raise(InvalidOperation, "Joined datasets cannot be modified") if !supports_modifying_joins? && joined_dataset?
|
1029
834
|
end
|
1030
835
|
|
1031
|
-
#
|
836
|
+
# Raise error if the dataset uses limits or offsets.
|
1032
837
|
def check_not_limited!(type)
|
1033
838
|
return if @opts[:skip_limit_check] && type != :truncate
|
1034
|
-
|
1035
|
-
#raise InvalidOperation, "Dataset##{type} not supported on datasets with limits or offsets" if opts[:limit] || opts[:offset]
|
1036
|
-
Sequel::Deprecation.deprecate("Dataset##{type} on datasets with limits or offsets", "Call unlimited to remove the limit #{'or skip_limit_check to ignore the limit ' unless type == :truncate}before calling #{type}") if @opts[:limit] || @opts[:offset]
|
839
|
+
raise InvalidOperation, "Dataset##{type} not supported on datasets with limits or offsets" if opts[:limit] || opts[:offset]
|
1037
840
|
end
|
1038
841
|
|
1039
842
|
# Alias of check_modification_allowed!
|
@@ -1042,8 +845,7 @@ module Sequel
|
|
1042
845
|
end
|
1043
846
|
|
1044
847
|
# Append column list to SQL string.
|
1045
|
-
#
|
1046
|
-
# column names. If the array is empty, a wildcard (*) is returned.
|
848
|
+
# If the column list is empty, a wildcard (*) is appended.
|
1047
849
|
def column_list_append(sql, columns)
|
1048
850
|
if (columns.nil? || columns.empty?)
|
1049
851
|
sql << '*'
|
@@ -1138,7 +940,8 @@ module Sequel
|
|
1138
940
|
false
|
1139
941
|
end
|
1140
942
|
|
1141
|
-
# Append literalization of array of expressions to SQL string
|
943
|
+
# Append literalization of array of expressions to SQL string, separating them
|
944
|
+
# with commas.
|
1142
945
|
def expression_list_append(sql, columns)
|
1143
946
|
c = false
|
1144
947
|
co = ', '
|
@@ -1149,7 +952,7 @@ module Sequel
|
|
1149
952
|
end
|
1150
953
|
end
|
1151
954
|
|
1152
|
-
# Append literalization of array of grouping elements to SQL string.
|
955
|
+
# Append literalization of array of grouping elements to SQL string, seperating them with commas.
|
1153
956
|
def grouping_element_list_append(sql, columns)
|
1154
957
|
c = false
|
1155
958
|
co = ', '
|
@@ -1177,7 +980,10 @@ module Sequel
|
|
1177
980
|
v2 = db.from_application_timestamp(v)
|
1178
981
|
fmt = default_timestamp_format.gsub(/%[Nz]/) do |m|
|
1179
982
|
if m == '%N'
|
1180
|
-
|
983
|
+
# Ruby 1.9 supports %N in timestamp formats, but Sequel has supported %N
|
984
|
+
# for longer in a different way, where the . is already appended and only 6
|
985
|
+
# decimal places are used by default.
|
986
|
+
format_timestamp_usec(v.is_a?(DateTime) ? v.sec_fraction*(1000000) : v.usec) if supports_timestamp_usecs?
|
1181
987
|
else
|
1182
988
|
if supports_timestamp_timezones?
|
1183
989
|
# Would like to just use %z format, but it doesn't appear to work on Windows
|
@@ -1407,7 +1213,7 @@ module Sequel
|
|
1407
1213
|
|
1408
1214
|
# Append literalization of string to SQL string.
|
1409
1215
|
def literal_string_append(sql, v)
|
1410
|
-
sql << "'" << v.gsub(
|
1216
|
+
sql << "'" << v.gsub("'", "''") << "'"
|
1411
1217
|
end
|
1412
1218
|
|
1413
1219
|
# Append literalization of symbol to SQL string.
|
@@ -1471,7 +1277,7 @@ module Sequel
|
|
1471
1277
|
end
|
1472
1278
|
end
|
1473
1279
|
|
1474
|
-
# Qualify the given expression
|
1280
|
+
# Qualify the given expression to the given table.
|
1475
1281
|
def qualified_expression(e, table)
|
1476
1282
|
Qualifier.new(table).transform(e)
|
1477
1283
|
end
|
@@ -1494,7 +1300,7 @@ module Sequel
|
|
1494
1300
|
|
1495
1301
|
# Modify the sql to add a dataset to the via an EXCEPT, INTERSECT, or UNION clause.
|
1496
1302
|
# This uses a subselect for the compound datasets used, because using parantheses doesn't
|
1497
|
-
# work on all databases.
|
1303
|
+
# work on all databases.
|
1498
1304
|
def select_compounds_sql(sql)
|
1499
1305
|
return unless c = @opts[:compounds]
|
1500
1306
|
c.each do |type, dataset, all|
|
@@ -1626,7 +1432,6 @@ module Sequel
|
|
1626
1432
|
alias insert_with_sql select_with_sql
|
1627
1433
|
alias update_with_sql select_with_sql
|
1628
1434
|
|
1629
|
-
# The base keyword to use for the SQL WITH clause
|
1630
1435
|
def select_with_sql_base
|
1631
1436
|
"WITH "
|
1632
1437
|
end
|
@@ -1649,7 +1454,7 @@ module Sequel
|
|
1649
1454
|
end
|
1650
1455
|
|
1651
1456
|
# The string that is appended to to create the SQL query, the empty
|
1652
|
-
# string by default
|
1457
|
+
# string by default.
|
1653
1458
|
def sql_string_origin
|
1654
1459
|
String.new
|
1655
1460
|
end
|
@@ -1680,7 +1485,7 @@ module Sequel
|
|
1680
1485
|
end
|
1681
1486
|
end
|
1682
1487
|
|
1683
|
-
# Append literalization of the subselect to SQL
|
1488
|
+
# Append literalization of the subselect to SQL string.
|
1684
1489
|
def subselect_sql_append(sql, ds)
|
1685
1490
|
ds.clone(:append_sql=>sql).sql
|
1686
1491
|
end
|
data/lib/sequel/deprecated.rb
CHANGED
@@ -20,7 +20,7 @@ module Sequel
|
|
20
20
|
module Deprecation
|
21
21
|
@backtrace_filter = 10
|
22
22
|
@output = $stderr
|
23
|
-
@prefix = "SEQUEL DEPRECATION WARNING: "
|
23
|
+
@prefix = "SEQUEL DEPRECATION WARNING: ".freeze
|
24
24
|
|
25
25
|
class << self
|
26
26
|
# How to filter backtraces. +false+ does not include backtraces, +true+ includes
|
@@ -36,34 +36,25 @@ module Sequel
|
|
36
36
|
attr_accessor :prefix
|
37
37
|
end
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
message = "#{prefix}#{message}" if prefix
|
52
|
-
output.puts(message)
|
53
|
-
case b = backtrace_filter
|
54
|
-
when Integer
|
55
|
-
caller.each do |c|
|
56
|
-
b -= 1
|
57
|
-
output.puts(c)
|
58
|
-
break if b <= 0
|
59
|
-
end
|
60
|
-
when true
|
61
|
-
caller.each{|c| output.puts(c)}
|
62
|
-
when Proc
|
63
|
-
caller.each_with_index{|line, line_no| output.puts(line) if b.call(line, line_no)}
|
39
|
+
# Print the message and possibly backtrace to the output.
|
40
|
+
def self.deprecate(method, instead=nil)
|
41
|
+
return unless output
|
42
|
+
message = instead ? "#{method} is deprecated and will be removed in Sequel 5.1. #{instead}." : method
|
43
|
+
message = "#{prefix}#{message}" if prefix
|
44
|
+
output.puts(message)
|
45
|
+
case b = backtrace_filter
|
46
|
+
when Integer
|
47
|
+
caller.each do |c|
|
48
|
+
b -= 1
|
49
|
+
output.puts(c)
|
50
|
+
break if b <= 0
|
64
51
|
end
|
65
|
-
|
52
|
+
when true
|
53
|
+
caller.each{|c| output.puts(c)}
|
54
|
+
when Proc
|
55
|
+
caller.each_with_index{|line, line_no| output.puts(line) if b.call(line, line_no)}
|
66
56
|
end
|
57
|
+
nil
|
67
58
|
end
|
68
59
|
|
69
60
|
# If using ruby 2.3+, use Module#deprecate_constant to deprecate the constant,
|