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
data/doc/release_notes/2.2.0.txt
DELETED
@@ -1,253 +0,0 @@
|
|
1
|
-
The Most Powerful and Flexible Associations of Any Ruby ORM
|
2
|
-
-----------------------------------------------------------
|
3
|
-
|
4
|
-
Sequel can now support any association type supported by
|
5
|
-
ActiveRecord, and many association types ActiveRecord doesn't
|
6
|
-
support.
|
7
|
-
|
8
|
-
Association callbacks (:before_add, :after_add, :before_remove,
|
9
|
-
:after_remove) have been added, and work for all association
|
10
|
-
types. Each of the callback options can be a Symbol specifying an
|
11
|
-
instance method that takes one argument (the associated object), or a
|
12
|
-
Proc that takes two arguments (the current object and the associated
|
13
|
-
object), or an array of Symbols and Procs. Additionally, an
|
14
|
-
:after_load callback is available, which is running after loading the
|
15
|
-
associated record(s) from the database.
|
16
|
-
|
17
|
-
Association extensions are now supported:
|
18
|
-
|
19
|
-
class FindOrCreate
|
20
|
-
def find_or_create(vals)
|
21
|
-
first(vals) || create(vals)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
class Author < Sequel::Model
|
25
|
-
one_to_many :authorships, :extend=>FindOrCreate
|
26
|
-
end
|
27
|
-
Author.first.authorships_dataset.find_or_create(:name=>'Bob')
|
28
|
-
|
29
|
-
Sequel has been able to support most has_many :through style
|
30
|
-
associations since 1.3, via many_to_many (since it doesn't break on
|
31
|
-
join tables that are also model tables, unlike ActiveRecord's
|
32
|
-
has_and_belongs_to_many). Now it can also support has_many :through
|
33
|
-
style associations where it goes through a has_many association.
|
34
|
-
|
35
|
-
Sequel can now support polymorphic associations. Polymorphic
|
36
|
-
associations are really a design flaw, so Sequel doesn't support them
|
37
|
-
directly, but the tools that Sequel gives you make them pretty easy
|
38
|
-
to implement.
|
39
|
-
|
40
|
-
Sequel can also support associations that ActiveRecord does not. For
|
41
|
-
example, a belongs_to association where the column referenced in the
|
42
|
-
associated table is not the primary key, an association that depends
|
43
|
-
on multiple columns in each table, or even situations where the
|
44
|
-
association has a column in the primary table that can be referenced
|
45
|
-
by any of multiple columns in a second table that has a has_one style
|
46
|
-
association with the table you want to associate with.
|
47
|
-
|
48
|
-
Some of those associations can be supported for a single object using
|
49
|
-
custom SQL in ActiveRecord, but none are supported when eager
|
50
|
-
loading or allow further filtering.
|
51
|
-
|
52
|
-
Not only can all of these cases be supported with Sequel::Model, all
|
53
|
-
can be supported with eager loading, and can allow for further
|
54
|
-
filtering. See
|
55
|
-
http://sequel.rubyforge.org/files/sequel/doc/advanced_associations_rdoc.html
|
56
|
-
for details and example code for all association types covered above.
|
57
|
-
|
58
|
-
There have also been many additional options added for controlling
|
59
|
-
eager loading via eager_graph. Every part of the SQL JOINs can now
|
60
|
-
be controlled via one of the options, so you can use JOIN USING,
|
61
|
-
NATURAL JOIN, or arbitrary JOIN ON conditions.
|
62
|
-
|
63
|
-
Finally, just to show off the power that Sequel gives you when eager
|
64
|
-
loading, here is example code that will eagerly load all descendants
|
65
|
-
and ancestors in a tree structure, without knowing the depth of the
|
66
|
-
tree:
|
67
|
-
|
68
|
-
class Node < Sequel::Model
|
69
|
-
set_schema do
|
70
|
-
primary_key :id
|
71
|
-
foreign_key :parent_id, :nodes
|
72
|
-
end
|
73
|
-
create_table
|
74
|
-
|
75
|
-
many_to_one :parent
|
76
|
-
one_to_many :children, :key=>:parent_id
|
77
|
-
|
78
|
-
# Only useful when eager loading
|
79
|
-
many_to_one :ancestors, :eager_loader=>(proc do |key_hash, nodes,
|
80
|
-
associations|
|
81
|
-
# Handle cases where the root node has the same parent_id as
|
82
|
-
primary_key
|
83
|
-
# and also when it is NULL
|
84
|
-
non_root_nodes = nodes.reject do |n|
|
85
|
-
if [nil, n.pk].include?(n.parent_id)
|
86
|
-
# Make sure root nodes have their parent association set to
|
87
|
-
nil
|
88
|
-
n.associations[:parent] = nil
|
89
|
-
true
|
90
|
-
else
|
91
|
-
false
|
92
|
-
end
|
93
|
-
end
|
94
|
-
unless non_root_nodes.empty?
|
95
|
-
id_map = {}
|
96
|
-
# Create an map of parent_ids to nodes that have that parent id
|
97
|
-
non_root_nodes.each{|n| (id_map[n.parent_id] ||= []) << n}
|
98
|
-
# Doesn't cause an infinte loop, because when only the root node
|
99
|
-
# is left, this is not called.
|
100
|
-
Node.filter(Node.primary_key=>id_map.keys).eager(:ancestors).all
|
101
|
-
do |node|
|
102
|
-
# Populate the parent association for each node
|
103
|
-
id_map[node.pk].each{|n| n.associations[:parent] = node}
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end)
|
107
|
-
many_to_one :descendants, :eager_loader=>(proc do |key_hash, nodes,
|
108
|
-
associations|
|
109
|
-
id_map = {}
|
110
|
-
nodes.each do |n|
|
111
|
-
# Initialize an empty array of child associations for each
|
112
|
-
parent node
|
113
|
-
n.associations[:children] = []
|
114
|
-
# Populate identity map of nodes
|
115
|
-
id_map[n.pk] = n
|
116
|
-
end
|
117
|
-
# Doesn't cause an infinite loop, because the :eager_loader is not
|
118
|
-
called
|
119
|
-
# if no records are returned. Exclude id = parent_id to avoid
|
120
|
-
infinite loop
|
121
|
-
# if the root note is one of the returned records and it has
|
122
|
-
parent_id = id
|
123
|
-
# instead of parent_id = NULL.
|
124
|
-
Node.filter(:parent_id=>id_map.keys).exclude(:id=>:parent_id).eager(:descendants).all
|
125
|
-
do |node|
|
126
|
-
# Get the parent from the identity map
|
127
|
-
parent = id_map[node.parent_id]
|
128
|
-
# Set the child's parent association to the parent
|
129
|
-
node.associations[:parent] = parent
|
130
|
-
# Add the child association to the array of children in the
|
131
|
-
parent
|
132
|
-
parent.associations[:children] << node
|
133
|
-
end
|
134
|
-
end)
|
135
|
-
end
|
136
|
-
|
137
|
-
nodes = Node.filter(:id < 10).eager(:ancestors, :descendants).all
|
138
|
-
|
139
|
-
New Adapter Features
|
140
|
-
--------------------
|
141
|
-
|
142
|
-
* PostgreSQL bytea fields are now fully supported.
|
143
|
-
|
144
|
-
* The PostgreSQL adapter now uses the safer connection-specific
|
145
|
-
string escaping if you are using ruby-pg.
|
146
|
-
|
147
|
-
* The SQLite adapter supports drop_column and add_index.
|
148
|
-
|
149
|
-
* You can now use URL parameters in the connection string, enabling
|
150
|
-
you to connect to PostgreSQL via a socket using
|
151
|
-
postgres://user:password@blah/database?host=/tmp
|
152
|
-
|
153
|
-
Other New Features
|
154
|
-
------------------
|
155
|
-
|
156
|
-
* Dataset#graph now takes a block which it passes to join_table.
|
157
|
-
|
158
|
-
* Symbol#identifier has been added, which can be used if another
|
159
|
-
library defines the same operator(s) on Symbol that Sequel defines.
|
160
|
-
|
161
|
-
* Filter blocks now yield a VirtualRow instance, which can yield
|
162
|
-
Identifiers, QualifiedIdentifiers, or Functions. Like
|
163
|
-
Symbol#identifier, this is useful if another library defines the
|
164
|
-
same operator(s) on Symbol that Sequel defines.
|
165
|
-
|
166
|
-
* You can now call Model.to_hash to get an identity map for all
|
167
|
-
rows (before this required Model.dataset.to_hash).
|
168
|
-
|
169
|
-
* A model that can get it's column information from the schema will
|
170
|
-
set it in the dataset, potentially saving many queries.
|
171
|
-
|
172
|
-
* Model.validates_presence_of now works correctly for boolean
|
173
|
-
columns.
|
174
|
-
|
175
|
-
Notable Bug Fixes
|
176
|
-
-----------------
|
177
|
-
|
178
|
-
* Caching now works with Model subclasses.
|
179
|
-
|
180
|
-
* Model validation methods now work with source reloading.
|
181
|
-
|
182
|
-
* The PostgreSQL adapter no longer raises an Error if you try to
|
183
|
-
insert a record with the primary key already specified.
|
184
|
-
|
185
|
-
* Sequel no longer messes with the native MySQL adapter, so you can
|
186
|
-
use Sequel and ActiveRecord with MySQL in the same process.
|
187
|
-
|
188
|
-
* Dataset#count now works correctly for limited dataset.
|
189
|
-
|
190
|
-
* PostgreSQL Database#transaction method yields a connection, similar
|
191
|
-
to the other adapters.
|
192
|
-
|
193
|
-
* Using a hash argument in #distinct, #order, or #group is treated
|
194
|
-
as an expression instead of a column alias.
|
195
|
-
|
196
|
-
* Cloned datasets no longer ignore the existing columns unless it is
|
197
|
-
necessary.
|
198
|
-
|
199
|
-
* The :quote_identifiers and :single_threaded Database options now
|
200
|
-
work correctly.
|
201
|
-
|
202
|
-
Backwards Incompatible Changes
|
203
|
-
------------------------------
|
204
|
-
|
205
|
-
* ParseTree support, deprecated in 2.1.0, has been removed in 2.2.0.
|
206
|
-
You should use the expression filter syntax instead, perferably
|
207
|
-
without the block (though it can be used inside a block as well).
|
208
|
-
This usually involves the following types of changes:
|
209
|
-
|
210
|
-
filter{:x == :y} => filter(:x => :y)
|
211
|
-
filter{:x << :y} => filter(:x => :y)
|
212
|
-
filter{:x && :y} => filter(:x & :y) # Don't forget about change
|
213
|
-
filter{:x || :y} => filter(:x | :y) # in operator precedence
|
214
|
-
filter{:x.like?('%blah%')} => filter(:x.like('%blah%'))
|
215
|
-
filter do => filter((:x > 1) & (:y < 2))
|
216
|
-
:x > 1
|
217
|
-
:y < 2
|
218
|
-
end
|
219
|
-
|
220
|
-
* Attempts to save an invalid Model instance will raise an error by
|
221
|
-
default. To revert to returning a nil value, use:
|
222
|
-
|
223
|
-
Sequel::Model.raise_on_save_failure = false # Global
|
224
|
-
Album.raise_on_save_failure = false # Class
|
225
|
-
album = Album.new
|
226
|
-
album.raise_on_save_failure = false # Instance
|
227
|
-
|
228
|
-
Note that before, save would return false where now it returns nil
|
229
|
-
if you disable raising on save failure.
|
230
|
-
|
231
|
-
* Dataset#update no longer takes a block, as it's use of the block
|
232
|
-
depended on ParseTree. With the introduction of the expression
|
233
|
-
syntax in 2.0.0, it's no longer necessary. You should use a hash
|
234
|
-
with an expression as the value instead:
|
235
|
-
|
236
|
-
DB[:table].update(:column=>:column + 1)
|
237
|
-
|
238
|
-
* validates_presence of now considers false as present instead of
|
239
|
-
absent. This is so it works with boolean columns.
|
240
|
-
|
241
|
-
* Dataset#graph ignores any previously selected columns when it is
|
242
|
-
called for the first time.
|
243
|
-
|
244
|
-
* Dataset#columns ignores any filtering, ordering, or distinct
|
245
|
-
clauses. This shouldn't cause issues unless you were using
|
246
|
-
SQL functions with side effects and expecting them to be called
|
247
|
-
when columns was called (unlikely at best).
|
248
|
-
|
249
|
-
One significant point of note is that the 2.2.0 release will be the
|
250
|
-
last release with both a sequel_core and sequel gem. Starting
|
251
|
-
with 2.3.0 they will be combined into one sequel gem. You will still
|
252
|
-
be able to get just the sequel_core part by requiring 'sequel_core',
|
253
|
-
but they will be packaged together.
|
data/doc/release_notes/2.3.0.txt
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
JRuby and Ruby 1.9 Officially Supported
|
2
|
-
---------------------------------------
|
3
|
-
|
4
|
-
Sequel now officially supports JRuby 1.1.3 and Ruby 1.9 (svn revision
|
5
|
-
18194 at least). Using JRuby with the JDBC adapter, PostgreSQL,
|
6
|
-
MySQL, and SQLite now enjoy almost full support, though not
|
7
|
-
everything works the same as using the native adapter. Depending on
|
8
|
-
what you are doing, it may make sense to use postgres-pr on JRuby
|
9
|
-
instead of PostgreSQL-JDBC.
|
10
|
-
|
11
|
-
To use the new JDBC support, the database connection string you give
|
12
|
-
Sequel is now passed directly to JDBC, here are a few examples:
|
13
|
-
|
14
|
-
Sequel.connect('jdbc:postgresql://host/database?user=*&password=*')
|
15
|
-
Sequel.connect('jdbc:mysql://host/database?user=*&password=*')
|
16
|
-
Sequel.connect('jdbc:sqlite::memory:')
|
17
|
-
Sequel.connect('jdbc:sqlite:relative/path.db')
|
18
|
-
Sequel.connect('jdbc:sqlite:/absolute/path.db')
|
19
|
-
|
20
|
-
Single Gem
|
21
|
-
----------
|
22
|
-
|
23
|
-
Sequel is now distributed as a single gem named sequel, by combining
|
24
|
-
the previous sequel_core and sequel gems. You can still just
|
25
|
-
"require 'sequel_core'" if you don't want the model functionality.
|
26
|
-
|
27
|
-
Database Adapter Improvements
|
28
|
-
-----------------------------
|
29
|
-
|
30
|
-
* Dataset#empty? now works using the MySQL adapter.
|
31
|
-
|
32
|
-
* The Oracle adapter now works with a nonstandard database port.
|
33
|
-
|
34
|
-
* The JDBC adapter should load JDBC drivers automatically for
|
35
|
-
PostgreSQL, MySQL, SQLite, Oracle, and MSSQL. For PostgreSQL,
|
36
|
-
MySQL, and SQLite, the jdbc-* gem can be used, for the others, you
|
37
|
-
must have the correct .jar in your CLASSPATH.
|
38
|
-
|
39
|
-
* The PostgreSQL adapter no longer raises an error when inserting
|
40
|
-
records into a table without a primary key.
|
41
|
-
|
42
|
-
* Database#disconnect now works for the ADO adapter.
|
43
|
-
|
44
|
-
* The ADO adapter no longer raises an error if the dataset contains
|
45
|
-
no records.
|
46
|
-
|
47
|
-
* The ODBC adapter no longer errors when converting ::ODBC::Time
|
48
|
-
values.
|
49
|
-
|
50
|
-
Backwards Incompatible Changes
|
51
|
-
------------------------------
|
52
|
-
|
53
|
-
* Sequel::Worker has been removed. There are no known users, and the
|
54
|
-
specs caused problems on JRuby.
|
55
|
-
|
56
|
-
* Assigning an empty string to a non-string, non-blob model attribute
|
57
|
-
converts it to nil by default. You can use
|
58
|
-
"Model.typecast_empty_string_to_nil = false" to get the old
|
59
|
-
behavior. This should make web development with Sequel
|
60
|
-
significantly easier, hopefully at no expense to other uses.
|
61
|
-
|
62
|
-
* Database.uri_to_options is now a private class method.
|
63
|
-
|
64
|
-
* Model.create_table! now acts the same as Database.create_table!,
|
65
|
-
dropping the table unconditionally and then creating it. This was
|
66
|
-
done for consistency. If you are using Model.create_table! in
|
67
|
-
production code, you should change it to
|
68
|
-
"Model.create_table unless Model.table_exists?", otherwise you risk
|
69
|
-
wiping out your production data. I recommended you use the
|
70
|
-
migration feature instead of Model.set_schema, as that handles
|
71
|
-
altering existing tables.
|
72
|
-
|
73
|
-
Other Notable Changes
|
74
|
-
---------------------
|
75
|
-
|
76
|
-
* Using validates_length_of more than once on the same attribute with
|
77
|
-
different options without a tag no longer causes the first use to
|
78
|
-
be ignored. This was a side effect of the validation tags added
|
79
|
-
in 2.2.0.
|
80
|
-
|
81
|
-
* Other than the adapters, Sequel now has 100% code coverage (line
|
82
|
-
coverage).
|
83
|
-
|
84
|
-
* Model#set* methods now return self.
|
85
|
-
|
86
|
-
* An integration test suite was added, testing Sequel against a live
|
87
|
-
database with nothing mocked, which helped greatly when testing the
|
88
|
-
new support for JDBC adapters.
|
data/doc/release_notes/2.4.0.txt
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
Prepared Statements/Bound Variables
|
2
|
-
===================================
|
3
|
-
|
4
|
-
Sequel now supports prepared statements and bound variables. No
|
5
|
-
matter which database you are using, Sequel uses exactly the same API.
|
6
|
-
To specify placeholders, you use the :$placeholder syntax:
|
7
|
-
|
8
|
-
ds = DB[:items].filter(:name=>:$n)
|
9
|
-
|
10
|
-
To use a bound variable:
|
11
|
-
|
12
|
-
ds.call(:select, :n=>'Jim')
|
13
|
-
|
14
|
-
This will do the equivalent of selecting records that have the name
|
15
|
-
'Jim'. In addition to :select, you can use :first or :delete. There
|
16
|
-
is also support for bound variables when inserting or updating
|
17
|
-
records:
|
18
|
-
|
19
|
-
ds.call(:update, {:n=>'Jim', :new_n=>'Bob'}, :name=>:$new_n)
|
20
|
-
|
21
|
-
Which will update all records that have the name 'Jim' to have the
|
22
|
-
name 'Bob'.
|
23
|
-
|
24
|
-
Prepared statement support is very similar to bound variable support,
|
25
|
-
except that the statement is first prepared with a name:
|
26
|
-
|
27
|
-
ps = ds.prepare(:select, :select_by_name)
|
28
|
-
|
29
|
-
It is then called later with the bound arguments to use:
|
30
|
-
|
31
|
-
ps.call(:n=>'Jim')
|
32
|
-
DB.call(:select_by_name, :n=>'Jim') # same as above
|
33
|
-
|
34
|
-
For inserting or updating, the hash to use when inserting or updating
|
35
|
-
is given to prepare:
|
36
|
-
|
37
|
-
ps2 = ds.prepare(:update, :update_name, :name=>:$new_n)
|
38
|
-
ps2.call(:n=>'Jim', :new_n=>'Bob')
|
39
|
-
|
40
|
-
There is some level of native support for these features in the
|
41
|
-
PostgreSQL, MySQL, SQLite, and JDBC adapters. For other adapters,
|
42
|
-
support is emulated, but it shouldn't be too difficult to add native
|
43
|
-
support for them.
|
44
|
-
|
45
|
-
For more details see:
|
46
|
-
http://sequel.rubyforge.org/rdoc/files/doc/prepared_statements_rdoc.html
|
47
|
-
|
48
|
-
Read-Only Slave/Writable Master and Database Sharding
|
49
|
-
=====================================================
|
50
|
-
|
51
|
-
Sequel now has built in support for master/slave database
|
52
|
-
configurations, just by setting an option in Sequel.connect:
|
53
|
-
|
54
|
-
DB=Sequel.connect('postgres://master_server/database', \
|
55
|
-
:servers=>{:read_only=>{:host=>'slave_server'}})
|
56
|
-
|
57
|
-
That will use slave_server for SELECT queries and master_server for
|
58
|
-
other queries. It's fairly easy to use multiple slaves or even
|
59
|
-
multiple masters, examples are included in the link below.
|
60
|
-
|
61
|
-
Sharding support requires some code other than the database
|
62
|
-
configuration, but is still fairly simple. For example, to set up
|
63
|
-
a 16 shard configuration based on a hex character:
|
64
|
-
|
65
|
-
servers = {}
|
66
|
-
(('0'..'9').to_a + ('a'..'f').to_a).each do |hex|
|
67
|
-
servers[hex.to_sym] = {:host=>"hash_host_#{hex}"}
|
68
|
-
end
|
69
|
-
DB=Sequel.connect('postgres://hash_host/hashes', :servers=>servers)
|
70
|
-
|
71
|
-
To set which shard to use for a query, use the Dataset#server method:
|
72
|
-
|
73
|
-
DB[:hashes].server(:a).filter(:hash=>/31337/)
|
74
|
-
|
75
|
-
For more details see:
|
76
|
-
http://sequel.rubyforge.org/rdoc/files/doc/sharding_rdoc.html
|
77
|
-
|
78
|
-
Other Changes
|
79
|
-
=============
|
80
|
-
|
81
|
-
* The sequel.rubyforge.org website has a new design thanks to boof.
|
82
|
-
The online RDoc is now located at http://sequel.rubyforge.org/rdoc.
|
83
|
-
|
84
|
-
* Support was added for anonymous column names in the ADO adapter.
|
85
|
-
|
86
|
-
* Better MSSQL support in the ADO, ODBC, and JDBC adapters. The
|
87
|
-
odbc_mssql adapter has been removed. If you use MSSQL with ODBC,
|
88
|
-
please use the odbc adapter with a :db_type=>'mssql' option.
|
89
|
-
|
90
|
-
* The following Sequel::Error exception subclasses were removed:
|
91
|
-
InvalidExpression, InvalidFilter, InvalidJoinType, and WorkerStop.
|
92
|
-
|
93
|
-
* Documentation was added for the PostgreSQL, MySQL, SQLite, and
|
94
|
-
JDBC adapters.
|
95
|
-
|
96
|
-
* Various internal interfaces were refactored. For example, if you
|
97
|
-
use an adapter not included with Sequel, it probably won't work
|
98
|
-
until you update it to the new internal API.
|
99
|
-
|
100
|
-
* Many low level methods (such as Database#transaction), now take
|
101
|
-
an optional server argument to indicate which server to use.
|
102
|
-
|
103
|
-
* Model plugins that have a DatasetMethods module with non-public
|
104
|
-
methods no longer have Model methods created that call those
|
105
|
-
methods.
|
106
|
-
|
data/doc/release_notes/2.5.0.txt
DELETED
@@ -1,137 +0,0 @@
|
|
1
|
-
New Features
|
2
|
-
------------
|
3
|
-
|
4
|
-
* The values that are used to insert/update records can now be
|
5
|
-
scoped similar to how filter expressions can be scoped.
|
6
|
-
set_defaults is used to set defaults which can be overridden,
|
7
|
-
and set_overrides is used to set defaults which cannot be
|
8
|
-
overridden:
|
9
|
-
|
10
|
-
DB[:t].set_defaults(:x=>1).insert_sql
|
11
|
-
# => INSERT INTO t (x) VALUES (1)
|
12
|
-
DB[:t].set_defaults(:x=>1).insert_sql(:x=>2)
|
13
|
-
# => INSERT INTO t (x) VALUES (2)
|
14
|
-
DB[:t].set_defaults(:x=>1).insert_sql(:y=>2)
|
15
|
-
# => INSERT INTO t (x, y) VALUES (1, 2)
|
16
|
-
DB[:t].set_overrides(:x=>1).insert_sql(:x=>2)
|
17
|
-
# => INSERT INTO t (x) VALUES (1)
|
18
|
-
|
19
|
-
The difference between set_defaults and set_overrides is that
|
20
|
-
with set_defaults, the last value takes precedence, while with
|
21
|
-
set_overrides, the first value takes precedence.
|
22
|
-
|
23
|
-
* The schema generators now support creating and altering tables
|
24
|
-
with composite primary and/or foreign keys:
|
25
|
-
|
26
|
-
DB.create_table(:items) do
|
27
|
-
integer :id
|
28
|
-
text :name
|
29
|
-
primary_key [:id, :name]
|
30
|
-
foreign_key [:id, :name], :other_table, \
|
31
|
-
:key=>[:item_id, :item_name]
|
32
|
-
end
|
33
|
-
|
34
|
-
DB.alter_table(:items) do
|
35
|
-
add_primary_key [:id, :name]
|
36
|
-
add_foreign_key [:id, :name], :other_table, \
|
37
|
-
:key=>[:item_id, :item_name]
|
38
|
-
end
|
39
|
-
|
40
|
-
* The AlterTableGenerator now supports unique constraints:
|
41
|
-
|
42
|
-
DB.alter_table(:items) do
|
43
|
-
add_unique_constraint [:aaa, :bbb, :ccc], :name => :con3
|
44
|
-
end
|
45
|
-
|
46
|
-
* The schema generators now support ON UPDATE (previously, they only
|
47
|
-
supported ON DELETE):
|
48
|
-
|
49
|
-
DB.create_table(:items) do
|
50
|
-
foreign_key :project_id, :projects, :on_update => :cascade
|
51
|
-
end
|
52
|
-
|
53
|
-
* When connecting to a PostgreSQL server version 8.2 and higher,
|
54
|
-
Sequel now uses the INSERT ... RETURNING ... syntax, which should
|
55
|
-
speed up row inserts on PostgreSQL. In addition, Sequel Models
|
56
|
-
use RETURNING * to speed up model object creation.
|
57
|
-
|
58
|
-
* You can now validate multiple attributes at once. This is useful
|
59
|
-
if the combination of two or more attribute values is important,
|
60
|
-
such as checking the uniqueness of multiple columns.
|
61
|
-
validates_uniqueness_of now supports this directly:
|
62
|
-
|
63
|
-
validates_uniqueness_of [:column1, :column2]
|
64
|
-
|
65
|
-
This protects against the database having multiple rows with the
|
66
|
-
same values for both :column1 and :column2. This is different
|
67
|
-
from:
|
68
|
-
|
69
|
-
validates_uniqueness_of :column1, :column2
|
70
|
-
|
71
|
-
Which checks that the value of column1 is unique in the table, and
|
72
|
-
that the value of column2 is unique in the table (which is much
|
73
|
-
more restrictive).
|
74
|
-
|
75
|
-
Other Improvements
|
76
|
-
------------------
|
77
|
-
|
78
|
-
* Dataset methods insert_sql, delete_sql, and update_sql respect the
|
79
|
-
:sql option, allowing you to do things such as:
|
80
|
-
|
81
|
-
ds = DB['INSERT INTO t (time) VALUES (CURRENT_TIMESTAMP)']
|
82
|
-
ds.insert
|
83
|
-
ds.insert
|
84
|
-
|
85
|
-
* The database adapters (at least MySQL, PostgreSQL, SQLite, and
|
86
|
-
JDBC) generally raise Sequel::DatabaseError for database problems,
|
87
|
-
making it easier to tell what is a true database error versus an
|
88
|
-
error raised by Sequel itself.
|
89
|
-
|
90
|
-
* Sequel uses the async features of ruby-pg so that the entire
|
91
|
-
interpreter is not blocked while waiting for the results of
|
92
|
-
queries.
|
93
|
-
|
94
|
-
* Sequel now supports the 2008.08.17 version of ruby-pg.
|
95
|
-
|
96
|
-
* MSSQL support has been improved when using the ODBC and ADO
|
97
|
-
adapters.
|
98
|
-
|
99
|
-
* Index names are quoted and creating or dropping indexes.
|
100
|
-
|
101
|
-
* Automatically generated column accessor methods no longer override
|
102
|
-
instance methods specified by plugins.
|
103
|
-
|
104
|
-
* Inserting a row with an already specified primary key inside a
|
105
|
-
transaction now works correctly when using PostgreSQL.
|
106
|
-
|
107
|
-
* before_save and before_update hooks now work as expected when using
|
108
|
-
save_changes.
|
109
|
-
|
110
|
-
* count and paginate now work correctly on graphed datasets.
|
111
|
-
|
112
|
-
Backwards Compatibility
|
113
|
-
-----------------------
|
114
|
-
|
115
|
-
* The SQLite adapter now raises Sequel::DatabaseError instead of
|
116
|
-
Sequel::Error::InvalidStatement whenever an SQLite3::Exception is
|
117
|
-
raised by the SQLite3 driver.
|
118
|
-
|
119
|
-
* Date and DateTime conversions now convert 2 digit years. To revert
|
120
|
-
to the previous behavior:
|
121
|
-
|
122
|
-
Sequel.convert_two_digit_years = false
|
123
|
-
|
124
|
-
Note that Ruby 1.8 and 1.9 handle Date parsing differently, so
|
125
|
-
there is no backwards compatibility change for Ruby 1.9. However,
|
126
|
-
this also means that the MM/DD/YY date syntax commonly used in the
|
127
|
-
United States is not always parsed correctly on Ruby 1.9, greatly
|
128
|
-
limiting the use of 2 digit year conversion.
|
129
|
-
|
130
|
-
* You can no longer abuse the SQL function syntax for specifying
|
131
|
-
database types. For example, you must change:
|
132
|
-
|
133
|
-
:type=>:varchar[255]
|
134
|
-
|
135
|
-
to:
|
136
|
-
|
137
|
-
:type=>:varchar, :size=>255
|