sequel 5.29.0 → 5.30.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 +4 -4
- data/CHANGELOG +8 -1922
- data/doc/release_notes/5.30.0.txt +20 -0
- data/lib/sequel/adapters/shared/sqlite.rb +7 -1
- data/lib/sequel/database/transactions.rb +5 -9
- data/lib/sequel/version.rb +1 -1
- metadata +4 -368
- data/Rakefile +0 -151
- 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.37.0.txt +0 -50
- data/doc/release_notes/4.38.0.txt +0 -67
- data/doc/release_notes/4.39.0.txt +0 -127
- data/doc/release_notes/4.4.0.txt +0 -92
- data/doc/release_notes/4.40.0.txt +0 -179
- data/doc/release_notes/4.41.0.txt +0 -77
- data/doc/release_notes/4.42.0.txt +0 -221
- data/doc/release_notes/4.43.0.txt +0 -87
- data/doc/release_notes/4.44.0.txt +0 -125
- data/doc/release_notes/4.45.0.txt +0 -370
- data/doc/release_notes/4.46.0.txt +0 -404
- data/doc/release_notes/4.47.0.txt +0 -56
- data/doc/release_notes/4.48.0.txt +0 -293
- data/doc/release_notes/4.49.0.txt +0 -222
- 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/spec/adapter_spec.rb +0 -4
- data/spec/adapters/db2_spec.rb +0 -170
- data/spec/adapters/mssql_spec.rb +0 -828
- data/spec/adapters/mysql_spec.rb +0 -1060
- data/spec/adapters/oracle_spec.rb +0 -371
- data/spec/adapters/postgres_spec.rb +0 -4476
- data/spec/adapters/spec_helper.rb +0 -44
- data/spec/adapters/sqlanywhere_spec.rb +0 -97
- data/spec/adapters/sqlite_spec.rb +0 -652
- data/spec/bin_spec.rb +0 -278
- data/spec/core/connection_pool_spec.rb +0 -1250
- data/spec/core/database_spec.rb +0 -2915
- data/spec/core/dataset_spec.rb +0 -5544
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1498
- data/spec/core/mock_adapter_spec.rb +0 -722
- data/spec/core/object_graph_spec.rb +0 -336
- data/spec/core/placeholder_literalizer_spec.rb +0 -166
- data/spec/core/schema_generator_spec.rb +0 -214
- data/spec/core/schema_spec.rb +0 -1844
- data/spec/core/spec_helper.rb +0 -24
- data/spec/core/version_spec.rb +0 -14
- data/spec/core_extensions_spec.rb +0 -763
- data/spec/core_model_spec.rb +0 -2
- data/spec/core_spec.rb +0 -1
- data/spec/deprecation_helper.rb +0 -30
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -99
- data/spec/extensions/after_initialize_spec.rb +0 -28
- data/spec/extensions/any_not_empty_spec.rb +0 -23
- data/spec/extensions/arbitrary_servers_spec.rb +0 -109
- data/spec/extensions/association_dependencies_spec.rb +0 -125
- data/spec/extensions/association_multi_add_remove_spec.rb +0 -1041
- data/spec/extensions/association_pks_spec.rb +0 -423
- data/spec/extensions/association_proxies_spec.rb +0 -100
- data/spec/extensions/auto_literal_strings_spec.rb +0 -205
- data/spec/extensions/auto_validations_spec.rb +0 -229
- data/spec/extensions/blacklist_security_spec.rb +0 -95
- 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 -273
- data/spec/extensions/caller_logging_spec.rb +0 -52
- data/spec/extensions/class_table_inheritance_spec.rb +0 -750
- data/spec/extensions/column_conflicts_spec.rb +0 -75
- data/spec/extensions/column_select_spec.rb +0 -129
- data/spec/extensions/columns_introspection_spec.rb +0 -90
- data/spec/extensions/columns_updated_spec.rb +0 -35
- data/spec/extensions/composition_spec.rb +0 -248
- data/spec/extensions/connection_expiration_spec.rb +0 -151
- data/spec/extensions/connection_validator_spec.rb +0 -144
- data/spec/extensions/constant_sql_override_spec.rb +0 -24
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
- data/spec/extensions/constraint_validations_spec.rb +0 -439
- data/spec/extensions/core_refinements_spec.rb +0 -528
- data/spec/extensions/csv_serializer_spec.rb +0 -183
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -365
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -181
- data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
- data/spec/extensions/def_dataset_method_spec.rb +0 -100
- data/spec/extensions/defaults_setter_spec.rb +0 -150
- data/spec/extensions/delay_add_association_spec.rb +0 -73
- data/spec/extensions/dirty_spec.rb +0 -222
- data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
- data/spec/extensions/eager_each_spec.rb +0 -62
- data/spec/extensions/eager_graph_eager_spec.rb +0 -100
- data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
- data/spec/extensions/empty_failure_backtraces_spec.rb +0 -60
- data/spec/extensions/error_splitter_spec.rb +0 -18
- data/spec/extensions/error_sql_spec.rb +0 -20
- data/spec/extensions/escaped_like_spec.rb +0 -40
- data/spec/extensions/eval_inspect_spec.rb +0 -81
- data/spec/extensions/exclude_or_null_spec.rb +0 -15
- data/spec/extensions/finder_spec.rb +0 -260
- data/spec/extensions/force_encoding_spec.rb +0 -126
- data/spec/extensions/freeze_datasets_spec.rb +0 -31
- data/spec/extensions/graph_each_spec.rb +0 -113
- data/spec/extensions/hook_class_methods_spec.rb +0 -402
- data/spec/extensions/identifier_mangling_spec.rb +0 -201
- data/spec/extensions/implicit_subquery_spec.rb +0 -58
- data/spec/extensions/index_caching_spec.rb +0 -66
- data/spec/extensions/inflector_spec.rb +0 -183
- data/spec/extensions/input_transformer_spec.rb +0 -69
- data/spec/extensions/insert_conflict_spec.rb +0 -103
- data/spec/extensions/insert_returning_select_spec.rb +0 -72
- data/spec/extensions/instance_filters_spec.rb +0 -79
- data/spec/extensions/instance_hooks_spec.rb +0 -246
- data/spec/extensions/integer64_spec.rb +0 -22
- data/spec/extensions/inverted_subsets_spec.rb +0 -33
- data/spec/extensions/json_serializer_spec.rb +0 -346
- data/spec/extensions/lazy_attributes_spec.rb +0 -183
- data/spec/extensions/list_spec.rb +0 -291
- data/spec/extensions/looser_typecasting_spec.rb +0 -43
- data/spec/extensions/many_through_many_spec.rb +0 -2177
- data/spec/extensions/migration_spec.rb +0 -864
- data/spec/extensions/modification_detection_spec.rb +0 -93
- data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
- data/spec/extensions/named_timezones_spec.rb +0 -218
- data/spec/extensions/nested_attributes_spec.rb +0 -815
- data/spec/extensions/null_dataset_spec.rb +0 -85
- data/spec/extensions/optimistic_locking_spec.rb +0 -127
- data/spec/extensions/pagination_spec.rb +0 -116
- data/spec/extensions/pg_array_associations_spec.rb +0 -802
- data/spec/extensions/pg_array_ops_spec.rb +0 -144
- data/spec/extensions/pg_array_spec.rb +0 -398
- data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -209
- data/spec/extensions/pg_enum_spec.rb +0 -118
- data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
- data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
- data/spec/extensions/pg_hstore_spec.rb +0 -219
- data/spec/extensions/pg_inet_ops_spec.rb +0 -102
- data/spec/extensions/pg_inet_spec.rb +0 -72
- data/spec/extensions/pg_interval_spec.rb +0 -103
- data/spec/extensions/pg_json_ops_spec.rb +0 -356
- data/spec/extensions/pg_json_spec.rb +0 -451
- data/spec/extensions/pg_loose_count_spec.rb +0 -23
- data/spec/extensions/pg_range_ops_spec.rb +0 -60
- data/spec/extensions/pg_range_spec.rb +0 -600
- data/spec/extensions/pg_row_ops_spec.rb +0 -61
- data/spec/extensions/pg_row_plugin_spec.rb +0 -60
- data/spec/extensions/pg_row_spec.rb +0 -363
- data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
- data/spec/extensions/pg_timestamptz_spec.rb +0 -17
- data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
- data/spec/extensions/prepared_statements_spec.rb +0 -177
- data/spec/extensions/pretty_table_spec.rb +0 -123
- data/spec/extensions/query_spec.rb +0 -94
- data/spec/extensions/rcte_tree_spec.rb +0 -387
- data/spec/extensions/round_timestamps_spec.rb +0 -39
- data/spec/extensions/s_spec.rb +0 -60
- data/spec/extensions/schema_caching_spec.rb +0 -64
- data/spec/extensions/schema_dumper_spec.rb +0 -870
- data/spec/extensions/select_remove_spec.rb +0 -38
- data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
- data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
- data/spec/extensions/serialization_spec.rb +0 -365
- data/spec/extensions/server_block_spec.rb +0 -135
- data/spec/extensions/server_logging_spec.rb +0 -45
- data/spec/extensions/sharding_spec.rb +0 -197
- data/spec/extensions/shared_caching_spec.rb +0 -151
- data/spec/extensions/single_table_inheritance_spec.rb +0 -347
- data/spec/extensions/singular_table_names_spec.rb +0 -22
- data/spec/extensions/skip_create_refresh_spec.rb +0 -18
- data/spec/extensions/spec_helper.rb +0 -70
- data/spec/extensions/split_array_nil_spec.rb +0 -24
- data/spec/extensions/split_values_spec.rb +0 -57
- data/spec/extensions/sql_comments_spec.rb +0 -33
- data/spec/extensions/sql_expr_spec.rb +0 -59
- data/spec/extensions/static_cache_cache_spec.rb +0 -35
- data/spec/extensions/static_cache_spec.rb +0 -471
- data/spec/extensions/string_agg_spec.rb +0 -90
- 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 -79
- data/spec/extensions/subset_conditions_spec.rb +0 -38
- data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
- data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
- data/spec/extensions/synchronize_sql_spec.rb +0 -124
- data/spec/extensions/table_select_spec.rb +0 -83
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -402
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- data/spec/extensions/throw_failures_spec.rb +0 -74
- data/spec/extensions/timestamps_spec.rb +0 -209
- data/spec/extensions/to_dot_spec.rb +0 -153
- data/spec/extensions/touch_spec.rb +0 -226
- data/spec/extensions/tree_spec.rb +0 -334
- data/spec/extensions/typecast_on_load_spec.rb +0 -86
- data/spec/extensions/unlimited_update_spec.rb +0 -21
- data/spec/extensions/update_or_create_spec.rb +0 -83
- data/spec/extensions/update_primary_key_spec.rb +0 -105
- data/spec/extensions/update_refresh_spec.rb +0 -59
- data/spec/extensions/uuid_spec.rb +0 -101
- data/spec/extensions/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1040
- data/spec/extensions/validation_contexts_spec.rb +0 -31
- data/spec/extensions/validation_helpers_spec.rb +0 -525
- data/spec/extensions/whitelist_security_spec.rb +0 -157
- data/spec/extensions/xml_serializer_spec.rb +0 -213
- 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 -59
- data/spec/integration/associations_test.rb +0 -2597
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -2037
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -262
- data/spec/integration/model_test.rb +0 -203
- data/spec/integration/plugin_test.rb +0 -2423
- data/spec/integration/prepared_statement_test.rb +0 -405
- data/spec/integration/schema_test.rb +0 -903
- data/spec/integration/spec_helper.rb +0 -71
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -603
- data/spec/integration/type_test.rb +0 -127
- data/spec/model/association_reflection_spec.rb +0 -803
- data/spec/model/associations_spec.rb +0 -4738
- data/spec/model/base_spec.rb +0 -875
- data/spec/model/class_dataset_methods_spec.rb +0 -146
- data/spec/model/dataset_methods_spec.rb +0 -198
- data/spec/model/eager_loading_spec.rb +0 -2377
- data/spec/model/hooks_spec.rb +0 -370
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -956
- data/spec/model/plugins_spec.rb +0 -429
- data/spec/model/record_spec.rb +0 -2118
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -220
- 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/sequel_warning.rb +0 -5
- data/spec/spec_config.rb +0 -12
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
describe "string_agg extension" do
|
|
5
|
-
dbf = lambda do |db_type|
|
|
6
|
-
db = Sequel.connect("mock://#{db_type}")
|
|
7
|
-
db.extension :string_agg
|
|
8
|
-
db
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
before(:all) do
|
|
12
|
-
Sequel.extension :string_agg
|
|
13
|
-
end
|
|
14
|
-
before do
|
|
15
|
-
@sa1 = Sequel.string_agg(:c)
|
|
16
|
-
@sa2 = Sequel.string_agg(:c, '-')
|
|
17
|
-
@sa3 = Sequel.string_agg(:c, '-').order(:o)
|
|
18
|
-
@sa4 = Sequel.string_agg(:c).order(:o).distinct
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "should use existing method" do
|
|
22
|
-
db = Sequel.mock
|
|
23
|
-
db.extend_datasets do
|
|
24
|
-
def string_agg_sql_append(sql, sa)
|
|
25
|
-
sql << "sa(#{sa.expr})"
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
db.extension :string_agg
|
|
29
|
-
db.literal(Sequel.string_agg(:c)).must_equal "sa(c)"
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it "should correctly literalize on Postgres" do
|
|
33
|
-
ds = dbf.call(:postgres).dataset.with_quote_identifiers(false)
|
|
34
|
-
ds.literal(@sa1).must_equal "string_agg(c, ',')"
|
|
35
|
-
ds.literal(@sa2).must_equal "string_agg(c, '-')"
|
|
36
|
-
ds.literal(@sa3).must_equal "string_agg(c, '-' ORDER BY o)"
|
|
37
|
-
ds.literal(@sa4).must_equal "string_agg(DISTINCT c, ',' ORDER BY o)"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it "should correctly literalize on SQLAnywhere" do
|
|
41
|
-
ds = dbf.call(:sqlanywhere).dataset.with_quote_identifiers(false).with_extend{def input_identifier(v) v.to_s end}
|
|
42
|
-
ds.literal(@sa1).must_equal "list(c, ',')"
|
|
43
|
-
ds.literal(@sa2).must_equal "list(c, '-')"
|
|
44
|
-
ds.literal(@sa3).must_equal "list(c, '-' ORDER BY o)"
|
|
45
|
-
ds.literal(@sa4).must_equal "list(DISTINCT c, ',' ORDER BY o)"
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
it "should correctly literalize on MySQL, H2, HSQLDB" do
|
|
49
|
-
[:mysql, :h2, :hsqldb].each do |type|
|
|
50
|
-
db = dbf.call(type)
|
|
51
|
-
db.define_singleton_method(:database_type){type}
|
|
52
|
-
ds = db.dataset.with_quote_identifiers(false).with_extend{def input_identifier(v) v.to_s end}
|
|
53
|
-
ds.literal(@sa1).upcase.must_equal "GROUP_CONCAT(C SEPARATOR ',')"
|
|
54
|
-
ds.literal(@sa2).upcase.must_equal "GROUP_CONCAT(C SEPARATOR '-')"
|
|
55
|
-
ds.literal(@sa3).upcase.must_equal "GROUP_CONCAT(C ORDER BY O SEPARATOR '-')"
|
|
56
|
-
ds.literal(@sa4).upcase.must_equal "GROUP_CONCAT(DISTINCT C ORDER BY O SEPARATOR ',')"
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
it "should correctly literalize on Oracle and DB2" do
|
|
61
|
-
[:oracle, :db2].each do |type|
|
|
62
|
-
ds = dbf.call(type).dataset.with_quote_identifiers(false).with_extend{def input_identifier(v) v.to_s end}
|
|
63
|
-
ds.literal(@sa1).must_equal "listagg(c, ',') WITHIN GROUP (ORDER BY 1)"
|
|
64
|
-
ds.literal(@sa2).must_equal "listagg(c, '-') WITHIN GROUP (ORDER BY 1)"
|
|
65
|
-
ds.literal(@sa3).must_equal "listagg(c, '-') WITHIN GROUP (ORDER BY o)"
|
|
66
|
-
proc{ds.literal(@sa4)}.must_raise Sequel::Error
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
it "should raise Sequel::Error on unsupported database" do
|
|
71
|
-
proc{dbf.call(:foo).literal(@sa1)}.must_raise Sequel::Error
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it "should handle order without arguments" do
|
|
75
|
-
db = dbf.call(:postgres)
|
|
76
|
-
db.dataset.with_quote_identifiers(false).literal(@sa1.order).must_equal "string_agg(c, ',')"
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it "should handle operations on object" do
|
|
80
|
-
ds = dbf.call(:postgres).dataset.with_quote_identifiers(false)
|
|
81
|
-
ds.literal(@sa1 + 'b').must_equal "(string_agg(c, ',') || 'b')"
|
|
82
|
-
ds.literal(@sa1.like('b')).must_equal "(string_agg(c, ',') LIKE 'b')"
|
|
83
|
-
ds.literal(@sa1 < 'b').must_equal "(string_agg(c, ',') < 'b')"
|
|
84
|
-
ds.literal(@sa1.as(:b)).must_equal "string_agg(c, ',') AS b"
|
|
85
|
-
ds.literal(@sa1.cast(:b)).must_equal "CAST(string_agg(c, ',') AS b)"
|
|
86
|
-
ds.literal(@sa1.desc).must_equal "string_agg(c, ',') DESC"
|
|
87
|
-
ds.literal(@sa1 =~ /a/).must_equal "(string_agg(c, ',') ~ 'a')"
|
|
88
|
-
ds.literal(@sa1.sql_subscript(1)).must_equal "(string_agg(c, ','))[1]"
|
|
89
|
-
end
|
|
90
|
-
end
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
Sequel.extension :string_date_time
|
|
4
|
-
|
|
5
|
-
describe "String#to_time" do
|
|
6
|
-
it "should convert the string into a Time object" do
|
|
7
|
-
"2007-07-11".to_time.must_equal Time.parse("2007-07-11")
|
|
8
|
-
"06:30".to_time.must_equal Time.parse("06:30")
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it "should raise InvalidValue for an invalid time" do
|
|
12
|
-
proc {'0000-00-00'.to_time}.must_raise(Sequel::InvalidValue)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
describe "String#to_date" do
|
|
17
|
-
after do
|
|
18
|
-
Sequel.convert_two_digit_years = true
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "should convert the string into a Date object" do
|
|
22
|
-
"2007-07-11".to_date.must_equal Date.parse("2007-07-11")
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "should convert 2 digit years by default" do
|
|
26
|
-
"July 11, 07".to_date.must_equal Date.parse("2007-07-11")
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it "should not convert 2 digit years if set not to" do
|
|
30
|
-
Sequel.convert_two_digit_years = false
|
|
31
|
-
"July 11, 07".to_date.must_equal Date.parse("0007-07-11")
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "should raise InvalidValue for an invalid date" do
|
|
35
|
-
proc {'0000-00-00'.to_date}.must_raise(Sequel::InvalidValue)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
describe "String#to_datetime" do
|
|
40
|
-
after do
|
|
41
|
-
Sequel.convert_two_digit_years = true
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it "should convert the string into a DateTime object" do
|
|
45
|
-
"2007-07-11 10:11:12a".to_datetime.must_equal DateTime.parse("2007-07-11 10:11:12a")
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
it "should convert 2 digit years by default" do
|
|
49
|
-
"July 11, 07 10:11:12a".to_datetime.must_equal DateTime.parse("2007-07-11 10:11:12a")
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
it "should not convert 2 digit years if set not to" do
|
|
53
|
-
Sequel.convert_two_digit_years = false
|
|
54
|
-
"July 11, 07 10:11:12a".to_datetime.must_equal DateTime.parse("0007-07-11 10:11:12a")
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "should raise InvalidValue for an invalid date" do
|
|
58
|
-
proc {'0000-00-00'.to_datetime}.must_raise(Sequel::InvalidValue)
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
describe "String#to_sequel_time" do
|
|
63
|
-
after do
|
|
64
|
-
Sequel.datetime_class = Time
|
|
65
|
-
Sequel.convert_two_digit_years = true
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it "should convert the string into a Time object by default" do
|
|
69
|
-
"2007-07-11 10:11:12a".to_sequel_time.class.must_equal Time
|
|
70
|
-
"2007-07-11 10:11:12a".to_sequel_time.must_equal Time.parse("2007-07-11 10:11:12a")
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it "should convert the string into a DateTime object if that is set" do
|
|
74
|
-
Sequel.datetime_class = DateTime
|
|
75
|
-
"2007-07-11 10:11:12a".to_sequel_time.class.must_equal DateTime
|
|
76
|
-
"2007-07-11 10:11:12a".to_sequel_time.must_equal DateTime.parse("2007-07-11 10:11:12a")
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it "should convert 2 digit years by default if using DateTime class" do
|
|
80
|
-
Sequel.datetime_class = DateTime
|
|
81
|
-
"July 11, 07 10:11:12a".to_sequel_time.must_equal DateTime.parse("2007-07-11 10:11:12a")
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
it "should not convert 2 digit years if set not to when using DateTime class" do
|
|
85
|
-
Sequel.datetime_class = DateTime
|
|
86
|
-
Sequel.convert_two_digit_years = false
|
|
87
|
-
"July 11, 07 10:11:12a".to_sequel_time.must_equal DateTime.parse("0007-07-11 10:11:12a")
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
it "should raise InvalidValue for an invalid time" do
|
|
91
|
-
proc {'0000-00-00'.to_sequel_time}.must_raise(Sequel::InvalidValue)
|
|
92
|
-
Sequel.datetime_class = DateTime
|
|
93
|
-
proc {'0000-00-00'.to_sequel_time}.must_raise(Sequel::InvalidValue)
|
|
94
|
-
end
|
|
95
|
-
end
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "Sequel::Plugins::StringStripper" do
|
|
4
|
-
before do
|
|
5
|
-
@db = Sequel.mock
|
|
6
|
-
@c = Class.new(Sequel::Model(@db[:test]))
|
|
7
|
-
@c.columns :name, :b
|
|
8
|
-
@c.db_schema[:b][:type] = :blob
|
|
9
|
-
@c.plugin :string_stripper
|
|
10
|
-
@o = @c.new
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "should strip all input strings" do
|
|
14
|
-
@o.name = ' name '
|
|
15
|
-
@o.name.must_equal 'name'
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "should not affect other types" do
|
|
19
|
-
@o.name = 1
|
|
20
|
-
@o.name.must_equal 1
|
|
21
|
-
@o.name = Date.today
|
|
22
|
-
@o.name.must_equal Date.today
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "should not strip strings for blob arguments" do
|
|
26
|
-
v = Sequel.blob(' name ')
|
|
27
|
-
@o.name = v
|
|
28
|
-
@o.name.must_be_same_as(v)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it "should not strip strings for blob columns" do
|
|
32
|
-
@o.b = ' name '
|
|
33
|
-
@o.b.must_be_kind_of(Sequel::SQL::Blob)
|
|
34
|
-
@o.b.must_equal Sequel.blob(' name ')
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it "should allow skipping of columns using Model.skip_string_stripping" do
|
|
38
|
-
@c.skip_string_stripping?(:name).must_equal false
|
|
39
|
-
@c.skip_string_stripping :name
|
|
40
|
-
@c.skip_string_stripping?(:name).must_equal true
|
|
41
|
-
v = ' name '
|
|
42
|
-
@o.name = v
|
|
43
|
-
@o.name.must_be_same_as(v)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "should work correctly in subclasses" do
|
|
47
|
-
o = Class.new(@c).new
|
|
48
|
-
o.name = ' name '
|
|
49
|
-
o.name.must_equal 'name'
|
|
50
|
-
o.b = ' name '
|
|
51
|
-
o.b.must_be_kind_of(Sequel::SQL::Blob)
|
|
52
|
-
o.b.must_equal Sequel.blob(' name ')
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
it "should work correctly for dataset changes" do
|
|
56
|
-
c = Class.new(Sequel::Model(@db[:test]))
|
|
57
|
-
c.plugin :string_stripper
|
|
58
|
-
def @db.supports_schema_parsing?() true end
|
|
59
|
-
def @db.schema(*) [[:name, {}], [:b, {:type=>:blob}]] end
|
|
60
|
-
c.set_dataset(@db[:test2])
|
|
61
|
-
o = c.new
|
|
62
|
-
o.name = ' name '
|
|
63
|
-
o.name.must_equal 'name'
|
|
64
|
-
o.b = ' name '
|
|
65
|
-
o.b.must_be_kind_of(Sequel::SQL::Blob)
|
|
66
|
-
o.b.must_equal Sequel.blob(' name ')
|
|
67
|
-
end
|
|
68
|
-
end
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe Sequel::Model, "Subclasses plugin" do
|
|
4
|
-
before do
|
|
5
|
-
@c = Class.new(Sequel::Model)
|
|
6
|
-
@c.plugin :subclasses
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it "#subclasses should record direct subclasses of the given model" do
|
|
10
|
-
@c.subclasses.must_equal []
|
|
11
|
-
|
|
12
|
-
sc1 = Class.new(@c)
|
|
13
|
-
@c.subclasses.must_equal [sc1]
|
|
14
|
-
sc1.subclasses.must_equal []
|
|
15
|
-
|
|
16
|
-
sc2 = Class.new(@c)
|
|
17
|
-
@c.subclasses.must_equal [sc1, sc2]
|
|
18
|
-
sc1.subclasses.must_equal []
|
|
19
|
-
sc2.subclasses.must_equal []
|
|
20
|
-
|
|
21
|
-
ssc1 = Class.new(sc1)
|
|
22
|
-
@c.subclasses.must_equal [sc1, sc2]
|
|
23
|
-
sc1.subclasses.must_equal [ssc1]
|
|
24
|
-
sc2.subclasses.must_equal []
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "#descendents should record all descendent subclasses of the given model" do
|
|
28
|
-
@c.descendents.must_equal []
|
|
29
|
-
|
|
30
|
-
sc1 = Class.new(@c)
|
|
31
|
-
@c.descendents.must_equal [sc1]
|
|
32
|
-
sc1.descendents.must_equal []
|
|
33
|
-
|
|
34
|
-
sc2 = Class.new(@c)
|
|
35
|
-
@c.descendents.must_equal [sc1, sc2]
|
|
36
|
-
sc1.descendents.must_equal []
|
|
37
|
-
sc2.descendents.must_equal []
|
|
38
|
-
|
|
39
|
-
ssc1 = Class.new(sc1)
|
|
40
|
-
@c.descendents.must_equal [sc1, ssc1, sc2]
|
|
41
|
-
sc1.descendents.must_equal [ssc1]
|
|
42
|
-
sc2.descendents.must_equal []
|
|
43
|
-
ssc1.descendents.must_equal []
|
|
44
|
-
|
|
45
|
-
sssc1 = Class.new(ssc1)
|
|
46
|
-
@c.descendents.must_equal [sc1, ssc1, sssc1, sc2]
|
|
47
|
-
sc1.descendents.must_equal [ssc1, sssc1]
|
|
48
|
-
sc2.descendents.must_equal []
|
|
49
|
-
ssc1.descendents.must_equal [sssc1]
|
|
50
|
-
sssc1.descendents.must_equal []
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "#freeze_descendents should finalize the associations for all descendents" do
|
|
54
|
-
sc1 = Class.new(@c)
|
|
55
|
-
sc1.set_dataset :bars
|
|
56
|
-
sc1.set_primary_key :foo
|
|
57
|
-
sc2 = Class.new(@c)
|
|
58
|
-
sc2.set_dataset :bazs
|
|
59
|
-
sc2.many_to_one :bar, :class=>sc1
|
|
60
|
-
@c.freeze_descendents
|
|
61
|
-
sc1.frozen?.must_equal true
|
|
62
|
-
sc2.frozen?.must_equal true
|
|
63
|
-
sc2.association_reflection(:bar)[:primary_key].must_equal :foo
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
it "plugin block should be called with each subclass created" do
|
|
67
|
-
c = Class.new(Sequel::Model)
|
|
68
|
-
a = []
|
|
69
|
-
c.plugin(:subclasses){|sc| a << sc}
|
|
70
|
-
sc1 = Class.new(c)
|
|
71
|
-
a.must_equal [sc1]
|
|
72
|
-
sc2 = Class.new(c)
|
|
73
|
-
a.must_equal [sc1, sc2]
|
|
74
|
-
sc3 = Class.new(sc1)
|
|
75
|
-
a.must_equal [sc1, sc2, sc3]
|
|
76
|
-
sc4 = Class.new(sc3)
|
|
77
|
-
a.must_equal [sc1, sc2, sc3, sc4]
|
|
78
|
-
end
|
|
79
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "subset_conditions plugin" do
|
|
4
|
-
before do
|
|
5
|
-
@c = Class.new(Sequel::Model(:a))
|
|
6
|
-
@c.plugin :subset_conditions
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it "should provide *_conditions method return the arguments passed" do
|
|
10
|
-
@c.dataset_module{subset(:published, :published => true)}
|
|
11
|
-
@c.where(@c.published_conditions).sql.must_equal @c.published.sql
|
|
12
|
-
|
|
13
|
-
@c.dataset_module{where(:active, :active)}
|
|
14
|
-
@c.where(@c.active_conditions).sql.must_equal @c.active.sql
|
|
15
|
-
|
|
16
|
-
@c.dataset_module{subset(:active_published, Sequel.&(:active, :published => true))}
|
|
17
|
-
@c.where(@c.active_published_conditions).sql.must_equal @c.active_published.sql
|
|
18
|
-
@c.where(Sequel.&(@c.active_conditions, @c.published_conditions)).sql.must_equal @c.active_published.sql
|
|
19
|
-
@c.where(Sequel.|(@c.active_conditions, @c.published_conditions)).sql.must_equal "SELECT * FROM a WHERE (active OR (published IS TRUE))"
|
|
20
|
-
@c.where(Sequel.|(@c.active_published_conditions, :foo)).sql.must_equal "SELECT * FROM a WHERE ((active AND (published IS TRUE)) OR foo)"
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "should work with blocks" do
|
|
24
|
-
p1 = proc{{:published=>true}}
|
|
25
|
-
@c.dataset_module{subset(:published, &p1)}
|
|
26
|
-
@c.where(@c.published_conditions).sql.must_equal @c.published.sql
|
|
27
|
-
|
|
28
|
-
p2 = :active
|
|
29
|
-
@c.dataset_module{subset(:active, p2)}
|
|
30
|
-
@c.where(@c.active_conditions).sql.must_equal @c.active.sql
|
|
31
|
-
|
|
32
|
-
@c.dataset_module{subset(:active_published, p2, &p1)}
|
|
33
|
-
@c.where(@c.active_published_conditions).sql.must_equal @c.active_published.sql
|
|
34
|
-
@c.where(Sequel.&(@c.active_conditions, @c.published_conditions)).sql.must_equal @c.active_published.sql
|
|
35
|
-
@c.where(Sequel.|(@c.active_conditions, @c.published_conditions)).sql.must_equal "SELECT * FROM a WHERE (active OR (published IS TRUE))"
|
|
36
|
-
@c.where(Sequel.|(@c.active_published_conditions, :foo)).sql.must_equal "SELECT * FROM a WHERE ((active AND (published IS TRUE)) OR foo)"
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
if (RUBY_VERSION >= '2.0.0' && RUBY_ENGINE == 'ruby') || (RUBY_VERSION >= '2.3.0' && RUBY_ENGINE == 'jruby')
|
|
4
|
-
Sequel.extension :symbol_aref_refinement
|
|
5
|
-
using Sequel::SymbolAref
|
|
6
|
-
|
|
7
|
-
describe "symbol_aref_refinement extension" do
|
|
8
|
-
before do
|
|
9
|
-
@db = Sequel.mock
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it "Symbol#[] should create qualified identifier if given a symbol" do
|
|
13
|
-
@db.literal(:x[:y]).must_equal "x.y"
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it "Symbol#[] should create qualified identifier if given an identifier" do
|
|
17
|
-
@db.literal(:x[Sequel[:y]]).must_equal "x.y"
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it "Symbol#[] should create qualified identifier if given a qualified identifier" do
|
|
21
|
-
@db.literal(:x[:y[:z]]).must_equal "x.y.z"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "should not affect other arguments to Symbol#[]" do
|
|
25
|
-
:x[0].must_equal "x"
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
require_relative "spec_helper"
|
|
2
|
-
|
|
3
|
-
if (RUBY_VERSION >= '2.0.0' && RUBY_ENGINE == 'ruby') || (RUBY_VERSION >= '2.3.0' && RUBY_ENGINE == 'jruby')
|
|
4
|
-
Sequel.extension :symbol_as_refinement
|
|
5
|
-
using Sequel::SymbolAs
|
|
6
|
-
|
|
7
|
-
describe "symbol_as_refinement extension" do
|
|
8
|
-
before do
|
|
9
|
-
@db = Sequel.mock
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it "Symbol#as should create aliased expression" do
|
|
13
|
-
@db.literal(:x.as(:y)).must_equal "x AS y"
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it "Symbol#as should create aliased expression with columns" do
|
|
17
|
-
@db.literal(:x.as(:y, [:c1, :c2])).must_equal "x AS y(c1, c2)"
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
require_relative 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe "synchronize_sql extension" do
|
|
4
|
-
module Sync
|
|
5
|
-
def literal_string_append(sql, v)
|
|
6
|
-
db.synchronize{super}
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
before do
|
|
11
|
-
@db = Sequel.mock
|
|
12
|
-
@db.pool.extend(Module.new do
|
|
13
|
-
def assign_connection(*args)
|
|
14
|
-
r = super
|
|
15
|
-
@times_connection_acquired ||= 0
|
|
16
|
-
@times_connection_acquired += 1 if r
|
|
17
|
-
return r
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def times_connection_acquired
|
|
21
|
-
v = @times_connection_acquired
|
|
22
|
-
@times_connection_acquired = 0
|
|
23
|
-
v || 0
|
|
24
|
-
end
|
|
25
|
-
end)
|
|
26
|
-
@db.extend_datasets(Sync)
|
|
27
|
-
@ds = @db[:tab1]
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it 'does not checkout a connection if SQL is given as a string' do
|
|
31
|
-
@ds.extension(:synchronize_sql).with_sql('SELECT 1').sql
|
|
32
|
-
@db.pool.times_connection_acquired.must_equal 0
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it 'checks out an extra connection on insert_sql if there are no strings' do
|
|
36
|
-
@ds.insert_sql(:numeric_foo => 8)
|
|
37
|
-
@db.pool.times_connection_acquired.must_equal 0
|
|
38
|
-
|
|
39
|
-
extds = @ds.extension(:synchronize_sql)
|
|
40
|
-
extds.insert_sql(:numeric_foo => 8)
|
|
41
|
-
@db.pool.times_connection_acquired.must_equal 1
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
it 'checks out just one connection on insert_sql if there are multiple strings' do
|
|
45
|
-
@ds.insert_sql(:string_foo1 => 'eight', :string_foo2 => 'nine', :string_foo3 => 'ten')
|
|
46
|
-
@db.pool.times_connection_acquired.must_equal 3
|
|
47
|
-
|
|
48
|
-
extds = @ds.extension(:synchronize_sql)
|
|
49
|
-
extds.insert_sql(:string_foo1 => 'eight', :string_foo2 => 'nine', :string_foo3 => 'ten')
|
|
50
|
-
@db.pool.times_connection_acquired.must_equal 1
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it 'cheks out an extra connectrion on update_sql if there are no strings' do
|
|
54
|
-
@ds.where(:numeric_foo => [1, 2, 3, 4, 5]).update_sql(:numeric_foo => 99)
|
|
55
|
-
@db.pool.times_connection_acquired.must_equal 0
|
|
56
|
-
|
|
57
|
-
extds = @ds.extension(:synchronize_sql)
|
|
58
|
-
extds.where(:numeric_foo => [1, 2, 3, 4, 5]).update_sql(:numeric_foo => 99)
|
|
59
|
-
@db.pool.times_connection_acquired.must_equal 1
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
it 'checks out just one connection on update_sql if there are multiple strings' do
|
|
63
|
-
@ds.where(:numeric_foo => [1, 2, 3, 4, 5]).update_sql(:string_foo1 => 'eight', :string_foo2 => 'nine', :string_foo3 => 'ten')
|
|
64
|
-
@db.pool.times_connection_acquired.must_equal 3
|
|
65
|
-
|
|
66
|
-
extds = @ds.extension(:synchronize_sql)
|
|
67
|
-
extds.where(:numeric_foo => [1, 2, 3, 4, 5]).update_sql(:string_foo1 => 'eight', :string_foo2 => 'nine', :string_foo3 => 'ten')
|
|
68
|
-
@db.pool.times_connection_acquired.must_equal 1
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it 'checks out an extra connection on delete_sql if there are no strings' do
|
|
72
|
-
@ds.where(:numeric_foo => [1, 2, 3]).delete_sql
|
|
73
|
-
@db.pool.times_connection_acquired.must_equal 0
|
|
74
|
-
|
|
75
|
-
extds = @ds.extension(:synchronize_sql)
|
|
76
|
-
extds.where(:numeric_foo => [1, 2, 3]).delete_sql
|
|
77
|
-
@db.pool.times_connection_acquired.must_equal 1
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
it 'checks out just one connection on delete_sql if there are multiple strings' do
|
|
81
|
-
@ds.where(:string_foo => ['one', 'two', 'three', 'four']).delete_sql
|
|
82
|
-
@db.pool.times_connection_acquired.must_equal 4
|
|
83
|
-
|
|
84
|
-
extds = @ds.extension(:synchronize_sql)
|
|
85
|
-
extds.where(:string_foo => ['one', 'two', 'three', 'four']).delete_sql
|
|
86
|
-
@db.pool.times_connection_acquired.must_equal 1
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
it 'checks out an extra connection on select_sql if there are no strings' do
|
|
90
|
-
@ds.where(:numeric_foo => [1, 2, 3]).select_sql
|
|
91
|
-
@db.pool.times_connection_acquired.must_equal 0
|
|
92
|
-
|
|
93
|
-
extds = @ds.extension(:synchronize_sql)
|
|
94
|
-
extds.where(:numeric_foo => [1, 2, 3]).select_sql
|
|
95
|
-
@db.pool.times_connection_acquired.must_equal 1
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
it 'checks out just one connection on select_sql if there are multiple strings' do
|
|
99
|
-
@ds.where(:string_foo => ['one', 'two', 'three', 'four']).select_sql
|
|
100
|
-
@db.pool.times_connection_acquired.must_equal 4
|
|
101
|
-
|
|
102
|
-
extds = @ds.extension(:synchronize_sql)
|
|
103
|
-
extds.where(:string_foo => ['one', 'two', 'three', 'four']).select_sql
|
|
104
|
-
@db.pool.times_connection_acquired.must_equal 1
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
it 'checks out an extra connection on fetch if there are no strings' do
|
|
108
|
-
@db.fetch('SELECT * FROM tab1 WHERE numeric_foo IN (?, ?, ?, ?)', 1, 2, 3, 4).select_sql
|
|
109
|
-
@db.pool.times_connection_acquired.must_equal 0
|
|
110
|
-
|
|
111
|
-
@db.extension(:synchronize_sql)
|
|
112
|
-
@db.fetch('SELECT * FROM tab1 WHERE numeric_foo IN (?, ?, ?, ?)', 1, 2, 3, 4).select_sql
|
|
113
|
-
@db.pool.times_connection_acquired.must_equal 1
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
it 'checks out just one connection on fetch if there are multiple strings' do
|
|
117
|
-
@db.fetch('SELECT * FROM tab1 WHERE string_foo IN (?, ?, ?, ?)', 'one', 'two', 'three', 'four').select_sql
|
|
118
|
-
@db.pool.times_connection_acquired.must_equal 4
|
|
119
|
-
|
|
120
|
-
@db.extension(:synchronize_sql)
|
|
121
|
-
@db.fetch('SELECT * FROM tab1 WHERE string_foo IN (?, ?, ?, ?)', 'one', 'two', 'three', 'four').select_sql
|
|
122
|
-
@db.pool.times_connection_acquired.must_equal 1
|
|
123
|
-
end
|
|
124
|
-
end
|