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,152 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
Sequel.require %w'shared/mysql utils/stored_procedures', 'adapters'
|
4
|
-
|
5
|
-
module Sequel
|
6
|
-
module MySQL
|
7
|
-
# This module is used by the mysql and mysql2 adapters to support
|
8
|
-
# prepared statements and stored procedures.
|
9
|
-
module PreparedStatements
|
10
|
-
module DatabaseMethods
|
11
|
-
disconnect_errors = <<-END.split("\n").map(&:strip)
|
12
|
-
Commands out of sync; you can't run this command now
|
13
|
-
Can't connect to local MySQL server through socket
|
14
|
-
MySQL server has gone away
|
15
|
-
Lost connection to MySQL server during query
|
16
|
-
This connection is still waiting for a result, try again once you have the result
|
17
|
-
closed MySQL connection
|
18
|
-
END
|
19
|
-
# Error messages for mysql and mysql2 that indicate the current connection should be disconnected
|
20
|
-
MYSQL_DATABASE_DISCONNECT_ERRORS = /\A#{Regexp.union(disconnect_errors)}/o
|
21
|
-
|
22
|
-
# Support stored procedures on MySQL
|
23
|
-
def call_sproc(name, opts=OPTS, &block)
|
24
|
-
args = opts[:args] || []
|
25
|
-
execute("CALL #{name}#{args.empty? ? '()' : literal(args)}", opts.merge(:sproc=>false), &block)
|
26
|
-
end
|
27
|
-
|
28
|
-
# Executes the given SQL using an available connection, yielding the
|
29
|
-
# connection if the block is given.
|
30
|
-
def execute(sql, opts=OPTS, &block)
|
31
|
-
if opts[:sproc]
|
32
|
-
call_sproc(sql, opts, &block)
|
33
|
-
elsif sql.is_a?(Symbol)
|
34
|
-
execute_prepared_statement(sql, opts, &block)
|
35
|
-
else
|
36
|
-
synchronize(opts[:server]){|conn| _execute(conn, sql, opts, &block)}
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
def add_prepared_statements_cache(conn)
|
43
|
-
class << conn
|
44
|
-
attr_accessor :prepared_statements
|
45
|
-
end
|
46
|
-
conn.prepared_statements = {}
|
47
|
-
end
|
48
|
-
|
49
|
-
# Stupid MySQL doesn't use SQLState error codes correctly, mapping
|
50
|
-
# all constraint violations to 23000 even though it recognizes
|
51
|
-
# different types.
|
52
|
-
def database_specific_error_class(exception, opts)
|
53
|
-
case exception.errno
|
54
|
-
when 1048
|
55
|
-
NotNullConstraintViolation
|
56
|
-
when 1062
|
57
|
-
UniqueConstraintViolation
|
58
|
-
when 1451, 1452
|
59
|
-
ForeignKeyConstraintViolation
|
60
|
-
else
|
61
|
-
super
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
# Executes a prepared statement on an available connection. If the
|
66
|
-
# prepared statement already exists for the connection and has the same
|
67
|
-
# SQL, reuse it, otherwise, prepare the new statement. Because of the
|
68
|
-
# usual MySQL stupidity, we are forced to name arguments via separate
|
69
|
-
# SET queries. Use @sequel_arg_N (for N starting at 1) for these
|
70
|
-
# arguments.
|
71
|
-
def execute_prepared_statement(ps_name, opts, &block)
|
72
|
-
args = opts[:arguments]
|
73
|
-
ps = prepared_statement(ps_name)
|
74
|
-
sql = ps.prepared_sql
|
75
|
-
synchronize(opts[:server]) do |conn|
|
76
|
-
unless conn.prepared_statements[ps_name] == sql
|
77
|
-
_execute(conn, "PREPARE #{ps_name} FROM #{literal(sql)}", opts)
|
78
|
-
conn.prepared_statements[ps_name] = sql
|
79
|
-
end
|
80
|
-
i = 0
|
81
|
-
_execute(conn, "SET " + args.map {|arg| "@sequel_arg_#{i+=1} = #{literal(arg)}"}.join(", "), opts) unless args.empty?
|
82
|
-
opts = opts.merge(:log_sql=>" (#{sql})") if ps.log_sql
|
83
|
-
_execute(conn, "EXECUTE #{ps_name}#{" USING #{(1..i).map{|j| "@sequel_arg_#{j}"}.join(', ')}" unless i == 0}", opts, &block)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
module DatasetMethods
|
89
|
-
include Sequel::Dataset::StoredProcedures
|
90
|
-
|
91
|
-
# Methods to add to MySQL prepared statement calls without using a
|
92
|
-
# real database prepared statement and bound variables.
|
93
|
-
module CallableStatementMethods
|
94
|
-
# Extend given dataset with this module so subselects inside subselects in
|
95
|
-
# prepared statements work.
|
96
|
-
def subselect_sql_append(sql, ds)
|
97
|
-
ps = ds.to_prepared_statement(:select).clone(:append_sql => sql)
|
98
|
-
ps.extend(CallableStatementMethods)
|
99
|
-
ps = ps.bind(@opts[:bind_vars]) if @opts[:bind_vars]
|
100
|
-
ps.prepared_args = prepared_args
|
101
|
-
ps.prepared_sql
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
PreparedStatementMethods = Sequel::Dataset.send(:prepared_statements_module,
|
106
|
-
:prepare_bind,
|
107
|
-
Sequel::Dataset::UnnumberedArgumentMapper) do
|
108
|
-
# Raise a more obvious error if you attempt to call a unnamed prepared statement.
|
109
|
-
def call(*)
|
110
|
-
raise Error, "Cannot call prepared statement without a name" if prepared_statement_name.nil?
|
111
|
-
super
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
StoredProcedureMethods = Sequel::Dataset.send(:prepared_statements_module,
|
116
|
-
"sql = @sproc_name; opts = Hash[opts]; opts[:args] = @sproc_args; opts[:sproc] = true",
|
117
|
-
Sequel::Dataset::StoredProcedureMethods, %w'execute execute_dui')
|
118
|
-
|
119
|
-
# MySQL is different in that it supports prepared statements but not bound
|
120
|
-
# variables outside of prepared statements. The default implementation
|
121
|
-
# breaks the use of subselects in prepared statements, so extend the
|
122
|
-
# temporary prepared statement that this creates with a module that
|
123
|
-
# fixes it.
|
124
|
-
def call(type, bind_arguments={}, *values, &block)
|
125
|
-
ps = to_prepared_statement(type, values)
|
126
|
-
ps.extend(CallableStatementMethods)
|
127
|
-
ps.call(bind_arguments, &block)
|
128
|
-
end
|
129
|
-
|
130
|
-
# Store the given type of prepared statement in the associated database
|
131
|
-
# with the given name.
|
132
|
-
def prepare(type, name=nil, *values)
|
133
|
-
ps = to_prepared_statement(type, values)
|
134
|
-
ps.extend(PreparedStatementMethods)
|
135
|
-
if name
|
136
|
-
ps.prepared_statement_name = name
|
137
|
-
db.set_prepared_statement(name, ps)
|
138
|
-
end
|
139
|
-
ps
|
140
|
-
end
|
141
|
-
|
142
|
-
private
|
143
|
-
|
144
|
-
# Extend the dataset with the MySQL stored procedure methods.
|
145
|
-
def prepare_extend_sproc(ds)
|
146
|
-
ds.extend(StoredProcedureMethods)
|
147
|
-
end
|
148
|
-
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
module Sequel
|
4
|
-
module Progress
|
5
|
-
module DatabaseMethods
|
6
|
-
extend Sequel::Database::ResetIdentifierMangling
|
7
|
-
|
8
|
-
# Progress uses the :progress database type.
|
9
|
-
def database_type
|
10
|
-
:progress
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
module DatasetMethods
|
15
|
-
Dataset.def_sql_method(self, :select, %w'select limit distinct columns from join where group order having compounds')
|
16
|
-
|
17
|
-
# Progress requires SQL standard datetimes
|
18
|
-
def requires_sql_standard_datetimes?
|
19
|
-
true
|
20
|
-
end
|
21
|
-
|
22
|
-
# Progress does not support INTERSECT or EXCEPT
|
23
|
-
def supports_intersect_except?
|
24
|
-
false
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
# Progress uses TOP for limit, but it is only supported in Progress 10.
|
30
|
-
# The Progress adapter targets Progress 9, so it silently ignores the option.
|
31
|
-
def select_limit_sql(sql)
|
32
|
-
raise(Error, "OFFSET not supported") if @opts[:offset]
|
33
|
-
# if l = @opts[:limit]
|
34
|
-
# sql << " TOP "
|
35
|
-
# literal_append(sql, l)
|
36
|
-
# end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
require 'swift/db/mysql'
|
4
|
-
Sequel.require 'adapters/shared/mysql'
|
5
|
-
|
6
|
-
module Sequel
|
7
|
-
module Swift
|
8
|
-
# Database and Dataset instance methods for MySQL specific
|
9
|
-
# support via Swift.
|
10
|
-
module MySQL
|
11
|
-
# Database instance methods for MySQL databases accessed via Swift.
|
12
|
-
module DatabaseMethods
|
13
|
-
extend Sequel::Database::ResetIdentifierMangling
|
14
|
-
include Sequel::MySQL::DatabaseMethods
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
# The database name for the given database.
|
19
|
-
def database_name
|
20
|
-
opts[:database]
|
21
|
-
end
|
22
|
-
|
23
|
-
# Consider tinyint(1) columns as boolean.
|
24
|
-
def schema_column_type(db_type)
|
25
|
-
db_type =~ /\Atinyint\(1\)/ ? :boolean : super
|
26
|
-
end
|
27
|
-
|
28
|
-
# Apply the connectiong setting SQLs for every new connection.
|
29
|
-
def setup_connection(conn)
|
30
|
-
mysql_connection_setting_sqls.each{|sql| log_connection_yield(sql, conn){conn.execute(sql)}}
|
31
|
-
super
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# Dataset class for MySQL datasets accessed via Swift.
|
36
|
-
class Dataset < Swift::Dataset
|
37
|
-
include Sequel::MySQL::DatasetMethods
|
38
|
-
APOS = Dataset::APOS
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
# Use Swift's escape method for quoting.
|
43
|
-
def literal_string_append(sql, s)
|
44
|
-
sql << APOS << db.synchronize(@opts[:server]){|c| c.escape(s)} << APOS
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
require 'swift/db/postgres'
|
4
|
-
Sequel.require 'adapters/shared/postgres'
|
5
|
-
|
6
|
-
module Sequel
|
7
|
-
Postgres::CONVERTED_EXCEPTIONS << ::Swift::Error
|
8
|
-
|
9
|
-
module Swift
|
10
|
-
# Adapter, Database, and Dataset support for accessing a PostgreSQL
|
11
|
-
# database via Swift.
|
12
|
-
module Postgres
|
13
|
-
# Methods to add to Database instances that access PostgreSQL via Swift.
|
14
|
-
module DatabaseMethods
|
15
|
-
extend Sequel::Database::ResetIdentifierMangling
|
16
|
-
include Sequel::Postgres::DatabaseMethods
|
17
|
-
|
18
|
-
# Add the primary_keys and primary_key_sequences instance variables,
|
19
|
-
# so we can get the correct return values for inserted rows.
|
20
|
-
def self.extended(db)
|
21
|
-
super
|
22
|
-
db.send(:initialize_postgres_adapter)
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
# Remove all other options except for ones specifically handled, as
|
28
|
-
# otherwise swift passes them to dbic++ which passes them to PostgreSQL
|
29
|
-
# which can raise an error.
|
30
|
-
def server_opts(o)
|
31
|
-
o = super
|
32
|
-
so = {}
|
33
|
-
[:db, :user, :password, :host, :port].each{|s| so[s] = o[s] if o.has_key?(s)}
|
34
|
-
so
|
35
|
-
end
|
36
|
-
|
37
|
-
# Extend the adapter with the Swift PostgreSQL AdapterMethods.
|
38
|
-
def setup_connection(conn)
|
39
|
-
conn = super(conn)
|
40
|
-
conn.native_bind_format = true
|
41
|
-
connection_configuration_sqls.each{|sql| log_connection_yield(sql, conn){conn.execute(sql)}}
|
42
|
-
conn
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
require 'swift/db/sqlite3'
|
4
|
-
Sequel.require 'adapters/shared/sqlite'
|
5
|
-
|
6
|
-
module Sequel
|
7
|
-
module Swift
|
8
|
-
# Database and Dataset instance methods for SQLite specific
|
9
|
-
# support via Swift.
|
10
|
-
module SQLite
|
11
|
-
# Database instance methods for SQLite databases accessed via Swift.
|
12
|
-
module DatabaseMethods
|
13
|
-
extend Sequel::Database::ResetIdentifierMangling
|
14
|
-
include Sequel::SQLite::DatabaseMethods
|
15
|
-
|
16
|
-
DATABASE_ERROR_REGEXPS = {
|
17
|
-
/\AUNIQUE constraint failed: / => UniqueConstraintViolation,
|
18
|
-
/\AFOREIGN KEY constraint failed/ => ForeignKeyConstraintViolation,
|
19
|
-
/\ACHECK constraint failed/ => CheckConstraintViolation,
|
20
|
-
/\A(SQLITE ERROR 19 \(CONSTRAINT\) : )?constraint failed/ => ConstraintViolation,
|
21
|
-
/may not be NULL\z|NOT NULL constraint failed: .+/ => NotNullConstraintViolation,
|
22
|
-
/\ASQLITE ERROR \d+ \(\) : CHECK constraint failed: / => CheckConstraintViolation
|
23
|
-
}.freeze
|
24
|
-
def database_error_regexps
|
25
|
-
DATABASE_ERROR_REGEXPS
|
26
|
-
end
|
27
|
-
|
28
|
-
# Set the correct pragmas on the connection.
|
29
|
-
def connect(opts)
|
30
|
-
c = super
|
31
|
-
connection_pragmas.each{|s| log_connection_yield(s, c){c.execute(s)}}
|
32
|
-
c
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# Dataset class for SQLite datasets accessed via Swift.
|
37
|
-
class Dataset < Swift::Dataset
|
38
|
-
include Sequel::SQLite::DatasetMethods
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
# Use Swift's escape method for quoting.
|
43
|
-
def literal_string_append(sql, s)
|
44
|
-
sql << APOS << db.synchronize(@opts[:server]){|c| c.escape(s)} << APOS
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,160 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
module Sequel
|
4
|
-
# Module holding the Swift DB support for Sequel. Swift DB is a
|
5
|
-
# collection of drivers used in Swift ORM.
|
6
|
-
#
|
7
|
-
# The Swift adapter currently supports PostgreSQL, MySQL and SQLite3
|
8
|
-
#
|
9
|
-
# Sequel.connect('swift://user:password@host/database?db_type=postgres')
|
10
|
-
# Sequel.connect('swift://user:password@host/database?db_type=mysql')
|
11
|
-
module Swift
|
12
|
-
# Contains procs keyed on sub adapter type that extend the
|
13
|
-
# given database object so it supports the correct database type.
|
14
|
-
DATABASE_SETUP = {:postgres=>proc do |db|
|
15
|
-
Sequel.require 'adapters/swift/postgres'
|
16
|
-
db.extend(Sequel::Swift::Postgres::DatabaseMethods)
|
17
|
-
db.extend_datasets Sequel::Postgres::DatasetMethods
|
18
|
-
db.swift_class = ::Swift::DB::Postgres
|
19
|
-
end,
|
20
|
-
:mysql=>proc do |db|
|
21
|
-
Sequel.require 'adapters/swift/mysql'
|
22
|
-
db.extend(Sequel::Swift::MySQL::DatabaseMethods)
|
23
|
-
db.dataset_class = Sequel::Swift::MySQL::Dataset
|
24
|
-
db.swift_class = ::Swift::DB::Mysql
|
25
|
-
end,
|
26
|
-
:sqlite=>proc do |db|
|
27
|
-
Sequel.require 'adapters/swift/sqlite'
|
28
|
-
db.extend(Sequel::Swift::SQLite::DatabaseMethods)
|
29
|
-
db.dataset_class = Sequel::Swift::SQLite::Dataset
|
30
|
-
db.swift_class = ::Swift::DB::Sqlite3
|
31
|
-
db.set_integer_booleans
|
32
|
-
end,
|
33
|
-
}
|
34
|
-
|
35
|
-
class Database < Sequel::Database
|
36
|
-
set_adapter_scheme :swift
|
37
|
-
|
38
|
-
# The Swift adapter class being used by this database. Connections
|
39
|
-
# in this database's connection pool will be instances of this class.
|
40
|
-
attr_accessor :swift_class
|
41
|
-
|
42
|
-
# Create an instance of swift_class for the given options.
|
43
|
-
def connect(server)
|
44
|
-
opts = server_opts(server)
|
45
|
-
opts[:pass] = opts[:password]
|
46
|
-
setup_connection(swift_class.new(opts))
|
47
|
-
end
|
48
|
-
|
49
|
-
# Execute the given SQL, yielding a Swift::Result if a block is given.
|
50
|
-
def execute(sql, opts=OPTS)
|
51
|
-
synchronize(opts[:server]) do |conn|
|
52
|
-
begin
|
53
|
-
res = log_connection_yield(sql, conn){conn.execute(sql)}
|
54
|
-
yield res if block_given?
|
55
|
-
nil
|
56
|
-
rescue ::Swift::Error => e
|
57
|
-
raise_error(e)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
# Execute the SQL on the this database, returning the number of affected
|
63
|
-
# rows.
|
64
|
-
def execute_dui(sql, opts=OPTS)
|
65
|
-
synchronize(opts[:server]) do |conn|
|
66
|
-
begin
|
67
|
-
log_connection_yield(sql, conn){conn.execute(sql).affected_rows}
|
68
|
-
rescue ::Swift::Error => e
|
69
|
-
raise_error(e)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
# Execute the SQL on this database, returning the primary key of the
|
75
|
-
# table being inserted to.
|
76
|
-
def execute_insert(sql, opts=OPTS)
|
77
|
-
synchronize(opts[:server]) do |conn|
|
78
|
-
begin
|
79
|
-
log_connection_yield(sql, conn){conn.execute(sql).insert_id}
|
80
|
-
rescue ::Swift::Error => e
|
81
|
-
raise_error(e)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
private
|
87
|
-
|
88
|
-
# Call the DATABASE_SETUP proc directly after initialization,
|
89
|
-
# so the object always uses sub adapter specific code. Also,
|
90
|
-
# raise an error immediately if the connection doesn't have a
|
91
|
-
# db_type specified, since one is required to include the correct
|
92
|
-
# subadapter.
|
93
|
-
def adapter_initialize
|
94
|
-
if db_type = @opts[:db_type] and !db_type.to_s.empty?
|
95
|
-
if prok = DATABASE_SETUP[db_type.to_s.to_sym]
|
96
|
-
prok.call(self)
|
97
|
-
else
|
98
|
-
raise(Error, "No :db_type option specified")
|
99
|
-
end
|
100
|
-
else
|
101
|
-
raise(Error, ":db_type option not valid, should be postgres, mysql, or sqlite")
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
# Method to call on a statement object to execute SQL that does
|
106
|
-
# not return any rows.
|
107
|
-
def connection_execute_method
|
108
|
-
:execute
|
109
|
-
end
|
110
|
-
|
111
|
-
def database_error_classes
|
112
|
-
[::Swift::Error]
|
113
|
-
end
|
114
|
-
|
115
|
-
# Set the :db entry to the same as the :database entry, since
|
116
|
-
# Swift uses :db.
|
117
|
-
def server_opts(o)
|
118
|
-
o = super
|
119
|
-
o[:db] ||= o[:database]
|
120
|
-
o
|
121
|
-
end
|
122
|
-
|
123
|
-
# Allow extending the given connection when it is first created.
|
124
|
-
# By default, just returns the connection.
|
125
|
-
def setup_connection(conn)
|
126
|
-
conn
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
class Dataset < Sequel::Dataset
|
131
|
-
Database::DatasetClass = self
|
132
|
-
|
133
|
-
# Set the columns and yield the hashes to the block.
|
134
|
-
def fetch_rows(sql)
|
135
|
-
execute(sql) do |res|
|
136
|
-
col_map = {}
|
137
|
-
self.columns = res.fields.map do |c|
|
138
|
-
col_map[c] = output_identifier(c)
|
139
|
-
end
|
140
|
-
tz = db.timezone if Sequel.application_timezone
|
141
|
-
res.each do |r|
|
142
|
-
h = {}
|
143
|
-
r.each do |k, v|
|
144
|
-
h[col_map[k]] = case v
|
145
|
-
when StringIO
|
146
|
-
SQL::Blob.new(v.read)
|
147
|
-
when DateTime
|
148
|
-
tz ? Sequel.database_to_application_timestamp(Sequel.send(:convert_input_datetime_no_offset, v, tz)) : v
|
149
|
-
else
|
150
|
-
v
|
151
|
-
end
|
152
|
-
end
|
153
|
-
yield h
|
154
|
-
end
|
155
|
-
end
|
156
|
-
self
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
module Sequel
|
4
|
-
module Postgres
|
5
|
-
NAN = 0.0/0.0
|
6
|
-
PLUS_INFINITY = 1.0/0.0
|
7
|
-
MINUS_INFINITY = -1.0/0.0
|
8
|
-
NAN_STR = 'NaN'.freeze
|
9
|
-
PLUS_INFINITY_STR = 'Infinity'.freeze
|
10
|
-
MINUS_INFINITY_STR = '-Infinity'.freeze
|
11
|
-
TRUE_STR = 't'.freeze
|
12
|
-
DASH_STR = '-'.freeze
|
13
|
-
|
14
|
-
TYPE_TRANSLATOR = tt = Class.new do
|
15
|
-
def boolean(s) s == TRUE_STR end
|
16
|
-
def integer(s) s.to_i end
|
17
|
-
def float(s)
|
18
|
-
case s
|
19
|
-
when NAN_STR
|
20
|
-
NAN
|
21
|
-
when PLUS_INFINITY_STR
|
22
|
-
PLUS_INFINITY
|
23
|
-
when MINUS_INFINITY_STR
|
24
|
-
MINUS_INFINITY
|
25
|
-
else
|
26
|
-
s.to_f
|
27
|
-
end
|
28
|
-
end
|
29
|
-
def date(s) ::Date.new(*s.split(DASH_STR).map(&:to_i)) end
|
30
|
-
def bytea(str)
|
31
|
-
str = if str =~ /\A\\x/
|
32
|
-
# PostgreSQL 9.0+ bytea hex format
|
33
|
-
str[2..-1].gsub(/(..)/){|s| s.to_i(16).chr}
|
34
|
-
else
|
35
|
-
# Historical PostgreSQL bytea escape format
|
36
|
-
str.gsub(/\\(\\|'|[0-3][0-7][0-7])/) {|s|
|
37
|
-
if s.size == 2 then s[1,1] else s[1,3].oct.chr end
|
38
|
-
}
|
39
|
-
end
|
40
|
-
::Sequel::SQL::Blob.new(str)
|
41
|
-
end
|
42
|
-
end.new
|
43
|
-
|
44
|
-
# Type OIDs for string types used by PostgreSQL. These types don't
|
45
|
-
# have conversion procs associated with them (since the data is
|
46
|
-
# already in the form of a string).
|
47
|
-
STRING_TYPES = [18, 19, 25, 1042, 1043]
|
48
|
-
|
49
|
-
# Hash with type name strings/symbols and callable values for converting PostgreSQL types.
|
50
|
-
# Non-builtin types that don't have fixed numbers should use this to register
|
51
|
-
# conversion procs.
|
52
|
-
PG_NAMED_TYPES = {} unless defined?(PG_NAMED_TYPES)
|
53
|
-
|
54
|
-
# Hash with integer keys and callable values for converting PostgreSQL types.
|
55
|
-
PG_TYPES = {} unless defined?(PG_TYPES)
|
56
|
-
|
57
|
-
{
|
58
|
-
[16] => tt.method(:boolean),
|
59
|
-
[17] => tt.method(:bytea),
|
60
|
-
[20, 21, 23, 26] => tt.method(:integer),
|
61
|
-
[700, 701] => tt.method(:float),
|
62
|
-
[1700] => ::BigDecimal.method(:new),
|
63
|
-
[1083, 1266] => ::Sequel.method(:string_to_time),
|
64
|
-
[1082] => ::Sequel.method(:string_to_date),
|
65
|
-
[1184, 1114] => ::Sequel.method(:database_to_application_timestamp),
|
66
|
-
}.each do |k,v|
|
67
|
-
k.each{|n| PG_TYPES[n] = v}
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,111 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
module Sequel
|
4
|
-
class Dataset
|
5
|
-
# ---------------------
|
6
|
-
# :section: 7 - Mutation methods
|
7
|
-
# These methods modify the receiving dataset and should be used with care.
|
8
|
-
# ---------------------
|
9
|
-
|
10
|
-
# All methods that should have a ! method added that modifies the receiver.
|
11
|
-
MUTATION_METHODS = QUERY_METHODS - [:naked, :from_self]
|
12
|
-
|
13
|
-
# Setup mutation (e.g. filter!) methods. These operate the same as the
|
14
|
-
# non-! methods, but replace the options of the current dataset with the
|
15
|
-
# options of the resulting dataset.
|
16
|
-
#
|
17
|
-
# Do not call this method with untrusted input, as that can result in
|
18
|
-
# arbitrary code execution.
|
19
|
-
def self.def_mutation_method(*meths)
|
20
|
-
options = meths.pop if meths.last.is_a?(Hash)
|
21
|
-
mod = options[:module] if options
|
22
|
-
mod ||= self
|
23
|
-
meths.each do |meth|
|
24
|
-
mod.class_eval("def #{meth}!(*args, &block); mutation_method(:#{meth}, *args, &block) end", __FILE__, __LINE__)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# Add the mutation methods via metaprogramming
|
29
|
-
def_mutation_method(*MUTATION_METHODS)
|
30
|
-
|
31
|
-
# The row_proc for this database, should be any object that responds to +call+ with
|
32
|
-
# a single hash argument and returns the object you want #each to return.
|
33
|
-
attr_reader :row_proc
|
34
|
-
|
35
|
-
# Load an extension into the receiver. In addition to requiring the extension file, this
|
36
|
-
# also modifies the dataset to work with the extension (usually extending it with a
|
37
|
-
# module defined in the extension file). If no related extension file exists or the
|
38
|
-
# extension does not have specific support for Database objects, an Error will be raised.
|
39
|
-
# Returns self.
|
40
|
-
def extension!(*exts)
|
41
|
-
raise_if_frozen!
|
42
|
-
Sequel.extension(*exts)
|
43
|
-
exts.each do |ext|
|
44
|
-
if pr = Sequel.synchronize{EXTENSIONS[ext]}
|
45
|
-
pr.call(self)
|
46
|
-
else
|
47
|
-
raise(Error, "Extension #{ext} does not have specific support handling individual datasets (try: Sequel.extension #{ext.inspect})")
|
48
|
-
end
|
49
|
-
end
|
50
|
-
self
|
51
|
-
end
|
52
|
-
|
53
|
-
# Avoid self-referential dataset by cloning.
|
54
|
-
def from_self!(*args, &block)
|
55
|
-
raise_if_frozen!
|
56
|
-
@opts = clone.from_self(*args, &block).opts
|
57
|
-
self
|
58
|
-
end
|
59
|
-
|
60
|
-
# Set the method to call on identifiers going into the database for this dataset
|
61
|
-
def identifier_input_method=(v)
|
62
|
-
raise_if_frozen!
|
63
|
-
skip_symbol_cache!
|
64
|
-
@identifier_input_method = v
|
65
|
-
end
|
66
|
-
|
67
|
-
# Set the method to call on identifiers coming the database for this dataset
|
68
|
-
def identifier_output_method=(v)
|
69
|
-
raise_if_frozen!
|
70
|
-
@identifier_output_method = v
|
71
|
-
end
|
72
|
-
|
73
|
-
# Remove the row_proc from the current dataset.
|
74
|
-
def naked!
|
75
|
-
raise_if_frozen!
|
76
|
-
self.row_proc = nil
|
77
|
-
self
|
78
|
-
end
|
79
|
-
|
80
|
-
# Set whether to quote identifiers for this dataset
|
81
|
-
def quote_identifiers=(v)
|
82
|
-
raise_if_frozen!
|
83
|
-
skip_symbol_cache!
|
84
|
-
@quote_identifiers = v
|
85
|
-
end
|
86
|
-
|
87
|
-
# Override the row_proc for this dataset
|
88
|
-
def row_proc=(v)
|
89
|
-
raise_if_frozen!
|
90
|
-
@row_proc = v
|
91
|
-
end
|
92
|
-
|
93
|
-
private
|
94
|
-
|
95
|
-
# Modify the receiver with the results of sending the meth, args, and block
|
96
|
-
# to the receiver and merging the options of the resulting dataset into
|
97
|
-
# the receiver's options.
|
98
|
-
def mutation_method(meth, *args, &block)
|
99
|
-
raise_if_frozen!
|
100
|
-
@opts = send(meth, *args, &block).opts
|
101
|
-
self
|
102
|
-
end
|
103
|
-
|
104
|
-
# Raise a RuntimeError if the receiver is frozen
|
105
|
-
def raise_if_frozen!
|
106
|
-
if frozen?
|
107
|
-
raise RuntimeError, "can't modify frozen #{visible_class_name}"
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|