sequel 4.36.0 → 5.61.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 +5 -5
- data/CHANGELOG +548 -5749
- data/MIT-LICENSE +1 -1
- data/README.rdoc +265 -159
- data/bin/sequel +34 -12
- data/doc/advanced_associations.rdoc +228 -187
- data/doc/association_basics.rdoc +281 -291
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +86 -51
- data/doc/code_order.rdoc +25 -19
- data/doc/core_extensions.rdoc +104 -63
- data/doc/dataset_basics.rdoc +12 -21
- data/doc/dataset_filtering.rdoc +99 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/fork_safety.rdoc +84 -0
- data/doc/mass_assignment.rdoc +74 -31
- data/doc/migration.rdoc +59 -51
- data/doc/model_dataset_method_design.rdoc +129 -0
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +12 -12
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +58 -68
- data/doc/opening_databases.rdoc +85 -95
- data/doc/postgresql.rdoc +263 -38
- data/doc/prepared_statements.rdoc +29 -24
- data/doc/querying.rdoc +189 -167
- 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.10.0.txt +84 -0
- data/doc/release_notes/5.11.0.txt +83 -0
- data/doc/release_notes/5.12.0.txt +141 -0
- data/doc/release_notes/5.13.0.txt +27 -0
- data/doc/release_notes/5.14.0.txt +63 -0
- data/doc/release_notes/5.15.0.txt +39 -0
- data/doc/release_notes/5.16.0.txt +110 -0
- data/doc/release_notes/5.17.0.txt +31 -0
- data/doc/release_notes/5.18.0.txt +69 -0
- data/doc/release_notes/5.19.0.txt +28 -0
- data/doc/release_notes/5.2.0.txt +33 -0
- data/doc/release_notes/5.20.0.txt +89 -0
- data/doc/release_notes/5.21.0.txt +87 -0
- data/doc/release_notes/5.22.0.txt +48 -0
- data/doc/release_notes/5.23.0.txt +56 -0
- data/doc/release_notes/5.24.0.txt +56 -0
- data/doc/release_notes/5.25.0.txt +32 -0
- data/doc/release_notes/5.26.0.txt +35 -0
- data/doc/release_notes/5.27.0.txt +21 -0
- data/doc/release_notes/5.28.0.txt +16 -0
- data/doc/release_notes/5.29.0.txt +22 -0
- data/doc/release_notes/5.3.0.txt +121 -0
- data/doc/release_notes/5.30.0.txt +20 -0
- data/doc/release_notes/5.31.0.txt +148 -0
- data/doc/release_notes/5.32.0.txt +46 -0
- data/doc/release_notes/5.33.0.txt +24 -0
- data/doc/release_notes/5.34.0.txt +40 -0
- data/doc/release_notes/5.35.0.txt +56 -0
- data/doc/release_notes/5.36.0.txt +60 -0
- data/doc/release_notes/5.37.0.txt +30 -0
- data/doc/release_notes/5.38.0.txt +28 -0
- data/doc/release_notes/5.39.0.txt +19 -0
- data/doc/release_notes/5.4.0.txt +80 -0
- data/doc/release_notes/5.40.0.txt +40 -0
- data/doc/release_notes/5.41.0.txt +25 -0
- data/doc/release_notes/5.42.0.txt +136 -0
- data/doc/release_notes/5.43.0.txt +98 -0
- data/doc/release_notes/5.44.0.txt +32 -0
- data/doc/release_notes/5.45.0.txt +34 -0
- data/doc/release_notes/5.46.0.txt +87 -0
- data/doc/release_notes/5.47.0.txt +59 -0
- data/doc/release_notes/5.48.0.txt +14 -0
- data/doc/release_notes/5.49.0.txt +59 -0
- data/doc/release_notes/5.5.0.txt +61 -0
- data/doc/release_notes/5.50.0.txt +78 -0
- data/doc/release_notes/5.51.0.txt +47 -0
- data/doc/release_notes/5.52.0.txt +87 -0
- data/doc/release_notes/5.53.0.txt +23 -0
- data/doc/release_notes/5.54.0.txt +27 -0
- data/doc/release_notes/5.55.0.txt +21 -0
- data/doc/release_notes/5.56.0.txt +51 -0
- data/doc/release_notes/5.57.0.txt +23 -0
- data/doc/release_notes/5.58.0.txt +31 -0
- data/doc/release_notes/5.59.0.txt +73 -0
- data/doc/release_notes/5.6.0.txt +31 -0
- data/doc/release_notes/5.60.0.txt +22 -0
- data/doc/release_notes/5.61.0.txt +43 -0
- data/doc/release_notes/5.7.0.txt +108 -0
- data/doc/release_notes/5.8.0.txt +170 -0
- data/doc/release_notes/5.9.0.txt +99 -0
- data/doc/schema_modification.rdoc +95 -75
- data/doc/security.rdoc +109 -80
- data/doc/sharding.rdoc +74 -47
- data/doc/sql.rdoc +147 -122
- data/doc/testing.rdoc +43 -20
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +97 -18
- data/doc/validations.rdoc +52 -50
- data/doc/virtual_rows.rdoc +90 -109
- data/lib/sequel/adapters/ado/access.rb +15 -17
- data/lib/sequel/adapters/ado/mssql.rb +6 -15
- data/lib/sequel/adapters/ado.rb +150 -20
- data/lib/sequel/adapters/amalgalite.rb +11 -23
- data/lib/sequel/adapters/ibmdb.rb +47 -55
- data/lib/sequel/adapters/jdbc/db2.rb +29 -39
- data/lib/sequel/adapters/jdbc/derby.rb +58 -54
- data/lib/sequel/adapters/jdbc/h2.rb +93 -35
- data/lib/sequel/adapters/jdbc/hsqldb.rb +24 -31
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -10
- data/lib/sequel/adapters/jdbc/mssql.rb +3 -11
- data/lib/sequel/adapters/jdbc/mysql.rb +17 -20
- data/lib/sequel/adapters/jdbc/oracle.rb +22 -18
- data/lib/sequel/adapters/jdbc/postgresql.rb +69 -71
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +11 -23
- data/lib/sequel/adapters/jdbc/sqlite.rb +47 -11
- data/lib/sequel/adapters/jdbc/sqlserver.rb +34 -9
- data/lib/sequel/adapters/jdbc/transactions.rb +22 -38
- data/lib/sequel/adapters/jdbc.rb +145 -130
- data/lib/sequel/adapters/mock.rb +100 -111
- data/lib/sequel/adapters/mysql.rb +114 -122
- data/lib/sequel/adapters/mysql2.rb +147 -63
- data/lib/sequel/adapters/odbc/db2.rb +1 -1
- data/lib/sequel/adapters/odbc/mssql.rb +8 -14
- data/lib/sequel/adapters/odbc/oracle.rb +11 -0
- data/lib/sequel/adapters/odbc.rb +20 -25
- data/lib/sequel/adapters/oracle.rb +50 -56
- data/lib/sequel/adapters/postgres.rb +305 -327
- data/lib/sequel/adapters/postgresql.rb +1 -1
- data/lib/sequel/adapters/shared/access.rb +74 -78
- data/lib/sequel/adapters/shared/db2.rb +118 -71
- data/lib/sequel/adapters/shared/mssql.rb +301 -220
- data/lib/sequel/adapters/shared/mysql.rb +299 -217
- data/lib/sequel/adapters/shared/oracle.rb +226 -65
- data/lib/sequel/adapters/shared/postgres.rb +935 -395
- data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -126
- data/lib/sequel/adapters/shared/sqlite.rb +447 -173
- data/lib/sequel/adapters/sqlanywhere.rb +48 -35
- data/lib/sequel/adapters/sqlite.rb +156 -111
- data/lib/sequel/adapters/tinytds.rb +30 -38
- data/lib/sequel/adapters/utils/columns_limit_1.rb +22 -0
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +3 -6
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +2 -2
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +87 -0
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
- data/lib/sequel/adapters/utils/replace.rb +1 -4
- data/lib/sequel/adapters/utils/stored_procedures.rb +7 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
- data/lib/sequel/ast_transformer.rb +17 -89
- data/lib/sequel/connection_pool/sharded_single.rb +18 -15
- data/lib/sequel/connection_pool/sharded_threaded.rb +130 -111
- data/lib/sequel/connection_pool/single.rb +18 -13
- data/lib/sequel/connection_pool/threaded.rb +121 -120
- data/lib/sequel/connection_pool.rb +48 -29
- data/lib/sequel/core.rb +351 -301
- data/lib/sequel/database/connecting.rb +69 -57
- data/lib/sequel/database/dataset.rb +13 -5
- data/lib/sequel/database/dataset_defaults.rb +18 -102
- data/lib/sequel/database/features.rb +18 -4
- data/lib/sequel/database/logging.rb +12 -11
- data/lib/sequel/database/misc.rb +180 -122
- data/lib/sequel/database/query.rb +47 -27
- data/lib/sequel/database/schema_generator.rb +178 -84
- data/lib/sequel/database/schema_methods.rb +172 -97
- data/lib/sequel/database/transactions.rb +205 -44
- data/lib/sequel/database.rb +17 -2
- data/lib/sequel/dataset/actions.rb +339 -155
- data/lib/sequel/dataset/dataset_module.rb +46 -0
- data/lib/sequel/dataset/features.rb +90 -35
- data/lib/sequel/dataset/graph.rb +80 -58
- data/lib/sequel/dataset/misc.rb +137 -47
- data/lib/sequel/dataset/placeholder_literalizer.rb +63 -25
- data/lib/sequel/dataset/prepared_statements.rb +188 -85
- data/lib/sequel/dataset/query.rb +530 -222
- data/lib/sequel/dataset/sql.rb +590 -368
- data/lib/sequel/dataset.rb +26 -16
- data/lib/sequel/deprecated.rb +12 -2
- data/lib/sequel/exceptions.rb +46 -16
- data/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
- data/lib/sequel/extensions/_model_pg_row.rb +43 -0
- data/lib/sequel/extensions/_pretty_table.rb +2 -5
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
- data/lib/sequel/extensions/async_thread_pool.rb +438 -0
- data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
- data/lib/sequel/extensions/blank.rb +8 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +4 -3
- data/lib/sequel/extensions/connection_expiration.rb +20 -10
- data/lib/sequel/extensions/connection_validator.rb +11 -10
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +62 -39
- data/lib/sequel/extensions/core_extensions.rb +42 -48
- data/lib/sequel/extensions/core_refinements.rb +80 -59
- data/lib/sequel/extensions/current_datetime_timestamp.rb +1 -4
- data/lib/sequel/extensions/date_arithmetic.rb +98 -39
- data/lib/sequel/extensions/date_parse_input_handler.rb +67 -0
- data/lib/sequel/extensions/datetime_parse_to_time.rb +41 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +21 -14
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +12 -15
- data/lib/sequel/extensions/exclude_or_null.rb +68 -0
- data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
- data/lib/sequel/extensions/freeze_datasets.rb +3 -0
- data/lib/sequel/extensions/from_block.rb +1 -34
- data/lib/sequel/extensions/graph_each.rb +4 -4
- data/lib/sequel/extensions/identifier_mangling.rb +180 -0
- data/lib/sequel/extensions/implicit_subquery.rb +48 -0
- data/lib/sequel/extensions/index_caching.rb +109 -0
- data/lib/sequel/extensions/inflector.rb +13 -5
- data/lib/sequel/extensions/integer64.rb +32 -0
- data/lib/sequel/extensions/is_distinct_from.rb +141 -0
- data/lib/sequel/extensions/looser_typecasting.rb +17 -8
- data/lib/sequel/extensions/migration.rb +119 -78
- data/lib/sequel/extensions/named_timezones.rb +88 -23
- data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -82
- data/lib/sequel/extensions/null_dataset.rb +8 -8
- data/lib/sequel/extensions/pagination.rb +32 -29
- data/lib/sequel/extensions/pg_array.rb +221 -287
- data/lib/sequel/extensions/pg_array_ops.rb +17 -9
- data/lib/sequel/extensions/pg_enum.rb +63 -23
- data/lib/sequel/extensions/pg_extended_date_support.rb +241 -0
- data/lib/sequel/extensions/pg_hstore.rb +45 -54
- data/lib/sequel/extensions/pg_hstore_ops.rb +58 -6
- data/lib/sequel/extensions/pg_inet.rb +31 -12
- data/lib/sequel/extensions/pg_inet_ops.rb +2 -2
- data/lib/sequel/extensions/pg_interval.rb +56 -29
- data/lib/sequel/extensions/pg_json.rb +417 -140
- data/lib/sequel/extensions/pg_json_ops.rb +270 -18
- data/lib/sequel/extensions/pg_loose_count.rb +4 -2
- data/lib/sequel/extensions/pg_multirange.rb +372 -0
- data/lib/sequel/extensions/pg_range.rb +131 -191
- data/lib/sequel/extensions/pg_range_ops.rb +42 -13
- data/lib/sequel/extensions/pg_row.rb +48 -81
- data/lib/sequel/extensions/pg_row_ops.rb +33 -14
- data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
- data/lib/sequel/extensions/query.rb +9 -7
- data/lib/sequel/extensions/round_timestamps.rb +0 -6
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +60 -0
- data/lib/sequel/extensions/schema_caching.rb +10 -1
- data/lib/sequel/extensions/schema_dumper.rb +71 -48
- data/lib/sequel/extensions/select_remove.rb +4 -4
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
- data/lib/sequel/extensions/server_block.rb +51 -27
- data/lib/sequel/extensions/split_array_nil.rb +4 -4
- data/lib/sequel/extensions/sql_comments.rb +119 -7
- data/lib/sequel/extensions/sql_expr.rb +2 -1
- data/lib/sequel/extensions/sql_log_normalizer.rb +108 -0
- data/lib/sequel/extensions/sqlite_json_ops.rb +255 -0
- data/lib/sequel/extensions/string_agg.rb +11 -8
- data/lib/sequel/extensions/string_date_time.rb +19 -23
- data/lib/sequel/extensions/symbol_aref.rb +55 -0
- data/lib/sequel/extensions/symbol_aref_refinement.rb +43 -0
- data/lib/sequel/extensions/symbol_as.rb +23 -0
- data/lib/sequel/extensions/symbol_as_refinement.rb +37 -0
- data/lib/sequel/extensions/synchronize_sql.rb +45 -0
- data/lib/sequel/extensions/to_dot.rb +10 -4
- data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
- data/lib/sequel/model/associations.rb +1006 -284
- data/lib/sequel/model/base.rb +560 -805
- data/lib/sequel/model/dataset_module.rb +11 -10
- data/lib/sequel/model/default_inflections.rb +1 -1
- data/lib/sequel/model/errors.rb +10 -3
- data/lib/sequel/model/exceptions.rb +8 -10
- data/lib/sequel/model/inflections.rb +7 -20
- data/lib/sequel/model/plugins.rb +114 -0
- data/lib/sequel/model.rb +32 -82
- data/lib/sequel/plugins/active_model.rb +30 -14
- data/lib/sequel/plugins/after_initialize.rb +1 -1
- data/lib/sequel/plugins/association_dependencies.rb +25 -18
- data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
- data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
- data/lib/sequel/plugins/association_pks.rb +147 -70
- data/lib/sequel/plugins/association_proxies.rb +33 -9
- data/lib/sequel/plugins/async_thread_pool.rb +39 -0
- data/lib/sequel/plugins/auto_restrict_eager_graph.rb +62 -0
- data/lib/sequel/plugins/auto_validations.rb +95 -28
- data/lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb +68 -0
- data/lib/sequel/plugins/before_after_save.rb +0 -42
- data/lib/sequel/plugins/blacklist_security.rb +21 -12
- data/lib/sequel/plugins/boolean_readers.rb +5 -5
- data/lib/sequel/plugins/boolean_subsets.rb +13 -8
- data/lib/sequel/plugins/caching.rb +25 -16
- data/lib/sequel/plugins/class_table_inheritance.rb +179 -100
- data/lib/sequel/plugins/column_conflicts.rb +16 -3
- data/lib/sequel/plugins/column_encryption.rb +728 -0
- data/lib/sequel/plugins/column_select.rb +7 -5
- data/lib/sequel/plugins/columns_updated.rb +42 -0
- data/lib/sequel/plugins/composition.rb +42 -26
- data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
- data/lib/sequel/plugins/constraint_validations.rb +20 -14
- data/lib/sequel/plugins/csv_serializer.rb +56 -35
- data/lib/sequel/plugins/dataset_associations.rb +40 -17
- data/lib/sequel/plugins/def_dataset_method.rb +90 -0
- data/lib/sequel/plugins/defaults_setter.rb +65 -10
- data/lib/sequel/plugins/delay_add_association.rb +1 -1
- data/lib/sequel/plugins/dirty.rb +62 -24
- data/lib/sequel/plugins/eager_each.rb +3 -3
- data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
- data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
- data/lib/sequel/plugins/enum.rb +124 -0
- data/lib/sequel/plugins/error_splitter.rb +17 -12
- data/lib/sequel/plugins/finder.rb +246 -0
- data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
- data/lib/sequel/plugins/force_encoding.rb +7 -12
- data/lib/sequel/plugins/hook_class_methods.rb +37 -54
- data/lib/sequel/plugins/input_transformer.rb +18 -10
- data/lib/sequel/plugins/insert_conflict.rb +76 -0
- data/lib/sequel/plugins/insert_returning_select.rb +2 -2
- data/lib/sequel/plugins/instance_filters.rb +10 -8
- data/lib/sequel/plugins/instance_hooks.rb +34 -17
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +22 -13
- data/lib/sequel/plugins/json_serializer.rb +124 -64
- data/lib/sequel/plugins/lazy_attributes.rb +21 -14
- data/lib/sequel/plugins/list.rb +35 -21
- data/lib/sequel/plugins/many_through_many.rb +134 -21
- data/lib/sequel/plugins/modification_detection.rb +15 -5
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +6 -5
- data/lib/sequel/plugins/nested_attributes.rb +61 -31
- data/lib/sequel/plugins/optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/pg_array_associations.rb +103 -53
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +350 -0
- data/lib/sequel/plugins/pg_row.rb +5 -51
- data/lib/sequel/plugins/prepared_statements.rb +60 -72
- data/lib/sequel/plugins/prepared_statements_safe.rb +9 -4
- data/lib/sequel/plugins/rcte_tree.rb +68 -82
- data/lib/sequel/plugins/require_valid_schema.rb +67 -0
- data/lib/sequel/plugins/serialization.rb +43 -46
- data/lib/sequel/plugins/serialization_modification_detection.rb +3 -2
- data/lib/sequel/plugins/sharding.rb +15 -10
- data/lib/sequel/plugins/single_table_inheritance.rb +67 -28
- data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/split_values.rb +11 -6
- data/lib/sequel/plugins/sql_comments.rb +189 -0
- data/lib/sequel/plugins/static_cache.rb +77 -53
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +3 -3
- data/lib/sequel/plugins/subclasses.rb +43 -10
- data/lib/sequel/plugins/subset_conditions.rb +15 -5
- data/lib/sequel/plugins/table_select.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +96 -12
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/timestamps.rb +20 -8
- data/lib/sequel/plugins/touch.rb +19 -8
- data/lib/sequel/plugins/tree.rb +62 -32
- data/lib/sequel/plugins/typecast_on_load.rb +12 -4
- data/lib/sequel/plugins/unlimited_update.rb +1 -7
- data/lib/sequel/plugins/unused_associations.rb +521 -0
- data/lib/sequel/plugins/update_or_create.rb +4 -4
- data/lib/sequel/plugins/update_primary_key.rb +1 -1
- data/lib/sequel/plugins/update_refresh.rb +26 -15
- data/lib/sequel/plugins/uuid.rb +7 -11
- data/lib/sequel/plugins/validate_associated.rb +18 -0
- data/lib/sequel/plugins/validation_class_methods.rb +38 -19
- data/lib/sequel/plugins/validation_contexts.rb +49 -0
- data/lib/sequel/plugins/validation_helpers.rb +57 -41
- data/lib/sequel/plugins/whitelist_security.rb +122 -0
- data/lib/sequel/plugins/xml_serializer.rb +30 -31
- data/lib/sequel/sql.rb +471 -331
- data/lib/sequel/timezones.rb +78 -47
- data/lib/sequel/version.rb +7 -2
- data/lib/sequel.rb +1 -1
- metadata +217 -521
- data/Rakefile +0 -164
- data/doc/active_record.rdoc +0 -928
- data/doc/release_notes/1.0.txt +0 -38
- data/doc/release_notes/1.1.txt +0 -143
- data/doc/release_notes/1.3.txt +0 -101
- data/doc/release_notes/1.4.0.txt +0 -53
- data/doc/release_notes/1.5.0.txt +0 -155
- data/doc/release_notes/2.0.0.txt +0 -298
- data/doc/release_notes/2.1.0.txt +0 -271
- data/doc/release_notes/2.10.0.txt +0 -328
- data/doc/release_notes/2.11.0.txt +0 -215
- data/doc/release_notes/2.12.0.txt +0 -534
- data/doc/release_notes/2.2.0.txt +0 -253
- data/doc/release_notes/2.3.0.txt +0 -88
- data/doc/release_notes/2.4.0.txt +0 -106
- data/doc/release_notes/2.5.0.txt +0 -137
- data/doc/release_notes/2.6.0.txt +0 -157
- data/doc/release_notes/2.7.0.txt +0 -166
- data/doc/release_notes/2.8.0.txt +0 -171
- data/doc/release_notes/2.9.0.txt +0 -97
- data/doc/release_notes/3.0.0.txt +0 -221
- data/doc/release_notes/3.1.0.txt +0 -406
- data/doc/release_notes/3.10.0.txt +0 -286
- data/doc/release_notes/3.11.0.txt +0 -254
- data/doc/release_notes/3.12.0.txt +0 -304
- data/doc/release_notes/3.13.0.txt +0 -210
- data/doc/release_notes/3.14.0.txt +0 -118
- data/doc/release_notes/3.15.0.txt +0 -78
- data/doc/release_notes/3.16.0.txt +0 -45
- data/doc/release_notes/3.17.0.txt +0 -58
- data/doc/release_notes/3.18.0.txt +0 -120
- data/doc/release_notes/3.19.0.txt +0 -67
- data/doc/release_notes/3.2.0.txt +0 -268
- data/doc/release_notes/3.20.0.txt +0 -41
- data/doc/release_notes/3.21.0.txt +0 -87
- data/doc/release_notes/3.22.0.txt +0 -39
- data/doc/release_notes/3.23.0.txt +0 -172
- data/doc/release_notes/3.24.0.txt +0 -420
- data/doc/release_notes/3.25.0.txt +0 -88
- data/doc/release_notes/3.26.0.txt +0 -88
- data/doc/release_notes/3.27.0.txt +0 -82
- data/doc/release_notes/3.28.0.txt +0 -304
- data/doc/release_notes/3.29.0.txt +0 -459
- data/doc/release_notes/3.3.0.txt +0 -192
- data/doc/release_notes/3.30.0.txt +0 -135
- data/doc/release_notes/3.31.0.txt +0 -146
- data/doc/release_notes/3.32.0.txt +0 -202
- data/doc/release_notes/3.33.0.txt +0 -157
- data/doc/release_notes/3.34.0.txt +0 -671
- data/doc/release_notes/3.35.0.txt +0 -144
- data/doc/release_notes/3.36.0.txt +0 -245
- data/doc/release_notes/3.37.0.txt +0 -338
- data/doc/release_notes/3.38.0.txt +0 -234
- data/doc/release_notes/3.39.0.txt +0 -237
- data/doc/release_notes/3.4.0.txt +0 -325
- data/doc/release_notes/3.40.0.txt +0 -73
- data/doc/release_notes/3.41.0.txt +0 -155
- data/doc/release_notes/3.42.0.txt +0 -74
- data/doc/release_notes/3.43.0.txt +0 -105
- data/doc/release_notes/3.44.0.txt +0 -152
- data/doc/release_notes/3.45.0.txt +0 -179
- data/doc/release_notes/3.46.0.txt +0 -122
- data/doc/release_notes/3.47.0.txt +0 -270
- data/doc/release_notes/3.48.0.txt +0 -477
- data/doc/release_notes/3.5.0.txt +0 -510
- data/doc/release_notes/3.6.0.txt +0 -366
- data/doc/release_notes/3.7.0.txt +0 -179
- data/doc/release_notes/3.8.0.txt +0 -151
- data/doc/release_notes/3.9.0.txt +0 -233
- data/doc/release_notes/4.0.0.txt +0 -262
- data/doc/release_notes/4.1.0.txt +0 -85
- data/doc/release_notes/4.10.0.txt +0 -226
- data/doc/release_notes/4.11.0.txt +0 -147
- data/doc/release_notes/4.12.0.txt +0 -105
- data/doc/release_notes/4.13.0.txt +0 -169
- data/doc/release_notes/4.14.0.txt +0 -68
- data/doc/release_notes/4.15.0.txt +0 -56
- data/doc/release_notes/4.16.0.txt +0 -36
- data/doc/release_notes/4.17.0.txt +0 -38
- data/doc/release_notes/4.18.0.txt +0 -36
- data/doc/release_notes/4.19.0.txt +0 -45
- data/doc/release_notes/4.2.0.txt +0 -129
- data/doc/release_notes/4.20.0.txt +0 -79
- data/doc/release_notes/4.21.0.txt +0 -94
- data/doc/release_notes/4.22.0.txt +0 -72
- data/doc/release_notes/4.23.0.txt +0 -65
- data/doc/release_notes/4.24.0.txt +0 -99
- data/doc/release_notes/4.25.0.txt +0 -181
- data/doc/release_notes/4.26.0.txt +0 -44
- data/doc/release_notes/4.27.0.txt +0 -78
- data/doc/release_notes/4.28.0.txt +0 -57
- data/doc/release_notes/4.29.0.txt +0 -41
- data/doc/release_notes/4.3.0.txt +0 -40
- data/doc/release_notes/4.30.0.txt +0 -37
- data/doc/release_notes/4.31.0.txt +0 -57
- data/doc/release_notes/4.32.0.txt +0 -132
- data/doc/release_notes/4.33.0.txt +0 -88
- data/doc/release_notes/4.34.0.txt +0 -86
- data/doc/release_notes/4.35.0.txt +0 -130
- data/doc/release_notes/4.36.0.txt +0 -116
- data/doc/release_notes/4.4.0.txt +0 -92
- data/doc/release_notes/4.5.0.txt +0 -34
- data/doc/release_notes/4.6.0.txt +0 -30
- data/doc/release_notes/4.7.0.txt +0 -103
- data/doc/release_notes/4.8.0.txt +0 -175
- data/doc/release_notes/4.9.0.txt +0 -190
- data/lib/sequel/adapters/cubrid.rb +0 -144
- data/lib/sequel/adapters/do/mysql.rb +0 -66
- data/lib/sequel/adapters/do/postgres.rb +0 -44
- data/lib/sequel/adapters/do/sqlite3.rb +0 -42
- data/lib/sequel/adapters/do.rb +0 -158
- data/lib/sequel/adapters/jdbc/as400.rb +0 -84
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -64
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -36
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -33
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -33
- data/lib/sequel/adapters/odbc/progress.rb +0 -10
- data/lib/sequel/adapters/shared/cubrid.rb +0 -245
- data/lib/sequel/adapters/shared/firebird.rb +0 -247
- data/lib/sequel/adapters/shared/informix.rb +0 -54
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -152
- data/lib/sequel/adapters/shared/progress.rb +0 -40
- data/lib/sequel/adapters/swift/mysql.rb +0 -49
- data/lib/sequel/adapters/swift/postgres.rb +0 -47
- data/lib/sequel/adapters/swift/sqlite.rb +0 -49
- data/lib/sequel/adapters/swift.rb +0 -160
- data/lib/sequel/adapters/utils/pg_types.rb +0 -70
- data/lib/sequel/dataset/mutation.rb +0 -111
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -5
- data/lib/sequel/extensions/filter_having.rb +0 -63
- data/lib/sequel/extensions/hash_aliases.rb +0 -49
- data/lib/sequel/extensions/meta_def.rb +0 -35
- data/lib/sequel/extensions/query_literals.rb +0 -84
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -24
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -122
- data/lib/sequel/extensions/set_overrides.rb +0 -76
- data/lib/sequel/no_core_ext.rb +0 -3
- data/lib/sequel/plugins/association_autoreloading.rb +0 -9
- data/lib/sequel/plugins/identifier_columns.rb +0 -47
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -9
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -81
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -119
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -61
- data/lib/sequel/plugins/schema.rb +0 -82
- data/lib/sequel/plugins/scissors.rb +0 -35
- data/spec/adapter_spec.rb +0 -4
- data/spec/adapters/db2_spec.rb +0 -160
- data/spec/adapters/firebird_spec.rb +0 -411
- data/spec/adapters/informix_spec.rb +0 -100
- data/spec/adapters/mssql_spec.rb +0 -733
- data/spec/adapters/mysql_spec.rb +0 -1319
- data/spec/adapters/oracle_spec.rb +0 -313
- data/spec/adapters/postgres_spec.rb +0 -3790
- data/spec/adapters/spec_helper.rb +0 -49
- data/spec/adapters/sqlanywhere_spec.rb +0 -170
- data/spec/adapters/sqlite_spec.rb +0 -688
- data/spec/bin_spec.rb +0 -258
- data/spec/core/connection_pool_spec.rb +0 -1045
- data/spec/core/database_spec.rb +0 -2636
- data/spec/core/dataset_spec.rb +0 -5175
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1247
- data/spec/core/mock_adapter_spec.rb +0 -464
- data/spec/core/object_graph_spec.rb +0 -303
- data/spec/core/placeholder_literalizer_spec.rb +0 -163
- data/spec/core/schema_generator_spec.rb +0 -203
- data/spec/core/schema_spec.rb +0 -1676
- data/spec/core/spec_helper.rb +0 -34
- data/spec/core/version_spec.rb +0 -7
- data/spec/core_extensions_spec.rb +0 -699
- data/spec/core_model_spec.rb +0 -2
- data/spec/core_spec.rb +0 -1
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -85
- data/spec/extensions/after_initialize_spec.rb +0 -24
- data/spec/extensions/arbitrary_servers_spec.rb +0 -109
- data/spec/extensions/association_dependencies_spec.rb +0 -117
- data/spec/extensions/association_pks_spec.rb +0 -405
- data/spec/extensions/association_proxies_spec.rb +0 -86
- data/spec/extensions/auto_validations_spec.rb +0 -192
- data/spec/extensions/before_after_save_spec.rb +0 -40
- data/spec/extensions/blacklist_security_spec.rb +0 -88
- data/spec/extensions/blank_spec.rb +0 -69
- data/spec/extensions/boolean_readers_spec.rb +0 -93
- data/spec/extensions/boolean_subsets_spec.rb +0 -47
- data/spec/extensions/caching_spec.rb +0 -270
- data/spec/extensions/class_table_inheritance_spec.rb +0 -444
- data/spec/extensions/column_conflicts_spec.rb +0 -60
- data/spec/extensions/column_select_spec.rb +0 -108
- data/spec/extensions/columns_introspection_spec.rb +0 -91
- data/spec/extensions/composition_spec.rb +0 -242
- data/spec/extensions/connection_expiration_spec.rb +0 -121
- data/spec/extensions/connection_validator_spec.rb +0 -127
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -288
- data/spec/extensions/constraint_validations_spec.rb +0 -389
- data/spec/extensions/core_refinements_spec.rb +0 -519
- data/spec/extensions/csv_serializer_spec.rb +0 -180
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -343
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -167
- data/spec/extensions/defaults_setter_spec.rb +0 -102
- data/spec/extensions/delay_add_association_spec.rb +0 -74
- data/spec/extensions/dirty_spec.rb +0 -180
- data/spec/extensions/duplicate_columns_handler_spec.rb +0 -110
- data/spec/extensions/eager_each_spec.rb +0 -66
- data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
- data/spec/extensions/error_splitter_spec.rb +0 -18
- data/spec/extensions/error_sql_spec.rb +0 -20
- data/spec/extensions/eval_inspect_spec.rb +0 -73
- data/spec/extensions/filter_having_spec.rb +0 -40
- data/spec/extensions/force_encoding_spec.rb +0 -114
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/graph_each_spec.rb +0 -119
- data/spec/extensions/hash_aliases_spec.rb +0 -24
- data/spec/extensions/hook_class_methods_spec.rb +0 -429
- data/spec/extensions/identifier_columns_spec.rb +0 -17
- data/spec/extensions/inflector_spec.rb +0 -183
- data/spec/extensions/input_transformer_spec.rb +0 -54
- data/spec/extensions/insert_returning_select_spec.rb +0 -46
- data/spec/extensions/instance_filters_spec.rb +0 -79
- data/spec/extensions/instance_hooks_spec.rb +0 -276
- data/spec/extensions/inverted_subsets_spec.rb +0 -33
- data/spec/extensions/json_serializer_spec.rb +0 -304
- data/spec/extensions/lazy_attributes_spec.rb +0 -170
- data/spec/extensions/list_spec.rb +0 -278
- data/spec/extensions/looser_typecasting_spec.rb +0 -43
- data/spec/extensions/many_through_many_spec.rb +0 -2172
- data/spec/extensions/meta_def_spec.rb +0 -21
- data/spec/extensions/migration_spec.rb +0 -728
- data/spec/extensions/modification_detection_spec.rb +0 -80
- data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
- data/spec/extensions/named_timezones_spec.rb +0 -108
- data/spec/extensions/nested_attributes_spec.rb +0 -697
- data/spec/extensions/no_auto_literal_strings_spec.rb +0 -65
- data/spec/extensions/null_dataset_spec.rb +0 -85
- data/spec/extensions/optimistic_locking_spec.rb +0 -128
- data/spec/extensions/pagination_spec.rb +0 -118
- data/spec/extensions/pg_array_associations_spec.rb +0 -736
- data/spec/extensions/pg_array_ops_spec.rb +0 -143
- data/spec/extensions/pg_array_spec.rb +0 -390
- data/spec/extensions/pg_enum_spec.rb +0 -92
- data/spec/extensions/pg_hstore_ops_spec.rb +0 -236
- data/spec/extensions/pg_hstore_spec.rb +0 -206
- data/spec/extensions/pg_inet_ops_spec.rb +0 -101
- data/spec/extensions/pg_inet_spec.rb +0 -52
- data/spec/extensions/pg_interval_spec.rb +0 -76
- data/spec/extensions/pg_json_ops_spec.rb +0 -275
- data/spec/extensions/pg_json_spec.rb +0 -218
- data/spec/extensions/pg_loose_count_spec.rb +0 -17
- data/spec/extensions/pg_range_ops_spec.rb +0 -58
- data/spec/extensions/pg_range_spec.rb +0 -473
- data/spec/extensions/pg_row_ops_spec.rb +0 -60
- data/spec/extensions/pg_row_plugin_spec.rb +0 -62
- data/spec/extensions/pg_row_spec.rb +0 -360
- data/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -159
- data/spec/extensions/prepared_statements_safe_spec.rb +0 -61
- data/spec/extensions/prepared_statements_spec.rb +0 -103
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
- data/spec/extensions/pretty_table_spec.rb +0 -92
- data/spec/extensions/query_literals_spec.rb +0 -183
- data/spec/extensions/query_spec.rb +0 -102
- data/spec/extensions/rcte_tree_spec.rb +0 -392
- data/spec/extensions/round_timestamps_spec.rb +0 -43
- data/spec/extensions/schema_caching_spec.rb +0 -41
- data/spec/extensions/schema_dumper_spec.rb +0 -814
- data/spec/extensions/schema_spec.rb +0 -117
- data/spec/extensions/scissors_spec.rb +0 -26
- data/spec/extensions/select_remove_spec.rb +0 -38
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
- data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
- data/spec/extensions/serialization_spec.rb +0 -362
- data/spec/extensions/server_block_spec.rb +0 -90
- data/spec/extensions/server_logging_spec.rb +0 -45
- data/spec/extensions/set_overrides_spec.rb +0 -61
- data/spec/extensions/sharding_spec.rb +0 -198
- data/spec/extensions/shared_caching_spec.rb +0 -175
- data/spec/extensions/single_table_inheritance_spec.rb +0 -297
- data/spec/extensions/singular_table_names_spec.rb +0 -22
- data/spec/extensions/skip_create_refresh_spec.rb +0 -17
- data/spec/extensions/spec_helper.rb +0 -71
- data/spec/extensions/split_array_nil_spec.rb +0 -24
- data/spec/extensions/split_values_spec.rb +0 -22
- data/spec/extensions/sql_comments_spec.rb +0 -27
- data/spec/extensions/sql_expr_spec.rb +0 -60
- data/spec/extensions/static_cache_spec.rb +0 -361
- data/spec/extensions/string_agg_spec.rb +0 -85
- data/spec/extensions/string_date_time_spec.rb +0 -95
- data/spec/extensions/string_stripper_spec.rb +0 -68
- data/spec/extensions/subclasses_spec.rb +0 -66
- data/spec/extensions/subset_conditions_spec.rb +0 -38
- data/spec/extensions/table_select_spec.rb +0 -71
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -136
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- data/spec/extensions/timestamps_spec.rb +0 -175
- data/spec/extensions/to_dot_spec.rb +0 -154
- data/spec/extensions/touch_spec.rb +0 -203
- data/spec/extensions/tree_spec.rb +0 -274
- data/spec/extensions/typecast_on_load_spec.rb +0 -80
- data/spec/extensions/unlimited_update_spec.rb +0 -20
- data/spec/extensions/update_or_create_spec.rb +0 -87
- data/spec/extensions/update_primary_key_spec.rb +0 -100
- data/spec/extensions/update_refresh_spec.rb +0 -53
- data/spec/extensions/uuid_spec.rb +0 -106
- data/spec/extensions/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1027
- data/spec/extensions/validation_helpers_spec.rb +0 -554
- data/spec/extensions/xml_serializer_spec.rb +0 -207
- data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
- data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
- data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
- data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
- data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/double_migration/001_create_sessions.rb +0 -9
- data/spec/files/double_migration/002_create_nodes.rb +0 -19
- data/spec/files/double_migration/003_3_create_users.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
- data/spec/files/empty_migration/001_create_sessions.rb +0 -9
- data/spec/files/empty_migration/002_create_nodes.rb +0 -0
- data/spec/files/empty_migration/003_3_create_users.rb +0 -4
- data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
- data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
- data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
- data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
- data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/reversible_migrations/001_reversible.rb +0 -5
- data/spec/files/reversible_migrations/002_reversible.rb +0 -5
- data/spec/files/reversible_migrations/003_reversible.rb +0 -5
- data/spec/files/reversible_migrations/004_reversible.rb +0 -5
- data/spec/files/reversible_migrations/005_reversible.rb +0 -10
- data/spec/files/reversible_migrations/006_reversible.rb +0 -10
- data/spec/files/reversible_migrations/007_reversible.rb +0 -10
- data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
- data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
- data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
- data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
- data/spec/guards_helper.rb +0 -55
- data/spec/integration/associations_test.rb +0 -2506
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1858
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -262
- data/spec/integration/model_test.rb +0 -230
- data/spec/integration/plugin_test.rb +0 -2297
- data/spec/integration/prepared_statement_test.rb +0 -467
- data/spec/integration/schema_test.rb +0 -815
- data/spec/integration/spec_helper.rb +0 -56
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -406
- data/spec/integration/type_test.rb +0 -133
- data/spec/model/association_reflection_spec.rb +0 -565
- data/spec/model/associations_spec.rb +0 -4589
- data/spec/model/base_spec.rb +0 -759
- data/spec/model/class_dataset_methods_spec.rb +0 -150
- data/spec/model/dataset_methods_spec.rb +0 -149
- data/spec/model/eager_loading_spec.rb +0 -2197
- data/spec/model/hooks_spec.rb +0 -604
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -1097
- data/spec/model/plugins_spec.rb +0 -299
- data/spec/model/record_spec.rb +0 -2162
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -193
- data/spec/model_no_assoc_spec.rb +0 -1
- data/spec/model_spec.rb +0 -1
- data/spec/plugin_spec.rb +0 -1
- data/spec/sequel_coverage.rb +0 -15
- data/spec/spec_config.rb +0 -10
data/lib/sequel/adapters/ado.rb
CHANGED
@@ -5,18 +5,97 @@ require 'win32ole'
|
|
5
5
|
module Sequel
|
6
6
|
# The ADO adapter provides connectivity to ADO databases in Windows.
|
7
7
|
module ADO
|
8
|
-
|
9
|
-
|
8
|
+
# ADO constants (DataTypeEnum)
|
9
|
+
# Source: https://msdn.microsoft.com/en-us/library/ms675318(v=vs.85).aspx
|
10
|
+
AdBigInt = 20
|
11
|
+
AdBinary = 128
|
12
|
+
#AdBoolean = 11
|
13
|
+
#AdBSTR = 8
|
14
|
+
#AdChapter = 136
|
15
|
+
#AdChar = 129
|
16
|
+
#AdCurrency = 6
|
17
|
+
#AdDate = 7
|
18
|
+
AdDBDate = 133
|
19
|
+
#AdDBTime = 134
|
20
|
+
AdDBTimeStamp = 135
|
21
|
+
#AdDecimal = 14
|
22
|
+
#AdDouble = 5
|
23
|
+
#AdEmpty = 0
|
24
|
+
#AdError = 10
|
25
|
+
#AdFileTime = 64
|
26
|
+
#AdGUID = 72
|
27
|
+
#AdIDispatch = 9
|
28
|
+
#AdInteger = 3
|
29
|
+
#AdIUnknown = 13
|
30
|
+
AdLongVarBinary = 205
|
31
|
+
#AdLongVarChar = 201
|
32
|
+
#AdLongVarWChar = 203
|
33
|
+
AdNumeric = 131
|
34
|
+
#AdPropVariant = 138
|
35
|
+
#AdSingle = 4
|
36
|
+
#AdSmallInt = 2
|
37
|
+
#AdTinyInt = 16
|
38
|
+
#AdUnsignedBigInt = 21
|
39
|
+
#AdUnsignedInt = 19
|
40
|
+
#AdUnsignedSmallInt = 18
|
41
|
+
#AdUnsignedTinyInt = 17
|
42
|
+
#AdUserDefined = 132
|
43
|
+
AdVarBinary = 204
|
44
|
+
#AdVarChar = 200
|
45
|
+
#AdVariant = 12
|
46
|
+
AdVarNumeric = 139
|
47
|
+
#AdVarWChar = 202
|
48
|
+
#AdWChar = 130
|
49
|
+
|
50
|
+
bigint = Object.new
|
51
|
+
def bigint.call(v)
|
52
|
+
v.to_i
|
53
|
+
end
|
54
|
+
|
55
|
+
numeric = Object.new
|
56
|
+
def numeric.call(v)
|
57
|
+
if v.include?(',')
|
58
|
+
BigDecimal(v.tr(',', '.'))
|
59
|
+
else
|
60
|
+
BigDecimal(v)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
binary = Object.new
|
65
|
+
def binary.call(v)
|
66
|
+
Sequel.blob(v.pack('c*'))
|
67
|
+
end
|
10
68
|
|
69
|
+
date = Object.new
|
70
|
+
def date.call(v)
|
71
|
+
Date.new(v.year, v.month, v.day)
|
72
|
+
end
|
73
|
+
|
74
|
+
CONVERSION_PROCS = {}
|
75
|
+
[
|
76
|
+
[bigint, AdBigInt],
|
77
|
+
[numeric, AdNumeric, AdVarNumeric],
|
78
|
+
[date, AdDBDate],
|
79
|
+
[binary, AdBinary, AdVarBinary, AdLongVarBinary]
|
80
|
+
].each do |callable, *types|
|
81
|
+
callable.freeze
|
82
|
+
types.each do |i|
|
83
|
+
CONVERSION_PROCS[i] = callable
|
84
|
+
end
|
85
|
+
end
|
86
|
+
CONVERSION_PROCS.freeze
|
87
|
+
|
88
|
+
class Database < Sequel::Database
|
11
89
|
set_adapter_scheme :ado
|
12
90
|
|
91
|
+
attr_reader :conversion_procs
|
92
|
+
|
13
93
|
# In addition to the usual database options,
|
14
94
|
# the following options have an effect:
|
15
95
|
#
|
16
96
|
# :command_timeout :: Sets the time in seconds to wait while attempting
|
17
97
|
# to execute a command before cancelling the attempt and generating
|
18
98
|
# an error. Specifically, it sets the ADO CommandTimeout property.
|
19
|
-
# If this property is not set, the default of 30 seconds is used.
|
20
99
|
# :driver :: The driver to use in the ADO connection string. If not provided, a default
|
21
100
|
# of "SQL Server" is used.
|
22
101
|
# :conn_string :: The full ADO connection string. If this is provided,
|
@@ -28,8 +107,8 @@ module Sequel
|
|
28
107
|
#
|
29
108
|
# Pay special attention to the :provider option, as without specifying a provider,
|
30
109
|
# many things will be broken. The SQLNCLI10 provider appears to work well if you
|
31
|
-
# are connecting to Microsoft SQL Server, but it is not the default as that
|
32
|
-
# break backwards compatability.
|
110
|
+
# are connecting to Microsoft SQL Server, but it is not the default as that is not
|
111
|
+
# always available and would break backwards compatability.
|
33
112
|
def connect(server)
|
34
113
|
opts = server_opts(server)
|
35
114
|
s = opts[:conn_string] || "driver=#{opts[:driver]};server=#{opts[:host]};database=#{opts[:database]}#{";uid=#{opts[:user]};pwd=#{opts[:password]}" if opts[:user]}"
|
@@ -46,6 +125,11 @@ module Sequel
|
|
46
125
|
nil
|
47
126
|
end
|
48
127
|
|
128
|
+
def freeze
|
129
|
+
@conversion_procs.freeze
|
130
|
+
super
|
131
|
+
end
|
132
|
+
|
49
133
|
# Just execute so it doesn't attempt to return the number of rows modified.
|
50
134
|
def execute_ddl(sql, opts=OPTS)
|
51
135
|
execute(sql, opts)
|
@@ -76,7 +160,14 @@ module Sequel
|
|
76
160
|
synchronize(opts[:server]) do |conn|
|
77
161
|
begin
|
78
162
|
r = log_connection_yield(sql, conn){conn.Execute(sql)}
|
79
|
-
|
163
|
+
begin
|
164
|
+
yield r if defined?(yield)
|
165
|
+
ensure
|
166
|
+
begin
|
167
|
+
r.close
|
168
|
+
rescue ::WIN32OLERuntimeError
|
169
|
+
end
|
170
|
+
end
|
80
171
|
rescue ::WIN32OLERuntimeError => e
|
81
172
|
raise_error(e)
|
82
173
|
end
|
@@ -89,22 +180,44 @@ module Sequel
|
|
89
180
|
def adapter_initialize
|
90
181
|
case @opts[:conn_string]
|
91
182
|
when /Microsoft\.(Jet|ACE)\.OLEDB/io
|
92
|
-
|
183
|
+
require_relative 'ado/access'
|
93
184
|
extend Sequel::ADO::Access::DatabaseMethods
|
94
185
|
self.dataset_class = ADO::Access::Dataset
|
95
186
|
else
|
96
187
|
@opts[:driver] ||= 'SQL Server'
|
97
188
|
case @opts[:driver]
|
98
189
|
when 'SQL Server'
|
99
|
-
|
190
|
+
require_relative 'ado/mssql'
|
100
191
|
extend Sequel::ADO::MSSQL::DatabaseMethods
|
101
192
|
self.dataset_class = ADO::MSSQL::Dataset
|
102
193
|
set_mssql_unicode_strings
|
103
194
|
end
|
104
195
|
end
|
196
|
+
|
197
|
+
@conversion_procs = CONVERSION_PROCS.dup
|
198
|
+
@conversion_procs[AdDBTimeStamp] = method(:adb_timestamp_to_application_timestamp)
|
199
|
+
|
105
200
|
super
|
106
201
|
end
|
107
202
|
|
203
|
+
def adb_timestamp_to_application_timestamp(v)
|
204
|
+
# This hard codes a timestamp_precision of 6 when converting.
|
205
|
+
# That is the default timestamp_precision, but the ado/mssql adapter uses a timestamp_precision
|
206
|
+
# of 3. However, timestamps returned by ado/mssql have nsec values that end up rounding to a
|
207
|
+
# the same value as if a timestamp_precision of 3 was hard coded (either xxx999yzz, where y is
|
208
|
+
# 5-9 or xxx000yzz where y is 0-4).
|
209
|
+
#
|
210
|
+
# ADO subadapters should override this they would like a different timestamp precision and the
|
211
|
+
# this code does not work for them (for example, if they provide full nsec precision).
|
212
|
+
#
|
213
|
+
# Note that fractional second handling for WIN32OLE objects is not correct on ruby <2.2
|
214
|
+
to_application_timestamp([v.year, v.month, v.day, v.hour, v.min, v.sec, (v.nsec/1000.0).round * 1000])
|
215
|
+
end
|
216
|
+
|
217
|
+
def dataset_class_default
|
218
|
+
Dataset
|
219
|
+
end
|
220
|
+
|
108
221
|
# The ADO adapter's default provider doesn't support transactions, since it
|
109
222
|
# creates a new native connection for each query. So Sequel only attempts
|
110
223
|
# to use transactions if an explicit :provider is given.
|
@@ -121,7 +234,7 @@ module Sequel
|
|
121
234
|
end
|
122
235
|
|
123
236
|
def disconnect_error?(e, opts)
|
124
|
-
super || (e.is_a?(::WIN32OLERuntimeError) && e.message =~
|
237
|
+
super || (e.is_a?(::WIN32OLERuntimeError) && e.message =~ /Communication link failure/)
|
125
238
|
end
|
126
239
|
|
127
240
|
def rollback_transaction(conn, opts=OPTS)
|
@@ -130,21 +243,38 @@ module Sequel
|
|
130
243
|
end
|
131
244
|
|
132
245
|
class Dataset < Sequel::Dataset
|
133
|
-
Database::DatasetClass = self
|
134
|
-
|
135
246
|
def fetch_rows(sql)
|
136
|
-
execute(sql) do |
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
cols.
|
142
|
-
|
143
|
-
|
247
|
+
execute(sql) do |recordset|
|
248
|
+
cols = []
|
249
|
+
conversion_procs = db.conversion_procs
|
250
|
+
|
251
|
+
recordset.Fields.each do |field|
|
252
|
+
cols << [output_identifier(field.Name), conversion_procs[field.Type]]
|
253
|
+
end
|
254
|
+
|
255
|
+
self.columns = cols.map(&:first)
|
256
|
+
return if recordset.EOF
|
257
|
+
max = cols.length
|
258
|
+
|
259
|
+
recordset.GetRows.transpose.each do |field_values|
|
260
|
+
h = {}
|
261
|
+
|
262
|
+
i = -1
|
263
|
+
while (i += 1) < max
|
264
|
+
name, cp = cols[i]
|
265
|
+
h[name] = if (v = field_values[i]) && cp
|
266
|
+
cp.call(v)
|
267
|
+
else
|
268
|
+
v
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
yield h
|
273
|
+
end
|
144
274
|
end
|
145
275
|
end
|
146
276
|
|
147
|
-
# ADO
|
277
|
+
# ADO can return for for delete and update statements, depending on the provider.
|
148
278
|
def provides_accurate_rows_matched?
|
149
279
|
false
|
150
280
|
end
|
@@ -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
|
@@ -32,7 +30,7 @@ module Sequel
|
|
32
30
|
# Return numeric/decimal types as instances of BigDecimal
|
33
31
|
# instead of Float
|
34
32
|
def decimal(s)
|
35
|
-
BigDecimal
|
33
|
+
BigDecimal(s)
|
36
34
|
end
|
37
35
|
|
38
36
|
# Return datetime types as instances of Sequel.datetime_class
|
@@ -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
|
@@ -127,11 +118,9 @@ module Sequel
|
|
127
118
|
# Yield an available connection. Rescue
|
128
119
|
# any Amalgalite::Errors and turn them into DatabaseErrors.
|
129
120
|
def _execute(sql, opts)
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
raise_error(e)
|
134
|
-
end
|
121
|
+
synchronize(opts[:server]){|conn| yield conn}
|
122
|
+
rescue ::Amalgalite::Error, ::Amalgalite::SQLite3::Error => e
|
123
|
+
raise_error(e)
|
135
124
|
end
|
136
125
|
|
137
126
|
# The Amagalite adapter does not need the pool to convert exceptions.
|
@@ -145,19 +134,18 @@ module Sequel
|
|
145
134
|
o
|
146
135
|
end
|
147
136
|
|
148
|
-
|
137
|
+
def dataset_class_default
|
138
|
+
Dataset
|
139
|
+
end
|
140
|
+
|
149
141
|
def database_error_classes
|
150
142
|
[::Amalgalite::Error, ::Amalgalite::SQLite3::Error]
|
151
143
|
end
|
152
144
|
end
|
153
145
|
|
154
|
-
# Dataset class for SQLite datasets that use the amalgalite driver.
|
155
146
|
class Dataset < Sequel::Dataset
|
156
147
|
include ::Sequel::SQLite::DatasetMethods
|
157
148
|
|
158
|
-
Database::DatasetClass = self
|
159
|
-
|
160
|
-
# Yield a hash for each row in the dataset.
|
161
149
|
def fetch_rows(sql)
|
162
150
|
execute(sql) do |stmt|
|
163
151
|
self.columns = cols = stmt.result_fields.map{|c| output_identifier(c)}
|
@@ -172,7 +160,7 @@ module Sequel
|
|
172
160
|
|
173
161
|
private
|
174
162
|
|
175
|
-
# Quote the string using the
|
163
|
+
# Quote the string using the connection instance method.
|
176
164
|
def literal_string_append(sql, v)
|
177
165
|
db.synchronize(@opts[:server]){|c| sql << c.quote(v)}
|
178
166
|
end
|
@@ -1,19 +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
|
-
@convert_smallint_to_bool = true
|
10
|
-
|
11
|
-
class << self
|
12
|
-
# Whether to convert smallint values to bool, true by default.
|
13
|
-
# Can also be overridden per dataset.
|
14
|
-
attr_accessor :convert_smallint_to_bool
|
15
|
-
end
|
16
|
-
|
17
9
|
tt = Class.new do
|
18
10
|
def boolean(s) !s.to_i.zero? end
|
19
11
|
def int(s) s.to_i end
|
@@ -26,13 +18,14 @@ module Sequel
|
|
26
18
|
:blob => ::Sequel::SQL::Blob.method(:new),
|
27
19
|
:time => ::Sequel.method(:string_to_time),
|
28
20
|
:date => ::Sequel.method(:string_to_date)
|
29
|
-
}
|
21
|
+
}.freeze
|
30
22
|
|
31
|
-
# 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.
|
32
25
|
class Connection
|
33
26
|
# A hash with prepared statement name symbol keys, where each value is
|
34
27
|
# a two element array with an sql string and cached Statement value.
|
35
|
-
|
28
|
+
attr_reader :prepared_statements
|
36
29
|
|
37
30
|
# Error class for exceptions raised by the connection.
|
38
31
|
class Error < StandardError
|
@@ -187,6 +180,9 @@ module Sequel
|
|
187
180
|
|
188
181
|
# Hash of connection procs for converting
|
189
182
|
attr_reader :conversion_procs
|
183
|
+
|
184
|
+
# Whether to convert smallint values to bool for this Database instance
|
185
|
+
attr_accessor :convert_smallint_to_bool
|
190
186
|
|
191
187
|
# Create a new connection object for the given server.
|
192
188
|
def connect(server)
|
@@ -209,7 +205,6 @@ module Sequel
|
|
209
205
|
Connection.new(connection_params)
|
210
206
|
end
|
211
207
|
|
212
|
-
# Execute the given SQL on the database.
|
213
208
|
def execute(sql, opts=OPTS, &block)
|
214
209
|
if sql.is_a?(Symbol)
|
215
210
|
execute_prepared_statement(sql, opts, &block)
|
@@ -220,8 +215,6 @@ module Sequel
|
|
220
215
|
raise_error(e)
|
221
216
|
end
|
222
217
|
|
223
|
-
# Execute the given SQL on the database, returning the last inserted
|
224
|
-
# identity value.
|
225
218
|
def execute_insert(sql, opts=OPTS)
|
226
219
|
synchronize(opts[:server]) do |c|
|
227
220
|
if sql.is_a?(Symbol)
|
@@ -253,7 +246,7 @@ module Sequel
|
|
253
246
|
end
|
254
247
|
begin
|
255
248
|
stmt = log_connection_yield(log_sql, conn, args){conn.execute_prepared(ps_name, *args)}
|
256
|
-
if
|
249
|
+
if defined?(yield)
|
257
250
|
yield(stmt)
|
258
251
|
else
|
259
252
|
stmt.affected
|
@@ -264,12 +257,18 @@ module Sequel
|
|
264
257
|
end
|
265
258
|
end
|
266
259
|
|
260
|
+
def freeze
|
261
|
+
@conversion_procs.freeze
|
262
|
+
super
|
263
|
+
end
|
264
|
+
|
267
265
|
private
|
268
266
|
|
269
|
-
# 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.
|
270
269
|
def _execute(conn, sql, opts)
|
271
270
|
stmt = log_connection_yield(sql, conn){conn.execute(sql)}
|
272
|
-
if
|
271
|
+
if defined?(yield)
|
273
272
|
yield(stmt)
|
274
273
|
else
|
275
274
|
stmt.affected
|
@@ -279,6 +278,7 @@ module Sequel
|
|
279
278
|
end
|
280
279
|
|
281
280
|
def adapter_initialize
|
281
|
+
@convert_smallint_to_bool = typecast_value_boolean(opts.fetch(:convert_smallint_to_bool, true))
|
282
282
|
@conversion_procs = DB2_TYPES.dup
|
283
283
|
@conversion_procs[:timestamp] = method(:to_application_timestamp)
|
284
284
|
end
|
@@ -286,14 +286,14 @@ module Sequel
|
|
286
286
|
# IBM_DB uses an autocommit setting instead of sending SQL queries.
|
287
287
|
# So starting a transaction just turns autocommit off.
|
288
288
|
def begin_transaction(conn, opts=OPTS)
|
289
|
-
log_connection_yield(
|
289
|
+
log_connection_yield('Transaction.begin', conn){conn.autocommit = false}
|
290
290
|
set_transaction_isolation(conn, opts)
|
291
291
|
end
|
292
292
|
|
293
293
|
# This commits transaction in progress on the
|
294
294
|
# connection and sets autocommit back on.
|
295
295
|
def commit_transaction(conn, opts=OPTS)
|
296
|
-
log_connection_yield(
|
296
|
+
log_connection_yield('Transaction.commit', conn){conn.commit}
|
297
297
|
end
|
298
298
|
|
299
299
|
def database_error_classes
|
@@ -304,14 +304,16 @@ module Sequel
|
|
304
304
|
exception.sqlstate
|
305
305
|
end
|
306
306
|
|
307
|
+
def dataset_class_default
|
308
|
+
Dataset
|
309
|
+
end
|
310
|
+
|
307
311
|
# Don't convert smallint to boolean for the metadata
|
308
312
|
# dataset, since the DB2 metadata does not use
|
309
313
|
# boolean columns, and some smallint columns are
|
310
314
|
# accidently treated as booleans.
|
311
|
-
def
|
312
|
-
|
313
|
-
ds.convert_smallint_to_bool = false
|
314
|
-
ds
|
315
|
+
def _metadata_dataset
|
316
|
+
super.with_convert_smallint_to_bool(false)
|
315
317
|
end
|
316
318
|
|
317
319
|
# Format Numeric, Date, and Time types specially for use
|
@@ -337,12 +339,12 @@ module Sequel
|
|
337
339
|
# This rolls back the transaction in progress on the
|
338
340
|
# connection and sets autocommit back on.
|
339
341
|
def rollback_transaction(conn, opts=OPTS)
|
340
|
-
log_connection_yield(
|
342
|
+
log_connection_yield('Transaction.rollback', conn){conn.rollback}
|
341
343
|
end
|
342
344
|
|
343
345
|
# Convert smallint type to boolean if convert_smallint_to_bool is true
|
344
346
|
def schema_column_type(db_type)
|
345
|
-
if
|
347
|
+
if convert_smallint_to_bool && db_type =~ /smallint/i
|
346
348
|
:boolean
|
347
349
|
else
|
348
350
|
super
|
@@ -353,39 +355,31 @@ module Sequel
|
|
353
355
|
class Dataset < Sequel::Dataset
|
354
356
|
include Sequel::DB2::DatasetMethods
|
355
357
|
|
356
|
-
Database::DatasetClass = self
|
357
|
-
|
358
358
|
module CallableStatementMethods
|
359
359
|
# Extend given dataset with this module so subselects inside subselects in
|
360
360
|
# prepared statements work.
|
361
361
|
def subselect_sql_append(sql, ds)
|
362
|
-
ps = ds.to_prepared_statement(:select).
|
363
|
-
|
362
|
+
ps = ds.to_prepared_statement(:select).
|
363
|
+
clone(:append_sql=>sql, :prepared_args=>prepared_args).
|
364
|
+
with_extend(CallableStatementMethods)
|
364
365
|
ps = ps.bind(@opts[:bind_vars]) if @opts[:bind_vars]
|
365
|
-
ps.prepared_args = prepared_args
|
366
366
|
ps.prepared_sql
|
367
367
|
end
|
368
368
|
end
|
369
369
|
|
370
370
|
PreparedStatementMethods = prepared_statements_module(:prepare_bind, Sequel::Dataset::UnnumberedArgumentMapper)
|
371
371
|
|
372
|
-
# Emulate support of bind arguments in called statements.
|
373
|
-
def call(type, bind_arguments={}, *values, &block)
|
374
|
-
ps = to_prepared_statement(type, values)
|
375
|
-
ps.extend(CallableStatementMethods)
|
376
|
-
ps.call(bind_arguments, &block)
|
377
|
-
end
|
378
|
-
|
379
372
|
# Whether to convert smallint to boolean arguments for this dataset.
|
380
|
-
# Defaults to the
|
373
|
+
# Defaults to the Database setting.
|
381
374
|
def convert_smallint_to_bool
|
382
|
-
|
375
|
+
opts.has_key?(:convert_smallint_to_bool) ? opts[:convert_smallint_to_bool] : db.convert_smallint_to_bool
|
383
376
|
end
|
384
377
|
|
385
|
-
#
|
386
|
-
|
378
|
+
# Return a cloned dataset with the convert_smallint_to_bool option set.
|
379
|
+
def with_convert_smallint_to_bool(v)
|
380
|
+
clone(:convert_smallint_to_bool=>v)
|
381
|
+
end
|
387
382
|
|
388
|
-
# Fetch the rows from the database and yield plain hashes.
|
389
383
|
def fetch_rows(sql)
|
390
384
|
execute(sql) do |stmt|
|
391
385
|
columns = []
|
@@ -397,10 +391,10 @@ module Sequel
|
|
397
391
|
type = stmt.field_type(i).downcase.to_sym
|
398
392
|
# decide if it is a smallint from precision
|
399
393
|
type = :boolean if type == :int && convert && stmt.field_precision(i) < 8
|
400
|
-
type = :blob if type == :clob &&
|
394
|
+
type = :blob if type == :clob && db.use_clob_as_blob
|
401
395
|
columns << [key, cps[type]]
|
402
396
|
end
|
403
|
-
cols = columns.map{|c| c
|
397
|
+
cols = columns.map{|c| c[0]}
|
404
398
|
self.columns = cols
|
405
399
|
|
406
400
|
while res = stmt.fetch_array
|
@@ -414,16 +408,14 @@ module Sequel
|
|
414
408
|
self
|
415
409
|
end
|
416
410
|
|
417
|
-
|
418
|
-
|
419
|
-
def
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
end
|
426
|
-
ps
|
411
|
+
private
|
412
|
+
|
413
|
+
def bound_variable_modules
|
414
|
+
[CallableStatementMethods]
|
415
|
+
end
|
416
|
+
|
417
|
+
def prepared_statement_modules
|
418
|
+
[PreparedStatementMethods]
|
427
419
|
end
|
428
420
|
end
|
429
421
|
end
|