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,473 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
2
|
-
|
3
|
-
|
4
|
-
describe "pg_range extension" do
|
5
|
-
before(:all) do
|
6
|
-
Sequel.extension :pg_array, :pg_range
|
7
|
-
@pg_types = Sequel::Postgres::PG_TYPES.dup
|
8
|
-
end
|
9
|
-
after(:all) do
|
10
|
-
Sequel::Postgres::PG_TYPES.replace(@pg_types)
|
11
|
-
end
|
12
|
-
|
13
|
-
before do
|
14
|
-
@db = Sequel.connect('mock://postgres', :quote_identifiers=>false)
|
15
|
-
@R = Sequel::Postgres::PGRange
|
16
|
-
@db.extend_datasets(Module.new{def supports_timestamp_timezones?; false; end; def supports_timestamp_usecs?; false; end})
|
17
|
-
@db.extension(:pg_array, :pg_range)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should literalize Range instances to strings correctly" do
|
21
|
-
@db.literal(Date.new(2011, 1, 2)...Date.new(2011, 3, 2)).must_equal "'[2011-01-02,2011-03-02)'"
|
22
|
-
@db.literal(Time.local(2011, 1, 2, 10, 20, 30)...Time.local(2011, 2, 3, 10, 20, 30)).must_equal "'[2011-01-02 10:20:30,2011-02-03 10:20:30)'"
|
23
|
-
@db.literal(DateTime.new(2011, 1, 2, 10, 20, 30)...DateTime.new(2011, 2, 3, 10, 20, 30)).must_equal "'[2011-01-02 10:20:30,2011-02-03 10:20:30)'"
|
24
|
-
@db.literal(DateTime.new(2011, 1, 2, 10, 20, 30)...DateTime.new(2011, 2, 3, 10, 20, 30)).must_equal "'[2011-01-02 10:20:30,2011-02-03 10:20:30)'"
|
25
|
-
@db.literal(1..2).must_equal "'[1,2]'"
|
26
|
-
@db.literal(1.0..2.0).must_equal "'[1.0,2.0]'"
|
27
|
-
@db.literal(BigDecimal.new('1.0')..BigDecimal.new('2.0')).must_equal "'[1.0,2.0]'"
|
28
|
-
@db.literal(Sequel.lit('a')..Sequel.lit('z')).must_equal "'[a,z]'"
|
29
|
-
@db.literal(''..'()[]",\\2').must_equal "'[\"\",\\(\\)\\[\\]\\\"\\,\\\\2]'"
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should literalize PGRange instances to strings correctly" do
|
33
|
-
@db.literal(@R.new(1, 2)).must_equal "'[1,2]'"
|
34
|
-
@db.literal(@R.new(true, false)).must_equal "'[true,false]'"
|
35
|
-
@db.literal(@R.new(1, 2, :exclude_begin=>true)).must_equal "'(1,2]'"
|
36
|
-
@db.literal(@R.new(1, 2, :exclude_end=>true)).must_equal "'[1,2)'"
|
37
|
-
@db.literal(@R.new(nil, 2)).must_equal "'[,2]'"
|
38
|
-
@db.literal(@R.new(1, nil)).must_equal "'[1,]'"
|
39
|
-
@db.literal(@R.new(1, 2, :db_type=>'int8range')).must_equal "int8range(1,2,'[]')"
|
40
|
-
@db.literal(@R.new(nil, nil, :empty=>true)).must_equal "'empty'"
|
41
|
-
@db.literal(@R.new(nil, nil, :empty=>true, :db_type=>'int8range')).must_equal "'empty'::int8range"
|
42
|
-
@db.literal(@R.new("", 2)).must_equal "'[\"\",2]'"
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should not affect literalization of custom objects" do
|
46
|
-
o = Object.new
|
47
|
-
def o.sql_literal(ds) 'v' end
|
48
|
-
@db.literal(o).must_equal 'v'
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should support using Range instances as bound variables" do
|
52
|
-
@db.bound_variable_arg(1..2, nil).must_equal "[1,2]"
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should support using PGRange instances as bound variables" do
|
56
|
-
@db.bound_variable_arg(@R.new(1, 2), nil).must_equal "[1,2]"
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should support using arrays of Range instances as bound variables" do
|
60
|
-
@db.bound_variable_arg([1..2,2...3], nil).must_equal '{"[1,2]","[2,3)"}'
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should support using PGRange instances as bound variables" do
|
64
|
-
@db.bound_variable_arg([@R.new(1, 2),@R.new(2, 3)], nil).must_equal '{"[1,2]","[2,3]"}'
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should parse range types from the schema correctly" do
|
68
|
-
@db.fetch = [{:name=>'id', :db_type=>'integer'}, {:name=>'i4', :db_type=>'int4range'}, {:name=>'i8', :db_type=>'int8range'}, {:name=>'n', :db_type=>'numrange'}, {:name=>'d', :db_type=>'daterange'}, {:name=>'ts', :db_type=>'tsrange'}, {:name=>'tz', :db_type=>'tstzrange'}]
|
69
|
-
@db.schema(:items).map{|e| e[1][:type]}.must_equal [:integer, :int4range, :int8range, :numrange, :daterange, :tsrange, :tstzrange]
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should parse arrays of range types from the schema correctly" do
|
73
|
-
@db.fetch = [{:name=>'id', :db_type=>'integer'}, {:name=>'i4', :db_type=>'int4range[]'}, {:name=>'i8', :db_type=>'int8range[]'}, {:name=>'n', :db_type=>'numrange[]'}, {:name=>'d', :db_type=>'daterange[]'}, {:name=>'ts', :db_type=>'tsrange[]'}, {:name=>'tz', :db_type=>'tstzrange[]'}]
|
74
|
-
@db.schema(:items).map{|e| e[1][:type]}.must_equal [:integer, :int4range_array, :int8range_array, :numrange_array, :daterange_array, :tsrange_array, :tstzrange_array]
|
75
|
-
end
|
76
|
-
|
77
|
-
describe "database typecasting" do
|
78
|
-
before do
|
79
|
-
@o = @R.new(1, 2, :db_type=>'int4range')
|
80
|
-
@o2 = @R.new(1, 2, :db_type=>'int8range')
|
81
|
-
@eo = @R.new(nil, nil, :empty=>true, :db_type=>'int4range')
|
82
|
-
@eo2 = @R.new(nil, nil, :empty=>true, :db_type=>'int8range')
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should handle multiple range types" do
|
86
|
-
%w'int4 int8 num date ts tstz'.each do |i|
|
87
|
-
@db.typecast_value(:"#{i}range", @R.new(1, 2, :db_type=>"#{i}range")).must_equal @R.new(1, 2, :db_type=>"#{i}range")
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
it "should handle multiple array range types" do
|
92
|
-
%w'int4 int8 num date ts tstz'.each do |i|
|
93
|
-
@db.typecast_value(:"#{i}range_array", [@R.new(1, 2, :db_type=>"#{i}range")]).class.must_equal(Sequel::Postgres::PGArray)
|
94
|
-
@db.typecast_value(:"#{i}range_array", [@R.new(1, 2, :db_type=>"#{i}range")]).must_equal [@R.new(1, 2, :db_type=>"#{i}range")]
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
it "should return PGRange value as is if they have the same subtype" do
|
99
|
-
@db.typecast_value(:int4range, @o).must_be_same_as(@o)
|
100
|
-
end
|
101
|
-
|
102
|
-
it "should return new PGRange value as is if they have a different subtype" do
|
103
|
-
@db.typecast_value(:int8range, @o).wont_be_same_as(@o)
|
104
|
-
@db.typecast_value(:int8range, @o).must_equal @o2
|
105
|
-
end
|
106
|
-
|
107
|
-
it "should return new PGRange value as is if they have a different subtype and value is empty" do
|
108
|
-
@db.typecast_value(:int8range, @eo).must_equal @eo2
|
109
|
-
end
|
110
|
-
|
111
|
-
it "should return new PGRange value if given a Range" do
|
112
|
-
@db.typecast_value(:int4range, 1..2).must_equal @o
|
113
|
-
@db.typecast_value(:int4range, 1..2).wont_equal @o2
|
114
|
-
@db.typecast_value(:int8range, 1..2).must_equal @o2
|
115
|
-
end
|
116
|
-
|
117
|
-
it "should parse a string argument as the PostgreSQL output format" do
|
118
|
-
@db.typecast_value(:int4range, '[1,2]').must_equal @o
|
119
|
-
end
|
120
|
-
|
121
|
-
it "should raise errors for unparsable formats" do
|
122
|
-
proc{@db.typecast_value(:int8range, 'foo')}.must_raise(Sequel::InvalidValue)
|
123
|
-
end
|
124
|
-
|
125
|
-
it "should raise errors for unhandled values" do
|
126
|
-
proc{@db.typecast_value(:int4range, 1)}.must_raise(Sequel::InvalidValue)
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
it "should support registering custom range types" do
|
131
|
-
@R.register('foorange')
|
132
|
-
@db.typecast_value(:foorange, 1..2).must_be_kind_of(@R)
|
133
|
-
@db.fetch = [{:name=>'id', :db_type=>'foorange'}]
|
134
|
-
@db.schema(:items).map{|e| e[1][:type]}.must_equal [:foorange]
|
135
|
-
end
|
136
|
-
|
137
|
-
it "should support using a block as a custom conversion proc given as block" do
|
138
|
-
@R.register('foo2range'){|s| (s*2).to_i}
|
139
|
-
@db.typecast_value(:foo2range, '[1,2]').must_be :==, (11..22)
|
140
|
-
end
|
141
|
-
|
142
|
-
it "should support using a block as a custom conversion proc given as :converter option" do
|
143
|
-
@R.register('foo3range', :converter=>proc{|s| (s*2).to_i})
|
144
|
-
@db.typecast_value(:foo3range, '[1,2]').must_be :==, (11..22)
|
145
|
-
end
|
146
|
-
|
147
|
-
it "should support using an existing scaler conversion proc via the :subtype_oid option" do
|
148
|
-
@R.register('foo4range', :subtype_oid=>16)
|
149
|
-
@db.typecast_value(:foo4range, '[t,f]').must_equal @R.new(true, false, :db_type=>'foo4range')
|
150
|
-
end
|
151
|
-
|
152
|
-
it "should raise an error if using :subtype_oid option with unexisting scalar conversion proc" do
|
153
|
-
proc{@R.register('fooirange', :subtype_oid=>0)}.must_raise(Sequel::Error)
|
154
|
-
end
|
155
|
-
|
156
|
-
it "should raise an error if using :converter option and a block argument" do
|
157
|
-
proc{@R.register('fooirange', :converter=>proc{}){}}.must_raise(Sequel::Error)
|
158
|
-
end
|
159
|
-
|
160
|
-
it "should raise an error if using :subtype_oid option and a block argument" do
|
161
|
-
proc{@R.register('fooirange', :subtype_oid=>16){}}.must_raise(Sequel::Error)
|
162
|
-
end
|
163
|
-
|
164
|
-
it "should support registering custom types with :oid option" do
|
165
|
-
@R.register('foo5range', :oid=>331)
|
166
|
-
Sequel::Postgres::PG_TYPES[331].call('[1,3)').must_be_kind_of(@R)
|
167
|
-
end
|
168
|
-
|
169
|
-
it "should support registering custom range types on a per-Database basis" do
|
170
|
-
@db.register_range_type('banana', :oid=>7865){|s| s}
|
171
|
-
@db.typecast_value(:banana, '[1,2]').class.must_equal(Sequel::Postgres::PGRange)
|
172
|
-
@db.fetch = [{:name=>'id', :db_type=>'banana'}]
|
173
|
-
@db.schema(:items).map{|e| e[1][:type]}.must_equal [:banana]
|
174
|
-
@db.conversion_procs.must_include(7865)
|
175
|
-
@db.respond_to?(:typecast_value_banana, true).must_equal true
|
176
|
-
|
177
|
-
db = Sequel.connect('mock://postgres', :quote_identifiers=>false)
|
178
|
-
db.extend_datasets(Module.new{def supports_timestamp_timezones?; false; end; def supports_timestamp_usecs?; false; end})
|
179
|
-
db.extension(:pg_range)
|
180
|
-
db.fetch = [{:name=>'id', :db_type=>'banana'}]
|
181
|
-
db.schema(:items).map{|e| e[1][:type]}.must_equal [nil]
|
182
|
-
db.conversion_procs.wont_include(7865)
|
183
|
-
db.respond_to?(:typecast_value_banana, true).must_equal false
|
184
|
-
end
|
185
|
-
|
186
|
-
it "should automatically look up the range and subtype oids when registering per-Database types" do
|
187
|
-
@db.fetch = [[{:rngsubtype=>21, :rngtypid=>7866}], [{:name=>'id', :db_type=>'banana'}]]
|
188
|
-
@db.register_range_type('banana', :subtype_typecast=>:integer)
|
189
|
-
@db.sqls.must_equal ["SELECT rngtypid, rngsubtype FROM pg_range INNER JOIN pg_type ON (pg_type.oid = pg_range.rngtypid) WHERE (typname = 'banana') LIMIT 1"]
|
190
|
-
@db.schema(:items).map{|e| e[1][:type]}.must_equal [:banana]
|
191
|
-
@db.conversion_procs[7866].call("[1,3)").must_be :==, (1...3)
|
192
|
-
@db.typecast_value(:banana, '[1,2]').must_be :==, (1..2)
|
193
|
-
end
|
194
|
-
|
195
|
-
it "should not automatically look up oids if given both subtype and range oids" do
|
196
|
-
@db.register_range_type('banana', :oid=>7866, :subtype_oid=>21)
|
197
|
-
@db.sqls.must_equal []
|
198
|
-
@db.conversion_procs[7866].call("[1,3)").must_be :==, (1...3)
|
199
|
-
@db.typecast_value(:banana, '[1,2]').must_be :==, (1..2)
|
200
|
-
end
|
201
|
-
|
202
|
-
it "should not automatically look up oids if given range oid and block" do
|
203
|
-
@db.register_range_type('banana', :oid=>7866){|s| s.to_i}
|
204
|
-
@db.sqls.must_equal []
|
205
|
-
@db.conversion_procs[7866].call("[1,3)").must_be :==, (1...3)
|
206
|
-
@db.typecast_value(:banana, '[1,2]').must_be :==, (1..2)
|
207
|
-
end
|
208
|
-
|
209
|
-
it "should return correct results for Database#schema_type_class" do
|
210
|
-
@db.schema_type_class(:int4range).must_equal Sequel::Postgres::PGRange
|
211
|
-
@db.schema_type_class(:integer).must_equal Integer
|
212
|
-
end
|
213
|
-
|
214
|
-
describe "parser" do
|
215
|
-
before do
|
216
|
-
@p = Sequel::Postgres::PG_TYPES[3904]
|
217
|
-
@sp = @R::Parser.new(nil)
|
218
|
-
end
|
219
|
-
|
220
|
-
it "should have db_type method to return the database type string" do
|
221
|
-
@p.db_type.must_equal 'int4range'
|
222
|
-
end
|
223
|
-
|
224
|
-
it "should have converter method which returns a callable used for conversion" do
|
225
|
-
@p.converter.call('1').must_equal 1
|
226
|
-
end
|
227
|
-
|
228
|
-
it "should have call parse input string argument into PGRange instance" do
|
229
|
-
@p.call('[1,2]').must_equal @R.new(1, 2, :db_type=>'int4range')
|
230
|
-
end
|
231
|
-
|
232
|
-
it "should handle empty ranges" do
|
233
|
-
@p.call('empty').must_equal @R.new(nil, nil, :empty=>true, :db_type=>'int4range')
|
234
|
-
end
|
235
|
-
|
236
|
-
it "should handle exclusive beginnings and endings" do
|
237
|
-
@p.call('(1,3]').must_equal @R.new(1, 3, :exclude_begin=>true, :db_type=>'int4range')
|
238
|
-
@p.call('[1,3)').must_equal @R.new(1, 3, :exclude_end=>true, :db_type=>'int4range')
|
239
|
-
@p.call('(1,3)').must_equal @R.new(1, 3, :exclude_begin=>true, :exclude_end=>true, :db_type=>'int4range')
|
240
|
-
end
|
241
|
-
|
242
|
-
it "should handle unbounded beginnings and endings" do
|
243
|
-
@p.call('[,2]').must_equal @R.new(nil, 2, :db_type=>'int4range')
|
244
|
-
@p.call('[1,]').must_equal @R.new(1, nil, :db_type=>'int4range')
|
245
|
-
@p.call('[,]').must_equal @R.new(nil, nil, :db_type=>'int4range')
|
246
|
-
end
|
247
|
-
|
248
|
-
it "should unescape quoted beginnings and endings" do
|
249
|
-
@sp.call('["\\\\ \\"","\\" \\\\"]').must_equal @R.new("\\ \"", "\" \\")
|
250
|
-
end
|
251
|
-
|
252
|
-
it "should treat empty quoted string not as unbounded" do
|
253
|
-
@sp.call('["","z"]').must_equal @R.new("", "z")
|
254
|
-
@sp.call('["a",""]').must_equal @R.new("a", "")
|
255
|
-
@sp.call('["",""]').must_equal @R.new("", "")
|
256
|
-
end
|
257
|
-
end
|
258
|
-
|
259
|
-
it "should set appropriate timestamp range conversion procs when resetting conversion procs" do
|
260
|
-
@db.reset_conversion_procs
|
261
|
-
procs = @db.conversion_procs
|
262
|
-
procs[3908].call('[2011-10-20 11:12:13,2011-10-20 11:12:14]').must_be :==, (Time.local(2011, 10, 20, 11, 12, 13)..(Time.local(2011, 10, 20, 11, 12, 14)))
|
263
|
-
procs[3910].call('[2011-10-20 11:12:13,2011-10-20 11:12:14]').must_be :==, (Time.local(2011, 10, 20, 11, 12, 13)..(Time.local(2011, 10, 20, 11, 12, 14)))
|
264
|
-
end
|
265
|
-
|
266
|
-
it "should set appropriate timestamp range array conversion procs when resetting conversion procs" do
|
267
|
-
@db.reset_conversion_procs
|
268
|
-
procs = @db.conversion_procs
|
269
|
-
procs[3909].call('{"[2011-10-20 11:12:13,2011-10-20 11:12:14]"}').must_be :==, [Time.local(2011, 10, 20, 11, 12, 13)..Time.local(2011, 10, 20, 11, 12, 14)]
|
270
|
-
procs[3911].call('{"[2011-10-20 11:12:13,2011-10-20 11:12:14]"}').must_be :==, [Time.local(2011, 10, 20, 11, 12, 13)..Time.local(2011, 10, 20, 11, 12, 14)]
|
271
|
-
end
|
272
|
-
|
273
|
-
describe "a PGRange instance" do
|
274
|
-
before do
|
275
|
-
@r1 = @R.new(1, 2)
|
276
|
-
@r2 = @R.new(3, nil, :exclude_begin=>true, :db_type=>'int4range')
|
277
|
-
@r3 = @R.new(nil, 4, :exclude_end=>true, :db_type=>'int8range')
|
278
|
-
end
|
279
|
-
|
280
|
-
it "should have #begin return the beginning of the range" do
|
281
|
-
@r1.begin.must_equal 1
|
282
|
-
@r2.begin.must_equal 3
|
283
|
-
@r3.begin.must_equal nil
|
284
|
-
end
|
285
|
-
|
286
|
-
it "should have #end return the end of the range" do
|
287
|
-
@r1.end.must_equal 2
|
288
|
-
@r2.end.must_equal nil
|
289
|
-
@r3.end.must_equal 4
|
290
|
-
end
|
291
|
-
|
292
|
-
it "should have #db_type return the range's database type" do
|
293
|
-
@r1.db_type.must_equal nil
|
294
|
-
@r2.db_type.must_equal 'int4range'
|
295
|
-
@r3.db_type.must_equal 'int8range'
|
296
|
-
end
|
297
|
-
|
298
|
-
it "should be able to be created by Sequel.pg_range" do
|
299
|
-
Sequel.pg_range(1..2).must_equal @r1
|
300
|
-
end
|
301
|
-
|
302
|
-
it "should have Sequel.pg_range be able to take a database type" do
|
303
|
-
Sequel.pg_range(1..2, :int4range).must_equal @R.new(1, 2, :db_type=>:int4range)
|
304
|
-
end
|
305
|
-
|
306
|
-
it "should have Sequel.pg_range return a PGRange as is" do
|
307
|
-
a = Sequel.pg_range(1..2)
|
308
|
-
Sequel.pg_range(a).must_be_same_as(a)
|
309
|
-
end
|
310
|
-
|
311
|
-
it "should have Sequel.pg_range return a new PGRange if the database type differs" do
|
312
|
-
a = Sequel.pg_range(1..2, :int4range)
|
313
|
-
b = Sequel.pg_range(a, :int8range)
|
314
|
-
a.to_range.must_equal b.to_range
|
315
|
-
a.wont_be_same_as(b)
|
316
|
-
a.db_type.must_equal :int4range
|
317
|
-
b.db_type.must_equal :int8range
|
318
|
-
end
|
319
|
-
|
320
|
-
it "should have #initialize raise if requesting an empty range with beginning or ending" do
|
321
|
-
proc{@R.new(1, nil, :empty=>true)}.must_raise(Sequel::Error)
|
322
|
-
proc{@R.new(nil, 2, :empty=>true)}.must_raise(Sequel::Error)
|
323
|
-
proc{@R.new(nil, nil, :empty=>true, :exclude_begin=>true)}.must_raise(Sequel::Error)
|
324
|
-
proc{@R.new(nil, nil, :empty=>true, :exclude_end=>true)}.must_raise(Sequel::Error)
|
325
|
-
end
|
326
|
-
|
327
|
-
it "should quack like a range" do
|
328
|
-
@r1.cover?(1.5).must_equal true
|
329
|
-
@r1.cover?(2.5).must_equal false
|
330
|
-
if RUBY_VERSION >= '1.9'
|
331
|
-
@r1.first(1).must_equal [1]
|
332
|
-
@r1.last(1).must_equal [2]
|
333
|
-
end
|
334
|
-
@r1.to_a.must_equal [1, 2]
|
335
|
-
@r1.first.must_equal 1
|
336
|
-
@r1.last.must_equal 2
|
337
|
-
a = []
|
338
|
-
@r1.step{|x| a << x}
|
339
|
-
a.must_equal [1, 2]
|
340
|
-
end
|
341
|
-
|
342
|
-
it "should have cover? handle empty, unbounded, and exclusive beginning ranges" do
|
343
|
-
@R.empty.cover?(1).must_equal false
|
344
|
-
|
345
|
-
r = @R.new(1, nil)
|
346
|
-
r.cover?(0).must_equal false
|
347
|
-
r.cover?(1).must_equal true
|
348
|
-
r.cover?(2).must_equal true
|
349
|
-
r.cover?(3).must_equal true
|
350
|
-
|
351
|
-
r = @R.new(nil, 2)
|
352
|
-
r.cover?(0).must_equal true
|
353
|
-
r.cover?(1).must_equal true
|
354
|
-
r.cover?(2).must_equal true
|
355
|
-
r.cover?(3).must_equal false
|
356
|
-
|
357
|
-
r = @R.new(1, 2, :exclude_begin=>true)
|
358
|
-
r.cover?(0).must_equal false
|
359
|
-
r.cover?(1).must_equal false
|
360
|
-
r.cover?(2).must_equal true
|
361
|
-
r.cover?(3).must_equal false
|
362
|
-
|
363
|
-
r = @R.new(1, 2, :exclude_end=>true)
|
364
|
-
r.cover?(0).must_equal false
|
365
|
-
r.cover?(1).must_equal true
|
366
|
-
r.cover?(2).must_equal false
|
367
|
-
r.cover?(3).must_equal false
|
368
|
-
end
|
369
|
-
|
370
|
-
it "should only consider PGRanges equal if they have the same db_type" do
|
371
|
-
@R.new(1, 2, :db_type=>'int4range').must_equal @R.new(1, 2, :db_type=>'int4range')
|
372
|
-
@R.new(1, 2, :db_type=>'int8range').wont_equal @R.new(1, 2, :db_type=>'int4range')
|
373
|
-
end
|
374
|
-
|
375
|
-
it "should only consider empty PGRanges equal with other empty PGRanges" do
|
376
|
-
@R.new(nil, nil, :empty=>true).must_equal @R.new(nil, nil, :empty=>true)
|
377
|
-
@R.new(nil, nil, :empty=>true).wont_equal @R.new(nil, nil)
|
378
|
-
@R.new(nil, nil).wont_equal @R.new(nil, nil, :empty=>true)
|
379
|
-
end
|
380
|
-
|
381
|
-
it "should only consider empty PGRanges equal if they have the same bounds" do
|
382
|
-
@R.new(1, 2).must_equal @R.new(1, 2)
|
383
|
-
@R.new(1, 2).wont_equal @R.new(1, 3)
|
384
|
-
end
|
385
|
-
|
386
|
-
it "should only consider empty PGRanges equal if they have the same bound exclusions" do
|
387
|
-
@R.new(1, 2, :exclude_begin=>true).must_equal @R.new(1, 2, :exclude_begin=>true)
|
388
|
-
@R.new(1, 2, :exclude_end=>true).must_equal @R.new(1, 2, :exclude_end=>true)
|
389
|
-
@R.new(1, 2, :exclude_begin=>true).wont_equal @R.new(1, 2, :exclude_end=>true)
|
390
|
-
@R.new(1, 2, :exclude_end=>true).wont_equal @R.new(1, 2, :exclude_begin=>true)
|
391
|
-
end
|
392
|
-
|
393
|
-
it "should consider PGRanges equal with a Range they represent" do
|
394
|
-
@R.new(1, 2).must_be :==, (1..2)
|
395
|
-
@R.new(1, 2, :exclude_end=>true).must_be :==, (1...2)
|
396
|
-
@R.new(1, 3).wont_be :==, (1..2)
|
397
|
-
@R.new(1, 2, :exclude_end=>true).wont_be :==, (1..2)
|
398
|
-
end
|
399
|
-
|
400
|
-
it "should not consider a PGRange equal with a Range if it can't be expressed as a range" do
|
401
|
-
@R.new(nil, nil).wont_be :==, (1..2)
|
402
|
-
end
|
403
|
-
|
404
|
-
it "should not consider a PGRange equal to other objects" do
|
405
|
-
@R.new(nil, nil).wont_equal 1
|
406
|
-
end
|
407
|
-
|
408
|
-
it "should have #=== be true if given an equal PGRange" do
|
409
|
-
@R.new(1, 2).must_be :===, @R.new(1, 2)
|
410
|
-
@R.new(1, 2).wont_be :===, @R.new(1, 3)
|
411
|
-
|
412
|
-
end
|
413
|
-
|
414
|
-
it "should have #=== be true if it would be true for the Range represented by the PGRange" do
|
415
|
-
@R.new(1, 2).must_be :===, 1.5
|
416
|
-
@R.new(1, 2).wont_be :===, 2.5
|
417
|
-
end
|
418
|
-
|
419
|
-
it "should have #=== be false if the PGRange cannot be represented by a Range" do
|
420
|
-
@R.new(nil, nil).wont_be :===, 1.5
|
421
|
-
end
|
422
|
-
|
423
|
-
it "should have #empty? indicate whether the range is empty" do
|
424
|
-
@R.empty.must_be :empty?
|
425
|
-
@R.new(1, 2).wont_be :empty?
|
426
|
-
end
|
427
|
-
|
428
|
-
it "should have #exclude_begin? and #exclude_end indicate whether the beginning or ending of the range is excluded" do
|
429
|
-
@r1.exclude_begin?.must_equal false
|
430
|
-
@r1.exclude_end?.must_equal false
|
431
|
-
@r2.exclude_begin?.must_equal true
|
432
|
-
@r2.exclude_end?.must_equal false
|
433
|
-
@r3.exclude_begin?.must_equal false
|
434
|
-
@r3.exclude_end?.must_equal true
|
435
|
-
end
|
436
|
-
|
437
|
-
it "should have #to_range raise an exception if the PGRange cannot be represented by a Range" do
|
438
|
-
proc{@R.new(nil, 1).to_range}.must_raise(Sequel::Error)
|
439
|
-
proc{@R.new(1, nil).to_range}.must_raise(Sequel::Error)
|
440
|
-
proc{@R.new(0, 1, :exclude_begin=>true).to_range}.must_raise(Sequel::Error)
|
441
|
-
proc{@R.empty.to_range}.must_raise(Sequel::Error)
|
442
|
-
end
|
443
|
-
|
444
|
-
it "should have #to_range return the represented range" do
|
445
|
-
@r1.to_range.must_be :==, (1..2)
|
446
|
-
end
|
447
|
-
|
448
|
-
it "should have #to_range cache the returned value" do
|
449
|
-
@r1.to_range.must_be_same_as(@r1.to_range)
|
450
|
-
end
|
451
|
-
|
452
|
-
it "should have #unbounded_begin? and #unbounded_end indicate whether the beginning or ending of the range is unbounded" do
|
453
|
-
@r1.unbounded_begin?.must_equal false
|
454
|
-
@r1.unbounded_end?.must_equal false
|
455
|
-
@r2.unbounded_begin?.must_equal false
|
456
|
-
@r2.unbounded_end?.must_equal true
|
457
|
-
@r3.unbounded_begin?.must_equal true
|
458
|
-
@r3.unbounded_end?.must_equal false
|
459
|
-
end
|
460
|
-
|
461
|
-
it "should have #valid_ruby_range? return true if the PGRange can be represented as a Range" do
|
462
|
-
@r1.valid_ruby_range?.must_equal true
|
463
|
-
@R.new(1, 2, :exclude_end=>true).valid_ruby_range?.must_equal true
|
464
|
-
end
|
465
|
-
|
466
|
-
it "should have #valid_ruby_range? return false if the PGRange cannot be represented as a Range" do
|
467
|
-
@R.new(nil, 1).valid_ruby_range?.must_equal false
|
468
|
-
@R.new(1, nil).valid_ruby_range?.must_equal false
|
469
|
-
@R.new(0, 1, :exclude_begin=>true).valid_ruby_range?.must_equal false
|
470
|
-
@R.empty.valid_ruby_range?.must_equal false
|
471
|
-
end
|
472
|
-
end
|
473
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
2
|
-
|
3
|
-
Sequel.extension :pg_array, :pg_array_ops, :pg_row, :pg_row_ops
|
4
|
-
|
5
|
-
describe "Sequel::Postgres::PGRowOp" do
|
6
|
-
before do
|
7
|
-
@db = Sequel.connect('mock://postgres', :quote_identifiers=>false)
|
8
|
-
@a = Sequel.pg_row_op(:a)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "#[] should access members of the composite type" do
|
12
|
-
@db.literal(@a[:b]).must_equal "(a).b"
|
13
|
-
end
|
14
|
-
|
15
|
-
it "#[] should be chainable" do
|
16
|
-
@db.literal(@a[:b][:c]).must_equal "((a).b).c"
|
17
|
-
end
|
18
|
-
|
19
|
-
it "#[] should support array access if not given an identifier" do
|
20
|
-
@db.literal(@a[:b][1]).must_equal "(a).b[1]"
|
21
|
-
end
|
22
|
-
|
23
|
-
it "#[] should be chainable with array access" do
|
24
|
-
@db.literal(@a[1][:b]).must_equal "(a[1]).b"
|
25
|
-
end
|
26
|
-
|
27
|
-
it "#splat should return a splatted argument inside parentheses" do
|
28
|
-
@db.literal(@a.splat).must_equal "(a.*)"
|
29
|
-
end
|
30
|
-
|
31
|
-
it "#splat(type) should return a splatted argument cast to given type" do
|
32
|
-
@db.literal(@a.splat(:b)).must_equal "(a.*)::b"
|
33
|
-
end
|
34
|
-
|
35
|
-
it "#splat should not work on an already accessed composite type" do
|
36
|
-
proc{@a[:a].splat(:b)}.must_raise(Sequel::Error)
|
37
|
-
end
|
38
|
-
|
39
|
-
it "#* should reference all members of the composite type as separate columns if given no arguments" do
|
40
|
-
@db.literal(@a.*).must_equal "(a).*"
|
41
|
-
@db.literal(@a[:b].*).must_equal "((a).b).*"
|
42
|
-
end
|
43
|
-
|
44
|
-
it "#* should use a multiplication operation if any arguments are given" do
|
45
|
-
@db.literal(@a.*(1)).must_equal "(a * 1)"
|
46
|
-
@db.literal(@a[:b].*(1)).must_equal "((a).b * 1)"
|
47
|
-
end
|
48
|
-
|
49
|
-
it "#pg_row should be callable on literal strings" do
|
50
|
-
@db.literal(Sequel.lit('a').pg_row[:b]).must_equal "(a).b"
|
51
|
-
end
|
52
|
-
|
53
|
-
it "#pg_row should be callable on Sequel expressions" do
|
54
|
-
@db.literal(Sequel.function(:a).pg_row[:b]).must_equal "(a()).b"
|
55
|
-
end
|
56
|
-
|
57
|
-
it "Sequel.pg_row should work as well if the pg_row extension is loaded" do
|
58
|
-
@db.literal(Sequel.pg_row(Sequel.function(:a))[:b]).must_equal "(a()).b"
|
59
|
-
end
|
60
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
|
2
|
-
|
3
|
-
describe "Sequel::Plugins::PgRow" do
|
4
|
-
before(:all) do
|
5
|
-
@db = Sequel.connect('mock://postgres', :quote_identifiers=>false)
|
6
|
-
@db.extension(:pg_array)
|
7
|
-
@c = Class.new(Sequel::Model(@db[:address]))
|
8
|
-
@c.columns :street, :city
|
9
|
-
@c.db_schema[:street][:type] = :string
|
10
|
-
@c.db_schema[:city][:type] = :string
|
11
|
-
@db.fetch = [[{:oid=>1098, :typrelid=>2, :typarray=>3}], [{:attname=>'street', :atttypid=>1324}, {:attname=>'city', :atttypid=>1324}]]
|
12
|
-
@c.plugin :pg_row
|
13
|
-
|
14
|
-
@c2 = Class.new(Sequel::Model(@db[:company]))
|
15
|
-
@c2.columns :address
|
16
|
-
@c2.db_schema[:address].merge!(:type=>:pg_row_address)
|
17
|
-
end
|
18
|
-
after do
|
19
|
-
@c.dataset.opts[:from] = [:address]
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should have schema_type_class include Sequel::Model" do
|
23
|
-
@c2.new.send(:schema_type_class, :address).must_equal @c
|
24
|
-
@db.conversion_procs[1098].call('(123 Foo St,Bar City)').must_equal @c.load(:street=>'123 Foo St', :city=>'Bar City')
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should set up a parser for the type that creates a model class" do
|
28
|
-
@db.conversion_procs[1098].call('(123 Foo St,Bar City)').must_equal @c.load(:street=>'123 Foo St', :city=>'Bar City')
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should set up type casting for the type" do
|
32
|
-
@c2.new(:address=>{'street'=>123, 'city'=>:Bar}).address.must_equal @c.load(:street=>'123', :city=>'Bar')
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should return model instances as is when typecasting to rows" do
|
36
|
-
o = @c.load(:street=>'123', :city=>'Bar')
|
37
|
-
@c2.new(:address=>o).address.must_be_same_as(o)
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should handle literalizing model instances" do
|
41
|
-
@db.literal(@c.load(:street=>'123 Foo St', :city=>'Bar City')).must_equal "ROW('123 Foo St', 'Bar City')::address"
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should handle literalizing model instances when model table is aliased" do
|
45
|
-
@c.dataset.opts[:from] = [Sequel.as(:address, :a)]
|
46
|
-
@db.literal(@c.load(:street=>'123 Foo St', :city=>'Bar City')).must_equal "ROW('123 Foo St', 'Bar City')::address"
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should handle model instances in bound variables" do
|
50
|
-
@db.bound_variable_arg(1, nil).must_equal 1
|
51
|
-
@db.bound_variable_arg(@c.load(:street=>'123 Foo St', :city=>'Bar City'), nil).must_equal '("123 Foo St","Bar City")'
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should handle model instances in arrays of bound variables" do
|
55
|
-
@db.bound_variable_arg(1, nil).must_equal 1
|
56
|
-
@db.bound_variable_arg(Sequel.pg_array([@c.load(:street=>'123 Foo St', :city=>'Bar City')]), nil).must_equal '{"(\\"123 Foo St\\",\\"Bar City\\")"}'
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should allow inserting just this model value" do
|
60
|
-
@c2.dataset.insert_sql(@c.load(:street=>'123', :city=>'Bar')).must_equal "INSERT INTO company VALUES (ROW('123', 'Bar')::address)"
|
61
|
-
end
|
62
|
-
end
|