sequel 4.49.0 → 5.3.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 +130 -0
- data/README.rdoc +195 -136
- data/Rakefile +26 -42
- data/bin/sequel +6 -9
- data/doc/advanced_associations.rdoc +91 -168
- 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/release_notes/5.1.0.txt +31 -0
- data/doc/release_notes/5.2.0.txt +33 -0
- data/doc/release_notes/5.3.0.txt +121 -0
- data/doc/schema_modification.rdoc +78 -64
- data/doc/security.rdoc +97 -88
- data/doc/sharding.rdoc +43 -30
- data/doc/sql.rdoc +53 -65
- data/doc/testing.rdoc +4 -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/adapters/ado/access.rb +7 -13
- data/lib/sequel/adapters/ado/mssql.rb +2 -9
- data/lib/sequel/adapters/ado.rb +9 -25
- data/lib/sequel/adapters/amalgalite.rb +3 -18
- data/lib/sequel/adapters/ibmdb.rb +9 -45
- 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 +6 -26
- data/lib/sequel/adapters/jdbc/hsqldb.rb +2 -27
- 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 +11 -15
- data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
- data/lib/sequel/adapters/jdbc/postgresql.rb +23 -33
- 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/jdbc.rb +18 -74
- 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/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/odbc.rb +0 -19
- data/lib/sequel/adapters/oracle.rb +8 -13
- data/lib/sequel/adapters/postgres.rb +28 -150
- 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 +61 -227
- data/lib/sequel/adapters/shared/oracle.rb +13 -41
- data/lib/sequel/adapters/shared/postgres.rb +58 -264
- data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
- data/lib/sequel/adapters/shared/sqlite.rb +22 -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 +4 -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/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/connection_pool.rb +38 -28
- data/lib/sequel/core.rb +42 -101
- 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 +36 -55
- data/lib/sequel/database/query.rb +8 -13
- data/lib/sequel/database/schema_generator.rb +93 -64
- data/lib/sequel/database/schema_methods.rb +61 -79
- data/lib/sequel/database/transactions.rb +4 -24
- data/lib/sequel/database.rb +12 -2
- data/lib/sequel/dataset/actions.rb +57 -107
- data/lib/sequel/dataset/dataset_module.rb +4 -16
- data/lib/sequel/dataset/features.rb +35 -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 +91 -161
- data/lib/sequel/dataset/sql.rb +33 -225
- data/lib/sequel/dataset.rb +18 -10
- 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 +27 -43
- 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_extended_date_support.rb +230 -0
- 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 +3 -16
- 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/extensions/synchronize_sql.rb +45 -0
- data/lib/sequel/model/associations.rb +129 -131
- data/lib/sequel/model/base.rb +133 -731
- 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/model.rb +27 -62
- 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 -23
- data/lib/sequel/version.rb +2 -2
- data/lib/sequel.rb +1 -1
- 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 +111 -478
- data/spec/adapters/oracle_spec.rb +1 -9
- data/spec/adapters/postgres_spec.rb +459 -664
- 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 +96 -244
- data/spec/core/dataset_spec.rb +99 -414
- data/spec/core/deprecated_spec.rb +3 -3
- data/spec/core/expression_filters_spec.rb +37 -144
- data/spec/core/mock_adapter_spec.rb +241 -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 +88 -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 +30 -92
- 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 +53 -1118
- 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 +8 -30
- 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 +5 -6
- data/spec/extensions/looser_typecasting_spec.rb +1 -1
- data/spec/extensions/many_through_many_spec.rb +25 -33
- data/spec/extensions/migration_spec.rb +12 -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 +2 -2
- data/spec/extensions/pagination_spec.rb +1 -1
- data/spec/extensions/pg_array_associations_spec.rb +22 -26
- 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_extended_date_support_spec.rb +122 -0
- data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
- data/spec/extensions/pg_hstore_spec.rb +22 -31
- 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 +7 -7
- data/spec/extensions/prepared_statements_spec.rb +13 -48
- data/spec/extensions/pretty_table_spec.rb +40 -9
- data/spec/extensions/query_spec.rb +1 -12
- data/spec/extensions/rcte_tree_spec.rb +23 -34
- 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 +43 -32
- 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 +5 -17
- 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/synchronize_sql_spec.rb +124 -0
- 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 +5 -7
- 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 +12 -16
- 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 -13
- 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 +8 -13
- 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 +12 -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 +7 -23
- data/spec/integration/prepared_statement_test.rb +8 -88
- data/spec/integration/schema_test.rb +10 -10
- data/spec/integration/spec_helper.rb +17 -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 +43 -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 +48 -17
- data/spec/model/hooks_spec.rb +5 -300
- data/spec/model/inflector_spec.rb +1 -1
- data/spec/model/model_spec.rb +29 -339
- data/spec/model/plugins_spec.rb +2 -16
- data/spec/model/record_spec.rb +33 -129
- data/spec/model/spec_helper.rb +5 -15
- data/spec/model/validations_spec.rb +1 -1
- data/spec/sequel_warning.rb +1 -12
- metadata +19 -65
- data/doc/active_record.rdoc +0 -927
- data/lib/sequel/adapters/cubrid.rb +0 -160
- 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/do.rb +0 -166
- 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/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/swift.rb +0 -169
- 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/doc/reflection.rdoc
CHANGED
|
@@ -6,7 +6,7 @@ Sequel supports reflection information in multiple ways.
|
|
|
6
6
|
|
|
7
7
|
You can get the adapter in use using Database#adapter_scheme:
|
|
8
8
|
|
|
9
|
-
DB.adapter_scheme #
|
|
9
|
+
DB.adapter_scheme # :postgres, :jdbc, :odbc
|
|
10
10
|
|
|
11
11
|
== Database Connected To
|
|
12
12
|
|
|
@@ -97,17 +97,17 @@ You can get an array of association symbols with Model.associations:
|
|
|
97
97
|
|
|
98
98
|
Model.associations # [:association1, :association2, ...]
|
|
99
99
|
|
|
100
|
-
You can get the association reflection for a single association via the Model.association_reflection. Association reflections are subclasses of hash
|
|
100
|
+
You can get the association reflection for a single association via the Model.association_reflection. Association reflections are subclasses of hash:
|
|
101
101
|
|
|
102
|
-
Model.association_reflection(:association1) #
|
|
102
|
+
Model.association_reflection(:association1) # #<Sequel::Model::Associations::ManyToOneAssociationReflection Model.many_to_one :association1>
|
|
103
103
|
|
|
104
104
|
You can get an array of all association reflections via Model.all_association_reflections:
|
|
105
105
|
|
|
106
|
-
Model.all_association_reflections # [
|
|
106
|
+
Model.all_association_reflections # [#<Sequel::Model::Associations::ManyToOneAssociationReflection Model.many_to_one :association1>, ...]
|
|
107
107
|
|
|
108
108
|
Finally, you can get a hash of association reflections via Model.association_reflections:
|
|
109
109
|
|
|
110
|
-
Model.association_reflections # {:association1
|
|
110
|
+
Model.association_reflections # {:association1=>#<Sequel::Model::Associations::ManyToOneAssociationReflection Model.many_to_one :association1>, ...}
|
|
111
111
|
|
|
112
112
|
== Validations Defined
|
|
113
113
|
|
|
@@ -118,4 +118,3 @@ When using the validation_class_methods plugin, you can use the validation_refle
|
|
|
118
118
|
Similarly, when using the constraint_validations plugin, you can use the constraint_validation_reflections class method:
|
|
119
119
|
|
|
120
120
|
Model.constraint_validation_reflections[:column] # => [[:presence, {}], [:max_length, {:argument=>255, :message=>'is just too long'}]]
|
|
121
|
-
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
= Major Changes
|
|
2
|
+
|
|
3
|
+
* Datasets are now frozen by default. Since Sequel's inception,
|
|
4
|
+
datasets have used a method-chaining API that returned modified
|
|
5
|
+
copies, but previously they still supported direct mutation. Now,
|
|
6
|
+
datasets are always frozen and cannot be mutated. This allows many
|
|
7
|
+
additional default optimizations related to caching, and provides
|
|
8
|
+
greater thread safety.
|
|
9
|
+
|
|
10
|
+
ds = DB[:table]
|
|
11
|
+
|
|
12
|
+
# Before
|
|
13
|
+
ds.row_proc = lambda{|h| h}
|
|
14
|
+
|
|
15
|
+
# Now
|
|
16
|
+
ds = ds.with_row_proc(lambda{|h| h})
|
|
17
|
+
|
|
18
|
+
* Symbol splitting to create qualified and/or aliased identifiers is
|
|
19
|
+
now disabled by default. While symbol splitting allowed for shorter
|
|
20
|
+
code, it was not obvious and caused significant issues when using
|
|
21
|
+
column names with embedded double or triple underscores. Sequel now
|
|
22
|
+
offers many ways to create qualified and/or aliased identifiers.
|
|
23
|
+
|
|
24
|
+
# Before
|
|
25
|
+
:table__column # "table"."column"
|
|
26
|
+
|
|
27
|
+
# Now
|
|
28
|
+
:table__column # "table__column"
|
|
29
|
+
Sequel[:table][:column] # "table"."column"
|
|
30
|
+
|
|
31
|
+
# To get back historical behavior
|
|
32
|
+
Sequel.split_symbols = true
|
|
33
|
+
|
|
34
|
+
* Sequel no longer allows the use of plain ruby strings as SQL code
|
|
35
|
+
fragments in the dataset filtering methods, as that makes it
|
|
36
|
+
easier to introduce SQL injection vulnerabilities. You can use
|
|
37
|
+
Sequel.lit to create literal strings (SQL code fragments), which
|
|
38
|
+
makes it easier to do security auditing of applications using
|
|
39
|
+
Sequel.
|
|
40
|
+
|
|
41
|
+
# Before
|
|
42
|
+
DB[:table].where("column = 1").all
|
|
43
|
+
|
|
44
|
+
# Now
|
|
45
|
+
DB[:table].where(Sequel.lit("column = 1")).all
|
|
46
|
+
# or better
|
|
47
|
+
DB[:table].where(column: 1).all
|
|
48
|
+
|
|
49
|
+
# To get back historical behavior
|
|
50
|
+
DB.extension :auto_literal_strings
|
|
51
|
+
|
|
52
|
+
= Backwards Compatibility
|
|
53
|
+
|
|
54
|
+
* All adapters, extensions, plugins, features, and constants
|
|
55
|
+
deprecated in 4.49.0 have been removed. Before upgrading to Sequel
|
|
56
|
+
5.0.0, upgrade to 4.49.0 and fix all deprecation warnings.
|
|
57
|
+
|
|
58
|
+
* Support for ruby 1.8.7 has been dropped, the minimum ruby version is
|
|
59
|
+
now 1.9.2.
|
|
60
|
+
|
|
61
|
+
* The {before,after,around}_validation hooks are now always called
|
|
62
|
+
when saving, even if the validate: false option is used. This
|
|
63
|
+
allows you to use the before_validation hook to make changes
|
|
64
|
+
to the model instance that are required before validation and
|
|
65
|
+
before saving even if not validating.
|
|
66
|
+
|
|
67
|
+
* Getting column values for newly created model instances after
|
|
68
|
+
insertion now happens before after_create is called, instead of
|
|
69
|
+
after.
|
|
70
|
+
|
|
71
|
+
* Sequel now immediately attempts to the connect to the database
|
|
72
|
+
when a Database instance is created, in order to fail fast if the
|
|
73
|
+
connection parameters are invalid.
|
|
74
|
+
|
|
75
|
+
* The validates_unique method in the validation_helpers plugin
|
|
76
|
+
now only checks for uniqueness by default if the record is new or
|
|
77
|
+
one of the related columns has been modified by default.
|
|
78
|
+
|
|
79
|
+
* Database schema modification methods and schema generator methods
|
|
80
|
+
now return nil instead of some internal value.
|
|
81
|
+
|
|
82
|
+
* Many cases where Sequel used Kernel#send internally have been
|
|
83
|
+
switched to Kernel#public_send so they only call public methods.
|
|
84
|
+
|
|
85
|
+
* Model association hooks are now nil instead of empty arrays by
|
|
86
|
+
default.
|
|
87
|
+
|
|
88
|
+
* Internal uses of instance_eval with a block have been changed to
|
|
89
|
+
instance_exec. This allows them to be used with lambdas that
|
|
90
|
+
take no arguments.
|
|
91
|
+
|
|
92
|
+
* Most internal constants are now frozen, unless there is a
|
|
93
|
+
requirement that they be modified at runtime.
|
|
94
|
+
|
|
95
|
+
* The Model @was_new instance variable is now no longer set when
|
|
96
|
+
saving new model instances.
|
|
97
|
+
|
|
98
|
+
* The private Sequel::Postgres::PGArray::Parser#new_entry_buffer
|
|
99
|
+
method in the pg_array extension has been removed.
|
|
100
|
+
|
|
101
|
+
* Modifying Model.input_transformer_order in the input_transformer
|
|
102
|
+
plugin no longer has an effect.
|
|
103
|
+
|
|
104
|
+
= New Features
|
|
105
|
+
|
|
106
|
+
* Database#add_index :if_not_exists option is now supported on
|
|
107
|
+
PostgreSQL 9.5+.
|
|
108
|
+
|
|
109
|
+
* SQL::Subscript#expression has been added to retrieve the
|
|
110
|
+
expression that is subscripted.
|
|
111
|
+
|
|
112
|
+
= Other Improvements
|
|
113
|
+
|
|
114
|
+
* Threaded connection pools no longer block while new connections
|
|
115
|
+
are being made. Previously, attempting to establish a new
|
|
116
|
+
connection blocked all connection pool activity until the new
|
|
117
|
+
connection was made.
|
|
118
|
+
|
|
119
|
+
* Many minor performance improvements have been made.
|
|
120
|
+
|
|
121
|
+
* The class_table_inheritance plugin now raises an error during
|
|
122
|
+
Model#update if a query does not modify a single row, just as
|
|
123
|
+
the default Model#update does.
|
|
124
|
+
|
|
125
|
+
* ConnectionPool#size is now thread-safe in both threaded
|
|
126
|
+
connection pools. Internal callers that already have the
|
|
127
|
+
connection pool mutex should switch to using #_size (a new
|
|
128
|
+
private method).
|
|
129
|
+
|
|
130
|
+
* Registration of new serialization formats in the serialization
|
|
131
|
+
plugin is now thread-safe.
|
|
132
|
+
|
|
133
|
+
* If transactional schema modifications are not supported, a
|
|
134
|
+
savepoint will not automatically be created when adding
|
|
135
|
+
indexes for new tables inside transactions. This fixes issues
|
|
136
|
+
when making schema changes inside transactions on MySQL.
|
|
137
|
+
|
|
138
|
+
* Attempting to create a prepared statement using a dataset that
|
|
139
|
+
uses a delayed evaluation now raises an error, because the
|
|
140
|
+
prepared statement would not respect the delayed evaluation.
|
|
141
|
+
|
|
142
|
+
* The bin/sequel -M option now uses base 10. Previously, it
|
|
143
|
+
used the Kernel#Integer default, which was base 8 if there was
|
|
144
|
+
a preceding 0.
|
|
145
|
+
|
|
146
|
+
= Deprecated Features
|
|
147
|
+
|
|
148
|
+
These deprecated features will be removed in Sequel 5.1.0.
|
|
149
|
+
|
|
150
|
+
* Model.allowed_columns in the base plugin is now deprecated. Use
|
|
151
|
+
the whitelist_security plugin if you want to call it.
|
|
152
|
+
|
|
153
|
+
* Model use_after_commit_rollback class and instance accessors are
|
|
154
|
+
now deprecated.
|
|
155
|
+
|
|
156
|
+
* Defining the Model#_before_validation method is now deprecated.
|
|
157
|
+
You can change to using before_validation.
|
|
158
|
+
|
|
159
|
+
* The private Model.plugin_module_defined? method is now deprecated.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
= Improvements
|
|
2
|
+
|
|
3
|
+
* Database#copy_into in the jdbc/postgresql adapter now works
|
|
4
|
+
correctly when using multibyte characters in strings.
|
|
5
|
+
|
|
6
|
+
* The alter_table add_foreign_key method is now reversible when the
|
|
7
|
+
:foreign_key_constraint_name option is used.
|
|
8
|
+
|
|
9
|
+
* The jdbc/h2 and jdbc/hsqldb adapters now respect the
|
|
10
|
+
:foreign_key_constraint_name option.
|
|
11
|
+
|
|
12
|
+
* Calling Model.freeze on an already frozen model no longer raises
|
|
13
|
+
an error.
|
|
14
|
+
|
|
15
|
+
* An unnecessary database query is now avoided when loading the
|
|
16
|
+
pg_inet extension when the pg_array extension is already loaded.
|
|
17
|
+
|
|
18
|
+
* A better exception message is now used when migrating with an
|
|
19
|
+
empty migration directory.
|
|
20
|
+
|
|
21
|
+
= Backwards Compatibility
|
|
22
|
+
|
|
23
|
+
* Model.allowed_columns has been removed. Use the whitelist_security
|
|
24
|
+
plugin if you want to call it.
|
|
25
|
+
|
|
26
|
+
* Model use_after_commit_rollback class and instance accessors have
|
|
27
|
+
been removed.
|
|
28
|
+
|
|
29
|
+
* Support for the Model#_before_validation method has been removed.
|
|
30
|
+
|
|
31
|
+
* The private Model.plugin_module_defined? method has been removed.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* A pg_extended_date_support extension has been added. This
|
|
4
|
+
extension adds support for infinite and BC dates/timestamps on
|
|
5
|
+
PostgreSQL.
|
|
6
|
+
|
|
7
|
+
The postgres adapter already had a convert_infinite_timestamps
|
|
8
|
+
setting, but it wasn't supported in the jdbc/postgresql adapter
|
|
9
|
+
and it didn't handle BC dates/timestamps. Setting a non-default
|
|
10
|
+
convert_infinite_timestamps setting in the postgres adapter will
|
|
11
|
+
now automatically load the extension for backwards compatibility.
|
|
12
|
+
|
|
13
|
+
The pg_extended_date_support extension by default just fixes the
|
|
14
|
+
handling of BC dates/timestamps. To get it to handle infinite
|
|
15
|
+
timestamps, you need to choose the appropriate setting for your
|
|
16
|
+
application:
|
|
17
|
+
|
|
18
|
+
DB.extension :pg_extended_date_support
|
|
19
|
+
DB.convert_infinite_timestamps = :string # or :float or :nil
|
|
20
|
+
|
|
21
|
+
This extension also enables the handling of timezone offsets
|
|
22
|
+
with seconds, which is not natively supported by ruby's Time
|
|
23
|
+
class in ruby <2.5.
|
|
24
|
+
|
|
25
|
+
= Improvements
|
|
26
|
+
|
|
27
|
+
* The jdbc/mysql adapter now handles smallint unsigned and
|
|
28
|
+
integer unsigned column types where the value for the column
|
|
29
|
+
is outside of the range of a Java short or integer.
|
|
30
|
+
|
|
31
|
+
* Sequel::Model.inherited no longer modifies an existing @dataset
|
|
32
|
+
instance variable if one has already been set. This fixes a
|
|
33
|
+
regression that was introduced in Sequel 5.0.0.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
= New Features
|
|
2
|
+
|
|
3
|
+
* An :extensions Database option is now supported, which will load the
|
|
4
|
+
named extensions into the Database before any connections are
|
|
5
|
+
initiated:
|
|
6
|
+
|
|
7
|
+
DB = Sequel.connect('mock:///', :extensions=>[:error_sql, :synchronize_sql])
|
|
8
|
+
DB = Sequel.connect('mock:///?extensions=error_sql,synchronize_sql')
|
|
9
|
+
|
|
10
|
+
* A :connect_sqls Database option is now supported, which will issue
|
|
11
|
+
the given queries on all new connections:
|
|
12
|
+
|
|
13
|
+
DB = Sequel.connect('postgres:///', :connect_sqls=>[
|
|
14
|
+
'SET random_page_cost = 1.0',
|
|
15
|
+
"SET default_tablespace = 'foo'"
|
|
16
|
+
])
|
|
17
|
+
|
|
18
|
+
* DatasetModule#reverse has been added for simpler use of descending
|
|
19
|
+
orders:
|
|
20
|
+
|
|
21
|
+
class Foo < Sequel::Model
|
|
22
|
+
dataset_module do
|
|
23
|
+
reverse :newest_first, :created_at
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
Foo.newest_first.first(10)
|
|
27
|
+
|
|
28
|
+
* A synchronize_sql extension has been added. This extension checks
|
|
29
|
+
out a connection around SQL string creation, and is useful in the
|
|
30
|
+
cases where escaping values in the query requires a connection and
|
|
31
|
+
a large number of values need to be escaped.
|
|
32
|
+
|
|
33
|
+
* The following features are now supported on MariaDB 10.2+:
|
|
34
|
+
|
|
35
|
+
* Common table expressions.
|
|
36
|
+
|
|
37
|
+
* Window functions.
|
|
38
|
+
|
|
39
|
+
* Dropping CHECK constraints. Older versions of MariaDB/MySQL
|
|
40
|
+
ignored CHECK constraints that were added, and Sequel did not
|
|
41
|
+
attempt to filter them out, so Sequel did not require changes to
|
|
42
|
+
add CHECK constraints. MariaDB 10.2 CHECK constraints work
|
|
43
|
+
correctly with Sequel's constraint_validations extension/plugin.
|
|
44
|
+
|
|
45
|
+
* Raising CHECK constraint violations as
|
|
46
|
+
Sequel::CheckConstraintViolation instances.
|
|
47
|
+
|
|
48
|
+
* Recognizing curdate() as Sequel::CURRENT_DATE when used as the
|
|
49
|
+
default value for a date column.
|
|
50
|
+
|
|
51
|
+
* Date::Infinity values are now supported in the
|
|
52
|
+
pg_extended_date_support extension:
|
|
53
|
+
|
|
54
|
+
DB.convert_infinite_timestamps = :date
|
|
55
|
+
|
|
56
|
+
This returns infinite dates/timestamps as Date::Infinity instances,
|
|
57
|
+
and literalizes Date::Infinity instances correctly.
|
|
58
|
+
|
|
59
|
+
= Improvements
|
|
60
|
+
|
|
61
|
+
* Database#reset_primary_key_sequence now works correctly on
|
|
62
|
+
PostgreSQL 10.
|
|
63
|
+
|
|
64
|
+
* If a commit or rollback raises an exception when using the postgres
|
|
65
|
+
adapter, Sequel will check the connection's current transaction
|
|
66
|
+
status and only send another rollback if the connection is currently
|
|
67
|
+
inside a transaction. This fixes a warning that is issued in most
|
|
68
|
+
cases if a commit or rollback fails.
|
|
69
|
+
|
|
70
|
+
* The jdbc/postgresql adapter now forces JDBC PreparedStatement
|
|
71
|
+
instances created by Dataset#call to never be prepared server side,
|
|
72
|
+
working around an caching issue in the jdbc-postgres drier in
|
|
73
|
+
versions greater than 9.4.1200.
|
|
74
|
+
|
|
75
|
+
* Database#indexes will no longer return indexes which are in the
|
|
76
|
+
process of being dropped on PostgreSQL 9.3+. Additionally,
|
|
77
|
+
Database#indexes will now return indexes that have indcheckxmin
|
|
78
|
+
set. The previous removal of indexes with indcheckxmin set is
|
|
79
|
+
more likely to cause false negatives than correctly remove
|
|
80
|
+
indexes not yet valid.
|
|
81
|
+
|
|
82
|
+
* Common table expressions are no longer hoisted from subqueries on
|
|
83
|
+
SQLite. They are still hoisted from queries used in
|
|
84
|
+
UNION/INSERT/EXCEPT, since SQLite does not support common table
|
|
85
|
+
expressions at that level.
|
|
86
|
+
|
|
87
|
+
* On Microsoft SQL Server, using an INSERT query with a subquery that
|
|
88
|
+
uses a common table expression now hoists the common table
|
|
89
|
+
expression from subquery level to main query level, allowing such
|
|
90
|
+
queries to work.
|
|
91
|
+
|
|
92
|
+
* An additional disconnect error is now recognized in the oracle
|
|
93
|
+
adapter.
|
|
94
|
+
|
|
95
|
+
* bin/sequel now adds a Database logger before the initial
|
|
96
|
+
connection is made, allowing you to see any connection setup
|
|
97
|
+
statements issued to the database.
|
|
98
|
+
|
|
99
|
+
= Backwards Compatibility
|
|
100
|
+
|
|
101
|
+
* Calling a filtering method with no argument and a virtual row
|
|
102
|
+
block that returns nil on a dataset with no existing filter is
|
|
103
|
+
deprecated in this version and will emit a warning. The behavior
|
|
104
|
+
in this version remains the same, where the dataset is not
|
|
105
|
+
modified. The behavior will change in Sequel 5.4.0 so that a
|
|
106
|
+
WHERE NULL filter will be added in that case, instead of the
|
|
107
|
+
filter being ignored, so that the behavior is similar to calling
|
|
108
|
+
the filtering method with a nil argument.
|
|
109
|
+
|
|
110
|
+
# Sequel 5.3.0
|
|
111
|
+
DB[:a].where{nil}
|
|
112
|
+
# SELECT * FROM a
|
|
113
|
+
|
|
114
|
+
# Sequel 5.4.0
|
|
115
|
+
DB[:a].where{nil}
|
|
116
|
+
# SELECT * FROM a WHERE NULL
|
|
117
|
+
|
|
118
|
+
* Support for PostgreSQL <8.1 has been dropped from Database#indexes.
|
|
119
|
+
Sequel's PostgreSQL support requires >=8.2 for Dataset#insert to
|
|
120
|
+
work, so it doesn't make sense to support earlier versions in other
|
|
121
|
+
cases.
|