sequel 4.49.0 → 5.0.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 +70 -0
- data/README.rdoc +195 -136
- data/Rakefile +26 -42
- data/bin/sequel +3 -5
- data/doc/advanced_associations.rdoc +86 -163
- data/doc/association_basics.rdoc +197 -274
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +66 -43
- data/doc/code_order.rdoc +1 -8
- data/doc/core_extensions.rdoc +81 -56
- data/doc/dataset_basics.rdoc +8 -17
- data/doc/dataset_filtering.rdoc +81 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/mass_assignment.rdoc +73 -30
- data/doc/migration.rdoc +19 -36
- data/doc/model_dataset_method_design.rdoc +14 -17
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +10 -10
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +52 -70
- data/doc/opening_databases.rdoc +39 -32
- data/doc/postgresql.rdoc +48 -38
- data/doc/prepared_statements.rdoc +27 -22
- data/doc/querying.rdoc +173 -150
- data/doc/reflection.rdoc +5 -6
- data/doc/release_notes/5.0.0.txt +159 -0
- data/doc/schema_modification.rdoc +63 -60
- data/doc/security.rdoc +97 -88
- data/doc/sharding.rdoc +43 -30
- data/doc/sql.rdoc +53 -65
- data/doc/testing.rdoc +3 -5
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +18 -17
- data/doc/validations.rdoc +48 -45
- data/doc/virtual_rows.rdoc +87 -115
- data/lib/sequel.rb +1 -1
- data/lib/sequel/adapters/ado.rb +9 -25
- data/lib/sequel/adapters/ado/access.rb +7 -13
- data/lib/sequel/adapters/ado/mssql.rb +2 -9
- data/lib/sequel/adapters/amalgalite.rb +3 -18
- data/lib/sequel/adapters/ibmdb.rb +9 -45
- data/lib/sequel/adapters/jdbc.rb +13 -73
- data/lib/sequel/adapters/jdbc/db2.rb +8 -37
- data/lib/sequel/adapters/jdbc/derby.rb +4 -50
- data/lib/sequel/adapters/jdbc/h2.rb +4 -25
- data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -26
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
- data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
- data/lib/sequel/adapters/jdbc/mysql.rb +1 -15
- data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
- data/lib/sequel/adapters/jdbc/postgresql.rb +2 -31
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
- data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
- data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
- data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
- data/lib/sequel/adapters/mock.rb +4 -30
- data/lib/sequel/adapters/mysql.rb +7 -44
- data/lib/sequel/adapters/mysql2.rb +5 -23
- data/lib/sequel/adapters/odbc.rb +0 -19
- data/lib/sequel/adapters/odbc/db2.rb +1 -1
- data/lib/sequel/adapters/odbc/mssql.rb +4 -12
- data/lib/sequel/adapters/odbc/oracle.rb +1 -1
- data/lib/sequel/adapters/oracle.rb +7 -13
- data/lib/sequel/adapters/postgres.rb +13 -57
- data/lib/sequel/adapters/postgresql.rb +1 -1
- data/lib/sequel/adapters/shared/access.rb +11 -51
- data/lib/sequel/adapters/shared/db2.rb +3 -61
- data/lib/sequel/adapters/shared/mssql.rb +21 -157
- data/lib/sequel/adapters/shared/mysql.rb +23 -224
- data/lib/sequel/adapters/shared/oracle.rb +13 -41
- data/lib/sequel/adapters/shared/postgres.rb +44 -259
- data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
- data/lib/sequel/adapters/shared/sqlite.rb +12 -101
- data/lib/sequel/adapters/sqlanywhere.rb +4 -23
- data/lib/sequel/adapters/sqlite.rb +2 -19
- data/lib/sequel/adapters/tinytds.rb +5 -15
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -4
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
- data/lib/sequel/adapters/utils/replace.rb +0 -5
- data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
- data/lib/sequel/ast_transformer.rb +3 -94
- data/lib/sequel/connection_pool.rb +26 -28
- data/lib/sequel/connection_pool/sharded_single.rb +1 -4
- data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
- data/lib/sequel/connection_pool/single.rb +0 -2
- data/lib/sequel/connection_pool/threaded.rb +94 -110
- data/lib/sequel/core.rb +42 -101
- data/lib/sequel/database.rb +12 -2
- data/lib/sequel/database/connecting.rb +23 -60
- data/lib/sequel/database/dataset.rb +6 -9
- data/lib/sequel/database/dataset_defaults.rb +4 -48
- data/lib/sequel/database/features.rb +5 -4
- data/lib/sequel/database/logging.rb +2 -9
- data/lib/sequel/database/misc.rb +23 -55
- data/lib/sequel/database/query.rb +8 -13
- data/lib/sequel/database/schema_generator.rb +89 -64
- data/lib/sequel/database/schema_methods.rb +61 -79
- data/lib/sequel/database/transactions.rb +4 -24
- data/lib/sequel/dataset.rb +18 -10
- data/lib/sequel/dataset/actions.rb +53 -107
- data/lib/sequel/dataset/dataset_module.rb +3 -15
- data/lib/sequel/dataset/features.rb +30 -30
- data/lib/sequel/dataset/graph.rb +40 -49
- data/lib/sequel/dataset/misc.rb +12 -37
- data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
- data/lib/sequel/dataset/prepared_statements.rb +23 -51
- data/lib/sequel/dataset/query.rb +71 -155
- data/lib/sequel/dataset/sql.rb +30 -225
- data/lib/sequel/deprecated.rb +18 -27
- data/lib/sequel/exceptions.rb +1 -17
- data/lib/sequel/extensions/_model_pg_row.rb +0 -7
- data/lib/sequel/extensions/_pretty_table.rb +1 -3
- data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
- data/lib/sequel/extensions/connection_expiration.rb +1 -1
- data/lib/sequel/extensions/connection_validator.rb +1 -1
- data/lib/sequel/extensions/constraint_validations.rb +11 -11
- data/lib/sequel/extensions/core_extensions.rb +39 -49
- data/lib/sequel/extensions/core_refinements.rb +39 -45
- data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
- data/lib/sequel/extensions/date_arithmetic.rb +7 -7
- data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
- data/lib/sequel/extensions/eval_inspect.rb +4 -11
- data/lib/sequel/extensions/freeze_datasets.rb +1 -69
- data/lib/sequel/extensions/from_block.rb +1 -35
- data/lib/sequel/extensions/graph_each.rb +2 -2
- data/lib/sequel/extensions/identifier_mangling.rb +9 -19
- data/lib/sequel/extensions/implicit_subquery.rb +2 -2
- data/lib/sequel/extensions/inflector.rb +4 -4
- data/lib/sequel/extensions/migration.rb +23 -40
- data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
- data/lib/sequel/extensions/null_dataset.rb +2 -8
- data/lib/sequel/extensions/pagination.rb +1 -17
- data/lib/sequel/extensions/pg_array.rb +20 -189
- data/lib/sequel/extensions/pg_hstore.rb +11 -50
- data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
- data/lib/sequel/extensions/pg_inet.rb +2 -15
- data/lib/sequel/extensions/pg_interval.rb +1 -20
- data/lib/sequel/extensions/pg_json.rb +7 -27
- data/lib/sequel/extensions/pg_loose_count.rb +1 -1
- data/lib/sequel/extensions/pg_range.rb +6 -121
- data/lib/sequel/extensions/pg_range_ops.rb +1 -3
- data/lib/sequel/extensions/pg_row.rb +5 -77
- data/lib/sequel/extensions/pg_row_ops.rb +2 -13
- data/lib/sequel/extensions/query.rb +3 -4
- data/lib/sequel/extensions/round_timestamps.rb +0 -6
- data/lib/sequel/extensions/schema_dumper.rb +13 -13
- data/lib/sequel/extensions/select_remove.rb +3 -3
- data/lib/sequel/extensions/split_array_nil.rb +2 -2
- data/lib/sequel/extensions/sql_comments.rb +2 -2
- data/lib/sequel/extensions/string_agg.rb +11 -8
- data/lib/sequel/extensions/symbol_aref.rb +6 -20
- data/lib/sequel/model.rb +27 -62
- data/lib/sequel/model/associations.rb +128 -131
- data/lib/sequel/model/base.rb +171 -711
- data/lib/sequel/model/default_inflections.rb +1 -1
- data/lib/sequel/model/errors.rb +0 -3
- data/lib/sequel/model/exceptions.rb +2 -6
- data/lib/sequel/model/inflections.rb +1 -26
- data/lib/sequel/model/plugins.rb +1 -0
- data/lib/sequel/plugins/active_model.rb +2 -5
- data/lib/sequel/plugins/association_dependencies.rb +15 -15
- data/lib/sequel/plugins/association_pks.rb +14 -28
- data/lib/sequel/plugins/association_proxies.rb +6 -7
- data/lib/sequel/plugins/auto_validations.rb +4 -4
- data/lib/sequel/plugins/before_after_save.rb +0 -43
- data/lib/sequel/plugins/blacklist_security.rb +9 -8
- data/lib/sequel/plugins/boolean_readers.rb +3 -3
- data/lib/sequel/plugins/boolean_subsets.rb +2 -2
- data/lib/sequel/plugins/caching.rb +5 -5
- data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
- data/lib/sequel/plugins/column_conflicts.rb +2 -2
- data/lib/sequel/plugins/column_select.rb +2 -2
- data/lib/sequel/plugins/composition.rb +15 -24
- data/lib/sequel/plugins/constraint_validations.rb +4 -3
- data/lib/sequel/plugins/csv_serializer.rb +13 -20
- data/lib/sequel/plugins/dataset_associations.rb +2 -2
- data/lib/sequel/plugins/def_dataset_method.rb +5 -5
- data/lib/sequel/plugins/defaults_setter.rb +1 -1
- data/lib/sequel/plugins/delay_add_association.rb +1 -1
- data/lib/sequel/plugins/finder.rb +16 -10
- data/lib/sequel/plugins/force_encoding.rb +1 -7
- data/lib/sequel/plugins/hook_class_methods.rb +4 -106
- data/lib/sequel/plugins/input_transformer.rb +10 -11
- data/lib/sequel/plugins/insert_returning_select.rb +1 -9
- data/lib/sequel/plugins/instance_filters.rb +5 -5
- data/lib/sequel/plugins/instance_hooks.rb +7 -52
- data/lib/sequel/plugins/inverted_subsets.rb +3 -1
- data/lib/sequel/plugins/json_serializer.rb +19 -19
- data/lib/sequel/plugins/lazy_attributes.rb +1 -10
- data/lib/sequel/plugins/list.rb +6 -6
- data/lib/sequel/plugins/many_through_many.rb +11 -8
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/nested_attributes.rb +18 -31
- data/lib/sequel/plugins/optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/pg_array_associations.rb +8 -2
- data/lib/sequel/plugins/pg_row.rb +2 -11
- data/lib/sequel/plugins/prepared_statements.rb +13 -66
- data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
- data/lib/sequel/plugins/rcte_tree.rb +7 -7
- data/lib/sequel/plugins/serialization.rb +15 -33
- data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
- data/lib/sequel/plugins/sharding.rb +2 -8
- data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
- data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
- data/lib/sequel/plugins/static_cache.rb +8 -9
- data/lib/sequel/plugins/string_stripper.rb +3 -3
- data/lib/sequel/plugins/subclasses.rb +1 -1
- data/lib/sequel/plugins/subset_conditions.rb +2 -2
- data/lib/sequel/plugins/table_select.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
- data/lib/sequel/plugins/timestamps.rb +6 -7
- data/lib/sequel/plugins/touch.rb +4 -8
- data/lib/sequel/plugins/tree.rb +3 -3
- data/lib/sequel/plugins/typecast_on_load.rb +2 -2
- data/lib/sequel/plugins/unlimited_update.rb +1 -7
- data/lib/sequel/plugins/update_or_create.rb +3 -3
- data/lib/sequel/plugins/update_refresh.rb +3 -3
- data/lib/sequel/plugins/uuid.rb +7 -11
- data/lib/sequel/plugins/validation_class_methods.rb +10 -9
- data/lib/sequel/plugins/validation_contexts.rb +4 -4
- data/lib/sequel/plugins/validation_helpers.rb +26 -25
- data/lib/sequel/plugins/whitelist_security.rb +13 -9
- data/lib/sequel/plugins/xml_serializer.rb +24 -25
- data/lib/sequel/sql.rb +145 -276
- data/lib/sequel/timezones.rb +8 -22
- data/lib/sequel/version.rb +2 -2
- data/spec/adapter_spec.rb +1 -1
- data/spec/adapters/db2_spec.rb +2 -103
- data/spec/adapters/mssql_spec.rb +89 -68
- data/spec/adapters/mysql_spec.rb +101 -480
- data/spec/adapters/oracle_spec.rb +1 -9
- data/spec/adapters/postgres_spec.rb +312 -565
- data/spec/adapters/spec_helper.rb +12 -31
- data/spec/adapters/sqlanywhere_spec.rb +2 -77
- data/spec/adapters/sqlite_spec.rb +8 -146
- data/spec/bin_spec.rb +11 -16
- data/spec/core/connection_pool_spec.rb +173 -74
- data/spec/core/database_spec.rb +64 -244
- data/spec/core/dataset_spec.rb +81 -415
- data/spec/core/deprecated_spec.rb +3 -3
- data/spec/core/expression_filters_spec.rb +37 -144
- data/spec/core/mock_adapter_spec.rb +176 -4
- data/spec/core/object_graph_spec.rb +11 -60
- data/spec/core/placeholder_literalizer_spec.rb +1 -14
- data/spec/core/schema_generator_spec.rb +51 -40
- data/spec/core/schema_spec.rb +74 -77
- data/spec/core/spec_helper.rb +6 -24
- data/spec/core/version_spec.rb +1 -1
- data/spec/core_extensions_spec.rb +7 -83
- data/spec/core_model_spec.rb +2 -2
- data/spec/deprecation_helper.rb +2 -14
- data/spec/extensions/accessed_columns_spec.rb +1 -1
- data/spec/extensions/active_model_spec.rb +3 -3
- data/spec/extensions/after_initialize_spec.rb +1 -1
- data/spec/extensions/arbitrary_servers_spec.rb +2 -2
- data/spec/extensions/association_dependencies_spec.rb +1 -1
- data/spec/extensions/association_pks_spec.rb +4 -59
- data/spec/extensions/association_proxies_spec.rb +1 -1
- data/spec/extensions/auto_literal_strings_spec.rb +1 -12
- data/spec/extensions/auto_validations_spec.rb +1 -1
- data/spec/extensions/blacklist_security_spec.rb +1 -1
- data/spec/extensions/blank_spec.rb +1 -1
- data/spec/extensions/boolean_readers_spec.rb +1 -1
- data/spec/extensions/boolean_subsets_spec.rb +1 -1
- data/spec/extensions/caching_spec.rb +1 -1
- data/spec/extensions/class_table_inheritance_spec.rb +35 -1086
- data/spec/extensions/column_conflicts_spec.rb +1 -1
- data/spec/extensions/column_select_spec.rb +4 -4
- data/spec/extensions/columns_introspection_spec.rb +1 -1
- data/spec/extensions/columns_updated_spec.rb +1 -1
- data/spec/extensions/composition_spec.rb +1 -7
- data/spec/extensions/connection_expiration_spec.rb +3 -3
- data/spec/extensions/connection_validator_spec.rb +3 -3
- data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
- data/spec/extensions/constraint_validations_spec.rb +1 -1
- data/spec/extensions/core_refinements_spec.rb +1 -3
- data/spec/extensions/csv_serializer_spec.rb +4 -9
- data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
- data/spec/extensions/dataset_associations_spec.rb +2 -1
- data/spec/extensions/dataset_source_alias_spec.rb +1 -1
- data/spec/extensions/date_arithmetic_spec.rb +3 -3
- data/spec/extensions/def_dataset_method_spec.rb +1 -1
- data/spec/extensions/defaults_setter_spec.rb +2 -2
- data/spec/extensions/delay_add_association_spec.rb +8 -9
- data/spec/extensions/dirty_spec.rb +1 -1
- data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
- data/spec/extensions/eager_each_spec.rb +2 -2
- data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
- data/spec/extensions/error_splitter_spec.rb +1 -1
- data/spec/extensions/error_sql_spec.rb +1 -1
- data/spec/extensions/eval_inspect_spec.rb +1 -1
- data/spec/extensions/finder_spec.rb +1 -1
- data/spec/extensions/force_encoding_spec.rb +2 -5
- data/spec/extensions/freeze_datasets_spec.rb +1 -1
- data/spec/extensions/graph_each_spec.rb +5 -5
- data/spec/extensions/hook_class_methods_spec.rb +1 -194
- data/spec/extensions/identifier_mangling_spec.rb +17 -170
- data/spec/extensions/implicit_subquery_spec.rb +1 -5
- data/spec/extensions/inflector_spec.rb +1 -1
- data/spec/extensions/input_transformer_spec.rb +7 -2
- data/spec/extensions/insert_returning_select_spec.rb +1 -1
- data/spec/extensions/instance_filters_spec.rb +1 -1
- data/spec/extensions/instance_hooks_spec.rb +1 -95
- data/spec/extensions/inverted_subsets_spec.rb +1 -1
- data/spec/extensions/json_serializer_spec.rb +1 -1
- data/spec/extensions/lazy_attributes_spec.rb +1 -7
- data/spec/extensions/list_spec.rb +1 -1
- data/spec/extensions/looser_typecasting_spec.rb +1 -1
- data/spec/extensions/many_through_many_spec.rb +1 -1
- data/spec/extensions/migration_spec.rb +2 -2
- data/spec/extensions/modification_detection_spec.rb +1 -1
- data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
- data/spec/extensions/named_timezones_spec.rb +3 -3
- data/spec/extensions/nested_attributes_spec.rb +1 -29
- data/spec/extensions/null_dataset_spec.rb +1 -11
- data/spec/extensions/optimistic_locking_spec.rb +1 -1
- data/spec/extensions/pagination_spec.rb +1 -1
- data/spec/extensions/pg_array_associations_spec.rb +4 -1
- data/spec/extensions/pg_array_ops_spec.rb +1 -1
- data/spec/extensions/pg_array_spec.rb +3 -48
- data/spec/extensions/pg_enum_spec.rb +1 -1
- data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
- data/spec/extensions/pg_hstore_spec.rb +23 -32
- data/spec/extensions/pg_inet_ops_spec.rb +1 -1
- data/spec/extensions/pg_inet_spec.rb +1 -14
- data/spec/extensions/pg_interval_spec.rb +3 -13
- data/spec/extensions/pg_json_ops_spec.rb +1 -1
- data/spec/extensions/pg_json_spec.rb +1 -13
- data/spec/extensions/pg_loose_count_spec.rb +1 -1
- data/spec/extensions/pg_range_ops_spec.rb +1 -1
- data/spec/extensions/pg_range_spec.rb +3 -88
- data/spec/extensions/pg_row_ops_spec.rb +1 -1
- data/spec/extensions/pg_row_plugin_spec.rb +1 -1
- data/spec/extensions/pg_row_spec.rb +1 -44
- data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
- data/spec/extensions/prepared_statements_safe_spec.rb +1 -1
- data/spec/extensions/prepared_statements_spec.rb +13 -48
- data/spec/extensions/pretty_table_spec.rb +1 -1
- data/spec/extensions/query_spec.rb +1 -12
- data/spec/extensions/rcte_tree_spec.rb +1 -1
- data/spec/extensions/round_timestamps_spec.rb +1 -5
- data/spec/extensions/s_spec.rb +1 -1
- data/spec/extensions/schema_caching_spec.rb +1 -1
- data/spec/extensions/schema_dumper_spec.rb +1 -1
- data/spec/extensions/select_remove_spec.rb +1 -1
- data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
- data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
- data/spec/extensions/serialization_spec.rb +2 -14
- data/spec/extensions/server_block_spec.rb +1 -1
- data/spec/extensions/server_logging_spec.rb +2 -2
- data/spec/extensions/sharding_spec.rb +1 -1
- data/spec/extensions/shared_caching_spec.rb +1 -28
- data/spec/extensions/single_table_inheritance_spec.rb +2 -5
- data/spec/extensions/singular_table_names_spec.rb +1 -1
- data/spec/extensions/skip_create_refresh_spec.rb +1 -1
- data/spec/extensions/spec_helper.rb +5 -27
- data/spec/extensions/split_array_nil_spec.rb +1 -1
- data/spec/extensions/split_values_spec.rb +1 -1
- data/spec/extensions/sql_comments_spec.rb +1 -1
- data/spec/extensions/sql_expr_spec.rb +1 -1
- data/spec/extensions/static_cache_spec.rb +1 -1
- data/spec/extensions/string_agg_spec.rb +2 -2
- data/spec/extensions/string_date_time_spec.rb +1 -1
- data/spec/extensions/string_stripper_spec.rb +1 -1
- data/spec/extensions/subclasses_spec.rb +1 -1
- data/spec/extensions/subset_conditions_spec.rb +1 -1
- data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
- data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
- data/spec/extensions/table_select_spec.rb +4 -4
- data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
- data/spec/extensions/thread_local_timezones_spec.rb +1 -1
- data/spec/extensions/timestamps_spec.rb +3 -3
- data/spec/extensions/to_dot_spec.rb +1 -1
- data/spec/extensions/touch_spec.rb +1 -1
- data/spec/extensions/tree_spec.rb +1 -1
- data/spec/extensions/typecast_on_load_spec.rb +1 -1
- data/spec/extensions/unlimited_update_spec.rb +1 -1
- data/spec/extensions/update_or_create_spec.rb +1 -1
- data/spec/extensions/update_primary_key_spec.rb +4 -3
- data/spec/extensions/update_refresh_spec.rb +1 -1
- data/spec/extensions/uuid_spec.rb +10 -12
- data/spec/extensions/validate_associated_spec.rb +1 -1
- data/spec/extensions/validation_class_methods_spec.rb +3 -3
- data/spec/extensions/validation_contexts_spec.rb +1 -1
- data/spec/extensions/validation_helpers_spec.rb +10 -44
- data/spec/extensions/whitelist_security_spec.rb +5 -5
- data/spec/extensions/xml_serializer_spec.rb +3 -3
- data/spec/guards_helper.rb +2 -1
- data/spec/integration/associations_test.rb +1 -23
- data/spec/integration/database_test.rb +7 -7
- data/spec/integration/dataset_test.rb +5 -47
- data/spec/integration/eager_loader_test.rb +1 -1
- data/spec/integration/migrator_test.rb +1 -1
- data/spec/integration/model_test.rb +4 -82
- data/spec/integration/plugin_test.rb +6 -22
- data/spec/integration/prepared_statement_test.rb +8 -88
- data/spec/integration/schema_test.rb +6 -6
- data/spec/integration/spec_helper.rb +13 -21
- data/spec/integration/timezone_test.rb +5 -5
- data/spec/integration/transaction_test.rb +3 -55
- data/spec/integration/type_test.rb +9 -9
- data/spec/model/association_reflection_spec.rb +24 -9
- data/spec/model/associations_spec.rb +124 -303
- data/spec/model/base_spec.rb +18 -137
- data/spec/model/class_dataset_methods_spec.rb +2 -20
- data/spec/model/dataset_methods_spec.rb +1 -20
- data/spec/model/eager_loading_spec.rb +17 -11
- data/spec/model/hooks_spec.rb +5 -300
- data/spec/model/inflector_spec.rb +1 -1
- data/spec/model/model_spec.rb +15 -320
- data/spec/model/plugins_spec.rb +2 -16
- data/spec/model/record_spec.rb +29 -121
- data/spec/model/spec_helper.rb +5 -15
- data/spec/model/validations_spec.rb +1 -1
- data/spec/sequel_warning.rb +1 -12
- metadata +8 -64
- data/doc/active_record.rdoc +0 -927
- data/lib/sequel/adapters/cubrid.rb +0 -160
- data/lib/sequel/adapters/do.rb +0 -166
- data/lib/sequel/adapters/do/mysql.rb +0 -69
- data/lib/sequel/adapters/do/postgres.rb +0 -46
- data/lib/sequel/adapters/do/sqlite3.rb +0 -41
- data/lib/sequel/adapters/jdbc/as400.rb +0 -92
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
- data/lib/sequel/adapters/odbc/progress.rb +0 -12
- data/lib/sequel/adapters/shared/cubrid.rb +0 -245
- data/lib/sequel/adapters/shared/firebird.rb +0 -261
- data/lib/sequel/adapters/shared/informix.rb +0 -63
- data/lib/sequel/adapters/shared/progress.rb +0 -40
- data/lib/sequel/adapters/swift.rb +0 -169
- data/lib/sequel/adapters/swift/mysql.rb +0 -50
- data/lib/sequel/adapters/swift/postgres.rb +0 -49
- data/lib/sequel/adapters/swift/sqlite.rb +0 -48
- data/lib/sequel/adapters/utils/pg_types.rb +0 -4
- data/lib/sequel/dataset/mutation.rb +0 -98
- data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
- data/lib/sequel/extensions/filter_having.rb +0 -65
- data/lib/sequel/extensions/hash_aliases.rb +0 -51
- data/lib/sequel/extensions/meta_def.rb +0 -37
- data/lib/sequel/extensions/query_literals.rb +0 -86
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
- data/lib/sequel/extensions/set_overrides.rb +0 -82
- data/lib/sequel/no_core_ext.rb +0 -4
- data/lib/sequel/plugins/association_autoreloading.rb +0 -11
- data/lib/sequel/plugins/identifier_columns.rb +0 -49
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
- data/lib/sequel/plugins/schema.rb +0 -84
- data/lib/sequel/plugins/scissors.rb +0 -37
- data/spec/core/dataset_mutation_spec.rb +0 -253
- data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
- data/spec/extensions/before_after_save_spec.rb +0 -40
- data/spec/extensions/filter_having_spec.rb +0 -42
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/hash_aliases_spec.rb +0 -26
- data/spec/extensions/identifier_columns_spec.rb +0 -19
- data/spec/extensions/meta_def_spec.rb +0 -35
- data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
- data/spec/extensions/query_literals_spec.rb +0 -185
- data/spec/extensions/schema_spec.rb +0 -123
- data/spec/extensions/scissors_spec.rb +0 -27
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
- data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
Sequel::JDBC.load_driver('org.postgresql.Driver', :Postgres)
|
4
|
-
|
4
|
+
require_relative '../shared/postgres'
|
5
5
|
|
6
6
|
module Sequel
|
7
7
|
module JDBC
|
@@ -13,22 +13,6 @@ module Sequel
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
# SEQUEL5: Remove
|
17
|
-
class Type_Convertor
|
18
|
-
def RubyPGArray(r, i)
|
19
|
-
if v = r.getArray(i)
|
20
|
-
v.array.to_ary
|
21
|
-
end
|
22
|
-
end
|
23
|
-
def RubyPGHstore(r, i)
|
24
|
-
if v = r.getObject(i)
|
25
|
-
v.to_hash
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# Adapter, Database, and Dataset support for accessing a PostgreSQL
|
31
|
-
# database via JDBC.
|
32
16
|
module Postgres
|
33
17
|
# Return PostgreSQL array types as ruby Arrays instead of
|
34
18
|
# JDBC PostgreSQL driver-specific array type. Only used if the
|
@@ -48,8 +32,6 @@ module Sequel
|
|
48
32
|
end
|
49
33
|
end
|
50
34
|
|
51
|
-
# Methods to add to Database instances that access PostgreSQL via
|
52
|
-
# JDBC.
|
53
35
|
module DatabaseMethods
|
54
36
|
include Sequel::Postgres::DatabaseMethods
|
55
37
|
|
@@ -149,12 +131,6 @@ module Sequel
|
|
149
131
|
|
150
132
|
private
|
151
133
|
|
152
|
-
# SEQUEL5: Remove
|
153
|
-
def conversion_procs_updated
|
154
|
-
super
|
155
|
-
Sequel.synchronize{@oid_convertor_map = {}}
|
156
|
-
end
|
157
|
-
|
158
134
|
DATABASE_ERROR_CLASSES = [NativeException].freeze
|
159
135
|
def database_error_classes
|
160
136
|
DATABASE_ERROR_CLASSES
|
@@ -206,13 +182,8 @@ module Sequel
|
|
206
182
|
end
|
207
183
|
end
|
208
184
|
|
209
|
-
# Dataset subclass used for datasets that connect to PostgreSQL via JDBC.
|
210
185
|
class Dataset < JDBC::Dataset
|
211
186
|
include Sequel::Postgres::DatasetMethods
|
212
|
-
APOS = "'".freeze
|
213
|
-
Sequel::Deprecation.deprecate_constant(self, :APOS)
|
214
|
-
HSTORE_TYPE = 'hstore'.freeze
|
215
|
-
Sequel::Deprecation.deprecate_constant(self, :HSTORE_TYPE)
|
216
187
|
|
217
188
|
private
|
218
189
|
|
@@ -229,7 +200,7 @@ module Sequel
|
|
229
200
|
STRING_TYPE = Java::JavaSQL::Types::VARCHAR
|
230
201
|
ARRAY_TYPE = Java::JavaSQL::Types::ARRAY
|
231
202
|
ARRAY_METHOD = Postgres.method(:RubyPGArray)
|
232
|
-
PG_SPECIFIC_TYPES = [ARRAY_TYPE, Java::JavaSQL::Types::OTHER, Java::JavaSQL::Types::STRUCT]
|
203
|
+
PG_SPECIFIC_TYPES = [ARRAY_TYPE, Java::JavaSQL::Types::OTHER, Java::JavaSQL::Types::STRUCT].freeze
|
233
204
|
HSTORE_METHOD = Postgres.method(:RubyPGHstore)
|
234
205
|
|
235
206
|
def type_convertor(map, meta, type, i)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require_relative '../shared/sqlanywhere'
|
4
|
+
require_relative 'transactions'
|
5
5
|
|
6
6
|
module Sequel
|
7
7
|
module JDBC
|
@@ -23,37 +23,25 @@ module Sequel
|
|
23
23
|
Sequel.synchronize do
|
24
24
|
DATABASE_SETUP[:sqlanywhere] = proc do |db|
|
25
25
|
db.extend(Sequel::JDBC::SqlAnywhere::DatabaseMethods)
|
26
|
+
db.convert_smallint_to_bool = true
|
26
27
|
db.dataset_class = Sequel::JDBC::SqlAnywhere::Dataset
|
27
28
|
drv
|
28
29
|
end
|
29
30
|
end
|
30
31
|
|
31
|
-
# SEQUEL5: Remove
|
32
|
-
class Type_Convertor
|
33
|
-
def SqlAnywhereBoolean(r, i)
|
34
|
-
if v = Short(r, i)
|
35
|
-
v != 0
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
32
|
module SqlAnywhere
|
41
33
|
def self.SqlAnywhereBoolean(r, i)
|
42
34
|
v = r.getShort(i)
|
43
35
|
v != 0 unless r.wasNull
|
44
36
|
end
|
45
37
|
|
46
|
-
# Database instance methods for Sybase databases accessed via JDBC.
|
47
38
|
module DatabaseMethods
|
48
39
|
include Sequel::SqlAnywhere::DatabaseMethods
|
49
40
|
include Sequel::JDBC::Transactions
|
50
41
|
|
51
|
-
LAST_INSERT_ID = 'SELECT @@IDENTITY'.freeze
|
52
|
-
Sequel::Deprecation.deprecate_constant(self, :LAST_INSERT_ID)
|
53
|
-
|
54
42
|
private
|
55
43
|
|
56
|
-
#
|
44
|
+
# Use @@IDENTITY to get the last inserted id
|
57
45
|
def last_insert_id(conn, opts=OPTS)
|
58
46
|
statement(conn) do |stmt|
|
59
47
|
sql = 'SELECT @@IDENTITY'
|
@@ -64,7 +52,6 @@ module Sequel
|
|
64
52
|
end
|
65
53
|
end
|
66
54
|
|
67
|
-
#Dataset class for Sybase datasets accessed via JDBC.
|
68
55
|
class Dataset < JDBC::Dataset
|
69
56
|
include Sequel::SqlAnywhere::DatasetMethods
|
70
57
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
Sequel::JDBC.load_driver('org.sqlite.JDBC', :SQLite3)
|
4
|
-
|
4
|
+
require_relative '../shared/sqlite'
|
5
5
|
|
6
6
|
module Sequel
|
7
7
|
module JDBC
|
@@ -14,15 +14,9 @@ module Sequel
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
# Database and Dataset support for SQLite databases accessed via JDBC.
|
18
17
|
module SQLite
|
19
|
-
# Instance methods for SQLite Database objects accessed via JDBC.
|
20
18
|
module DatabaseMethods
|
21
19
|
include Sequel::SQLite::DatabaseMethods
|
22
|
-
LAST_INSERT_ROWID = 'SELECT last_insert_rowid()'.freeze
|
23
|
-
Sequel::Deprecation.deprecate_constant(self, :LAST_INSERT_ROWID)
|
24
|
-
FOREIGN_KEY_ERROR_RE = /query does not return ResultSet/.freeze
|
25
|
-
Sequel::Deprecation.deprecate_constant(self, :FOREIGN_KEY_ERROR_RE)
|
26
20
|
|
27
21
|
# Swallow pointless exceptions when the foreign key list pragma
|
28
22
|
# doesn't return any rows.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
Sequel::JDBC.load_driver('com.microsoft.sqlserver.jdbc.SQLServerDriver')
|
4
|
-
|
4
|
+
require_relative 'mssql'
|
5
5
|
|
6
6
|
module Sequel
|
7
7
|
module JDBC
|
@@ -14,17 +14,6 @@ module Sequel
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
# SEQUEL5: Remove
|
18
|
-
class Type_Convertor
|
19
|
-
def MSSQLRubyTime(r, i)
|
20
|
-
if v = r.getString(i)
|
21
|
-
Sequel.string_to_time("#{v}")
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# Database and Dataset instance methods for SQLServer specific
|
27
|
-
# support via JDBC.
|
28
17
|
module SQLServer
|
29
18
|
def self.MSSQLRubyTime(r, i)
|
30
19
|
# MSSQL-Server TIME should be fetched as string to keep the precision intact, see:
|
@@ -34,7 +23,6 @@ module Sequel
|
|
34
23
|
end
|
35
24
|
end
|
36
25
|
|
37
|
-
# Database instance methods for SQLServer databases accessed via JDBC.
|
38
26
|
module DatabaseMethods
|
39
27
|
include Sequel::JDBC::MSSQL::DatabaseMethods
|
40
28
|
|
@@ -3,19 +3,6 @@
|
|
3
3
|
module Sequel
|
4
4
|
module JDBC
|
5
5
|
module Transactions
|
6
|
-
TRANSACTION_BEGIN = 'Transaction.begin'.freeze
|
7
|
-
Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_BEGIN)
|
8
|
-
TRANSACTION_COMMIT = 'Transaction.commit'.freeze
|
9
|
-
Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_COMMIT)
|
10
|
-
TRANSACTION_RELEASE_SP = 'Transaction.release_savepoint'.freeze
|
11
|
-
Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_RELEASE_SP)
|
12
|
-
TRANSACTION_ROLLBACK = 'Transaction.rollback'.freeze
|
13
|
-
Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_ROLLBACK)
|
14
|
-
TRANSACTION_ROLLBACK_SP = 'Transaction.rollback_savepoint'.freeze
|
15
|
-
Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_ROLLBACK_SP)
|
16
|
-
TRANSACTION_SAVEPOINT= 'Transaction.savepoint'.freeze
|
17
|
-
Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_SAVEPOINT)
|
18
|
-
|
19
6
|
def freeze
|
20
7
|
supports_savepoints?
|
21
8
|
super
|
@@ -38,7 +25,7 @@ module Sequel
|
|
38
25
|
JDBC_TRANSACTION_ISOLATION_LEVELS = {:uncommitted=>JavaSQL::Connection::TRANSACTION_READ_UNCOMMITTED,
|
39
26
|
:committed=>JavaSQL::Connection::TRANSACTION_READ_COMMITTED,
|
40
27
|
:repeatable=>JavaSQL::Connection::TRANSACTION_REPEATABLE_READ,
|
41
|
-
:serializable=>JavaSQL::Connection::TRANSACTION_SERIALIZABLE}
|
28
|
+
:serializable=>JavaSQL::Connection::TRANSACTION_SERIALIZABLE}.freeze
|
42
29
|
|
43
30
|
# Set the transaction isolation level on the given connection using
|
44
31
|
# the JDBC API.
|
data/lib/sequel/adapters/mock.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative 'utils/unmodified_identifiers'
|
4
4
|
|
5
5
|
module Sequel
|
6
6
|
module Mock
|
7
|
-
# Connection class for Sequel's mock adapter.
|
8
7
|
class Connection
|
9
8
|
# Sequel::Mock::Database object that created this connection
|
10
9
|
attr_reader :db
|
@@ -30,7 +29,6 @@ module Sequel
|
|
30
29
|
end
|
31
30
|
end
|
32
31
|
|
33
|
-
# Database class for Sequel's mock adapter.
|
34
32
|
class Database < Sequel::Database
|
35
33
|
set_adapter_scheme :mock
|
36
34
|
|
@@ -61,9 +59,9 @@ module Sequel
|
|
61
59
|
# Set the columns to set in the dataset when the dataset fetches
|
62
60
|
# rows. Argument types supported:
|
63
61
|
# nil :: Set no columns
|
64
|
-
# Array of Symbols
|
65
|
-
# Array (otherwise)
|
66
|
-
#
|
62
|
+
# Array of Symbols :: Used for all datasets
|
63
|
+
# Array (otherwise) :: First retrieval gets the first value in the
|
64
|
+
# array, second gets the second value, etc.
|
67
65
|
# Proc :: Called with the select SQL query, uses the value
|
68
66
|
# returned, which should be an array of symbols
|
69
67
|
attr_writer :columns
|
@@ -311,45 +309,21 @@ module Sequel
|
|
311
309
|
end
|
312
310
|
|
313
311
|
class Dataset < Sequel::Dataset
|
314
|
-
Database::DatasetClass = self
|
315
|
-
Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
|
316
|
-
|
317
312
|
# The autoid setting for this dataset, if it has been overridden
|
318
313
|
def autoid
|
319
314
|
cache_get(:_autoid) || @opts[:autoid]
|
320
315
|
end
|
321
316
|
|
322
|
-
# Override the databases's autoid setting for this dataset
|
323
|
-
def autoid=(v)
|
324
|
-
Sequel::Deprecation.deprecate("Sequel::Mock::Dataset#autoid=", "Use with_autoid to return a modified dataset")
|
325
|
-
cache_set(:_autoid, nil)
|
326
|
-
@opts[:autoid] = v
|
327
|
-
end
|
328
|
-
|
329
317
|
# The fetch setting for this dataset, if it has been overridden
|
330
318
|
def _fetch
|
331
319
|
cache_get(:_fetch) || @opts[:fetch]
|
332
320
|
end
|
333
321
|
|
334
|
-
# Override the databases's fetch setting for this dataset
|
335
|
-
def _fetch=(v)
|
336
|
-
Sequel::Deprecation.deprecate("Sequel::Mock::Dataset#_fetch=", "Use with_fetch to return a modified dataset")
|
337
|
-
cache_set(:_fetch, nil)
|
338
|
-
@opts[:fetch] = v
|
339
|
-
end
|
340
|
-
|
341
322
|
# The numrows setting for this dataset, if it has been overridden
|
342
323
|
def numrows
|
343
324
|
cache_get(:_numrows) || @opts[:numrows]
|
344
325
|
end
|
345
326
|
|
346
|
-
# Override the databases's numrows setting for this dataset
|
347
|
-
def numrows=(v)
|
348
|
-
Sequel::Deprecation.deprecate("Sequel::Mock::Dataset#_numrows=", "Use with_numrows to return a modified dataset")
|
349
|
-
cache_set(:_numrows, nil)
|
350
|
-
@opts[:numrows] = v
|
351
|
-
end
|
352
|
-
|
353
327
|
# If arguments are provided, use them to set the columns
|
354
328
|
# for this dataset and return self. Otherwise, use the
|
355
329
|
# default Sequel behavior and return the columns.
|
@@ -7,16 +7,16 @@ rescue LoadError
|
|
7
7
|
end
|
8
8
|
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
9
|
|
10
|
-
|
10
|
+
require_relative 'utils/mysql_mysql2'
|
11
|
+
require_relative 'utils/mysql_prepared_statements'
|
11
12
|
|
12
13
|
module Sequel
|
13
|
-
# Module for holding all MySQL-related classes and modules for Sequel.
|
14
14
|
module MySQL
|
15
15
|
TYPE_TRANSLATOR = tt = Class.new do
|
16
16
|
def boolean(s) s.to_i != 0 end
|
17
17
|
def integer(s) s.to_i end
|
18
18
|
def float(s) s.to_f end
|
19
|
-
end.new
|
19
|
+
end.new.freeze
|
20
20
|
|
21
21
|
# Hash with integer keys and callable values for converting MySQL types.
|
22
22
|
MYSQL_TYPES = {}
|
@@ -28,32 +28,13 @@ module Sequel
|
|
28
28
|
}.each do |k,v|
|
29
29
|
k.each{|n| MYSQL_TYPES[n] = v}
|
30
30
|
end
|
31
|
-
|
31
|
+
MYSQL_TYPES.freeze
|
32
32
|
|
33
|
-
# SEQUEL5: Remove
|
34
|
-
@convert_invalid_date_time = false
|
35
|
-
class << self
|
36
|
-
def convert_invalid_date_time
|
37
|
-
Sequel::Deprecation.deprecate("Sequel::MySQL.convert_invalid_date_time", "Call this method on the Database instance")
|
38
|
-
@convert_invalid_date_time
|
39
|
-
end
|
40
|
-
def convert_invalid_date_time=(v)
|
41
|
-
Sequel::Deprecation.deprecate("Sequel::MySQL.convert_invalid_date_time=", "Call this method on the Database instance")
|
42
|
-
@convert_invalid_date_time = v
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
# Database class for MySQL databases used with Sequel.
|
47
33
|
class Database < Sequel::Database
|
48
34
|
include Sequel::MySQL::DatabaseMethods
|
49
35
|
include Sequel::MySQL::MysqlMysql2::DatabaseMethods
|
50
36
|
include Sequel::MySQL::PreparedStatements::DatabaseMethods
|
51
37
|
|
52
|
-
# Regular expression used for getting accurate number of rows
|
53
|
-
# matched by an update statement.
|
54
|
-
AFFECTED_ROWS_RE = /Rows matched:\s+(\d+)\s+Changed:\s+\d+\s+Warnings:\s+\d+/.freeze
|
55
|
-
Sequel::Deprecation.deprecate_constant(self, :AFFECTED_ROWS_RE)
|
56
|
-
|
57
38
|
set_adapter_scheme :mysql
|
58
39
|
|
59
40
|
# Hash of conversion procs for the current database
|
@@ -131,7 +112,6 @@ module Sequel
|
|
131
112
|
conn
|
132
113
|
end
|
133
114
|
|
134
|
-
# Closes given database connection.
|
135
115
|
def disconnect_connection(c)
|
136
116
|
c.close
|
137
117
|
rescue Mysql::Error
|
@@ -159,12 +139,10 @@ module Sequel
|
|
159
139
|
@convert_tinyint_to_bool = v
|
160
140
|
end
|
161
141
|
|
162
|
-
# Return the number of matched rows when executing a delete/update statement.
|
163
142
|
def execute_dui(sql, opts=OPTS)
|
164
143
|
execute(sql, opts){|c| return affected_rows(c)}
|
165
144
|
end
|
166
145
|
|
167
|
-
# Return the last inserted id when executing an insert statement.
|
168
146
|
def execute_insert(sql, opts=OPTS)
|
169
147
|
execute(sql, opts){|c| return c.insert_id}
|
170
148
|
end
|
@@ -175,7 +153,7 @@ module Sequel
|
|
175
153
|
super
|
176
154
|
end
|
177
155
|
|
178
|
-
# Return the version of the MySQL server
|
156
|
+
# Return the version of the MySQL server to which we are connecting.
|
179
157
|
def server_version(server=nil)
|
180
158
|
@server_version ||= (synchronize(server){|conn| conn.server_version if conn.respond_to?(:server_version)} || super)
|
181
159
|
end
|
@@ -231,8 +209,8 @@ module Sequel
|
|
231
209
|
|
232
210
|
def adapter_initialize
|
233
211
|
@conversion_procs = MYSQL_TYPES.dup
|
234
|
-
self.convert_tinyint_to_bool =
|
235
|
-
self.convert_invalid_date_time =
|
212
|
+
self.convert_tinyint_to_bool = true
|
213
|
+
self.convert_invalid_date_time = false
|
236
214
|
end
|
237
215
|
|
238
216
|
# Try to get an accurate number of rows matched using the query
|
@@ -270,7 +248,6 @@ module Sequel
|
|
270
248
|
end
|
271
249
|
end
|
272
250
|
|
273
|
-
# The MySQL adapter main error class is Mysql::Error
|
274
251
|
def database_error_classes
|
275
252
|
[Mysql::Error]
|
276
253
|
end
|
@@ -283,34 +260,21 @@ module Sequel
|
|
283
260
|
Dataset
|
284
261
|
end
|
285
262
|
|
286
|
-
# Raise a disconnect error if the exception message matches the list
|
287
|
-
# of recognized exceptions.
|
288
263
|
def disconnect_error?(e, opts)
|
289
264
|
super || (e.is_a?(::Mysql::Error) && MYSQL_DATABASE_DISCONNECT_ERRORS.match(e.message))
|
290
265
|
end
|
291
266
|
|
292
|
-
# The database name when using the native adapter is always stored in
|
293
|
-
# the :database option.
|
294
|
-
def database_name
|
295
|
-
Sequel::Deprecation.deprecate("Database#database_name", "Instead, use .get(Sequel.function(:DATABASE))")
|
296
|
-
@opts[:database]
|
297
|
-
end
|
298
|
-
|
299
267
|
# Convert tinyint(1) type to boolean if convert_tinyint_to_bool is true
|
300
268
|
def schema_column_type(db_type)
|
301
269
|
convert_tinyint_to_bool && db_type =~ /\Atinyint\(1\)/ ? :boolean : super
|
302
270
|
end
|
303
271
|
end
|
304
272
|
|
305
|
-
# Dataset class for MySQL datasets accessed via the native driver.
|
306
273
|
class Dataset < Sequel::Dataset
|
307
274
|
include Sequel::MySQL::DatasetMethods
|
308
275
|
include Sequel::MySQL::MysqlMysql2::DatasetMethods
|
309
276
|
include Sequel::MySQL::PreparedStatements::DatasetMethods
|
310
277
|
|
311
|
-
Database::DatasetClass = self
|
312
|
-
Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
|
313
|
-
|
314
278
|
# Yield all rows matching this dataset. If the dataset is set to
|
315
279
|
# split multiple statements, yield arrays of hashes one per statement
|
316
280
|
# instead of yielding results for all statements as hashes.
|
@@ -367,7 +331,6 @@ module Sequel
|
|
367
331
|
field.length != 1
|
368
332
|
end
|
369
333
|
|
370
|
-
# Set the :type option to :select if it hasn't been set.
|
371
334
|
def execute(sql, opts=OPTS)
|
372
335
|
opts = Hash[opts]
|
373
336
|
opts[:type] = :select
|
@@ -1,19 +1,17 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
require 'mysql2'
|
4
|
-
|
4
|
+
require_relative 'utils/mysql_mysql2'
|
5
5
|
|
6
6
|
module Sequel
|
7
|
-
# Module for holding all Mysql2-related classes and modules for Sequel.
|
8
7
|
module Mysql2
|
9
8
|
NativePreparedStatements = if ::Mysql2::VERSION >= '0.4'
|
10
9
|
true
|
11
10
|
else
|
12
|
-
|
11
|
+
require_relative 'utils/mysql_prepared_statements'
|
13
12
|
false
|
14
13
|
end
|
15
14
|
|
16
|
-
# Database class for MySQL databases used with Sequel.
|
17
15
|
class Database < Sequel::Database
|
18
16
|
include Sequel::MySQL::DatabaseMethods
|
19
17
|
include Sequel::MySQL::MysqlMysql2::DatabaseMethods
|
@@ -66,12 +64,10 @@ module Sequel
|
|
66
64
|
conn
|
67
65
|
end
|
68
66
|
|
69
|
-
# Return the number of matched rows when executing a delete/update statement.
|
70
67
|
def execute_dui(sql, opts=OPTS)
|
71
68
|
execute(sql, opts){|c| return c.affected_rows}
|
72
69
|
end
|
73
70
|
|
74
|
-
# Return the last inserted id when executing an insert statement.
|
75
71
|
def execute_insert(sql, opts=OPTS)
|
76
72
|
execute(sql, opts){|c| return c.last_id}
|
77
73
|
end
|
@@ -171,7 +167,7 @@ module Sequel
|
|
171
167
|
|
172
168
|
# Set the convert_tinyint_to_bool setting based on the default value.
|
173
169
|
def adapter_initialize
|
174
|
-
self.convert_tinyint_to_bool =
|
170
|
+
self.convert_tinyint_to_bool = true
|
175
171
|
end
|
176
172
|
|
177
173
|
if NativePreparedStatements
|
@@ -190,12 +186,10 @@ module Sequel
|
|
190
186
|
end
|
191
187
|
end
|
192
188
|
|
193
|
-
# MySQL connections use the query method to execute SQL without a result
|
194
189
|
def connection_execute_method
|
195
190
|
:query
|
196
191
|
end
|
197
192
|
|
198
|
-
# The MySQL adapter main error class is Mysql2::Error
|
199
193
|
def database_error_classes
|
200
194
|
[::Mysql2::Error]
|
201
195
|
end
|
@@ -219,29 +213,18 @@ module Sequel
|
|
219
213
|
MYSQL_DATABASE_DISCONNECT_ERRORS.match(e.message)))
|
220
214
|
end
|
221
215
|
|
222
|
-
# The database name when using the native adapter is always stored in
|
223
|
-
# the :database option.
|
224
|
-
def database_name
|
225
|
-
Sequel::Deprecation.deprecate("Database#database_name", "Instead, use .get(Sequel.function(:DATABASE))")
|
226
|
-
@opts[:database]
|
227
|
-
end
|
228
|
-
|
229
216
|
# Convert tinyint(1) type to boolean if convert_tinyint_to_bool is true
|
230
217
|
def schema_column_type(db_type)
|
231
218
|
convert_tinyint_to_bool && db_type =~ /\Atinyint\(1\)/ ? :boolean : super
|
232
219
|
end
|
233
220
|
end
|
234
221
|
|
235
|
-
# Dataset class for MySQL datasets accessed via the native driver.
|
236
222
|
class Dataset < Sequel::Dataset
|
237
223
|
include Sequel::MySQL::DatasetMethods
|
238
224
|
include Sequel::MySQL::MysqlMysql2::DatasetMethods
|
239
225
|
include Sequel::MySQL::PreparedStatements::DatasetMethods unless NativePreparedStatements
|
240
226
|
STREAMING_SUPPORTED = ::Mysql2::VERSION >= '0.3.12'
|
241
227
|
|
242
|
-
Database::DatasetClass = self
|
243
|
-
Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
|
244
|
-
|
245
228
|
if NativePreparedStatements
|
246
229
|
PreparedStatementMethods = prepared_statements_module(
|
247
230
|
"sql = self; opts = Hash[opts]; opts[:arguments] = bind_arguments",
|
@@ -249,7 +232,6 @@ module Sequel
|
|
249
232
|
%w"execute execute_dui execute_insert")
|
250
233
|
end
|
251
234
|
|
252
|
-
# Yield all rows matching this dataset.
|
253
235
|
def fetch_rows(sql)
|
254
236
|
execute(sql) do |r|
|
255
237
|
self.columns = r.fields.map!{|c| output_identifier(c.to_s)}
|
@@ -258,7 +240,8 @@ module Sequel
|
|
258
240
|
self
|
259
241
|
end
|
260
242
|
|
261
|
-
# Use streaming to implement paging if Mysql2 supports it
|
243
|
+
# Use streaming to implement paging if Mysql2 supports it and
|
244
|
+
# it hasn't been disabled.
|
262
245
|
def paged_each(opts=OPTS, &block)
|
263
246
|
if STREAMING_SUPPORTED && opts[:stream] != false
|
264
247
|
stream.each(&block)
|
@@ -283,7 +266,6 @@ module Sequel
|
|
283
266
|
@db.convert_tinyint_to_bool
|
284
267
|
end
|
285
268
|
|
286
|
-
# Set the :type option to :select if it hasn't been set.
|
287
269
|
def execute(sql, opts=OPTS)
|
288
270
|
opts = Hash[opts]
|
289
271
|
opts[:type] = :select
|