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
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
class Database
|
|
3
5
|
# ---------------------
|
|
@@ -6,7 +8,7 @@ module Sequel
|
|
|
6
8
|
# database supprots a given feature.
|
|
7
9
|
# ---------------------
|
|
8
10
|
|
|
9
|
-
# Whether the database uses a global namespace for the index. If
|
|
11
|
+
# Whether the database uses a global namespace for the index, true by default. If
|
|
10
12
|
# false, the indexes are going to be namespaced per table.
|
|
11
13
|
def global_index_namespace?
|
|
12
14
|
true
|
|
@@ -31,7 +33,7 @@ module Sequel
|
|
|
31
33
|
end
|
|
32
34
|
|
|
33
35
|
# Whether the database supports DROP TABLE IF EXISTS syntax,
|
|
34
|
-
#
|
|
36
|
+
# false by default.
|
|
35
37
|
def supports_drop_table_if_exists?
|
|
36
38
|
supports_create_table_if_not_exists?
|
|
37
39
|
end
|
|
@@ -47,7 +49,8 @@ module Sequel
|
|
|
47
49
|
respond_to?(:indexes)
|
|
48
50
|
end
|
|
49
51
|
|
|
50
|
-
# Whether the database supports partial indexes (indexes on a subset of a table)
|
|
52
|
+
# Whether the database supports partial indexes (indexes on a subset of a table),
|
|
53
|
+
# false by default.
|
|
51
54
|
def supports_partial_indexes?
|
|
52
55
|
false
|
|
53
56
|
end
|
|
@@ -64,7 +67,7 @@ module Sequel
|
|
|
64
67
|
end
|
|
65
68
|
|
|
66
69
|
# Whether the database and adapter support savepoints inside prepared transactions
|
|
67
|
-
# (two-phase commit),
|
|
70
|
+
# (two-phase commit), false by default.
|
|
68
71
|
def supports_savepoints_in_prepared_transactions?
|
|
69
72
|
supports_prepared_transactions? && supports_savepoints?
|
|
70
73
|
end
|
|
@@ -106,6 +109,19 @@ module Sequel
|
|
|
106
109
|
|
|
107
110
|
private
|
|
108
111
|
|
|
112
|
+
# Whether the database supports adding primary key constraints on NULLable columns,
|
|
113
|
+
# automatically making them NOT NULL. If false, the columns must be set NOT NULL
|
|
114
|
+
# before the primary key constraint is added.
|
|
115
|
+
def can_add_primary_key_constraint_on_nullable_columns?
|
|
116
|
+
true
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Whether this dataset considers unquoted identifiers as uppercase. True
|
|
120
|
+
# by default as that is the SQL standard
|
|
121
|
+
def folds_unquoted_identifiers_to_uppercase?
|
|
122
|
+
true
|
|
123
|
+
end
|
|
124
|
+
|
|
109
125
|
# Whether the database supports combining multiple alter table
|
|
110
126
|
# operations into a single query, false by default.
|
|
111
127
|
def supports_combining_alter_table_ops?
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
class Database
|
|
3
5
|
# ---------------------
|
|
@@ -12,6 +14,9 @@ module Sequel
|
|
|
12
14
|
# Array of SQL loggers to use for this database.
|
|
13
15
|
attr_accessor :loggers
|
|
14
16
|
|
|
17
|
+
# Whether to include information about the connection in use when logging queries.
|
|
18
|
+
attr_accessor :log_connection_info
|
|
19
|
+
|
|
15
20
|
# Log level at which to log SQL queries. This is actually the method
|
|
16
21
|
# sent to the logger, so it should be the method name symbol. The default
|
|
17
22
|
# is :info, it can be set to :debug to log at DEBUG level.
|
|
@@ -29,17 +34,18 @@ module Sequel
|
|
|
29
34
|
|
|
30
35
|
# Yield to the block, logging any errors at error level to all loggers,
|
|
31
36
|
# and all other queries with the duration at warn or info level.
|
|
32
|
-
def
|
|
33
|
-
return yield if
|
|
34
|
-
sql = "#{sql}; #{args.inspect}" if args
|
|
35
|
-
|
|
37
|
+
def log_connection_yield(sql, conn, args=nil)
|
|
38
|
+
return yield if skip_logging?
|
|
39
|
+
sql = "#{connection_info(conn) if conn && log_connection_info}#{sql}#{"; #{args.inspect}" if args}"
|
|
40
|
+
timer = Sequel.start_timer
|
|
41
|
+
|
|
36
42
|
begin
|
|
37
43
|
yield
|
|
38
44
|
rescue => e
|
|
39
45
|
log_exception(e, sql)
|
|
40
46
|
raise
|
|
41
47
|
ensure
|
|
42
|
-
log_duration(
|
|
48
|
+
log_duration(Sequel.elapsed_seconds_since(timer), sql) unless e
|
|
43
49
|
end
|
|
44
50
|
end
|
|
45
51
|
|
|
@@ -51,11 +57,23 @@ module Sequel
|
|
|
51
57
|
end
|
|
52
58
|
|
|
53
59
|
private
|
|
60
|
+
|
|
61
|
+
# Determine if logging should be skipped. Defaults to true if no loggers
|
|
62
|
+
# have been specified.
|
|
63
|
+
def skip_logging?
|
|
64
|
+
@loggers.empty?
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# String including information about the connection, for use when logging
|
|
68
|
+
# connection info.
|
|
69
|
+
def connection_info(conn)
|
|
70
|
+
"(conn: #{conn.__id__}) "
|
|
71
|
+
end
|
|
54
72
|
|
|
55
73
|
# Log the given SQL and then execute it on the connection, used by
|
|
56
74
|
# the transaction code.
|
|
57
75
|
def log_connection_execute(conn, sql)
|
|
58
|
-
|
|
76
|
+
log_connection_yield(sql, conn){conn.public_send(connection_execute_method, sql)}
|
|
59
77
|
end
|
|
60
78
|
|
|
61
79
|
# Log message with message prefixed by duration at info level, or
|
|
@@ -67,7 +85,7 @@ module Sequel
|
|
|
67
85
|
# Log message at level (which should be :error, :warn, or :info)
|
|
68
86
|
# to all loggers.
|
|
69
87
|
def log_each(level, message)
|
|
70
|
-
@loggers.each{|logger| logger.
|
|
88
|
+
@loggers.each{|logger| logger.public_send(level, message)}
|
|
71
89
|
end
|
|
72
90
|
end
|
|
73
91
|
end
|
data/lib/sequel/database/misc.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
class Database
|
|
3
5
|
# ---------------------
|
|
@@ -24,16 +26,8 @@ module Sequel
|
|
|
24
26
|
:time=>Sequel::SQLTime, :boolean=>[TrueClass, FalseClass].freeze, :float=>Float, :decimal=>BigDecimal,
|
|
25
27
|
:blob=>Sequel::SQL::Blob}.freeze
|
|
26
28
|
|
|
27
|
-
# Module to be included in shared adapters so that when the DatabaseMethods are
|
|
28
|
-
# included in the database, the identifier mangling defaults are reset correctly.
|
|
29
|
-
module ResetIdentifierMangling
|
|
30
|
-
def extended(obj)
|
|
31
|
-
obj.send(:reset_identifier_mangling)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
29
|
# Nested hook Proc; each new hook Proc just wraps the previous one.
|
|
36
|
-
@initialize_hook =
|
|
30
|
+
@initialize_hook = proc{|db| }
|
|
37
31
|
|
|
38
32
|
# Register a hook that will be run when a new Database is instantiated. It is
|
|
39
33
|
# called with the new database handle.
|
|
@@ -41,7 +35,7 @@ module Sequel
|
|
|
41
35
|
raise Error, "must provide block to after_initialize" unless block
|
|
42
36
|
Sequel.synchronize do
|
|
43
37
|
previous = @initialize_hook
|
|
44
|
-
@initialize_hook =
|
|
38
|
+
@initialize_hook = proc do |db|
|
|
45
39
|
previous.call(db)
|
|
46
40
|
block.call(db)
|
|
47
41
|
end
|
|
@@ -78,11 +72,13 @@ module Sequel
|
|
|
78
72
|
# Converts a uri to an options hash. These options are then passed
|
|
79
73
|
# to a newly created database object.
|
|
80
74
|
def self.uri_to_options(uri)
|
|
81
|
-
{
|
|
75
|
+
{
|
|
76
|
+
:user => uri.user,
|
|
82
77
|
:password => uri.password,
|
|
83
|
-
:host => uri.host,
|
|
84
78
|
:port => uri.port,
|
|
85
|
-
:
|
|
79
|
+
:host => uri.hostname,
|
|
80
|
+
:database => (m = /\/(.*)/.match(uri.path)) && (m[1])
|
|
81
|
+
}
|
|
86
82
|
end
|
|
87
83
|
private_class_method :uri_to_options
|
|
88
84
|
|
|
@@ -99,91 +95,110 @@ module Sequel
|
|
|
99
95
|
# options hash.
|
|
100
96
|
#
|
|
101
97
|
# Accepts the following options:
|
|
98
|
+
# :cache_schema :: Whether schema should be cached for this Database instance
|
|
102
99
|
# :default_string_column_size :: The default size of string columns, 255 by default.
|
|
103
|
-
# :
|
|
104
|
-
#
|
|
100
|
+
# :extensions :: Extensions to load into this Database instance. Can be a symbol, array of symbols,
|
|
101
|
+
# or string with extensions separated by columns. These extensions are loaded after
|
|
102
|
+
# connections are made by the :preconnect option.
|
|
103
|
+
# :keep_reference :: Whether to keep a reference to this instance in Sequel::DATABASES, true by default.
|
|
105
104
|
# :logger :: A specific logger to use.
|
|
106
105
|
# :loggers :: An array of loggers to use.
|
|
107
|
-
# :
|
|
106
|
+
# :log_connection_info :: Whether connection information should be logged when logging queries.
|
|
107
|
+
# :log_warn_duration :: The number of elapsed seconds after which queries should be logged at warn level.
|
|
108
|
+
# :name :: A name to use for the Database object, displayed in PoolTimeout .
|
|
109
|
+
# :preconnect :: Automatically create the maximum number of connections, so that they don't
|
|
110
|
+
# need to be created as needed. This is useful when connecting takes a long time
|
|
111
|
+
# and you want to avoid possible latency during runtime.
|
|
112
|
+
# Set to :concurrently to create the connections in separate threads. Otherwise
|
|
113
|
+
# they'll be created sequentially.
|
|
114
|
+
# :preconnect_extensions :: Similar to the :extensions option, but loads the extensions before the
|
|
115
|
+
# connections are made by the :preconnect option.
|
|
108
116
|
# :quote_identifiers :: Whether to quote identifiers.
|
|
109
117
|
# :servers :: A hash specifying a server/shard specific options, keyed by shard symbol .
|
|
110
118
|
# :single_threaded :: Whether to use a single-threaded connection pool.
|
|
111
119
|
# :sql_log_level :: Method to use to log SQL to a logger, :info by default.
|
|
112
120
|
#
|
|
113
|
-
# All options given are also passed to the connection pool.
|
|
114
|
-
|
|
121
|
+
# All options given are also passed to the connection pool. Additional options respected by
|
|
122
|
+
# the connection pool are :after_connect, :connect_sqls, :max_connections, :pool_timeout,
|
|
123
|
+
# :servers, and :servers_hash. See the connection pool documentation for details.
|
|
124
|
+
def initialize(opts = OPTS)
|
|
115
125
|
@opts ||= opts
|
|
116
126
|
@opts = connection_pool_default_options.merge(@opts)
|
|
117
127
|
@loggers = Array(@opts[:logger]) + Array(@opts[:loggers])
|
|
118
|
-
self.log_warn_duration = @opts[:log_warn_duration]
|
|
119
|
-
block ||= proc{|server| connect(server)}
|
|
120
128
|
@opts[:servers] = {} if @opts[:servers].is_a?(String)
|
|
121
129
|
@sharded = !!@opts[:servers]
|
|
122
130
|
@opts[:adapter_class] = self.class
|
|
123
|
-
|
|
124
|
-
@opts[:single_threaded] = @single_threaded = typecast_value_boolean(@opts.fetch(:single_threaded, Database.single_threaded))
|
|
125
|
-
@schemas = {}
|
|
131
|
+
@opts[:single_threaded] = @single_threaded = typecast_value_boolean(@opts.fetch(:single_threaded, Sequel.single_threaded))
|
|
126
132
|
@default_string_column_size = @opts[:default_string_column_size] || DEFAULT_STRING_COLUMN_SIZE
|
|
133
|
+
|
|
134
|
+
@schemas = {}
|
|
127
135
|
@prepared_statements = {}
|
|
128
136
|
@transactions = {}
|
|
129
|
-
@
|
|
130
|
-
|
|
131
|
-
@quote_identifiers = nil
|
|
137
|
+
@symbol_literal_cache = {}
|
|
138
|
+
|
|
132
139
|
@timezone = nil
|
|
140
|
+
|
|
133
141
|
@dataset_class = dataset_class_default
|
|
134
142
|
@cache_schema = typecast_value_boolean(@opts.fetch(:cache_schema, true))
|
|
135
143
|
@dataset_modules = []
|
|
136
|
-
@
|
|
144
|
+
@loaded_extensions = []
|
|
137
145
|
@schema_type_classes = SCHEMA_TYPE_CLASSES.dup
|
|
146
|
+
|
|
138
147
|
self.sql_log_level = @opts[:sql_log_level] ? @opts[:sql_log_level].to_sym : :info
|
|
148
|
+
self.log_warn_duration = @opts[:log_warn_duration]
|
|
149
|
+
self.log_connection_info = typecast_value_boolean(@opts[:log_connection_info])
|
|
150
|
+
|
|
139
151
|
@pool = ConnectionPool.get_pool(self, @opts)
|
|
140
152
|
|
|
141
|
-
|
|
153
|
+
reset_default_dataset
|
|
142
154
|
adapter_initialize
|
|
143
155
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
# Options:
|
|
155
|
-
# :server :: The server/shard to use.
|
|
156
|
-
def after_commit(opts=OPTS, &block)
|
|
157
|
-
raise Error, "must provide block to after_commit" unless block
|
|
158
|
-
synchronize(opts[:server]) do |conn|
|
|
159
|
-
if h = _trans(conn)
|
|
160
|
-
raise Error, "cannot call after_commit in a prepared transaction" if h[:prepare]
|
|
161
|
-
(h[:after_commit] ||= []) << block
|
|
162
|
-
else
|
|
163
|
-
yield
|
|
156
|
+
keep_reference = typecast_value_boolean(@opts[:keep_reference]) != false
|
|
157
|
+
begin
|
|
158
|
+
Sequel.synchronize{::Sequel::DATABASES.push(self)} if keep_reference
|
|
159
|
+
Sequel::Database.run_after_initialize(self)
|
|
160
|
+
|
|
161
|
+
initialize_load_extensions(:preconnect_extensions)
|
|
162
|
+
|
|
163
|
+
if typecast_value_boolean(@opts[:preconnect]) && @pool.respond_to?(:preconnect, true)
|
|
164
|
+
concurrent = typecast_value_string(@opts[:preconnect]) == "concurrently"
|
|
165
|
+
@pool.send(:preconnect, concurrent)
|
|
164
166
|
end
|
|
167
|
+
|
|
168
|
+
initialize_load_extensions(:extensions)
|
|
169
|
+
rescue
|
|
170
|
+
Sequel.synchronize{::Sequel::DATABASES.delete(self)} if keep_reference
|
|
171
|
+
raise
|
|
165
172
|
end
|
|
166
173
|
end
|
|
167
|
-
|
|
168
|
-
#
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
174
|
+
|
|
175
|
+
# Freeze internal data structures for the Database instance.
|
|
176
|
+
def freeze
|
|
177
|
+
valid_connection_sql
|
|
178
|
+
metadata_dataset
|
|
179
|
+
@opts.freeze
|
|
180
|
+
@loggers.freeze
|
|
181
|
+
@pool.freeze
|
|
182
|
+
@dataset_class.freeze
|
|
183
|
+
@dataset_modules.freeze
|
|
184
|
+
@schema_type_classes.freeze
|
|
185
|
+
@loaded_extensions.freeze
|
|
186
|
+
metadata_dataset
|
|
187
|
+
super
|
|
181
188
|
end
|
|
182
|
-
|
|
189
|
+
|
|
190
|
+
# Disallow dup/clone for Database instances
|
|
191
|
+
undef_method :dup, :clone, :initialize_copy
|
|
192
|
+
# :nocov:
|
|
193
|
+
if RUBY_VERSION >= '1.9.3'
|
|
194
|
+
# :nocov:
|
|
195
|
+
undef_method :initialize_clone, :initialize_dup
|
|
196
|
+
end
|
|
197
|
+
|
|
183
198
|
# Cast the given type to a literal type
|
|
184
199
|
#
|
|
185
200
|
# DB.cast_type_literal(Float) # double precision
|
|
186
|
-
# DB.cast_type_literal(:foo)
|
|
201
|
+
# DB.cast_type_literal(:foo) # foo
|
|
187
202
|
def cast_type_literal(type)
|
|
188
203
|
type_literal(:type=>type)
|
|
189
204
|
end
|
|
@@ -197,7 +212,10 @@ module Sequel
|
|
|
197
212
|
Sequel.extension(*exts)
|
|
198
213
|
exts.each do |ext|
|
|
199
214
|
if pr = Sequel.synchronize{EXTENSIONS[ext]}
|
|
200
|
-
|
|
215
|
+
unless Sequel.synchronize{@loaded_extensions.include?(ext)}
|
|
216
|
+
Sequel.synchronize{@loaded_extensions << ext}
|
|
217
|
+
pr.call(self)
|
|
218
|
+
end
|
|
201
219
|
else
|
|
202
220
|
raise(Error, "Extension #{ext} does not have specific support handling individual databases (try: Sequel.extension #{ext.inspect})")
|
|
203
221
|
end
|
|
@@ -212,13 +230,6 @@ module Sequel
|
|
|
212
230
|
Sequel.convert_output_timestamp(v, timezone)
|
|
213
231
|
end
|
|
214
232
|
|
|
215
|
-
# Return true if already in a transaction given the options,
|
|
216
|
-
# false otherwise. Respects the :server option for selecting
|
|
217
|
-
# a shard.
|
|
218
|
-
def in_transaction?(opts=OPTS)
|
|
219
|
-
synchronize(opts[:server]){|conn| !!_trans(conn)}
|
|
220
|
-
end
|
|
221
|
-
|
|
222
233
|
# Returns a string representation of the database object including the
|
|
223
234
|
# class name and connection URI and options used when connecting (if any).
|
|
224
235
|
def inspect
|
|
@@ -232,8 +243,8 @@ module Sequel
|
|
|
232
243
|
|
|
233
244
|
# Proxy the literal call to the dataset.
|
|
234
245
|
#
|
|
235
|
-
# DB.literal(1)
|
|
236
|
-
# DB.literal(:a)
|
|
246
|
+
# DB.literal(1) # 1
|
|
247
|
+
# DB.literal(:a) # a
|
|
237
248
|
# DB.literal('a') # 'a'
|
|
238
249
|
def literal(v)
|
|
239
250
|
schema_utility_dataset.literal(v)
|
|
@@ -267,20 +278,18 @@ module Sequel
|
|
|
267
278
|
@schema_type_classes[type]
|
|
268
279
|
end
|
|
269
280
|
|
|
270
|
-
# Default serial primary key options, used by the table creation
|
|
271
|
-
# code.
|
|
281
|
+
# Default serial primary key options, used by the table creation code.
|
|
272
282
|
def serial_primary_key_options
|
|
273
283
|
{:primary_key => true, :type => Integer, :auto_increment => true}
|
|
274
284
|
end
|
|
275
285
|
|
|
276
286
|
# Cache the prepared statement object at the given name.
|
|
277
287
|
def set_prepared_statement(name, ps)
|
|
278
|
-
ps.prepared_sql
|
|
279
288
|
Sequel.synchronize{prepared_statements[name] = ps}
|
|
280
289
|
end
|
|
281
290
|
|
|
282
291
|
# Whether this database instance uses multiple servers, either for sharding
|
|
283
|
-
# or for
|
|
292
|
+
# or for primary/replica configurations.
|
|
284
293
|
def sharded?
|
|
285
294
|
@sharded
|
|
286
295
|
end
|
|
@@ -306,6 +315,7 @@ module Sequel
|
|
|
306
315
|
return nil if value.nil?
|
|
307
316
|
meth = "typecast_value_#{column_type}"
|
|
308
317
|
begin
|
|
318
|
+
# Allow calling private methods as per-type typecasting methods are private
|
|
309
319
|
respond_to?(meth, true) ? send(meth, value) : value
|
|
310
320
|
rescue ArgumentError, TypeError => e
|
|
311
321
|
raise Sequel.convert_exception_class(e, InvalidValue)
|
|
@@ -347,11 +357,6 @@ module Sequel
|
|
|
347
357
|
end
|
|
348
358
|
end
|
|
349
359
|
|
|
350
|
-
# Which transaction errors to translate, blank by default.
|
|
351
|
-
def database_error_classes
|
|
352
|
-
[]
|
|
353
|
-
end
|
|
354
|
-
|
|
355
360
|
# An enumerable yielding pairs of regexps and exception classes, used
|
|
356
361
|
# to match against underlying driver exception messages in
|
|
357
362
|
# order to raise a more specific Sequel::DatabaseError subclass.
|
|
@@ -365,8 +370,7 @@ module Sequel
|
|
|
365
370
|
database_specific_error_class(exception, opts) || DatabaseError
|
|
366
371
|
end
|
|
367
372
|
|
|
368
|
-
# Return the SQLState for the given exception, if one can be
|
|
369
|
-
# determined
|
|
373
|
+
# Return the SQLState for the given exception, if one can be determined
|
|
370
374
|
def database_exception_sqlstate(exception, opts)
|
|
371
375
|
nil
|
|
372
376
|
end
|
|
@@ -416,8 +420,24 @@ module Sequel
|
|
|
416
420
|
opts[:disconnect]
|
|
417
421
|
end
|
|
418
422
|
|
|
423
|
+
# Load extensions during initialization from the given key in opts.
|
|
424
|
+
def initialize_load_extensions(key)
|
|
425
|
+
case exts = @opts[key]
|
|
426
|
+
when String
|
|
427
|
+
extension(*exts.split(',').map(&:to_sym))
|
|
428
|
+
when Array
|
|
429
|
+
extension(*exts)
|
|
430
|
+
when Symbol
|
|
431
|
+
extension(exts)
|
|
432
|
+
when nil
|
|
433
|
+
# nothing
|
|
434
|
+
else
|
|
435
|
+
raise Error, "unsupported Database #{key.inspect} option: #{@opts[key].inspect}"
|
|
436
|
+
end
|
|
437
|
+
end
|
|
438
|
+
|
|
419
439
|
# Convert the given exception to an appropriate Sequel::DatabaseError
|
|
420
|
-
# subclass, keeping message and
|
|
440
|
+
# subclass, keeping message and backtrace.
|
|
421
441
|
def raise_error(exception, opts=OPTS)
|
|
422
442
|
if !opts[:classes] || Array(opts[:classes]).any?{|c| exception.is_a?(c)}
|
|
423
443
|
raise Sequel.convert_exception_class(exception, database_error_class(exception, opts))
|
|
@@ -461,16 +481,14 @@ module Sequel
|
|
|
461
481
|
def typecast_value_datetime(value)
|
|
462
482
|
Sequel.typecast_to_application_timestamp(value)
|
|
463
483
|
end
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
BigDecimal
|
|
472
|
-
when String
|
|
473
|
-
d = BigDecimal.new(value)
|
|
484
|
+
|
|
485
|
+
if RUBY_VERSION >= '2.4'
|
|
486
|
+
# Typecast a string to a BigDecimal
|
|
487
|
+
alias _typecast_value_string_to_decimal BigDecimal
|
|
488
|
+
else
|
|
489
|
+
# :nocov:
|
|
490
|
+
def _typecast_value_string_to_decimal(value)
|
|
491
|
+
d = BigDecimal(value)
|
|
474
492
|
if d.zero?
|
|
475
493
|
# BigDecimal parsing is loose by default, returning a 0 value for
|
|
476
494
|
# invalid input. If a zero value is received, use Float to check
|
|
@@ -482,33 +500,30 @@ module Sequel
|
|
|
482
500
|
end
|
|
483
501
|
end
|
|
484
502
|
d
|
|
503
|
+
end
|
|
504
|
+
# :nocov:
|
|
505
|
+
end
|
|
506
|
+
|
|
507
|
+
# Typecast the value to a BigDecimal
|
|
508
|
+
def typecast_value_decimal(value)
|
|
509
|
+
case value
|
|
510
|
+
when BigDecimal
|
|
511
|
+
value
|
|
512
|
+
when Numeric
|
|
513
|
+
BigDecimal(value.to_s)
|
|
514
|
+
when String
|
|
515
|
+
_typecast_value_string_to_decimal(value)
|
|
485
516
|
else
|
|
486
517
|
raise InvalidValue, "invalid value for BigDecimal: #{value.inspect}"
|
|
487
518
|
end
|
|
488
519
|
end
|
|
489
520
|
|
|
490
521
|
# Typecast the value to a Float
|
|
491
|
-
|
|
492
|
-
Float(value)
|
|
493
|
-
end
|
|
522
|
+
alias typecast_value_float Float
|
|
494
523
|
|
|
495
|
-
#
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
if RUBY_VERSION >= '1.9'
|
|
499
|
-
# Typecast the value to an Integer
|
|
500
|
-
def typecast_value_integer(value)
|
|
501
|
-
(value.is_a?(String) && value =~ LEADING_ZERO_RE) ? Integer(value, 10) : Integer(value)
|
|
502
|
-
end
|
|
503
|
-
else
|
|
504
|
-
# :nocov:
|
|
505
|
-
# Replacement string when replacing leading zeroes.
|
|
506
|
-
LEADING_ZERO_REP = "\\1".freeze
|
|
507
|
-
# Typecast the value to an Integer
|
|
508
|
-
def typecast_value_integer(value)
|
|
509
|
-
Integer(value.is_a?(String) ? value.sub(LEADING_ZERO_RE, LEADING_ZERO_REP) : value)
|
|
510
|
-
end
|
|
511
|
-
# :nocov:
|
|
524
|
+
# Typecast the value to an Integer
|
|
525
|
+
def typecast_value_integer(value)
|
|
526
|
+
(value.is_a?(String) && value =~ /\A0+(\d)/) ? Integer(value, 10) : Integer(value)
|
|
512
527
|
end
|
|
513
528
|
|
|
514
529
|
# Typecast the value to a String
|
|
@@ -528,8 +543,7 @@ module Sequel
|
|
|
528
543
|
if value.is_a?(SQLTime)
|
|
529
544
|
value
|
|
530
545
|
else
|
|
531
|
-
|
|
532
|
-
SQLTime.create(value.hour, value.min, value.sec, (value.respond_to?(:nsec) && value.nsec != 0) ? value.nsec/1000.0 : value.usec)
|
|
546
|
+
SQLTime.create(value.hour, value.min, value.sec, value.nsec/1000.0)
|
|
533
547
|
end
|
|
534
548
|
when String
|
|
535
549
|
Sequel.string_to_time(value)
|