sequel 4.36.0 → 5.61.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 +5 -5
- data/CHANGELOG +548 -5749
- data/MIT-LICENSE +1 -1
- data/README.rdoc +265 -159
- data/bin/sequel +34 -12
- data/doc/advanced_associations.rdoc +228 -187
- data/doc/association_basics.rdoc +281 -291
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +86 -51
- data/doc/code_order.rdoc +25 -19
- data/doc/core_extensions.rdoc +104 -63
- data/doc/dataset_basics.rdoc +12 -21
- data/doc/dataset_filtering.rdoc +99 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/fork_safety.rdoc +84 -0
- data/doc/mass_assignment.rdoc +74 -31
- data/doc/migration.rdoc +59 -51
- data/doc/model_dataset_method_design.rdoc +129 -0
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +12 -12
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +58 -68
- data/doc/opening_databases.rdoc +85 -95
- data/doc/postgresql.rdoc +263 -38
- data/doc/prepared_statements.rdoc +29 -24
- data/doc/querying.rdoc +189 -167
- 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.10.0.txt +84 -0
- data/doc/release_notes/5.11.0.txt +83 -0
- data/doc/release_notes/5.12.0.txt +141 -0
- data/doc/release_notes/5.13.0.txt +27 -0
- data/doc/release_notes/5.14.0.txt +63 -0
- data/doc/release_notes/5.15.0.txt +39 -0
- data/doc/release_notes/5.16.0.txt +110 -0
- data/doc/release_notes/5.17.0.txt +31 -0
- data/doc/release_notes/5.18.0.txt +69 -0
- data/doc/release_notes/5.19.0.txt +28 -0
- data/doc/release_notes/5.2.0.txt +33 -0
- data/doc/release_notes/5.20.0.txt +89 -0
- data/doc/release_notes/5.21.0.txt +87 -0
- data/doc/release_notes/5.22.0.txt +48 -0
- data/doc/release_notes/5.23.0.txt +56 -0
- data/doc/release_notes/5.24.0.txt +56 -0
- data/doc/release_notes/5.25.0.txt +32 -0
- data/doc/release_notes/5.26.0.txt +35 -0
- data/doc/release_notes/5.27.0.txt +21 -0
- data/doc/release_notes/5.28.0.txt +16 -0
- data/doc/release_notes/5.29.0.txt +22 -0
- data/doc/release_notes/5.3.0.txt +121 -0
- data/doc/release_notes/5.30.0.txt +20 -0
- data/doc/release_notes/5.31.0.txt +148 -0
- data/doc/release_notes/5.32.0.txt +46 -0
- data/doc/release_notes/5.33.0.txt +24 -0
- data/doc/release_notes/5.34.0.txt +40 -0
- data/doc/release_notes/5.35.0.txt +56 -0
- data/doc/release_notes/5.36.0.txt +60 -0
- data/doc/release_notes/5.37.0.txt +30 -0
- data/doc/release_notes/5.38.0.txt +28 -0
- data/doc/release_notes/5.39.0.txt +19 -0
- data/doc/release_notes/5.4.0.txt +80 -0
- data/doc/release_notes/5.40.0.txt +40 -0
- data/doc/release_notes/5.41.0.txt +25 -0
- data/doc/release_notes/5.42.0.txt +136 -0
- data/doc/release_notes/5.43.0.txt +98 -0
- data/doc/release_notes/5.44.0.txt +32 -0
- data/doc/release_notes/5.45.0.txt +34 -0
- data/doc/release_notes/5.46.0.txt +87 -0
- data/doc/release_notes/5.47.0.txt +59 -0
- data/doc/release_notes/5.48.0.txt +14 -0
- data/doc/release_notes/5.49.0.txt +59 -0
- data/doc/release_notes/5.5.0.txt +61 -0
- data/doc/release_notes/5.50.0.txt +78 -0
- data/doc/release_notes/5.51.0.txt +47 -0
- data/doc/release_notes/5.52.0.txt +87 -0
- data/doc/release_notes/5.53.0.txt +23 -0
- data/doc/release_notes/5.54.0.txt +27 -0
- data/doc/release_notes/5.55.0.txt +21 -0
- data/doc/release_notes/5.56.0.txt +51 -0
- data/doc/release_notes/5.57.0.txt +23 -0
- data/doc/release_notes/5.58.0.txt +31 -0
- data/doc/release_notes/5.59.0.txt +73 -0
- data/doc/release_notes/5.6.0.txt +31 -0
- data/doc/release_notes/5.60.0.txt +22 -0
- data/doc/release_notes/5.61.0.txt +43 -0
- data/doc/release_notes/5.7.0.txt +108 -0
- data/doc/release_notes/5.8.0.txt +170 -0
- data/doc/release_notes/5.9.0.txt +99 -0
- data/doc/schema_modification.rdoc +95 -75
- data/doc/security.rdoc +109 -80
- data/doc/sharding.rdoc +74 -47
- data/doc/sql.rdoc +147 -122
- data/doc/testing.rdoc +43 -20
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +97 -18
- data/doc/validations.rdoc +52 -50
- data/doc/virtual_rows.rdoc +90 -109
- data/lib/sequel/adapters/ado/access.rb +15 -17
- data/lib/sequel/adapters/ado/mssql.rb +6 -15
- data/lib/sequel/adapters/ado.rb +150 -20
- data/lib/sequel/adapters/amalgalite.rb +11 -23
- data/lib/sequel/adapters/ibmdb.rb +47 -55
- data/lib/sequel/adapters/jdbc/db2.rb +29 -39
- data/lib/sequel/adapters/jdbc/derby.rb +58 -54
- data/lib/sequel/adapters/jdbc/h2.rb +93 -35
- data/lib/sequel/adapters/jdbc/hsqldb.rb +24 -31
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -10
- data/lib/sequel/adapters/jdbc/mssql.rb +3 -11
- data/lib/sequel/adapters/jdbc/mysql.rb +17 -20
- data/lib/sequel/adapters/jdbc/oracle.rb +22 -18
- data/lib/sequel/adapters/jdbc/postgresql.rb +69 -71
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +11 -23
- data/lib/sequel/adapters/jdbc/sqlite.rb +47 -11
- data/lib/sequel/adapters/jdbc/sqlserver.rb +34 -9
- data/lib/sequel/adapters/jdbc/transactions.rb +22 -38
- data/lib/sequel/adapters/jdbc.rb +145 -130
- data/lib/sequel/adapters/mock.rb +100 -111
- data/lib/sequel/adapters/mysql.rb +114 -122
- data/lib/sequel/adapters/mysql2.rb +147 -63
- data/lib/sequel/adapters/odbc/db2.rb +1 -1
- data/lib/sequel/adapters/odbc/mssql.rb +8 -14
- data/lib/sequel/adapters/odbc/oracle.rb +11 -0
- data/lib/sequel/adapters/odbc.rb +20 -25
- data/lib/sequel/adapters/oracle.rb +50 -56
- data/lib/sequel/adapters/postgres.rb +305 -327
- data/lib/sequel/adapters/postgresql.rb +1 -1
- data/lib/sequel/adapters/shared/access.rb +74 -78
- data/lib/sequel/adapters/shared/db2.rb +118 -71
- data/lib/sequel/adapters/shared/mssql.rb +301 -220
- data/lib/sequel/adapters/shared/mysql.rb +299 -217
- data/lib/sequel/adapters/shared/oracle.rb +226 -65
- data/lib/sequel/adapters/shared/postgres.rb +935 -395
- data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -126
- data/lib/sequel/adapters/shared/sqlite.rb +447 -173
- data/lib/sequel/adapters/sqlanywhere.rb +48 -35
- data/lib/sequel/adapters/sqlite.rb +156 -111
- data/lib/sequel/adapters/tinytds.rb +30 -38
- data/lib/sequel/adapters/utils/columns_limit_1.rb +22 -0
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +3 -6
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +2 -2
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +87 -0
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
- data/lib/sequel/adapters/utils/replace.rb +1 -4
- data/lib/sequel/adapters/utils/stored_procedures.rb +7 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
- data/lib/sequel/ast_transformer.rb +17 -89
- data/lib/sequel/connection_pool/sharded_single.rb +18 -15
- data/lib/sequel/connection_pool/sharded_threaded.rb +130 -111
- data/lib/sequel/connection_pool/single.rb +18 -13
- data/lib/sequel/connection_pool/threaded.rb +121 -120
- data/lib/sequel/connection_pool.rb +48 -29
- data/lib/sequel/core.rb +351 -301
- data/lib/sequel/database/connecting.rb +69 -57
- data/lib/sequel/database/dataset.rb +13 -5
- data/lib/sequel/database/dataset_defaults.rb +18 -102
- data/lib/sequel/database/features.rb +18 -4
- data/lib/sequel/database/logging.rb +12 -11
- data/lib/sequel/database/misc.rb +180 -122
- data/lib/sequel/database/query.rb +47 -27
- data/lib/sequel/database/schema_generator.rb +178 -84
- data/lib/sequel/database/schema_methods.rb +172 -97
- data/lib/sequel/database/transactions.rb +205 -44
- data/lib/sequel/database.rb +17 -2
- data/lib/sequel/dataset/actions.rb +339 -155
- data/lib/sequel/dataset/dataset_module.rb +46 -0
- data/lib/sequel/dataset/features.rb +90 -35
- data/lib/sequel/dataset/graph.rb +80 -58
- data/lib/sequel/dataset/misc.rb +137 -47
- data/lib/sequel/dataset/placeholder_literalizer.rb +63 -25
- data/lib/sequel/dataset/prepared_statements.rb +188 -85
- data/lib/sequel/dataset/query.rb +530 -222
- data/lib/sequel/dataset/sql.rb +590 -368
- data/lib/sequel/dataset.rb +26 -16
- data/lib/sequel/deprecated.rb +12 -2
- data/lib/sequel/exceptions.rb +46 -16
- data/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
- data/lib/sequel/extensions/_model_pg_row.rb +43 -0
- data/lib/sequel/extensions/_pretty_table.rb +2 -5
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
- data/lib/sequel/extensions/async_thread_pool.rb +438 -0
- data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
- data/lib/sequel/extensions/blank.rb +8 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +4 -3
- data/lib/sequel/extensions/connection_expiration.rb +20 -10
- data/lib/sequel/extensions/connection_validator.rb +11 -10
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +62 -39
- data/lib/sequel/extensions/core_extensions.rb +42 -48
- data/lib/sequel/extensions/core_refinements.rb +80 -59
- data/lib/sequel/extensions/current_datetime_timestamp.rb +1 -4
- data/lib/sequel/extensions/date_arithmetic.rb +98 -39
- data/lib/sequel/extensions/date_parse_input_handler.rb +67 -0
- data/lib/sequel/extensions/datetime_parse_to_time.rb +41 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +21 -14
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +12 -15
- data/lib/sequel/extensions/exclude_or_null.rb +68 -0
- data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
- data/lib/sequel/extensions/freeze_datasets.rb +3 -0
- data/lib/sequel/extensions/from_block.rb +1 -34
- data/lib/sequel/extensions/graph_each.rb +4 -4
- data/lib/sequel/extensions/identifier_mangling.rb +180 -0
- data/lib/sequel/extensions/implicit_subquery.rb +48 -0
- data/lib/sequel/extensions/index_caching.rb +109 -0
- data/lib/sequel/extensions/inflector.rb +13 -5
- data/lib/sequel/extensions/integer64.rb +32 -0
- data/lib/sequel/extensions/is_distinct_from.rb +141 -0
- data/lib/sequel/extensions/looser_typecasting.rb +17 -8
- data/lib/sequel/extensions/migration.rb +119 -78
- data/lib/sequel/extensions/named_timezones.rb +88 -23
- data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -82
- data/lib/sequel/extensions/null_dataset.rb +8 -8
- data/lib/sequel/extensions/pagination.rb +32 -29
- data/lib/sequel/extensions/pg_array.rb +221 -287
- data/lib/sequel/extensions/pg_array_ops.rb +17 -9
- data/lib/sequel/extensions/pg_enum.rb +63 -23
- data/lib/sequel/extensions/pg_extended_date_support.rb +241 -0
- data/lib/sequel/extensions/pg_hstore.rb +45 -54
- data/lib/sequel/extensions/pg_hstore_ops.rb +58 -6
- data/lib/sequel/extensions/pg_inet.rb +31 -12
- data/lib/sequel/extensions/pg_inet_ops.rb +2 -2
- data/lib/sequel/extensions/pg_interval.rb +56 -29
- data/lib/sequel/extensions/pg_json.rb +417 -140
- data/lib/sequel/extensions/pg_json_ops.rb +270 -18
- data/lib/sequel/extensions/pg_loose_count.rb +4 -2
- data/lib/sequel/extensions/pg_multirange.rb +372 -0
- data/lib/sequel/extensions/pg_range.rb +131 -191
- data/lib/sequel/extensions/pg_range_ops.rb +42 -13
- data/lib/sequel/extensions/pg_row.rb +48 -81
- data/lib/sequel/extensions/pg_row_ops.rb +33 -14
- data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
- data/lib/sequel/extensions/query.rb +9 -7
- data/lib/sequel/extensions/round_timestamps.rb +0 -6
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +60 -0
- data/lib/sequel/extensions/schema_caching.rb +10 -1
- data/lib/sequel/extensions/schema_dumper.rb +71 -48
- data/lib/sequel/extensions/select_remove.rb +4 -4
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
- data/lib/sequel/extensions/server_block.rb +51 -27
- data/lib/sequel/extensions/split_array_nil.rb +4 -4
- data/lib/sequel/extensions/sql_comments.rb +119 -7
- data/lib/sequel/extensions/sql_expr.rb +2 -1
- data/lib/sequel/extensions/sql_log_normalizer.rb +108 -0
- data/lib/sequel/extensions/sqlite_json_ops.rb +255 -0
- data/lib/sequel/extensions/string_agg.rb +11 -8
- data/lib/sequel/extensions/string_date_time.rb +19 -23
- data/lib/sequel/extensions/symbol_aref.rb +55 -0
- data/lib/sequel/extensions/symbol_aref_refinement.rb +43 -0
- data/lib/sequel/extensions/symbol_as.rb +23 -0
- data/lib/sequel/extensions/symbol_as_refinement.rb +37 -0
- data/lib/sequel/extensions/synchronize_sql.rb +45 -0
- data/lib/sequel/extensions/to_dot.rb +10 -4
- data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
- data/lib/sequel/model/associations.rb +1006 -284
- data/lib/sequel/model/base.rb +560 -805
- data/lib/sequel/model/dataset_module.rb +11 -10
- data/lib/sequel/model/default_inflections.rb +1 -1
- data/lib/sequel/model/errors.rb +10 -3
- data/lib/sequel/model/exceptions.rb +8 -10
- data/lib/sequel/model/inflections.rb +7 -20
- data/lib/sequel/model/plugins.rb +114 -0
- data/lib/sequel/model.rb +32 -82
- data/lib/sequel/plugins/active_model.rb +30 -14
- data/lib/sequel/plugins/after_initialize.rb +1 -1
- data/lib/sequel/plugins/association_dependencies.rb +25 -18
- data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
- data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
- data/lib/sequel/plugins/association_pks.rb +147 -70
- data/lib/sequel/plugins/association_proxies.rb +33 -9
- data/lib/sequel/plugins/async_thread_pool.rb +39 -0
- data/lib/sequel/plugins/auto_restrict_eager_graph.rb +62 -0
- data/lib/sequel/plugins/auto_validations.rb +95 -28
- data/lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb +68 -0
- data/lib/sequel/plugins/before_after_save.rb +0 -42
- data/lib/sequel/plugins/blacklist_security.rb +21 -12
- data/lib/sequel/plugins/boolean_readers.rb +5 -5
- data/lib/sequel/plugins/boolean_subsets.rb +13 -8
- data/lib/sequel/plugins/caching.rb +25 -16
- data/lib/sequel/plugins/class_table_inheritance.rb +179 -100
- data/lib/sequel/plugins/column_conflicts.rb +16 -3
- data/lib/sequel/plugins/column_encryption.rb +728 -0
- data/lib/sequel/plugins/column_select.rb +7 -5
- data/lib/sequel/plugins/columns_updated.rb +42 -0
- data/lib/sequel/plugins/composition.rb +42 -26
- data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
- data/lib/sequel/plugins/constraint_validations.rb +20 -14
- data/lib/sequel/plugins/csv_serializer.rb +56 -35
- data/lib/sequel/plugins/dataset_associations.rb +40 -17
- data/lib/sequel/plugins/def_dataset_method.rb +90 -0
- data/lib/sequel/plugins/defaults_setter.rb +65 -10
- data/lib/sequel/plugins/delay_add_association.rb +1 -1
- data/lib/sequel/plugins/dirty.rb +62 -24
- data/lib/sequel/plugins/eager_each.rb +3 -3
- data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
- data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
- data/lib/sequel/plugins/enum.rb +124 -0
- data/lib/sequel/plugins/error_splitter.rb +17 -12
- data/lib/sequel/plugins/finder.rb +246 -0
- data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
- data/lib/sequel/plugins/force_encoding.rb +7 -12
- data/lib/sequel/plugins/hook_class_methods.rb +37 -54
- data/lib/sequel/plugins/input_transformer.rb +18 -10
- data/lib/sequel/plugins/insert_conflict.rb +76 -0
- data/lib/sequel/plugins/insert_returning_select.rb +2 -2
- data/lib/sequel/plugins/instance_filters.rb +10 -8
- data/lib/sequel/plugins/instance_hooks.rb +34 -17
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +22 -13
- data/lib/sequel/plugins/json_serializer.rb +124 -64
- data/lib/sequel/plugins/lazy_attributes.rb +21 -14
- data/lib/sequel/plugins/list.rb +35 -21
- data/lib/sequel/plugins/many_through_many.rb +134 -21
- data/lib/sequel/plugins/modification_detection.rb +15 -5
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +6 -5
- data/lib/sequel/plugins/nested_attributes.rb +61 -31
- data/lib/sequel/plugins/optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/pg_array_associations.rb +103 -53
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +350 -0
- data/lib/sequel/plugins/pg_row.rb +5 -51
- data/lib/sequel/plugins/prepared_statements.rb +60 -72
- data/lib/sequel/plugins/prepared_statements_safe.rb +9 -4
- data/lib/sequel/plugins/rcte_tree.rb +68 -82
- data/lib/sequel/plugins/require_valid_schema.rb +67 -0
- data/lib/sequel/plugins/serialization.rb +43 -46
- data/lib/sequel/plugins/serialization_modification_detection.rb +3 -2
- data/lib/sequel/plugins/sharding.rb +15 -10
- data/lib/sequel/plugins/single_table_inheritance.rb +67 -28
- data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/split_values.rb +11 -6
- data/lib/sequel/plugins/sql_comments.rb +189 -0
- data/lib/sequel/plugins/static_cache.rb +77 -53
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +3 -3
- data/lib/sequel/plugins/subclasses.rb +43 -10
- data/lib/sequel/plugins/subset_conditions.rb +15 -5
- data/lib/sequel/plugins/table_select.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +96 -12
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/timestamps.rb +20 -8
- data/lib/sequel/plugins/touch.rb +19 -8
- data/lib/sequel/plugins/tree.rb +62 -32
- data/lib/sequel/plugins/typecast_on_load.rb +12 -4
- data/lib/sequel/plugins/unlimited_update.rb +1 -7
- data/lib/sequel/plugins/unused_associations.rb +521 -0
- data/lib/sequel/plugins/update_or_create.rb +4 -4
- data/lib/sequel/plugins/update_primary_key.rb +1 -1
- data/lib/sequel/plugins/update_refresh.rb +26 -15
- data/lib/sequel/plugins/uuid.rb +7 -11
- data/lib/sequel/plugins/validate_associated.rb +18 -0
- data/lib/sequel/plugins/validation_class_methods.rb +38 -19
- data/lib/sequel/plugins/validation_contexts.rb +49 -0
- data/lib/sequel/plugins/validation_helpers.rb +57 -41
- data/lib/sequel/plugins/whitelist_security.rb +122 -0
- data/lib/sequel/plugins/xml_serializer.rb +30 -31
- data/lib/sequel/sql.rb +471 -331
- data/lib/sequel/timezones.rb +78 -47
- data/lib/sequel/version.rb +7 -2
- data/lib/sequel.rb +1 -1
- metadata +217 -521
- data/Rakefile +0 -164
- data/doc/active_record.rdoc +0 -928
- data/doc/release_notes/1.0.txt +0 -38
- data/doc/release_notes/1.1.txt +0 -143
- data/doc/release_notes/1.3.txt +0 -101
- data/doc/release_notes/1.4.0.txt +0 -53
- data/doc/release_notes/1.5.0.txt +0 -155
- data/doc/release_notes/2.0.0.txt +0 -298
- data/doc/release_notes/2.1.0.txt +0 -271
- data/doc/release_notes/2.10.0.txt +0 -328
- data/doc/release_notes/2.11.0.txt +0 -215
- data/doc/release_notes/2.12.0.txt +0 -534
- data/doc/release_notes/2.2.0.txt +0 -253
- data/doc/release_notes/2.3.0.txt +0 -88
- data/doc/release_notes/2.4.0.txt +0 -106
- data/doc/release_notes/2.5.0.txt +0 -137
- data/doc/release_notes/2.6.0.txt +0 -157
- data/doc/release_notes/2.7.0.txt +0 -166
- data/doc/release_notes/2.8.0.txt +0 -171
- data/doc/release_notes/2.9.0.txt +0 -97
- data/doc/release_notes/3.0.0.txt +0 -221
- data/doc/release_notes/3.1.0.txt +0 -406
- data/doc/release_notes/3.10.0.txt +0 -286
- data/doc/release_notes/3.11.0.txt +0 -254
- data/doc/release_notes/3.12.0.txt +0 -304
- data/doc/release_notes/3.13.0.txt +0 -210
- data/doc/release_notes/3.14.0.txt +0 -118
- data/doc/release_notes/3.15.0.txt +0 -78
- data/doc/release_notes/3.16.0.txt +0 -45
- data/doc/release_notes/3.17.0.txt +0 -58
- data/doc/release_notes/3.18.0.txt +0 -120
- data/doc/release_notes/3.19.0.txt +0 -67
- data/doc/release_notes/3.2.0.txt +0 -268
- data/doc/release_notes/3.20.0.txt +0 -41
- data/doc/release_notes/3.21.0.txt +0 -87
- data/doc/release_notes/3.22.0.txt +0 -39
- data/doc/release_notes/3.23.0.txt +0 -172
- data/doc/release_notes/3.24.0.txt +0 -420
- data/doc/release_notes/3.25.0.txt +0 -88
- data/doc/release_notes/3.26.0.txt +0 -88
- data/doc/release_notes/3.27.0.txt +0 -82
- data/doc/release_notes/3.28.0.txt +0 -304
- data/doc/release_notes/3.29.0.txt +0 -459
- data/doc/release_notes/3.3.0.txt +0 -192
- data/doc/release_notes/3.30.0.txt +0 -135
- data/doc/release_notes/3.31.0.txt +0 -146
- data/doc/release_notes/3.32.0.txt +0 -202
- data/doc/release_notes/3.33.0.txt +0 -157
- data/doc/release_notes/3.34.0.txt +0 -671
- data/doc/release_notes/3.35.0.txt +0 -144
- data/doc/release_notes/3.36.0.txt +0 -245
- data/doc/release_notes/3.37.0.txt +0 -338
- data/doc/release_notes/3.38.0.txt +0 -234
- data/doc/release_notes/3.39.0.txt +0 -237
- data/doc/release_notes/3.4.0.txt +0 -325
- data/doc/release_notes/3.40.0.txt +0 -73
- data/doc/release_notes/3.41.0.txt +0 -155
- data/doc/release_notes/3.42.0.txt +0 -74
- data/doc/release_notes/3.43.0.txt +0 -105
- data/doc/release_notes/3.44.0.txt +0 -152
- data/doc/release_notes/3.45.0.txt +0 -179
- data/doc/release_notes/3.46.0.txt +0 -122
- data/doc/release_notes/3.47.0.txt +0 -270
- data/doc/release_notes/3.48.0.txt +0 -477
- data/doc/release_notes/3.5.0.txt +0 -510
- data/doc/release_notes/3.6.0.txt +0 -366
- data/doc/release_notes/3.7.0.txt +0 -179
- data/doc/release_notes/3.8.0.txt +0 -151
- data/doc/release_notes/3.9.0.txt +0 -233
- data/doc/release_notes/4.0.0.txt +0 -262
- data/doc/release_notes/4.1.0.txt +0 -85
- data/doc/release_notes/4.10.0.txt +0 -226
- data/doc/release_notes/4.11.0.txt +0 -147
- data/doc/release_notes/4.12.0.txt +0 -105
- data/doc/release_notes/4.13.0.txt +0 -169
- data/doc/release_notes/4.14.0.txt +0 -68
- data/doc/release_notes/4.15.0.txt +0 -56
- data/doc/release_notes/4.16.0.txt +0 -36
- data/doc/release_notes/4.17.0.txt +0 -38
- data/doc/release_notes/4.18.0.txt +0 -36
- data/doc/release_notes/4.19.0.txt +0 -45
- data/doc/release_notes/4.2.0.txt +0 -129
- data/doc/release_notes/4.20.0.txt +0 -79
- data/doc/release_notes/4.21.0.txt +0 -94
- data/doc/release_notes/4.22.0.txt +0 -72
- data/doc/release_notes/4.23.0.txt +0 -65
- data/doc/release_notes/4.24.0.txt +0 -99
- data/doc/release_notes/4.25.0.txt +0 -181
- data/doc/release_notes/4.26.0.txt +0 -44
- data/doc/release_notes/4.27.0.txt +0 -78
- data/doc/release_notes/4.28.0.txt +0 -57
- data/doc/release_notes/4.29.0.txt +0 -41
- data/doc/release_notes/4.3.0.txt +0 -40
- data/doc/release_notes/4.30.0.txt +0 -37
- data/doc/release_notes/4.31.0.txt +0 -57
- data/doc/release_notes/4.32.0.txt +0 -132
- data/doc/release_notes/4.33.0.txt +0 -88
- data/doc/release_notes/4.34.0.txt +0 -86
- data/doc/release_notes/4.35.0.txt +0 -130
- data/doc/release_notes/4.36.0.txt +0 -116
- data/doc/release_notes/4.4.0.txt +0 -92
- data/doc/release_notes/4.5.0.txt +0 -34
- data/doc/release_notes/4.6.0.txt +0 -30
- data/doc/release_notes/4.7.0.txt +0 -103
- data/doc/release_notes/4.8.0.txt +0 -175
- data/doc/release_notes/4.9.0.txt +0 -190
- data/lib/sequel/adapters/cubrid.rb +0 -144
- data/lib/sequel/adapters/do/mysql.rb +0 -66
- data/lib/sequel/adapters/do/postgres.rb +0 -44
- data/lib/sequel/adapters/do/sqlite3.rb +0 -42
- data/lib/sequel/adapters/do.rb +0 -158
- data/lib/sequel/adapters/jdbc/as400.rb +0 -84
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -64
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -36
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -33
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -33
- data/lib/sequel/adapters/odbc/progress.rb +0 -10
- data/lib/sequel/adapters/shared/cubrid.rb +0 -245
- data/lib/sequel/adapters/shared/firebird.rb +0 -247
- data/lib/sequel/adapters/shared/informix.rb +0 -54
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -152
- data/lib/sequel/adapters/shared/progress.rb +0 -40
- data/lib/sequel/adapters/swift/mysql.rb +0 -49
- data/lib/sequel/adapters/swift/postgres.rb +0 -47
- data/lib/sequel/adapters/swift/sqlite.rb +0 -49
- data/lib/sequel/adapters/swift.rb +0 -160
- data/lib/sequel/adapters/utils/pg_types.rb +0 -70
- data/lib/sequel/dataset/mutation.rb +0 -111
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -5
- data/lib/sequel/extensions/filter_having.rb +0 -63
- data/lib/sequel/extensions/hash_aliases.rb +0 -49
- data/lib/sequel/extensions/meta_def.rb +0 -35
- data/lib/sequel/extensions/query_literals.rb +0 -84
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -24
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -122
- data/lib/sequel/extensions/set_overrides.rb +0 -76
- data/lib/sequel/no_core_ext.rb +0 -3
- data/lib/sequel/plugins/association_autoreloading.rb +0 -9
- data/lib/sequel/plugins/identifier_columns.rb +0 -47
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -9
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -81
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -119
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -61
- data/lib/sequel/plugins/schema.rb +0 -82
- data/lib/sequel/plugins/scissors.rb +0 -35
- data/spec/adapter_spec.rb +0 -4
- data/spec/adapters/db2_spec.rb +0 -160
- data/spec/adapters/firebird_spec.rb +0 -411
- data/spec/adapters/informix_spec.rb +0 -100
- data/spec/adapters/mssql_spec.rb +0 -733
- data/spec/adapters/mysql_spec.rb +0 -1319
- data/spec/adapters/oracle_spec.rb +0 -313
- data/spec/adapters/postgres_spec.rb +0 -3790
- data/spec/adapters/spec_helper.rb +0 -49
- data/spec/adapters/sqlanywhere_spec.rb +0 -170
- data/spec/adapters/sqlite_spec.rb +0 -688
- data/spec/bin_spec.rb +0 -258
- data/spec/core/connection_pool_spec.rb +0 -1045
- data/spec/core/database_spec.rb +0 -2636
- data/spec/core/dataset_spec.rb +0 -5175
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1247
- data/spec/core/mock_adapter_spec.rb +0 -464
- data/spec/core/object_graph_spec.rb +0 -303
- data/spec/core/placeholder_literalizer_spec.rb +0 -163
- data/spec/core/schema_generator_spec.rb +0 -203
- data/spec/core/schema_spec.rb +0 -1676
- data/spec/core/spec_helper.rb +0 -34
- data/spec/core/version_spec.rb +0 -7
- data/spec/core_extensions_spec.rb +0 -699
- data/spec/core_model_spec.rb +0 -2
- data/spec/core_spec.rb +0 -1
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -85
- data/spec/extensions/after_initialize_spec.rb +0 -24
- data/spec/extensions/arbitrary_servers_spec.rb +0 -109
- data/spec/extensions/association_dependencies_spec.rb +0 -117
- data/spec/extensions/association_pks_spec.rb +0 -405
- data/spec/extensions/association_proxies_spec.rb +0 -86
- data/spec/extensions/auto_validations_spec.rb +0 -192
- data/spec/extensions/before_after_save_spec.rb +0 -40
- data/spec/extensions/blacklist_security_spec.rb +0 -88
- data/spec/extensions/blank_spec.rb +0 -69
- data/spec/extensions/boolean_readers_spec.rb +0 -93
- data/spec/extensions/boolean_subsets_spec.rb +0 -47
- data/spec/extensions/caching_spec.rb +0 -270
- data/spec/extensions/class_table_inheritance_spec.rb +0 -444
- data/spec/extensions/column_conflicts_spec.rb +0 -60
- data/spec/extensions/column_select_spec.rb +0 -108
- data/spec/extensions/columns_introspection_spec.rb +0 -91
- data/spec/extensions/composition_spec.rb +0 -242
- data/spec/extensions/connection_expiration_spec.rb +0 -121
- data/spec/extensions/connection_validator_spec.rb +0 -127
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -288
- data/spec/extensions/constraint_validations_spec.rb +0 -389
- data/spec/extensions/core_refinements_spec.rb +0 -519
- data/spec/extensions/csv_serializer_spec.rb +0 -180
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -343
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -167
- data/spec/extensions/defaults_setter_spec.rb +0 -102
- data/spec/extensions/delay_add_association_spec.rb +0 -74
- data/spec/extensions/dirty_spec.rb +0 -180
- data/spec/extensions/duplicate_columns_handler_spec.rb +0 -110
- data/spec/extensions/eager_each_spec.rb +0 -66
- data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
- data/spec/extensions/error_splitter_spec.rb +0 -18
- data/spec/extensions/error_sql_spec.rb +0 -20
- data/spec/extensions/eval_inspect_spec.rb +0 -73
- data/spec/extensions/filter_having_spec.rb +0 -40
- data/spec/extensions/force_encoding_spec.rb +0 -114
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/graph_each_spec.rb +0 -119
- data/spec/extensions/hash_aliases_spec.rb +0 -24
- data/spec/extensions/hook_class_methods_spec.rb +0 -429
- data/spec/extensions/identifier_columns_spec.rb +0 -17
- data/spec/extensions/inflector_spec.rb +0 -183
- data/spec/extensions/input_transformer_spec.rb +0 -54
- data/spec/extensions/insert_returning_select_spec.rb +0 -46
- data/spec/extensions/instance_filters_spec.rb +0 -79
- data/spec/extensions/instance_hooks_spec.rb +0 -276
- data/spec/extensions/inverted_subsets_spec.rb +0 -33
- data/spec/extensions/json_serializer_spec.rb +0 -304
- data/spec/extensions/lazy_attributes_spec.rb +0 -170
- data/spec/extensions/list_spec.rb +0 -278
- data/spec/extensions/looser_typecasting_spec.rb +0 -43
- data/spec/extensions/many_through_many_spec.rb +0 -2172
- data/spec/extensions/meta_def_spec.rb +0 -21
- data/spec/extensions/migration_spec.rb +0 -728
- data/spec/extensions/modification_detection_spec.rb +0 -80
- data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
- data/spec/extensions/named_timezones_spec.rb +0 -108
- data/spec/extensions/nested_attributes_spec.rb +0 -697
- data/spec/extensions/no_auto_literal_strings_spec.rb +0 -65
- data/spec/extensions/null_dataset_spec.rb +0 -85
- data/spec/extensions/optimistic_locking_spec.rb +0 -128
- data/spec/extensions/pagination_spec.rb +0 -118
- data/spec/extensions/pg_array_associations_spec.rb +0 -736
- data/spec/extensions/pg_array_ops_spec.rb +0 -143
- data/spec/extensions/pg_array_spec.rb +0 -390
- data/spec/extensions/pg_enum_spec.rb +0 -92
- data/spec/extensions/pg_hstore_ops_spec.rb +0 -236
- data/spec/extensions/pg_hstore_spec.rb +0 -206
- data/spec/extensions/pg_inet_ops_spec.rb +0 -101
- data/spec/extensions/pg_inet_spec.rb +0 -52
- data/spec/extensions/pg_interval_spec.rb +0 -76
- data/spec/extensions/pg_json_ops_spec.rb +0 -275
- data/spec/extensions/pg_json_spec.rb +0 -218
- data/spec/extensions/pg_loose_count_spec.rb +0 -17
- data/spec/extensions/pg_range_ops_spec.rb +0 -58
- data/spec/extensions/pg_range_spec.rb +0 -473
- data/spec/extensions/pg_row_ops_spec.rb +0 -60
- data/spec/extensions/pg_row_plugin_spec.rb +0 -62
- data/spec/extensions/pg_row_spec.rb +0 -360
- data/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -159
- data/spec/extensions/prepared_statements_safe_spec.rb +0 -61
- data/spec/extensions/prepared_statements_spec.rb +0 -103
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
- data/spec/extensions/pretty_table_spec.rb +0 -92
- data/spec/extensions/query_literals_spec.rb +0 -183
- data/spec/extensions/query_spec.rb +0 -102
- data/spec/extensions/rcte_tree_spec.rb +0 -392
- data/spec/extensions/round_timestamps_spec.rb +0 -43
- data/spec/extensions/schema_caching_spec.rb +0 -41
- data/spec/extensions/schema_dumper_spec.rb +0 -814
- data/spec/extensions/schema_spec.rb +0 -117
- data/spec/extensions/scissors_spec.rb +0 -26
- data/spec/extensions/select_remove_spec.rb +0 -38
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
- data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
- data/spec/extensions/serialization_spec.rb +0 -362
- data/spec/extensions/server_block_spec.rb +0 -90
- data/spec/extensions/server_logging_spec.rb +0 -45
- data/spec/extensions/set_overrides_spec.rb +0 -61
- data/spec/extensions/sharding_spec.rb +0 -198
- data/spec/extensions/shared_caching_spec.rb +0 -175
- data/spec/extensions/single_table_inheritance_spec.rb +0 -297
- data/spec/extensions/singular_table_names_spec.rb +0 -22
- data/spec/extensions/skip_create_refresh_spec.rb +0 -17
- data/spec/extensions/spec_helper.rb +0 -71
- data/spec/extensions/split_array_nil_spec.rb +0 -24
- data/spec/extensions/split_values_spec.rb +0 -22
- data/spec/extensions/sql_comments_spec.rb +0 -27
- data/spec/extensions/sql_expr_spec.rb +0 -60
- data/spec/extensions/static_cache_spec.rb +0 -361
- data/spec/extensions/string_agg_spec.rb +0 -85
- data/spec/extensions/string_date_time_spec.rb +0 -95
- data/spec/extensions/string_stripper_spec.rb +0 -68
- data/spec/extensions/subclasses_spec.rb +0 -66
- data/spec/extensions/subset_conditions_spec.rb +0 -38
- data/spec/extensions/table_select_spec.rb +0 -71
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -136
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- data/spec/extensions/timestamps_spec.rb +0 -175
- data/spec/extensions/to_dot_spec.rb +0 -154
- data/spec/extensions/touch_spec.rb +0 -203
- data/spec/extensions/tree_spec.rb +0 -274
- data/spec/extensions/typecast_on_load_spec.rb +0 -80
- data/spec/extensions/unlimited_update_spec.rb +0 -20
- data/spec/extensions/update_or_create_spec.rb +0 -87
- data/spec/extensions/update_primary_key_spec.rb +0 -100
- data/spec/extensions/update_refresh_spec.rb +0 -53
- data/spec/extensions/uuid_spec.rb +0 -106
- data/spec/extensions/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1027
- data/spec/extensions/validation_helpers_spec.rb +0 -554
- data/spec/extensions/xml_serializer_spec.rb +0 -207
- data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
- data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
- data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
- data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
- data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/double_migration/001_create_sessions.rb +0 -9
- data/spec/files/double_migration/002_create_nodes.rb +0 -19
- data/spec/files/double_migration/003_3_create_users.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
- data/spec/files/empty_migration/001_create_sessions.rb +0 -9
- data/spec/files/empty_migration/002_create_nodes.rb +0 -0
- data/spec/files/empty_migration/003_3_create_users.rb +0 -4
- data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
- data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
- data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
- data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
- data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/reversible_migrations/001_reversible.rb +0 -5
- data/spec/files/reversible_migrations/002_reversible.rb +0 -5
- data/spec/files/reversible_migrations/003_reversible.rb +0 -5
- data/spec/files/reversible_migrations/004_reversible.rb +0 -5
- data/spec/files/reversible_migrations/005_reversible.rb +0 -10
- data/spec/files/reversible_migrations/006_reversible.rb +0 -10
- data/spec/files/reversible_migrations/007_reversible.rb +0 -10
- data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
- data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
- data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
- data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
- data/spec/guards_helper.rb +0 -55
- data/spec/integration/associations_test.rb +0 -2506
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1858
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -262
- data/spec/integration/model_test.rb +0 -230
- data/spec/integration/plugin_test.rb +0 -2297
- data/spec/integration/prepared_statement_test.rb +0 -467
- data/spec/integration/schema_test.rb +0 -815
- data/spec/integration/spec_helper.rb +0 -56
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -406
- data/spec/integration/type_test.rb +0 -133
- data/spec/model/association_reflection_spec.rb +0 -565
- data/spec/model/associations_spec.rb +0 -4589
- data/spec/model/base_spec.rb +0 -759
- data/spec/model/class_dataset_methods_spec.rb +0 -150
- data/spec/model/dataset_methods_spec.rb +0 -149
- data/spec/model/eager_loading_spec.rb +0 -2197
- data/spec/model/hooks_spec.rb +0 -604
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -1097
- data/spec/model/plugins_spec.rb +0 -299
- data/spec/model/record_spec.rb +0 -2162
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -193
- data/spec/model_no_assoc_spec.rb +0 -1
- data/spec/model_spec.rb +0 -1
- data/spec/plugin_spec.rb +0 -1
- data/spec/sequel_coverage.rb +0 -15
- data/spec/spec_config.rb +0 -10
@@ -1,459 +0,0 @@
|
|
1
|
-
= New Adapter Support
|
2
|
-
|
3
|
-
* Sequel now has much better support for Oracle, both in the
|
4
|
-
ruby-oci8-based oracle adapter and in the jdbc/oracle adapter.
|
5
|
-
|
6
|
-
* Sequel now has much better support for connecting to HSQLDB
|
7
|
-
using the jdbc adapter. This support does not work correctly
|
8
|
-
with the jdbc-hsqldb gem, since the version it uses is too
|
9
|
-
old. You'll need to load the .jar file manually until the
|
10
|
-
gem is updated.
|
11
|
-
|
12
|
-
* Sequel now has much better support for connecting to Apache
|
13
|
-
Derby databases using the jdbc adapter. This works with
|
14
|
-
the jdbc-derby gem, but it's recommend you grab an updated
|
15
|
-
.jar file as the jdbc-derby gem doesn't currently support
|
16
|
-
truncate or booleans.
|
17
|
-
|
18
|
-
* The db2 adapter has had most of the remaining issues fixed,
|
19
|
-
and can now run Sequel's test suite cleanly. It's still
|
20
|
-
recommended that users switch to the ibmdb adapter if they
|
21
|
-
are connecting to DB2.
|
22
|
-
|
23
|
-
* A mock adapter has been added which provides a mock Database
|
24
|
-
object that allows you to easily set the returned rows, the
|
25
|
-
number of rows modified by update/delete, and the
|
26
|
-
autogenerating primary key integer for insert. It also allows
|
27
|
-
you to set specific columns in the dataset when retrieving
|
28
|
-
rows. The specs were full of partial implementations of
|
29
|
-
mock adapters, this mock adapter is much more complete and
|
30
|
-
offers full support for mocking transactions and database
|
31
|
-
sharding. Example:
|
32
|
-
|
33
|
-
DB = Sequel.mock(:fetch=>{:id=>1}, :numrows=>2, :autoid=>3)
|
34
|
-
DB[:items].all # => [{:id => 1}]
|
35
|
-
DB[:items].insert # => 3
|
36
|
-
DB[:items].insert # => 4
|
37
|
-
DB[:items].delete # => 2
|
38
|
-
DB[:items].update(:id=>2) # => 2
|
39
|
-
DB.sqls # => ['SELECT ...', 'INSERT ...', ...]
|
40
|
-
|
41
|
-
In addition to being useful in the specs, the mock adapter is
|
42
|
-
also used if you use bin/sequel without a database argument,
|
43
|
-
which makes it much easier to play around with Sequel on the
|
44
|
-
command line without being tied to a real database.
|
45
|
-
|
46
|
-
= New Transaction Features
|
47
|
-
|
48
|
-
* Database after_commit and after_rollback hooks have been added,
|
49
|
-
allowing you to set procs that are called after the currently-
|
50
|
-
in-effect transaction commits or rolls back. If the Database
|
51
|
-
is not currently in a transaction, the after_commit proc is
|
52
|
-
called immediately and the after_rollback proc is ignored.
|
53
|
-
|
54
|
-
* Model after_commit, after_rollback, after_destroy_commit, and
|
55
|
-
after_destroy_rollback hooks have been added that use the new
|
56
|
-
Database after_commit/after_rollback hook to execute code after
|
57
|
-
commit or rollback.
|
58
|
-
|
59
|
-
* Database#transaction now supports a :rollback => :reraise option
|
60
|
-
to reraise any Sequel::Rollback exceptions raised by the block.
|
61
|
-
|
62
|
-
* Database#transaction now supports a :rollback => :always option
|
63
|
-
to always rollback the transaction, which is mostly useful when
|
64
|
-
using transaction-based testing.
|
65
|
-
|
66
|
-
* Sequel.transaction has been added, allowing you to run
|
67
|
-
simultaneous transactions on multiple Database objects:
|
68
|
-
|
69
|
-
Sequel.transaction([DB1, DB2]){...}
|
70
|
-
# similar to:
|
71
|
-
DB1.transaction{DB2.transaction{...}}
|
72
|
-
|
73
|
-
You can combine this with the :rollback => :always option to
|
74
|
-
easily use multiple databases in the same test suite and make sure
|
75
|
-
that changes are rolled back on all of them.
|
76
|
-
|
77
|
-
* Database#in_transaction? has been added so that users can detect
|
78
|
-
whether the code is currently inside a transaction.
|
79
|
-
|
80
|
-
* The generic JDBC transaction support, used by 6 of Sequel's jdbc
|
81
|
-
subapters, now supports savepoints if the underlying JDBC driver
|
82
|
-
supports savepoints.
|
83
|
-
|
84
|
-
= Other New Features
|
85
|
-
|
86
|
-
* A dataset_associations plugin has been added, allowing datasets
|
87
|
-
to call association methods, which return datasets of rows in
|
88
|
-
the associated table that are associated to rows in the current
|
89
|
-
dataset.
|
90
|
-
|
91
|
-
# Dataset of tracks from albums with name < 'M'
|
92
|
-
# by artists with name > 'M'
|
93
|
-
|
94
|
-
Artist.filter(:name > 'M').albums.filter(:name < 'M').tracks
|
95
|
-
|
96
|
-
# SELECT * FROM tracks
|
97
|
-
# WHERE (tracks.album_id IN (
|
98
|
-
# SELECT albums.id FROM albums
|
99
|
-
# WHERE ((albums.artist_id IN (
|
100
|
-
# SELECT artists.id FROM artists
|
101
|
-
# WHERE (name > 'M')))
|
102
|
-
# AND (name < 'M'))))
|
103
|
-
|
104
|
-
* Database#extend_datasets has been added, allowing you to do the
|
105
|
-
equivalent of extending all of the database's future datasets
|
106
|
-
with a module. For performance, it creates an anonymous
|
107
|
-
subclass of the current dataset class and includes a module in
|
108
|
-
it, and uses the subclass to create future datasets.
|
109
|
-
|
110
|
-
Using this feature allows you to override any dataset method
|
111
|
-
and call super, similar to how Sequel::Model plugins work. The
|
112
|
-
method takes either a module:
|
113
|
-
|
114
|
-
Sequel.extension :columns_introspection
|
115
|
-
DB.extend_datasets(Sequel::ColumnsIntrospection)
|
116
|
-
|
117
|
-
or a block that it uses to create an anonymous module:
|
118
|
-
|
119
|
-
DB.extend_datasets do
|
120
|
-
# Always select from table.* instead of *
|
121
|
-
def from(*tables)
|
122
|
-
ds = super
|
123
|
-
if !@opts[:select] || @opts[:select].empty?
|
124
|
-
ds = ds.select_all(*tables)
|
125
|
-
end
|
126
|
-
ds
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
* Database#<< and Dataset#<< now return self, which allow them
|
131
|
-
to be used in chaining:
|
132
|
-
|
133
|
-
DB << "UPDATE foo SET bar_id = NULL" << "DROP TABLE bars"
|
134
|
-
DB[:foo] << {:bar_id=>0} << DB[:bars].select(:id)
|
135
|
-
|
136
|
-
* A Database#timezone accessor has been added, allowing you to
|
137
|
-
override Sequel.database_timezone on a per-Database basis, which
|
138
|
-
allows you to use two separate Database objects in the same
|
139
|
-
process that have different timezones.
|
140
|
-
|
141
|
-
* You can now modify the type conversion procs on a per-Database
|
142
|
-
basis when using the mysql, sqlite, and ibmdb adapters, by
|
143
|
-
modifying the hash returned by Database#conversion_procs.
|
144
|
-
|
145
|
-
* Model.dataset_module now accepts a Module instance as an argument,
|
146
|
-
and extends the model's dataset with that module.
|
147
|
-
|
148
|
-
* When using the postgres adapter with the pg driver, you can now
|
149
|
-
use Database#listen to wait for notifications. All adapters that
|
150
|
-
connect to postgres now support Database#notify to send
|
151
|
-
notifications:
|
152
|
-
|
153
|
-
# process 1
|
154
|
-
DB.listen('foo') do |ev, pid, payload|
|
155
|
-
ev # => 'foo'
|
156
|
-
notify_pid # => some Integer
|
157
|
-
payload # => 'bar'
|
158
|
-
end
|
159
|
-
|
160
|
-
# process 2
|
161
|
-
DB.notify('foo', :payload=>'bar')
|
162
|
-
|
163
|
-
* many_to_one associations now have a :qualify option that can be set
|
164
|
-
to false to not qualify the primary key when loading the
|
165
|
-
association. This shouldn't be necessary to use in most cases, but
|
166
|
-
in some cases qualifying a primary key breaks certain queries (e.g.
|
167
|
-
using JOIN USING on the same column on Oracle).
|
168
|
-
|
169
|
-
* Database#schema can now take a dataset as an argument if it just
|
170
|
-
selects from a single table. If a dataset is provided, the
|
171
|
-
schema parsing will use that dataset's identifier_input_method
|
172
|
-
and identifier_output_method for the parsing, instead of the
|
173
|
-
database's default. This makes it possible for Model classes
|
174
|
-
to correctly get the table schema if they use a dataset whose
|
175
|
-
identifier_(input|output)_method differs from the database
|
176
|
-
default.
|
177
|
-
|
178
|
-
* On databases that support common table expressions (CTEs) but do
|
179
|
-
not support CTE usage in subselects, Sequel now emulates support
|
180
|
-
by moving CTEs from the subselect to the main select when using
|
181
|
-
the Dataset from, from_self, with, with_recursive, union,
|
182
|
-
intersect, and except methods.
|
183
|
-
|
184
|
-
* The bitwise compliment operator is now emulated on H2.
|
185
|
-
|
186
|
-
* You can now set the convert_tinyint_to_bool setting on a
|
187
|
-
per-Database basis in the mysql and mysql2 adapters.
|
188
|
-
|
189
|
-
* You can now set the convert_invalid_date_time setting on a
|
190
|
-
per-Database basis in the mysql adapter.
|
191
|
-
|
192
|
-
* Database instances now have a dataset_class accessor that allows
|
193
|
-
you to set which class is used when creating datasets. This is
|
194
|
-
mostly used to implement the extend_datasets support, but it
|
195
|
-
could be useful for other purposes.
|
196
|
-
|
197
|
-
* Dataset#unused_table_alias now accepts an optional 2nd argument,
|
198
|
-
which should be an array of additional symbols that should be
|
199
|
-
considered as already used.
|
200
|
-
|
201
|
-
* Dataset#requires_placeholder_type_specifiers? has been added to
|
202
|
-
check if the dataset requires you use type specifiers for
|
203
|
-
bound variable placeholders.
|
204
|
-
|
205
|
-
The prepared_statements plugin now checks this setting and works
|
206
|
-
correctly on adapters that set it to true, such as oracle.
|
207
|
-
|
208
|
-
* Dataset#recursive_cte_requires_column_aliases? has been added
|
209
|
-
to check if you must provide a column list for a recursive CTE.
|
210
|
-
|
211
|
-
The rcte_tree plugin now checks this setting an works correctly
|
212
|
-
on databases that set it to true, such as Oracle and HSQLDB.
|
213
|
-
|
214
|
-
= Performance Improvements
|
215
|
-
|
216
|
-
* Numerous optimizations were made to loading model objects from
|
217
|
-
the database, resulting in a 7-16% speedup.
|
218
|
-
|
219
|
-
Model.call was added, and now .load is just an alias for .call.
|
220
|
-
This allows you to make the model dataset's row_proc the model
|
221
|
-
itself, instead of needing a separate block, which improves
|
222
|
-
performance.
|
223
|
-
|
224
|
-
While Model.load used to call .new (and therefore #initialize),
|
225
|
-
Model.call uses .allocate/#set_values/#after_initialize for speed.
|
226
|
-
This saves a method call or two, and skips setting the @new
|
227
|
-
instance variable.
|
228
|
-
|
229
|
-
* Dataset#map, #to_hash, #select_map, #select_order_map, and
|
230
|
-
#select_hash are now faster if any of the provided arguments are
|
231
|
-
an array of symbols.
|
232
|
-
|
233
|
-
* The Model.[] optimization is now applied in more cases.
|
234
|
-
|
235
|
-
= Other Improvements
|
236
|
-
|
237
|
-
* Sequel now creates accessor methods for all columns in a model's
|
238
|
-
table, even if the dataset doesn't select the columns. This has
|
239
|
-
been the specified behavior for a while, but the spec was broken.
|
240
|
-
This allows you do to:
|
241
|
-
|
242
|
-
Model.dataset = DB[:table].select(:column1, :column2)
|
243
|
-
Model.select_more(:column3).first.column3
|
244
|
-
|
245
|
-
* Model.def_dataset_method now correctly handles method names that
|
246
|
-
can't be used directly (such as method names with spaces). This
|
247
|
-
isn't so the method can be used with arbitrary user input, but
|
248
|
-
it will allow safe creation of dataset methods that are derived
|
249
|
-
from column names, which could contain spaces.
|
250
|
-
|
251
|
-
* Model.def_dataset_method no longer overrides private model
|
252
|
-
methods.
|
253
|
-
|
254
|
-
* The optimization that Model.[] uses now works correctly if the
|
255
|
-
model's dataset uses a different identifier_input_method than
|
256
|
-
the database.
|
257
|
-
|
258
|
-
* Sharding is supported correctly by default for the transactions
|
259
|
-
used by model objects. Previously, you had to use the sharding
|
260
|
-
plugin to make sure the same shard was used for transactions as
|
261
|
-
for the insert/update/delete statements.
|
262
|
-
|
263
|
-
* Sequel now fully supports using an aliased table for the
|
264
|
-
:join_table option of a many_to_many association. The only real
|
265
|
-
use case for an aliased :join_table option is when the join table
|
266
|
-
is the same as the associated model table.
|
267
|
-
|
268
|
-
* A bug when eagerly loading a many_through_many association with
|
269
|
-
composite keys where one of the join tables requires an alias
|
270
|
-
has been fixed.
|
271
|
-
|
272
|
-
* Sequel's transaction internals have had substantial improvments.
|
273
|
-
You can now open up simultaneous transactions on two separate
|
274
|
-
shards of the same Database object in the same thread. The new
|
275
|
-
design allows for future support of connection pools that aren't
|
276
|
-
based on threads. Sequel no longer abuses thread-local variables
|
277
|
-
to store savepoint state.
|
278
|
-
|
279
|
-
* Dataset#select_map and #select_order_map now return an array of
|
280
|
-
single element arrays if given an array with a single entry as
|
281
|
-
an argument. Previously, they returned an array of values, which
|
282
|
-
wasn't consistent.
|
283
|
-
|
284
|
-
* Sequel's emulation of bitwise operators with more than 2 arguments
|
285
|
-
now works on all adapters that use the emulation. The emulation
|
286
|
-
was broken in 3.28.0 when more than 2 arguments were used on H2,
|
287
|
-
DB2, Microsoft SQL Server, PostgreSQL, and SQLite.
|
288
|
-
|
289
|
-
* Dataset#columns now correctly handles the emulated offset support
|
290
|
-
used on DB2, Oracle, and Microsoft SQL Server when using the
|
291
|
-
jdbc, odbc, ado, and dbi adapters. Previously, Dataet#columns
|
292
|
-
could contain the row number column, which wasn't in the
|
293
|
-
hashes yielded by Dataset#each.
|
294
|
-
|
295
|
-
* Sequel can now parse primary key information on Microsoft SQL
|
296
|
-
Server. Previously, the only adapter that supported this was the
|
297
|
-
jdbc adapter, which uses the generic JDBC support. The shared
|
298
|
-
mssql adapter now supports parsing the information directly from
|
299
|
-
the database system tables. This means that if you are using
|
300
|
-
Model objects with a Microsoft SQL Server database using the
|
301
|
-
tinytds, odbc, or ado adapters, the model primary key
|
302
|
-
information will be set automatically.
|
303
|
-
|
304
|
-
* Sequel's prepared statement support no longer defines singleton
|
305
|
-
methods on the prepared statement objects.
|
306
|
-
|
307
|
-
* StringMethods#like is now case sensitive on SQLite and Microsoft
|
308
|
-
SQL Server, making it more similar to other databases.
|
309
|
-
|
310
|
-
* Sequel now works around an SQLite column naming bug if you select
|
311
|
-
columns qualified with the alias of a subselect without providing
|
312
|
-
an alias for the column itself.
|
313
|
-
|
314
|
-
* Sequel now handles more bound variable types when using bound
|
315
|
-
variables outside of prepared statements on SQLite.
|
316
|
-
|
317
|
-
* Sequel now works around a bug in certain versions of the
|
318
|
-
JDBC/SQLite driver when emulating alter table support for
|
319
|
-
operations such as drop_column.
|
320
|
-
|
321
|
-
* Sequel now emulates the add_constraint and drop_constraint
|
322
|
-
alter table operations on SQLite, though the emulation has
|
323
|
-
issues.
|
324
|
-
|
325
|
-
* Sequel now correctly handles composite primary keys when
|
326
|
-
emulating alter_table operations on SQLite.
|
327
|
-
|
328
|
-
* Sequel now applies the correct PRAGMA statements by default when
|
329
|
-
connecting to SQLite via the amalgalite and swift adapters.
|
330
|
-
|
331
|
-
* Sequel now supports using savepoints inside prepared transactions
|
332
|
-
on MySQL.
|
333
|
-
|
334
|
-
* Sequel now closes JDBC ResultSet objects as soon as it is done
|
335
|
-
using them, leading to potentially lower memory usage in the JDBC
|
336
|
-
adapter, and fixes issues if you try to drop a table before
|
337
|
-
GC has collected a related ResultSet.
|
338
|
-
|
339
|
-
* Sequel can now correctly insert all default values into a table
|
340
|
-
on DB2. Before, this didn't work correctly if the table had more
|
341
|
-
than one column.
|
342
|
-
|
343
|
-
* Another type of disconnection error is now recognized in the
|
344
|
-
mysql2 adapter.
|
345
|
-
|
346
|
-
* Sequel now uses better error messages if you attempt to execute a
|
347
|
-
prepared statement without a name using the postgres, mysql, and
|
348
|
-
mysql2 adapters.
|
349
|
-
|
350
|
-
* Some small fixes have been made that allow Sequel to run better
|
351
|
-
when $SAFE=1. However, Sequel is not officially supported using
|
352
|
-
$SAFE > 0, so there could be many issues remaining.
|
353
|
-
|
354
|
-
* Sequel's core and model specs were cleaned up by using the mock
|
355
|
-
adapter to eliminate a lot of redundant code.
|
356
|
-
|
357
|
-
* Sequel's integration tests were sped up considerably, halving
|
358
|
-
the execution time on some adapters.
|
359
|
-
|
360
|
-
= Backwards Compatibility
|
361
|
-
|
362
|
-
* Because Model.load is now an alias for .call, plugins should no
|
363
|
-
longer override load. Instead, they should override .call.
|
364
|
-
|
365
|
-
* Loading model objects from the database no longer calls
|
366
|
-
Model#initialize. Instead, it calls Model.allocate,
|
367
|
-
Model#set_values, and Model#after_initialize. So if you were
|
368
|
-
overriding #initialize and expecting the changes to affect model
|
369
|
-
objects loaded from the database, you need to change your code.
|
370
|
-
|
371
|
-
Additionally, @new is no longer set to false for objects retieved
|
372
|
-
from the database, since setting it to false hurts performance.
|
373
|
-
Model#new? still returns true or false, so this only affects you
|
374
|
-
if you are checking the instance variables directly.
|
375
|
-
|
376
|
-
* Dataset#<< no longer returns the autogenerated primary key for the
|
377
|
-
inserted row. As mentioned above, it now returns self to allow for
|
378
|
-
chaining. If you were previously relying on the return value,
|
379
|
-
switch from #<< to #insert.
|
380
|
-
|
381
|
-
* Dataset#map no longer calls the row_proc if given an argument, and
|
382
|
-
Dataset#to_hash no longer calls the row_proc if given two arguments.
|
383
|
-
This should only affect your code if you were using a row_proc that
|
384
|
-
modified the content of the hash (e.g. Model#after_initialize). If
|
385
|
-
you were relying on the old behavior, switch:
|
386
|
-
|
387
|
-
dataset.map(:foo)
|
388
|
-
# to
|
389
|
-
dataset.map{|r| r[:foo]}
|
390
|
-
|
391
|
-
dataset.to_hash(:foo, :bar)
|
392
|
-
# to
|
393
|
-
h = {}
|
394
|
-
dataset.each{|r| h[r[:foo]] = r[:bar]}
|
395
|
-
h
|
396
|
-
|
397
|
-
* Model classes now need to have a dataset before you can define
|
398
|
-
associations on them.
|
399
|
-
|
400
|
-
* Model classes now pass their dataset to Database#schema, instead of
|
401
|
-
their table name.
|
402
|
-
|
403
|
-
* The :eager_block association option (which defaults to the
|
404
|
-
association's block argument) is now called before the :eager_graph
|
405
|
-
association option has been applied, instead of after.
|
406
|
-
|
407
|
-
* The many_to_many association reflection :qualified_right_key entry
|
408
|
-
is now a method named qualified_right_key. Switch any
|
409
|
-
code using association_reflection[:qualified_right_key] to use
|
410
|
-
association_reflection.qualified_right_key.
|
411
|
-
|
412
|
-
* If you are using like on SQLite and Microsoft SQL Server and want
|
413
|
-
it to be case insensitive, switch to using ilike:
|
414
|
-
|
415
|
-
# Case sensitive
|
416
|
-
DB[:foos].where(:name.like('bar%'))
|
417
|
-
# Case insensitive
|
418
|
-
DB[:foos].where(:name.ilike('bar%'))
|
419
|
-
|
420
|
-
Sequel now sets the case_sensitive_like PRAGMA to true by default
|
421
|
-
on SQLite. To set it to false instead, pass the
|
422
|
-
:case_sensitive_like=>false option to the database when creating it.
|
423
|
-
|
424
|
-
* Sequel's alter table emulation on SQLite now renames the current
|
425
|
-
table then populates the replacement table, instead of
|
426
|
-
populating the replacement table at a temporary name, dropping
|
427
|
-
the current table, and then renaming the replacement table.
|
428
|
-
|
429
|
-
* The strings 'n' and 'no' (case insensitive) when typecasted to
|
430
|
-
boolean are now considered false values instead of true.
|
431
|
-
|
432
|
-
* The transaction internals had extensive changes, if you have any
|
433
|
-
code that depended on the transaction internals, it will probably
|
434
|
-
require changes.
|
435
|
-
|
436
|
-
* Using the Sequel::MySQL module settings for convert_tinyint_to_bool
|
437
|
-
and convert_invalid_date_time now only affects future Database
|
438
|
-
objects. You should switch to using the per-Database methods
|
439
|
-
if you are currently using the Sequel::MySQL module methods.
|
440
|
-
|
441
|
-
* The customized transaction support in the do (DataObjects) adapter
|
442
|
-
was removed. All three subadapters (postgres, mysql, sqlite) of
|
443
|
-
the do adapter implement their own transaction support, so this
|
444
|
-
should have no effect unless you were using the do adapter with
|
445
|
-
a different database type.
|
446
|
-
|
447
|
-
* The oracle support changed dramatically, so if you were relying
|
448
|
-
on the internals of the oracle support, you should take extra
|
449
|
-
care when upgrading.
|
450
|
-
|
451
|
-
= Advance Notice
|
452
|
-
|
453
|
-
* The next release of Sequel will contain significant changes to
|
454
|
-
how a dataset is literalized into an SQL string. If you have
|
455
|
-
a custom plugin, extension, or adapter that overrides a
|
456
|
-
method containing "literal", "sql", or "quote", or you make
|
457
|
-
other modifications or extensions to how Sequel currently
|
458
|
-
literalizes datasets to SQL, your code will likely need to
|
459
|
-
be modified to support the next release.
|
data/doc/release_notes/3.3.0.txt
DELETED
@@ -1,192 +0,0 @@
|
|
1
|
-
New Features
|
2
|
-
------------
|
3
|
-
|
4
|
-
* An association_proxies plugin has been added. This is not a
|
5
|
-
full-blown proxy implementation, but it allows you to write code
|
6
|
-
such as:
|
7
|
-
|
8
|
-
artist.albums.filter{num_tracks > 10}
|
9
|
-
|
10
|
-
Without the plugin, you have to call filter specifically on the
|
11
|
-
association's dataset:
|
12
|
-
|
13
|
-
artist.albums_dataset.filter{num_tracks > 10}
|
14
|
-
|
15
|
-
The plugin works by proxying array methods to the array of
|
16
|
-
associated objects, and all other methods to the association's
|
17
|
-
dataset. This results in the following behavior:
|
18
|
-
|
19
|
-
# Will load the associated objects (unless they are already
|
20
|
-
# cached), and return the length of the array
|
21
|
-
artist.albums.length
|
22
|
-
|
23
|
-
# Will issue an SQL query with COUNT (even if the association
|
24
|
-
# is already cached), and return the result
|
25
|
-
artist.albums.count
|
26
|
-
|
27
|
-
* The add_*/remove_*/remove_all_* association methods now take
|
28
|
-
additional arguments that are passed down to the
|
29
|
-
_add_*/_remove_*/_remove_all_* methods. One of the things this
|
30
|
-
allows you to do is update additional columns in join tables for
|
31
|
-
many_to_many associations:
|
32
|
-
|
33
|
-
class Album
|
34
|
-
many_to_many :artists
|
35
|
-
def _add_artist(artist, values={})
|
36
|
-
DB[:albums_artists].
|
37
|
-
insert(values.merge(:album_id=>id,
|
38
|
-
:artist_id=>artist.id))
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
album = Album[1]
|
43
|
-
artist1 = Artist[2]
|
44
|
-
artist2 = Artist[3]
|
45
|
-
album.add_artist(artist1, :relationship=>'composer')
|
46
|
-
album.add_artist(artist2, :relationship=>'arranger')
|
47
|
-
|
48
|
-
* The JDBC adapter now accepts a :convert_types option to turn off
|
49
|
-
Java type conversion. The option is true by default for
|
50
|
-
backwards compatibility and correctness, but can be set to false
|
51
|
-
to double performance. The option can be set at the database
|
52
|
-
and dataset levels:
|
53
|
-
|
54
|
-
DB = Sequel.jdbc('jdbc:postgresql://host/database',
|
55
|
-
:convert_types=>false)
|
56
|
-
DB.convert_types = true
|
57
|
-
ds = DB[:table]
|
58
|
-
ds.convert_types = false
|
59
|
-
|
60
|
-
* Dataset#from_self now takes an option hash and respects an
|
61
|
-
:alias option, giving the table alias to use.
|
62
|
-
|
63
|
-
* Dataset#unlimited was added, similar to unfiltered and unordered.
|
64
|
-
|
65
|
-
* SQL::WindowFunction is now a subclass of SQL::GenericExpression,
|
66
|
-
so you can alias it and treat it like any other SQL::Function.
|
67
|
-
|
68
|
-
Other Improvements
|
69
|
-
------------------
|
70
|
-
|
71
|
-
* Microsoft SQL Server support is much, much better in Sequel 3.3.0
|
72
|
-
than in previous versions. Support is pretty good with the ODBC,
|
73
|
-
ADO, and JDBC adapters, close to the level of support for
|
74
|
-
PostreSQL, MySQL, SQLite, and H2. Improvements are too numerous
|
75
|
-
to list, but here are some highlights:
|
76
|
-
|
77
|
-
* Dataset#insert now returns the primary key (identity field), so
|
78
|
-
it can be used easier with models.
|
79
|
-
|
80
|
-
* Transactions can now use savepoints (except on ADO).
|
81
|
-
|
82
|
-
* Offsets are supported when using SQL Server 2005 or 2008, using
|
83
|
-
a ROW_NUMBER window function. However, you must specify an
|
84
|
-
order for your dataset (which you probably are already doing if
|
85
|
-
you are using offsets).
|
86
|
-
|
87
|
-
* Schema parsing has been implemented, though it doesn't support
|
88
|
-
primary key parsing (except on JDBC, since the JDBC support is
|
89
|
-
used there).
|
90
|
-
|
91
|
-
* The SQL syntax Sequel uses is now much more compatible, and
|
92
|
-
most schema modification methods and database types now work
|
93
|
-
correctly.
|
94
|
-
|
95
|
-
* The ADO and ODBC adapters both work much better now. The ADO
|
96
|
-
adapter no longer attempts to use transactions, since I've found
|
97
|
-
that ADO does not give a stable native connection (and hence
|
98
|
-
transactions weren't possible). I strongly recommend against
|
99
|
-
using the ADO adapter in production.
|
100
|
-
|
101
|
-
* The H2 JDBC subadapter now supports rename_column, set_column_null,
|
102
|
-
set_column_type, and add_foreign_key.
|
103
|
-
|
104
|
-
* Altering a columns type, null status, or default is now supported
|
105
|
-
on SQLite. You can also add primary keys and unique columns.
|
106
|
-
|
107
|
-
* Both the ADO and ODBC adapters now catch the native exception
|
108
|
-
classes and raise Sequel::DatabaseErrors.
|
109
|
-
|
110
|
-
* Model classes now default to associating to other classes in the
|
111
|
-
same scope. This makes it easier to use namespaced models.
|
112
|
-
|
113
|
-
* The schema parser and schema dumper now support the following
|
114
|
-
types: nchar, nvarchar, ntext, smalldatetime, smallmoney, binary,
|
115
|
-
and varbinary.
|
116
|
-
|
117
|
-
* You can now specify the null status for a column using :allow_null
|
118
|
-
in addition to :null. This is to make it easier to use the
|
119
|
-
table creation methods with the results of the schema parser.
|
120
|
-
|
121
|
-
* Renaming a NOT NULL column without a default now works on MySQL.
|
122
|
-
|
123
|
-
* Model class initialization now raises an exception if there is a
|
124
|
-
problem connecting to the database.
|
125
|
-
|
126
|
-
* Connection pool performance has been increased slightly.
|
127
|
-
|
128
|
-
* The literal_time method in the ODBC adapter has been fixed.
|
129
|
-
|
130
|
-
* An unlikely but potential bug in the MySQL adapter has been fixed.
|
131
|
-
|
132
|
-
Backwards Compatibility
|
133
|
-
-----------------------
|
134
|
-
|
135
|
-
* The convert_tinyint_to_bool setting moved from the main Sequel
|
136
|
-
module to the Sequel::MySQL module. The native MySQL adapter is
|
137
|
-
the only adapter that converted tinyint columns to booleans when
|
138
|
-
the rows are returned, so you can only use the setting with the
|
139
|
-
native MySQL adapter.
|
140
|
-
|
141
|
-
Additionally, the setting's behavior has changed. When parsing
|
142
|
-
the schema, now only tinyint(1) columns are now considered as
|
143
|
-
boolean, instead of all tinyint columns. This allows you to use
|
144
|
-
tinyint(4) columns for storing small integers and tinyint(1)
|
145
|
-
columns as booleans, and not have the schema parsing support
|
146
|
-
consider the tinyint(4) columns as booleans. Unfortunately,
|
147
|
-
due to limitations in the native MySQL driver, all tinyint
|
148
|
-
column values are converted to booleans upon retrieval, not just
|
149
|
-
tinyint(1) column values.
|
150
|
-
|
151
|
-
Unfortunately, the previous Sequel behavior was to use the
|
152
|
-
default tinyint size (tinyint(4)) when creating boolean columns
|
153
|
-
(using the TrueClass or FalseClass generic types). If you were
|
154
|
-
using the generic type support to create the columns, you should
|
155
|
-
modify your database to change the column type from tinyint(4) to
|
156
|
-
tinyint(1).
|
157
|
-
|
158
|
-
If you use MySQL with tinyint columns, these changes have the
|
159
|
-
potential to break applications. Care should be taken when
|
160
|
-
upgrading if these changes apply to you.
|
161
|
-
|
162
|
-
* Model classes now default to associating to other classes in the
|
163
|
-
same scope. It's highly unlikely anyone was relying on the
|
164
|
-
previous behavior, but if you have a model inside a module that
|
165
|
-
you are associating to a model outside of a module, you now need
|
166
|
-
to specify the associated class using the :class option.
|
167
|
-
|
168
|
-
* Model#save no longer includes the primary key fields in the SET
|
169
|
-
clause of the UPDATE query, only in the WHERE clause. I'm not
|
170
|
-
sure if this affects backwards compatibility of production code,
|
171
|
-
but it can break tests that expect specific SQL.
|
172
|
-
|
173
|
-
* Behavior to handle empty identifiers has now been standardized.
|
174
|
-
If any database adapter returns an empty identifier, Sequel will
|
175
|
-
use 'untitled' as the identifier. This can break backwards
|
176
|
-
compatibility if the adapter previously used another default and
|
177
|
-
you were relying on that default. This was necessary to fix any
|
178
|
-
possible "interning empty string" exceptions.
|
179
|
-
|
180
|
-
* On MSSQL, Sequel now uses the datetime type instead of the
|
181
|
-
timestamp type for generic DateTimes. It now uses bit for the
|
182
|
-
TrueClass and FalseClass generic types, and image for the File
|
183
|
-
generic type.
|
184
|
-
|
185
|
-
* Sequel now unescapes URL parts:
|
186
|
-
|
187
|
-
Sequel.connect(ado:///db?host=server%5cinstance)
|
188
|
-
|
189
|
-
However, this can break backward compatibility if you previously
|
190
|
-
expected it not to be unescaped.
|
191
|
-
|
192
|
-
* The columns_for private SQLite Database method has been removed.
|