ibm_db 3.0.5-x86-mingw32 → 5.0.5-x86-mingw32
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/CHANGES +4 -0
- data/LICENSE +1 -1
- data/ParameterizedQueries README +6 -6
- data/README +38 -55
- data/ext/Makefile +269 -0
- data/ext/extconf.rb +34 -3
- data/ext/gil_release_version +3 -0
- data/ext/ibm_db-i386-mingw32.def +2 -0
- data/ext/ibm_db.c +100 -108
- data/ext/ibm_db.o +0 -0
- data/ext/ibm_db.so +0 -0
- data/ext/mkmf.log +110 -0
- data/ext/ruby_ibm_db_cli.o +0 -0
- data/ext/unicode_support_version +3 -0
- data/lib/active_record/connection_adapters/ibm_db_adapter.rb +923 -527
- data/lib/active_record/connection_adapters/ibmdb_adapter.rb +4 -1
- data/lib/mswin32/ibm_db.rb +7 -39
- data/lib/mswin32/rb2x/i386/ibm_db.so +0 -0
- data/test/active_record/connection_adapters/fake_adapter.rb +8 -5
- data/test/cases/adapter_test.rb +133 -58
- data/test/cases/adapters/mysql2/active_schema_test.rb +193 -0
- data/test/cases/adapters/mysql2/bind_parameter_test.rb +50 -0
- data/test/cases/adapters/mysql2/boolean_test.rb +100 -0
- data/test/cases/adapters/mysql2/case_sensitivity_test.rb +63 -0
- data/test/cases/adapters/mysql2/charset_collation_test.rb +54 -0
- data/test/cases/adapters/mysql2/connection_test.rb +210 -0
- data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +45 -0
- data/test/cases/adapters/mysql2/enum_test.rb +26 -0
- data/test/cases/adapters/mysql2/explain_test.rb +21 -0
- data/test/cases/adapters/mysql2/json_test.rb +195 -0
- data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +83 -0
- data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -0
- data/test/cases/adapters/mysql2/schema_migrations_test.rb +59 -0
- data/test/cases/adapters/mysql2/schema_test.rb +126 -0
- data/test/cases/adapters/mysql2/sp_test.rb +36 -0
- data/test/cases/adapters/mysql2/sql_types_test.rb +14 -0
- data/test/cases/adapters/mysql2/table_options_test.rb +42 -0
- data/test/cases/adapters/mysql2/unsigned_type_test.rb +66 -0
- data/test/cases/adapters/postgresql/active_schema_test.rb +98 -0
- data/test/cases/adapters/postgresql/array_test.rb +339 -0
- data/test/cases/adapters/postgresql/bit_string_test.rb +82 -0
- data/test/cases/adapters/postgresql/bytea_test.rb +134 -0
- data/test/cases/adapters/postgresql/case_insensitive_test.rb +26 -0
- data/test/cases/adapters/postgresql/change_schema_test.rb +38 -0
- data/test/cases/adapters/postgresql/cidr_test.rb +25 -0
- data/test/cases/adapters/postgresql/citext_test.rb +78 -0
- data/test/cases/adapters/postgresql/collation_test.rb +53 -0
- data/test/cases/adapters/postgresql/composite_test.rb +132 -0
- data/test/cases/adapters/postgresql/connection_test.rb +257 -0
- data/test/cases/adapters/postgresql/datatype_test.rb +92 -0
- data/test/cases/adapters/postgresql/domain_test.rb +47 -0
- data/test/cases/adapters/postgresql/enum_test.rb +91 -0
- data/test/cases/adapters/postgresql/explain_test.rb +20 -0
- data/test/cases/adapters/postgresql/extension_migration_test.rb +63 -0
- data/test/cases/adapters/postgresql/full_text_test.rb +44 -0
- data/test/cases/adapters/postgresql/geometric_test.rb +378 -0
- data/test/cases/adapters/postgresql/hstore_test.rb +382 -0
- data/test/cases/adapters/postgresql/infinity_test.rb +69 -0
- data/test/cases/adapters/postgresql/integer_test.rb +25 -0
- data/test/cases/adapters/postgresql/json_test.rb +237 -0
- data/test/cases/adapters/postgresql/ltree_test.rb +53 -0
- data/test/cases/adapters/postgresql/money_test.rb +96 -0
- data/test/cases/adapters/postgresql/network_test.rb +94 -0
- data/test/cases/adapters/postgresql/numbers_test.rb +49 -0
- data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +405 -0
- data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -0
- data/test/cases/adapters/postgresql/quoting_test.rb +44 -0
- data/test/cases/adapters/postgresql/range_test.rb +343 -0
- data/test/cases/adapters/postgresql/referential_integrity_test.rb +111 -0
- data/test/cases/adapters/postgresql/rename_table_test.rb +34 -0
- data/test/cases/adapters/postgresql/schema_authorization_test.rb +119 -0
- data/test/cases/adapters/postgresql/schema_test.rb +597 -0
- data/test/cases/adapters/postgresql/serial_test.rb +154 -0
- data/test/cases/adapters/postgresql/statement_pool_test.rb +41 -0
- data/test/cases/adapters/postgresql/timestamp_test.rb +90 -0
- data/test/cases/adapters/postgresql/type_lookup_test.rb +33 -0
- data/test/cases/adapters/postgresql/utils_test.rb +62 -0
- data/test/cases/adapters/postgresql/uuid_test.rb +294 -0
- data/test/cases/adapters/postgresql/xml_test.rb +54 -0
- data/test/cases/adapters/sqlite3/collation_test.rb +53 -0
- data/test/cases/adapters/sqlite3/copy_table_test.rb +98 -0
- data/test/cases/adapters/sqlite3/explain_test.rb +21 -0
- data/test/cases/adapters/sqlite3/quoting_test.rb +101 -0
- data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +441 -0
- data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -0
- data/test/cases/adapters/sqlite3/statement_pool_test.rb +20 -0
- data/test/cases/aggregations_test.rb +11 -1
- data/test/cases/ar_schema_test.rb +35 -50
- data/test/cases/associations/association_scope_test.rb +1 -6
- data/test/cases/associations/belongs_to_associations_test.rb +122 -10
- data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +41 -0
- data/test/cases/associations/callbacks_test.rb +5 -7
- data/test/cases/associations/cascaded_eager_loading_test.rb +1 -1
- data/test/cases/associations/eager_load_nested_include_test.rb +1 -3
- data/test/cases/associations/eager_test.rb +158 -73
- data/test/cases/associations/extension_test.rb +7 -2
- data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +64 -32
- data/test/cases/associations/has_many_associations_test.rb +362 -43
- data/test/cases/associations/has_many_through_associations_test.rb +108 -41
- data/test/cases/associations/has_one_associations_test.rb +105 -8
- data/test/cases/associations/has_one_through_associations_test.rb +6 -3
- data/test/cases/associations/inner_join_association_test.rb +3 -3
- data/test/cases/associations/inverse_associations_test.rb +38 -11
- data/test/cases/associations/join_model_test.rb +59 -36
- data/test/cases/associations/left_outer_join_association_test.rb +88 -0
- data/test/cases/associations/nested_through_associations_test.rb +2 -2
- data/test/cases/associations/required_test.rb +25 -5
- data/test/cases/associations_test.rb +39 -34
- data/test/cases/attribute_decorators_test.rb +9 -8
- data/test/cases/attribute_methods/read_test.rb +5 -5
- data/test/cases/attribute_methods_test.rb +97 -40
- data/test/cases/attribute_set_test.rb +64 -4
- data/test/cases/attribute_test.rb +84 -18
- data/test/cases/attributes_test.rb +151 -34
- data/test/cases/autosave_association_test.rb +149 -36
- data/test/cases/base_test.rb +290 -241
- data/test/cases/batches_test.rb +299 -22
- data/test/cases/binary_test.rb +2 -10
- data/test/cases/bind_parameter_test.rb +76 -66
- data/test/cases/cache_key_test.rb +26 -0
- data/test/cases/calculations_test.rb +167 -15
- data/test/cases/callbacks_test.rb +161 -68
- data/test/cases/coders/json_test.rb +15 -0
- data/test/cases/collection_cache_key_test.rb +115 -0
- data/test/cases/column_definition_test.rb +26 -57
- data/test/cases/comment_test.rb +145 -0
- data/test/cases/connection_adapters/adapter_leasing_test.rb +5 -3
- data/test/cases/connection_adapters/connection_handler_test.rb +128 -21
- data/test/cases/connection_adapters/connection_specification_test.rb +1 -1
- data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +0 -38
- data/test/cases/connection_adapters/mysql_type_lookup_test.rb +5 -1
- data/test/cases/connection_adapters/schema_cache_test.rb +8 -3
- data/test/cases/connection_adapters/type_lookup_test.rb +15 -7
- data/test/cases/connection_management_test.rb +46 -56
- data/test/cases/connection_pool_test.rb +195 -20
- data/test/cases/connection_specification/resolver_test.rb +15 -0
- data/test/cases/counter_cache_test.rb +10 -5
- data/test/cases/custom_locking_test.rb +1 -1
- data/test/cases/database_statements_test.rb +18 -3
- data/test/cases/{invalid_date_test.rb → date_test.rb} +13 -1
- data/test/cases/date_time_precision_test.rb +107 -0
- data/test/cases/defaults_test.rb +85 -89
- data/test/cases/dirty_test.rb +30 -52
- data/test/cases/disconnected_test.rb +4 -2
- data/test/cases/enum_test.rb +178 -24
- data/test/cases/errors_test.rb +16 -0
- data/test/cases/explain_test.rb +32 -21
- data/test/cases/finder_test.rb +273 -148
- data/test/cases/fixture_set/file_test.rb +18 -0
- data/test/cases/fixtures_test.rb +112 -32
- data/test/cases/forbidden_attributes_protection_test.rb +69 -3
- data/test/cases/helper.rb +10 -16
- data/test/cases/hot_compatibility_test.rb +89 -1
- data/test/cases/inheritance_test.rb +284 -53
- data/test/cases/integration_test.rb +23 -7
- data/test/cases/invalid_connection_test.rb +4 -2
- data/test/cases/invertible_migration_test.rb +124 -32
- data/test/cases/json_serialization_test.rb +11 -2
- data/test/cases/locking_test.rb +22 -6
- data/test/cases/log_subscriber_test.rb +106 -17
- data/test/cases/migration/change_schema_test.rb +60 -114
- data/test/cases/migration/change_table_test.rb +34 -2
- data/test/cases/migration/column_attributes_test.rb +7 -23
- data/test/cases/migration/column_positioning_test.rb +8 -8
- data/test/cases/migration/columns_test.rb +17 -11
- data/test/cases/migration/command_recorder_test.rb +47 -2
- data/test/cases/migration/compatibility_test.rb +118 -0
- data/test/cases/migration/create_join_table_test.rb +21 -12
- data/test/cases/migration/foreign_key_test.rb +52 -18
- data/test/cases/migration/index_test.rb +14 -12
- data/test/cases/migration/logger_test.rb +1 -1
- data/test/cases/migration/pending_migrations_test.rb +0 -1
- data/test/cases/migration/references_foreign_key_test.rb +59 -7
- data/test/cases/migration/references_index_test.rb +4 -4
- data/test/cases/migration/references_statements_test.rb +26 -6
- data/test/cases/migration/rename_table_test.rb +25 -25
- data/test/cases/migration_test.rb +279 -81
- data/test/cases/migrator_test.rb +91 -8
- data/test/cases/mixin_test.rb +0 -2
- data/test/cases/modules_test.rb +3 -4
- data/test/cases/multiparameter_attributes_test.rb +24 -2
- data/test/cases/multiple_db_test.rb +11 -4
- data/test/cases/nested_attributes_test.rb +61 -33
- data/test/cases/persistence_test.rb +102 -10
- data/test/cases/pooled_connections_test.rb +3 -3
- data/test/cases/primary_keys_test.rb +170 -31
- data/test/cases/query_cache_test.rb +216 -96
- data/test/cases/quoting_test.rb +65 -19
- data/test/cases/readonly_test.rb +2 -1
- data/test/cases/reflection_test.rb +68 -22
- data/test/cases/relation/delegation_test.rb +3 -8
- data/test/cases/relation/merging_test.rb +10 -14
- data/test/cases/relation/mutation_test.rb +42 -24
- data/test/cases/relation/or_test.rb +92 -0
- data/test/cases/relation/predicate_builder_test.rb +4 -2
- data/test/cases/relation/record_fetch_warning_test.rb +40 -0
- data/test/cases/relation/where_chain_test.rb +23 -99
- data/test/cases/relation/where_clause_test.rb +182 -0
- data/test/cases/relation/where_test.rb +45 -23
- data/test/cases/relation_test.rb +67 -58
- data/test/cases/relations_test.rb +249 -38
- data/test/cases/result_test.rb +10 -0
- data/test/cases/sanitize_test.rb +108 -15
- data/test/cases/schema_dumper_test.rb +119 -125
- data/test/cases/schema_loading_test.rb +52 -0
- data/test/cases/scoping/default_scoping_test.rb +113 -39
- data/test/cases/scoping/named_scoping_test.rb +46 -9
- data/test/cases/scoping/relation_scoping_test.rb +47 -4
- data/test/cases/secure_token_test.rb +32 -0
- data/test/cases/serialization_test.rb +1 -1
- data/test/cases/serialized_attribute_test.rb +93 -6
- data/test/cases/statement_cache_test.rb +38 -0
- data/test/cases/store_test.rb +2 -1
- data/test/cases/suppressor_test.rb +63 -0
- data/test/cases/tasks/database_tasks_test.rb +73 -9
- data/test/cases/tasks/mysql_rake_test.rb +139 -118
- data/test/cases/tasks/postgresql_rake_test.rb +60 -6
- data/test/cases/tasks/sqlite_rake_test.rb +30 -3
- data/test/cases/test_case.rb +28 -20
- data/test/cases/test_fixtures_test.rb +36 -0
- data/test/cases/time_precision_test.rb +103 -0
- data/test/cases/timestamp_test.rb +44 -10
- data/test/cases/touch_later_test.rb +121 -0
- data/test/cases/transaction_callbacks_test.rb +128 -62
- data/test/cases/transaction_isolation_test.rb +2 -2
- data/test/cases/transactions_test.rb +61 -43
- data/test/cases/type/adapter_specific_registry_test.rb +133 -0
- data/test/cases/type/date_time_test.rb +14 -0
- data/test/cases/type/integer_test.rb +2 -96
- data/test/cases/type/string_test.rb +0 -14
- data/test/cases/type_test.rb +39 -0
- data/test/cases/types_test.rb +1 -118
- data/test/cases/unconnected_test.rb +1 -1
- data/test/cases/validations/absence_validation_test.rb +73 -0
- data/test/cases/validations/association_validation_test.rb +13 -2
- data/test/cases/validations/i18n_validation_test.rb +6 -10
- data/test/cases/validations/length_validation_test.rb +62 -30
- data/test/cases/validations/presence_validation_test.rb +36 -1
- data/test/cases/validations/uniqueness_validation_test.rb +128 -37
- data/test/cases/validations_repair_helper.rb +2 -6
- data/test/cases/validations_test.rb +36 -7
- data/test/cases/view_test.rb +102 -5
- data/test/cases/yaml_serialization_test.rb +21 -26
- data/test/config.example.yml +97 -0
- data/test/fixtures/bad_posts.yml +9 -0
- data/test/fixtures/books.yml +20 -0
- data/test/fixtures/content.yml +3 -0
- data/test/fixtures/content_positions.yml +3 -0
- data/test/fixtures/dead_parrots.yml +5 -0
- data/test/fixtures/live_parrots.yml +4 -0
- data/test/fixtures/naked/yml/parrots.yml +2 -0
- data/test/fixtures/naked/yml/trees.yml +3 -0
- data/test/fixtures/nodes.yml +29 -0
- data/test/fixtures/other_comments.yml +6 -0
- data/test/fixtures/other_dogs.yml +2 -0
- data/test/fixtures/other_posts.yml +7 -0
- data/test/fixtures/price_estimates.yml +10 -1
- data/test/fixtures/trees.yml +3 -0
- data/test/migrations/10_urban/9_add_expressions.rb +1 -1
- data/test/migrations/decimal/1_give_me_big_numbers.rb +1 -1
- data/test/migrations/magic/1_currencies_have_symbols.rb +1 -1
- data/test/migrations/missing/1000_people_have_middle_names.rb +2 -2
- data/test/migrations/missing/1_people_have_last_names.rb +2 -2
- data/test/migrations/missing/3_we_need_reminders.rb +2 -2
- data/test/migrations/missing/4_innocent_jointable.rb +2 -2
- data/test/migrations/rename/1_we_need_things.rb +2 -2
- data/test/migrations/rename/2_rename_things.rb +2 -2
- data/test/migrations/to_copy/1_people_have_hobbies.rb +1 -1
- data/test/migrations/to_copy/2_people_have_descriptions.rb +1 -1
- data/test/migrations/to_copy2/1_create_articles.rb +1 -1
- data/test/migrations/to_copy2/2_create_comments.rb +1 -1
- data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +1 -1
- data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +1 -1
- data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +1 -1
- data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +1 -1
- data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +1 -1
- data/test/migrations/valid/1_valid_people_have_last_names.rb +1 -1
- data/test/migrations/valid/2_we_need_reminders.rb +2 -2
- data/test/migrations/valid/3_innocent_jointable.rb +2 -2
- data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +1 -1
- data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +2 -2
- data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +2 -2
- data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +1 -1
- data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +1 -1
- data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +1 -1
- data/test/migrations/version_check/20131219224947_migration_version_check.rb +1 -1
- data/test/models/admin/randomly_named_c1.rb +6 -2
- data/test/models/aircraft.rb +1 -0
- data/test/models/author.rb +4 -7
- data/test/models/bird.rb +1 -1
- data/test/models/book.rb +5 -0
- data/test/models/bulb.rb +2 -1
- data/test/models/car.rb +3 -0
- data/test/models/cat.rb +10 -0
- data/test/models/chef.rb +1 -0
- data/test/models/club.rb +2 -0
- data/test/models/comment.rb +17 -5
- data/test/models/company.rb +4 -2
- data/test/models/company_in_module.rb +1 -1
- data/test/models/contact.rb +1 -1
- data/test/models/content.rb +40 -0
- data/test/models/customer.rb +8 -2
- data/test/models/developer.rb +19 -0
- data/test/models/face.rb +1 -1
- data/test/models/guitar.rb +4 -0
- data/test/models/hotel.rb +2 -0
- data/test/models/member.rb +1 -0
- data/test/models/member_detail.rb +4 -3
- data/test/models/mentor.rb +3 -0
- data/test/models/mocktail_designer.rb +2 -0
- data/test/models/node.rb +5 -0
- data/test/models/non_primary_key.rb +2 -0
- data/test/models/notification.rb +3 -0
- data/test/models/other_dog.rb +5 -0
- data/test/models/owner.rb +4 -1
- data/test/models/parrot.rb +6 -7
- data/test/models/person.rb +0 -1
- data/test/models/pet.rb +3 -0
- data/test/models/pet_treasure.rb +6 -0
- data/test/models/pirate.rb +3 -3
- data/test/models/post.rb +18 -9
- data/test/models/project.rb +9 -0
- data/test/models/randomly_named_c1.rb +1 -1
- data/test/models/recipe.rb +3 -0
- data/test/models/ship.rb +8 -2
- data/test/models/tag.rb +6 -0
- data/test/models/topic.rb +2 -8
- data/test/models/tree.rb +3 -0
- data/test/models/tuning_peg.rb +4 -0
- data/test/models/user.rb +14 -0
- data/test/models/uuid_item.rb +6 -0
- data/test/schema/mysql2_specific_schema.rb +33 -23
- data/test/schema/oracle_specific_schema.rb +1 -4
- data/test/schema/postgresql_specific_schema.rb +36 -124
- data/test/schema/schema.rb +170 -65
- data/test/schema/schema.rb.original +1057 -0
- data/test/schema/sqlite_specific_schema.rb +1 -5
- data/test/support/connection.rb +1 -0
- data/test/support/schema_dumping_helper.rb +1 -1
- data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -0
- data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -0
- metadata +146 -30
- data/lib/mswin32/rb19x/ibm_db.so +0 -0
- data/lib/mswin32/rb21x/i386/ibm_db.so +0 -0
- data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
- data/lib/mswin32/rb23x/i386/ibm_db.so +0 -0
- data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +0 -26
- data/test/cases/attribute_methods/serialization_test.rb +0 -29
- data/test/cases/migration/change_schema_test - Copy.rb +0 -448
- data/test/cases/migration/foreign_key_test - Changed.rb +0 -325
- data/test/cases/migration/table_and_index_test.rb +0 -24
- data/test/cases/relation/where_test2.rb +0 -36
- data/test/cases/type/decimal_test.rb +0 -56
- data/test/cases/type/unsigned_integer_test.rb +0 -18
- data/test/cases/xml_serialization_test.rb +0 -457
- data/test/fixtures/naked/csv/accounts.csv +0 -1
- data/test/schema/mysql_specific_schema.rb +0 -70
@@ -7,6 +7,20 @@ require "active_support/log_subscriber/test_helper"
|
|
7
7
|
class LogSubscriberTest < ActiveRecord::TestCase
|
8
8
|
include ActiveSupport::LogSubscriber::TestHelper
|
9
9
|
include ActiveSupport::Logger::Severity
|
10
|
+
REGEXP_CLEAR = Regexp.escape(ActiveRecord::LogSubscriber::CLEAR)
|
11
|
+
REGEXP_BOLD = Regexp.escape(ActiveRecord::LogSubscriber::BOLD)
|
12
|
+
REGEXP_MAGENTA = Regexp.escape(ActiveRecord::LogSubscriber::MAGENTA)
|
13
|
+
REGEXP_CYAN = Regexp.escape(ActiveRecord::LogSubscriber::CYAN)
|
14
|
+
SQL_COLORINGS = {
|
15
|
+
SELECT: Regexp.escape(ActiveRecord::LogSubscriber::BLUE),
|
16
|
+
INSERT: Regexp.escape(ActiveRecord::LogSubscriber::GREEN),
|
17
|
+
UPDATE: Regexp.escape(ActiveRecord::LogSubscriber::YELLOW),
|
18
|
+
DELETE: Regexp.escape(ActiveRecord::LogSubscriber::RED),
|
19
|
+
LOCK: Regexp.escape(ActiveRecord::LogSubscriber::WHITE),
|
20
|
+
ROLLBACK: Regexp.escape(ActiveRecord::LogSubscriber::RED),
|
21
|
+
TRANSACTION: REGEXP_CYAN,
|
22
|
+
OTHER: REGEXP_MAGENTA
|
23
|
+
}
|
10
24
|
|
11
25
|
class TestDebugLogSubscriber < ActiveRecord::LogSubscriber
|
12
26
|
attr_reader :debugs
|
@@ -46,31 +60,23 @@ class LogSubscriberTest < ActiveRecord::TestCase
|
|
46
60
|
logger = TestDebugLogSubscriber.new
|
47
61
|
assert_equal 0, logger.debugs.length
|
48
62
|
|
49
|
-
logger.sql(event.new(0, sql:
|
63
|
+
logger.sql(event.new(0.9, sql: "hi mom!"))
|
50
64
|
assert_equal 1, logger.debugs.length
|
51
65
|
|
52
|
-
logger.sql(event.new(0, sql:
|
66
|
+
logger.sql(event.new(0.9, sql: "hi mom!", name: "foo"))
|
53
67
|
assert_equal 2, logger.debugs.length
|
54
68
|
|
55
|
-
logger.sql(event.new(0, sql:
|
69
|
+
logger.sql(event.new(0.9, sql: "hi mom!", name: "SCHEMA"))
|
56
70
|
assert_equal 2, logger.debugs.length
|
57
71
|
end
|
58
72
|
|
59
73
|
def test_sql_statements_are_not_squeezed
|
60
74
|
event = Struct.new(:duration, :payload)
|
61
75
|
logger = TestDebugLogSubscriber.new
|
62
|
-
logger.sql(event.new(0, sql:
|
76
|
+
logger.sql(event.new(0.9, sql: "ruby rails"))
|
63
77
|
assert_match(/ruby rails/, logger.debugs.first)
|
64
78
|
end
|
65
79
|
|
66
|
-
def test_ignore_binds_payload_with_nil_column
|
67
|
-
event = Struct.new(:duration, :payload)
|
68
|
-
|
69
|
-
logger = TestDebugLogSubscriber.new
|
70
|
-
logger.sql(event.new(0, sql: 'hi mom!', binds: [[nil, 1]]))
|
71
|
-
assert_equal 1, logger.debugs.length
|
72
|
-
end
|
73
|
-
|
74
80
|
def test_basic_query_logging
|
75
81
|
Developer.all.load
|
76
82
|
wait
|
@@ -79,6 +85,90 @@ class LogSubscriberTest < ActiveRecord::TestCase
|
|
79
85
|
assert_match(/SELECT .*?FROM .?developers.?/i, @logger.logged(:debug).last)
|
80
86
|
end
|
81
87
|
|
88
|
+
def test_basic_query_logging_coloration
|
89
|
+
event = Struct.new(:duration, :payload)
|
90
|
+
logger = TestDebugLogSubscriber.new
|
91
|
+
logger.colorize_logging = true
|
92
|
+
SQL_COLORINGS.each do |verb, color_regex|
|
93
|
+
logger.sql(event.new(0.9, sql: verb.to_s))
|
94
|
+
assert_match(/#{REGEXP_BOLD}#{color_regex}#{verb}#{REGEXP_CLEAR}/i, logger.debugs.last)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_basic_payload_name_logging_coloration_generic_sql
|
99
|
+
event = Struct.new(:duration, :payload)
|
100
|
+
logger = TestDebugLogSubscriber.new
|
101
|
+
logger.colorize_logging = true
|
102
|
+
SQL_COLORINGS.each do |verb, _|
|
103
|
+
logger.sql(event.new(0.9, sql: verb.to_s))
|
104
|
+
assert_match(/#{REGEXP_BOLD}#{REGEXP_MAGENTA} \(0\.9ms\)#{REGEXP_CLEAR}/i, logger.debugs.last)
|
105
|
+
|
106
|
+
logger.sql(event.new(0.9, sql: verb.to_s, name: "SQL"))
|
107
|
+
assert_match(/#{REGEXP_BOLD}#{REGEXP_MAGENTA}SQL \(0\.9ms\)#{REGEXP_CLEAR}/i, logger.debugs.last)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_basic_payload_name_logging_coloration_named_sql
|
112
|
+
event = Struct.new(:duration, :payload)
|
113
|
+
logger = TestDebugLogSubscriber.new
|
114
|
+
logger.colorize_logging = true
|
115
|
+
SQL_COLORINGS.each do |verb, _|
|
116
|
+
logger.sql(event.new(0.9, sql: verb.to_s, name: "Model Load"))
|
117
|
+
assert_match(/#{REGEXP_BOLD}#{REGEXP_CYAN}Model Load \(0\.9ms\)#{REGEXP_CLEAR}/i, logger.debugs.last)
|
118
|
+
|
119
|
+
logger.sql(event.new(0.9, sql: verb.to_s, name: "Model Exists"))
|
120
|
+
assert_match(/#{REGEXP_BOLD}#{REGEXP_CYAN}Model Exists \(0\.9ms\)#{REGEXP_CLEAR}/i, logger.debugs.last)
|
121
|
+
|
122
|
+
logger.sql(event.new(0.9, sql: verb.to_s, name: "ANY SPECIFIC NAME"))
|
123
|
+
assert_match(/#{REGEXP_BOLD}#{REGEXP_CYAN}ANY SPECIFIC NAME \(0\.9ms\)#{REGEXP_CLEAR}/i, logger.debugs.last)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_query_logging_coloration_with_nested_select
|
128
|
+
event = Struct.new(:duration, :payload)
|
129
|
+
logger = TestDebugLogSubscriber.new
|
130
|
+
logger.colorize_logging = true
|
131
|
+
SQL_COLORINGS.slice(:SELECT, :INSERT, :UPDATE, :DELETE).each do |verb, color_regex|
|
132
|
+
logger.sql(event.new(0.9, sql: "#{verb} WHERE ID IN SELECT"))
|
133
|
+
assert_match(/#{REGEXP_BOLD}#{REGEXP_MAGENTA} \(0\.9ms\)#{REGEXP_CLEAR} #{REGEXP_BOLD}#{color_regex}#{verb} WHERE ID IN SELECT#{REGEXP_CLEAR}/i, logger.debugs.last)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_query_logging_coloration_with_multi_line_nested_select
|
138
|
+
event = Struct.new(:duration, :payload)
|
139
|
+
logger = TestDebugLogSubscriber.new
|
140
|
+
logger.colorize_logging = true
|
141
|
+
SQL_COLORINGS.slice(:SELECT, :INSERT, :UPDATE, :DELETE).each do |verb, color_regex|
|
142
|
+
sql = <<-EOS
|
143
|
+
#{verb}
|
144
|
+
WHERE ID IN (
|
145
|
+
SELECT ID FROM THINGS
|
146
|
+
)
|
147
|
+
EOS
|
148
|
+
logger.sql(event.new(0.9, sql: sql))
|
149
|
+
assert_match(/#{REGEXP_BOLD}#{REGEXP_MAGENTA} \(0\.9ms\)#{REGEXP_CLEAR} #{REGEXP_BOLD}#{color_regex}.*#{verb}.*#{REGEXP_CLEAR}/mi, logger.debugs.last)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def test_query_logging_coloration_with_lock
|
154
|
+
event = Struct.new(:duration, :payload)
|
155
|
+
logger = TestDebugLogSubscriber.new
|
156
|
+
logger.colorize_logging = true
|
157
|
+
sql = <<-EOS
|
158
|
+
SELECT * FROM
|
159
|
+
(SELECT * FROM mytable FOR UPDATE) ss
|
160
|
+
WHERE col1 = 5;
|
161
|
+
EOS
|
162
|
+
logger.sql(event.new(0.9, sql: sql))
|
163
|
+
assert_match(/#{REGEXP_BOLD}#{REGEXP_MAGENTA} \(0\.9ms\)#{REGEXP_CLEAR} #{REGEXP_BOLD}#{SQL_COLORINGS[:LOCK]}.*FOR UPDATE.*#{REGEXP_CLEAR}/mi, logger.debugs.last)
|
164
|
+
|
165
|
+
sql = <<-EOS
|
166
|
+
LOCK TABLE films IN SHARE MODE;
|
167
|
+
EOS
|
168
|
+
logger.sql(event.new(0.9, sql: sql))
|
169
|
+
assert_match(/#{REGEXP_BOLD}#{REGEXP_MAGENTA} \(0\.9ms\)#{REGEXP_CLEAR} #{REGEXP_BOLD}#{SQL_COLORINGS[:LOCK]}.*LOCK TABLE.*#{REGEXP_CLEAR}/mi, logger.debugs.last)
|
170
|
+
end
|
171
|
+
|
82
172
|
def test_exists_query_logging
|
83
173
|
Developer.exists? 1
|
84
174
|
wait
|
@@ -119,18 +209,17 @@ class LogSubscriberTest < ActiveRecord::TestCase
|
|
119
209
|
Thread.new { assert_equal 0, ActiveRecord::LogSubscriber.runtime }.join
|
120
210
|
end
|
121
211
|
|
122
|
-
|
212
|
+
if ActiveRecord::Base.connection.prepared_statements
|
123
213
|
def test_binary_data_is_not_logged
|
124
214
|
Binary.create(data: 'some binary data')
|
125
215
|
wait
|
126
216
|
assert_match(/<16 bytes of binary data>/, @logger.logged(:debug).join)
|
127
217
|
end
|
128
218
|
|
129
|
-
def
|
130
|
-
|
131
|
-
binary.update_attributes(data: nil)
|
219
|
+
def test_binary_data_hash
|
220
|
+
Binary.create(data: { a: 1 })
|
132
221
|
wait
|
133
|
-
assert_match(/<
|
222
|
+
assert_match(/<7 bytes of binary data>/, @logger.logged(:debug).join)
|
134
223
|
end
|
135
224
|
end
|
136
225
|
end
|
@@ -23,20 +23,14 @@ module ActiveRecord
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
def test_add_column_with_primary_key_attribute
|
31
|
-
testing_table_with_only_foo_attribute do
|
32
|
-
connection.add_column :testings, :id, :primary_key
|
33
|
-
assert_equal connection.columns(:testings).size, 2
|
34
|
-
end
|
26
|
+
def test_add_column_with_primary_key_attribute
|
27
|
+
testing_table_with_only_foo_attribute do
|
28
|
+
connection.add_column :testings, :id, :primary_key
|
29
|
+
assert_equal connection.columns(:testings).size, 2
|
35
30
|
end
|
36
|
-
|
31
|
+
end
|
37
32
|
|
38
33
|
def test_create_table_adds_id
|
39
|
-
connection.drop_table :testings rescue nil
|
40
34
|
connection.create_table :testings do |t|
|
41
35
|
t.column :foo, :string
|
42
36
|
end
|
@@ -45,7 +39,6 @@ module ActiveRecord
|
|
45
39
|
end
|
46
40
|
|
47
41
|
def test_create_table_with_not_null_column
|
48
|
-
connection.drop_table :testings rescue nil
|
49
42
|
connection.create_table :testings do |t|
|
50
43
|
t.column :foo, :string, :null => false
|
51
44
|
end
|
@@ -57,8 +50,8 @@ module ActiveRecord
|
|
57
50
|
|
58
51
|
def test_create_table_with_defaults
|
59
52
|
# MySQL doesn't allow defaults on TEXT or BLOB columns.
|
60
|
-
mysql = current_adapter?(:
|
61
|
-
|
53
|
+
mysql = current_adapter?(:Mysql2Adapter)
|
54
|
+
|
62
55
|
connection.create_table :testings do |t|
|
63
56
|
t.column :one, :string, :default => "hello"
|
64
57
|
t.column :two, :boolean, :default => true
|
@@ -75,26 +68,24 @@ module ActiveRecord
|
|
75
68
|
five = columns.detect { |c| c.name == "five" } unless mysql
|
76
69
|
|
77
70
|
assert_equal "hello", one.default
|
78
|
-
assert_equal true, two.
|
79
|
-
assert_equal false, three.
|
71
|
+
assert_equal true, connection.lookup_cast_type_from_column(two).deserialize(two.default)
|
72
|
+
assert_equal false, connection.lookup_cast_type_from_column(three).deserialize(three.default)
|
80
73
|
assert_equal '1', four.default
|
81
74
|
assert_equal "hello", five.default unless mysql
|
82
75
|
end
|
83
76
|
|
84
77
|
if current_adapter?(:PostgreSQLAdapter)
|
85
78
|
def test_add_column_with_array
|
86
|
-
connection.drop_table :testings rescue nil
|
87
79
|
connection.create_table :testings
|
88
80
|
connection.add_column :testings, :foo, :string, :array => true
|
89
81
|
|
90
82
|
columns = connection.columns(:testings)
|
91
83
|
array_column = columns.detect { |c| c.name == "foo" }
|
92
84
|
|
93
|
-
assert array_column.array
|
85
|
+
assert array_column.array?
|
94
86
|
end
|
95
87
|
|
96
88
|
def test_create_table_with_array_column
|
97
|
-
connection.drop_table :testings rescue nil
|
98
89
|
connection.create_table :testings do |t|
|
99
90
|
t.string :foo, :array => true
|
100
91
|
end
|
@@ -102,12 +93,11 @@ module ActiveRecord
|
|
102
93
|
columns = connection.columns(:testings)
|
103
94
|
array_column = columns.detect { |c| c.name == "foo" }
|
104
95
|
|
105
|
-
assert array_column.array
|
96
|
+
assert array_column.array?
|
106
97
|
end
|
107
98
|
end
|
108
99
|
|
109
100
|
def test_create_table_with_bigint
|
110
|
-
connection.drop_table :testings rescue nil
|
111
101
|
connection.create_table :testings do |t|
|
112
102
|
t.bigint :eight_int
|
113
103
|
end
|
@@ -127,7 +117,6 @@ module ActiveRecord
|
|
127
117
|
end
|
128
118
|
|
129
119
|
def test_create_table_with_limits
|
130
|
-
connection.drop_table :testings rescue nil
|
131
120
|
connection.create_table :testings do |t|
|
132
121
|
t.column :foo, :string, :limit => 255
|
133
122
|
|
@@ -152,7 +141,7 @@ module ActiveRecord
|
|
152
141
|
assert_equal 'smallint', one.sql_type
|
153
142
|
assert_equal 'integer', four.sql_type
|
154
143
|
assert_equal 'bigint', eight.sql_type
|
155
|
-
elsif current_adapter?(:
|
144
|
+
elsif current_adapter?(:Mysql2Adapter)
|
156
145
|
assert_match 'int(11)', default.sql_type
|
157
146
|
assert_match 'tinyint', one.sql_type
|
158
147
|
assert_match 'int', four.sql_type
|
@@ -167,7 +156,7 @@ module ActiveRecord
|
|
167
156
|
|
168
157
|
def test_create_table_with_primary_key_prefix_as_table_name_with_underscore
|
169
158
|
ActiveRecord::Base.primary_key_prefix_type = :table_name_with_underscore
|
170
|
-
|
159
|
+
|
171
160
|
connection.create_table :testings do |t|
|
172
161
|
t.column :foo, :string
|
173
162
|
end
|
@@ -177,7 +166,7 @@ module ActiveRecord
|
|
177
166
|
|
178
167
|
def test_create_table_with_primary_key_prefix_as_table_name
|
179
168
|
ActiveRecord::Base.primary_key_prefix_type = :table_name
|
180
|
-
|
169
|
+
|
181
170
|
connection.create_table :testings do |t|
|
182
171
|
t.column :foo, :string
|
183
172
|
end
|
@@ -186,16 +175,13 @@ module ActiveRecord
|
|
186
175
|
end
|
187
176
|
|
188
177
|
def test_create_table_raises_when_redefining_primary_key_column
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
end
|
197
|
-
assert_equal "you can't redefine the primary key column 'id'. To define a custom primary key, pass { id: false } to create_table.", error.message
|
198
|
-
end
|
178
|
+
error = assert_raise(ArgumentError) do
|
179
|
+
connection.create_table :testings do |t|
|
180
|
+
t.column :id, :string
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
assert_equal "you can't redefine the primary key column 'id'. To define a custom primary key, pass { id: false } to create_table.", error.message
|
199
185
|
end
|
200
186
|
|
201
187
|
def test_create_table_raises_when_redefining_custom_primary_key_column
|
@@ -209,46 +195,39 @@ module ActiveRecord
|
|
209
195
|
end
|
210
196
|
|
211
197
|
def test_create_table_with_timestamps_should_create_datetime_columns
|
212
|
-
|
213
|
-
|
214
|
-
connection.drop_table :testings rescue nil
|
215
|
-
connection.create_table table_name do |t|
|
216
|
-
t.timestamps
|
217
|
-
end
|
198
|
+
connection.create_table table_name do |t|
|
199
|
+
t.timestamps
|
218
200
|
end
|
219
201
|
created_columns = connection.columns(table_name)
|
220
202
|
|
221
203
|
created_at_column = created_columns.detect {|c| c.name == 'created_at' }
|
222
204
|
updated_at_column = created_columns.detect {|c| c.name == 'updated_at' }
|
223
205
|
|
224
|
-
assert created_at_column.null
|
225
|
-
assert updated_at_column.null
|
206
|
+
assert !created_at_column.null
|
207
|
+
assert !updated_at_column.null
|
226
208
|
end
|
227
209
|
|
228
210
|
def test_create_table_with_timestamps_should_create_datetime_columns_with_options
|
229
|
-
connection.drop_table :testings rescue nil
|
230
211
|
connection.create_table table_name do |t|
|
231
|
-
t.timestamps :
|
212
|
+
t.timestamps null: true
|
232
213
|
end
|
233
214
|
created_columns = connection.columns(table_name)
|
234
215
|
|
235
216
|
created_at_column = created_columns.detect {|c| c.name == 'created_at' }
|
236
217
|
updated_at_column = created_columns.detect {|c| c.name == 'updated_at' }
|
237
218
|
|
238
|
-
assert
|
239
|
-
assert
|
219
|
+
assert created_at_column.null
|
220
|
+
assert updated_at_column.null
|
240
221
|
end
|
241
222
|
|
242
223
|
def test_create_table_without_a_block
|
243
|
-
connection.drop_table :testings rescue nil
|
244
224
|
connection.create_table table_name
|
245
225
|
end
|
246
226
|
|
247
|
-
#
|
227
|
+
# SQLite3 will not allow you to add a NOT NULL
|
248
228
|
# column to a table without a default value.
|
249
|
-
unless current_adapter?(:
|
229
|
+
unless current_adapter?(:SQLite3Adapter)
|
250
230
|
def test_add_column_not_null_without_default
|
251
|
-
connection.drop_table :testings rescue nil
|
252
231
|
connection.create_table :testings do |t|
|
253
232
|
t.column :foo, :string
|
254
233
|
end
|
@@ -261,7 +240,6 @@ module ActiveRecord
|
|
261
240
|
end
|
262
241
|
|
263
242
|
def test_add_column_not_null_with_default
|
264
|
-
connection.drop_table :testings rescue nil
|
265
243
|
connection.create_table :testings do |t|
|
266
244
|
t.column :foo, :string
|
267
245
|
end
|
@@ -276,7 +254,6 @@ module ActiveRecord
|
|
276
254
|
end
|
277
255
|
|
278
256
|
def test_add_column_with_timestamp_type
|
279
|
-
connection.drop_table :testings rescue nil
|
280
257
|
connection.create_table :testings do |t|
|
281
258
|
t.column :foo, :timestamp
|
282
259
|
end
|
@@ -294,14 +271,8 @@ module ActiveRecord
|
|
294
271
|
end
|
295
272
|
|
296
273
|
def test_change_column_quotes_column_names
|
297
|
-
connection.drop_table :testings rescue nil
|
298
274
|
connection.create_table :testings do |t|
|
299
|
-
|
300
|
-
t.column :select, :string
|
301
|
-
else
|
302
|
-
# If no limit specified by default column of length 255 is created, which later cannot be scaled down to 10
|
303
|
-
t.column :select, :string, :limit => 5
|
304
|
-
end
|
275
|
+
t.column :select, :string
|
305
276
|
end
|
306
277
|
|
307
278
|
connection.change_column :testings, :select, :string, :limit => 10
|
@@ -315,7 +286,6 @@ module ActiveRecord
|
|
315
286
|
end
|
316
287
|
|
317
288
|
def test_keeping_default_and_notnull_constraints_on_change
|
318
|
-
connection.drop_table :testings rescue nil
|
319
289
|
connection.create_table :testings do |t|
|
320
290
|
t.column :title, :string
|
321
291
|
end
|
@@ -339,67 +309,37 @@ module ActiveRecord
|
|
339
309
|
assert_equal 100, person_klass.column_defaults["wealth"]
|
340
310
|
assert_equal false, person_klass.columns_hash["wealth"].null
|
341
311
|
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
assert_equal false, person_klass.columns_hash["money"].null
|
349
|
-
end
|
312
|
+
# rename column to see that column doesn't lose its not null and/or default definition
|
313
|
+
person_klass.connection.rename_column "testings", "wealth", "money"
|
314
|
+
person_klass.reset_column_information
|
315
|
+
assert_nil person_klass.columns_hash["wealth"]
|
316
|
+
assert_equal 100, person_klass.column_defaults["money"]
|
317
|
+
assert_equal false, person_klass.columns_hash["money"].null
|
350
318
|
|
351
319
|
# change column
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
assert_equal false, person_klass.columns_hash["money"].null
|
357
|
-
else
|
358
|
-
person_klass.connection.change_column "testings", "wealth", :decimal, :precision => 15, :scale => 1,:null => false, :default => 1000
|
359
|
-
person_klass.reset_column_information
|
360
|
-
assert_equal "1000", person_klass.columns_hash["wealth"].default
|
361
|
-
assert_equal false, person_klass.columns_hash["wealth"].null
|
362
|
-
end
|
320
|
+
person_klass.connection.change_column "testings", "money", :integer, :null => false, :default => 1000
|
321
|
+
person_klass.reset_column_information
|
322
|
+
assert_equal 1000, person_klass.column_defaults["money"]
|
323
|
+
assert_equal false, person_klass.columns_hash["money"].null
|
363
324
|
|
364
325
|
# change column, make it nullable and clear default
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
assert_equal true, person_klass.columns_hash["money"].null
|
370
|
-
else
|
371
|
-
person_klass.connection.change_column "testings", "wealth", :decimal, :precision => 20, :scale => 2, :null => true, :default => nil
|
372
|
-
person_klass.reset_column_information
|
373
|
-
assert_nil person_klass.columns_hash["wealth"].default
|
374
|
-
assert_equal true, person_klass.columns_hash["wealth"].null
|
375
|
-
end
|
326
|
+
person_klass.connection.change_column "testings", "money", :integer, :null => true, :default => nil
|
327
|
+
person_klass.reset_column_information
|
328
|
+
assert_nil person_klass.columns_hash["money"].default
|
329
|
+
assert_equal true, person_klass.columns_hash["money"].null
|
376
330
|
|
377
331
|
# change_column_null, make it not nullable and set null values to a default value
|
378
|
-
unless current_adapter?(:IBM_DBAdapter)
|
379
332
|
person_klass.connection.execute('UPDATE testings SET money = NULL')
|
380
333
|
person_klass.connection.change_column_null "testings", "money", false, 2000
|
381
334
|
person_klass.reset_column_information
|
382
335
|
assert_nil person_klass.columns_hash["money"].default
|
383
336
|
assert_equal false, person_klass.columns_hash["money"].null
|
384
337
|
assert_equal 2000, connection.select_values("SELECT money FROM testings").first.to_i
|
385
|
-
else
|
386
|
-
# Trying to set the value of the column wealth to NULL and
|
387
|
-
# in the next statement a not null constraint is being applied which is wrong
|
388
|
-
#person_klass.connection.execute('UPDATE testings SET money = NULL')
|
389
|
-
person_klass.connection.change_column_null "testings", "wealth", false, 2000
|
390
|
-
person_klass.reset_column_information
|
391
|
-
#assert_nil person_klass.columns_hash["wealth"].default #Setting default to 2000 and expecting nil is nor correct
|
392
|
-
assert_not_nil person_klass.columns_hash["wealth"].default
|
393
|
-
assert_equal false, person_klass.columns_hash["wealth"].null
|
394
|
-
#Changing default does not change the already inserted value. Hence expecting 2000 is wrong.
|
395
|
-
#assert_equal [99], Person.connection.select_values("SELECT wealth FROM testings").map { |s| s.to_i }.sort
|
396
|
-
assert_equal [99], person_klass.connection.select_values("SELECT wealth FROM testings").map { |s| s.to_i }.sort
|
397
|
-
end
|
398
338
|
end
|
399
339
|
|
400
340
|
def test_change_column_null
|
401
341
|
testing_table_with_only_foo_attribute do
|
402
|
-
notnull_migration = Class.new(ActiveRecord::Migration) do
|
342
|
+
notnull_migration = Class.new(ActiveRecord::Migration::Current) do
|
403
343
|
def change
|
404
344
|
change_column_null :testings, :foo, false
|
405
345
|
end
|
@@ -414,7 +354,6 @@ module ActiveRecord
|
|
414
354
|
end
|
415
355
|
|
416
356
|
def test_column_exists
|
417
|
-
connection.drop_table :testings rescue nil
|
418
357
|
connection.create_table :testings do |t|
|
419
358
|
t.column :foo, :string
|
420
359
|
end
|
@@ -424,7 +363,6 @@ module ActiveRecord
|
|
424
363
|
end
|
425
364
|
|
426
365
|
def test_column_exists_with_type
|
427
|
-
connection.drop_table :testings rescue nil
|
428
366
|
connection.create_table :testings do |t|
|
429
367
|
t.column :foo, :string
|
430
368
|
t.column :bar, :decimal, :precision => 8, :scale => 2
|
@@ -438,7 +376,6 @@ module ActiveRecord
|
|
438
376
|
end
|
439
377
|
|
440
378
|
def test_column_exists_with_definition
|
441
|
-
connection.drop_table :testings rescue nil
|
442
379
|
connection.create_table :testings do |t|
|
443
380
|
t.column :foo, :string, limit: 100
|
444
381
|
t.column :bar, :decimal, precision: 8, scale: 2
|
@@ -457,7 +394,6 @@ module ActiveRecord
|
|
457
394
|
end
|
458
395
|
|
459
396
|
def test_column_exists_on_table_with_no_options_parameter_supplied
|
460
|
-
connection.drop_table :testings rescue nil
|
461
397
|
connection.create_table :testings do |t|
|
462
398
|
t.string :foo
|
463
399
|
end
|
@@ -467,9 +403,19 @@ module ActiveRecord
|
|
467
403
|
end
|
468
404
|
end
|
469
405
|
|
406
|
+
def test_drop_table_if_exists
|
407
|
+
connection.create_table(:testings)
|
408
|
+
ActiveSupport::Deprecation.silence { assert connection.table_exists?(:testings) }
|
409
|
+
connection.drop_table(:testings, if_exists: true)
|
410
|
+
ActiveSupport::Deprecation.silence { assert_not connection.table_exists?(:testings) }
|
411
|
+
end
|
412
|
+
|
413
|
+
def test_drop_table_if_exists_nothing_raised
|
414
|
+
assert_nothing_raised { connection.drop_table(:nonexistent, if_exists: true) }
|
415
|
+
end
|
416
|
+
|
470
417
|
private
|
471
418
|
def testing_table_with_only_foo_attribute
|
472
|
-
connection.drop_table :testings rescue nil
|
473
419
|
connection.create_table :testings, :id => false do |t|
|
474
420
|
t.column :foo, :string
|
475
421
|
end
|
@@ -480,7 +426,7 @@ module ActiveRecord
|
|
480
426
|
|
481
427
|
if ActiveRecord::Base.connection.supports_foreign_keys?
|
482
428
|
class ChangeSchemaWithDependentObjectsTest < ActiveRecord::TestCase
|
483
|
-
self.
|
429
|
+
self.use_transactional_tests = false
|
484
430
|
|
485
431
|
setup do
|
486
432
|
@connection = ActiveRecord::Base.connection
|
@@ -491,12 +437,12 @@ module ActiveRecord
|
|
491
437
|
|
492
438
|
teardown do
|
493
439
|
[:wagons, :trains].each do |table|
|
494
|
-
@connection.drop_table
|
440
|
+
@connection.drop_table table, if_exists: true
|
495
441
|
end
|
496
442
|
end
|
497
443
|
|
498
444
|
def test_create_table_with_force_cascade_drops_dependent_objects
|
499
|
-
skip "MySQL > 5.5 does not drop dependent objects with DROP TABLE CASCADE" if current_adapter?(:
|
445
|
+
skip "MySQL > 5.5 does not drop dependent objects with DROP TABLE CASCADE" if current_adapter?(:Mysql2Adapter)
|
500
446
|
# can't re-create table referenced by foreign key
|
501
447
|
assert_raises(ActiveRecord::StatementInvalid) do
|
502
448
|
@connection.create_table :trains, force: true
|