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,420 +0,0 @@
|
|
1
|
-
= Prepared Statement Plugins
|
2
|
-
|
3
|
-
* The prepared_statements plugin makes Sequel::Model classes use
|
4
|
-
prepared statements for creating, updating, and destroying model
|
5
|
-
instances, as well as looking up model objects by primary key.
|
6
|
-
With this plugin, all of the following will use prepared
|
7
|
-
statements:
|
8
|
-
|
9
|
-
Artist.plugin :prepared_statements
|
10
|
-
Artist.create(:name=>'Foo')
|
11
|
-
a = Artist[1]
|
12
|
-
a.update(:name=>'Bar')
|
13
|
-
a.destroy
|
14
|
-
|
15
|
-
* The prepared_statements_safe plugin reduces the number of
|
16
|
-
prepared statements that can be created by doing two things. First,
|
17
|
-
it makes the INSERT statements used when creating instances to use
|
18
|
-
as many columns as possible, setting specific values for all
|
19
|
-
columns with parseable default values. Second, it changes
|
20
|
-
save_changes to just use save, saving all columns instead of just
|
21
|
-
the changed ones.
|
22
|
-
|
23
|
-
The reason for this plugin is that Sequel's default behavior of
|
24
|
-
using only the values specifically set when creating instances
|
25
|
-
and having update only set changed columns by default can lead
|
26
|
-
to a large number of prepared statements being created.
|
27
|
-
|
28
|
-
For prepared statements to be used, each set of columns in the
|
29
|
-
insert and update statements needs to have its own prepared
|
30
|
-
statement. If you have a table with 1 primary key column and
|
31
|
-
4 other columns, you can have up to 2^4 = 16 prepared statements
|
32
|
-
created, one for each subset of the 4 columns. If you have 1
|
33
|
-
primary key column and 20 other columns, there are over a million
|
34
|
-
subsets, and you could hit your database limit for prepared
|
35
|
-
statements (a denial of service attack).
|
36
|
-
|
37
|
-
Using the prepared_statements_safe plugin mitigates this
|
38
|
-
issue by reducing the number of columns that may or may not be
|
39
|
-
present in the query, in many cases making sure that each model
|
40
|
-
will only have a single INSERT and a single UPDATE prepared
|
41
|
-
statement.
|
42
|
-
|
43
|
-
* The prepared_statements_associations plugin allows normal
|
44
|
-
association method calls to use prepared statements if possible.
|
45
|
-
For example:
|
46
|
-
|
47
|
-
Artist.plugin :prepared_statements_associations
|
48
|
-
Artist.many_to_one :albums
|
49
|
-
Artist[1].albums
|
50
|
-
|
51
|
-
Will use a prepared statement to return the albums for that artist.
|
52
|
-
This plugin works for all supported association types. There are
|
53
|
-
some associations (filtered and custom associations) that Sequel
|
54
|
-
cannot currently use a prepared statement reliably, for those
|
55
|
-
Sequel will use a regular query.
|
56
|
-
|
57
|
-
* The prepared_statements_with_pk plugin allows the new
|
58
|
-
Dataset#with_pk method (explained below) to use prepared statements.
|
59
|
-
For example:
|
60
|
-
|
61
|
-
Artist.plugin :prepared_statements_with_pk
|
62
|
-
Artist.filter(...).with_pk(1)
|
63
|
-
|
64
|
-
Will use a prepared statement for this query. The most benefit
|
65
|
-
from prepared statements come from queries that are expensive to
|
66
|
-
parse and plan but quick to execute, so using this plugin with
|
67
|
-
a complex filter can in certain cases yield significant performance
|
68
|
-
improvements.
|
69
|
-
|
70
|
-
However, this plugin should be considered unsafe as it is possible
|
71
|
-
that it will create an unbounded number of prepared statements. It
|
72
|
-
extracts parameters from the dataset using Dataset#unbind
|
73
|
-
(explained below), so if your code has conditions that vary per
|
74
|
-
query but that Dataset#unbind does not handle, an unbounded number
|
75
|
-
of prepared statements can be created. For example:
|
76
|
-
|
77
|
-
Artist.filter(:a=>params[:b].to_i).with_pk[1]
|
78
|
-
Artist.exclude{a > params[:b].to_i}.with_pk[1]
|
79
|
-
|
80
|
-
are safe, but:
|
81
|
-
|
82
|
-
Artist.filter(:a=>[1, params[:b].to_i]).with_pk[1]
|
83
|
-
Artist.exclude{a > params[:b].to_i + 2}.with_pk[1]
|
84
|
-
|
85
|
-
are not. For queries that are not safe, Dataset#with_pk should
|
86
|
-
not be used with this plugin, you should switch to looking up by
|
87
|
-
primary key manually (for a regular query):
|
88
|
-
|
89
|
-
Artist.filter(:a=>[1, params[:b].to_i])[:id=>1]
|
90
|
-
|
91
|
-
or using the prepared statement API to create a custom prepared
|
92
|
-
statement:
|
93
|
-
|
94
|
-
# PS = {}
|
95
|
-
PS[:name] ||= Artist.filter(:a=>[1, :$b], :id=>:$id).
|
96
|
-
prepare(:select, :name)
|
97
|
-
PS[:name].call(:b=>params[:b].to_i, :id=>1)
|
98
|
-
|
99
|
-
= Other New Features
|
100
|
-
|
101
|
-
* Filtering by associations got a lot more powerful. Sequel 3.23.0
|
102
|
-
introduced filtering by associations:
|
103
|
-
|
104
|
-
Album.filter(:artist=>artist)
|
105
|
-
|
106
|
-
This capability is much expanded in 3.24.0, allowing you to
|
107
|
-
exclude by associations:
|
108
|
-
|
109
|
-
Album.exclude(:artist=>artist)
|
110
|
-
|
111
|
-
This will match all albums not by that artist.
|
112
|
-
|
113
|
-
You can also filter or exclude by multiple associated objects:
|
114
|
-
|
115
|
-
Album.filter(:artist=>[artist1, artist2])
|
116
|
-
Album.exclude(:artist=>[artist1, artist2])
|
117
|
-
|
118
|
-
The filtered dataset will match all albums by either of those
|
119
|
-
two artists, and the excluded dataset will match all albums not
|
120
|
-
by either of those two artists.
|
121
|
-
|
122
|
-
You can also filter or exclude by using a model dataset:
|
123
|
-
|
124
|
-
Album.filter(:artist=>Artist.filter(:name.like('A%'))).all
|
125
|
-
Album.exclude(:artist=>Artist.filter(:name.like('A%'))).all
|
126
|
-
|
127
|
-
Here the filtered dataset will match all albums where the
|
128
|
-
associated artist has a name that begins with A, and the excluded
|
129
|
-
dataset will match all albums where the associated artist does not
|
130
|
-
have a name that begins with A.
|
131
|
-
|
132
|
-
All of these types of filtering and excluding work with all of
|
133
|
-
association types that ship with Sequel, even the many_through_many
|
134
|
-
plugin.
|
135
|
-
|
136
|
-
* Sequel now supports around hooks, which wrap the related before
|
137
|
-
hook, behavior, and after hook. Like other Sequel hooks, these
|
138
|
-
are implemented as instance methods. For example, if you wanted
|
139
|
-
to log DatabaseErrors raised during save:
|
140
|
-
|
141
|
-
class Artist < Sequel::Model
|
142
|
-
def around_save
|
143
|
-
super
|
144
|
-
rescue Sequel::DatabaseError => e
|
145
|
-
# log the error
|
146
|
-
raise
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
All around hooks should call super, not yield. If an around hook
|
151
|
-
doesn't call super or yield, it is treated as a hook failure,
|
152
|
-
similar to before hooks returning false.
|
153
|
-
|
154
|
-
For around_validation, the return value of super should be whether
|
155
|
-
the object is valid. For other around hooks, the return value of
|
156
|
-
super is currently true, but it's possible that will change in the
|
157
|
-
future.
|
158
|
-
|
159
|
-
* Dataset#with_pk has been added to model datasets that allows you
|
160
|
-
to find the object with the matching primary key:
|
161
|
-
|
162
|
-
Artist.filter(:name.like('A%')).with_pk(1)
|
163
|
-
|
164
|
-
This should make easier the common case where you want to find
|
165
|
-
a particular object that is associated to another object:
|
166
|
-
|
167
|
-
Artist[1].albums_dataset.with_pk(2)
|
168
|
-
|
169
|
-
Before, there was no way to do that without manually specifying
|
170
|
-
the primary key:
|
171
|
-
|
172
|
-
Artist[1].albums_dataset[:id=>2]
|
173
|
-
|
174
|
-
To use a composite primary key with with_pk, you have to provide
|
175
|
-
an array:
|
176
|
-
|
177
|
-
Artist[1].albums_dataset.with_pk([1, 2])
|
178
|
-
|
179
|
-
* Dataset#[] for model datasets will now call with_pk if given a
|
180
|
-
single Integer argument. This makes the above case even easier:
|
181
|
-
|
182
|
-
Artist[1].albums_dataset[2]
|
183
|
-
|
184
|
-
Note that for backwards compatibility, this only works for
|
185
|
-
single integer primary keys. If you have a composite primary key
|
186
|
-
or a string/varchar primary key, you have to use with_pk.
|
187
|
-
|
188
|
-
* Dataset#unbind has been added, which allows you to take a dataset
|
189
|
-
that uses static bound values and convert them to placeholders.
|
190
|
-
Currently, the only cases handled are SQL::ComplexExpression
|
191
|
-
objects that use a =, !=, <, >, <=, or >= operator where the first
|
192
|
-
argument is a Symbol, SQL::Indentifier, or
|
193
|
-
SQL::QualifiedIdentifier, and the second argument is a Numeric,
|
194
|
-
String, Date, or Time. Dataset#unbind returns a two element array,
|
195
|
-
where the first element is a modified copy of the receiver, and the
|
196
|
-
second element is a bound variable hash:
|
197
|
-
|
198
|
-
ds, bv = DB[:table].filter(:a=>1).unbind
|
199
|
-
ds # DB[:table].filter(:a=>:$a)
|
200
|
-
bv # {:a=>1}
|
201
|
-
|
202
|
-
The purpose of doing this is that you can then use prepare or call
|
203
|
-
on the returned dataset with the returned bound variables:
|
204
|
-
|
205
|
-
ds.call(:select, bv)
|
206
|
-
# SELECT * FROM table WHERE (a = ?); [1]
|
207
|
-
|
208
|
-
ps = ds.prepare(:select, :ps_name)
|
209
|
-
# PREPARE ps_name AS SELECT * FROM table WHERE (a = ?)
|
210
|
-
ps.call(bv)
|
211
|
-
# EXECUTE ps_name(1)
|
212
|
-
|
213
|
-
Basically, Dataset#unbind takes a specific statement and attempts
|
214
|
-
to turn it into a generic statement, along with the placeholder
|
215
|
-
values it extracted.
|
216
|
-
|
217
|
-
Unfortunately, Dataset#unbind cannot handle all cases. For
|
218
|
-
example:
|
219
|
-
|
220
|
-
DB[:table].filter{a + 1 > 10}.unbind
|
221
|
-
|
222
|
-
will not unbind any values. Also, if you have a query with
|
223
|
-
multiple different values for a variable, it will raise an
|
224
|
-
UnbindDuplicate exception:
|
225
|
-
|
226
|
-
DB[:table].filter(:a=>1).or(:a=>2).unbind
|
227
|
-
|
228
|
-
* A defaults_setter plugin has been added that makes it easy to
|
229
|
-
automatically set default values when creating new objects. This
|
230
|
-
plugin makes Sequel::Model behave more like ActiveRecord in that
|
231
|
-
new model instances (before saving) will have default values
|
232
|
-
parsed from the database. Unlike ActiveRecord, only values with
|
233
|
-
non-NULL defaults are set. Also, Sequel allows you to easily
|
234
|
-
modify the default values used:
|
235
|
-
|
236
|
-
Album.plugin :default_values
|
237
|
-
Album.new.values # {:copies_sold => 0}
|
238
|
-
Album.default_values[:copies_sold] = 42
|
239
|
-
Album.new.values # {:copies_sold => 42}
|
240
|
-
|
241
|
-
Before, this was commonly done in an after_initialize hook, but
|
242
|
-
that's slower as it is also called for model instances loaded from
|
243
|
-
the database.
|
244
|
-
|
245
|
-
* A Database#views method has been added that returns an array
|
246
|
-
of symbols representing view names in the database. This works
|
247
|
-
just like Database#tables except it returns views.
|
248
|
-
|
249
|
-
* A Sequel::ASTTransformer class was added that makes it easy to
|
250
|
-
write custom transformers of Sequel's internal abstract syntax
|
251
|
-
trees. Dataset#qualify now uses a subclass of ASTTransformer to do
|
252
|
-
its transformations, as does the new Dataset#unbind.
|
253
|
-
|
254
|
-
= Other Improvements
|
255
|
-
|
256
|
-
* Database#create_table? now uses a single query with IF NOT EXISTS
|
257
|
-
if the database supports such syntax. Previously, it issued a
|
258
|
-
SELECT query to determine table existence. Sequel currently
|
259
|
-
supports this syntax on MySQL, H2, and SQLite 3.3.0+.
|
260
|
-
|
261
|
-
The Database#supports_create_table_if_not_exists? method was added
|
262
|
-
to allow users to determine whether this syntax is supported.
|
263
|
-
|
264
|
-
* Multiple column IN/NOT IN emulation now works correctly with
|
265
|
-
model datasets (or other datasets that use a row_proc).
|
266
|
-
|
267
|
-
* You can now correctly invert SQL::Constant instances:
|
268
|
-
|
269
|
-
Sequel::NULL # NULL
|
270
|
-
~Sequel::NULL # NOT NULL
|
271
|
-
Sequel::TRUE # TRUE
|
272
|
-
~Sequel::TRUE # FALSE
|
273
|
-
|
274
|
-
* A bug in the association_pks plugin has been fixed in the case
|
275
|
-
where the associated table had a different primary key column name
|
276
|
-
than the current table.
|
277
|
-
|
278
|
-
* The emulated prepared statement support now supports nil and false
|
279
|
-
as bound values.
|
280
|
-
|
281
|
-
* The to_dot extension was refactored for greater readability. The
|
282
|
-
only change was a small fix in the display for SQL::Subscript
|
283
|
-
instances.
|
284
|
-
|
285
|
-
* The Dataset#supports_insert_select? method is now available to let
|
286
|
-
you know if the dataset supports insert_select. You should use
|
287
|
-
this method instead of respond_to? for checking for insert_select
|
288
|
-
support.
|
289
|
-
|
290
|
-
* Prepared statements/bound variable can now use a new :insert_select
|
291
|
-
type for preparing a statement that will insert a row and return
|
292
|
-
the row inserted, if the dataset supports insert_select.
|
293
|
-
|
294
|
-
* The Model#initialize_set private method now exists for easier plugin
|
295
|
-
writing. It is only called for new model objects, with the hash
|
296
|
-
given to initialize. By default, it just calls set.
|
297
|
-
|
298
|
-
* A small bug when creating anonymous subclasses of Sequel::Model on
|
299
|
-
ruby 1.9 has been fixed.
|
300
|
-
|
301
|
-
* If Thread#kill is used inside a transaction on ruby 1.8 or
|
302
|
-
rubinius, the transaction is rolled back. This situation is not
|
303
|
-
handled correctly on JRuby or ruby 1.9, and I'm not sure it's
|
304
|
-
possible to handle correctly on those implementations.
|
305
|
-
|
306
|
-
* The postgres adapter now supports the
|
307
|
-
Sequel::Postgres::PG_NAMED_TYPES hash for associating conversion
|
308
|
-
procs for custom types that don't necessarily have the same type
|
309
|
-
oid on different databases. This hash uses symbol keys and
|
310
|
-
proc values:
|
311
|
-
|
312
|
-
Sequel::Postgres::PG_NAMED_TYPES[:interval] = proc{|v| ...}
|
313
|
-
|
314
|
-
The conversion procs now use a separate hash per Database object
|
315
|
-
instead of a hash shared across all Database objects. You
|
316
|
-
can now modify the types for a particular Database object, but
|
317
|
-
you have to use the type oid:
|
318
|
-
|
319
|
-
DB.conversion_procs[42] = proc{|v| ...}
|
320
|
-
|
321
|
-
* On SQLite and MSSQL, literalization of true and false values given
|
322
|
-
directly to Dataset#filter has been fixed. So the following now
|
323
|
-
works correctly on those databases:
|
324
|
-
|
325
|
-
DB[:table].filter(true)
|
326
|
-
DB[:table].filter(false)
|
327
|
-
|
328
|
-
Unfortunately, because SQLite and MSSQL don't have a real boolean
|
329
|
-
type, these will not work:
|
330
|
-
|
331
|
-
DB[:table].filter{a & true}
|
332
|
-
DB[:table].filter{a & false}
|
333
|
-
|
334
|
-
You currently have to work around the issue by doing:
|
335
|
-
|
336
|
-
DB[:table].filter{a & Sequel::TRUE}
|
337
|
-
DB[:table].filter{a & Sequel::FALSE}
|
338
|
-
|
339
|
-
It is possible that a future version of Sequel will remove the need
|
340
|
-
for this workaround, but that requires having a separate
|
341
|
-
literalization method specific to filters.
|
342
|
-
|
343
|
-
* The MySQL bit type is no longer treated as a boolean. On MySQL, the
|
344
|
-
bit type is a bitfield, which is very different than the MSSQL bit
|
345
|
-
type, which is the closest thing to a boolean on MSSQL.
|
346
|
-
|
347
|
-
* The bool database type is now recognized as a boolean. Some SQLite
|
348
|
-
databases use bool, such as the ones used in Firefox.
|
349
|
-
|
350
|
-
* SQL_AUTO_IS_NULL=0 is now set by default when connecting to MySQL
|
351
|
-
using the swift or jdbc adapters. Previously, it was only set by
|
352
|
-
default when using the mysql or mysql2 adapters.
|
353
|
-
|
354
|
-
* Dataset#limit now works correctly on Access, using the TOP syntax.
|
355
|
-
|
356
|
-
* Dataset#limit now works correctly on DB2, using the FETCH FIRST
|
357
|
-
syntax.
|
358
|
-
|
359
|
-
* The jdbc mssql subadapter was split into separate subadapters for
|
360
|
-
sqlserver (using Microsoft's driver) and jtds (using the open
|
361
|
-
source JTDS driver).
|
362
|
-
|
363
|
-
* The jdbc jtds subadapter now supports converting Java CLOB
|
364
|
-
objects to ruby strings.
|
365
|
-
|
366
|
-
* Tables from the INFORMATION_SCHEMA are now ignored when parsing
|
367
|
-
schema on JDBC.
|
368
|
-
|
369
|
-
* The informix adapter has been split into shared/specific parts, and
|
370
|
-
a jdbc informix subadapter has been added.
|
371
|
-
|
372
|
-
* Dataset#insert_select now works correctly on MSSQL when the core
|
373
|
-
extensions are disabled.
|
374
|
-
|
375
|
-
* The sqlite adapter now logs when preparing a statement.
|
376
|
-
|
377
|
-
* You no longer need to be a PostgreSQL superuser to run the postgres
|
378
|
-
adapter specs.
|
379
|
-
|
380
|
-
* The connection pool specs are now about 10 times faster and not
|
381
|
-
subject to race conditions due to using Queues instead of
|
382
|
-
sleeping.
|
383
|
-
|
384
|
-
= Backwards Compatibility
|
385
|
-
|
386
|
-
* Model#save no longer calls Model#valid?. It now calls the
|
387
|
-
Model#_valid? private method that Model#valid? also calls. To mark
|
388
|
-
a model instance invalid, you should override the Model#validate
|
389
|
-
method and add validation errors to the object.
|
390
|
-
|
391
|
-
* The BeforeHookFailure exception class has been renamed to
|
392
|
-
HookFailure since hook failures can now be raised by around hooks
|
393
|
-
that don't call super. BeforeHookFailure is now an alias to
|
394
|
-
HookFailure, so no code should break, but you should update your
|
395
|
-
code to reflect the new name.
|
396
|
-
|
397
|
-
* Any custom argument mappers used for prepared statements now need
|
398
|
-
to implement the prepared_arg? private instance method and have it
|
399
|
-
return true.
|
400
|
-
|
401
|
-
* If your databases uses bit as a boolean type and isn't MSSQL, it's
|
402
|
-
possible that those columns will no longer be treated as booleans.
|
403
|
-
Please report such an issue on the bugtracker.
|
404
|
-
|
405
|
-
* It is possible that the filtering and excluding by association
|
406
|
-
datasets will break backwards compatibility in some apps. This can
|
407
|
-
only occur if you are using a symbol with the same name as an
|
408
|
-
association with a model dataset whose model is the same as the
|
409
|
-
associated class. As associations almost never have the same names
|
410
|
-
as columns, this would require either aliasing or joining to
|
411
|
-
another table. If for some reason this does break your app, you
|
412
|
-
can work around it by changing the symbol to an SQL::Identifier or
|
413
|
-
a literal string.
|
414
|
-
|
415
|
-
* The Sequel::Postgres.use_iso_date_format= method now only affects
|
416
|
-
future Database objects.
|
417
|
-
|
418
|
-
* On MySQL, Database#tables no longer returns view names, it only
|
419
|
-
returns table names. You have to use Database#views to get view
|
420
|
-
names now.
|
@@ -1,88 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* drop_table, drop_view, drop_column, and drop_constraint all now
|
4
|
-
support a :cascade option for using CASCADE.
|
5
|
-
|
6
|
-
DB.drop_table(:tab, :cascade=>true)
|
7
|
-
# DROP TABLE tab CASCADE
|
8
|
-
|
9
|
-
DB.drop_column(:tab, :col, :cascade=>true)
|
10
|
-
# ALTER TABLE tab DROP COLUMN col CASCADE
|
11
|
-
|
12
|
-
A few databases support CASCADE for dropping tables and views,
|
13
|
-
but only PostgreSQL appears to support it for columns and
|
14
|
-
constraints. Using the :cascade option when the underlying
|
15
|
-
database doesn't support it will probably result in a
|
16
|
-
DatabaseError being raised.
|
17
|
-
|
18
|
-
* You can now use datasets as expressions, allowing things such as:
|
19
|
-
|
20
|
-
DB[:table1].select(:column1) > DB[:table2].select(:column2)
|
21
|
-
# (SELECT column1 FROM table1) > (SELECT column2 FROM table2)
|
22
|
-
|
23
|
-
DB[:table1].select(:column1).cast(Integer)
|
24
|
-
# CAST((SELECT column1 FROM table1) AS integer)
|
25
|
-
|
26
|
-
* Dataset#select_group has been added for grouping and selecting on
|
27
|
-
the same columns.
|
28
|
-
|
29
|
-
DB[:a].select_group(:b, :c)
|
30
|
-
# SELECT b, c FROM a GROUP BY b, c
|
31
|
-
|
32
|
-
* Dataset#exclude_where and #exclude_having methods have been added,
|
33
|
-
allowing you to specify which clause to affect. #exclude's
|
34
|
-
behavior is still to add to the HAVING clause if one is present,
|
35
|
-
and use the WHERE clause otherwise.
|
36
|
-
|
37
|
-
* Dataset#select_all now accepts optional arguments and will select
|
38
|
-
all columns from those arguments if present:
|
39
|
-
|
40
|
-
DB[:a].select_all(:a)
|
41
|
-
# SELECT a.* FROM a
|
42
|
-
|
43
|
-
DB.from(:a, :b).select_all(:a, :b)
|
44
|
-
# SELECT a.*, b.* FROM a, b
|
45
|
-
|
46
|
-
* Dataset#group and #group_and_count now both accept virtual row
|
47
|
-
blocks:
|
48
|
-
|
49
|
-
DB[:a].select(:b).group{c(d)}
|
50
|
-
# SELECT b FROM a GROUP BY c(d)
|
51
|
-
|
52
|
-
* If you use a LiteralString as a validation error message,
|
53
|
-
Errors#full_messages will now not add the related column name to
|
54
|
-
the start of the error message.
|
55
|
-
|
56
|
-
* Model.set_dataset now accepts SQL::Identifier,
|
57
|
-
SQL::QualifiedIdentifier, and SQL::AliasedExpression instances,
|
58
|
-
treating them like Symbols.
|
59
|
-
|
60
|
-
= Other Improvements
|
61
|
-
|
62
|
-
* The association_pks plugin's setter method will now automatically
|
63
|
-
convert a given array of strings to an array of integers if the
|
64
|
-
primary key field is an integer field, which should make it easier
|
65
|
-
to use in web applications.
|
66
|
-
|
67
|
-
* nil bound variable, prepared statement, and stored procedure
|
68
|
-
arguments are now handled correctly in the JDBC adapter.
|
69
|
-
|
70
|
-
* On 1.9, you can now load plugins even when ::ClassMethods,
|
71
|
-
::InstanceMethods, or ::DatasetMethods is defined.
|
72
|
-
|
73
|
-
= Backwards Compatibility
|
74
|
-
|
75
|
-
* The tinytds adapter now only works with tiny_tds 0.4.5 and greater.
|
76
|
-
Also, if you were using the tinytds adapter with FreeTDS 0.91rc1,
|
77
|
-
you need to upgrade to FreeTDS 0.91rc2 for it to work. Also, if
|
78
|
-
you were referencing an entry in the freetds.conf file, you now
|
79
|
-
need to specify it directly using the :dataserver option when
|
80
|
-
connecting, the adapter no longer copies the :host option to the
|
81
|
-
:dataserver option.
|
82
|
-
|
83
|
-
* On postgresql, Sequel now no longer drops tables with CASCADE by
|
84
|
-
default. You now have to use the :cascade option to drop_table if
|
85
|
-
you want to use CASCADE.
|
86
|
-
|
87
|
-
* The Database#drop_table_sql private method now takes an additional
|
88
|
-
options hash argument.
|
@@ -1,88 +0,0 @@
|
|
1
|
-
= Performance Enhancements
|
2
|
-
|
3
|
-
* The internal implementation of eager_graph has been made 75% to
|
4
|
-
225% faster than before, with greater benefits to more complex
|
5
|
-
graphs.
|
6
|
-
|
7
|
-
* Dataset creation has been made much faster (2.5x on 1.8 and 4.4x on
|
8
|
-
1.9), and dataset cloning has been made significantly faster (40%
|
9
|
-
on 1.8 and 20% on 1.9).
|
10
|
-
|
11
|
-
= Other Improvements
|
12
|
-
|
13
|
-
* Strings passed to setter methods for integer columns are no longer
|
14
|
-
considered to be in octal format if they include leading zeroes.
|
15
|
-
The previous behavior was never intended, but was a side effect of
|
16
|
-
using Kernel#Integer. Strings with leading zeroes are now treated
|
17
|
-
as decimal, and you can still use the 0x prefix to treat them as
|
18
|
-
hexidecimal. If anyone was relying on the old octal behavior, let
|
19
|
-
me know and I'll add an extension that restores the octal behavior.
|
20
|
-
|
21
|
-
* The identity_map plugin now works with the standard eager loading
|
22
|
-
of many_to_many and many_through_many associations.
|
23
|
-
|
24
|
-
* Database#create_table! now only attempts to drop the table if it
|
25
|
-
already exists. Previously, it attempted to drop the table
|
26
|
-
unconditionally ignoring any errors, which resulted in misleading
|
27
|
-
error messages if dropping the table raised an error caused by
|
28
|
-
permissions or referential integrity issues.
|
29
|
-
|
30
|
-
* The default connection pool now correctly handles the case where a
|
31
|
-
disconnect error is raised and an exception is raised while
|
32
|
-
running the disconnection proc.
|
33
|
-
|
34
|
-
* Disconnection errors are now detected when issuing transaction
|
35
|
-
statements such as BEGIN/ROLLBACK/COMMIT. Previously, these
|
36
|
-
statements did not handle disconnect errors on most adapters.
|
37
|
-
|
38
|
-
* More disconnection errors are now detected. Specifically, the ado
|
39
|
-
adapter and do postgres subadapter now handle disconnect errors,
|
40
|
-
and the postgres adapter handles more types of disconnect errors.
|
41
|
-
|
42
|
-
* Database#table_exists? now always issues a query to select from the
|
43
|
-
table, it no longer attempts to parse the schema to determine the
|
44
|
-
information on PostgreSQL and Oracle.
|
45
|
-
|
46
|
-
* Date, DateTime, and Time values are now literalized correctly on
|
47
|
-
Microsoft Access.
|
48
|
-
|
49
|
-
* Connecting with the mysql adapter with an options hash now works if
|
50
|
-
the :port option is a string, which makes it easier to use when the
|
51
|
-
connection information is stored in YAML.
|
52
|
-
|
53
|
-
* The xml_serializer plugin now works around a bug in pure-Java
|
54
|
-
nokogiri regarding the handling of nil values.
|
55
|
-
|
56
|
-
* Nicer error messages are now used if there is an attempt to call
|
57
|
-
an invalid or restricted setter method.
|
58
|
-
|
59
|
-
* The RDocs are now formatted with hanna-nouveau, which allows for
|
60
|
-
section ordering, so the Database and Dataset RDoc pages are
|
61
|
-
more friendly.
|
62
|
-
|
63
|
-
= Backwards Compatibility
|
64
|
-
|
65
|
-
* If you call a Dataset method such as #each on an eager_graphed
|
66
|
-
dataset, you now get plain hashes that have column alias symbol
|
67
|
-
keys and their values. Previously, you got a graphed response with
|
68
|
-
table alias keys and model values. It's not wise to depend on the
|
69
|
-
behavior, the only supported way of returning records when eager
|
70
|
-
loading is to use #all.
|
71
|
-
|
72
|
-
* An error is now raised if you attempt to eager load via
|
73
|
-
Dataset#eager a many_to_many association that includes an
|
74
|
-
:eager_graph option. Previously, incorrect SQL would have been
|
75
|
-
generated and an error raised by the database.
|
76
|
-
|
77
|
-
* Datasets are no longer guaranteed to have @row_proc,
|
78
|
-
@indentifier_input_method, and @identifier_output_method defined
|
79
|
-
as instance variables. You should be be using methods to access
|
80
|
-
them anyway.
|
81
|
-
|
82
|
-
* Database#table_exists? on PostgreSQL no longer accepts an options
|
83
|
-
hash. Previously, you could use a :schema option. You must now
|
84
|
-
provide the schema inside the table argument (e.g. :schema__table).
|
85
|
-
|
86
|
-
* If you want to use the rdoc tasks in Sequel's Rakefile, and you are
|
87
|
-
still using the hanna RDoc template with RDoc 2.3, you need to
|
88
|
-
upgrade to using hanna-nouveau with RDoc 3.8+.
|
@@ -1,82 +0,0 @@
|
|
1
|
-
= New Features
|
2
|
-
|
3
|
-
* Model.dataset_module has been added for easily adding methods to
|
4
|
-
a model's dataset:
|
5
|
-
|
6
|
-
Album.dataset_module do
|
7
|
-
def with_name_like(x)
|
8
|
-
filter(:name.like(x))
|
9
|
-
end
|
10
|
-
def selling_at_least(x)
|
11
|
-
filter{copies_sold > x}
|
12
|
-
end
|
13
|
-
end
|
14
|
-
Album.with_name_like('Foo%').selling_at_least(100000).all
|
15
|
-
|
16
|
-
Previously, you could use def_dataset_method to accomplish the
|
17
|
-
same thing. dataset_module is generally cleaner, plus you are
|
18
|
-
using actual methods instead of blocks, so calling the methods
|
19
|
-
is faster on some ruby implementations.
|
20
|
-
|
21
|
-
* Sequel now uses a Sequel::SQLTime class (a subclass of Time) when
|
22
|
-
dealing with values for SQL time columns (which don't have a date
|
23
|
-
component). These values are handled correctly when used in
|
24
|
-
filters or insert/update statements (using only the time
|
25
|
-
component), so Sequel can now successfully round trip values for
|
26
|
-
time columns. Not all adapters support returning time column
|
27
|
-
values as SQLTime instances, but the most common ones do.
|
28
|
-
|
29
|
-
* You can now drop foreign key, primary key, and unique constraints
|
30
|
-
on MySQL by passing the :type=>(:foreign_key|:primary_key|:unique)
|
31
|
-
option to Database#drop_constraint.
|
32
|
-
|
33
|
-
* The ODBC adapter now has initial support for the DB2 database, use
|
34
|
-
the :db_type=>'db2' option to load the support.
|
35
|
-
|
36
|
-
= Other Improvements
|
37
|
-
|
38
|
-
* The mysql2 adapter now uses native prepared statements.
|
39
|
-
|
40
|
-
* The tinytds adapter now uses uses sp_executesql for prepared
|
41
|
-
statements.
|
42
|
-
|
43
|
-
* DateTime and Time objects are now converted to Date objects when
|
44
|
-
they are assigned to a date column in a Model instance.
|
45
|
-
|
46
|
-
* When converting a Date object to a DateTime object, the resulting
|
47
|
-
DateTime object now has no fractional day components. Previously,
|
48
|
-
depending on your timezone settings, it could have had fractional
|
49
|
-
day components.
|
50
|
-
|
51
|
-
* The mysql2 adapter now supports stored procedures, as long as they
|
52
|
-
don't return results.
|
53
|
-
|
54
|
-
* Mass assignment protection now handles including modules in model
|
55
|
-
classes and extending model instances with modules. Previously, if
|
56
|
-
you defined a setter method in a module, access to it may have been
|
57
|
-
restricted.
|
58
|
-
|
59
|
-
* The prepared_statements_safe plugin now works on classes without
|
60
|
-
datasets, so you can now do the following to load it for all models:
|
61
|
-
|
62
|
-
Sequel::Model.plugin :prepared_statements_safe
|
63
|
-
|
64
|
-
* Dataset#hash now works correctly when handling SQL::Expression
|
65
|
-
instances.
|
66
|
-
|
67
|
-
* Model#hash now correctly handles classes with no primary key or with
|
68
|
-
a composite primary key.
|
69
|
-
|
70
|
-
* Model#exists? now always returns false for new model objects.
|
71
|
-
|
72
|
-
= Backwards Compatibility
|
73
|
-
|
74
|
-
* If you were previously setting primary key values manually for new
|
75
|
-
model objects and then calling exists? to see if the instance is
|
76
|
-
already in the database, you need to change your code from:
|
77
|
-
|
78
|
-
model.exists?
|
79
|
-
|
80
|
-
to:
|
81
|
-
|
82
|
-
model.this.get(1).nil?
|