sequel 4.49.0 → 5.3.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 +130 -0
- data/README.rdoc +195 -136
- data/Rakefile +26 -42
- data/bin/sequel +6 -9
- data/doc/advanced_associations.rdoc +91 -168
- 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/release_notes/5.1.0.txt +31 -0
- data/doc/release_notes/5.2.0.txt +33 -0
- data/doc/release_notes/5.3.0.txt +121 -0
- data/doc/schema_modification.rdoc +78 -64
- data/doc/security.rdoc +97 -88
- data/doc/sharding.rdoc +43 -30
- data/doc/sql.rdoc +53 -65
- data/doc/testing.rdoc +4 -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/adapters/ado/access.rb +7 -13
- data/lib/sequel/adapters/ado/mssql.rb +2 -9
- data/lib/sequel/adapters/ado.rb +9 -25
- data/lib/sequel/adapters/amalgalite.rb +3 -18
- data/lib/sequel/adapters/ibmdb.rb +9 -45
- 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 +6 -26
- data/lib/sequel/adapters/jdbc/hsqldb.rb +2 -27
- 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 +11 -15
- data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
- data/lib/sequel/adapters/jdbc/postgresql.rb +23 -33
- 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/jdbc.rb +18 -74
- 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/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/odbc.rb +0 -19
- data/lib/sequel/adapters/oracle.rb +8 -13
- data/lib/sequel/adapters/postgres.rb +28 -150
- 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 +61 -227
- data/lib/sequel/adapters/shared/oracle.rb +13 -41
- data/lib/sequel/adapters/shared/postgres.rb +58 -264
- data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
- data/lib/sequel/adapters/shared/sqlite.rb +22 -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 +4 -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/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/connection_pool.rb +38 -28
- data/lib/sequel/core.rb +42 -101
- 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 +36 -55
- data/lib/sequel/database/query.rb +8 -13
- data/lib/sequel/database/schema_generator.rb +93 -64
- data/lib/sequel/database/schema_methods.rb +61 -79
- data/lib/sequel/database/transactions.rb +4 -24
- data/lib/sequel/database.rb +12 -2
- data/lib/sequel/dataset/actions.rb +57 -107
- data/lib/sequel/dataset/dataset_module.rb +4 -16
- data/lib/sequel/dataset/features.rb +35 -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 +91 -161
- data/lib/sequel/dataset/sql.rb +33 -225
- data/lib/sequel/dataset.rb +18 -10
- 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 +27 -43
- 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_extended_date_support.rb +230 -0
- 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 +3 -16
- 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/extensions/synchronize_sql.rb +45 -0
- data/lib/sequel/model/associations.rb +129 -131
- data/lib/sequel/model/base.rb +133 -731
- 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/model.rb +27 -62
- 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 -23
- data/lib/sequel/version.rb +2 -2
- data/lib/sequel.rb +1 -1
- 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 +111 -478
- data/spec/adapters/oracle_spec.rb +1 -9
- data/spec/adapters/postgres_spec.rb +459 -664
- 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 +96 -244
- data/spec/core/dataset_spec.rb +99 -414
- data/spec/core/deprecated_spec.rb +3 -3
- data/spec/core/expression_filters_spec.rb +37 -144
- data/spec/core/mock_adapter_spec.rb +241 -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 +88 -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 +30 -92
- 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 +53 -1118
- 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 +8 -30
- 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 +5 -6
- data/spec/extensions/looser_typecasting_spec.rb +1 -1
- data/spec/extensions/many_through_many_spec.rb +25 -33
- data/spec/extensions/migration_spec.rb +12 -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 +2 -2
- data/spec/extensions/pagination_spec.rb +1 -1
- data/spec/extensions/pg_array_associations_spec.rb +22 -26
- 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_extended_date_support_spec.rb +122 -0
- data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
- data/spec/extensions/pg_hstore_spec.rb +22 -31
- 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 +7 -7
- data/spec/extensions/prepared_statements_spec.rb +13 -48
- data/spec/extensions/pretty_table_spec.rb +40 -9
- data/spec/extensions/query_spec.rb +1 -12
- data/spec/extensions/rcte_tree_spec.rb +23 -34
- 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 +43 -32
- 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 +5 -17
- 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/synchronize_sql_spec.rb +124 -0
- 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 +5 -7
- 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 +12 -16
- 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 -13
- 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 +8 -13
- 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 +12 -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 +7 -23
- data/spec/integration/prepared_statement_test.rb +8 -88
- data/spec/integration/schema_test.rb +10 -10
- data/spec/integration/spec_helper.rb +17 -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 +43 -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 +48 -17
- data/spec/model/hooks_spec.rb +5 -300
- data/spec/model/inflector_spec.rb +1 -1
- data/spec/model/model_spec.rb +29 -339
- data/spec/model/plugins_spec.rb +2 -16
- data/spec/model/record_spec.rb +33 -129
- data/spec/model/spec_helper.rb +5 -15
- data/spec/model/validations_spec.rb +1 -1
- data/spec/sequel_warning.rb +1 -12
- metadata +19 -65
- data/doc/active_record.rdoc +0 -927
- data/lib/sequel/adapters/cubrid.rb +0 -160
- 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/do.rb +0 -166
- 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/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/swift.rb +0 -169
- 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
|
@@ -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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen-string-literal: true
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require_relative '../shared/mssql'
|
|
4
4
|
|
|
5
5
|
module Sequel
|
|
6
6
|
module ODBC
|
|
@@ -12,15 +12,10 @@ module Sequel
|
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
# Database and Dataset instance methods for MSSQL specific
|
|
16
|
-
# support via ODBC.
|
|
17
15
|
module MSSQL
|
|
18
16
|
module DatabaseMethods
|
|
19
17
|
include Sequel::MSSQL::DatabaseMethods
|
|
20
|
-
|
|
21
|
-
Sequel::Deprecation.deprecate_constant(self, :LAST_INSERT_ID_SQL)
|
|
22
|
-
|
|
23
|
-
# Return the last inserted identity value.
|
|
18
|
+
|
|
24
19
|
def execute_insert(sql, opts=OPTS)
|
|
25
20
|
synchronize(opts[:server]) do |conn|
|
|
26
21
|
begin
|
|
@@ -43,13 +38,10 @@ module Sequel
|
|
|
43
38
|
class Dataset < ODBC::Dataset
|
|
44
39
|
include Sequel::MSSQL::DatasetMethods
|
|
45
40
|
|
|
46
|
-
# Use ODBC format, not Microsoft format, as the ODBC layer does
|
|
47
|
-
# some translation. MSSQL version is over-ridden to allow 3 millisecond decimal places
|
|
48
|
-
TIMESTAMP_FORMAT="{ts '%Y-%m-%d %H:%M:%S%N'}".freeze
|
|
49
|
-
Sequel::Deprecation.deprecate_constant(self, :TIMESTAMP_FORMAT)
|
|
50
|
-
|
|
51
41
|
private
|
|
52
42
|
|
|
43
|
+
# Use ODBC format, not Microsoft format, as the ODBC layer does
|
|
44
|
+
# some translation, but allow for millisecond precision.
|
|
53
45
|
def default_timestamp_format
|
|
54
46
|
"{ts '%Y-%m-%d %H:%M:%S%N'}"
|
|
55
47
|
end
|
data/lib/sequel/adapters/odbc.rb
CHANGED
|
@@ -11,13 +11,6 @@ module Sequel
|
|
|
11
11
|
class Database < Sequel::Database
|
|
12
12
|
set_adapter_scheme :odbc
|
|
13
13
|
|
|
14
|
-
GUARDED_DRV_NAME = /^\{.+\}$/.freeze
|
|
15
|
-
Sequel::Deprecation.deprecate_constant(self, :GUARDED_DRV_NAME)
|
|
16
|
-
DRV_NAME_GUARDS = '{%s}'.freeze
|
|
17
|
-
Sequel::Deprecation.deprecate_constant(self, :DRV_NAME_GUARDS)
|
|
18
|
-
DISCONNECT_ERRORS = /\A08S01/.freeze
|
|
19
|
-
Sequel::Deprecation.deprecate_constant(self, :DISCONNECT_ERRORS)
|
|
20
|
-
|
|
21
14
|
def connect(server)
|
|
22
15
|
opts = server_opts(server)
|
|
23
16
|
conn = if opts.include?(:drvconnect)
|
|
@@ -93,18 +86,6 @@ module Sequel
|
|
|
93
86
|
end
|
|
94
87
|
|
|
95
88
|
class Dataset < Sequel::Dataset
|
|
96
|
-
BOOL_TRUE = '1'.freeze
|
|
97
|
-
Sequel::Deprecation.deprecate_constant(self, :BOOL_TRUE)
|
|
98
|
-
BOOL_FALSE = '0'.freeze
|
|
99
|
-
Sequel::Deprecation.deprecate_constant(self, :BOOL_FALSE)
|
|
100
|
-
ODBC_DATE_FORMAT = "{d '%Y-%m-%d'}".freeze
|
|
101
|
-
Sequel::Deprecation.deprecate_constant(self, :ODBC_DATE_FORMAT)
|
|
102
|
-
TIMESTAMP_FORMAT="{ts '%Y-%m-%d %H:%M:%S'}".freeze
|
|
103
|
-
Sequel::Deprecation.deprecate_constant(self, :TIMESTAMP_FORMAT)
|
|
104
|
-
|
|
105
|
-
Database::DatasetClass = self
|
|
106
|
-
Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
|
|
107
|
-
|
|
108
89
|
def fetch_rows(sql)
|
|
109
90
|
execute(sql) do |s|
|
|
110
91
|
i = -1
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen-string-literal: true
|
|
2
2
|
|
|
3
3
|
require 'oci8'
|
|
4
|
-
|
|
4
|
+
require_relative 'shared/oracle'
|
|
5
5
|
|
|
6
6
|
module Sequel
|
|
7
7
|
module Oracle
|
|
@@ -11,14 +11,15 @@ module Sequel
|
|
|
11
11
|
|
|
12
12
|
# ORA-00028: your session has been killed
|
|
13
13
|
# ORA-01012: not logged on
|
|
14
|
+
# ORA-02396: exceeded maximum idle time, please connect again
|
|
14
15
|
# ORA-03113: end-of-file on communication channel
|
|
15
16
|
# ORA-03114: not connected to ORACLE
|
|
16
|
-
CONNECTION_ERROR_CODES = [ 28, 1012, 3113, 3114 ]
|
|
17
|
+
CONNECTION_ERROR_CODES = [ 28, 1012, 2396, 3113, 3114 ].freeze
|
|
17
18
|
|
|
18
19
|
ORACLE_TYPES = {
|
|
19
20
|
:blob=>lambda{|b| Sequel::SQL::Blob.new(b.read)},
|
|
20
|
-
:clob
|
|
21
|
-
}
|
|
21
|
+
:clob=>:read.to_proc
|
|
22
|
+
}.freeze
|
|
22
23
|
|
|
23
24
|
# Hash of conversion procs for this database.
|
|
24
25
|
attr_reader :conversion_procs
|
|
@@ -40,8 +41,8 @@ module Sequel
|
|
|
40
41
|
|
|
41
42
|
# The ruby-oci8 gem which retrieves oracle columns with a type of
|
|
42
43
|
# DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE is complex based on the
|
|
43
|
-
# ruby version
|
|
44
|
-
# In the now standard case of
|
|
44
|
+
# ruby version and Oracle version (9 or later)
|
|
45
|
+
# In the now standard case of Oracle 9 or later, the timezone
|
|
45
46
|
# is determined by the Oracle session timezone. Thus if the user
|
|
46
47
|
# requests Sequel provide UTC timezone to the application,
|
|
47
48
|
# we need to alter the session timezone to be UTC
|
|
@@ -114,7 +115,7 @@ module Sequel
|
|
|
114
115
|
|
|
115
116
|
PS_TYPES = {'string'=>String, 'integer'=>Integer, 'float'=>Float,
|
|
116
117
|
'decimal'=>Float, 'date'=>Time, 'datetime'=>Time,
|
|
117
|
-
'time'=>Time, 'boolean'=>String, 'blob'=>OCI8::BLOB}
|
|
118
|
+
'time'=>Time, 'boolean'=>String, 'blob'=>OCI8::BLOB}.freeze
|
|
118
119
|
def cursor_bind_params(conn, cursor, args)
|
|
119
120
|
i = 0
|
|
120
121
|
args.map do |arg, type|
|
|
@@ -324,12 +325,6 @@ module Sequel
|
|
|
324
325
|
class Dataset < Sequel::Dataset
|
|
325
326
|
include DatasetMethods
|
|
326
327
|
|
|
327
|
-
Database::DatasetClass = self
|
|
328
|
-
Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
|
|
329
|
-
|
|
330
|
-
PREPARED_ARG_PLACEHOLDER = ':'.freeze
|
|
331
|
-
Sequel::Deprecation.deprecate_constant(self, :PREPARED_ARG_PLACEHOLDER)
|
|
332
|
-
|
|
333
328
|
# Oracle already supports named bind arguments, so use directly.
|
|
334
329
|
module ArgumentMapper
|
|
335
330
|
include Sequel::Dataset::ArgumentMapper
|