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
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
Sequel::JDBC.load_driver('org.hsqldb.jdbcDriver', :HSQLDB)
|
4
|
-
|
4
|
+
require_relative 'transactions'
|
5
5
|
|
6
6
|
module Sequel
|
7
7
|
module JDBC
|
@@ -13,20 +13,19 @@ module Sequel
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
# Database and Dataset support for HSQLDB databases accessed via JDBC.
|
17
16
|
module HSQLDB
|
18
|
-
# Instance methods for HSQLDB Database objects accessed via JDBC.
|
19
17
|
module DatabaseMethods
|
20
|
-
extend Sequel::Database::ResetIdentifierMangling
|
21
|
-
PRIMARY_KEY_INDEX_RE = /\Asys_idx_sys_pk_/i.freeze
|
22
|
-
|
23
18
|
include ::Sequel::JDBC::Transactions
|
24
19
|
|
25
|
-
# HSQLDB uses the :hsqldb database type.
|
26
20
|
def database_type
|
27
21
|
:hsqldb
|
28
22
|
end
|
29
23
|
|
24
|
+
def freeze
|
25
|
+
db_version
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
30
29
|
# HSQLDB uses an IDENTITY sequence as the default value for primary
|
31
30
|
# key columns.
|
32
31
|
def serial_primary_key_options
|
@@ -35,11 +34,10 @@ module Sequel
|
|
35
34
|
|
36
35
|
# The version of the database, as an integer (e.g 2.2.5 -> 20205)
|
37
36
|
def db_version
|
38
|
-
@db_version
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
end
|
37
|
+
return @db_version if defined?(@db_version)
|
38
|
+
v = get(Sequel.function(:DATABASE_VERSION))
|
39
|
+
@db_version = if v =~ /(\d+)\.(\d+)\.(\d+)/
|
40
|
+
$1.to_i * 10000 + $2.to_i * 100 + $3.to_i
|
43
41
|
end
|
44
42
|
end
|
45
43
|
|
@@ -50,13 +48,12 @@ module Sequel
|
|
50
48
|
|
51
49
|
private
|
52
50
|
|
53
|
-
# HSQLDB specific SQL for renaming columns, and changing column types and/or nullity.
|
54
51
|
def alter_table_sql(table, op)
|
55
52
|
case op[:op]
|
56
53
|
when :add_column
|
57
54
|
if op[:table]
|
58
55
|
[super(table, op.merge(:table=>nil)),
|
59
|
-
alter_table_sql(table, op.merge(:op=>:add_constraint, :type=>:foreign_key, :name=>op[:
|
56
|
+
alter_table_sql(table, op.merge(:op=>:add_constraint, :type=>:foreign_key, :name=>op[:foreign_key_constraint_name], :columns=>[op[:name]], :table=>op[:table]))]
|
60
57
|
else
|
61
58
|
super
|
62
59
|
end
|
@@ -109,7 +106,7 @@ module Sequel
|
|
109
106
|
|
110
107
|
# Primary key indexes appear to start with sys_idx_sys_pk_ on HSQLDB
|
111
108
|
def primary_key_index_re
|
112
|
-
|
109
|
+
/\Asys_idx_sys_pk_/i
|
113
110
|
end
|
114
111
|
|
115
112
|
# If an :identity option is present in the column, add the necessary IDENTITY SQL.
|
@@ -140,17 +137,7 @@ module Sequel
|
|
140
137
|
end
|
141
138
|
end
|
142
139
|
|
143
|
-
# Dataset class for HSQLDB datasets accessed via JDBC.
|
144
140
|
class Dataset < JDBC::Dataset
|
145
|
-
BOOL_TRUE = 'TRUE'.freeze
|
146
|
-
BOOL_FALSE = 'FALSE'.freeze
|
147
|
-
SQL_WITH_RECURSIVE = "WITH RECURSIVE ".freeze
|
148
|
-
APOS = Dataset::APOS
|
149
|
-
HSTAR = "H*".freeze
|
150
|
-
BLOB_OPEN = "X'".freeze
|
151
|
-
DEFAULT_FROM = " FROM (VALUES (0))".freeze
|
152
|
-
TIME_FORMAT = "'%H:%M:%S'".freeze
|
153
|
-
|
154
141
|
# Handle HSQLDB specific case insensitive LIKE and bitwise operator support.
|
155
142
|
def complex_expression_sql_append(sql, op, args)
|
156
143
|
case op
|
@@ -192,30 +179,36 @@ module Sequel
|
|
192
179
|
true
|
193
180
|
end
|
194
181
|
|
182
|
+
# HSQLDB 2.3.4+ supports MERGE. Older versions also support MERGE, but not all
|
183
|
+
# features that are in Sequel's tests.
|
184
|
+
def supports_merge?
|
185
|
+
db.db_version >= 20304
|
186
|
+
end
|
187
|
+
|
195
188
|
private
|
196
189
|
|
197
190
|
def empty_from_sql
|
198
|
-
|
191
|
+
" FROM (VALUES (0))"
|
199
192
|
end
|
200
193
|
|
201
194
|
# Use string in hex format for blob data.
|
202
195
|
def literal_blob_append(sql, v)
|
203
|
-
sql <<
|
196
|
+
sql << "X'" << v.unpack("H*").first << "'"
|
204
197
|
end
|
205
198
|
|
206
199
|
# HSQLDB uses FALSE for false values.
|
207
200
|
def literal_false
|
208
|
-
|
201
|
+
'FALSE'
|
209
202
|
end
|
210
203
|
|
211
204
|
# HSQLDB handles fractional seconds in timestamps, but not in times
|
212
205
|
def literal_sqltime(v)
|
213
|
-
v.strftime(
|
206
|
+
v.strftime("'%H:%M:%S'")
|
214
207
|
end
|
215
208
|
|
216
209
|
# HSQLDB uses TRUE for true values.
|
217
210
|
def literal_true
|
218
|
-
|
211
|
+
'TRUE'
|
219
212
|
end
|
220
213
|
|
221
214
|
# HSQLDB supports multiple rows in INSERT.
|
@@ -225,7 +218,7 @@ module Sequel
|
|
225
218
|
|
226
219
|
# Use WITH RECURSIVE instead of WITH if any of the CTEs is recursive
|
227
220
|
def select_with_sql_base
|
228
|
-
opts[:with].any?{|w| w[:recursive]} ?
|
221
|
+
opts[:with].any?{|w| w[:recursive]} ? "WITH RECURSIVE " : super
|
229
222
|
end
|
230
223
|
end
|
231
224
|
end
|
@@ -1,24 +1,21 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
Sequel::JDBC.load_driver('Java::net.sourceforge.jtds.jdbc.Driver', :JTDS)
|
4
|
-
|
4
|
+
require_relative 'mssql'
|
5
5
|
|
6
6
|
module Sequel
|
7
7
|
module JDBC
|
8
8
|
Sequel.synchronize do
|
9
9
|
DATABASE_SETUP[:jtds] = proc do |db|
|
10
10
|
db.extend(Sequel::JDBC::JTDS::DatabaseMethods)
|
11
|
-
db.
|
11
|
+
db.extend_datasets Sequel::MSSQL::DatasetMethods
|
12
12
|
db.send(:set_mssql_unicode_strings)
|
13
13
|
Java::net.sourceforge.jtds.jdbc.Driver
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
# Database and Dataset instance methods for JTDS specific
|
18
|
-
# support via JDBC.
|
19
17
|
module JTDS
|
20
18
|
module DatabaseMethods
|
21
|
-
extend Sequel::Database::ResetIdentifierMangling
|
22
19
|
include Sequel::JDBC::MSSQL::DatabaseMethods
|
23
20
|
|
24
21
|
private
|
@@ -37,11 +34,6 @@ module Sequel
|
|
37
34
|
cps.setNull(i, cps.getParameterMetaData.getParameterType(i))
|
38
35
|
end
|
39
36
|
end
|
40
|
-
|
41
|
-
# Dataset class for JTDS datasets accessed via JDBC.
|
42
|
-
class Dataset < JDBC::Dataset
|
43
|
-
include Sequel::MSSQL::DatasetMethods
|
44
|
-
end
|
45
37
|
end
|
46
38
|
end
|
47
39
|
end
|
@@ -1,19 +1,11 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative '../shared/mssql'
|
4
4
|
|
5
5
|
module Sequel
|
6
6
|
module JDBC
|
7
|
-
# Database and Dataset instance methods for MSSQL specific
|
8
|
-
# support via JDBC.
|
9
7
|
module MSSQL
|
10
|
-
# Database instance methods for MSSQL databases accessed via JDBC.
|
11
8
|
module DatabaseMethods
|
12
|
-
extend Sequel::Database::ResetIdentifierMangling
|
13
|
-
PRIMARY_KEY_INDEX_RE = /\Apk__/i.freeze
|
14
|
-
ATAT_IDENTITY = 'SELECT @@IDENTITY'.freeze
|
15
|
-
SCOPE_IDENTITY = 'SELECT SCOPE_IDENTITY()'.freeze
|
16
|
-
|
17
9
|
include Sequel::MSSQL::DatabaseMethods
|
18
10
|
|
19
11
|
private
|
@@ -21,7 +13,7 @@ module Sequel
|
|
21
13
|
# Get the last inserted id using SCOPE_IDENTITY().
|
22
14
|
def last_insert_id(conn, opts=OPTS)
|
23
15
|
statement(conn) do |stmt|
|
24
|
-
sql = opts[:prepared] ?
|
16
|
+
sql = opts[:prepared] ? 'SELECT @@IDENTITY' : 'SELECT SCOPE_IDENTITY()'
|
25
17
|
rs = log_connection_yield(sql, conn){stmt.executeQuery(sql)}
|
26
18
|
rs.next
|
27
19
|
rs.getLong(1)
|
@@ -30,7 +22,7 @@ module Sequel
|
|
30
22
|
|
31
23
|
# Primary key indexes appear to start with pk__ on MSSQL
|
32
24
|
def primary_key_index_re
|
33
|
-
|
25
|
+
/\Apk__/i
|
34
26
|
end
|
35
27
|
end
|
36
28
|
end
|
@@ -1,37 +1,24 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
|
-
Sequel::JDBC.load_driver('com.mysql.jdbc.Driver', :MySQL)
|
4
|
-
Sequel.require 'adapters/shared/mysql'
|
5
|
-
|
6
3
|
module Sequel
|
7
4
|
module JDBC
|
5
|
+
driver = Sequel::JDBC.load_driver(%w'com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver', :MySQL)
|
6
|
+
require_relative '../shared/mysql'
|
7
|
+
|
8
8
|
Sequel.synchronize do
|
9
9
|
DATABASE_SETUP[:mysql] = proc do |db|
|
10
10
|
db.extend(Sequel::JDBC::MySQL::DatabaseMethods)
|
11
11
|
db.extend_datasets Sequel::MySQL::DatasetMethods
|
12
|
-
|
12
|
+
driver
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
# Database and Dataset instance methods for MySQL specific
|
17
|
-
# support via JDBC.
|
18
16
|
module MySQL
|
19
|
-
# Database instance methods for MySQL databases accessed via JDBC.
|
20
17
|
module DatabaseMethods
|
21
|
-
extend Sequel::Database::ResetIdentifierMangling
|
22
18
|
include Sequel::MySQL::DatabaseMethods
|
23
|
-
LAST_INSERT_ID = 'SELECT LAST_INSERT_ID()'.freeze
|
24
19
|
|
25
20
|
private
|
26
21
|
|
27
|
-
# The database name for the given database. Need to parse it out
|
28
|
-
# of the connection string, since the JDBC does no parsing on the
|
29
|
-
# given connection string by default.
|
30
|
-
def database_name
|
31
|
-
u = URI.parse(uri.sub(/\Ajdbc:/, ''))
|
32
|
-
(m = /\/(.*)/.match(u.path)) && m[1]
|
33
|
-
end
|
34
|
-
|
35
22
|
# MySQL exception handling with SQLState is less accurate than with regexps.
|
36
23
|
def database_exception_use_sqlstates?
|
37
24
|
false
|
@@ -57,7 +44,7 @@ module Sequel
|
|
57
44
|
end
|
58
45
|
else
|
59
46
|
statement(conn) do |st|
|
60
|
-
rs = st.executeQuery(LAST_INSERT_ID)
|
47
|
+
rs = st.executeQuery('SELECT LAST_INSERT_ID()')
|
61
48
|
rs.next
|
62
49
|
rs.getLong(1)
|
63
50
|
end
|
@@ -67,12 +54,12 @@ module Sequel
|
|
67
54
|
# MySQL 5.1.12 JDBC adapter requires generated keys
|
68
55
|
# and previous versions don't mind.
|
69
56
|
def execute_statement_insert(stmt, sql)
|
70
|
-
stmt.executeUpdate(sql, JavaSQL::Statement
|
57
|
+
stmt.executeUpdate(sql, JavaSQL::Statement::RETURN_GENERATED_KEYS)
|
71
58
|
end
|
72
59
|
|
73
60
|
# Return generated keys for insert statements.
|
74
61
|
def prepare_jdbc_statement(conn, sql, opts)
|
75
|
-
opts[:type] == :insert ? conn.prepareStatement(sql, JavaSQL::Statement
|
62
|
+
opts[:type] == :insert ? conn.prepareStatement(sql, JavaSQL::Statement::RETURN_GENERATED_KEYS) : super
|
76
63
|
end
|
77
64
|
|
78
65
|
# Convert tinyint(1) type to boolean
|
@@ -86,6 +73,16 @@ module Sequel
|
|
86
73
|
mysql_connection_setting_sqls.each{|sql| statement(conn){|s| log_connection_yield(sql, conn){s.execute(sql)}}}
|
87
74
|
super
|
88
75
|
end
|
76
|
+
|
77
|
+
# Handle unsigned integer values
|
78
|
+
def setup_type_convertor_map
|
79
|
+
super
|
80
|
+
TypeConvertor::BASIC_MAP.dup
|
81
|
+
@type_convertor_map[Java::JavaSQL::Types::SMALLINT] = @type_convertor_map[Java::JavaSQL::Types::INTEGER]
|
82
|
+
@type_convertor_map[Java::JavaSQL::Types::INTEGER] = @type_convertor_map[Java::JavaSQL::Types::BIGINT]
|
83
|
+
@basic_type_convertor_map[Java::JavaSQL::Types::SMALLINT] = @basic_type_convertor_map[Java::JavaSQL::Types::INTEGER]
|
84
|
+
@basic_type_convertor_map[Java::JavaSQL::Types::INTEGER] = @basic_type_convertor_map[Java::JavaSQL::Types::BIGINT]
|
85
|
+
end
|
89
86
|
end
|
90
87
|
end
|
91
88
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
Sequel::JDBC.load_driver('Java::oracle.jdbc.driver.OracleDriver')
|
4
|
-
|
5
|
-
|
4
|
+
require_relative '../shared/oracle'
|
5
|
+
require_relative 'transactions'
|
6
6
|
|
7
7
|
module Sequel
|
8
8
|
module JDBC
|
@@ -14,33 +14,34 @@ module Sequel
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
module Oracle
|
18
18
|
JAVA_BIG_DECIMAL_CONSTRUCTOR = java.math.BigDecimal.java_class.constructor(Java::long).method(:new_instance)
|
19
|
-
|
20
|
-
def
|
19
|
+
ORACLE_DECIMAL = Object.new
|
20
|
+
def ORACLE_DECIMAL.call(r, i)
|
21
21
|
if v = r.getBigDecimal(i)
|
22
22
|
i = v.long_value
|
23
23
|
if v == JAVA_BIG_DECIMAL_CONSTRUCTOR.call(i)
|
24
24
|
i
|
25
25
|
else
|
26
|
-
BigDecimal
|
26
|
+
::Kernel::BigDecimal(v.to_string)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
30
|
-
end
|
31
30
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
31
|
+
ORACLE_CLOB = Object.new
|
32
|
+
def ORACLE_CLOB.call(r, i)
|
33
|
+
return unless clob = r.getClob(i)
|
34
|
+
str = clob.getSubString(1, clob.length)
|
35
|
+
clob.freeTemporary if clob.isTemporary
|
36
|
+
str
|
37
|
+
end
|
38
38
|
|
39
|
+
module DatabaseMethods
|
39
40
|
include Sequel::Oracle::DatabaseMethods
|
40
41
|
include Sequel::JDBC::Transactions
|
41
42
|
|
42
43
|
def self.extended(db)
|
43
|
-
db.
|
44
|
+
db.instance_exec do
|
44
45
|
@autosequence = opts[:autosequence]
|
45
46
|
@primary_key_sequences = {}
|
46
47
|
end
|
@@ -84,7 +85,7 @@ module Sequel
|
|
84
85
|
|
85
86
|
# Primary key indexes appear to start with sys_ on Oracle
|
86
87
|
def primary_key_index_re
|
87
|
-
|
88
|
+
/\Asys_/i
|
88
89
|
end
|
89
90
|
|
90
91
|
def schema_parse_table(*)
|
@@ -110,17 +111,18 @@ module Sequel
|
|
110
111
|
|
111
112
|
def setup_type_convertor_map
|
112
113
|
super
|
113
|
-
@type_convertor_map[:OracleDecimal] =
|
114
|
+
@type_convertor_map[:OracleDecimal] = ORACLE_DECIMAL
|
115
|
+
@type_convertor_map[:OracleClob] = ORACLE_CLOB
|
114
116
|
end
|
115
117
|
end
|
116
118
|
|
117
|
-
# Dataset class for Oracle datasets accessed via JDBC.
|
118
119
|
class Dataset < JDBC::Dataset
|
119
120
|
include Sequel::Oracle::DatasetMethods
|
120
121
|
|
121
122
|
NUMERIC_TYPE = Java::JavaSQL::Types::NUMERIC
|
122
123
|
TIMESTAMP_TYPE = Java::JavaSQL::Types::TIMESTAMP
|
123
|
-
|
124
|
+
CLOB_TYPE = Java::JavaSQL::Types::CLOB
|
125
|
+
TIMESTAMPTZ_TYPES = [Java::oracle.jdbc.OracleTypes::TIMESTAMPTZ, Java::oracle.jdbc.OracleTypes::TIMESTAMPLTZ].freeze
|
124
126
|
|
125
127
|
def type_convertor(map, meta, type, i)
|
126
128
|
case type
|
@@ -132,6 +134,8 @@ module Sequel
|
|
132
134
|
end
|
133
135
|
when *TIMESTAMPTZ_TYPES
|
134
136
|
map[TIMESTAMP_TYPE]
|
137
|
+
when CLOB_TYPE
|
138
|
+
map[:OracleClob]
|
135
139
|
else
|
136
140
|
super
|
137
141
|
end
|
@@ -1,47 +1,20 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
Sequel::JDBC.load_driver('org.postgresql.Driver', :Postgres)
|
4
|
-
|
4
|
+
require_relative '../shared/postgres'
|
5
5
|
|
6
6
|
module Sequel
|
7
|
-
Postgres::CONVERTED_EXCEPTIONS << NativeException
|
8
|
-
|
9
7
|
module JDBC
|
10
8
|
Sequel.synchronize do
|
11
9
|
DATABASE_SETUP[:postgresql] = proc do |db|
|
12
|
-
db.extend(Sequel::JDBC::Postgres::DatabaseMethods)
|
13
10
|
db.dataset_class = Sequel::JDBC::Postgres::Dataset
|
11
|
+
db.extend(Sequel::JDBC::Postgres::DatabaseMethods)
|
14
12
|
org.postgresql.Driver
|
15
13
|
end
|
16
14
|
end
|
17
15
|
|
18
|
-
class TypeConvertor
|
19
|
-
# Return PostgreSQL array types as ruby Arrays instead of
|
20
|
-
# JDBC PostgreSQL driver-specific array type. Only used if the
|
21
|
-
# database does not have a conversion proc for the type.
|
22
|
-
def RubyPGArray(r, i)
|
23
|
-
if v = r.getArray(i)
|
24
|
-
v.array.to_ary
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# Return PostgreSQL hstore types as ruby Hashes instead of
|
29
|
-
# Java HashMaps. Only used if the database does not have a
|
30
|
-
# conversion proc for the type.
|
31
|
-
def RubyPGHstore(r, i)
|
32
|
-
if v = r.getObject(i)
|
33
|
-
v.to_hash
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# Adapter, Database, and Dataset support for accessing a PostgreSQL
|
39
|
-
# database via JDBC.
|
40
16
|
module Postgres
|
41
|
-
# Methods to add to Database instances that access PostgreSQL via
|
42
|
-
# JDBC.
|
43
17
|
module DatabaseMethods
|
44
|
-
extend Sequel::Database::ResetIdentifierMangling
|
45
18
|
include Sequel::Postgres::DatabaseMethods
|
46
19
|
|
47
20
|
# Add the primary_keys and primary_key_sequences instance variables,
|
@@ -51,30 +24,40 @@ module Sequel
|
|
51
24
|
db.send(:initialize_postgres_adapter)
|
52
25
|
end
|
53
26
|
|
27
|
+
# Remove any current entry for the oid in the oid_convertor_map.
|
28
|
+
def add_conversion_proc(oid, *)
|
29
|
+
super
|
30
|
+
Sequel.synchronize{@oid_convertor_map.delete(oid)}
|
31
|
+
end
|
32
|
+
|
54
33
|
# See Sequel::Postgres::Adapter#copy_into
|
55
34
|
def copy_into(table, opts=OPTS)
|
56
35
|
data = opts[:data]
|
57
36
|
data = Array(data) if data.is_a?(String)
|
58
37
|
|
59
|
-
if
|
38
|
+
if defined?(yield) && data
|
60
39
|
raise Error, "Cannot provide both a :data option and a block to copy_into"
|
61
|
-
elsif !
|
40
|
+
elsif !defined?(yield) && !data
|
62
41
|
raise Error, "Must provide either a :data option or a block to copy_into"
|
63
42
|
end
|
64
43
|
|
65
|
-
synchronize(opts) do |conn|
|
44
|
+
synchronize(opts[:server]) do |conn|
|
66
45
|
begin
|
67
46
|
copy_manager = org.postgresql.copy.CopyManager.new(conn)
|
68
47
|
copier = copy_manager.copy_in(copy_into_sql(table, opts))
|
69
|
-
if
|
48
|
+
if defined?(yield)
|
70
49
|
while buf = yield
|
71
|
-
|
50
|
+
java_bytes = buf.to_java_bytes
|
51
|
+
copier.writeToCopy(java_bytes, 0, java_bytes.length)
|
72
52
|
end
|
73
53
|
else
|
74
|
-
data.each
|
54
|
+
data.each do |d|
|
55
|
+
java_bytes = d.to_java_bytes
|
56
|
+
copier.writeToCopy(java_bytes, 0, java_bytes.length)
|
57
|
+
end
|
75
58
|
end
|
76
59
|
rescue Exception => e
|
77
|
-
copier.cancelCopy
|
60
|
+
copier.cancelCopy if copier
|
78
61
|
raise
|
79
62
|
ensure
|
80
63
|
unless e
|
@@ -94,7 +77,7 @@ module Sequel
|
|
94
77
|
copy_manager = org.postgresql.copy.CopyManager.new(conn)
|
95
78
|
copier = copy_manager.copy_out(copy_table_sql(table, opts))
|
96
79
|
begin
|
97
|
-
if
|
80
|
+
if defined?(yield)
|
98
81
|
while buf = copier.readFromCopy
|
99
82
|
yield(String.from_java_bytes(buf))
|
100
83
|
end
|
@@ -106,8 +89,12 @@ module Sequel
|
|
106
89
|
end
|
107
90
|
b
|
108
91
|
end
|
92
|
+
rescue => e
|
93
|
+
raise_error(e, :disconnect=>true)
|
109
94
|
ensure
|
110
|
-
|
95
|
+
if buf && !e
|
96
|
+
raise DatabaseDisconnectError, "disconnecting as a partial COPY may leave the connection in an unusable state"
|
97
|
+
end
|
111
98
|
end
|
112
99
|
end
|
113
100
|
end
|
@@ -123,19 +110,13 @@ module Sequel
|
|
123
110
|
else
|
124
111
|
false
|
125
112
|
end
|
126
|
-
|
113
|
+
Sequel.synchronize{@oid_convertor_map[oid] = conv}
|
127
114
|
end
|
128
115
|
conv
|
129
116
|
end
|
130
117
|
|
131
118
|
private
|
132
119
|
|
133
|
-
# Clear oid convertor map cache when conversion procs are updated.
|
134
|
-
def conversion_procs_updated
|
135
|
-
super
|
136
|
-
Sequel.synchronize{@oid_convertor_map = {}}
|
137
|
-
end
|
138
|
-
|
139
120
|
def disconnect_error?(exception, opts)
|
140
121
|
super || exception.message =~ /\A(This connection has been closed\.|FATAL: terminating connection due to administrator command|An I\/O error occurred while sending to the backend\.)\z/
|
141
122
|
end
|
@@ -147,6 +128,21 @@ module Sequel
|
|
147
128
|
nil
|
148
129
|
end
|
149
130
|
|
131
|
+
# Work around issue when using Sequel's bound variable support where the
|
132
|
+
# same SQL is used in different bound variable calls, but the schema has
|
133
|
+
# changed between the calls. This is necessary as jdbc-postgres versions
|
134
|
+
# after 9.4.1200 violate the JDBC API. These versions cache separate
|
135
|
+
# PreparedStatement instances, which are eventually prepared server side after the
|
136
|
+
# prepareThreshold is met. The JDBC API violation is that PreparedStatement#close
|
137
|
+
# does not release the server side prepared statement.
|
138
|
+
def prepare_jdbc_statement(conn, sql, opts)
|
139
|
+
ps = super
|
140
|
+
unless opts[:name]
|
141
|
+
ps.prepare_threshold = 0
|
142
|
+
end
|
143
|
+
ps
|
144
|
+
end
|
145
|
+
|
150
146
|
# If the given argument is a recognized PostgreSQL-specific type, create
|
151
147
|
# a PGObject instance with unknown type and the bound argument string value,
|
152
148
|
# and set that as the prepared statement argument.
|
@@ -168,10 +164,10 @@ module Sequel
|
|
168
164
|
end
|
169
165
|
|
170
166
|
# Execute the connection configuration SQL queries on the connection.
|
171
|
-
def
|
172
|
-
conn = super
|
167
|
+
def setup_connection_with_opts(conn, opts)
|
168
|
+
conn = super
|
173
169
|
statement(conn) do |stmt|
|
174
|
-
connection_configuration_sqls.each{|sql| log_connection_yield(sql, conn){stmt.execute(sql)}}
|
170
|
+
connection_configuration_sqls(opts).each{|sql| log_connection_yield(sql, conn){stmt.execute(sql)}}
|
175
171
|
end
|
176
172
|
conn
|
177
173
|
end
|
@@ -179,39 +175,43 @@ module Sequel
|
|
179
175
|
def setup_type_convertor_map
|
180
176
|
super
|
181
177
|
@oid_convertor_map = {}
|
182
|
-
@type_convertor_map[:RubyPGArray] = TypeConvertor::INSTANCE.method(:RubyPGArray)
|
183
|
-
@type_convertor_map[:RubyPGHstore] = TypeConvertor::INSTANCE.method(:RubyPGHstore)
|
184
178
|
end
|
185
179
|
end
|
186
180
|
|
187
|
-
# Dataset subclass used for datasets that connect to PostgreSQL via JDBC.
|
188
181
|
class Dataset < JDBC::Dataset
|
189
182
|
include Sequel::Postgres::DatasetMethods
|
190
|
-
APOS = Dataset::APOS
|
191
|
-
|
192
|
-
# Add the shared PostgreSQL prepared statement methods
|
193
|
-
def prepare(type, name=nil, *values)
|
194
|
-
ps = to_prepared_statement(type, values)
|
195
|
-
ps.extend(JDBC::Dataset::PreparedStatementMethods)
|
196
|
-
ps.extend(::Sequel::Postgres::DatasetMethods::PreparedStatementMethods)
|
197
|
-
if name
|
198
|
-
ps.prepared_statement_name = name
|
199
|
-
db.set_prepared_statement(name, ps)
|
200
|
-
end
|
201
|
-
ps
|
202
|
-
end
|
203
183
|
|
184
|
+
# Warn when calling as the fetch size is ignored by the JDBC adapter currently.
|
185
|
+
def with_fetch_size(size)
|
186
|
+
warn("Sequel::JDBC::Postgres::Dataset#with_fetch_size does not currently have an effect.", :uplevel=>1)
|
187
|
+
super
|
188
|
+
end
|
189
|
+
|
204
190
|
private
|
205
191
|
|
206
192
|
# Literalize strings similar to the native postgres adapter
|
207
193
|
def literal_string_append(sql, v)
|
208
|
-
sql <<
|
194
|
+
sql << "'" << db.synchronize(@opts[:server]){|c| c.escape_string(v)} << "'"
|
195
|
+
end
|
196
|
+
|
197
|
+
# SQL fragment for Sequel::SQLTime, containing just the time part
|
198
|
+
def literal_sqltime(v)
|
199
|
+
v.strftime("'%H:%M:%S#{sprintf(".%03d", (v.usec/1000.0).round)}'")
|
209
200
|
end
|
210
201
|
|
211
202
|
STRING_TYPE = Java::JavaSQL::Types::VARCHAR
|
212
203
|
ARRAY_TYPE = Java::JavaSQL::Types::ARRAY
|
213
|
-
PG_SPECIFIC_TYPES = [
|
214
|
-
|
204
|
+
PG_SPECIFIC_TYPES = [Java::JavaSQL::Types::ARRAY, Java::JavaSQL::Types::OTHER, Java::JavaSQL::Types::STRUCT, Java::JavaSQL::Types::TIME_WITH_TIMEZONE, Java::JavaSQL::Types::TIME].freeze
|
205
|
+
|
206
|
+
# Return PostgreSQL hstore types as ruby Hashes instead of
|
207
|
+
# Java HashMaps. Only used if the database does not have a
|
208
|
+
# conversion proc for the type.
|
209
|
+
HSTORE_METHOD = Object.new
|
210
|
+
def HSTORE_METHOD.call(r, i)
|
211
|
+
if v = r.getObject(i)
|
212
|
+
v.to_hash
|
213
|
+
end
|
214
|
+
end
|
215
215
|
|
216
216
|
def type_convertor(map, meta, type, i)
|
217
217
|
case type
|
@@ -219,12 +219,10 @@ module Sequel
|
|
219
219
|
oid = meta.getField(i).getOID
|
220
220
|
if pr = db.oid_convertor_proc(oid)
|
221
221
|
pr
|
222
|
-
elsif type == ARRAY_TYPE
|
223
|
-
map[:RubyPGArray]
|
224
222
|
elsif oid == 2950 # UUID
|
225
223
|
map[STRING_TYPE]
|
226
|
-
elsif meta.getPGType(i) ==
|
227
|
-
|
224
|
+
elsif meta.getPGType(i) == 'hstore'
|
225
|
+
HSTORE_METHOD
|
228
226
|
else
|
229
227
|
super
|
230
228
|
end
|