sequel 4.26.0 → 5.37.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 +405 -5656
- data/MIT-LICENSE +1 -1
- data/README.rdoc +232 -157
- data/bin/sequel +32 -9
- data/doc/advanced_associations.rdoc +252 -188
- data/doc/association_basics.rdoc +231 -273
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +75 -48
- data/doc/code_order.rdoc +28 -10
- 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/mass_assignment.rdoc +74 -31
- data/doc/migration.rdoc +72 -46
- 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 +59 -69
- data/doc/opening_databases.rdoc +84 -94
- data/doc/postgresql.rdoc +268 -38
- data/doc/prepared_statements.rdoc +29 -24
- data/doc/querying.rdoc +184 -164
- 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.4.0.txt +80 -0
- data/doc/release_notes/5.5.0.txt +61 -0
- data/doc/release_notes/5.6.0.txt +31 -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 +102 -77
- data/doc/security.rdoc +160 -87
- data/doc/sharding.rdoc +74 -47
- data/doc/sql.rdoc +135 -122
- data/doc/testing.rdoc +34 -18
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +101 -19
- data/doc/validations.rdoc +64 -51
- data/doc/virtual_rows.rdoc +90 -109
- data/lib/sequel.rb +3 -1
- data/lib/sequel/adapters/ado.rb +154 -22
- data/lib/sequel/adapters/ado/access.rb +21 -21
- data/lib/sequel/adapters/ado/mssql.rb +8 -15
- data/lib/sequel/adapters/amalgalite.rb +17 -25
- data/lib/sequel/adapters/ibmdb.rb +52 -58
- data/lib/sequel/adapters/jdbc.rb +149 -127
- data/lib/sequel/adapters/jdbc/db2.rb +32 -40
- data/lib/sequel/adapters/jdbc/derby.rb +56 -58
- data/lib/sequel/adapters/jdbc/h2.rb +40 -30
- data/lib/sequel/adapters/jdbc/hsqldb.rb +22 -33
- data/lib/sequel/adapters/jdbc/jtds.rb +4 -10
- data/lib/sequel/adapters/jdbc/mssql.rb +6 -12
- data/lib/sequel/adapters/jdbc/mysql.rb +17 -18
- data/lib/sequel/adapters/jdbc/oracle.rb +25 -19
- data/lib/sequel/adapters/jdbc/postgresql.rb +90 -69
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +14 -24
- data/lib/sequel/adapters/jdbc/sqlite.rb +50 -12
- data/lib/sequel/adapters/jdbc/sqlserver.rb +36 -9
- data/lib/sequel/adapters/jdbc/transactions.rb +25 -39
- data/lib/sequel/adapters/mock.rb +104 -113
- data/lib/sequel/adapters/mysql.rb +42 -61
- data/lib/sequel/adapters/mysql2.rb +126 -35
- data/lib/sequel/adapters/odbc.rb +21 -28
- data/lib/sequel/adapters/odbc/db2.rb +3 -1
- data/lib/sequel/adapters/odbc/mssql.rb +11 -15
- data/lib/sequel/adapters/odbc/oracle.rb +11 -0
- data/lib/sequel/adapters/oracle.rb +62 -68
- data/lib/sequel/adapters/postgres.rb +257 -311
- data/lib/sequel/adapters/postgresql.rb +3 -1
- data/lib/sequel/adapters/shared/access.rb +75 -79
- data/lib/sequel/adapters/shared/db2.rb +96 -74
- data/lib/sequel/adapters/shared/mssql.rb +258 -213
- data/lib/sequel/adapters/shared/mysql.rb +284 -216
- data/lib/sequel/adapters/shared/oracle.rb +175 -60
- data/lib/sequel/adapters/shared/postgres.rb +829 -383
- data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -127
- data/lib/sequel/adapters/shared/sqlite.rb +382 -159
- data/lib/sequel/adapters/sqlanywhere.rb +53 -38
- data/lib/sequel/adapters/sqlite.rb +111 -105
- data/lib/sequel/adapters/tinytds.rb +38 -46
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +8 -9
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +7 -5
- 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 +3 -4
- data/lib/sequel/adapters/utils/split_alter_table.rb +2 -0
- data/lib/sequel/adapters/utils/stored_procedures.rb +9 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
- data/lib/sequel/ast_transformer.rb +13 -89
- data/lib/sequel/connection_pool.rb +54 -26
- data/lib/sequel/connection_pool/sharded_single.rb +19 -12
- data/lib/sequel/connection_pool/sharded_threaded.rb +160 -111
- data/lib/sequel/connection_pool/single.rb +21 -12
- data/lib/sequel/connection_pool/threaded.rb +137 -119
- data/lib/sequel/core.rb +352 -320
- data/lib/sequel/database.rb +19 -2
- data/lib/sequel/database/connecting.rb +70 -55
- data/lib/sequel/database/dataset.rb +15 -5
- data/lib/sequel/database/dataset_defaults.rb +20 -102
- data/lib/sequel/database/features.rb +20 -4
- data/lib/sequel/database/logging.rb +25 -7
- data/lib/sequel/database/misc.rb +132 -118
- data/lib/sequel/database/query.rb +51 -28
- data/lib/sequel/database/schema_generator.rb +188 -75
- data/lib/sequel/database/schema_methods.rb +161 -92
- data/lib/sequel/database/transactions.rb +260 -58
- data/lib/sequel/dataset.rb +28 -12
- data/lib/sequel/dataset/actions.rb +354 -170
- data/lib/sequel/dataset/dataset_module.rb +46 -0
- data/lib/sequel/dataset/features.rb +81 -34
- data/lib/sequel/dataset/graph.rb +82 -58
- data/lib/sequel/dataset/misc.rb +139 -47
- data/lib/sequel/dataset/placeholder_literalizer.rb +66 -26
- data/lib/sequel/dataset/prepared_statements.rb +188 -85
- data/lib/sequel/dataset/query.rb +428 -214
- data/lib/sequel/dataset/sql.rb +446 -339
- data/lib/sequel/deprecated.rb +14 -2
- data/lib/sequel/exceptions.rb +48 -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 +10 -9
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +15 -11
- data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
- data/lib/sequel/extensions/blank.rb +2 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +9 -4
- data/lib/sequel/extensions/connection_expiration.rb +99 -0
- data/lib/sequel/extensions/connection_validator.rb +26 -13
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +93 -38
- data/lib/sequel/extensions/core_extensions.rb +45 -53
- data/lib/sequel/extensions/core_refinements.rb +44 -46
- data/lib/sequel/extensions/current_datetime_timestamp.rb +5 -4
- data/lib/sequel/extensions/dataset_source_alias.rb +4 -0
- data/lib/sequel/extensions/date_arithmetic.rb +42 -16
- data/lib/sequel/extensions/datetime_parse_to_time.rb +37 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +94 -0
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +7 -3
- data/lib/sequel/extensions/error_sql.rb +7 -3
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +14 -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 +2 -31
- data/lib/sequel/extensions/graph_each.rb +19 -6
- 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 +8 -4
- data/lib/sequel/extensions/integer64.rb +32 -0
- data/lib/sequel/extensions/looser_typecasting.rb +19 -9
- data/lib/sequel/extensions/migration.rb +132 -80
- data/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +4 -0
- data/lib/sequel/extensions/named_timezones.rb +88 -23
- data/lib/sequel/extensions/no_auto_literal_strings.rb +4 -0
- data/lib/sequel/extensions/null_dataset.rb +12 -8
- data/lib/sequel/extensions/pagination.rb +35 -28
- data/lib/sequel/extensions/pg_array.rb +227 -316
- data/lib/sequel/extensions/pg_array_ops.rb +19 -7
- data/lib/sequel/extensions/pg_enum.rb +69 -24
- data/lib/sequel/extensions/pg_extended_date_support.rb +250 -0
- data/lib/sequel/extensions/pg_hstore.rb +50 -59
- data/lib/sequel/extensions/pg_hstore_ops.rb +9 -3
- data/lib/sequel/extensions/pg_inet.rb +34 -15
- data/lib/sequel/extensions/pg_inet_ops.rb +5 -1
- data/lib/sequel/extensions/pg_interval.rb +26 -26
- data/lib/sequel/extensions/pg_json.rb +422 -141
- data/lib/sequel/extensions/pg_json_ops.rb +248 -9
- data/lib/sequel/extensions/pg_loose_count.rb +5 -1
- data/lib/sequel/extensions/pg_range.rb +162 -146
- data/lib/sequel/extensions/pg_range_ops.rb +10 -5
- data/lib/sequel/extensions/pg_row.rb +53 -87
- data/lib/sequel/extensions/pg_row_ops.rb +36 -13
- data/lib/sequel/extensions/pg_static_cache_updater.rb +6 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
- data/lib/sequel/extensions/pretty_table.rb +4 -0
- data/lib/sequel/extensions/query.rb +12 -7
- data/lib/sequel/extensions/round_timestamps.rb +6 -9
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +59 -0
- data/lib/sequel/extensions/schema_caching.rb +14 -1
- data/lib/sequel/extensions/schema_dumper.rb +83 -55
- data/lib/sequel/extensions/select_remove.rb +8 -4
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
- data/lib/sequel/extensions/server_block.rb +50 -17
- data/lib/sequel/extensions/server_logging.rb +61 -0
- data/lib/sequel/extensions/split_array_nil.rb +8 -4
- data/lib/sequel/extensions/sql_comments.rb +96 -0
- data/lib/sequel/extensions/sql_expr.rb +4 -1
- data/lib/sequel/extensions/string_agg.rb +181 -0
- data/lib/sequel/extensions/string_date_time.rb +2 -0
- data/lib/sequel/extensions/symbol_aref.rb +53 -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/thread_local_timezones.rb +4 -0
- data/lib/sequel/extensions/to_dot.rb +15 -5
- data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
- data/lib/sequel/model.rb +36 -126
- data/lib/sequel/model/associations.rb +850 -257
- data/lib/sequel/model/base.rb +652 -764
- data/lib/sequel/model/dataset_module.rb +13 -10
- data/lib/sequel/model/default_inflections.rb +3 -1
- data/lib/sequel/model/errors.rb +3 -3
- data/lib/sequel/model/exceptions.rb +12 -12
- data/lib/sequel/model/inflections.rb +8 -19
- data/lib/sequel/model/plugins.rb +111 -0
- data/lib/sequel/plugins/accessed_columns.rb +2 -0
- data/lib/sequel/plugins/active_model.rb +32 -7
- data/lib/sequel/plugins/after_initialize.rb +3 -1
- data/lib/sequel/plugins/association_dependencies.rb +27 -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 +181 -83
- data/lib/sequel/plugins/association_proxies.rb +33 -9
- data/lib/sequel/plugins/auto_validations.rb +58 -23
- data/lib/sequel/plugins/before_after_save.rb +8 -0
- data/lib/sequel/plugins/blacklist_security.rb +23 -12
- data/lib/sequel/plugins/boolean_readers.rb +9 -6
- data/lib/sequel/plugins/boolean_subsets.rb +64 -0
- data/lib/sequel/plugins/caching.rb +27 -16
- data/lib/sequel/plugins/class_table_inheritance.rb +192 -94
- data/lib/sequel/plugins/column_conflicts.rb +18 -3
- data/lib/sequel/plugins/column_select.rb +9 -5
- data/lib/sequel/plugins/columns_updated.rb +42 -0
- data/lib/sequel/plugins/composition.rb +36 -24
- data/lib/sequel/plugins/constraint_validations.rb +37 -16
- data/lib/sequel/plugins/csv_serializer.rb +58 -35
- data/lib/sequel/plugins/dataset_associations.rb +60 -18
- data/lib/sequel/plugins/def_dataset_method.rb +90 -0
- data/lib/sequel/plugins/defaults_setter.rb +74 -13
- data/lib/sequel/plugins/delay_add_association.rb +4 -1
- data/lib/sequel/plugins/dirty.rb +65 -24
- data/lib/sequel/plugins/eager_each.rb +27 -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/error_splitter.rb +19 -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 +9 -12
- data/lib/sequel/plugins/hook_class_methods.rb +39 -54
- data/lib/sequel/plugins/input_transformer.rb +20 -10
- data/lib/sequel/plugins/insert_conflict.rb +72 -0
- data/lib/sequel/plugins/insert_returning_select.rb +4 -2
- data/lib/sequel/plugins/instance_filters.rb +12 -8
- data/lib/sequel/plugins/instance_hooks.rb +36 -17
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +24 -13
- data/lib/sequel/plugins/json_serializer.rb +123 -47
- data/lib/sequel/plugins/lazy_attributes.rb +20 -14
- data/lib/sequel/plugins/list.rb +40 -26
- data/lib/sequel/plugins/many_through_many.rb +28 -12
- data/lib/sequel/plugins/modification_detection.rb +17 -5
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +8 -5
- data/lib/sequel/plugins/nested_attributes.rb +55 -28
- data/lib/sequel/plugins/optimistic_locking.rb +5 -3
- data/lib/sequel/plugins/pg_array_associations.rb +52 -18
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +348 -0
- data/lib/sequel/plugins/pg_row.rb +7 -51
- data/lib/sequel/plugins/prepared_statements.rb +53 -72
- data/lib/sequel/plugins/prepared_statements_safe.rb +13 -5
- data/lib/sequel/plugins/rcte_tree.rb +43 -63
- data/lib/sequel/plugins/serialization.rb +37 -44
- data/lib/sequel/plugins/serialization_modification_detection.rb +3 -1
- data/lib/sequel/plugins/sharding.rb +17 -10
- data/lib/sequel/plugins/single_table_inheritance.rb +62 -28
- data/lib/sequel/plugins/singular_table_names.rb +2 -0
- data/lib/sequel/plugins/skip_create_refresh.rb +5 -3
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/split_values.rb +13 -6
- data/lib/sequel/plugins/static_cache.rb +79 -53
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +5 -3
- data/lib/sequel/plugins/subclasses.rb +20 -2
- data/lib/sequel/plugins/subset_conditions.rb +48 -0
- data/lib/sequel/plugins/table_select.rb +4 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +120 -6
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/timestamps.rb +22 -8
- data/lib/sequel/plugins/touch.rb +21 -8
- data/lib/sequel/plugins/tree.rb +57 -30
- data/lib/sequel/plugins/typecast_on_load.rb +14 -4
- data/lib/sequel/plugins/unlimited_update.rb +3 -7
- data/lib/sequel/plugins/update_or_create.rb +6 -4
- data/lib/sequel/plugins/update_primary_key.rb +3 -1
- data/lib/sequel/plugins/update_refresh.rb +28 -15
- data/lib/sequel/plugins/uuid.rb +70 -0
- data/lib/sequel/plugins/validate_associated.rb +20 -0
- data/lib/sequel/plugins/validation_class_methods.rb +40 -19
- data/lib/sequel/plugins/validation_contexts.rb +49 -0
- data/lib/sequel/plugins/validation_helpers.rb +49 -31
- data/lib/sequel/plugins/whitelist_security.rb +122 -0
- data/lib/sequel/plugins/xml_serializer.rb +31 -30
- data/lib/sequel/sql.rb +479 -329
- data/lib/sequel/timezones.rb +62 -32
- data/lib/sequel/version.rb +10 -3
- metadata +177 -477
- data/Rakefile +0 -165
- data/doc/active_record.rdoc +0 -912
- 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.3.0.txt +0 -40
- 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 -142
- data/lib/sequel/adapters/do.rb +0 -156
- data/lib/sequel/adapters/do/mysql.rb +0 -64
- data/lib/sequel/adapters/do/postgres.rb +0 -42
- data/lib/sequel/adapters/do/sqlite3.rb +0 -40
- data/lib/sequel/adapters/jdbc/as400.rb +0 -82
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -62
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -34
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -31
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -31
- data/lib/sequel/adapters/odbc/progress.rb +0 -8
- data/lib/sequel/adapters/shared/cubrid.rb +0 -243
- data/lib/sequel/adapters/shared/firebird.rb +0 -245
- data/lib/sequel/adapters/shared/informix.rb +0 -52
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -150
- data/lib/sequel/adapters/shared/progress.rb +0 -38
- data/lib/sequel/adapters/swift.rb +0 -158
- data/lib/sequel/adapters/swift/mysql.rb +0 -47
- data/lib/sequel/adapters/swift/postgres.rb +0 -45
- data/lib/sequel/adapters/swift/sqlite.rb +0 -47
- data/lib/sequel/adapters/utils/pg_types.rb +0 -68
- data/lib/sequel/dataset/mutation.rb +0 -109
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -3
- data/lib/sequel/extensions/filter_having.rb +0 -59
- data/lib/sequel/extensions/hash_aliases.rb +0 -45
- data/lib/sequel/extensions/meta_def.rb +0 -31
- data/lib/sequel/extensions/query_literals.rb +0 -80
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -22
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -118
- data/lib/sequel/extensions/set_overrides.rb +0 -72
- data/lib/sequel/no_core_ext.rb +0 -1
- data/lib/sequel/plugins/association_autoreloading.rb +0 -7
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -7
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -78
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -117
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -59
- data/lib/sequel/plugins/schema.rb +0 -80
- data/lib/sequel/plugins/scissors.rb +0 -33
- 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 -706
- data/spec/adapters/mysql_spec.rb +0 -1287
- data/spec/adapters/oracle_spec.rb +0 -313
- data/spec/adapters/postgres_spec.rb +0 -3725
- data/spec/adapters/spec_helper.rb +0 -43
- data/spec/adapters/sqlanywhere_spec.rb +0 -170
- data/spec/adapters/sqlite_spec.rb +0 -653
- data/spec/bin_spec.rb +0 -254
- data/spec/core/connection_pool_spec.rb +0 -1016
- data/spec/core/database_spec.rb +0 -2531
- data/spec/core/dataset_spec.rb +0 -5098
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1243
- data/spec/core/mock_adapter_spec.rb +0 -462
- 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 -179
- data/spec/core/schema_spec.rb +0 -1659
- 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/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -123
- 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 -365
- data/spec/extensions/association_proxies_spec.rb +0 -86
- data/spec/extensions/auto_validations_spec.rb +0 -192
- 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/caching_spec.rb +0 -270
- data/spec/extensions/class_table_inheritance_spec.rb +0 -420
- 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_validator_spec.rb +0 -120
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -274
- data/spec/extensions/constraint_validations_spec.rb +0 -325
- data/spec/extensions/core_refinements_spec.rb +0 -519
- data/spec/extensions/csv_serializer_spec.rb +0 -173
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -311
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -150
- data/spec/extensions/defaults_setter_spec.rb +0 -101
- data/spec/extensions/delay_add_association_spec.rb +0 -52
- data/spec/extensions/dirty_spec.rb +0 -180
- data/spec/extensions/eager_each_spec.rb +0 -42
- 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 -109
- data/spec/extensions/hash_aliases_spec.rb +0 -24
- data/spec/extensions/hook_class_methods_spec.rb +0 -429
- 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 -291
- data/spec/extensions/lazy_attributes_spec.rb +0 -170
- data/spec/extensions/list_spec.rb +0 -267
- 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 -712
- 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/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 -395
- 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 -229
- 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 -404
- 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 -789
- 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/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_expr_spec.rb +0 -60
- data/spec/extensions/static_cache_spec.rb +0 -361
- 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/table_select_spec.rb +0 -71
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -82
- 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/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1027
- data/spec/extensions/validation_helpers_spec.rb +0 -541
- 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/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/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/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 -2454
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1808
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -240
- data/spec/integration/model_test.rb +0 -226
- data/spec/integration/plugin_test.rb +0 -2240
- data/spec/integration/prepared_statement_test.rb +0 -467
- data/spec/integration/schema_test.rb +0 -817
- data/spec/integration/spec_helper.rb +0 -48
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -374
- data/spec/integration/type_test.rb +0 -133
- data/spec/model/association_reflection_spec.rb +0 -525
- data/spec/model/associations_spec.rb +0 -4426
- data/spec/model/base_spec.rb +0 -759
- data/spec/model/class_dataset_methods_spec.rb +0 -146
- data/spec/model/dataset_methods_spec.rb +0 -149
- data/spec/model/eager_loading_spec.rb +0 -2137
- data/spec/model/hooks_spec.rb +0 -604
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -982
- data/spec/model/plugins_spec.rb +0 -299
- data/spec/model/record_spec.rb +0 -2147
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -193
- data/spec/sequel_coverage.rb +0 -15
- data/spec/spec_config.rb +0 -10
data/lib/sequel/deprecated.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
# This module makes it easy to print deprecation warnings with optional backtraces to a given stream.
|
|
3
5
|
# There are a two accessors you can use to change how/where the deprecation methods are printed
|
|
@@ -18,7 +20,7 @@ module Sequel
|
|
|
18
20
|
module Deprecation
|
|
19
21
|
@backtrace_filter = 10
|
|
20
22
|
@output = $stderr
|
|
21
|
-
@prefix = "SEQUEL DEPRECATION WARNING: "
|
|
23
|
+
@prefix = "SEQUEL DEPRECATION WARNING: ".freeze
|
|
22
24
|
|
|
23
25
|
class << self
|
|
24
26
|
# How to filter backtraces. +false+ does not include backtraces, +true+ includes
|
|
@@ -37,7 +39,7 @@ module Sequel
|
|
|
37
39
|
# Print the message and possibly backtrace to the output.
|
|
38
40
|
def self.deprecate(method, instead=nil)
|
|
39
41
|
return unless output
|
|
40
|
-
message = instead ? "#{method} is deprecated and will be removed in
|
|
42
|
+
message = instead ? "#{method} is deprecated and will be removed in Sequel 6. #{instead}." : method
|
|
41
43
|
message = "#{prefix}#{message}" if prefix
|
|
42
44
|
output.puts(message)
|
|
43
45
|
case b = backtrace_filter
|
|
@@ -54,5 +56,15 @@ module Sequel
|
|
|
54
56
|
end
|
|
55
57
|
nil
|
|
56
58
|
end
|
|
59
|
+
|
|
60
|
+
# If using ruby 2.3+, use Module#deprecate_constant to deprecate the constant,
|
|
61
|
+
# otherwise do nothing as the ruby implementation does not support constant deprecation.
|
|
62
|
+
def self.deprecate_constant(mod, constant)
|
|
63
|
+
# :nocov:
|
|
64
|
+
if RUBY_VERSION > '2.3'
|
|
65
|
+
# :nocov:
|
|
66
|
+
mod.deprecate_constant(constant)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
57
69
|
end
|
|
58
70
|
end
|
data/lib/sequel/exceptions.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
# The default exception class for exceptions raised by Sequel.
|
|
3
5
|
# All exception classes defined by Sequel are descendants of this class.
|
|
@@ -5,50 +7,91 @@ module Sequel
|
|
|
5
7
|
# If this exception wraps an underlying exception, the underlying
|
|
6
8
|
# exception is held here.
|
|
7
9
|
attr_accessor :wrapped_exception
|
|
10
|
+
|
|
11
|
+
# :nocov:
|
|
12
|
+
if RUBY_VERSION >= '2.1'
|
|
13
|
+
# :nocov:
|
|
14
|
+
# Returned the wrapped exception if one exists, otherwise use
|
|
15
|
+
# ruby's default behavior.
|
|
16
|
+
def cause
|
|
17
|
+
wrapped_exception || super
|
|
18
|
+
end
|
|
19
|
+
end
|
|
8
20
|
end
|
|
9
21
|
|
|
22
|
+
(
|
|
10
23
|
# Error raised when the adapter requested doesn't exist or can't be loaded.
|
|
11
24
|
AdapterNotFound = Class.new(Error)
|
|
25
|
+
).name
|
|
12
26
|
|
|
27
|
+
(
|
|
13
28
|
# Generic error raised by the database adapters, indicating a
|
|
14
29
|
# problem originating from the database server. Usually raised
|
|
15
30
|
# because incorrect SQL syntax is used.
|
|
16
31
|
DatabaseError = Class.new(Error)
|
|
32
|
+
).name
|
|
17
33
|
|
|
34
|
+
(
|
|
18
35
|
# Error raised when the Sequel is unable to connect to the database with the
|
|
19
36
|
# connection parameters it was given.
|
|
20
37
|
DatabaseConnectionError = Class.new(DatabaseError)
|
|
38
|
+
).name
|
|
21
39
|
|
|
40
|
+
(
|
|
22
41
|
# Error raised by adapters when they determine that the connection
|
|
23
42
|
# to the database has been lost. Instructs the connection pool code to
|
|
24
43
|
# remove that connection from the pool so that other connections can be acquired
|
|
25
44
|
# automatically.
|
|
26
45
|
DatabaseDisconnectError = Class.new(DatabaseError)
|
|
46
|
+
).name
|
|
27
47
|
|
|
48
|
+
(
|
|
28
49
|
# Generic error raised when Sequel determines a database constraint has been violated.
|
|
29
50
|
ConstraintViolation = Class.new(DatabaseError)
|
|
51
|
+
).name
|
|
30
52
|
|
|
53
|
+
(
|
|
31
54
|
# Error raised when Sequel determines a database check constraint has been violated.
|
|
32
55
|
CheckConstraintViolation = Class.new(ConstraintViolation)
|
|
56
|
+
).name
|
|
33
57
|
|
|
58
|
+
(
|
|
34
59
|
# Error raised when Sequel determines a database foreign key constraint has been violated.
|
|
35
60
|
ForeignKeyConstraintViolation = Class.new(ConstraintViolation)
|
|
61
|
+
).name
|
|
36
62
|
|
|
63
|
+
(
|
|
37
64
|
# Error raised when Sequel determines a database NOT NULL constraint has been violated.
|
|
38
65
|
NotNullConstraintViolation = Class.new(ConstraintViolation)
|
|
66
|
+
).name
|
|
39
67
|
|
|
68
|
+
(
|
|
40
69
|
# Error raised when Sequel determines a database unique constraint has been violated.
|
|
41
70
|
UniqueConstraintViolation = Class.new(ConstraintViolation)
|
|
71
|
+
).name
|
|
42
72
|
|
|
73
|
+
(
|
|
43
74
|
# Error raised when Sequel determines a serialization failure/deadlock in the database.
|
|
44
75
|
SerializationFailure = Class.new(DatabaseError)
|
|
76
|
+
).name
|
|
77
|
+
|
|
78
|
+
(
|
|
79
|
+
# Error raised when Sequel determines the database could not acquire a necessary lock
|
|
80
|
+
# before timing out. Use of Dataset#nowait can often cause this exception when
|
|
81
|
+
# retrieving rows.
|
|
82
|
+
DatabaseLockTimeout = Class.new(DatabaseError)
|
|
83
|
+
).name
|
|
45
84
|
|
|
85
|
+
(
|
|
46
86
|
# Error raised on an invalid operation, such as trying to update or delete
|
|
47
|
-
# a joined or grouped dataset.
|
|
87
|
+
# a joined or grouped dataset when the database does not support that.
|
|
48
88
|
InvalidOperation = Class.new(Error)
|
|
89
|
+
).name
|
|
49
90
|
|
|
91
|
+
(
|
|
50
92
|
# Error raised when attempting an invalid type conversion.
|
|
51
93
|
InvalidValue = Class.new(Error)
|
|
94
|
+
).name
|
|
52
95
|
|
|
53
96
|
# Error raised when the user requests a record via the first! or similar
|
|
54
97
|
# method, and the dataset does not yield any rows.
|
|
@@ -67,27 +110,16 @@ module Sequel
|
|
|
67
110
|
end
|
|
68
111
|
end
|
|
69
112
|
|
|
113
|
+
(
|
|
70
114
|
# Error raised when the connection pool cannot acquire a database connection
|
|
71
115
|
# before the timeout.
|
|
72
116
|
PoolTimeout = Class.new(Error)
|
|
117
|
+
).name
|
|
73
118
|
|
|
119
|
+
(
|
|
74
120
|
# Error that you should raise to signal a rollback of the current transaction.
|
|
75
121
|
# The transaction block will catch this exception, rollback the current transaction,
|
|
76
122
|
# and won't reraise it (unless a reraise is requested).
|
|
77
123
|
Rollback = Class.new(Error)
|
|
78
|
-
|
|
79
|
-
# Error raised when unbinding a dataset that has multiple different values
|
|
80
|
-
# for a given variable.
|
|
81
|
-
UnbindDuplicate = Class.new(Error)
|
|
82
|
-
|
|
83
|
-
# Call name on each class to set the name for the class, so it gets cached.
|
|
84
|
-
constants.map{|c| const_get(c)}.each do |c|
|
|
85
|
-
Class === c && c.name
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
Error::AdapterNotFound = AdapterNotFound
|
|
89
|
-
Error::InvalidOperation = InvalidOperation
|
|
90
|
-
Error::InvalidValue = InvalidValue
|
|
91
|
-
Error::PoolTimeoutError = PoolTimeout
|
|
92
|
-
Error::Rollback = Rollback
|
|
124
|
+
).name
|
|
93
125
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
3
|
+
module Sequel
|
|
4
|
+
module Plugins
|
|
5
|
+
module ConstraintValidations
|
|
6
|
+
module DatabaseMethods
|
|
7
|
+
# A hash of validation method call metadata for all tables in the database.
|
|
8
|
+
# The hash is keyed by table name string and contains arrays of validation
|
|
9
|
+
# method call arrays.
|
|
10
|
+
attr_accessor :constraint_validations
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
Database.register_extension(:_model_constraint_validations, Plugins::ConstraintValidations::DatabaseMethods)
|
|
16
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
3
|
+
module Sequel
|
|
4
|
+
module Plugins
|
|
5
|
+
module PgRow
|
|
6
|
+
module DatabaseMethods
|
|
7
|
+
# Handle Sequel::Model instances in bound variables.
|
|
8
|
+
def bound_variable_arg(arg, conn)
|
|
9
|
+
case arg
|
|
10
|
+
when Sequel::Model
|
|
11
|
+
"(#{arg.values.values_at(*arg.columns).map{|v| bound_variable_array(v)}.join(',')})"
|
|
12
|
+
else
|
|
13
|
+
super
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# If a Sequel::Model instance is given, return it as-is
|
|
18
|
+
# instead of attempting to convert it.
|
|
19
|
+
def row_type(db_type, v)
|
|
20
|
+
if v.is_a?(Sequel::Model)
|
|
21
|
+
v
|
|
22
|
+
else
|
|
23
|
+
super
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
# Handle Sequel::Model instances in bound variable arrays.
|
|
30
|
+
def bound_variable_array(arg)
|
|
31
|
+
case arg
|
|
32
|
+
when Sequel::Model
|
|
33
|
+
"\"(#{arg.values.values_at(*arg.columns).map{|v| bound_variable_array(v)}.join(',').gsub(/("|\\)/, '\\\\\1')})\""
|
|
34
|
+
else
|
|
35
|
+
super
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
Database.register_extension(:_model_pg_row, Plugins::PgRow::DatabaseMethods)
|
|
43
|
+
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
1
3
|
# This _pretty_table extension is only for internal use.
|
|
2
4
|
# It adds the Sequel::PrettyTable class without modifying
|
|
3
5
|
# Sequel::Dataset.
|
|
@@ -5,6 +7,8 @@
|
|
|
5
7
|
# To load the extension:
|
|
6
8
|
#
|
|
7
9
|
# Sequel.extension :_pretty_table
|
|
10
|
+
#
|
|
11
|
+
# Related module: Sequel::PrettyTable
|
|
8
12
|
|
|
9
13
|
#
|
|
10
14
|
module Sequel
|
|
@@ -23,7 +27,7 @@ module Sequel
|
|
|
23
27
|
|
|
24
28
|
# Return the string that #print will print via puts.
|
|
25
29
|
def self.string(records, columns = nil) # records is an array of hashes
|
|
26
|
-
columns ||= records.first.keys.
|
|
30
|
+
columns ||= records.first.keys.sort
|
|
27
31
|
sizes = column_sizes(records, columns)
|
|
28
32
|
sep_line = separator_line(columns, sizes)
|
|
29
33
|
|
|
@@ -33,14 +37,11 @@ module Sequel
|
|
|
33
37
|
array.join("\n")
|
|
34
38
|
end
|
|
35
39
|
|
|
36
|
-
### Private Module Methods ###
|
|
37
|
-
|
|
38
40
|
# Hash of the maximum size of the value for each column
|
|
39
41
|
def self.column_sizes(records, columns) # :nodoc:
|
|
40
42
|
sizes = Hash.new {0}
|
|
41
43
|
columns.each do |c|
|
|
42
|
-
|
|
43
|
-
sizes[c] = s if s > sizes[c]
|
|
44
|
+
sizes[c] = c.to_s.size
|
|
44
45
|
end
|
|
45
46
|
records.each do |r|
|
|
46
47
|
columns.each do |c|
|
|
@@ -53,13 +54,13 @@ module Sequel
|
|
|
53
54
|
|
|
54
55
|
# String for each data line
|
|
55
56
|
def self.data_line(columns, sizes, record) # :nodoc:
|
|
56
|
-
'|' << columns.map {|c| format_cell(sizes[c], record[c])}.join('|') << '|'
|
|
57
|
+
String.new << '|' << columns.map {|c| format_cell(sizes[c], record[c])}.join('|') << '|'
|
|
57
58
|
end
|
|
58
59
|
|
|
59
60
|
# Format the value so it takes up exactly size characters
|
|
60
61
|
def self.format_cell(size, v) # :nodoc:
|
|
61
62
|
case v
|
|
62
|
-
when
|
|
63
|
+
when Integer
|
|
63
64
|
"%#{size}d" % v
|
|
64
65
|
when Float, BigDecimal
|
|
65
66
|
"%#{size}g" % v
|
|
@@ -70,12 +71,12 @@ module Sequel
|
|
|
70
71
|
|
|
71
72
|
# String for header line
|
|
72
73
|
def self.header_line(columns, sizes) # :nodoc:
|
|
73
|
-
'|' << columns.map {|c| "%-#{sizes[c]}s" % c.to_s}.join('|') << '|'
|
|
74
|
+
String.new << '|' << columns.map {|c| "%-#{sizes[c]}s" % c.to_s}.join('|') << '|'
|
|
74
75
|
end
|
|
75
76
|
|
|
76
77
|
# String for separtor line
|
|
77
78
|
def self.separator_line(columns, sizes) # :nodoc:
|
|
78
|
-
'+' << columns.map {|c| '-' * sizes[c]}.join('+') << '+'
|
|
79
|
+
String.new << '+' << columns.map {|c| '-' * sizes[c]}.join('+') << '+'
|
|
79
80
|
end
|
|
80
81
|
|
|
81
82
|
private_class_method :column_sizes, :data_line, :format_cell, :header_line, :separator_line
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
3
|
+
# The any_not_empty extension changes the behavior of Dataset#any?
|
|
4
|
+
# if called without a block. By default, this method uses the
|
|
5
|
+
# standard Enumerable behavior of enumerating results and seeing
|
|
6
|
+
# if any result is not false or nil. With this extension, it
|
|
7
|
+
# just checks whether the dataset is empty. This approach can
|
|
8
|
+
# be much faster if the dataset is currently large.
|
|
9
|
+
#
|
|
10
|
+
# DB[:table].any?
|
|
11
|
+
# # SELECT * FROM table
|
|
12
|
+
#
|
|
13
|
+
# DB[:table].extension(:any_not_empty).any?
|
|
14
|
+
# # SELECT 1 as one FROM table LIMIT 1
|
|
15
|
+
#
|
|
16
|
+
# You can load this extension into specific datasets:
|
|
17
|
+
#
|
|
18
|
+
# ds = DB[:table]
|
|
19
|
+
# ds = ds.extension(:any_not_empty)
|
|
20
|
+
#
|
|
21
|
+
# Or you can load it into all of a database's datasets, which
|
|
22
|
+
# is probably the desired behavior if you are using this extension:
|
|
23
|
+
#
|
|
24
|
+
# DB.extension(:any_not_empty)
|
|
25
|
+
#
|
|
26
|
+
# Note that this can result in any? returning a different result if
|
|
27
|
+
# the dataset has a row_proc that can return false or nil.
|
|
28
|
+
#
|
|
29
|
+
# Related module: Sequel::AnyNotEmpty
|
|
30
|
+
|
|
31
|
+
#
|
|
32
|
+
module Sequel
|
|
33
|
+
module AnyNotEmpty
|
|
34
|
+
# If a block is not given, return whether the dataset is not empty.
|
|
35
|
+
def any?
|
|
36
|
+
if block_given?
|
|
37
|
+
super
|
|
38
|
+
else
|
|
39
|
+
!empty?
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
Dataset.register_extension(:any_not_empty, AnyNotEmpty)
|
|
45
|
+
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
1
3
|
# The arbitrary_servers extension allows you to connect to arbitrary
|
|
2
4
|
# servers/shards that were not defined when you created the database.
|
|
3
5
|
# To use it, you first load the extension into the Database object:
|
|
@@ -7,34 +9,34 @@
|
|
|
7
9
|
# Then you can pass arbitrary connection options for the server/shard
|
|
8
10
|
# to use as a hash:
|
|
9
11
|
#
|
|
10
|
-
# DB[:table].server(:
|
|
12
|
+
# DB[:table].server(host: '...', database: '...').all
|
|
11
13
|
#
|
|
12
14
|
# Because Sequel can never be sure that the connection will be reused,
|
|
13
15
|
# arbitrary connections are disconnected as soon as the outermost block
|
|
14
16
|
# that uses them exits. So this example uses the same connection:
|
|
15
17
|
#
|
|
16
|
-
# DB.transaction(:
|
|
17
|
-
# DB.transaction(:
|
|
18
|
+
# DB.transaction(server: {host: '...', database: '...'}) do |c|
|
|
19
|
+
# DB.transaction(server: {host: '...', database: '...'}) do |c2|
|
|
18
20
|
# # c == c2
|
|
19
21
|
# end
|
|
20
22
|
# end
|
|
21
23
|
#
|
|
22
24
|
# But this example does not:
|
|
23
25
|
#
|
|
24
|
-
# DB.transaction(:
|
|
26
|
+
# DB.transaction(server: {host: '...', database: '...'}) do |c|
|
|
25
27
|
# end
|
|
26
|
-
# DB.transaction(:
|
|
28
|
+
# DB.transaction(server: {host: '...', database: '...'}) do |c2|
|
|
27
29
|
# # c != c2
|
|
28
30
|
# end
|
|
29
31
|
#
|
|
30
32
|
# You can use this extension in conjunction with the server_block
|
|
31
33
|
# extension:
|
|
32
34
|
#
|
|
33
|
-
# DB.with_server(:
|
|
35
|
+
# DB.with_server(host: '...', database: '...') do
|
|
34
36
|
# DB.synchronize do
|
|
35
37
|
# # All of these use the host/database given to with_server
|
|
36
|
-
# DB[:table].insert(:
|
|
37
|
-
# DB[:table].update(:
|
|
38
|
+
# DB[:table].insert(c: 1)
|
|
39
|
+
# DB[:table].update(c: 2)
|
|
38
40
|
# DB.tables
|
|
39
41
|
# DB[:table].all
|
|
40
42
|
# end
|
|
@@ -44,14 +46,16 @@
|
|
|
44
46
|
# extension may want to do the following to so that you don't need
|
|
45
47
|
# to call synchronize separately:
|
|
46
48
|
#
|
|
47
|
-
# def DB.with_server(*)
|
|
48
|
-
# super{synchronize{yield}}
|
|
49
|
+
# def DB.with_server(*a)
|
|
50
|
+
# super(*a){synchronize{yield}}
|
|
49
51
|
# end
|
|
50
52
|
#
|
|
51
53
|
# Note that this extension only works with the sharded threaded connection
|
|
52
54
|
# pool. If you are using the sharded single connection pool, you need
|
|
53
55
|
# to switch to the sharded threaded connection pool before using this
|
|
54
56
|
# extension.
|
|
57
|
+
#
|
|
58
|
+
# Related module: Sequel::ArbitraryServers
|
|
55
59
|
|
|
56
60
|
#
|
|
57
61
|
module Sequel
|
|
@@ -98,7 +102,7 @@ module Sequel
|
|
|
98
102
|
a = @allocated[thread]
|
|
99
103
|
a.delete(server)
|
|
100
104
|
@allocated.delete(thread) if a.empty?
|
|
101
|
-
|
|
105
|
+
disconnect_connection(conn)
|
|
102
106
|
else
|
|
103
107
|
super
|
|
104
108
|
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
3
|
+
# The auto_literal_strings extension treats string values passed as filter
|
|
4
|
+
# arguments as SQL query fragments. This is the behavior of previous
|
|
5
|
+
# versions of Sequel. Using this extension makes using raw SQL fragments
|
|
6
|
+
# easier, since you don't need to wrap them with Sequel.lit, but also makes
|
|
7
|
+
# it easier to introduce SQL injection vulnerabilities into the application.
|
|
8
|
+
# It is only recommended to use this extension for
|
|
9
|
+
# backwards compatibility with previous versions of Sequel.
|
|
10
|
+
#
|
|
11
|
+
# With this extension, if a single string is given, it is used as an SQL
|
|
12
|
+
# query fragment:
|
|
13
|
+
#
|
|
14
|
+
# ds = DB[:table].extension(:auto_literal_strings)
|
|
15
|
+
# ds.where("name > 'A'")
|
|
16
|
+
# # SELECT * FROM table WHERE (name > 'A')
|
|
17
|
+
#
|
|
18
|
+
# If additional arguments are given, they are used as placeholders:
|
|
19
|
+
#
|
|
20
|
+
# ds.where("name > ?", "A")
|
|
21
|
+
# # SELECT * FROM table WHERE (name > 'A')
|
|
22
|
+
#
|
|
23
|
+
# Named placeholders can also be used with a hash:
|
|
24
|
+
#
|
|
25
|
+
# ds.where("name > :a", :a=>"A")
|
|
26
|
+
# # SELECT * FROM table WHERE (name > 'A')
|
|
27
|
+
#
|
|
28
|
+
# This extension also allows the use of a plain string passed to Dataset#update:
|
|
29
|
+
#
|
|
30
|
+
# ds.update("column = column + 1")
|
|
31
|
+
# # UPDATE table SET column = column + 1
|
|
32
|
+
#
|
|
33
|
+
# Related module: Sequel::Dataset::AutoLiteralStrings
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
module Sequel
|
|
37
|
+
class Dataset
|
|
38
|
+
module AutoLiteralStrings
|
|
39
|
+
# Treat plain strings as literal strings, and arrays where the first element
|
|
40
|
+
# is a string as a literal string with placeholders.
|
|
41
|
+
def filter_expr(expr = nil)
|
|
42
|
+
case expr
|
|
43
|
+
when LiteralString
|
|
44
|
+
super
|
|
45
|
+
when String
|
|
46
|
+
super(LiteralString.new(expr))
|
|
47
|
+
when Array
|
|
48
|
+
if (sexpr = expr.first).is_a?(String)
|
|
49
|
+
super(SQL::PlaceholderLiteralString.new(sexpr, expr[1..-1], true))
|
|
50
|
+
else
|
|
51
|
+
super
|
|
52
|
+
end
|
|
53
|
+
else
|
|
54
|
+
super
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Treat plain strings as literal strings.
|
|
59
|
+
def update_sql(values=OPTS)
|
|
60
|
+
case values
|
|
61
|
+
when LiteralString
|
|
62
|
+
super
|
|
63
|
+
when String
|
|
64
|
+
super(LiteralString.new(values))
|
|
65
|
+
else
|
|
66
|
+
super
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
register_extension(:auto_literal_strings, AutoLiteralStrings)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|