sequel 5.8.0 → 5.38.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 +4 -4
- data/CHANGELOG +409 -1795
- data/MIT-LICENSE +1 -1
- data/README.rdoc +4 -4
- data/bin/sequel +4 -0
- data/doc/advanced_associations.rdoc +136 -18
- data/doc/association_basics.rdoc +10 -5
- data/doc/cheat_sheet.rdoc +1 -0
- data/doc/code_order.rdoc +12 -2
- data/doc/dataset_filtering.rdoc +17 -2
- data/doc/mass_assignment.rdoc +3 -3
- data/doc/model_dataset_method_design.rdoc +1 -1
- data/doc/model_plugins.rdoc +1 -1
- data/doc/opening_databases.rdoc +30 -8
- data/doc/postgresql.rdoc +107 -2
- 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.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.30.0.txt +20 -0
- data/doc/release_notes/5.31.0.txt +148 -0
- data/doc/release_notes/5.32.0.txt +46 -0
- data/doc/release_notes/5.33.0.txt +24 -0
- data/doc/release_notes/5.34.0.txt +40 -0
- data/doc/release_notes/5.35.0.txt +56 -0
- data/doc/release_notes/5.36.0.txt +60 -0
- data/doc/release_notes/5.37.0.txt +30 -0
- data/doc/release_notes/5.38.0.txt +28 -0
- data/doc/release_notes/5.9.0.txt +99 -0
- data/doc/security.rdoc +10 -0
- data/doc/sharding.rdoc +42 -28
- data/doc/sql.rdoc +12 -0
- data/doc/testing.rdoc +24 -17
- data/doc/transactions.rdoc +78 -0
- data/doc/validations.rdoc +2 -2
- data/lib/sequel/adapters/ado.rb +26 -18
- data/lib/sequel/adapters/ado/access.rb +2 -2
- data/lib/sequel/adapters/ado/mssql.rb +5 -8
- data/lib/sequel/adapters/amalgalite.rb +1 -1
- data/lib/sequel/adapters/jdbc.rb +71 -27
- data/lib/sequel/adapters/jdbc/mysql.rb +6 -6
- data/lib/sequel/adapters/jdbc/oracle.rb +7 -6
- data/lib/sequel/adapters/jdbc/postgresql.rb +17 -28
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +5 -6
- data/lib/sequel/adapters/jdbc/sqlite.rb +33 -2
- data/lib/sequel/adapters/jdbc/sqlserver.rb +4 -3
- data/lib/sequel/adapters/jdbc/transactions.rb +14 -28
- data/lib/sequel/adapters/mysql.rb +14 -15
- data/lib/sequel/adapters/mysql2.rb +5 -3
- data/lib/sequel/adapters/odbc.rb +4 -6
- data/lib/sequel/adapters/oracle.rb +7 -7
- data/lib/sequel/adapters/postgres.rb +52 -16
- data/lib/sequel/adapters/shared/access.rb +16 -12
- data/lib/sequel/adapters/shared/db2.rb +5 -0
- data/lib/sequel/adapters/shared/mssql.rb +41 -18
- data/lib/sequel/adapters/shared/mysql.rb +66 -19
- data/lib/sequel/adapters/shared/oracle.rb +29 -23
- data/lib/sequel/adapters/shared/postgres.rb +341 -95
- data/lib/sequel/adapters/shared/sqlanywhere.rb +23 -10
- data/lib/sequel/adapters/shared/sqlite.rb +174 -21
- data/lib/sequel/adapters/sqlanywhere.rb +33 -17
- data/lib/sequel/adapters/sqlite.rb +78 -68
- data/lib/sequel/adapters/tinytds.rb +14 -6
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +2 -5
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +5 -1
- data/lib/sequel/connection_pool.rb +2 -6
- data/lib/sequel/connection_pool/sharded_single.rb +7 -4
- data/lib/sequel/connection_pool/sharded_threaded.rb +32 -21
- data/lib/sequel/connection_pool/single.rb +1 -1
- data/lib/sequel/connection_pool/threaded.rb +26 -11
- data/lib/sequel/core.rb +327 -319
- data/lib/sequel/database/connecting.rb +7 -8
- data/lib/sequel/database/logging.rb +7 -1
- data/lib/sequel/database/misc.rb +68 -34
- data/lib/sequel/database/query.rb +6 -4
- data/lib/sequel/database/schema_generator.rb +31 -11
- data/lib/sequel/database/schema_methods.rb +32 -22
- data/lib/sequel/database/transactions.rb +129 -25
- data/lib/sequel/dataset.rb +4 -2
- data/lib/sequel/dataset/actions.rb +34 -23
- data/lib/sequel/dataset/features.rb +34 -0
- data/lib/sequel/dataset/graph.rb +27 -11
- data/lib/sequel/dataset/misc.rb +17 -3
- data/lib/sequel/dataset/placeholder_literalizer.rb +50 -21
- data/lib/sequel/dataset/prepared_statements.rb +96 -26
- data/lib/sequel/dataset/query.rb +43 -8
- data/lib/sequel/dataset/sql.rb +189 -41
- data/lib/sequel/deprecated.rb +3 -1
- data/lib/sequel/exceptions.rb +2 -0
- data/lib/sequel/extensions/_pretty_table.rb +1 -2
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +1 -2
- data/lib/sequel/extensions/connection_expiration.rb +6 -6
- data/lib/sequel/extensions/connection_validator.rb +7 -6
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +53 -28
- data/lib/sequel/extensions/core_refinements.rb +2 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +2 -0
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +3 -1
- data/lib/sequel/extensions/exclude_or_null.rb +68 -0
- data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
- data/lib/sequel/extensions/index_caching.rb +9 -7
- data/lib/sequel/extensions/integer64.rb +3 -1
- data/lib/sequel/extensions/looser_typecasting.rb +3 -3
- data/lib/sequel/extensions/migration.rb +13 -6
- data/lib/sequel/extensions/named_timezones.rb +84 -23
- data/lib/sequel/extensions/pg_array.rb +87 -79
- data/lib/sequel/extensions/pg_array_ops.rb +14 -6
- data/lib/sequel/extensions/pg_enum.rb +34 -18
- data/lib/sequel/extensions/pg_extended_date_support.rb +34 -14
- data/lib/sequel/extensions/pg_hstore.rb +6 -0
- data/lib/sequel/extensions/pg_hstore_ops.rb +2 -0
- data/lib/sequel/extensions/pg_inet.rb +15 -5
- data/lib/sequel/extensions/pg_interval.rb +2 -0
- data/lib/sequel/extensions/pg_json.rb +387 -123
- data/lib/sequel/extensions/pg_json_ops.rb +168 -0
- data/lib/sequel/extensions/pg_range.rb +20 -10
- data/lib/sequel/extensions/pg_range_ops.rb +2 -0
- data/lib/sequel/extensions/pg_row.rb +3 -2
- data/lib/sequel/extensions/pg_row_ops.rb +24 -0
- data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
- data/lib/sequel/extensions/query.rb +1 -0
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +2 -0
- data/lib/sequel/extensions/schema_dumper.rb +13 -7
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +4 -2
- data/lib/sequel/extensions/server_block.rb +18 -7
- data/lib/sequel/extensions/sql_comments.rb +2 -2
- data/lib/sequel/extensions/symbol_aref_refinement.rb +2 -0
- data/lib/sequel/extensions/symbol_as_refinement.rb +2 -0
- data/lib/sequel/extensions/to_dot.rb +9 -3
- data/lib/sequel/model.rb +3 -1
- data/lib/sequel/model/associations.rb +403 -69
- data/lib/sequel/model/base.rb +170 -90
- data/lib/sequel/model/plugins.rb +105 -0
- data/lib/sequel/plugins/after_initialize.rb +1 -1
- data/lib/sequel/plugins/association_dependencies.rb +3 -3
- 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 +74 -22
- data/lib/sequel/plugins/association_proxies.rb +6 -2
- data/lib/sequel/plugins/auto_validations.rb +36 -17
- data/lib/sequel/plugins/blacklist_security.rb +1 -2
- data/lib/sequel/plugins/boolean_subsets.rb +4 -1
- data/lib/sequel/plugins/caching.rb +3 -0
- data/lib/sequel/plugins/class_table_inheritance.rb +62 -34
- data/lib/sequel/plugins/composition.rb +13 -9
- data/lib/sequel/plugins/csv_serializer.rb +28 -9
- data/lib/sequel/plugins/defaults_setter.rb +2 -2
- data/lib/sequel/plugins/dirty.rb +60 -22
- data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
- data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
- data/lib/sequel/plugins/finder.rb +2 -2
- data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
- data/lib/sequel/plugins/hook_class_methods.rb +17 -5
- data/lib/sequel/plugins/insert_conflict.rb +72 -0
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +2 -2
- data/lib/sequel/plugins/json_serializer.rb +21 -14
- data/lib/sequel/plugins/lazy_attributes.rb +1 -1
- data/lib/sequel/plugins/list.rb +22 -10
- data/lib/sequel/plugins/many_through_many.rb +1 -1
- data/lib/sequel/plugins/nested_attributes.rb +27 -5
- data/lib/sequel/plugins/pg_array_associations.rb +12 -9
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +149 -61
- data/lib/sequel/plugins/prepared_statements.rb +6 -12
- data/lib/sequel/plugins/prepared_statements_safe.rb +1 -3
- data/lib/sequel/plugins/rcte_tree.rb +20 -22
- data/lib/sequel/plugins/sharding.rb +13 -7
- data/lib/sequel/plugins/single_table_inheritance.rb +20 -15
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/static_cache.rb +36 -17
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +1 -1
- data/lib/sequel/plugins/subclasses.rb +2 -0
- data/lib/sequel/plugins/subset_conditions.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +73 -2
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/tree.rb +49 -31
- data/lib/sequel/plugins/typecast_on_load.rb +3 -2
- data/lib/sequel/plugins/validation_class_methods.rb +11 -5
- data/lib/sequel/plugins/validation_helpers.rb +2 -2
- data/lib/sequel/sql.rb +120 -30
- data/lib/sequel/timezones.rb +55 -14
- data/lib/sequel/version.rb +6 -1
- metadata +101 -361
- data/Rakefile +0 -151
- data/doc/release_notes/4.0.0.txt +0 -262
- data/doc/release_notes/4.1.0.txt +0 -85
- data/doc/release_notes/4.10.0.txt +0 -226
- data/doc/release_notes/4.11.0.txt +0 -147
- data/doc/release_notes/4.12.0.txt +0 -105
- data/doc/release_notes/4.13.0.txt +0 -169
- data/doc/release_notes/4.14.0.txt +0 -68
- data/doc/release_notes/4.15.0.txt +0 -56
- data/doc/release_notes/4.16.0.txt +0 -36
- data/doc/release_notes/4.17.0.txt +0 -38
- data/doc/release_notes/4.18.0.txt +0 -36
- data/doc/release_notes/4.19.0.txt +0 -45
- data/doc/release_notes/4.2.0.txt +0 -129
- data/doc/release_notes/4.20.0.txt +0 -79
- data/doc/release_notes/4.21.0.txt +0 -94
- data/doc/release_notes/4.22.0.txt +0 -72
- data/doc/release_notes/4.23.0.txt +0 -65
- data/doc/release_notes/4.24.0.txt +0 -99
- data/doc/release_notes/4.25.0.txt +0 -181
- data/doc/release_notes/4.26.0.txt +0 -44
- data/doc/release_notes/4.27.0.txt +0 -78
- data/doc/release_notes/4.28.0.txt +0 -57
- data/doc/release_notes/4.29.0.txt +0 -41
- data/doc/release_notes/4.3.0.txt +0 -40
- data/doc/release_notes/4.30.0.txt +0 -37
- data/doc/release_notes/4.31.0.txt +0 -57
- data/doc/release_notes/4.32.0.txt +0 -132
- data/doc/release_notes/4.33.0.txt +0 -88
- data/doc/release_notes/4.34.0.txt +0 -86
- data/doc/release_notes/4.35.0.txt +0 -130
- data/doc/release_notes/4.36.0.txt +0 -116
- data/doc/release_notes/4.37.0.txt +0 -50
- data/doc/release_notes/4.38.0.txt +0 -67
- data/doc/release_notes/4.39.0.txt +0 -127
- data/doc/release_notes/4.4.0.txt +0 -92
- data/doc/release_notes/4.40.0.txt +0 -179
- data/doc/release_notes/4.41.0.txt +0 -77
- data/doc/release_notes/4.42.0.txt +0 -221
- data/doc/release_notes/4.43.0.txt +0 -87
- data/doc/release_notes/4.44.0.txt +0 -125
- data/doc/release_notes/4.45.0.txt +0 -370
- data/doc/release_notes/4.46.0.txt +0 -404
- data/doc/release_notes/4.47.0.txt +0 -56
- data/doc/release_notes/4.48.0.txt +0 -293
- data/doc/release_notes/4.49.0.txt +0 -222
- 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/spec/adapter_spec.rb +0 -4
- data/spec/adapters/db2_spec.rb +0 -170
- data/spec/adapters/mssql_spec.rb +0 -804
- data/spec/adapters/mysql_spec.rb +0 -1041
- data/spec/adapters/oracle_spec.rb +0 -327
- data/spec/adapters/postgres_spec.rb +0 -4000
- data/spec/adapters/spec_helper.rb +0 -43
- data/spec/adapters/sqlanywhere_spec.rb +0 -97
- data/spec/adapters/sqlite_spec.rb +0 -600
- data/spec/bin_spec.rb +0 -269
- data/spec/core/connection_pool_spec.rb +0 -1228
- data/spec/core/database_spec.rb +0 -2673
- data/spec/core/dataset_spec.rb +0 -5419
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1344
- data/spec/core/mock_adapter_spec.rb +0 -722
- data/spec/core/object_graph_spec.rb +0 -306
- data/spec/core/placeholder_literalizer_spec.rb +0 -166
- data/spec/core/schema_generator_spec.rb +0 -214
- data/spec/core/schema_spec.rb +0 -1820
- data/spec/core/spec_helper.rb +0 -23
- data/spec/core/version_spec.rb +0 -7
- data/spec/core_extensions_spec.rb +0 -762
- data/spec/core_model_spec.rb +0 -2
- data/spec/core_spec.rb +0 -1
- data/spec/deprecation_helper.rb +0 -30
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -99
- 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 -125
- data/spec/extensions/association_pks_spec.rb +0 -423
- data/spec/extensions/association_proxies_spec.rb +0 -100
- data/spec/extensions/auto_literal_strings_spec.rb +0 -205
- data/spec/extensions/auto_validations_spec.rb +0 -202
- data/spec/extensions/blacklist_security_spec.rb +0 -95
- data/spec/extensions/blank_spec.rb +0 -69
- data/spec/extensions/boolean_readers_spec.rb +0 -93
- data/spec/extensions/boolean_subsets_spec.rb +0 -47
- data/spec/extensions/caching_spec.rb +0 -273
- data/spec/extensions/class_table_inheritance_spec.rb +0 -568
- data/spec/extensions/column_conflicts_spec.rb +0 -75
- data/spec/extensions/column_select_spec.rb +0 -129
- data/spec/extensions/columns_introspection_spec.rb +0 -90
- data/spec/extensions/columns_updated_spec.rb +0 -35
- data/spec/extensions/composition_spec.rb +0 -248
- data/spec/extensions/connection_expiration_spec.rb +0 -133
- data/spec/extensions/connection_validator_spec.rb +0 -127
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
- data/spec/extensions/constraint_validations_spec.rb +0 -395
- data/spec/extensions/core_refinements_spec.rb +0 -528
- data/spec/extensions/csv_serializer_spec.rb +0 -183
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -365
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -181
- data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
- data/spec/extensions/def_dataset_method_spec.rb +0 -100
- data/spec/extensions/defaults_setter_spec.rb +0 -141
- data/spec/extensions/delay_add_association_spec.rb +0 -73
- data/spec/extensions/dirty_spec.rb +0 -189
- data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
- data/spec/extensions/eager_each_spec.rb +0 -62
- 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 -74
- data/spec/extensions/finder_spec.rb +0 -260
- data/spec/extensions/force_encoding_spec.rb +0 -126
- data/spec/extensions/freeze_datasets_spec.rb +0 -31
- data/spec/extensions/graph_each_spec.rb +0 -113
- data/spec/extensions/hook_class_methods_spec.rb +0 -380
- data/spec/extensions/identifier_mangling_spec.rb +0 -201
- data/spec/extensions/implicit_subquery_spec.rb +0 -58
- data/spec/extensions/index_caching_spec.rb +0 -66
- data/spec/extensions/inflector_spec.rb +0 -183
- data/spec/extensions/input_transformer_spec.rb +0 -69
- data/spec/extensions/insert_returning_select_spec.rb +0 -72
- data/spec/extensions/instance_filters_spec.rb +0 -79
- data/spec/extensions/instance_hooks_spec.rb +0 -246
- data/spec/extensions/integer64_spec.rb +0 -22
- data/spec/extensions/inverted_subsets_spec.rb +0 -33
- data/spec/extensions/json_serializer_spec.rb +0 -336
- data/spec/extensions/lazy_attributes_spec.rb +0 -183
- data/spec/extensions/list_spec.rb +0 -275
- data/spec/extensions/looser_typecasting_spec.rb +0 -43
- data/spec/extensions/many_through_many_spec.rb +0 -2177
- data/spec/extensions/migration_spec.rb +0 -840
- data/spec/extensions/modification_detection_spec.rb +0 -93
- data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
- data/spec/extensions/named_timezones_spec.rb +0 -109
- data/spec/extensions/nested_attributes_spec.rb +0 -703
- data/spec/extensions/null_dataset_spec.rb +0 -85
- data/spec/extensions/optimistic_locking_spec.rb +0 -127
- data/spec/extensions/pagination_spec.rb +0 -116
- data/spec/extensions/pg_array_associations_spec.rb +0 -802
- data/spec/extensions/pg_array_ops_spec.rb +0 -144
- data/spec/extensions/pg_array_spec.rb +0 -398
- data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -165
- data/spec/extensions/pg_enum_spec.rb +0 -113
- data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
- data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
- data/spec/extensions/pg_hstore_spec.rb +0 -219
- data/spec/extensions/pg_inet_ops_spec.rb +0 -102
- data/spec/extensions/pg_inet_spec.rb +0 -72
- data/spec/extensions/pg_interval_spec.rb +0 -103
- data/spec/extensions/pg_json_ops_spec.rb +0 -289
- data/spec/extensions/pg_json_spec.rb +0 -262
- data/spec/extensions/pg_loose_count_spec.rb +0 -23
- data/spec/extensions/pg_range_ops_spec.rb +0 -60
- data/spec/extensions/pg_range_spec.rb +0 -487
- data/spec/extensions/pg_row_ops_spec.rb +0 -61
- data/spec/extensions/pg_row_plugin_spec.rb +0 -60
- data/spec/extensions/pg_row_spec.rb +0 -363
- data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
- data/spec/extensions/pg_timestamptz_spec.rb +0 -17
- data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
- data/spec/extensions/prepared_statements_spec.rb +0 -182
- data/spec/extensions/pretty_table_spec.rb +0 -123
- data/spec/extensions/query_spec.rb +0 -94
- data/spec/extensions/rcte_tree_spec.rb +0 -381
- data/spec/extensions/round_timestamps_spec.rb +0 -39
- data/spec/extensions/s_spec.rb +0 -60
- data/spec/extensions/schema_caching_spec.rb +0 -64
- data/spec/extensions/schema_dumper_spec.rb +0 -868
- data/spec/extensions/select_remove_spec.rb +0 -38
- data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
- data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
- data/spec/extensions/serialization_spec.rb +0 -365
- data/spec/extensions/server_block_spec.rb +0 -97
- data/spec/extensions/server_logging_spec.rb +0 -45
- data/spec/extensions/sharding_spec.rb +0 -189
- data/spec/extensions/shared_caching_spec.rb +0 -151
- data/spec/extensions/single_table_inheritance_spec.rb +0 -347
- data/spec/extensions/singular_table_names_spec.rb +0 -22
- data/spec/extensions/skip_create_refresh_spec.rb +0 -18
- data/spec/extensions/spec_helper.rb +0 -61
- data/spec/extensions/split_array_nil_spec.rb +0 -24
- data/spec/extensions/split_values_spec.rb +0 -57
- data/spec/extensions/sql_comments_spec.rb +0 -33
- data/spec/extensions/sql_expr_spec.rb +0 -59
- data/spec/extensions/static_cache_spec.rb +0 -410
- data/spec/extensions/string_agg_spec.rb +0 -90
- 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 -79
- data/spec/extensions/subset_conditions_spec.rb +0 -38
- data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
- data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
- data/spec/extensions/synchronize_sql_spec.rb +0 -124
- data/spec/extensions/table_select_spec.rb +0 -83
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -141
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- data/spec/extensions/timestamps_spec.rb +0 -209
- data/spec/extensions/to_dot_spec.rb +0 -153
- data/spec/extensions/touch_spec.rb +0 -226
- data/spec/extensions/tree_spec.rb +0 -284
- data/spec/extensions/typecast_on_load_spec.rb +0 -86
- data/spec/extensions/unlimited_update_spec.rb +0 -21
- data/spec/extensions/update_or_create_spec.rb +0 -83
- data/spec/extensions/update_primary_key_spec.rb +0 -105
- data/spec/extensions/update_refresh_spec.rb +0 -59
- data/spec/extensions/uuid_spec.rb +0 -101
- data/spec/extensions/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1040
- data/spec/extensions/validation_contexts_spec.rb +0 -31
- data/spec/extensions/validation_helpers_spec.rb +0 -525
- data/spec/extensions/whitelist_security_spec.rb +0 -157
- data/spec/extensions/xml_serializer_spec.rb +0 -213
- data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
- data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
- data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
- data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
- data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/double_migration/001_create_sessions.rb +0 -9
- data/spec/files/double_migration/002_create_nodes.rb +0 -19
- data/spec/files/double_migration/003_3_create_users.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
- data/spec/files/empty_migration/001_create_sessions.rb +0 -9
- data/spec/files/empty_migration/002_create_nodes.rb +0 -0
- data/spec/files/empty_migration/003_3_create_users.rb +0 -4
- data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
- data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
- data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
- data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
- data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/reversible_migrations/001_reversible.rb +0 -5
- data/spec/files/reversible_migrations/002_reversible.rb +0 -5
- data/spec/files/reversible_migrations/003_reversible.rb +0 -5
- data/spec/files/reversible_migrations/004_reversible.rb +0 -5
- data/spec/files/reversible_migrations/005_reversible.rb +0 -10
- data/spec/files/reversible_migrations/006_reversible.rb +0 -10
- data/spec/files/reversible_migrations/007_reversible.rb +0 -10
- data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
- data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
- data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
- data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
- data/spec/guards_helper.rb +0 -58
- data/spec/integration/associations_test.rb +0 -2513
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1880
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -262
- data/spec/integration/model_test.rb +0 -203
- data/spec/integration/plugin_test.rb +0 -2302
- data/spec/integration/prepared_statement_test.rb +0 -398
- data/spec/integration/schema_test.rb +0 -869
- data/spec/integration/spec_helper.rb +0 -64
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -354
- data/spec/integration/type_test.rb +0 -127
- data/spec/model/association_reflection_spec.rb +0 -803
- data/spec/model/associations_spec.rb +0 -4538
- data/spec/model/base_spec.rb +0 -817
- data/spec/model/class_dataset_methods_spec.rb +0 -146
- data/spec/model/dataset_methods_spec.rb +0 -198
- data/spec/model/eager_loading_spec.rb +0 -2262
- data/spec/model/hooks_spec.rb +0 -370
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -953
- data/spec/model/plugins_spec.rb +0 -318
- data/spec/model/record_spec.rb +0 -2107
- data/spec/model/spec_helper.rb +0 -45
- data/spec/model/validations_spec.rb +0 -193
- data/spec/model_no_assoc_spec.rb +0 -1
- data/spec/model_spec.rb +0 -1
- data/spec/plugin_spec.rb +0 -1
- data/spec/sequel_coverage.rb +0 -15
- data/spec/sequel_warning.rb +0 -4
- data/spec/spec_config.rb +0 -12
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# frozen-string-literal: true
|
|
2
2
|
|
|
3
|
-
Sequel::JDBC.load_driver('com.mysql.jdbc.Driver', :MySQL)
|
|
4
|
-
require_relative '../shared/mysql'
|
|
5
|
-
|
|
6
3
|
module Sequel
|
|
7
4
|
module JDBC
|
|
5
|
+
driver = Sequel::JDBC.load_driver(%w'com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver', :MySQL)
|
|
6
|
+
require_relative '../shared/mysql'
|
|
7
|
+
|
|
8
8
|
Sequel.synchronize do
|
|
9
9
|
DATABASE_SETUP[:mysql] = proc do |db|
|
|
10
10
|
db.extend(Sequel::JDBC::MySQL::DatabaseMethods)
|
|
11
11
|
db.extend_datasets Sequel::MySQL::DatasetMethods
|
|
12
|
-
|
|
12
|
+
driver
|
|
13
13
|
end
|
|
14
14
|
end
|
|
15
15
|
|
|
@@ -54,12 +54,12 @@ module Sequel
|
|
|
54
54
|
# MySQL 5.1.12 JDBC adapter requires generated keys
|
|
55
55
|
# and previous versions don't mind.
|
|
56
56
|
def execute_statement_insert(stmt, sql)
|
|
57
|
-
stmt.executeUpdate(sql, JavaSQL::Statement
|
|
57
|
+
stmt.executeUpdate(sql, JavaSQL::Statement::RETURN_GENERATED_KEYS)
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
# Return generated keys for insert statements.
|
|
61
61
|
def prepare_jdbc_statement(conn, sql, opts)
|
|
62
|
-
opts[:type] == :insert ? conn.prepareStatement(sql, JavaSQL::Statement
|
|
62
|
+
opts[:type] == :insert ? conn.prepareStatement(sql, JavaSQL::Statement::RETURN_GENERATED_KEYS) : super
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
# Convert tinyint(1) type to boolean
|
|
@@ -16,19 +16,20 @@ module Sequel
|
|
|
16
16
|
|
|
17
17
|
module Oracle
|
|
18
18
|
JAVA_BIG_DECIMAL_CONSTRUCTOR = java.math.BigDecimal.java_class.constructor(Java::long).method(:new_instance)
|
|
19
|
-
|
|
20
|
-
def
|
|
19
|
+
ORACLE_DECIMAL = Object.new
|
|
20
|
+
def ORACLE_DECIMAL.call(r, i)
|
|
21
21
|
if v = r.getBigDecimal(i)
|
|
22
22
|
i = v.long_value
|
|
23
23
|
if v == JAVA_BIG_DECIMAL_CONSTRUCTOR.call(i)
|
|
24
24
|
i
|
|
25
25
|
else
|
|
26
|
-
BigDecimal
|
|
26
|
+
::Kernel::BigDecimal(v.to_string)
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
ORACLE_CLOB = Object.new
|
|
32
|
+
def ORACLE_CLOB.call(r, i)
|
|
32
33
|
return unless clob = r.getClob(i)
|
|
33
34
|
str = clob.getSubString(1, clob.length)
|
|
34
35
|
clob.freeTemporary if clob.isTemporary
|
|
@@ -110,8 +111,8 @@ module Sequel
|
|
|
110
111
|
|
|
111
112
|
def setup_type_convertor_map
|
|
112
113
|
super
|
|
113
|
-
@type_convertor_map[:OracleDecimal] =
|
|
114
|
-
@type_convertor_map[:OracleClob] =
|
|
114
|
+
@type_convertor_map[:OracleDecimal] = ORACLE_DECIMAL
|
|
115
|
+
@type_convertor_map[:OracleClob] = ORACLE_CLOB
|
|
115
116
|
end
|
|
116
117
|
end
|
|
117
118
|
|
|
@@ -14,24 +14,6 @@ module Sequel
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
module Postgres
|
|
17
|
-
# Return PostgreSQL array types as ruby Arrays instead of
|
|
18
|
-
# JDBC PostgreSQL driver-specific array type. Only used if the
|
|
19
|
-
# database does not have a conversion proc for the type.
|
|
20
|
-
def self.RubyPGArray(r, i)
|
|
21
|
-
if v = r.getArray(i)
|
|
22
|
-
v.array.to_ary
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Return PostgreSQL hstore types as ruby Hashes instead of
|
|
27
|
-
# Java HashMaps. Only used if the database does not have a
|
|
28
|
-
# conversion proc for the type.
|
|
29
|
-
def self.RubyPGHstore(r, i)
|
|
30
|
-
if v = r.getObject(i)
|
|
31
|
-
v.to_hash
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
17
|
module DatabaseMethods
|
|
36
18
|
include Sequel::Postgres::DatabaseMethods
|
|
37
19
|
|
|
@@ -135,11 +117,6 @@ module Sequel
|
|
|
135
117
|
|
|
136
118
|
private
|
|
137
119
|
|
|
138
|
-
DATABASE_ERROR_CLASSES = [NativeException].freeze
|
|
139
|
-
def database_error_classes
|
|
140
|
-
DATABASE_ERROR_CLASSES
|
|
141
|
-
end
|
|
142
|
-
|
|
143
120
|
def disconnect_error?(exception, opts)
|
|
144
121
|
super || exception.message =~ /\A(This connection has been closed\.|FATAL: terminating connection due to administrator command|An I\/O error occurred while sending to the backend\.)\z/
|
|
145
122
|
end
|
|
@@ -203,6 +180,12 @@ module Sequel
|
|
|
203
180
|
|
|
204
181
|
class Dataset < JDBC::Dataset
|
|
205
182
|
include Sequel::Postgres::DatasetMethods
|
|
183
|
+
|
|
184
|
+
# Warn when calling as the fetch size is ignored by the JDBC adapter currently.
|
|
185
|
+
def with_fetch_size(size)
|
|
186
|
+
warn("Sequel::JDBC::Postgres::Dataset#with_fetch_size does not currently have an effect.", :uplevel=>1)
|
|
187
|
+
super
|
|
188
|
+
end
|
|
206
189
|
|
|
207
190
|
private
|
|
208
191
|
|
|
@@ -218,9 +201,17 @@ module Sequel
|
|
|
218
201
|
|
|
219
202
|
STRING_TYPE = Java::JavaSQL::Types::VARCHAR
|
|
220
203
|
ARRAY_TYPE = Java::JavaSQL::Types::ARRAY
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
204
|
+
PG_SPECIFIC_TYPES = [Java::JavaSQL::Types::ARRAY, Java::JavaSQL::Types::OTHER, Java::JavaSQL::Types::STRUCT, Java::JavaSQL::Types::TIME_WITH_TIMEZONE, Java::JavaSQL::Types::TIME].freeze
|
|
205
|
+
|
|
206
|
+
# Return PostgreSQL hstore types as ruby Hashes instead of
|
|
207
|
+
# Java HashMaps. Only used if the database does not have a
|
|
208
|
+
# conversion proc for the type.
|
|
209
|
+
HSTORE_METHOD = Object.new
|
|
210
|
+
def HSTORE_METHOD.call(r, i)
|
|
211
|
+
if v = r.getObject(i)
|
|
212
|
+
v.to_hash
|
|
213
|
+
end
|
|
214
|
+
end
|
|
224
215
|
|
|
225
216
|
def type_convertor(map, meta, type, i)
|
|
226
217
|
case type
|
|
@@ -228,8 +219,6 @@ module Sequel
|
|
|
228
219
|
oid = meta.getField(i).getOID
|
|
229
220
|
if pr = db.oid_convertor_proc(oid)
|
|
230
221
|
pr
|
|
231
|
-
elsif type == ARRAY_TYPE
|
|
232
|
-
ARRAY_METHOD
|
|
233
222
|
elsif oid == 2950 # UUID
|
|
234
223
|
map[STRING_TYPE]
|
|
235
224
|
elsif meta.getPGType(i) == 'hstore'
|
|
@@ -30,11 +30,6 @@ module Sequel
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
module SqlAnywhere
|
|
33
|
-
def self.SqlAnywhereBoolean(r, i)
|
|
34
|
-
v = r.getShort(i)
|
|
35
|
-
v != 0 unless r.wasNull
|
|
36
|
-
end
|
|
37
|
-
|
|
38
33
|
module DatabaseMethods
|
|
39
34
|
include Sequel::SqlAnywhere::DatabaseMethods
|
|
40
35
|
include Sequel::JDBC::Transactions
|
|
@@ -58,7 +53,11 @@ module Sequel
|
|
|
58
53
|
private
|
|
59
54
|
|
|
60
55
|
SMALLINT_TYPE = Java::JavaSQL::Types::SMALLINT
|
|
61
|
-
BOOLEAN_METHOD =
|
|
56
|
+
BOOLEAN_METHOD = Object.new
|
|
57
|
+
def BOOLEAN_METHOD.call(r, i)
|
|
58
|
+
v = r.getShort(i)
|
|
59
|
+
v != 0 unless r.wasNull
|
|
60
|
+
end
|
|
62
61
|
|
|
63
62
|
def type_convertor(map, meta, type, i)
|
|
64
63
|
if convert_smallint_to_bool && type == SMALLINT_TYPE
|
|
@@ -15,6 +15,24 @@ module Sequel
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
module SQLite
|
|
18
|
+
module ForeignKeyListPragmaConvertorFix
|
|
19
|
+
# For the use of the convertor for String, working around a bug
|
|
20
|
+
# in jdbc-sqlite3 that reports fields are of type
|
|
21
|
+
# java.sql.types.NUMERIC even though they contain non-numeric data.
|
|
22
|
+
def type_convertor(_, _, _, i)
|
|
23
|
+
i > 2 ? TypeConvertor::CONVERTORS[:String] : super
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
module TableInfoPragmaConvertorFix
|
|
28
|
+
# For the use of the convertor for String, working around a bug
|
|
29
|
+
# in jdbc-sqlite3 that reports dflt_value field is of type
|
|
30
|
+
# java.sql.types.NUMERIC even though they contain string data.
|
|
31
|
+
def type_convertor(_, _, _, i)
|
|
32
|
+
i == 5 ? TypeConvertor::CONVERTORS[:String] : super
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
18
36
|
module DatabaseMethods
|
|
19
37
|
include Sequel::SQLite::DatabaseMethods
|
|
20
38
|
|
|
@@ -37,6 +55,17 @@ module Sequel
|
|
|
37
55
|
end
|
|
38
56
|
|
|
39
57
|
private
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# Add workaround for bug when running foreign_key_list pragma
|
|
61
|
+
def _foreign_key_list_ds(_)
|
|
62
|
+
super.with_extend(ForeignKeyListPragmaConvertorFix)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Add workaround for bug when running table_info pragma
|
|
66
|
+
def _parse_pragma_ds(_, _)
|
|
67
|
+
super.with_extend(TableInfoPragmaConvertorFix)
|
|
68
|
+
end
|
|
40
69
|
|
|
41
70
|
DATABASE_ERROR_REGEXPS = Sequel::SQLite::DatabaseMethods::DATABASE_ERROR_REGEXPS.merge(/Abort due to constraint violation/ => ConstraintViolation).freeze
|
|
42
71
|
def database_error_regexps
|
|
@@ -78,12 +107,14 @@ module Sequel
|
|
|
78
107
|
super
|
|
79
108
|
@type_convertor_map[Java::JavaSQL::Types::INTEGER] = @type_convertor_map[Java::JavaSQL::Types::BIGINT]
|
|
80
109
|
@basic_type_convertor_map[Java::JavaSQL::Types::INTEGER] = @basic_type_convertor_map[Java::JavaSQL::Types::BIGINT]
|
|
81
|
-
@type_convertor_map[Java::JavaSQL::Types::DATE] =
|
|
110
|
+
x = @type_convertor_map[Java::JavaSQL::Types::DATE] = Object.new
|
|
111
|
+
def x.call(r, i)
|
|
82
112
|
if v = r.getString(i)
|
|
83
113
|
Sequel.string_to_date(v)
|
|
84
114
|
end
|
|
85
115
|
end
|
|
86
|
-
@type_convertor_map[Java::JavaSQL::Types::BLOB] =
|
|
116
|
+
x = @type_convertor_map[Java::JavaSQL::Types::BLOB] = Object.new
|
|
117
|
+
def x.call(r, i)
|
|
87
118
|
if v = r.getBytes(i)
|
|
88
119
|
Sequel::SQL::Blob.new(String.from_java_bytes(v))
|
|
89
120
|
elsif !r.wasNull
|
|
@@ -15,7 +15,8 @@ module Sequel
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
module SQLServer
|
|
18
|
-
|
|
18
|
+
MSSQL_RUBY_TIME = Object.new
|
|
19
|
+
def MSSQL_RUBY_TIME.call(r, i)
|
|
19
20
|
# MSSQL-Server TIME should be fetched as string to keep the precision intact, see:
|
|
20
21
|
# https://docs.microsoft.com/en-us/sql/t-sql/data-types/time-transact-sql#a-namebackwardcompatibilityfordownlevelclientsa-backward-compatibility-for-down-level-clients
|
|
21
22
|
if v = r.getString(i)
|
|
@@ -29,7 +30,7 @@ module Sequel
|
|
|
29
30
|
def setup_type_convertor_map
|
|
30
31
|
super
|
|
31
32
|
map = @type_convertor_map
|
|
32
|
-
map[Java::JavaSQL::Types::TIME] =
|
|
33
|
+
map[Java::JavaSQL::Types::TIME] = MSSQL_RUBY_TIME
|
|
33
34
|
|
|
34
35
|
# Work around constant lazy loading in some drivers
|
|
35
36
|
begin
|
|
@@ -75,7 +76,7 @@ module Sequel
|
|
|
75
76
|
private
|
|
76
77
|
|
|
77
78
|
def _metadata_dataset
|
|
78
|
-
super.
|
|
79
|
+
super.with_extend(MetadataDatasetMethods)
|
|
79
80
|
end
|
|
80
81
|
|
|
81
82
|
def disconnect_error?(exception, opts)
|
|
@@ -43,17 +43,15 @@ module Sequel
|
|
|
43
43
|
true
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
+
# JDBC savepoint object for the current savepoint for the connection.
|
|
47
|
+
def savepoint_obj(conn)
|
|
48
|
+
_trans(conn)[:savepoints][-1][:obj]
|
|
49
|
+
end
|
|
50
|
+
|
|
46
51
|
# Use JDBC connection's setAutoCommit to false to start transactions
|
|
47
52
|
def begin_transaction(conn, opts=OPTS)
|
|
48
|
-
if
|
|
49
|
-
|
|
50
|
-
if sps = th[:savepoint_objs]
|
|
51
|
-
sps << log_connection_yield('Transaction.savepoint', conn){conn.set_savepoint}
|
|
52
|
-
else
|
|
53
|
-
log_connection_yield('Transaction.begin', conn){conn.setAutoCommit(false)}
|
|
54
|
-
th[:savepoint_objs] = []
|
|
55
|
-
set_transaction_isolation(conn, opts)
|
|
56
|
-
end
|
|
53
|
+
if in_savepoint?(conn)
|
|
54
|
+
_trans(conn)[:savepoints][-1][:obj] = log_connection_yield('Transaction.savepoint', conn){conn.set_savepoint}
|
|
57
55
|
else
|
|
58
56
|
log_connection_yield('Transaction.begin', conn){conn.setAutoCommit(false)}
|
|
59
57
|
set_transaction_isolation(conn, opts)
|
|
@@ -62,12 +60,9 @@ module Sequel
|
|
|
62
60
|
|
|
63
61
|
# Use JDBC connection's commit method to commit transactions
|
|
64
62
|
def commit_transaction(conn, opts=OPTS)
|
|
65
|
-
if
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
log_connection_yield('Transaction.commit', conn){conn.commit}
|
|
69
|
-
elsif supports_releasing_savepoints?
|
|
70
|
-
log_connection_yield('Transaction.release_savepoint', conn){supports_releasing_savepoints? ? conn.release_savepoint(sps.last) : sps.last}
|
|
63
|
+
if in_savepoint?(conn)
|
|
64
|
+
if supports_releasing_savepoints?
|
|
65
|
+
log_connection_yield('Transaction.release_savepoint', conn){conn.release_savepoint(savepoint_obj(conn))}
|
|
71
66
|
end
|
|
72
67
|
else
|
|
73
68
|
log_connection_yield('Transaction.commit', conn){conn.commit}
|
|
@@ -77,13 +72,9 @@ module Sequel
|
|
|
77
72
|
# Use JDBC connection's setAutoCommit to true to enable non-transactional behavior
|
|
78
73
|
def remove_transaction(conn, committed)
|
|
79
74
|
if jdbc_level = _trans(conn)[:original_jdbc_isolation_level]
|
|
80
|
-
conn.setTransactionIsolation(jdbc_level)
|
|
75
|
+
log_connection_yield("Transaction.restore_isolation_level", conn){conn.setTransactionIsolation(jdbc_level)}
|
|
81
76
|
end
|
|
82
|
-
|
|
83
|
-
sps = _trans(conn)[:savepoint_objs]
|
|
84
|
-
conn.setAutoCommit(true) if sps.empty?
|
|
85
|
-
sps.pop
|
|
86
|
-
else
|
|
77
|
+
unless in_savepoint?(conn)
|
|
87
78
|
conn.setAutoCommit(true)
|
|
88
79
|
end
|
|
89
80
|
ensure
|
|
@@ -92,13 +83,8 @@ module Sequel
|
|
|
92
83
|
|
|
93
84
|
# Use JDBC connection's rollback method to rollback transactions
|
|
94
85
|
def rollback_transaction(conn, opts=OPTS)
|
|
95
|
-
if
|
|
96
|
-
|
|
97
|
-
if sps.empty?
|
|
98
|
-
log_connection_yield('Transaction.rollback', conn){conn.rollback}
|
|
99
|
-
else
|
|
100
|
-
log_connection_yield('Transaction.rollback_savepoint', conn){conn.rollback(sps.last)}
|
|
101
|
-
end
|
|
86
|
+
if in_savepoint?(conn)
|
|
87
|
+
log_connection_yield('Transaction.rollback_savepoint', conn){conn.rollback(savepoint_obj(conn))}
|
|
102
88
|
else
|
|
103
89
|
log_connection_yield('Transaction.rollback', conn){conn.rollback}
|
|
104
90
|
end
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
# frozen-string-literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
require "mysqlplus"
|
|
5
|
-
rescue LoadError
|
|
6
|
-
require 'mysql'
|
|
7
|
-
end
|
|
3
|
+
require 'mysql'
|
|
8
4
|
raise(LoadError, "require 'mysql' did not define Mysql::CLIENT_MULTI_RESULTS!\n You are probably using the pure ruby mysql.rb driver,\n which Sequel does not support. You need to install\n the C based adapter, and make sure that the mysql.so\n file is loaded instead of the mysql.rb file.\n") unless defined?(Mysql::CLIENT_MULTI_RESULTS)
|
|
9
5
|
|
|
10
6
|
require_relative 'utils/mysql_mysql2'
|
|
@@ -12,19 +8,22 @@ require_relative 'utils/mysql_prepared_statements'
|
|
|
12
8
|
|
|
13
9
|
module Sequel
|
|
14
10
|
module MySQL
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
boolean = Object.new
|
|
12
|
+
def boolean.call(s) s.to_i != 0 end
|
|
13
|
+
TYPE_TRANSLATOR_BOOLEAN = boolean.freeze
|
|
14
|
+
integer = Object.new
|
|
15
|
+
def integer.call(s) s.to_i end
|
|
16
|
+
TYPE_TRANSLATOR_INTEGER = integer.freeze
|
|
17
|
+
float = Object.new
|
|
18
|
+
def float.call(s) s.to_f end
|
|
20
19
|
|
|
21
20
|
# Hash with integer keys and callable values for converting MySQL types.
|
|
22
21
|
MYSQL_TYPES = {}
|
|
23
22
|
{
|
|
24
|
-
[0, 246] => ::
|
|
25
|
-
[2, 3, 8, 9, 13, 247, 248] =>
|
|
26
|
-
[4, 5] =>
|
|
27
|
-
[249, 250, 251, 252] => ::Sequel::SQL::Blob
|
|
23
|
+
[0, 246] => ::Kernel.method(:BigDecimal),
|
|
24
|
+
[2, 3, 8, 9, 13, 247, 248] => integer,
|
|
25
|
+
[4, 5] => float,
|
|
26
|
+
[249, 250, 251, 252] => ::Sequel::SQL::Blob
|
|
28
27
|
}.each do |k,v|
|
|
29
28
|
k.each{|n| MYSQL_TYPES[n] = v}
|
|
30
29
|
end
|
|
@@ -135,7 +134,7 @@ module Sequel
|
|
|
135
134
|
# Modify the type translator used for the tinyint type based
|
|
136
135
|
# on the value given.
|
|
137
136
|
def convert_tinyint_to_bool=(v)
|
|
138
|
-
@conversion_procs[1] =
|
|
137
|
+
@conversion_procs[1] = v ? TYPE_TRANSLATOR_BOOLEAN : TYPE_TRANSLATOR_INTEGER
|
|
139
138
|
@convert_tinyint_to_bool = v
|
|
140
139
|
end
|
|
141
140
|
|
|
@@ -36,7 +36,6 @@ module Sequel
|
|
|
36
36
|
# options such as :local_infile.
|
|
37
37
|
def connect(server)
|
|
38
38
|
opts = server_opts(server)
|
|
39
|
-
opts[:host] ||= 'localhost'
|
|
40
39
|
opts[:username] ||= opts.delete(:user)
|
|
41
40
|
opts[:flags] ||= 0
|
|
42
41
|
opts[:flags] |= ::Mysql2::Client::FOUND_ROWS if ::Mysql2::Client.const_defined?(:FOUND_ROWS)
|
|
@@ -78,8 +77,8 @@ module Sequel
|
|
|
78
77
|
end
|
|
79
78
|
|
|
80
79
|
# Return the version of the MySQL server to which we are connecting.
|
|
81
|
-
def server_version(
|
|
82
|
-
@server_version ||= (
|
|
80
|
+
def server_version(_server=nil)
|
|
81
|
+
@server_version ||= super()
|
|
83
82
|
end
|
|
84
83
|
|
|
85
84
|
private
|
|
@@ -245,6 +244,9 @@ module Sequel
|
|
|
245
244
|
# it hasn't been disabled.
|
|
246
245
|
def paged_each(opts=OPTS, &block)
|
|
247
246
|
if STREAMING_SUPPORTED && opts[:stream] != false
|
|
247
|
+
unless block_given?
|
|
248
|
+
return enum_for(:paged_each, opts)
|
|
249
|
+
end
|
|
248
250
|
stream.each(&block)
|
|
249
251
|
else
|
|
250
252
|
super
|
data/lib/sequel/adapters/odbc.rb
CHANGED
|
@@ -92,12 +92,10 @@ module Sequel
|
|
|
92
92
|
cols = s.columns(true).map{|c| [output_identifier(c.name), c.type, i+=1]}
|
|
93
93
|
columns = cols.map{|c| c[0]}
|
|
94
94
|
self.columns = columns
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
yield hash
|
|
100
|
-
end
|
|
95
|
+
s.each do |row|
|
|
96
|
+
hash = {}
|
|
97
|
+
cols.each{|n,t,j| hash[n] = convert_odbc_value(row[j], t)}
|
|
98
|
+
yield hash
|
|
101
99
|
end
|
|
102
100
|
end
|
|
103
101
|
self
|
|
@@ -14,7 +14,8 @@ module Sequel
|
|
|
14
14
|
# ORA-02396: exceeded maximum idle time, please connect again
|
|
15
15
|
# ORA-03113: end-of-file on communication channel
|
|
16
16
|
# ORA-03114: not connected to ORACLE
|
|
17
|
-
|
|
17
|
+
# ORA-03135: connection lost contact
|
|
18
|
+
CONNECTION_ERROR_CODES = [ 28, 1012, 2396, 3113, 3114, 3135 ].freeze
|
|
18
19
|
|
|
19
20
|
ORACLE_TYPES = {
|
|
20
21
|
:blob=>lambda{|b| Sequel::SQL::Blob.new(b.read)},
|
|
@@ -115,7 +116,7 @@ module Sequel
|
|
|
115
116
|
|
|
116
117
|
PS_TYPES = {'string'=>String, 'integer'=>Integer, 'float'=>Float,
|
|
117
118
|
'decimal'=>Float, 'date'=>Time, 'datetime'=>Time,
|
|
118
|
-
'time'=>Time, 'boolean'=>String, 'blob'=>OCI8::BLOB}.freeze
|
|
119
|
+
'time'=>Time, 'boolean'=>String, 'blob'=>OCI8::BLOB, 'clob'=>OCI8::CLOB}.freeze
|
|
119
120
|
def cursor_bind_params(conn, cursor, args)
|
|
120
121
|
i = 0
|
|
121
122
|
args.map do |arg, type|
|
|
@@ -129,6 +130,10 @@ module Sequel
|
|
|
129
130
|
arg = arg.to_f
|
|
130
131
|
when ::Sequel::SQL::Blob
|
|
131
132
|
arg = ::OCI8::BLOB.new(conn, arg)
|
|
133
|
+
when String
|
|
134
|
+
if type == 'clob'
|
|
135
|
+
arg = ::OCI8::CLOB.new(conn, arg)
|
|
136
|
+
end
|
|
132
137
|
end
|
|
133
138
|
cursor.bind_param(i, arg, PS_TYPES[type] || arg.class)
|
|
134
139
|
arg
|
|
@@ -347,11 +352,6 @@ module Sequel
|
|
|
347
352
|
i = prepared_args.length
|
|
348
353
|
LiteralString.new(":#{i}")
|
|
349
354
|
end
|
|
350
|
-
|
|
351
|
-
# Always assume a prepared argument.
|
|
352
|
-
def prepared_arg?(k)
|
|
353
|
-
true
|
|
354
|
-
end
|
|
355
355
|
end
|
|
356
356
|
|
|
357
357
|
BindArgumentMethods = prepared_statements_module(:bind, ArgumentMapper)
|