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,21 +1,14 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative '../shared/mssql'
|
4
4
|
|
5
5
|
module Sequel
|
6
6
|
module ADO
|
7
|
-
# Database and Dataset instance methods for MSSQL specific
|
8
|
-
# support via ADO.
|
9
7
|
module MSSQL
|
10
8
|
module DatabaseMethods
|
11
9
|
include Sequel::MSSQL::DatabaseMethods
|
12
|
-
# Query to use to get the number of rows affected by an update or
|
13
|
-
# delete query.
|
14
|
-
ROWS_AFFECTED = "SELECT @@ROWCOUNT AS AffectedRows"
|
15
|
-
Sequel::Deprecation.deprecate_constant(self, :ROWS_AFFECTED)
|
16
|
-
|
17
10
|
# Issue a separate query to get the rows modified. ADO appears to
|
18
|
-
# use pass by reference with an integer variable, which is
|
11
|
+
# use pass by reference with an integer variable, which is
|
19
12
|
# not supported directly in ruby, and I'm not aware of a workaround.
|
20
13
|
def execute_dui(sql, opts=OPTS)
|
21
14
|
return super unless @opts[:provider]
|
@@ -1,11 +1,9 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
require 'amalgalite'
|
4
|
-
|
4
|
+
require_relative 'shared/sqlite'
|
5
5
|
|
6
6
|
module Sequel
|
7
|
-
# Top level module for holding all Amalgalite-related modules and classes
|
8
|
-
# for Sequel.
|
9
7
|
module Amalgalite
|
10
8
|
# Type conversion map class for Sequel's use of Amalgamite
|
11
9
|
class SequelTypeMap < ::Amalgalite::TypeMaps::DefaultMap
|
@@ -50,15 +48,13 @@ module Sequel
|
|
50
48
|
if value.is_a?(::Amalgalite::Blob)
|
51
49
|
SQL::Blob.new(value.to_s)
|
52
50
|
elsif value.is_a?(String) && declared_type
|
53
|
-
(meth = self.class.sql_to_method(declared_type.downcase)) ?
|
51
|
+
(meth = self.class.sql_to_method(declared_type.downcase)) ? public_send(meth, value) : value
|
54
52
|
else
|
55
53
|
super
|
56
54
|
end
|
57
55
|
end
|
58
56
|
end
|
59
57
|
|
60
|
-
# Database class for SQLite databases used with Sequel and the
|
61
|
-
# amalgalite driver.
|
62
58
|
class Database < Sequel::Database
|
63
59
|
include ::Sequel::SQLite::DatabaseMethods
|
64
60
|
|
@@ -85,28 +81,23 @@ module Sequel
|
|
85
81
|
db
|
86
82
|
end
|
87
83
|
|
88
|
-
# Amalgalite is just the SQLite database without a separate SQLite installation.
|
89
84
|
def database_type
|
90
85
|
:sqlite
|
91
86
|
end
|
92
87
|
|
93
|
-
# Run the given SQL with the given arguments. Returns nil.
|
94
88
|
def execute_ddl(sql, opts=OPTS)
|
95
89
|
_execute(sql, opts){|conn| log_connection_yield(sql, conn){conn.execute_batch(sql)}}
|
96
90
|
nil
|
97
91
|
end
|
98
92
|
|
99
|
-
# Run the given SQL with the given arguments and return the number of changed rows.
|
100
93
|
def execute_dui(sql, opts=OPTS)
|
101
94
|
_execute(sql, opts){|conn| log_connection_yield(sql, conn){conn.execute_batch(sql)}; conn.row_changes}
|
102
95
|
end
|
103
96
|
|
104
|
-
# Run the given SQL with the given arguments and return the last inserted row id.
|
105
97
|
def execute_insert(sql, opts=OPTS)
|
106
98
|
_execute(sql, opts){|conn| log_connection_yield(sql, conn){conn.execute_batch(sql)}; conn.last_insert_rowid}
|
107
99
|
end
|
108
100
|
|
109
|
-
# Run the given SQL with the given arguments and yield each row.
|
110
101
|
def execute(sql, opts=OPTS)
|
111
102
|
_execute(sql, opts) do |conn|
|
112
103
|
begin
|
@@ -149,20 +140,14 @@ module Sequel
|
|
149
140
|
Dataset
|
150
141
|
end
|
151
142
|
|
152
|
-
# Both main error classes that Amalgalite raises
|
153
143
|
def database_error_classes
|
154
144
|
[::Amalgalite::Error, ::Amalgalite::SQLite3::Error]
|
155
145
|
end
|
156
146
|
end
|
157
147
|
|
158
|
-
# Dataset class for SQLite datasets that use the amalgalite driver.
|
159
148
|
class Dataset < Sequel::Dataset
|
160
149
|
include ::Sequel::SQLite::DatasetMethods
|
161
150
|
|
162
|
-
Database::DatasetClass = self
|
163
|
-
Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
|
164
|
-
|
165
|
-
# Yield a hash for each row in the dataset.
|
166
151
|
def fetch_rows(sql)
|
167
152
|
execute(sql) do |stmt|
|
168
153
|
self.columns = cols = stmt.result_fields.map{|c| output_identifier(c)}
|
@@ -177,7 +162,7 @@ module Sequel
|
|
177
162
|
|
178
163
|
private
|
179
164
|
|
180
|
-
# Quote the string using the
|
165
|
+
# Quote the string using the connection instance method.
|
181
166
|
def literal_string_append(sql, v)
|
182
167
|
db.synchronize(@opts[:server]){|c| sql << c.quote(v)}
|
183
168
|
end
|
@@ -1,24 +1,11 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
require 'ibm_db'
|
4
|
-
|
4
|
+
require_relative 'shared/db2'
|
5
5
|
|
6
6
|
module Sequel
|
7
7
|
|
8
8
|
module IBMDB
|
9
|
-
# SEQUEL5: Remove
|
10
|
-
@convert_smallint_to_bool = true
|
11
|
-
class << self
|
12
|
-
def convert_smallint_to_bool
|
13
|
-
Sequel::Deprecation.deprecate("Sequel::IBMDB.convert_smallint_to_bool", "Call this method on the Database instance")
|
14
|
-
@convert_smallint_to_bool
|
15
|
-
end
|
16
|
-
def convert_smallint_to_bool=(v)
|
17
|
-
Sequel::Deprecation.deprecate("Sequel::IBMDB.convert_smallint_to_bool=", "Call this method on the Database instance")
|
18
|
-
@convert_smallint_to_bool = v
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
9
|
tt = Class.new do
|
23
10
|
def boolean(s) !s.to_i.zero? end
|
24
11
|
def int(s) s.to_i end
|
@@ -31,19 +18,15 @@ module Sequel
|
|
31
18
|
:blob => ::Sequel::SQL::Blob.method(:new),
|
32
19
|
:time => ::Sequel.method(:string_to_time),
|
33
20
|
:date => ::Sequel.method(:string_to_date)
|
34
|
-
}
|
21
|
+
}.freeze
|
35
22
|
|
36
|
-
# Wraps an underlying connection to DB2 using IBM_DB
|
23
|
+
# Wraps an underlying connection to DB2 using IBM_DB, to provide a more
|
24
|
+
# rubyish API.
|
37
25
|
class Connection
|
38
26
|
# A hash with prepared statement name symbol keys, where each value is
|
39
27
|
# a two element array with an sql string and cached Statement value.
|
40
28
|
attr_reader :prepared_statements
|
41
29
|
|
42
|
-
def prepared_statements=(v)
|
43
|
-
Sequel::Deprecation.deprecate("Sequel::IBMDB::Connection#prepared_statements=", "Use replace on the hash instead of reassigning it")
|
44
|
-
@prepared_statements = v
|
45
|
-
end
|
46
|
-
|
47
30
|
# Error class for exceptions raised by the connection.
|
48
31
|
class Error < StandardError
|
49
32
|
attr_reader :sqlstate
|
@@ -199,14 +182,7 @@ module Sequel
|
|
199
182
|
attr_reader :conversion_procs
|
200
183
|
|
201
184
|
# Whether to convert smallint values to bool for this Database instance
|
202
|
-
|
203
|
-
|
204
|
-
# SEQUEL5: Remove
|
205
|
-
attr_writer :convert_smallint_to_bool
|
206
|
-
def convert_smallint_to_bool
|
207
|
-
v = @convert_smallint_to_bool
|
208
|
-
v.nil? ? Sequel::IBMDB.instance_variable_get(:@convert_smallint_to_bool) : v
|
209
|
-
end
|
185
|
+
attr_accessor :convert_smallint_to_bool
|
210
186
|
|
211
187
|
# Create a new connection object for the given server.
|
212
188
|
def connect(server)
|
@@ -229,7 +205,6 @@ module Sequel
|
|
229
205
|
Connection.new(connection_params)
|
230
206
|
end
|
231
207
|
|
232
|
-
# Execute the given SQL on the database.
|
233
208
|
def execute(sql, opts=OPTS, &block)
|
234
209
|
if sql.is_a?(Symbol)
|
235
210
|
execute_prepared_statement(sql, opts, &block)
|
@@ -240,8 +215,6 @@ module Sequel
|
|
240
215
|
raise_error(e)
|
241
216
|
end
|
242
217
|
|
243
|
-
# Execute the given SQL on the database, returning the last inserted
|
244
|
-
# identity value.
|
245
218
|
def execute_insert(sql, opts=OPTS)
|
246
219
|
synchronize(opts[:server]) do |c|
|
247
220
|
if sql.is_a?(Symbol)
|
@@ -291,7 +264,8 @@ module Sequel
|
|
291
264
|
|
292
265
|
private
|
293
266
|
|
294
|
-
# Execute the given SQL on the database
|
267
|
+
# Execute the given SQL on the database, yielding the related statement if a block
|
268
|
+
# is given or returning the number of affected rows if not, and ensuring the statement is freed.
|
295
269
|
def _execute(conn, sql, opts)
|
296
270
|
stmt = log_connection_yield(sql, conn){conn.execute(sql)}
|
297
271
|
if block_given?
|
@@ -304,7 +278,7 @@ module Sequel
|
|
304
278
|
end
|
305
279
|
|
306
280
|
def adapter_initialize
|
307
|
-
|
281
|
+
@convert_smallint_to_bool = typecast_value_boolean(opts.fetch(:convert_smallint_to_bool, true))
|
308
282
|
@conversion_procs = DB2_TYPES.dup
|
309
283
|
@conversion_procs[:timestamp] = method(:to_application_timestamp)
|
310
284
|
end
|
@@ -381,9 +355,6 @@ module Sequel
|
|
381
355
|
class Dataset < Sequel::Dataset
|
382
356
|
include Sequel::DB2::DatasetMethods
|
383
357
|
|
384
|
-
Database::DatasetClass = self
|
385
|
-
Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
|
386
|
-
|
387
358
|
module CallableStatementMethods
|
388
359
|
# Extend given dataset with this module so subselects inside subselects in
|
389
360
|
# prepared statements work.
|
@@ -398,14 +369,8 @@ module Sequel
|
|
398
369
|
|
399
370
|
PreparedStatementMethods = prepared_statements_module(:prepare_bind, Sequel::Dataset::UnnumberedArgumentMapper)
|
400
371
|
|
401
|
-
# Override the default IBMDB.convert_smallint_to_bool setting for this dataset.
|
402
|
-
def convert_smallint_to_bool=(v)
|
403
|
-
Sequel::Deprecation.deprecate("Sequel::IBMDB::Dataset#convert_smallint_to_bool=", "Call with_convert_smallint_to_bool instead, which returns a modified copy instead of modifying the object")
|
404
|
-
@opts[:convert_smallint_to_bool] = v
|
405
|
-
end
|
406
|
-
|
407
372
|
# Whether to convert smallint to boolean arguments for this dataset.
|
408
|
-
# Defaults to the
|
373
|
+
# Defaults to the Database setting.
|
409
374
|
def convert_smallint_to_bool
|
410
375
|
opts.has_key?(:convert_smallint_to_bool) ? opts[:convert_smallint_to_bool] : db.convert_smallint_to_bool
|
411
376
|
end
|
@@ -415,7 +380,6 @@ module Sequel
|
|
415
380
|
clone(:convert_smallint_to_bool=>v)
|
416
381
|
end
|
417
382
|
|
418
|
-
# Fetch the rows from the database and yield plain hashes.
|
419
383
|
def fetch_rows(sql)
|
420
384
|
execute(sql) do |stmt|
|
421
385
|
columns = []
|
data/lib/sequel/adapters/jdbc.rb
CHANGED
@@ -1,37 +1,19 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
require 'java'
|
4
|
-
|
4
|
+
require_relative 'utils/stored_procedures'
|
5
5
|
|
6
6
|
module Sequel
|
7
|
-
# Houses Sequel's JDBC support when running on JRuby.
|
8
7
|
module JDBC
|
9
|
-
# Make it accesing the java.lang hierarchy more ruby friendly.
|
10
|
-
module JavaLang
|
11
|
-
include_package 'java.lang'
|
12
|
-
end
|
13
|
-
Sequel::Deprecation.deprecate_constant(self, :JavaLang)
|
14
|
-
|
15
8
|
# Make it accesing the java.sql hierarchy more ruby friendly.
|
16
9
|
module JavaSQL
|
17
10
|
include_package 'java.sql'
|
18
11
|
end
|
19
12
|
|
20
|
-
# Make it accesing the javax.naming hierarchy more ruby friendly.
|
21
|
-
module JavaxNaming
|
22
|
-
include_package 'javax.naming'
|
23
|
-
end
|
24
|
-
Sequel::Deprecation.deprecate_constant(self, :JavaxNaming)
|
25
|
-
|
26
13
|
# Used to identify a jndi connection and to extract the jndi
|
27
14
|
# resource name.
|
28
15
|
JNDI_URI_REGEXP = /\Ajdbc:jndi:(.+)/
|
29
16
|
|
30
|
-
# The types to check for 0 scale to transform :decimal types
|
31
|
-
# to :integer.
|
32
|
-
DECIMAL_TYPE_RE = /number|numeric|decimal/io
|
33
|
-
Sequel::Deprecation.deprecate_constant(self, :DECIMAL_TYPE_RE)
|
34
|
-
|
35
17
|
# Contains procs keyed on subadapter type that extend the
|
36
18
|
# given database object so it supports the correct database type.
|
37
19
|
DATABASE_SETUP = {}
|
@@ -100,8 +82,7 @@ module Sequel
|
|
100
82
|
end
|
101
83
|
end
|
102
84
|
|
103
|
-
|
104
|
-
o = INSTANCE
|
85
|
+
o = new
|
105
86
|
MAP = Hash.new(o.method(:Object))
|
106
87
|
types = Java::JavaSQL::Types
|
107
88
|
|
@@ -143,16 +124,9 @@ module Sequel
|
|
143
124
|
|
144
125
|
MAP.freeze
|
145
126
|
BASIC_MAP.freeze
|
146
|
-
|
147
|
-
# freeze # SEQUEL5
|
127
|
+
freeze
|
148
128
|
end
|
149
129
|
|
150
|
-
# SEQUEL5: Remove
|
151
|
-
Type_Convertor = TypeConvertor
|
152
|
-
Sequel::Deprecation.deprecate_constant(self, :TypeConvertor)
|
153
|
-
|
154
|
-
# JDBC Databases offer a fairly uniform interface that does not change
|
155
|
-
# much based on the sub adapter.
|
156
130
|
class Database < Sequel::Database
|
157
131
|
set_adapter_scheme :jdbc
|
158
132
|
|
@@ -202,7 +176,8 @@ module Sequel
|
|
202
176
|
end
|
203
177
|
end
|
204
178
|
|
205
|
-
# Connect to the database using JavaSQL::DriverManager.getConnection
|
179
|
+
# Connect to the database using JavaSQL::DriverManager.getConnection, and falling back
|
180
|
+
# to driver.new.connect if the driver is known.
|
206
181
|
def connect(server)
|
207
182
|
opts = server_opts(server)
|
208
183
|
conn = if jndi?
|
@@ -245,8 +220,6 @@ module Sequel
|
|
245
220
|
c.close
|
246
221
|
end
|
247
222
|
|
248
|
-
# Execute the given SQL. If a block is given, if should be a SELECT
|
249
|
-
# statement or something else that returns rows.
|
250
223
|
def execute(sql, opts=OPTS, &block)
|
251
224
|
return call_sproc(sql, opts, &block) if opts[:sproc]
|
252
225
|
return execute_prepared_statement(sql, opts, &block) if [Symbol, Dataset].any?{|c| sql.is_a?(c)}
|
@@ -273,16 +246,12 @@ module Sequel
|
|
273
246
|
end
|
274
247
|
alias execute_dui execute
|
275
248
|
|
276
|
-
# Execute the given DDL SQL, which should not return any
|
277
|
-
# values or rows.
|
278
249
|
def execute_ddl(sql, opts=OPTS)
|
279
250
|
opts = Hash[opts]
|
280
251
|
opts[:type] = :ddl
|
281
252
|
execute(sql, opts)
|
282
253
|
end
|
283
254
|
|
284
|
-
# Execute the given INSERT SQL, returning the last inserted
|
285
|
-
# row id.
|
286
255
|
def execute_insert(sql, opts=OPTS)
|
287
256
|
opts = Hash[opts]
|
288
257
|
opts[:type] = :insert
|
@@ -520,27 +489,24 @@ module Sequel
|
|
520
489
|
# Support DateTime objects used in bound variables
|
521
490
|
def java_sql_datetime(datetime)
|
522
491
|
ts = java.sql.Timestamp.new(Time.local(datetime.year, datetime.month, datetime.day, datetime.hour, datetime.min, datetime.sec).to_i * 1000)
|
523
|
-
ts.setNanos((datetime.sec_fraction *
|
492
|
+
ts.setNanos((datetime.sec_fraction * 1000000000).to_i)
|
524
493
|
ts
|
525
494
|
end
|
526
495
|
|
527
496
|
# Support fractional seconds for Time objects used in bound variables
|
528
497
|
def java_sql_timestamp(time)
|
529
498
|
ts = java.sql.Timestamp.new(time.to_i * 1000)
|
530
|
-
|
531
|
-
ts.setNanos((RUBY_VERSION >= '1.9.0' && time.nsec != 0) ? time.nsec : time.usec * 1000)
|
499
|
+
ts.setNanos(time.nsec)
|
532
500
|
ts
|
533
501
|
end
|
534
502
|
|
535
|
-
# Log the given SQL and then execute it on the connection, used by
|
536
|
-
# the transaction code.
|
537
503
|
def log_connection_execute(conn, sql)
|
538
504
|
statement(conn){|s| log_connection_yield(sql, conn){s.execute(sql)}}
|
539
505
|
end
|
540
506
|
|
541
507
|
# By default, there is no support for determining the last inserted
|
542
508
|
# id, so return nil. This method should be overridden in
|
543
|
-
#
|
509
|
+
# subadapters.
|
544
510
|
def last_insert_id(conn, opts)
|
545
511
|
nil
|
546
512
|
end
|
@@ -548,7 +514,7 @@ module Sequel
|
|
548
514
|
# Yield the metadata for this database
|
549
515
|
def metadata(*args, &block)
|
550
516
|
synchronize do |c|
|
551
|
-
result = c.getMetaData.
|
517
|
+
result = c.getMetaData.public_send(*args)
|
552
518
|
begin
|
553
519
|
metadata_dataset.send(:process_result_set, result, &block)
|
554
520
|
ensure
|
@@ -610,8 +576,7 @@ module Sequel
|
|
610
576
|
cps.setString(i, nil)
|
611
577
|
end
|
612
578
|
|
613
|
-
# Return the connection.
|
614
|
-
# connection object before adding it to the connection pool.
|
579
|
+
# Return the connection. Can be overridden in subadapters for database specific setup.
|
615
580
|
def setup_connection(conn)
|
616
581
|
conn
|
617
582
|
end
|
@@ -629,7 +594,6 @@ module Sequel
|
|
629
594
|
end
|
630
595
|
end
|
631
596
|
|
632
|
-
# Parse the table schema for the given table.
|
633
597
|
def schema_parse_table(table, opts=OPTS)
|
634
598
|
m = output_identifier_meth(opts[:dataset])
|
635
599
|
schema, table = metadata_schema_and_table(table, opts)
|
@@ -668,8 +632,7 @@ module Sequel
|
|
668
632
|
ts
|
669
633
|
end
|
670
634
|
|
671
|
-
#
|
672
|
-
# parsing the schema.
|
635
|
+
# Skip tables in the INFORMATION_SCHEMA when parsing columns.
|
673
636
|
def schema_parse_table_skip?(h, schema)
|
674
637
|
h[:table_schem] == 'INFORMATION_SCHEMA'
|
675
638
|
end
|
@@ -681,9 +644,8 @@ module Sequel
|
|
681
644
|
# Called before loading subadapter-specific code, necessary so that subadapter initialization code
|
682
645
|
# that runs queries works correctly. This cannot be overriding in subadapters,
|
683
646
|
def setup_type_convertor_map_early
|
684
|
-
|
685
|
-
@
|
686
|
-
@basic_type_convertor_map = Type_Convertor::BASIC_MAP.dup
|
647
|
+
@type_convertor_map = TypeConvertor::MAP.merge(Java::JavaSQL::Types::TIMESTAMP=>method(:timestamp_convert))
|
648
|
+
@basic_type_convertor_map = TypeConvertor::BASIC_MAP.dup
|
687
649
|
end
|
688
650
|
|
689
651
|
# Yield a new statement object, and ensure that it is closed before returning.
|
@@ -703,27 +665,17 @@ module Sequel
|
|
703
665
|
to_application_timestamp([v.getYear + 1900, v.getMonth + 1, v.getDate, v.getHours, v.getMinutes, v.getSeconds, v.getNanos])
|
704
666
|
end
|
705
667
|
end
|
706
|
-
|
707
|
-
# SEQUEL5: Remove
|
708
|
-
def timestamp_convertor
|
709
|
-
Sequel::Deprecation.deprecate("Sequel::JDBC::Database#timestamp_convertor", "Use method(:timestamp_convert) instead")
|
710
|
-
method(:timestamp_convert)
|
711
|
-
end
|
712
668
|
end
|
713
669
|
|
714
670
|
class Dataset < Sequel::Dataset
|
715
671
|
include StoredProcedures
|
716
672
|
|
717
|
-
Database::DatasetClass = self
|
718
|
-
Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
|
719
|
-
|
720
673
|
PreparedStatementMethods = prepared_statements_module(
|
721
674
|
"sql = self; opts = Hash[opts]; opts[:arguments] = bind_arguments",
|
722
675
|
Sequel::Dataset::UnnumberedArgumentMapper,
|
723
676
|
%w"execute execute_dui") do
|
724
677
|
private
|
725
678
|
|
726
|
-
# Same as execute, explicit due to intricacies of alias and super.
|
727
679
|
def execute_insert(sql, opts=OPTS)
|
728
680
|
sql = self
|
729
681
|
opts = Hash[opts]
|
@@ -739,7 +691,6 @@ module Sequel
|
|
739
691
|
%w"execute execute_dui") do
|
740
692
|
private
|
741
693
|
|
742
|
-
# Same as execute, explicit due to intricacies of alias and super.
|
743
694
|
def execute_insert(sql, opts=OPTS)
|
744
695
|
sql = @opts[:sproc_name]
|
745
696
|
opts = Hash[opts]
|
@@ -750,17 +701,6 @@ module Sequel
|
|
750
701
|
end
|
751
702
|
end
|
752
703
|
|
753
|
-
# Whether to convert some Java types to ruby types when retrieving rows.
|
754
|
-
def convert_types
|
755
|
-
Sequel::Deprecation.deprecate("Sequel::JDBC::Dataset#convert_types", "The private #convert_types? method returns whether to convert types for this dataset")
|
756
|
-
@opts[:convert_types]
|
757
|
-
end
|
758
|
-
def convert_types=(v)
|
759
|
-
Sequel::Deprecation.deprecate("Sequel::JDBC::Dataset#convert_types=", "Switch to using #with_convert_types, which returns a modified copy")
|
760
|
-
@opts[:convert_types] = v
|
761
|
-
end
|
762
|
-
|
763
|
-
# Correctly return rows from the database and return them as hashes.
|
764
704
|
def fetch_rows(sql, &block)
|
765
705
|
execute(sql){|result| process_result_set(result, &block)}
|
766
706
|
self
|