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
|
@@ -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
|
|
|
@@ -83,10 +65,14 @@ module Sequel
|
|
|
83
65
|
copier = copy_manager.copy_in(copy_into_sql(table, opts))
|
|
84
66
|
if block_given?
|
|
85
67
|
while buf = yield
|
|
86
|
-
|
|
68
|
+
java_bytes = buf.to_java_bytes
|
|
69
|
+
copier.writeToCopy(java_bytes, 0, java_bytes.length)
|
|
87
70
|
end
|
|
88
71
|
else
|
|
89
|
-
data.each
|
|
72
|
+
data.each do |d|
|
|
73
|
+
java_bytes = d.to_java_bytes
|
|
74
|
+
copier.writeToCopy(java_bytes, 0, java_bytes.length)
|
|
75
|
+
end
|
|
90
76
|
end
|
|
91
77
|
rescue Exception => e
|
|
92
78
|
copier.cancelCopy if copier
|
|
@@ -149,12 +135,6 @@ module Sequel
|
|
|
149
135
|
|
|
150
136
|
private
|
|
151
137
|
|
|
152
|
-
# SEQUEL5: Remove
|
|
153
|
-
def conversion_procs_updated
|
|
154
|
-
super
|
|
155
|
-
Sequel.synchronize{@oid_convertor_map = {}}
|
|
156
|
-
end
|
|
157
|
-
|
|
158
138
|
DATABASE_ERROR_CLASSES = [NativeException].freeze
|
|
159
139
|
def database_error_classes
|
|
160
140
|
DATABASE_ERROR_CLASSES
|
|
@@ -171,6 +151,21 @@ module Sequel
|
|
|
171
151
|
nil
|
|
172
152
|
end
|
|
173
153
|
|
|
154
|
+
# Work around issue when using Sequel's bound variable support where the
|
|
155
|
+
# same SQL is used in different bound variable calls, but the schema has
|
|
156
|
+
# changed between the calls. This is necessary as jdbc-postgres versions
|
|
157
|
+
# after 9.4.1200 violate the JDBC API. These versions cache separate
|
|
158
|
+
# PreparedStatement instances, which are eventually prepared server side after the
|
|
159
|
+
# prepareThreshold is met. The JDBC API violation is that PreparedStatement#close
|
|
160
|
+
# does not release the server side prepared statement.
|
|
161
|
+
def prepare_jdbc_statement(conn, sql, opts)
|
|
162
|
+
ps = super
|
|
163
|
+
unless opts[:name]
|
|
164
|
+
ps.prepare_threshold = 0
|
|
165
|
+
end
|
|
166
|
+
ps
|
|
167
|
+
end
|
|
168
|
+
|
|
174
169
|
# If the given argument is a recognized PostgreSQL-specific type, create
|
|
175
170
|
# a PGObject instance with unknown type and the bound argument string value,
|
|
176
171
|
# and set that as the prepared statement argument.
|
|
@@ -206,13 +201,8 @@ module Sequel
|
|
|
206
201
|
end
|
|
207
202
|
end
|
|
208
203
|
|
|
209
|
-
# Dataset subclass used for datasets that connect to PostgreSQL via JDBC.
|
|
210
204
|
class Dataset < JDBC::Dataset
|
|
211
205
|
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
206
|
|
|
217
207
|
private
|
|
218
208
|
|
|
@@ -229,7 +219,7 @@ module Sequel
|
|
|
229
219
|
STRING_TYPE = Java::JavaSQL::Types::VARCHAR
|
|
230
220
|
ARRAY_TYPE = Java::JavaSQL::Types::ARRAY
|
|
231
221
|
ARRAY_METHOD = Postgres.method(:RubyPGArray)
|
|
232
|
-
PG_SPECIFIC_TYPES = [ARRAY_TYPE, Java::JavaSQL::Types::OTHER, Java::JavaSQL::Types::STRUCT]
|
|
222
|
+
PG_SPECIFIC_TYPES = [ARRAY_TYPE, Java::JavaSQL::Types::OTHER, Java::JavaSQL::Types::STRUCT].freeze
|
|
233
223
|
HSTORE_METHOD = Postgres.method(:RubyPGHstore)
|
|
234
224
|
|
|
235
225
|
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/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
|
|
@@ -435,6 +404,10 @@ module Sequel
|
|
|
435
404
|
cps = cps[1]
|
|
436
405
|
else
|
|
437
406
|
log_connection_yield("CLOSE #{name}", conn){cps[1].close} if cps
|
|
407
|
+
if name
|
|
408
|
+
opts = Hash[opts]
|
|
409
|
+
opts[:name] = name
|
|
410
|
+
end
|
|
438
411
|
cps = log_connection_yield("PREPARE#{" #{name}:" if name} #{sql}", conn){prepare_jdbc_statement(conn, sql, opts)}
|
|
439
412
|
if size = fetch_size
|
|
440
413
|
cps.setFetchSize(size)
|
|
@@ -520,27 +493,24 @@ module Sequel
|
|
|
520
493
|
# Support DateTime objects used in bound variables
|
|
521
494
|
def java_sql_datetime(datetime)
|
|
522
495
|
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 *
|
|
496
|
+
ts.setNanos((datetime.sec_fraction * 1000000000).to_i)
|
|
524
497
|
ts
|
|
525
498
|
end
|
|
526
499
|
|
|
527
500
|
# Support fractional seconds for Time objects used in bound variables
|
|
528
501
|
def java_sql_timestamp(time)
|
|
529
502
|
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)
|
|
503
|
+
ts.setNanos(time.nsec)
|
|
532
504
|
ts
|
|
533
505
|
end
|
|
534
506
|
|
|
535
|
-
# Log the given SQL and then execute it on the connection, used by
|
|
536
|
-
# the transaction code.
|
|
537
507
|
def log_connection_execute(conn, sql)
|
|
538
508
|
statement(conn){|s| log_connection_yield(sql, conn){s.execute(sql)}}
|
|
539
509
|
end
|
|
540
510
|
|
|
541
511
|
# By default, there is no support for determining the last inserted
|
|
542
512
|
# id, so return nil. This method should be overridden in
|
|
543
|
-
#
|
|
513
|
+
# subadapters.
|
|
544
514
|
def last_insert_id(conn, opts)
|
|
545
515
|
nil
|
|
546
516
|
end
|
|
@@ -548,7 +518,7 @@ module Sequel
|
|
|
548
518
|
# Yield the metadata for this database
|
|
549
519
|
def metadata(*args, &block)
|
|
550
520
|
synchronize do |c|
|
|
551
|
-
result = c.getMetaData.
|
|
521
|
+
result = c.getMetaData.public_send(*args)
|
|
552
522
|
begin
|
|
553
523
|
metadata_dataset.send(:process_result_set, result, &block)
|
|
554
524
|
ensure
|
|
@@ -610,8 +580,7 @@ module Sequel
|
|
|
610
580
|
cps.setString(i, nil)
|
|
611
581
|
end
|
|
612
582
|
|
|
613
|
-
# Return the connection.
|
|
614
|
-
# connection object before adding it to the connection pool.
|
|
583
|
+
# Return the connection. Can be overridden in subadapters for database specific setup.
|
|
615
584
|
def setup_connection(conn)
|
|
616
585
|
conn
|
|
617
586
|
end
|
|
@@ -629,7 +598,6 @@ module Sequel
|
|
|
629
598
|
end
|
|
630
599
|
end
|
|
631
600
|
|
|
632
|
-
# Parse the table schema for the given table.
|
|
633
601
|
def schema_parse_table(table, opts=OPTS)
|
|
634
602
|
m = output_identifier_meth(opts[:dataset])
|
|
635
603
|
schema, table = metadata_schema_and_table(table, opts)
|
|
@@ -668,8 +636,7 @@ module Sequel
|
|
|
668
636
|
ts
|
|
669
637
|
end
|
|
670
638
|
|
|
671
|
-
#
|
|
672
|
-
# parsing the schema.
|
|
639
|
+
# Skip tables in the INFORMATION_SCHEMA when parsing columns.
|
|
673
640
|
def schema_parse_table_skip?(h, schema)
|
|
674
641
|
h[:table_schem] == 'INFORMATION_SCHEMA'
|
|
675
642
|
end
|
|
@@ -679,11 +646,10 @@ module Sequel
|
|
|
679
646
|
end
|
|
680
647
|
|
|
681
648
|
# Called before loading subadapter-specific code, necessary so that subadapter initialization code
|
|
682
|
-
# that runs queries works correctly. This cannot be
|
|
649
|
+
# that runs queries works correctly. This cannot be overridden in subadapters.
|
|
683
650
|
def setup_type_convertor_map_early
|
|
684
|
-
|
|
685
|
-
@
|
|
686
|
-
@basic_type_convertor_map = Type_Convertor::BASIC_MAP.dup
|
|
651
|
+
@type_convertor_map = TypeConvertor::MAP.merge(Java::JavaSQL::Types::TIMESTAMP=>method(:timestamp_convert))
|
|
652
|
+
@basic_type_convertor_map = TypeConvertor::BASIC_MAP.dup
|
|
687
653
|
end
|
|
688
654
|
|
|
689
655
|
# Yield a new statement object, and ensure that it is closed before returning.
|
|
@@ -703,27 +669,17 @@ module Sequel
|
|
|
703
669
|
to_application_timestamp([v.getYear + 1900, v.getMonth + 1, v.getDate, v.getHours, v.getMinutes, v.getSeconds, v.getNanos])
|
|
704
670
|
end
|
|
705
671
|
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
672
|
end
|
|
713
673
|
|
|
714
674
|
class Dataset < Sequel::Dataset
|
|
715
675
|
include StoredProcedures
|
|
716
676
|
|
|
717
|
-
Database::DatasetClass = self
|
|
718
|
-
Sequel::Deprecation.deprecate_constant(Database, :DatasetClass)
|
|
719
|
-
|
|
720
677
|
PreparedStatementMethods = prepared_statements_module(
|
|
721
678
|
"sql = self; opts = Hash[opts]; opts[:arguments] = bind_arguments",
|
|
722
679
|
Sequel::Dataset::UnnumberedArgumentMapper,
|
|
723
680
|
%w"execute execute_dui") do
|
|
724
681
|
private
|
|
725
682
|
|
|
726
|
-
# Same as execute, explicit due to intricacies of alias and super.
|
|
727
683
|
def execute_insert(sql, opts=OPTS)
|
|
728
684
|
sql = self
|
|
729
685
|
opts = Hash[opts]
|
|
@@ -739,7 +695,6 @@ module Sequel
|
|
|
739
695
|
%w"execute execute_dui") do
|
|
740
696
|
private
|
|
741
697
|
|
|
742
|
-
# Same as execute, explicit due to intricacies of alias and super.
|
|
743
698
|
def execute_insert(sql, opts=OPTS)
|
|
744
699
|
sql = @opts[:sproc_name]
|
|
745
700
|
opts = Hash[opts]
|
|
@@ -750,17 +705,6 @@ module Sequel
|
|
|
750
705
|
end
|
|
751
706
|
end
|
|
752
707
|
|
|
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
708
|
def fetch_rows(sql, &block)
|
|
765
709
|
execute(sql){|result| process_result_set(result, &block)}
|
|
766
710
|
self
|
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.
|