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/jdbc.rb
CHANGED
@@ -1,49 +1,44 @@
|
|
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
|
-
|
14
8
|
# Make it accesing the java.sql hierarchy more ruby friendly.
|
15
9
|
module JavaSQL
|
16
10
|
include_package 'java.sql'
|
17
11
|
end
|
18
12
|
|
19
|
-
# Make it accesing the javax.naming hierarchy more ruby friendly.
|
20
|
-
module JavaxNaming
|
21
|
-
include_package 'javax.naming'
|
22
|
-
end
|
23
|
-
|
24
13
|
# Used to identify a jndi connection and to extract the jndi
|
25
14
|
# resource name.
|
26
15
|
JNDI_URI_REGEXP = /\Ajdbc:jndi:(.+)/
|
27
16
|
|
28
|
-
# The types to check for 0 scale to transform :decimal types
|
29
|
-
# to :integer.
|
30
|
-
DECIMAL_TYPE_RE = /number|numeric|decimal/io
|
31
|
-
|
32
17
|
# Contains procs keyed on subadapter type that extend the
|
33
18
|
# given database object so it supports the correct database type.
|
34
19
|
DATABASE_SETUP = {}
|
20
|
+
|
21
|
+
# Create custom NativeException alias for nicer access, and also so that
|
22
|
+
# JRuby 9.2+ so it doesn't use the deprecated ::NativeException
|
23
|
+
NativeException = java.lang.Exception
|
35
24
|
|
25
|
+
# Default database error classes
|
26
|
+
DATABASE_ERROR_CLASSES = [NativeException]
|
27
|
+
if JRUBY_VERSION < '9.2'
|
28
|
+
# On JRuby <9.2, still include ::NativeException, as it is still needed in some cases
|
29
|
+
DATABASE_ERROR_CLASSES << ::NativeException
|
30
|
+
end
|
31
|
+
DATABASE_ERROR_CLASSES.freeze
|
32
|
+
|
36
33
|
# Allow loading the necessary JDBC support via a gem.
|
37
34
|
def self.load_gem(name)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
jdbc_module.load_driver if jdbc_module.respond_to?(:load_driver)
|
46
|
-
end
|
35
|
+
require "jdbc/#{name.to_s.downcase}"
|
36
|
+
rescue LoadError
|
37
|
+
# jdbc gem not used, hopefully the user has the .jar in their CLASSPATH
|
38
|
+
else
|
39
|
+
if defined?(::Jdbc) && ( ::Jdbc.const_defined?(name) rescue nil )
|
40
|
+
jdbc_module = ::Jdbc.const_get(name) # e.g. Jdbc::SQLite3
|
41
|
+
jdbc_module.load_driver if jdbc_module.respond_to?(:load_driver)
|
47
42
|
end
|
48
43
|
end
|
49
44
|
|
@@ -54,56 +49,80 @@ module Sequel
|
|
54
49
|
# Raise a Sequel::AdapterNotFound if evaluating the class name raises a NameError.
|
55
50
|
def self.load_driver(drv, gem=nil)
|
56
51
|
load_gem(gem) if gem
|
57
|
-
|
52
|
+
if drv.is_a?(String)
|
53
|
+
eval drv
|
54
|
+
else
|
55
|
+
*try, last = drv
|
56
|
+
try.each do |try_drv|
|
57
|
+
begin
|
58
|
+
return eval(try_drv)
|
59
|
+
rescue NameError
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
eval last
|
64
|
+
end
|
58
65
|
rescue NameError
|
59
66
|
raise Sequel::AdapterNotFound, "#{drv} not loaded#{", try installing jdbc-#{gem.to_s.downcase} gem" if gem}"
|
60
67
|
end
|
61
68
|
|
62
69
|
class TypeConvertor
|
70
|
+
CONVERTORS = convertors = {}
|
63
71
|
%w'Boolean Float Double Int Long Short'.each do |meth|
|
64
|
-
|
72
|
+
x = x = convertors[meth.to_sym] = Object.new
|
73
|
+
class_eval("def x.call(r, i) v = r.get#{meth}(i); v unless r.wasNull end", __FILE__, __LINE__)
|
65
74
|
end
|
66
75
|
%w'Object Array String Time Date Timestamp BigDecimal Blob Bytes Clob'.each do |meth|
|
67
|
-
|
76
|
+
x = x = convertors[meth.to_sym] = Object.new
|
77
|
+
class_eval("def x.call(r, i) r.get#{meth}(i) end", __FILE__, __LINE__)
|
68
78
|
end
|
69
|
-
|
79
|
+
x = convertors[:RubyTime] = Object.new
|
80
|
+
def x.call(r, i)
|
70
81
|
if v = r.getTime(i)
|
71
82
|
Sequel.string_to_time("#{v.to_string}.#{sprintf('%03i', v.getTime.divmod(1000).last)}")
|
72
83
|
end
|
73
84
|
end
|
74
|
-
|
85
|
+
x = convertors[:RubyDate] = Object.new
|
86
|
+
def x.call(r, i)
|
75
87
|
if v = r.getDate(i)
|
76
88
|
Date.civil(v.getYear + 1900, v.getMonth + 1, v.getDate)
|
77
89
|
end
|
78
90
|
end
|
79
|
-
|
91
|
+
x = convertors[:RubyTimestamp] = Object.new
|
92
|
+
def x.call(r, i)
|
80
93
|
if v = r.getTimestamp(i)
|
81
94
|
Sequel.database_to_application_timestamp([v.getYear + 1900, v.getMonth + 1, v.getDate, v.getHours, v.getMinutes, v.getSeconds, v.getNanos])
|
82
95
|
end
|
83
96
|
end
|
84
|
-
|
97
|
+
x = convertors[:RubyBigDecimal] = Object.new
|
98
|
+
def x.call(r, i)
|
85
99
|
if v = r.getBigDecimal(i)
|
86
|
-
BigDecimal
|
100
|
+
::Kernel::BigDecimal(v.to_string)
|
87
101
|
end
|
88
102
|
end
|
89
|
-
|
103
|
+
x = convertors[:RubyBlob] = Object.new
|
104
|
+
def x.call(r, i)
|
90
105
|
if v = r.getBytes(i)
|
91
106
|
Sequel::SQL::Blob.new(String.from_java_bytes(v))
|
92
107
|
end
|
93
108
|
end
|
94
|
-
|
109
|
+
x = convertors[:RubyClob] = Object.new
|
110
|
+
def x.call(r, i)
|
95
111
|
if v = r.getClob(i)
|
96
112
|
v.getSubString(1, v.length)
|
97
113
|
end
|
98
114
|
end
|
115
|
+
x = convertors[:RubyArray] = Object.new
|
116
|
+
def x.call(r, i)
|
117
|
+
if v = r.getArray(i)
|
118
|
+
v.array.to_ary
|
119
|
+
end
|
120
|
+
end
|
99
121
|
|
100
|
-
|
101
|
-
o = INSTANCE
|
102
|
-
MAP = Hash.new(o.method(:Object))
|
122
|
+
MAP = Hash.new(convertors[:Object])
|
103
123
|
types = Java::JavaSQL::Types
|
104
124
|
|
105
125
|
{
|
106
|
-
:ARRAY => :Array,
|
107
126
|
:BOOLEAN => :Boolean,
|
108
127
|
:CHAR => :String,
|
109
128
|
:DOUBLE => :Double,
|
@@ -117,11 +136,12 @@ module Sequel
|
|
117
136
|
:TINYINT => :Short,
|
118
137
|
:VARCHAR => :String,
|
119
138
|
}.each do |type, meth|
|
120
|
-
MAP[types.const_get(type)] =
|
139
|
+
MAP[types.const_get(type)] = convertors[meth]
|
121
140
|
end
|
122
141
|
BASIC_MAP = MAP.dup
|
123
142
|
|
124
143
|
{
|
144
|
+
:ARRAY => :Array,
|
125
145
|
:BINARY => :Blob,
|
126
146
|
:BLOB => :Blob,
|
127
147
|
:CLOB => :Clob,
|
@@ -134,19 +154,16 @@ module Sequel
|
|
134
154
|
:TIMESTAMP => :Timestamp,
|
135
155
|
:VARBINARY => :Blob,
|
136
156
|
}.each do |type, meth|
|
137
|
-
BASIC_MAP[types.const_get(type)] =
|
138
|
-
MAP[types.const_get(type)] =
|
157
|
+
BASIC_MAP[types.const_get(type)] = convertors[meth]
|
158
|
+
MAP[types.const_get(type)] = convertors[:"Ruby#{meth}"]
|
139
159
|
end
|
160
|
+
MAP.freeze
|
161
|
+
BASIC_MAP.freeze
|
140
162
|
end
|
141
163
|
|
142
|
-
# JDBC Databases offer a fairly uniform interface that does not change
|
143
|
-
# much based on the sub adapter.
|
144
164
|
class Database < Sequel::Database
|
145
165
|
set_adapter_scheme :jdbc
|
146
166
|
|
147
|
-
# The type of database we are connecting to
|
148
|
-
attr_reader :database_type
|
149
|
-
|
150
167
|
# The Java database driver we are using (should be a Java class)
|
151
168
|
attr_reader :driver
|
152
169
|
|
@@ -171,32 +188,30 @@ module Sequel
|
|
171
188
|
args = opts[:args] || []
|
172
189
|
sql = "{call #{name}(#{args.map{'?'}.join(',')})}"
|
173
190
|
synchronize(opts[:server]) do |conn|
|
174
|
-
|
191
|
+
begin
|
192
|
+
cps = conn.prepareCall(sql)
|
175
193
|
|
176
|
-
|
177
|
-
|
194
|
+
i = 0
|
195
|
+
args.each{|arg| set_ps_arg(cps, arg, i+=1)}
|
178
196
|
|
179
|
-
|
180
|
-
if block_given?
|
197
|
+
if defined?(yield)
|
181
198
|
yield log_connection_yield(sql, conn){cps.executeQuery}
|
182
199
|
else
|
183
|
-
|
184
|
-
|
185
|
-
log_connection_yield(sql, conn){cps.executeUpdate}
|
200
|
+
log_connection_yield(sql, conn){cps.executeUpdate}
|
201
|
+
if opts[:type] == :insert
|
186
202
|
last_insert_id(conn, opts)
|
187
|
-
else
|
188
|
-
log_connection_yield(sql, conn){cps.executeUpdate}
|
189
203
|
end
|
190
204
|
end
|
191
|
-
rescue
|
205
|
+
rescue *DATABASE_ERROR_CLASSES => e
|
192
206
|
raise_error(e)
|
193
207
|
ensure
|
194
|
-
cps.close
|
208
|
+
cps.close if cps
|
195
209
|
end
|
196
210
|
end
|
197
211
|
end
|
198
212
|
|
199
|
-
# Connect to the database using JavaSQL::DriverManager.getConnection
|
213
|
+
# Connect to the database using JavaSQL::DriverManager.getConnection, and falling back
|
214
|
+
# to driver.new.connect if the driver is known.
|
200
215
|
def connect(server)
|
201
216
|
opts = server_opts(server)
|
202
217
|
conn = if jndi?
|
@@ -208,7 +223,7 @@ module Sequel
|
|
208
223
|
JavaSQL::DriverManager.setLoginTimeout(opts[:login_timeout]) if opts[:login_timeout]
|
209
224
|
raise StandardError, "skipping regular connection" if opts[:jdbc_properties]
|
210
225
|
JavaSQL::DriverManager.getConnection(*args)
|
211
|
-
rescue
|
226
|
+
rescue StandardError, *DATABASE_ERROR_CLASSES => e
|
212
227
|
raise e unless driver
|
213
228
|
# If the DriverManager can't get the connection - use the connect
|
214
229
|
# method of the driver. (This happens under Tomcat for instance)
|
@@ -222,15 +237,15 @@ module Sequel
|
|
222
237
|
c = driver.new.connect(args[0], props)
|
223
238
|
raise(Sequel::DatabaseError, 'driver.new.connect returned nil: probably bad JDBC connection string') unless c
|
224
239
|
c
|
225
|
-
rescue
|
226
|
-
|
227
|
-
e2.message
|
240
|
+
rescue StandardError, *DATABASE_ERROR_CLASSES => e2
|
241
|
+
if e2.respond_to?(:message=) && e2.message != e.message
|
242
|
+
e2.message = "#{e2.message}\n#{e.class.name}: #{e.message}"
|
228
243
|
end
|
229
244
|
raise e2
|
230
245
|
end
|
231
246
|
end
|
232
247
|
end
|
233
|
-
|
248
|
+
setup_connection_with_opts(conn, opts)
|
234
249
|
end
|
235
250
|
|
236
251
|
# Close given adapter connections, and delete any related prepared statements.
|
@@ -239,8 +254,6 @@ module Sequel
|
|
239
254
|
c.close
|
240
255
|
end
|
241
256
|
|
242
|
-
# Execute the given SQL. If a block is given, if should be a SELECT
|
243
|
-
# statement or something else that returns rows.
|
244
257
|
def execute(sql, opts=OPTS, &block)
|
245
258
|
return call_sproc(sql, opts, &block) if opts[:sproc]
|
246
259
|
return execute_prepared_statement(sql, opts, &block) if [Symbol, Dataset].any?{|c| sql.is_a?(c)}
|
@@ -257,7 +270,9 @@ module Sequel
|
|
257
270
|
log_connection_yield(sql, conn){stmt.execute(sql)}
|
258
271
|
when :insert
|
259
272
|
log_connection_yield(sql, conn){execute_statement_insert(stmt, sql)}
|
260
|
-
|
273
|
+
opts = Hash[opts]
|
274
|
+
opts[:stmt] = stmt
|
275
|
+
last_insert_id(conn, opts)
|
261
276
|
else
|
262
277
|
log_connection_yield(sql, conn){stmt.executeUpdate(sql)}
|
263
278
|
end
|
@@ -267,22 +282,24 @@ module Sequel
|
|
267
282
|
end
|
268
283
|
alias execute_dui execute
|
269
284
|
|
270
|
-
# Execute the given DDL SQL, which should not return any
|
271
|
-
# values or rows.
|
272
285
|
def execute_ddl(sql, opts=OPTS)
|
273
286
|
opts = Hash[opts]
|
274
287
|
opts[:type] = :ddl
|
275
288
|
execute(sql, opts)
|
276
289
|
end
|
277
290
|
|
278
|
-
# Execute the given INSERT SQL, returning the last inserted
|
279
|
-
# row id.
|
280
291
|
def execute_insert(sql, opts=OPTS)
|
281
292
|
opts = Hash[opts]
|
282
293
|
opts[:type] = :insert
|
283
294
|
execute(sql, opts)
|
284
295
|
end
|
285
296
|
|
297
|
+
def freeze
|
298
|
+
@type_convertor_map.freeze
|
299
|
+
@basic_type_convertor_map.freeze
|
300
|
+
super
|
301
|
+
end
|
302
|
+
|
286
303
|
# Use the JDBC metadata to get a list of foreign keys for the table.
|
287
304
|
def foreign_key_list(table, opts=OPTS)
|
288
305
|
m = output_identifier_meth
|
@@ -374,7 +391,7 @@ module Sequel
|
|
374
391
|
end
|
375
392
|
|
376
393
|
def database_error_classes
|
377
|
-
|
394
|
+
DATABASE_ERROR_CLASSES
|
378
395
|
end
|
379
396
|
|
380
397
|
def database_exception_sqlstate(exception, opts)
|
@@ -392,6 +409,10 @@ module Sequel
|
|
392
409
|
true
|
393
410
|
end
|
394
411
|
|
412
|
+
def dataset_class_default
|
413
|
+
Dataset
|
414
|
+
end
|
415
|
+
|
395
416
|
# Raise a disconnect error if the SQL state of the cause of the exception indicates so.
|
396
417
|
def disconnect_error?(exception, opts)
|
397
418
|
cause = exception.respond_to?(:cause) ? exception.cause : exception
|
@@ -419,6 +440,10 @@ module Sequel
|
|
419
440
|
cps = cps[1]
|
420
441
|
else
|
421
442
|
log_connection_yield("CLOSE #{name}", conn){cps[1].close} if cps
|
443
|
+
if name
|
444
|
+
opts = Hash[opts]
|
445
|
+
opts[:name] = name
|
446
|
+
end
|
422
447
|
cps = log_connection_yield("PREPARE#{" #{name}:" if name} #{sql}", conn){prepare_jdbc_statement(conn, sql, opts)}
|
423
448
|
if size = fetch_size
|
424
449
|
cps.setFetchSize(size)
|
@@ -434,7 +459,7 @@ module Sequel
|
|
434
459
|
msg << ")"
|
435
460
|
end
|
436
461
|
begin
|
437
|
-
if
|
462
|
+
if defined?(yield)
|
438
463
|
yield log_connection_yield(msg, conn, args){cps.executeQuery}
|
439
464
|
else
|
440
465
|
case opts[:type]
|
@@ -442,12 +467,15 @@ module Sequel
|
|
442
467
|
log_connection_yield(msg, conn, args){cps.execute}
|
443
468
|
when :insert
|
444
469
|
log_connection_yield(msg, conn, args){execute_prepared_statement_insert(cps)}
|
445
|
-
|
470
|
+
opts = Hash[opts]
|
471
|
+
opts[:prepared] = true
|
472
|
+
opts[:stmt] = cps
|
473
|
+
last_insert_id(conn, opts)
|
446
474
|
else
|
447
475
|
log_connection_yield(msg, conn, args){cps.executeUpdate}
|
448
476
|
end
|
449
477
|
end
|
450
|
-
rescue
|
478
|
+
rescue *DATABASE_ERROR_CLASSES => e
|
451
479
|
raise_error(e)
|
452
480
|
ensure
|
453
481
|
cps.close unless name
|
@@ -474,7 +502,7 @@ module Sequel
|
|
474
502
|
# Gets the connection from JNDI.
|
475
503
|
def get_connection_from_jndi
|
476
504
|
jndi_name = JNDI_URI_REGEXP.match(uri)[1]
|
477
|
-
|
505
|
+
javax.naming.InitialContext.new.lookup(jndi_name).connection
|
478
506
|
end
|
479
507
|
|
480
508
|
# Gets the JDBC connection uri from the JNDI resource.
|
@@ -504,27 +532,24 @@ module Sequel
|
|
504
532
|
# Support DateTime objects used in bound variables
|
505
533
|
def java_sql_datetime(datetime)
|
506
534
|
ts = java.sql.Timestamp.new(Time.local(datetime.year, datetime.month, datetime.day, datetime.hour, datetime.min, datetime.sec).to_i * 1000)
|
507
|
-
ts.setNanos((datetime.sec_fraction *
|
535
|
+
ts.setNanos((datetime.sec_fraction * 1000000000).to_i)
|
508
536
|
ts
|
509
537
|
end
|
510
538
|
|
511
539
|
# Support fractional seconds for Time objects used in bound variables
|
512
540
|
def java_sql_timestamp(time)
|
513
541
|
ts = java.sql.Timestamp.new(time.to_i * 1000)
|
514
|
-
|
515
|
-
ts.setNanos((RUBY_VERSION >= '1.9.0' && time.nsec != 0) ? time.nsec : time.usec * 1000)
|
542
|
+
ts.setNanos(time.nsec)
|
516
543
|
ts
|
517
544
|
end
|
518
545
|
|
519
|
-
# Log the given SQL and then execute it on the connection, used by
|
520
|
-
# the transaction code.
|
521
546
|
def log_connection_execute(conn, sql)
|
522
547
|
statement(conn){|s| log_connection_yield(sql, conn){s.execute(sql)}}
|
523
548
|
end
|
524
549
|
|
525
550
|
# By default, there is no support for determining the last inserted
|
526
551
|
# id, so return nil. This method should be overridden in
|
527
|
-
#
|
552
|
+
# subadapters.
|
528
553
|
def last_insert_id(conn, opts)
|
529
554
|
nil
|
530
555
|
end
|
@@ -532,7 +557,7 @@ module Sequel
|
|
532
557
|
# Yield the metadata for this database
|
533
558
|
def metadata(*args, &block)
|
534
559
|
synchronize do |c|
|
535
|
-
result = c.getMetaData.
|
560
|
+
result = c.getMetaData.public_send(*args)
|
536
561
|
begin
|
537
562
|
metadata_dataset.send(:process_result_set, result, &block)
|
538
563
|
ensure
|
@@ -594,12 +619,16 @@ module Sequel
|
|
594
619
|
cps.setString(i, nil)
|
595
620
|
end
|
596
621
|
|
597
|
-
# Return the connection.
|
598
|
-
# connection object before adding it to the connection pool.
|
622
|
+
# Return the connection. Can be overridden in subadapters for database specific setup.
|
599
623
|
def setup_connection(conn)
|
600
624
|
conn
|
601
625
|
end
|
602
626
|
|
627
|
+
# Setup the connection using the given connection options. Return the connection. Can be overridden in subadapters for database specific setup.
|
628
|
+
def setup_connection_with_opts(conn, opts)
|
629
|
+
setup_connection(conn)
|
630
|
+
end
|
631
|
+
|
603
632
|
def schema_column_set_db_type(schema)
|
604
633
|
case schema[:type]
|
605
634
|
when :string
|
@@ -613,7 +642,6 @@ module Sequel
|
|
613
642
|
end
|
614
643
|
end
|
615
644
|
|
616
|
-
# Parse the table schema for the given table.
|
617
645
|
def schema_parse_table(table, opts=OPTS)
|
618
646
|
m = output_identifier_meth(opts[:dataset])
|
619
647
|
schema, table = metadata_schema_and_table(table, opts)
|
@@ -639,7 +667,7 @@ module Sequel
|
|
639
667
|
s[:auto_increment] = h[:is_autoincrement] == "YES"
|
640
668
|
end
|
641
669
|
s[:max_length] = s[:column_size] if s[:type] == :string
|
642
|
-
if s[:db_type] =~
|
670
|
+
if s[:db_type] =~ /number|numeric|decimal/i && s[:scale] == 0
|
643
671
|
s[:type] = :integer
|
644
672
|
end
|
645
673
|
schema_column_set_db_type(s)
|
@@ -652,8 +680,7 @@ module Sequel
|
|
652
680
|
ts
|
653
681
|
end
|
654
682
|
|
655
|
-
#
|
656
|
-
# parsing the schema.
|
683
|
+
# Skip tables in the INFORMATION_SCHEMA when parsing columns.
|
657
684
|
def schema_parse_table_skip?(h, schema)
|
658
685
|
h[:table_schem] == 'INFORMATION_SCHEMA'
|
659
686
|
end
|
@@ -663,29 +690,27 @@ module Sequel
|
|
663
690
|
end
|
664
691
|
|
665
692
|
# Called before loading subadapter-specific code, necessary so that subadapter initialization code
|
666
|
-
# that runs queries works correctly. This cannot be
|
693
|
+
# that runs queries works correctly. This cannot be overridden in subadapters.
|
667
694
|
def setup_type_convertor_map_early
|
668
|
-
@type_convertor_map = TypeConvertor::MAP.merge(Java::JavaSQL::Types::TIMESTAMP=>
|
669
|
-
@basic_type_convertor_map = TypeConvertor::BASIC_MAP
|
695
|
+
@type_convertor_map = TypeConvertor::MAP.merge(Java::JavaSQL::Types::TIMESTAMP=>method(:timestamp_convert))
|
696
|
+
@basic_type_convertor_map = TypeConvertor::BASIC_MAP.dup
|
670
697
|
end
|
671
698
|
|
672
699
|
# Yield a new statement object, and ensure that it is closed before returning.
|
673
700
|
def statement(conn)
|
674
701
|
stmt = conn.createStatement
|
675
702
|
yield stmt
|
676
|
-
rescue
|
703
|
+
rescue *DATABASE_ERROR_CLASSES => e
|
677
704
|
raise_error(e)
|
678
705
|
ensure
|
679
706
|
stmt.close if stmt
|
680
707
|
end
|
681
708
|
|
682
|
-
# A conversion
|
709
|
+
# A conversion method for timestamp columns. This is used to make sure timestamps are converted using the
|
683
710
|
# correct timezone.
|
684
|
-
def
|
685
|
-
|
686
|
-
|
687
|
-
to_application_timestamp([v.getYear + 1900, v.getMonth + 1, v.getDate, v.getHours, v.getMinutes, v.getSeconds, v.getNanos])
|
688
|
-
end
|
711
|
+
def timestamp_convert(r, i)
|
712
|
+
if v = r.getTimestamp(i)
|
713
|
+
to_application_timestamp([v.getYear + 1900, v.getMonth + 1, v.getDate, v.getHours, v.getMinutes, v.getSeconds, v.getNanos])
|
689
714
|
end
|
690
715
|
end
|
691
716
|
end
|
@@ -693,15 +718,12 @@ module Sequel
|
|
693
718
|
class Dataset < Sequel::Dataset
|
694
719
|
include StoredProcedures
|
695
720
|
|
696
|
-
Database::DatasetClass = self
|
697
|
-
|
698
721
|
PreparedStatementMethods = prepared_statements_module(
|
699
722
|
"sql = self; opts = Hash[opts]; opts[:arguments] = bind_arguments",
|
700
723
|
Sequel::Dataset::UnnumberedArgumentMapper,
|
701
724
|
%w"execute execute_dui") do
|
702
725
|
private
|
703
726
|
|
704
|
-
# Same as execute, explicit due to intricacies of alias and super.
|
705
727
|
def execute_insert(sql, opts=OPTS)
|
706
728
|
sql = self
|
707
729
|
opts = Hash[opts]
|
@@ -712,61 +734,47 @@ module Sequel
|
|
712
734
|
end
|
713
735
|
|
714
736
|
StoredProcedureMethods = prepared_statements_module(
|
715
|
-
"sql = @sproc_name; opts = Hash[opts]; opts[:args] = @sproc_args; opts[:sproc] = true",
|
737
|
+
"sql = @opts[:sproc_name]; opts = Hash[opts]; opts[:args] = @opts[:sproc_args]; opts[:sproc] = true",
|
716
738
|
Sequel::Dataset::StoredProcedureMethods,
|
717
739
|
%w"execute execute_dui") do
|
718
740
|
private
|
719
741
|
|
720
|
-
# Same as execute, explicit due to intricacies of alias and super.
|
721
742
|
def execute_insert(sql, opts=OPTS)
|
722
|
-
sql = @sproc_name
|
743
|
+
sql = @opts[:sproc_name]
|
723
744
|
opts = Hash[opts]
|
724
|
-
opts[:args] = @sproc_args
|
745
|
+
opts[:args] = @opts[:sproc_args]
|
725
746
|
opts[:sproc] = true
|
726
747
|
opts[:type] = :insert
|
727
748
|
super
|
728
749
|
end
|
729
750
|
end
|
730
751
|
|
731
|
-
# Whether to convert some Java types to ruby types when retrieving rows.
|
732
|
-
# Uses the database's setting by default, can be set to false to roughly
|
733
|
-
# double performance when fetching rows.
|
734
|
-
attr_accessor :convert_types
|
735
|
-
|
736
|
-
# Correctly return rows from the database and return them as hashes.
|
737
752
|
def fetch_rows(sql, &block)
|
738
753
|
execute(sql){|result| process_result_set(result, &block)}
|
739
754
|
self
|
740
755
|
end
|
741
756
|
|
742
|
-
#
|
743
|
-
# database (and connection) for reuse.
|
744
|
-
def prepare(type, name=nil, *values)
|
745
|
-
ps = to_prepared_statement(type, values)
|
746
|
-
ps.extend(PreparedStatementMethods)
|
747
|
-
if name
|
748
|
-
ps.prepared_statement_name = name
|
749
|
-
db.set_prepared_statement(name, ps)
|
750
|
-
end
|
751
|
-
ps
|
752
|
-
end
|
753
|
-
|
754
|
-
# Set the fetch size on JDBC ResultSets created from this dataset.
|
757
|
+
# Set the fetch size on JDBC ResultSets created from the returned dataset.
|
755
758
|
def with_fetch_size(size)
|
756
759
|
clone(:fetch_size=>size)
|
757
760
|
end
|
761
|
+
|
762
|
+
# Set whether to convert Java types to ruby types in the returned dataset.
|
763
|
+
def with_convert_types(v)
|
764
|
+
clone(:convert_types=>v)
|
765
|
+
end
|
758
766
|
|
759
767
|
private
|
760
768
|
|
761
769
|
# Whether we should convert Java types to ruby types for this dataset.
|
762
770
|
def convert_types?
|
763
|
-
ct = @convert_types
|
771
|
+
ct = @opts[:convert_types]
|
764
772
|
ct.nil? ? db.convert_types : ct
|
765
773
|
end
|
766
774
|
|
767
775
|
# Extend the dataset with the JDBC stored procedure methods.
|
768
776
|
def prepare_extend_sproc(ds)
|
769
|
-
ds.
|
777
|
+
ds.with_extend(StoredProcedureMethods)
|
770
778
|
end
|
771
779
|
|
772
780
|
# The type conversion proc to use for the given column number i,
|
@@ -784,6 +792,10 @@ module Sequel
|
|
784
792
|
map[type]
|
785
793
|
end
|
786
794
|
|
795
|
+
def prepared_statement_modules
|
796
|
+
[PreparedStatementMethods]
|
797
|
+
end
|
798
|
+
|
787
799
|
# Split out from fetch rows to allow processing of JDBC result sets
|
788
800
|
# that don't come from issuing an SQL string.
|
789
801
|
def process_result_set(result)
|
@@ -800,11 +812,14 @@ module Sequel
|
|
800
812
|
i += 1
|
801
813
|
cols << [output_identifier(meta.getColumnLabel(i)), i, convert ? type_convertor(map, meta, meta.getColumnType(i), i) : basic_type_convertor(map, meta, meta.getColumnType(i), i)]
|
802
814
|
end
|
803
|
-
|
815
|
+
max = i
|
816
|
+
self.columns = cols.map{|c| c[0]}
|
804
817
|
|
805
818
|
while result.next
|
806
819
|
row = {}
|
807
|
-
|
820
|
+
i = -1
|
821
|
+
while (i += 1) < max
|
822
|
+
n, j, pr = cols[i]
|
808
823
|
row[n] = pr.call(result, j)
|
809
824
|
end
|
810
825
|
yield row
|