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/database.rb
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
# Hash of adapters that have been used. The key is the adapter scheme
|
|
3
5
|
# symbol, and the value is the Database subclass.
|
|
4
6
|
ADAPTER_MAP = {}
|
|
5
7
|
|
|
8
|
+
# Hash of shared adapters that have been registered. The key is the
|
|
9
|
+
# adapter scheme symbol, and the value is the Sequel module containing
|
|
10
|
+
# the shared adapter.
|
|
11
|
+
SHARED_ADAPTER_MAP = {}
|
|
12
|
+
|
|
6
13
|
# Array of all databases to which Sequel has connected. If you are
|
|
7
14
|
# developing an application that can connect to an arbitrary number of
|
|
8
|
-
# databases, delete the database objects from this or
|
|
15
|
+
# databases, delete the database objects from this (or use the :keep_reference
|
|
16
|
+
# Database option or a block when connecting) or they will not get
|
|
9
17
|
# garbage collected.
|
|
10
18
|
DATABASES = []
|
|
11
19
|
|
|
@@ -16,5 +24,14 @@ module Sequel
|
|
|
16
24
|
OPTS = Sequel::OPTS
|
|
17
25
|
end
|
|
18
26
|
|
|
19
|
-
|
|
27
|
+
require_relative "database/connecting"
|
|
28
|
+
require_relative "database/dataset"
|
|
29
|
+
require_relative "database/dataset_defaults"
|
|
30
|
+
require_relative "database/logging"
|
|
31
|
+
require_relative "database/features"
|
|
32
|
+
require_relative "database/misc"
|
|
33
|
+
require_relative "database/query"
|
|
34
|
+
require_relative "database/transactions"
|
|
35
|
+
require_relative "database/schema_generator"
|
|
36
|
+
require_relative "database/schema_methods"
|
|
20
37
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
class Database
|
|
3
5
|
# ---------------------
|
|
@@ -6,24 +8,13 @@ module Sequel
|
|
|
6
8
|
# ---------------------
|
|
7
9
|
|
|
8
10
|
# Array of supported database adapters
|
|
9
|
-
ADAPTERS = %w'ado amalgalite
|
|
10
|
-
|
|
11
|
-
@single_threaded = false
|
|
12
|
-
|
|
13
|
-
class << self
|
|
14
|
-
# Whether to use the single threaded connection pool by default
|
|
15
|
-
attr_accessor :single_threaded
|
|
16
|
-
end
|
|
11
|
+
ADAPTERS = %w'ado amalgalite ibmdb jdbc mock mysql mysql2 odbc oracle postgres sqlanywhere sqlite tinytds'.map(&:to_sym)
|
|
17
12
|
|
|
18
13
|
# The Database subclass for the given adapter scheme.
|
|
19
14
|
# Raises Sequel::AdapterNotFound if the adapter
|
|
20
15
|
# could not be loaded.
|
|
21
16
|
def self.adapter_class(scheme)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
scheme = scheme.to_s.gsub('-', '_').to_sym
|
|
25
|
-
|
|
26
|
-
load_adapter(scheme)
|
|
17
|
+
scheme.is_a?(Class) ? scheme : load_adapter(scheme.to_sym)
|
|
27
18
|
end
|
|
28
19
|
|
|
29
20
|
# Returns the scheme symbol for the Database class.
|
|
@@ -35,8 +26,8 @@ module Sequel
|
|
|
35
26
|
def self.connect(conn_string, opts = OPTS)
|
|
36
27
|
case conn_string
|
|
37
28
|
when String
|
|
38
|
-
if
|
|
39
|
-
c = adapter_class(
|
|
29
|
+
if conn_string.start_with?('jdbc:')
|
|
30
|
+
c = adapter_class(:jdbc)
|
|
40
31
|
opts = opts.merge(:orig_opts=>opts.dup)
|
|
41
32
|
opts = {:uri=>conn_string}.merge!(opts)
|
|
42
33
|
else
|
|
@@ -44,8 +35,8 @@ module Sequel
|
|
|
44
35
|
scheme = uri.scheme
|
|
45
36
|
c = adapter_class(scheme)
|
|
46
37
|
uri_options = c.send(:uri_to_options, uri)
|
|
47
|
-
uri.query.split('&').
|
|
48
|
-
uri_options.to_a.each{|k,v| uri_options[k] =
|
|
38
|
+
uri.query.split('&').map{|s| s.split('=')}.each{|k,v| uri_options[k.to_sym] = v if k && !k.empty?} unless uri.query.to_s.strip.empty?
|
|
39
|
+
uri_options.to_a.each{|k,v| uri_options[k] = URI::DEFAULT_PARSER.unescape(v) if v.is_a?(String)}
|
|
49
40
|
opts = uri_options.merge(opts).merge!(:orig_opts=>opts.dup, :uri=>conn_string, :adapter=>scheme)
|
|
50
41
|
end
|
|
51
42
|
when Hash
|
|
@@ -55,15 +46,16 @@ module Sequel
|
|
|
55
46
|
else
|
|
56
47
|
raise Error, "Sequel::Database.connect takes either a Hash or a String, given: #{conn_string.inspect}"
|
|
57
48
|
end
|
|
58
|
-
|
|
49
|
+
|
|
59
50
|
opts = opts.inject({}) do |m, (k,v)|
|
|
60
51
|
k = :user if k.to_s == 'username'
|
|
61
52
|
m[k.to_sym] = v
|
|
62
53
|
m
|
|
63
54
|
end
|
|
55
|
+
|
|
64
56
|
begin
|
|
65
57
|
db = c.new(opts)
|
|
66
|
-
db.test_connection if
|
|
58
|
+
db.test_connection if db.send(:typecast_value_boolean, opts.fetch(:test, true))
|
|
67
59
|
if block_given?
|
|
68
60
|
return yield(db)
|
|
69
61
|
end
|
|
@@ -127,6 +119,34 @@ module Sequel
|
|
|
127
119
|
Sequel.synchronize{ADAPTER_MAP[scheme] = self}
|
|
128
120
|
end
|
|
129
121
|
private_class_method :set_adapter_scheme
|
|
122
|
+
|
|
123
|
+
# Sets the given module as the shared adapter module for the given scheme.
|
|
124
|
+
# Used to register shared adapters for use by the mock adapter. Example:
|
|
125
|
+
#
|
|
126
|
+
# # in file sequel/adapters/shared/mydb.rb
|
|
127
|
+
# module Sequel::MyDB
|
|
128
|
+
# Sequel::Database.set_shared_adapter_scheme :mydb, self
|
|
129
|
+
#
|
|
130
|
+
# def self.mock_adapter_setup(db)
|
|
131
|
+
# # ...
|
|
132
|
+
# end
|
|
133
|
+
#
|
|
134
|
+
# module DatabaseMethods
|
|
135
|
+
# # ...
|
|
136
|
+
# end
|
|
137
|
+
#
|
|
138
|
+
# module DatasetMethods
|
|
139
|
+
# # ...
|
|
140
|
+
# end
|
|
141
|
+
# end
|
|
142
|
+
#
|
|
143
|
+
# would allow the mock adapter to return a Database instance that supports
|
|
144
|
+
# the MyDB syntax via:
|
|
145
|
+
#
|
|
146
|
+
# Sequel.connect('mock://mydb')
|
|
147
|
+
def self.set_shared_adapter_scheme(scheme, mod)
|
|
148
|
+
Sequel.synchronize{SHARED_ADAPTER_MAP[scheme] = mod}
|
|
149
|
+
end
|
|
130
150
|
|
|
131
151
|
# The connection pool for this Database instance. All Database instances have
|
|
132
152
|
# their own connection pools.
|
|
@@ -137,25 +157,28 @@ module Sequel
|
|
|
137
157
|
# +database_type+ (for native adapters), in others (i.e. adapters with
|
|
138
158
|
# subadapters), it will be different.
|
|
139
159
|
#
|
|
140
|
-
# Sequel.connect('jdbc:postgres://...').adapter_scheme
|
|
160
|
+
# Sequel.connect('jdbc:postgres://...').adapter_scheme
|
|
161
|
+
# # => :jdbc
|
|
141
162
|
def adapter_scheme
|
|
142
163
|
self.class.adapter_scheme
|
|
143
164
|
end
|
|
144
165
|
|
|
145
166
|
# Dynamically add new servers or modify server options at runtime. Also adds new
|
|
146
|
-
# servers to the connection pool.
|
|
147
|
-
# configurations where it is useful to add new server hosts at runtime.
|
|
167
|
+
# servers to the connection pool. Only usable when using a sharded connection pool.
|
|
148
168
|
#
|
|
149
169
|
# servers argument should be a hash with server name symbol keys and hash or
|
|
150
170
|
# proc values. If a servers key is already in use, it's value is overridden
|
|
151
171
|
# with the value provided.
|
|
152
172
|
#
|
|
153
|
-
# DB.add_servers(:
|
|
173
|
+
# DB.add_servers(f: {host: "hash_host_f"})
|
|
154
174
|
def add_servers(servers)
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
@pool.add_servers(servers.keys)
|
|
175
|
+
unless sharded?
|
|
176
|
+
raise Error, "cannot call Database#add_servers on a Database instance that does not use a sharded connection pool"
|
|
158
177
|
end
|
|
178
|
+
|
|
179
|
+
h = @opts[:servers]
|
|
180
|
+
Sequel.synchronize{h.merge!(servers)}
|
|
181
|
+
@pool.add_servers(servers.keys)
|
|
159
182
|
end
|
|
160
183
|
|
|
161
184
|
# The database type for this database object, the same as the adapter scheme
|
|
@@ -163,24 +186,24 @@ module Sequel
|
|
|
163
186
|
# to be the correct type, so that even if two separate Database objects are
|
|
164
187
|
# using different adapters you can tell that they are using the same database
|
|
165
188
|
# type. Even better, you can tell that two Database objects that are using
|
|
166
|
-
# the same adapter are connecting to different database types
|
|
167
|
-
# DataObjects).
|
|
189
|
+
# the same adapter are connecting to different database types.
|
|
168
190
|
#
|
|
169
|
-
# Sequel.connect('jdbc:postgres://...').database_type
|
|
191
|
+
# Sequel.connect('jdbc:postgres://...').database_type
|
|
192
|
+
# # => :postgres
|
|
170
193
|
def database_type
|
|
171
194
|
adapter_scheme
|
|
172
195
|
end
|
|
173
196
|
|
|
174
197
|
# Disconnects all available connections from the connection pool. Any
|
|
175
198
|
# connections currently in use will not be disconnected. Options:
|
|
176
|
-
# :
|
|
199
|
+
# :server :: Should be a symbol specifing the server to disconnect from,
|
|
177
200
|
# or an array of symbols to specify multiple servers.
|
|
178
201
|
#
|
|
179
202
|
# Example:
|
|
180
203
|
#
|
|
181
204
|
# DB.disconnect # All servers
|
|
182
|
-
# DB.disconnect(:
|
|
183
|
-
# DB.disconnect(:
|
|
205
|
+
# DB.disconnect(server: :server1) # Single server
|
|
206
|
+
# DB.disconnect(server: [:server1, :server2]) # Multiple servers
|
|
184
207
|
def disconnect(opts = OPTS)
|
|
185
208
|
pool.disconnect(opts)
|
|
186
209
|
end
|
|
@@ -192,19 +215,8 @@ module Sequel
|
|
|
192
215
|
conn.close
|
|
193
216
|
end
|
|
194
217
|
|
|
195
|
-
#
|
|
196
|
-
#
|
|
197
|
-
# modifications (DDL queries) on each shard.
|
|
198
|
-
#
|
|
199
|
-
# DB.each_server{|db| db.create_table(:users){primary_key :id; String :name}}
|
|
200
|
-
def each_server(&block)
|
|
201
|
-
raise(Error, "Database#each_server must be passed a block") unless block
|
|
202
|
-
servers.each{|s| self.class.connect(server_opts(s), &block)}
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
# Dynamically remove existing servers from the connection pool. Intended for
|
|
206
|
-
# use with master/slave or shard configurations where it is useful to remove
|
|
207
|
-
# existing server hosts at runtime.
|
|
218
|
+
# Dynamically remove existing servers from the connection pool. Only usable
|
|
219
|
+
# when using a sharded connection pool
|
|
208
220
|
#
|
|
209
221
|
# servers should be symbols or arrays of symbols. If a nonexistent server
|
|
210
222
|
# is specified, it is ignored. If no servers have been specified for
|
|
@@ -213,10 +225,13 @@ module Sequel
|
|
|
213
225
|
#
|
|
214
226
|
# DB.remove_servers(:f1, :f2)
|
|
215
227
|
def remove_servers(*servers)
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
@pool.remove_servers(servers)
|
|
228
|
+
unless sharded?
|
|
229
|
+
raise Error, "cannot call Database#remove_servers on a Database instance that does not use a sharded connection pool"
|
|
219
230
|
end
|
|
231
|
+
|
|
232
|
+
h = @opts[:servers]
|
|
233
|
+
servers.flatten.each{|s| Sequel.synchronize{h.delete(s)}}
|
|
234
|
+
@pool.remove_servers(servers)
|
|
220
235
|
end
|
|
221
236
|
|
|
222
237
|
# An array of servers/shards for this Database object.
|
|
@@ -232,7 +247,13 @@ module Sequel
|
|
|
232
247
|
@single_threaded
|
|
233
248
|
end
|
|
234
249
|
|
|
235
|
-
if
|
|
250
|
+
if RUBY_ENGINE == 'ruby' && RUBY_VERSION < '2.5'
|
|
251
|
+
# :nocov:
|
|
252
|
+
def synchronize(server=nil)
|
|
253
|
+
@pool.hold(server || :default){|conn| yield conn}
|
|
254
|
+
end
|
|
255
|
+
# :nocov:
|
|
256
|
+
else
|
|
236
257
|
# Acquires a database connection, yielding it to the passed block. This is
|
|
237
258
|
# useful if you want to make sure the same connection is used for all
|
|
238
259
|
# database queries in the block. It is also useful if you want to gain
|
|
@@ -245,15 +266,9 @@ module Sequel
|
|
|
245
266
|
# DB.synchronize do |conn|
|
|
246
267
|
# # ...
|
|
247
268
|
# end
|
|
248
|
-
def synchronize(server=nil)
|
|
249
|
-
@pool.hold(server || :default){|conn| yield conn}
|
|
250
|
-
end
|
|
251
|
-
else
|
|
252
|
-
# :nocov:
|
|
253
269
|
def synchronize(server=nil, &block)
|
|
254
270
|
@pool.hold(server || :default, &block)
|
|
255
271
|
end
|
|
256
|
-
# :nocov:
|
|
257
272
|
end
|
|
258
273
|
|
|
259
274
|
# Attempts to acquire a database connection. Returns true if successful.
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
class Database
|
|
3
5
|
# ---------------------
|
|
@@ -41,6 +43,9 @@ module Sequel
|
|
|
41
43
|
# injection:
|
|
42
44
|
#
|
|
43
45
|
# DB.fetch('SELECT * FROM items WHERE name = ?', my_name).all
|
|
46
|
+
#
|
|
47
|
+
# See caveats listed in Dataset#with_sql regarding datasets using custom
|
|
48
|
+
# SQL and the methods that can be called on them.
|
|
44
49
|
def fetch(sql, *args, &block)
|
|
45
50
|
ds = @default_dataset.with_sql(sql, *args)
|
|
46
51
|
ds.each(&block) if block
|
|
@@ -48,19 +53,24 @@ module Sequel
|
|
|
48
53
|
end
|
|
49
54
|
|
|
50
55
|
# Returns a new dataset with the +from+ method invoked. If a block is given,
|
|
51
|
-
# it
|
|
56
|
+
# it acts as a virtual row block
|
|
52
57
|
#
|
|
53
58
|
# DB.from(:items) # SELECT * FROM items
|
|
54
|
-
# DB.from
|
|
59
|
+
# DB.from{schema[:table]} # SELECT * FROM schema.table
|
|
55
60
|
def from(*args, &block)
|
|
56
|
-
|
|
57
|
-
|
|
61
|
+
if block
|
|
62
|
+
@default_dataset.from(*args, &block)
|
|
63
|
+
elsif args.length == 1 && (table = args[0]).is_a?(Symbol)
|
|
64
|
+
@default_dataset.send(:cached_dataset, :"_from_#{table}_ds"){@default_dataset.from(table)}
|
|
65
|
+
else
|
|
66
|
+
@default_dataset.from(*args)
|
|
67
|
+
end
|
|
58
68
|
end
|
|
59
69
|
|
|
60
70
|
# Returns a new dataset with the select method invoked.
|
|
61
71
|
#
|
|
62
72
|
# DB.select(1) # SELECT 1
|
|
63
|
-
# DB.select{server_version
|
|
73
|
+
# DB.select{server_version.function} # SELECT server_version()
|
|
64
74
|
# DB.select(:id).from(:items) # SELECT id FROM items
|
|
65
75
|
def select(*args, &block)
|
|
66
76
|
@default_dataset.select(*args, &block)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
class Database
|
|
3
5
|
# ---------------------
|
|
@@ -5,45 +7,11 @@ module Sequel
|
|
|
5
7
|
# This methods change the default behavior of this database's datasets.
|
|
6
8
|
# ---------------------
|
|
7
9
|
|
|
8
|
-
# The default class to use for datasets
|
|
9
|
-
DatasetClass = Sequel::Dataset
|
|
10
|
-
|
|
11
|
-
@identifier_input_method = nil
|
|
12
|
-
@identifier_output_method = nil
|
|
13
|
-
@quote_identifiers = nil
|
|
14
|
-
|
|
15
|
-
class << self
|
|
16
|
-
# The identifier input method to use by default for all databases (default: adapter default)
|
|
17
|
-
attr_reader :identifier_input_method
|
|
18
|
-
|
|
19
|
-
# The identifier output method to use by default for all databases (default: adapter default)
|
|
20
|
-
attr_reader :identifier_output_method
|
|
21
|
-
|
|
22
|
-
# Whether to quote identifiers (columns and tables) by default for all databases (default: adapter default)
|
|
23
|
-
attr_accessor :quote_identifiers
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Change the default identifier input method to use for all databases,
|
|
27
|
-
def self.identifier_input_method=(v)
|
|
28
|
-
@identifier_input_method = v.nil? ? false : v
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Change the default identifier output method to use for all databases,
|
|
32
|
-
def self.identifier_output_method=(v)
|
|
33
|
-
@identifier_output_method = v.nil? ? false : v
|
|
34
|
-
end
|
|
35
|
-
|
|
36
10
|
# The class to use for creating datasets. Should respond to
|
|
37
11
|
# new with the Database argument as the first argument, and
|
|
38
12
|
# an optional options hash.
|
|
39
13
|
attr_reader :dataset_class
|
|
40
14
|
|
|
41
|
-
# The identifier input method to use by default for this database (default: adapter default)
|
|
42
|
-
attr_reader :identifier_input_method
|
|
43
|
-
|
|
44
|
-
# The identifier output method to use by default for this database (default: adapter default)
|
|
45
|
-
attr_reader :identifier_output_method
|
|
46
|
-
|
|
47
15
|
# If the database has any dataset modules associated with it,
|
|
48
16
|
# use a subclass of the given class that includes the modules
|
|
49
17
|
# as the dataset class.
|
|
@@ -65,9 +33,12 @@ module Sequel
|
|
|
65
33
|
# This allows you to override any of the dataset methods even if they are
|
|
66
34
|
# defined directly on the dataset class that this Database object uses.
|
|
67
35
|
#
|
|
36
|
+
# If a block is given, a Dataset::DatasetModule instance is created, allowing
|
|
37
|
+
# for the easy creation of named dataset methods that will do caching.
|
|
38
|
+
#
|
|
68
39
|
# Examples:
|
|
69
40
|
#
|
|
70
|
-
# #
|
|
41
|
+
# # Introspect columns for all of DB's datasets
|
|
71
42
|
# DB.extend_datasets(Sequel::ColumnsIntrospection)
|
|
72
43
|
#
|
|
73
44
|
# # Trace all SELECT queries by printing the SQL and the full backtrace
|
|
@@ -78,9 +49,19 @@ module Sequel
|
|
|
78
49
|
# super
|
|
79
50
|
# end
|
|
80
51
|
# end
|
|
52
|
+
#
|
|
53
|
+
# # Add some named dataset methods
|
|
54
|
+
# DB.extend_datasets do
|
|
55
|
+
# order :by_id, :id
|
|
56
|
+
# select :with_id_and_name, :id, :name
|
|
57
|
+
# where :active, :active
|
|
58
|
+
# end
|
|
59
|
+
#
|
|
60
|
+
# DB[:table].active.with_id_and_name.by_id
|
|
61
|
+
# # SELECT id, name FROM table WHERE active ORDER BY id
|
|
81
62
|
def extend_datasets(mod=nil, &block)
|
|
82
63
|
raise(Error, "must provide either mod or block, not both") if mod && block
|
|
83
|
-
mod =
|
|
64
|
+
mod = Dataset::DatasetModule.new(&block) if block
|
|
84
65
|
if @dataset_modules.empty?
|
|
85
66
|
@dataset_modules = [mod]
|
|
86
67
|
@dataset_class = Class.new(@dataset_class)
|
|
@@ -91,85 +72,22 @@ module Sequel
|
|
|
91
72
|
reset_default_dataset
|
|
92
73
|
end
|
|
93
74
|
|
|
94
|
-
# Set the method to call on identifiers going into the database:
|
|
95
|
-
#
|
|
96
|
-
# DB[:items] # SELECT * FROM items
|
|
97
|
-
# DB.identifier_input_method = :upcase
|
|
98
|
-
# DB[:items] # SELECT * FROM ITEMS
|
|
99
|
-
def identifier_input_method=(v)
|
|
100
|
-
reset_default_dataset
|
|
101
|
-
@identifier_input_method = v
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
# Set the method to call on identifiers coming from the database:
|
|
105
|
-
#
|
|
106
|
-
# DB[:items].first # {:id=>1, :name=>'foo'}
|
|
107
|
-
# DB.identifier_output_method = :upcase
|
|
108
|
-
# DB[:items].first # {:ID=>1, :NAME=>'foo'}
|
|
109
|
-
def identifier_output_method=(v)
|
|
110
|
-
reset_default_dataset
|
|
111
|
-
@identifier_output_method = v
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
# Set whether to quote identifiers (columns and tables) for this database:
|
|
115
|
-
#
|
|
116
|
-
# DB[:items] # SELECT * FROM items
|
|
117
|
-
# DB.quote_identifiers = true
|
|
118
|
-
# DB[:items] # SELECT * FROM "items"
|
|
119
|
-
def quote_identifiers=(v)
|
|
120
|
-
reset_default_dataset
|
|
121
|
-
@quote_identifiers = v
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
# Returns true if the database quotes identifiers.
|
|
125
|
-
def quote_identifiers?
|
|
126
|
-
@quote_identifiers
|
|
127
|
-
end
|
|
128
|
-
|
|
129
75
|
private
|
|
130
76
|
|
|
131
77
|
# The default dataset class to use for the database
|
|
132
78
|
def dataset_class_default
|
|
133
|
-
|
|
79
|
+
Sequel::Dataset
|
|
134
80
|
end
|
|
135
81
|
|
|
136
|
-
# Reset the default dataset used by most Database methods that
|
|
137
|
-
# create datasets. Usually done after changes to the identifier
|
|
138
|
-
# mangling methods.
|
|
82
|
+
# Reset the default dataset used by most Database methods that create datasets.
|
|
139
83
|
def reset_default_dataset
|
|
140
84
|
Sequel.synchronize{@symbol_literal_cache.clear}
|
|
141
85
|
@default_dataset = dataset
|
|
142
86
|
end
|
|
143
87
|
|
|
144
|
-
#
|
|
145
|
-
# Should be overridden in subclasses for databases that fold unquoted
|
|
146
|
-
# identifiers to lower case instead of uppercase, such as
|
|
147
|
-
# MySQL, PostgreSQL, and SQLite.
|
|
148
|
-
def identifier_input_method_default
|
|
149
|
-
:upcase
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
# The method to apply to identifiers coming the database by default.
|
|
153
|
-
# Should be overridden in subclasses for databases that fold unquoted
|
|
154
|
-
# identifiers to lower case instead of uppercase, such as
|
|
155
|
-
# MySQL, PostgreSQL, and SQLite.
|
|
156
|
-
def identifier_output_method_default
|
|
157
|
-
:downcase
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
# Whether to quote identifiers by default for this database, true
|
|
161
|
-
# by default.
|
|
88
|
+
# Whether to quote identifiers by default for this database, true by default.
|
|
162
89
|
def quote_identifiers_default
|
|
163
90
|
true
|
|
164
91
|
end
|
|
165
|
-
|
|
166
|
-
# Reset the identifier mangling options. Overrides any already set on
|
|
167
|
-
# the instance. Only for internal use by shared adapters.
|
|
168
|
-
def reset_identifier_mangling
|
|
169
|
-
@quote_identifiers = @opts.fetch(:quote_identifiers){(qi = Database.quote_identifiers).nil? ? quote_identifiers_default : qi}
|
|
170
|
-
@identifier_input_method = @opts.fetch(:identifier_input_method){(iim = Database.identifier_input_method).nil? ? identifier_input_method_default : (iim if iim)}
|
|
171
|
-
@identifier_output_method = @opts.fetch(:identifier_output_method){(iom = Database.identifier_output_method).nil? ? identifier_output_method_default : (iom if iom)}
|
|
172
|
-
reset_default_dataset
|
|
173
|
-
end
|
|
174
92
|
end
|
|
175
93
|
end
|