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
@@ -7,7 +7,7 @@
|
|
7
7
|
# that when composite fields are retrieved, they are parsed and returned
|
8
8
|
# as instances of Sequel::Postgres::PGRow::(HashRow|ArrayRow), or
|
9
9
|
# optionally a custom type. HashRow and ArrayRow are DelegateClasses of
|
10
|
-
#
|
10
|
+
# Hash and Array, so they mostly act like a hash or array, but not
|
11
11
|
# completely (is_a?(Hash) and is_a?(Array) are false). If you want the
|
12
12
|
# actual hash for a HashRow, call HashRow#to_hash, and if you want the
|
13
13
|
# actual array for an ArrayRow, call ArrayRow#to_a. This is done so
|
@@ -18,11 +18,14 @@
|
|
18
18
|
# for HashRow and ArrayRow using the standard Sequel literalization callbacks, so
|
19
19
|
# they work with on all adapters.
|
20
20
|
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
21
|
+
# To use this extension, first load it into the Database instance:
|
22
|
+
#
|
23
|
+
# DB.extension :pg_row
|
24
|
+
#
|
25
|
+
# If you plan to use arrays of composite types, make sure you load the
|
26
|
+
# pg_array extension first:
|
24
27
|
#
|
25
|
-
# DB.extension
|
28
|
+
# DB.extension :pg_array, :pg_row
|
26
29
|
#
|
27
30
|
# You can create an anonymous row type by calling the Sequel.pg_row with
|
28
31
|
# an array:
|
@@ -61,12 +64,12 @@
|
|
61
64
|
#
|
62
65
|
# You can also use a hash:
|
63
66
|
#
|
64
|
-
# DB.row_type(:address, :
|
67
|
+
# DB.row_type(:address, street: '123 Sesame St.', city: 'Some City', zip: '12345')
|
65
68
|
#
|
66
69
|
# So if you have a person table that has an address column, here's how you
|
67
70
|
# could insert into the column:
|
68
71
|
#
|
69
|
-
# DB[:table].insert(:
|
72
|
+
# DB[:table].insert(address: DB.row_type(:address, street: '123 Sesame St.', city: 'Some City', zip: '12345'))
|
70
73
|
#
|
71
74
|
# Note that registering row types without providing an explicit :converter option
|
72
75
|
# creates anonymous classes. This results in ruby being unable to Marshal such
|
@@ -85,14 +88,10 @@
|
|
85
88
|
|
86
89
|
require 'delegate'
|
87
90
|
require 'strscan'
|
88
|
-
Sequel.require 'adapters/utils/pg_types'
|
89
91
|
|
90
92
|
module Sequel
|
91
93
|
module Postgres
|
92
94
|
module PGRow
|
93
|
-
ROW = 'ROW'.freeze
|
94
|
-
CAST = '::'.freeze
|
95
|
-
|
96
95
|
# Class for row-valued/composite types that are treated as arrays. By default,
|
97
96
|
# this is only used for generic PostgreSQL record types, as registered
|
98
97
|
# types use HashRow by default.
|
@@ -130,10 +129,10 @@ module Sequel
|
|
130
129
|
|
131
130
|
# Append SQL fragment related to this object to the sql.
|
132
131
|
def sql_literal_append(ds, sql)
|
133
|
-
sql << ROW
|
132
|
+
sql << 'ROW'
|
134
133
|
ds.literal_append(sql, to_a)
|
135
134
|
if db_type
|
136
|
-
sql <<
|
135
|
+
sql << '::'
|
137
136
|
ds.quote_schema_table_append(sql, db_type)
|
138
137
|
end
|
139
138
|
end
|
@@ -202,16 +201,16 @@ module Sequel
|
|
202
201
|
# Append SQL fragment related to this object to the sql.
|
203
202
|
def sql_literal_append(ds, sql)
|
204
203
|
check_columns!
|
205
|
-
sql << ROW
|
204
|
+
sql << 'ROW'
|
206
205
|
ds.literal_append(sql, values_at(*columns))
|
207
206
|
if db_type
|
208
|
-
sql <<
|
207
|
+
sql << '::'
|
209
208
|
ds.quote_schema_table_append(sql, db_type)
|
210
209
|
end
|
211
210
|
end
|
212
211
|
end
|
213
212
|
|
214
|
-
ROW_TYPE_CLASSES = [HashRow, ArrayRow]
|
213
|
+
ROW_TYPE_CLASSES = [HashRow, ArrayRow].freeze
|
215
214
|
|
216
215
|
# This parser-like class splits the PostgreSQL
|
217
216
|
# row-valued/composite type output string format
|
@@ -220,33 +219,24 @@ module Sequel
|
|
220
219
|
# will accept, it only handles the output format that
|
221
220
|
# PostgreSQL uses.
|
222
221
|
class Splitter < StringScanner
|
223
|
-
OPEN_PAREN = /\(/.freeze
|
224
|
-
CLOSE_PAREN = /\)/.freeze
|
225
|
-
UNQUOTED_RE = /[^,)]*/.freeze
|
226
|
-
SEP_RE = /[,)]/.freeze
|
227
|
-
QUOTE_RE = /"/.freeze
|
228
|
-
QUOTE_SEP_RE = /"[,)]/.freeze
|
229
|
-
QUOTED_RE = /(\\.|""|[^"])*/.freeze
|
230
|
-
REPLACE_RE = /\\(.)|"(")/.freeze
|
231
|
-
REPLACE_WITH = '\1\2'.freeze
|
232
|
-
|
233
222
|
# Split the stored string into an array of strings, handling
|
234
223
|
# the different types of quoting.
|
235
224
|
def parse
|
236
|
-
return @result if @result
|
237
225
|
values = []
|
238
|
-
skip(
|
239
|
-
if skip(
|
226
|
+
skip(/\(/)
|
227
|
+
if skip(/\)/)
|
240
228
|
values << nil
|
241
229
|
else
|
230
|
+
# :nocov:
|
242
231
|
until eos?
|
243
|
-
|
244
|
-
|
245
|
-
|
232
|
+
# :nocov:
|
233
|
+
if skip(/"/)
|
234
|
+
values << scan(/(\\.|""|[^"])*/).gsub(/\\(.)|"(")/, '\1\2')
|
235
|
+
skip(/"[,)]/)
|
246
236
|
else
|
247
|
-
v = scan(
|
237
|
+
v = scan(/[^,)]*/)
|
248
238
|
values << (v unless v.empty?)
|
249
|
-
skip(
|
239
|
+
skip(/[,)]/)
|
250
240
|
end
|
251
241
|
end
|
252
242
|
end
|
@@ -373,10 +363,6 @@ module Sequel
|
|
373
363
|
end
|
374
364
|
|
375
365
|
module DatabaseMethods
|
376
|
-
ESCAPE_RE = /("|\\)/.freeze
|
377
|
-
ESCAPE_REPLACEMENT = '\\\\\1'.freeze
|
378
|
-
COMMA = ','.freeze
|
379
|
-
|
380
366
|
# A hash mapping row type keys (usually symbols), to option
|
381
367
|
# hashes. At the least, the values will contain the :parser
|
382
368
|
# option for the Parser instance that the type will use.
|
@@ -384,17 +370,14 @@ module Sequel
|
|
384
370
|
|
385
371
|
# Do some setup for the data structures the module uses.
|
386
372
|
def self.extended(db)
|
387
|
-
|
388
|
-
# makes things not break if a user extends the database with
|
389
|
-
# this module more than once (since extended is called every
|
390
|
-
# time).
|
391
|
-
return if db.row_types
|
392
|
-
|
393
|
-
db.instance_eval do
|
373
|
+
db.instance_exec do
|
394
374
|
@row_types = {}
|
395
375
|
@row_schema_types = {}
|
396
376
|
extend(@row_type_method_module = Module.new)
|
397
|
-
|
377
|
+
add_conversion_proc(2249, PGRow::Parser.new(:converter=>PGRow::ArrayRow))
|
378
|
+
if respond_to?(:register_array_type)
|
379
|
+
register_array_type('record', :oid=>2287, :scalar_oid=>2249)
|
380
|
+
end
|
398
381
|
end
|
399
382
|
end
|
400
383
|
|
@@ -402,15 +385,23 @@ module Sequel
|
|
402
385
|
def bound_variable_arg(arg, conn)
|
403
386
|
case arg
|
404
387
|
when ArrayRow
|
405
|
-
"(#{arg.map{|v| bound_variable_array(v) if v}.join(
|
388
|
+
"(#{arg.map{|v| bound_variable_array(v) if v}.join(',')})"
|
406
389
|
when HashRow
|
407
390
|
arg.check_columns!
|
408
|
-
"(#{arg.values_at(*arg.columns).map{|v| bound_variable_array(v) if v}.join(
|
391
|
+
"(#{arg.values_at(*arg.columns).map{|v| bound_variable_array(v) if v}.join(',')})"
|
409
392
|
else
|
410
393
|
super
|
411
394
|
end
|
412
395
|
end
|
413
396
|
|
397
|
+
# Freeze the row types and row schema types to prevent adding new ones.
|
398
|
+
def freeze
|
399
|
+
@row_types.freeze
|
400
|
+
@row_schema_types.freeze
|
401
|
+
@row_type_method_module.freeze
|
402
|
+
super
|
403
|
+
end
|
404
|
+
|
414
405
|
# Register a new row type for the Database instance. db_type should be the type
|
415
406
|
# symbol. This parses the PostgreSQL system tables to get information the
|
416
407
|
# composite type, and by default has the type return instances of a subclass
|
@@ -432,7 +423,7 @@ module Sequel
|
|
432
423
|
|
433
424
|
# Get basic oid information for the composite type.
|
434
425
|
ds = from(:pg_type).
|
435
|
-
select
|
426
|
+
select{[pg_type[:oid], :typrelid, :typarray]}.
|
436
427
|
where([[:typtype, 'c'], [:typname, type_name.to_s]])
|
437
428
|
if type_schema
|
438
429
|
ds = ds.join(:pg_namespace, [[:oid, :typnamespace], [:nspname, type_schema.to_s]])
|
@@ -454,7 +445,7 @@ module Sequel
|
|
454
445
|
where{attnum > 0}.
|
455
446
|
exclude(:attisdropped).
|
456
447
|
order(:attnum).
|
457
|
-
select_map
|
448
|
+
select_map{[:attname, Sequel.case({0=>:atttypid}, pg_type[:typbasetype], pg_type[:typbasetype]).as(:atttypid)]}
|
458
449
|
if res.empty?
|
459
450
|
raise Error, "no columns for row type #{db_type.inspect} in database"
|
460
451
|
end
|
@@ -463,13 +454,7 @@ module Sequel
|
|
463
454
|
|
464
455
|
# Using the conversion_procs, lookup converters for each member of the composite type
|
465
456
|
parser_opts[:column_converters] = parser_opts[:column_oids].map do |oid|
|
466
|
-
|
467
|
-
pr
|
468
|
-
elsif !Sequel::Postgres::STRING_TYPES.include?(oid)
|
469
|
-
# It's not a string type, and it's possible a conversion proc for this
|
470
|
-
# oid will be added later, so do a runtime check for it.
|
471
|
-
lambda{|s| (pr = procs[oid]) ? pr.call(s) : s}
|
472
|
-
end
|
457
|
+
procs[oid]
|
473
458
|
end
|
474
459
|
|
475
460
|
# Setup the converter and typecaster
|
@@ -477,15 +462,15 @@ module Sequel
|
|
477
462
|
parser_opts[:typecaster] = opts.fetch(:typecaster, parser_opts[:converter])
|
478
463
|
|
479
464
|
parser = Parser.new(parser_opts)
|
480
|
-
|
465
|
+
add_conversion_proc(parser.oid, parser)
|
481
466
|
|
482
|
-
if
|
467
|
+
if respond_to?(:register_array_type) && array_oid && array_oid > 0
|
483
468
|
array_type_name = if type_schema
|
484
469
|
"#{type_schema}.#{type_name}"
|
485
470
|
else
|
486
471
|
type_name
|
487
472
|
end
|
488
|
-
|
473
|
+
register_array_type(array_type_name, :oid=>array_oid, :converter=>parser, :scalar_typecast=>schema_type_symbol)
|
489
474
|
end
|
490
475
|
|
491
476
|
@row_types[literal(db_type)] = opts.merge(:parser=>parser, :type=>db_type)
|
@@ -497,24 +482,12 @@ module Sequel
|
|
497
482
|
row_type(db_type, v)
|
498
483
|
end
|
499
484
|
private meth
|
485
|
+
alias_method(meth, meth)
|
500
486
|
end
|
501
487
|
|
502
|
-
conversion_procs_updated
|
503
488
|
nil
|
504
489
|
end
|
505
490
|
|
506
|
-
# When reseting conversion procs, reregister all the row types so that
|
507
|
-
# the system tables are introspected again, picking up database changes.
|
508
|
-
def reset_conversion_procs
|
509
|
-
procs = super
|
510
|
-
|
511
|
-
row_types.values.each do |opts|
|
512
|
-
register_row_type(opts[:type], opts)
|
513
|
-
end
|
514
|
-
|
515
|
-
procs
|
516
|
-
end
|
517
|
-
|
518
491
|
# Handle typecasting of the given object to the given database type.
|
519
492
|
# In general, the given database type should already be registered,
|
520
493
|
# but if obj is an array, this will handled unregistered types.
|
@@ -550,10 +523,10 @@ module Sequel
|
|
550
523
|
def bound_variable_array(arg)
|
551
524
|
case arg
|
552
525
|
when ArrayRow
|
553
|
-
"\"(#{arg.map{|v| bound_variable_array(v) if v}.join(
|
526
|
+
"\"(#{arg.map{|v| bound_variable_array(v) if v}.join(',').gsub(/("|\\)/, '\\\\\1')})\""
|
554
527
|
when HashRow
|
555
528
|
arg.check_columns!
|
556
|
-
"\"(#{arg.values_at(*arg.columns).map{|v| bound_variable_array(v) if v}.join(
|
529
|
+
"\"(#{arg.values_at(*arg.columns).map{|v| bound_variable_array(v) if v}.join(',').gsub(/("|\\)/, '\\\\\1')})\""
|
557
530
|
else
|
558
531
|
super
|
559
532
|
end
|
@@ -569,12 +542,6 @@ module Sequel
|
|
569
542
|
end
|
570
543
|
end
|
571
544
|
end
|
572
|
-
|
573
|
-
# Register the default anonymous record type
|
574
|
-
PG_TYPES[2249] = PGRow::Parser.new(:converter=>PGRow::ArrayRow)
|
575
|
-
if defined?(PGArray) && PGArray.respond_to?(:register)
|
576
|
-
PGArray.register('record', :oid=>2287, :scalar_oid=>2249)
|
577
|
-
end
|
578
545
|
end
|
579
546
|
|
580
547
|
module SQL::Builders
|
@@ -19,7 +19,7 @@
|
|
19
19
|
# Also, on most Sequel expression objects, you can call the pg_row
|
20
20
|
# method:
|
21
21
|
#
|
22
|
-
# r = Sequel
|
22
|
+
# r = Sequel[:row_column].pg_row
|
23
23
|
#
|
24
24
|
# If you have loaded the {core_extensions extension}[rdoc-ref:doc/core_extensions.rdoc],
|
25
25
|
# or you have loaded the core_refinements extension
|
@@ -70,14 +70,14 @@
|
|
70
70
|
#
|
71
71
|
# By casting the expression, you can get a composite type returned:
|
72
72
|
#
|
73
|
-
# DB[:a].select(a.splat).first # SELECT (a.*)::a FROM a
|
73
|
+
# DB[:a].select(a.splat(:a)).first # SELECT (a.*)::a FROM a
|
74
74
|
# # => {:a=>"(1,2)"} # or {:a=>{:a=>1, :b=>2}} if the "a" type has been registered
|
75
75
|
# # with the pg_row extension
|
76
76
|
#
|
77
77
|
# This feature is mostly useful for a different way to graph tables:
|
78
78
|
#
|
79
|
-
# DB[:a].join(:b, :
|
80
|
-
#
|
79
|
+
# DB[:a].join(:b, id: :b_id).select(Sequel.pg_row_op(:a).splat(:a),
|
80
|
+
# Sequel.pg_row_op(:b).splat(:b))
|
81
81
|
# # SELECT (a.*)::a, (b.*)::b FROM a INNER JOIN b ON (b.id = a.b_id)
|
82
82
|
# # => {:a=>{:id=>1, :b_id=>2}, :b=>{:id=>2}}
|
83
83
|
#
|
@@ -88,15 +88,10 @@ module Sequel
|
|
88
88
|
module Postgres
|
89
89
|
# This class represents a composite type expression reference.
|
90
90
|
class PGRowOp < SQL::PlaceholderLiteralString
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
EMPTY = "".freeze
|
96
|
-
ROW = [OPEN, CLOSE_STAR].freeze
|
97
|
-
ROW_CAST = [OPEN, CLOSE_STAR_CAST].freeze
|
98
|
-
QUALIFY = [OPEN, CLOSE_DOT].freeze
|
99
|
-
WRAP = [EMPTY].freeze
|
91
|
+
ROW = ['(', '.*)'].freeze.each(&:freeze)
|
92
|
+
ROW_CAST = ['(', '.*)::'].freeze.each(&:freeze)
|
93
|
+
QUALIFY = ['(', ').'].freeze.each(&:freeze)
|
94
|
+
WRAP = [""].freeze.each(&:freeze)
|
100
95
|
|
101
96
|
# Wrap the expression in a PGRowOp, without changing the
|
102
97
|
# SQL it would use.
|
@@ -163,6 +158,30 @@ module Sequel
|
|
163
158
|
end
|
164
159
|
end
|
165
160
|
end
|
161
|
+
|
162
|
+
# :nocov:
|
163
|
+
if defined?(PGRow::ArrayRow)
|
164
|
+
# :nocov:
|
165
|
+
class PGRow::ArrayRow
|
166
|
+
# Wrap the PGRow::ArrayRow instance in an PGRowOp, allowing you to easily use
|
167
|
+
# the PostgreSQL row functions and operators with literal rows.
|
168
|
+
def op
|
169
|
+
Sequel.pg_row_op(self)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
# :nocov:
|
175
|
+
if defined?(PGRow::HashRow)
|
176
|
+
# :nocov:
|
177
|
+
class PGRow::HashRow
|
178
|
+
# Wrap the PGRow::ArrayRow instance in an PGRowOp, allowing you to easily use
|
179
|
+
# the PostgreSQL row functions and operators with literal rows.
|
180
|
+
def op
|
181
|
+
Sequel.pg_row_op(self)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
166
185
|
end
|
167
186
|
|
168
187
|
module SQL::Builders
|
@@ -191,7 +210,7 @@ end
|
|
191
210
|
if defined?(Sequel::CoreRefinements)
|
192
211
|
module Sequel::CoreRefinements
|
193
212
|
refine Symbol do
|
194
|
-
|
213
|
+
send INCLUDE_METH, Sequel::Postgres::PGRowOp::ExpressionMethods
|
195
214
|
end
|
196
215
|
end
|
197
216
|
end
|
@@ -121,7 +121,7 @@ SQL
|
|
121
121
|
|
122
122
|
oid_map = {}
|
123
123
|
models.each do |model|
|
124
|
-
raise Error, "#{model.inspect} does not use the static_cache plugin" unless model.respond_to?(:load_cache
|
124
|
+
raise Error, "#{model.inspect} does not use the static_cache plugin" unless model.respond_to?(:load_cache)
|
125
125
|
oid_map[get(regclass_oid(model.dataset.first_source_table))] = model
|
126
126
|
end
|
127
127
|
|
@@ -129,7 +129,7 @@ SQL
|
|
129
129
|
begin
|
130
130
|
listen(opts[:channel_name]||default_static_cache_update_name, {:loop=>true}.merge!(opts)) do |_, _, oid|
|
131
131
|
if model = oid_map[oid.to_i]
|
132
|
-
model.
|
132
|
+
model.load_cache
|
133
133
|
end
|
134
134
|
end
|
135
135
|
ensure
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen-string-literal: true
|
2
|
+
#
|
3
|
+
# The pg_timestamptz extension changes the default timestamp
|
4
|
+
# type for the database to be +timestamptz+ (+timestamp with time zone+)
|
5
|
+
# instead of +timestamp+ (+timestamp without time zone+). This is
|
6
|
+
# recommended if you are dealing with multiple timezones in your application.
|
7
|
+
#
|
8
|
+
# To load the extension into the database:
|
9
|
+
#
|
10
|
+
# DB.extension :pg_timestamptz
|
11
|
+
#
|
12
|
+
# Related module: Sequel::Postgres::Timestamptz
|
13
|
+
|
14
|
+
#
|
15
|
+
module Sequel
|
16
|
+
module Postgres
|
17
|
+
module Timestamptz
|
18
|
+
private
|
19
|
+
|
20
|
+
# Use timestamptz by default for generic timestamp value.
|
21
|
+
def type_literal_generic_datetime(column)
|
22
|
+
:timestamptz
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
Database.register_extension(:pg_timestamptz, Postgres::Timestamptz)
|
28
|
+
end
|
@@ -6,7 +6,7 @@
|
|
6
6
|
#
|
7
7
|
# dataset = DB[:items].query do
|
8
8
|
# select :x, :y, :z
|
9
|
-
#
|
9
|
+
# where{(x > 1) & (y > 2)}
|
10
10
|
# reverse :z
|
11
11
|
# end
|
12
12
|
#
|
@@ -37,24 +37,22 @@ module Sequel
|
|
37
37
|
end
|
38
38
|
|
39
39
|
module DatasetQuery
|
40
|
-
Dataset.def_mutation_method(:query, :module=>self)
|
41
|
-
|
42
40
|
# Translates a query block into a dataset. Query blocks are an
|
43
41
|
# alternative to Sequel's usual method chaining, by using
|
44
|
-
#
|
42
|
+
# instance_exec with a proxy object:
|
45
43
|
#
|
46
44
|
# dataset = DB[:items].query do
|
47
45
|
# select :x, :y, :z
|
48
|
-
#
|
46
|
+
# where{(x > 1) & (y > 2)}
|
49
47
|
# reverse :z
|
50
48
|
# end
|
51
49
|
#
|
52
50
|
# Which is the same as:
|
53
51
|
#
|
54
|
-
# dataset = DB[:items].select(:x, :y, :z).
|
52
|
+
# dataset = DB[:items].select(:x, :y, :z).where{(x > 1) & (y > 2)}.reverse(:z)
|
55
53
|
def query(&block)
|
56
54
|
query = Dataset::Query.new(self)
|
57
|
-
query.
|
55
|
+
query.instance_exec(&block)
|
58
56
|
query.dataset
|
59
57
|
end
|
60
58
|
end
|
@@ -71,10 +69,14 @@ module Sequel
|
|
71
69
|
|
72
70
|
# Replace the query's dataset with dataset returned by the method call.
|
73
71
|
def method_missing(method, *args, &block)
|
72
|
+
# Allow calling private methods, so things like raise works
|
74
73
|
@dataset = @dataset.send(method, *args, &block)
|
75
74
|
raise(Sequel::Error, "method #{method.inspect} did not return a dataset") unless @dataset.is_a?(Dataset)
|
76
75
|
self
|
77
76
|
end
|
77
|
+
# :nocov:
|
78
|
+
ruby2_keywords(:method_missing) if respond_to?(:ruby2_keywords, true)
|
79
|
+
# :nocov:
|
78
80
|
end
|
79
81
|
end
|
80
82
|
|
@@ -25,12 +25,6 @@
|
|
25
25
|
#
|
26
26
|
# Related module: Sequel::Dataset::RoundTimestamps
|
27
27
|
|
28
|
-
unless RUBY_VERSION >= '1.9'
|
29
|
-
# :nocov:
|
30
|
-
raise LoadError, 'the round_timestamps extension only works on ruby 1.9+'
|
31
|
-
# :nocov:
|
32
|
-
end
|
33
|
-
|
34
28
|
module Sequel
|
35
29
|
class Dataset
|
36
30
|
module RoundTimestamps
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen-string-literal: true
|
2
|
+
#
|
3
|
+
# The run_transaction_hooks extension allows for running after_commit or
|
4
|
+
# after_rollback extensions before commit or rollback. It then removes
|
5
|
+
# the hook after running it, so it will not be run twice.
|
6
|
+
#
|
7
|
+
# This extension should only be used in transactional tests where the
|
8
|
+
# transaction always rolls back, to test the behavior of the after_commit
|
9
|
+
# and after_rollback hooks. Any other usage is probably a bad idea.
|
10
|
+
#
|
11
|
+
# Example:
|
12
|
+
#
|
13
|
+
# DB.extension :run_transaction_hooks
|
14
|
+
# x = 1
|
15
|
+
# DB.transaction(rollback: :always) do
|
16
|
+
# DB.after_rollback{x = 3}
|
17
|
+
# DB.after_commit{x = 2}
|
18
|
+
#
|
19
|
+
# x # => 1
|
20
|
+
# DB.run_after_rollback_hooks
|
21
|
+
# x # => 3
|
22
|
+
# DB.run_after_commit_hooks
|
23
|
+
# x # => 2
|
24
|
+
# end
|
25
|
+
# x # => 2
|
26
|
+
|
27
|
+
#
|
28
|
+
class Sequel::Database
|
29
|
+
module RunTransactionHooks
|
30
|
+
# Run all savepoint and transaction after_commit hooks for the current transaction,
|
31
|
+
# and remove the hooks after running them.
|
32
|
+
# Options:
|
33
|
+
# :server :: The server/shard to use.
|
34
|
+
def run_after_commit_hooks(opts=OPTS)
|
35
|
+
_run_transaction_hooks(:after_commit, opts)
|
36
|
+
end
|
37
|
+
|
38
|
+
# Run all savepoint and transaction after_rollback hooks for the current transaction,
|
39
|
+
# and remove the hooks after running them.
|
40
|
+
# Options:
|
41
|
+
# :server :: The server/shard to use.
|
42
|
+
def run_after_rollback_hooks(opts=OPTS)
|
43
|
+
_run_transaction_hooks(:after_rollback, opts)
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def _run_transaction_hooks(type, opts)
|
49
|
+
synchronize(opts[:server]) do |conn|
|
50
|
+
unless h = _trans(conn)
|
51
|
+
raise Sequel::Error, "Cannot call run_#{type}_hooks outside of a transaction"
|
52
|
+
end
|
53
|
+
|
54
|
+
if hooks = h[type]
|
55
|
+
hooks.each(&:call)
|
56
|
+
hooks.clear
|
57
|
+
end
|
58
|
+
|
59
|
+
if (savepoints = h[:savepoints])
|
60
|
+
savepoints.each do |savepoint|
|
61
|
+
if hooks = savepoint[type]
|
62
|
+
hooks.each(&:call)
|
63
|
+
hooks.clear
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
register_extension(:run_transaction_hooks, RunTransactionHooks)
|
72
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen-string-literal: true
|
2
|
+
#
|
3
|
+
# The s extension adds Sequel::S, a module containing a private #S
|
4
|
+
# method that calls Sequel.expr. It's designed as a shortcut so
|
5
|
+
# that instead of:
|
6
|
+
#
|
7
|
+
# Sequel.expr(:column) + 1
|
8
|
+
# # or
|
9
|
+
# Sequel.expr{column + 1}
|
10
|
+
#
|
11
|
+
# you can just write:
|
12
|
+
#
|
13
|
+
# S(:column) + 1
|
14
|
+
# # or
|
15
|
+
# S{column + 1}
|
16
|
+
#
|
17
|
+
# To load the extension:
|
18
|
+
#
|
19
|
+
# Sequel.extension :s
|
20
|
+
#
|
21
|
+
# Then you can include the Sequel::S module into whatever classes or
|
22
|
+
# objects you care about:
|
23
|
+
#
|
24
|
+
# Sequel::Model.send(:include, Sequel::S) # available in model instance methods
|
25
|
+
# Sequel::Model.extend(Sequel::S) # available in model class methods
|
26
|
+
# Sequel::Dataset.send(:include, Sequel::S) # available in dataset methods
|
27
|
+
#
|
28
|
+
# or just into Object if you want it available everywhere:
|
29
|
+
#
|
30
|
+
# Object.send(:include, Sequel::S)
|
31
|
+
#
|
32
|
+
# If you are using Ruby 2+, and you would like to use refinements, you
|
33
|
+
# can use Sequel::S as a refinement, in which case the private #S method
|
34
|
+
# will be available on all objects while the refinement is active.
|
35
|
+
#
|
36
|
+
# using Sequel::S
|
37
|
+
#
|
38
|
+
# S(:column) + 1
|
39
|
+
#
|
40
|
+
# Related module: Sequel::S
|
41
|
+
|
42
|
+
|
43
|
+
#
|
44
|
+
module Sequel::S
|
45
|
+
private
|
46
|
+
|
47
|
+
# Delegate to Sequel.expr
|
48
|
+
def S(*a, &block)
|
49
|
+
Sequel.expr(*a, &block)
|
50
|
+
end
|
51
|
+
|
52
|
+
# :nocov:
|
53
|
+
if RUBY_VERSION >= '2.0.0'
|
54
|
+
include_meth = RUBY_VERSION >= '3.1' ? :import_methods : :include
|
55
|
+
# :nocov:
|
56
|
+
refine Object do
|
57
|
+
send include_meth, Sequel::S
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -51,7 +51,15 @@ module Sequel
|
|
51
51
|
module SchemaCaching
|
52
52
|
# Dump the cached schema to the filename given in Marshal format.
|
53
53
|
def dump_schema_cache(file)
|
54
|
-
|
54
|
+
sch = {}
|
55
|
+
@schemas.each do |k,v|
|
56
|
+
sch[k] = v.map do |c, h|
|
57
|
+
h = Hash[h]
|
58
|
+
h.delete(:callable_default)
|
59
|
+
[c, h]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
File.open(file, 'wb'){|f| f.write(Marshal.dump(sch))}
|
55
63
|
nil
|
56
64
|
end
|
57
65
|
|
@@ -65,6 +73,7 @@ module Sequel
|
|
65
73
|
# should be in Marshal format.
|
66
74
|
def load_schema_cache(file)
|
67
75
|
@schemas = Marshal.load(File.read(file))
|
76
|
+
@schemas.each_value{|v| schema_post_process(v)}
|
68
77
|
nil
|
69
78
|
end
|
70
79
|
|