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,63 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The filter_having extension allows Dataset#filter, #and, #or
|
4
|
-
# and #exclude to operate on the HAVING clause if the dataset
|
5
|
-
# already has a HAVING clause, which was the historical behavior
|
6
|
-
# before Sequel 4. It is only recommended to use this for
|
7
|
-
# backwards compatibility.
|
8
|
-
#
|
9
|
-
# You can load this extension into specific datasets:
|
10
|
-
#
|
11
|
-
# ds = DB[:table]
|
12
|
-
# ds = ds.extension(:filter_having)
|
13
|
-
#
|
14
|
-
# Or you can load it into all of a database's datasets, which
|
15
|
-
# is probably the desired behavior if you are using this extension:
|
16
|
-
#
|
17
|
-
# DB.extension(:filter_having)
|
18
|
-
#
|
19
|
-
# Related module: Sequel::FilterHaving
|
20
|
-
|
21
|
-
#
|
22
|
-
module Sequel
|
23
|
-
module FilterHaving
|
24
|
-
# Operate on HAVING clause if HAVING clause already present.
|
25
|
-
def and(*cond, &block)
|
26
|
-
if @opts[:having]
|
27
|
-
having(*cond, &block)
|
28
|
-
else
|
29
|
-
super
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
# Operate on HAVING clause if HAVING clause already present.
|
34
|
-
def exclude(*cond, &block)
|
35
|
-
if @opts[:having]
|
36
|
-
exclude_having(*cond, &block)
|
37
|
-
else
|
38
|
-
super
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
# Operate on HAVING clause if HAVING clause already present.
|
43
|
-
def filter(*cond, &block)
|
44
|
-
if @opts[:having]
|
45
|
-
having(*cond, &block)
|
46
|
-
else
|
47
|
-
super
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
# Operate on HAVING clause if HAVING clause already present.
|
52
|
-
def or(*cond, &block)
|
53
|
-
if having = @opts[:having]
|
54
|
-
cond = cond.first if cond.size == 1
|
55
|
-
clone(:having => SQL::BooleanExpression.new(:OR, having, filter_expr(cond, &block)))
|
56
|
-
else
|
57
|
-
super
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
Dataset.register_extension(:filter_having, FilterHaving)
|
63
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The hash_aliases extension allows Dataset#select and Dataset#from
|
4
|
-
# to treat a hash argument as an alias specification, with keys
|
5
|
-
# being the expressions and values being the aliases,
|
6
|
-
# which was the historical behavior before Sequel 4.
|
7
|
-
# It is only recommended to use this for backwards compatibility.
|
8
|
-
#
|
9
|
-
# You can load this extension into specific datasets:
|
10
|
-
#
|
11
|
-
# ds = DB[:table]
|
12
|
-
# ds = ds.extension(:hash_aliases)
|
13
|
-
#
|
14
|
-
# Or you can load it into all of a database's datasets, which
|
15
|
-
# is probably the desired behavior if you are using this extension:
|
16
|
-
#
|
17
|
-
# DB.extension(:hash_aliases)
|
18
|
-
#
|
19
|
-
# Related module: Sequel::HashAliases
|
20
|
-
|
21
|
-
#
|
22
|
-
module Sequel
|
23
|
-
module HashAliases
|
24
|
-
def from(*source)
|
25
|
-
super(*convert_hash_aliases(source))
|
26
|
-
end
|
27
|
-
|
28
|
-
def select(*columns, &block)
|
29
|
-
virtual_row_columns(columns, block)
|
30
|
-
super(*convert_hash_aliases(columns), &nil)
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def convert_hash_aliases(columns)
|
36
|
-
m = []
|
37
|
-
columns.each do |i|
|
38
|
-
if i.is_a?(Hash)
|
39
|
-
m.concat(i.map{|k, v| SQL::AliasedExpression.new(k,v)})
|
40
|
-
else
|
41
|
-
m << i
|
42
|
-
end
|
43
|
-
end
|
44
|
-
m
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
Dataset.register_extension(:hash_aliases, HashAliases)
|
49
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The meta_def extension is designed for backwards compatibility
|
4
|
-
# with older Sequel code that uses the meta_def method on
|
5
|
-
# Database, Dataset, and Model classes and/or instances. It is
|
6
|
-
# not recommended for usage in new code. To load this extension:
|
7
|
-
#
|
8
|
-
# Sequel.extension :meta_def
|
9
|
-
#
|
10
|
-
# Related module: Sequel::Metaprogramming
|
11
|
-
|
12
|
-
#
|
13
|
-
module Sequel
|
14
|
-
# Contains meta_def method for adding methods to objects via blocks.
|
15
|
-
# Only recommended for backwards compatibility with existing code.
|
16
|
-
module Metaprogramming
|
17
|
-
# Define a method with the given name and block body on the receiver.
|
18
|
-
#
|
19
|
-
# ds = DB[:items]
|
20
|
-
# ds.meta_def(:x){42}
|
21
|
-
# ds.x # => 42
|
22
|
-
def meta_def(name, &block)
|
23
|
-
(class << self; self end).send(:define_method, name, &block)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
Database.extend Metaprogramming
|
28
|
-
Database.send(:include, Metaprogramming)
|
29
|
-
Dataset.extend Metaprogramming
|
30
|
-
Dataset.send(:include, Metaprogramming)
|
31
|
-
if defined?(Model)
|
32
|
-
Model.extend Metaprogramming
|
33
|
-
Model.send(:include, Metaprogramming)
|
34
|
-
end
|
35
|
-
end
|
@@ -1,84 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The query_literals extension changes Sequel's default behavior of
|
4
|
-
# the select, order and group methods so that if the first argument
|
5
|
-
# is a regular string, it is treated as a literal string, with the
|
6
|
-
# rest of the arguments (if any) treated as placeholder values. This
|
7
|
-
# allows you to write code such as:
|
8
|
-
#
|
9
|
-
# DB[:table].select('a, b, ?', 2).group('a, b').order('c')
|
10
|
-
#
|
11
|
-
# The default Sequel behavior would literalize that as:
|
12
|
-
#
|
13
|
-
# SELECT 'a, b, ?', 2 FROM table GROUP BY 'a, b' ORDER BY 'c'
|
14
|
-
#
|
15
|
-
# Using this extension changes the literalization to:
|
16
|
-
#
|
17
|
-
# SELECT a, b, 2, FROM table GROUP BY a, b ORDER BY c
|
18
|
-
#
|
19
|
-
# This extension makes select, group, and order methods operate
|
20
|
-
# like filter methods, which support the same interface. Note
|
21
|
-
# that this extension can add SQL injection vulnerabilities to existing
|
22
|
-
# code if any of the strings passed to one of the supported
|
23
|
-
# methods is derived from user input. For that reason, it should
|
24
|
-
# be used with caution.
|
25
|
-
#
|
26
|
-
# You can load this extension into specific datasets:
|
27
|
-
#
|
28
|
-
# ds = DB[:table]
|
29
|
-
# ds = ds.extension(:query_literals)
|
30
|
-
#
|
31
|
-
# Or you can load it into all of a database's datasets, which
|
32
|
-
# is probably the desired behavior if you are using this extension:
|
33
|
-
#
|
34
|
-
# DB.extension(:query_literals)
|
35
|
-
#
|
36
|
-
# Related module: Sequel::QueryLiterals
|
37
|
-
|
38
|
-
#
|
39
|
-
module Sequel
|
40
|
-
# The QueryLiterals module can be used to make select, group, and
|
41
|
-
# order methods operate similar to the filter methods if the first
|
42
|
-
# argument is a plain string, treating it like a literal string,
|
43
|
-
# with any remaining arguments treated as placeholder values.
|
44
|
-
#
|
45
|
-
# This adds such support to the following methods: select, select_append,
|
46
|
-
# select_group, select_more, group, group_and_count, order, order_append,
|
47
|
-
# and order_more.
|
48
|
-
#
|
49
|
-
# Note that if you pass a block to these methods, it will use the default
|
50
|
-
# implementation without the special literal handling.
|
51
|
-
module QueryLiterals
|
52
|
-
%w'select select_append select_group select_more group group_and_count group_append order order_append order_more'.each do |m|
|
53
|
-
class_eval(<<-END, __FILE__, __LINE__ + 1)
|
54
|
-
def #{m}(*args)
|
55
|
-
if !block_given? && (l = query_literal(args))
|
56
|
-
super(l)
|
57
|
-
else
|
58
|
-
super
|
59
|
-
end
|
60
|
-
end
|
61
|
-
END
|
62
|
-
end
|
63
|
-
|
64
|
-
private
|
65
|
-
|
66
|
-
# If the first argument is a plain string, return a literal string
|
67
|
-
# if there are no additional args or a placeholder literal string with
|
68
|
-
# the remaining args. Otherwise, return nil.
|
69
|
-
def query_literal(args)
|
70
|
-
case (s = args[0])
|
71
|
-
when LiteralString, SQL::Blob
|
72
|
-
nil
|
73
|
-
when String
|
74
|
-
if args.length == 1
|
75
|
-
LiteralString.new(s)
|
76
|
-
else
|
77
|
-
SQL::PlaceholderLiteralString.new(s, args[1..-1])
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
Dataset.register_extension(:query_literals, QueryLiterals)
|
84
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The ruby18_symbol_extensions adds the <, <=, >, >= to Symbol
|
4
|
-
# to reflect the mathmatical operators. It also adds the [] method
|
5
|
-
# to Symbol for creating SQL functions.
|
6
|
-
#
|
7
|
-
# Usage of this extension is not recommended. This extension will
|
8
|
-
# only load on ruby 1.8, so you will not be able to upgrade to
|
9
|
-
# newer ruby versions if you use it. If you still want to use it,
|
10
|
-
# you can load it via:
|
11
|
-
#
|
12
|
-
# Sequel.extension :ruby18_symbol_extensions
|
13
|
-
|
14
|
-
raise(Sequel::Error, "The ruby18_symbol_extensions is only available on ruby 1.8.") unless RUBY_VERSION < '1.9.0'
|
15
|
-
|
16
|
-
class Symbol
|
17
|
-
include Sequel::SQL::InequalityMethods
|
18
|
-
|
19
|
-
# Create an SQL Function with the receiver as the function name
|
20
|
-
# and the given arguments.
|
21
|
-
def [](*args)
|
22
|
-
Sequel::SQL::Function.new(self, *args)
|
23
|
-
end
|
24
|
-
end
|
@@ -1,122 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# This adds the following dataset methods:
|
4
|
-
#
|
5
|
-
# []= :: filter with the first argument, update with the second
|
6
|
-
# insert_multiple :: insert multiple rows at once
|
7
|
-
# set :: alias for update
|
8
|
-
# to_csv :: return string in csv format for the dataset
|
9
|
-
# db= :: change the dataset's database
|
10
|
-
# opts= :: change the dataset's opts
|
11
|
-
#
|
12
|
-
# It is only recommended to use this for backwards compatibility.
|
13
|
-
#
|
14
|
-
# You can load this extension into specific datasets:
|
15
|
-
#
|
16
|
-
# ds = DB[:table]
|
17
|
-
# ds = ds.extension(:sequel_3_dataset_methods)
|
18
|
-
#
|
19
|
-
# Or you can load it into all of a database's datasets, which
|
20
|
-
# is probably the desired behavior if you are using this extension:
|
21
|
-
#
|
22
|
-
# DB.extension(:sequel_3_dataset_methods)
|
23
|
-
#
|
24
|
-
# Related module: Sequel::Sequel3DatasetMethods
|
25
|
-
|
26
|
-
#
|
27
|
-
module Sequel
|
28
|
-
module Sequel3DatasetMethods
|
29
|
-
COMMA = Dataset::COMMA
|
30
|
-
# The database related to this dataset. This is the Database instance that
|
31
|
-
# will execute all of this dataset's queries.
|
32
|
-
attr_writer :db
|
33
|
-
|
34
|
-
# The hash of options for this dataset, keys are symbols.
|
35
|
-
attr_writer :opts
|
36
|
-
|
37
|
-
# Update all records matching the conditions with the values specified.
|
38
|
-
# Returns the number of rows affected.
|
39
|
-
#
|
40
|
-
# DB[:table][:id=>1] = {:id=>2} # UPDATE table SET id = 2 WHERE id = 1
|
41
|
-
# # => 1 # number of rows affected
|
42
|
-
def []=(conditions, values)
|
43
|
-
filter(conditions).update(values)
|
44
|
-
end
|
45
|
-
|
46
|
-
# Inserts multiple values. If a block is given it is invoked for each
|
47
|
-
# item in the given array before inserting it. See +multi_insert+ as
|
48
|
-
# a possibly faster version that may be able to insert multiple
|
49
|
-
# records in one SQL statement (if supported by the database).
|
50
|
-
# Returns an array of primary keys of inserted rows.
|
51
|
-
#
|
52
|
-
# DB[:table].insert_multiple([{:x=>1}, {:x=>2}])
|
53
|
-
# # => [4, 5]
|
54
|
-
# # INSERT INTO table (x) VALUES (1)
|
55
|
-
# # INSERT INTO table (x) VALUES (2)
|
56
|
-
#
|
57
|
-
# DB[:table].insert_multiple([{:x=>1}, {:x=>2}]){|row| row[:y] = row[:x] * 2; row }
|
58
|
-
# # => [6, 7]
|
59
|
-
# # INSERT INTO table (x, y) VALUES (1, 2)
|
60
|
-
# # INSERT INTO table (x, y) VALUES (2, 4)
|
61
|
-
def insert_multiple(array, &block)
|
62
|
-
if block
|
63
|
-
array.map{|i| insert(block.call(i))}
|
64
|
-
else
|
65
|
-
array.map{|i| insert(i)}
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
# Return a copy of the dataset with unqualified identifiers in the
|
70
|
-
# SELECT, WHERE, GROUP, HAVING, and ORDER clauses qualified by the
|
71
|
-
# given table. If no columns are currently selected, select all
|
72
|
-
# columns of the given table.
|
73
|
-
#
|
74
|
-
# DB[:items].filter(:id=>1).qualify_to(:i)
|
75
|
-
# # SELECT i.* FROM items WHERE (i.id = 1)
|
76
|
-
def qualify_to(table)
|
77
|
-
qualify(table)
|
78
|
-
end
|
79
|
-
|
80
|
-
# Qualify the dataset to its current first source. This is useful
|
81
|
-
# if you have unqualified identifiers in the query that all refer to
|
82
|
-
# the first source, and you want to join to another table which
|
83
|
-
# has columns with the same name as columns in the current dataset.
|
84
|
-
# See +qualify_to+.
|
85
|
-
#
|
86
|
-
# DB[:items].filter(:id=>1).qualify_to_first_source
|
87
|
-
# # SELECT items.* FROM items WHERE (items.id = 1)
|
88
|
-
def qualify_to_first_source
|
89
|
-
qualify
|
90
|
-
end
|
91
|
-
|
92
|
-
# Alias for update, but not aliased directly so subclasses
|
93
|
-
# don't have to override both methods.
|
94
|
-
def set(*args)
|
95
|
-
update(*args)
|
96
|
-
end
|
97
|
-
|
98
|
-
# Returns a string in CSV format containing the dataset records. By
|
99
|
-
# default the CSV representation includes the column titles in the
|
100
|
-
# first line. You can turn that off by passing false as the
|
101
|
-
# include_column_titles argument.
|
102
|
-
#
|
103
|
-
# This does not use a CSV library or handle quoting of values in
|
104
|
-
# any way. If any values in any of the rows could include commas or line
|
105
|
-
# endings, you shouldn't use this.
|
106
|
-
#
|
107
|
-
# puts DB[:table].to_csv # SELECT * FROM table
|
108
|
-
# # id,name
|
109
|
-
# # 1,Jim
|
110
|
-
# # 2,Bob
|
111
|
-
def to_csv(include_column_titles = true)
|
112
|
-
n = naked
|
113
|
-
cols = n.columns
|
114
|
-
csv = String.new
|
115
|
-
csv << "#{cols.join(COMMA)}\r\n" if include_column_titles
|
116
|
-
n.each{|r| csv << "#{cols.collect{|c| r[c]}.join(COMMA)}\r\n"}
|
117
|
-
csv
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
Dataset.register_extension(:sequel_3_dataset_methods, Sequel3DatasetMethods)
|
122
|
-
end
|
@@ -1,76 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
#
|
3
|
-
# The set_overrides extension adds the Dataset#set_overrides and
|
4
|
-
# Dataset#set_defaults methods which provide a crude way to
|
5
|
-
# control the values used in INSERT/UPDATE statements if a hash
|
6
|
-
# of values is passed to Dataset#insert or Dataset#update.
|
7
|
-
# It is only recommended to use this for backwards compatibility.
|
8
|
-
#
|
9
|
-
# You can load this extension into specific datasets:
|
10
|
-
#
|
11
|
-
# ds = DB[:table]
|
12
|
-
# ds = ds.extension(:set_overrides)
|
13
|
-
#
|
14
|
-
# Or you can load it into all of a database's datasets, which
|
15
|
-
# is probably the desired behavior if you are using this extension:
|
16
|
-
#
|
17
|
-
# DB.extension(:set_overrides)
|
18
|
-
#
|
19
|
-
# Related module: Sequel::SetOverrides
|
20
|
-
|
21
|
-
#
|
22
|
-
module Sequel
|
23
|
-
module SetOverrides
|
24
|
-
Dataset::NON_SQL_OPTIONS.concat([:defaults, :overrides])
|
25
|
-
Dataset.def_mutation_method(:set_defaults, :set_overrides, :module=>self)
|
26
|
-
|
27
|
-
# Set overrides/defaults for insert hashes
|
28
|
-
def insert_sql(*values)
|
29
|
-
if values.size == 1 && (vals = values.first).is_a?(Hash)
|
30
|
-
super(merge_defaults_overrides(vals))
|
31
|
-
else
|
32
|
-
super
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# Set the default values for insert and update statements. The values hash passed
|
37
|
-
# to insert or update are merged into this hash, so any values in the hash passed
|
38
|
-
# to insert or update will override values passed to this method.
|
39
|
-
#
|
40
|
-
# DB[:items].set_defaults(:a=>'a', :c=>'c').insert(:a=>'d', :b=>'b')
|
41
|
-
# # INSERT INTO items (a, c, b) VALUES ('d', 'c', 'b')
|
42
|
-
def set_defaults(hash)
|
43
|
-
clone(:defaults=>(@opts[:defaults]||{}).merge(hash))
|
44
|
-
end
|
45
|
-
|
46
|
-
# Set values that override hash arguments given to insert and update statements.
|
47
|
-
# This hash is merged into the hash provided to insert or update, so values
|
48
|
-
# will override any values given in the insert/update hashes.
|
49
|
-
#
|
50
|
-
# DB[:items].set_overrides(:a=>'a', :c=>'c').insert(:a=>'d', :b=>'b')
|
51
|
-
# # INSERT INTO items (a, c, b) VALUES ('a', 'c', 'b')
|
52
|
-
def set_overrides(hash)
|
53
|
-
clone(:overrides=>hash.merge(@opts[:overrides]||{}))
|
54
|
-
end
|
55
|
-
|
56
|
-
# Set overrides/defaults for update hashes
|
57
|
-
def update_sql(values = {})
|
58
|
-
if values.is_a?(Hash)
|
59
|
-
super(merge_defaults_overrides(values))
|
60
|
-
else
|
61
|
-
super
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
private
|
66
|
-
|
67
|
-
# Return new hashe with merged defaults and overrides.
|
68
|
-
def merge_defaults_overrides(vals)
|
69
|
-
vals = @opts[:defaults].merge(vals) if @opts[:defaults]
|
70
|
-
vals = vals.merge(@opts[:overrides]) if @opts[:overrides]
|
71
|
-
vals
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
Dataset.register_extension(:set_overrides, SetOverrides)
|
76
|
-
end
|
data/lib/sequel/no_core_ext.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
module Sequel
|
4
|
-
module Plugins
|
5
|
-
# The identifier_columns plugin makes Sequel automatically
|
6
|
-
# handle column names containing 2 or more consecutive
|
7
|
-
# underscores when creating or updating model objects.
|
8
|
-
# By default, this doesn't work correctly in Sequel, as it
|
9
|
-
# handles such symbols specially.
|
10
|
-
#
|
11
|
-
# This behavior isn't the default as it hurts performance,
|
12
|
-
# and is rarely necessary.
|
13
|
-
#
|
14
|
-
# Usage:
|
15
|
-
#
|
16
|
-
# # Make all model subclasses handle column names
|
17
|
-
# # with two or more underscores when saving
|
18
|
-
# Sequel::Model.plugin :identifier_columns
|
19
|
-
#
|
20
|
-
# # Make the Album class handle column names
|
21
|
-
# # with two or more underscores when saving
|
22
|
-
# Album.plugin :identifier_columns
|
23
|
-
module IdentifierColumns
|
24
|
-
module InstanceMethods
|
25
|
-
private
|
26
|
-
|
27
|
-
# Use identifiers for value hash keys when inserting.
|
28
|
-
def _insert_values
|
29
|
-
identifier_hash(super)
|
30
|
-
end
|
31
|
-
|
32
|
-
# Use identifiers for value hash keys when updating.
|
33
|
-
def _update_without_checking(columns)
|
34
|
-
super(identifier_hash(columns))
|
35
|
-
end
|
36
|
-
|
37
|
-
# Convert the given columns hash from symbol
|
38
|
-
# keys to Sequel::SQL::Identifier keys.
|
39
|
-
def identifier_hash(columns)
|
40
|
-
h = {}
|
41
|
-
columns.each{|k,v| h[Sequel.identifier(k)] = v}
|
42
|
-
h
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
module Sequel
|
4
|
-
module Plugins
|
5
|
-
# The PgTypecastOnLoad plugin exists because when you connect to PostgreSQL
|
6
|
-
# using the do and swift adapters, Sequel doesn't have complete
|
7
|
-
# control over typecasting, and may return columns as strings instead of how
|
8
|
-
# the native postgres adapter would typecast them. This is mostly needed for
|
9
|
-
# the additional support that the pg_* extensions add for advanced PostgreSQL
|
10
|
-
# types such as arrays. This plugin is not needed if using the postgres or
|
11
|
-
# jdbc/postgresql adapters.
|
12
|
-
#
|
13
|
-
# This plugin makes model loading to do the same conversion that the
|
14
|
-
# native postgres adapter would do for all columns given. You can either
|
15
|
-
# specify the columns to typecast on load in the plugin call itself, or
|
16
|
-
# afterwards using add_pg_typecast_on_load_columns:
|
17
|
-
#
|
18
|
-
# # aliases => text[] column
|
19
|
-
# # config => hstore column
|
20
|
-
#
|
21
|
-
# Album.plugin :pg_typecast_on_load, :aliases, :config
|
22
|
-
# # or:
|
23
|
-
# Album.plugin :pg_typecast_on_load
|
24
|
-
# Album.add_pg_typecast_on_load_columns :aliases, :config
|
25
|
-
#
|
26
|
-
# This plugin only handles values that the adapter returns as strings. If
|
27
|
-
# the adapter returns a value other than a string, this plugin will have no
|
28
|
-
# effect. You may be able to use the regular typecast_on_load plugin to
|
29
|
-
# handle those cases.
|
30
|
-
module PgTypecastOnLoad
|
31
|
-
# Call add_pg_typecast_on_load_columns on the passed column arguments.
|
32
|
-
def self.configure(model, *columns)
|
33
|
-
model.instance_eval do
|
34
|
-
@pg_typecast_on_load_columns ||= []
|
35
|
-
add_pg_typecast_on_load_columns(*columns)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
module ClassMethods
|
40
|
-
# The columns to typecast on load for this model.
|
41
|
-
attr_reader :pg_typecast_on_load_columns
|
42
|
-
|
43
|
-
# Add additional columns to typecast on load for this model.
|
44
|
-
def add_pg_typecast_on_load_columns(*columns)
|
45
|
-
@pg_typecast_on_load_columns.concat(columns)
|
46
|
-
end
|
47
|
-
|
48
|
-
def call(values)
|
49
|
-
super(load_typecast_pg(values))
|
50
|
-
end
|
51
|
-
|
52
|
-
# Lookup the conversion proc for the column's oid in the Database
|
53
|
-
# object, and use it to convert the value.
|
54
|
-
def load_typecast_pg(values)
|
55
|
-
pg_typecast_on_load_columns.each do |c|
|
56
|
-
if (v = values[c]).is_a?(String) && (oid = db_schema[c][:oid]) && (pr = db.conversion_procs[oid])
|
57
|
-
values[c] = pr.call(v)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
values
|
61
|
-
end
|
62
|
-
|
63
|
-
Plugins.inherited_instance_variables(self, :@pg_typecast_on_load_columns=>:dup)
|
64
|
-
end
|
65
|
-
|
66
|
-
module InstanceMethods
|
67
|
-
private
|
68
|
-
|
69
|
-
# Typecast specific columns using the conversion procs when manually refreshing.
|
70
|
-
def _refresh_set_values(values)
|
71
|
-
super(model.load_typecast_pg(values))
|
72
|
-
end
|
73
|
-
|
74
|
-
# Typecast specific columns using the conversion procs when refreshing after save.
|
75
|
-
def _save_set_values(values)
|
76
|
-
super(model.load_typecast_pg(values))
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|