ibm_db 3.0.0-x86-mingw32 → 3.0.1-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 +4 -4
- data/CHANGES +4 -0
- data/MANIFEST +14 -14
- data/README +225 -225
- data/ext/Makefile.nt32 +181 -181
- data/ext/Makefile.nt32.191 +212 -212
- data/ext/OLD/extconf.rb +264 -0
- data/ext/{extconf_MacOS.rb → OLD/extconf_MacOS.rb} +269 -269
- data/ext/extconf.rb +291 -264
- data/ext/ibm_db.c +2 -2
- data/ext/ruby_ibm_db.h +241 -241
- data/ext/ruby_ibm_db_cli.h +500 -500
- data/init.rb +41 -41
- data/lib/IBM_DB.rb +27 -27
- data/lib/active_record/connection_adapters/ibm_db_adapter.rb +4 -4
- data/lib/active_record/connection_adapters/ibmdb_adapter.rb +1 -1
- data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
- data/lib/mswin32/ibm_db.rb +115 -115
- data/test/active_record/connection_adapters/fake_adapter.rb +46 -0
- data/test/assets/example.log +1 -0
- data/test/assets/flowers.jpg +0 -0
- data/test/assets/test.txt +1 -0
- data/test/cases/adapter_test.rb +261 -207
- data/test/cases/aggregations_test.rb +158 -0
- data/test/cases/ar_schema_test.rb +161 -0
- data/test/cases/associations/association_scope_test.rb +21 -0
- data/test/cases/associations/belongs_to_associations_test.rb +1029 -711
- data/test/cases/associations/callbacks_test.rb +192 -0
- data/test/cases/associations/cascaded_eager_loading_test.rb +188 -181
- data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +26 -0
- data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -0
- data/test/cases/associations/eager_load_nested_include_test.rb +128 -0
- data/test/cases/associations/eager_singularization_test.rb +148 -0
- data/test/cases/associations/eager_test.rb +1411 -0
- data/test/cases/associations/extension_test.rb +82 -0
- data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +932 -851
- data/test/cases/associations/has_many_associations_test.rb +2162 -0
- data/test/cases/associations/has_many_through_associations_test.rb +1204 -0
- data/test/cases/associations/has_one_associations_test.rb +610 -0
- data/test/cases/associations/has_one_through_associations_test.rb +380 -0
- data/test/cases/associations/inner_join_association_test.rb +139 -0
- data/test/cases/associations/inverse_associations_test.rb +693 -0
- data/test/cases/associations/join_model_test.rb +754 -743
- data/test/cases/associations/nested_through_associations_test.rb +579 -0
- data/test/cases/associations/required_test.rb +82 -0
- data/test/cases/associations_test.rb +380 -0
- data/test/cases/attribute_decorators_test.rb +125 -0
- data/test/cases/attribute_methods/read_test.rb +60 -0
- data/test/cases/attribute_methods/serialization_test.rb +29 -0
- data/test/cases/attribute_methods_test.rb +952 -822
- data/test/cases/attribute_set_test.rb +200 -0
- data/test/cases/attribute_test.rb +180 -0
- data/test/cases/attributes_test.rb +136 -0
- data/test/cases/autosave_association_test.rb +1595 -0
- data/test/cases/base_test.rb +1638 -2133
- data/test/cases/batches_test.rb +212 -0
- data/test/cases/binary_test.rb +52 -0
- data/test/cases/bind_parameter_test.rb +100 -0
- data/test/cases/calculations_test.rb +646 -482
- data/test/cases/callbacks_test.rb +543 -0
- data/test/cases/clone_test.rb +40 -0
- data/test/cases/coders/yaml_column_test.rb +63 -0
- data/test/cases/column_alias_test.rb +17 -0
- data/test/cases/column_definition_test.rb +123 -0
- data/test/cases/connection_adapters/adapter_leasing_test.rb +54 -0
- data/test/cases/connection_adapters/connection_handler_test.rb +53 -0
- data/test/cases/connection_adapters/connection_specification_test.rb +12 -0
- data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +293 -0
- data/test/cases/connection_adapters/mysql_type_lookup_test.rb +65 -0
- data/test/cases/connection_adapters/quoting_test.rb +13 -0
- data/test/cases/connection_adapters/schema_cache_test.rb +56 -0
- data/test/cases/connection_adapters/type_lookup_test.rb +110 -0
- data/test/cases/connection_management_test.rb +122 -0
- data/test/cases/connection_pool_test.rb +346 -0
- data/test/cases/connection_specification/resolver_test.rb +116 -0
- data/test/cases/core_test.rb +112 -0
- data/test/cases/counter_cache_test.rb +209 -0
- data/test/cases/custom_locking_test.rb +17 -0
- data/test/cases/database_statements_test.rb +19 -0
- data/test/cases/date_time_test.rb +61 -0
- data/test/cases/defaults_test.rb +223 -0
- data/test/cases/dirty_test.rb +775 -0
- data/test/cases/disconnected_test.rb +28 -0
- data/test/cases/dup_test.rb +157 -0
- data/test/cases/enum_test.rb +290 -0
- data/test/cases/explain_subscriber_test.rb +64 -0
- data/test/cases/explain_test.rb +76 -0
- data/test/cases/finder_respond_to_test.rb +60 -0
- data/test/cases/finder_test.rb +1166 -0
- data/test/cases/fixture_set/file_test.rb +138 -0
- data/test/cases/fixtures_test.rb +897 -0
- data/test/cases/forbidden_attributes_protection_test.rb +99 -0
- data/test/cases/habtm_destroy_order_test.rb +61 -0
- data/test/cases/helper.rb +210 -0
- data/test/cases/hot_compatibility_test.rb +54 -0
- data/test/cases/i18n_test.rb +45 -0
- data/test/cases/inheritance_test.rb +375 -0
- data/test/cases/integration_test.rb +139 -0
- data/test/cases/invalid_connection_test.rb +22 -0
- data/test/cases/invalid_date_test.rb +32 -0
- data/test/cases/invertible_migration_test.rb +295 -0
- data/test/cases/json_serialization_test.rb +302 -0
- data/test/cases/locking_test.rb +477 -0
- data/test/cases/log_subscriber_test.rb +136 -0
- data/test/cases/migration/change_schema_test - Copy.rb +448 -0
- data/test/cases/migration/change_schema_test.rb +472 -0
- data/test/cases/migration/change_table_test.rb +224 -0
- data/test/cases/migration/column_attributes_test.rb +192 -0
- data/test/cases/migration/column_positioning_test.rb +56 -0
- data/test/cases/migration/columns_test.rb +304 -0
- data/test/cases/migration/command_recorder_test.rb +305 -0
- data/test/cases/migration/create_join_table_test.rb +148 -0
- data/test/cases/migration/foreign_key_test - Changed.rb +325 -0
- data/test/cases/migration/foreign_key_test.rb +360 -0
- data/test/cases/migration/helper.rb +39 -0
- data/test/cases/migration/index_test.rb +216 -0
- data/test/cases/migration/logger_test.rb +36 -0
- data/test/cases/migration/pending_migrations_test.rb +53 -0
- data/test/cases/migration/references_foreign_key_test.rb +214 -0
- data/test/cases/migration/references_index_test.rb +101 -0
- data/test/cases/migration/references_statements_test.rb +116 -0
- data/test/cases/migration/rename_table_test.rb +93 -0
- data/test/cases/migration/table_and_index_test.rb +24 -0
- data/test/cases/migration_test.rb +959 -2408
- data/test/cases/migrator_test.rb +388 -0
- data/test/cases/mixin_test.rb +70 -0
- data/test/cases/modules_test.rb +173 -0
- data/test/cases/multiparameter_attributes_test.rb +350 -0
- data/test/cases/multiple_db_test.rb +115 -0
- data/test/cases/nested_attributes_test.rb +1057 -0
- data/test/cases/nested_attributes_with_callbacks_test.rb +144 -0
- data/test/cases/persistence_test.rb +909 -642
- data/test/cases/pooled_connections_test.rb +81 -0
- data/test/cases/primary_keys_test.rb +237 -0
- data/test/cases/query_cache_test.rb +326 -257
- data/test/cases/quoting_test.rb +156 -0
- data/test/cases/readonly_test.rb +118 -0
- data/test/cases/reaper_test.rb +85 -0
- data/test/cases/reflection_test.rb +454 -0
- data/test/cases/relation/delegation_test.rb +68 -0
- data/test/cases/relation/merging_test.rb +161 -0
- data/test/cases/relation/mutation_test.rb +165 -0
- data/test/cases/relation/predicate_builder_test.rb +14 -0
- data/test/cases/relation/where_chain_test.rb +181 -0
- data/test/cases/relation/where_test.rb +300 -0
- data/test/cases/relation/where_test2.rb +36 -0
- data/test/cases/relation_test.rb +297 -0
- data/test/cases/relations_test.rb +1815 -1182
- data/test/cases/reload_models_test.rb +22 -0
- data/test/cases/result_test.rb +80 -0
- data/test/cases/sanitize_test.rb +83 -0
- data/test/cases/schema_dumper_test.rb +463 -256
- data/test/cases/scoping/default_scoping_test.rb +454 -0
- data/test/cases/scoping/named_scoping_test.rb +524 -0
- data/test/cases/scoping/relation_scoping_test.rb +357 -0
- data/test/cases/serialization_test.rb +104 -0
- data/test/cases/serialized_attribute_test.rb +277 -0
- data/test/cases/statement_cache_test.rb +98 -0
- data/test/cases/store_test.rb +194 -0
- data/test/cases/tasks/database_tasks_test.rb +396 -0
- data/test/cases/tasks/mysql_rake_test.rb +311 -0
- data/test/cases/tasks/postgresql_rake_test.rb +245 -0
- data/test/cases/tasks/sqlite_rake_test.rb +193 -0
- data/test/cases/test_case.rb +123 -0
- data/test/cases/timestamp_test.rb +468 -0
- data/test/cases/transaction_callbacks_test.rb +452 -300
- data/test/cases/transaction_isolation_test.rb +106 -0
- data/test/cases/transactions_test.rb +817 -0
- data/test/cases/type/decimal_test.rb +51 -0
- data/test/cases/type/integer_test.rb +121 -0
- data/test/cases/type/string_test.rb +36 -0
- data/test/cases/type/type_map_test.rb +177 -0
- data/test/cases/type/unsigned_integer_test.rb +18 -0
- data/test/cases/types_test.rb +141 -0
- data/test/cases/unconnected_test.rb +33 -0
- data/test/cases/validations/association_validation_test.rb +86 -0
- data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -0
- data/test/cases/validations/i18n_validation_test.rb +90 -0
- data/test/cases/validations/length_validation_test.rb +47 -0
- data/test/cases/validations/presence_validation_test.rb +68 -0
- data/test/cases/validations/uniqueness_validation_test.rb +434 -299
- data/test/cases/validations_repair_helper.rb +23 -0
- data/test/cases/validations_test.rb +165 -0
- data/test/cases/view_test.rb +113 -0
- data/test/cases/xml_serialization_test.rb +457 -408
- data/test/cases/yaml_serialization_test.rb +86 -0
- data/test/config.rb +5 -0
- data/test/config.yml +154 -154
- data/test/connections/native_ibm_db/connection.rb +43 -43
- data/test/fixtures/accounts.yml +29 -0
- data/test/fixtures/admin/accounts.yml +2 -0
- data/test/fixtures/admin/randomly_named_a9.yml +7 -0
- data/test/fixtures/admin/randomly_named_b0.yml +7 -0
- data/test/fixtures/admin/users.yml +10 -0
- data/test/fixtures/all/admin +1 -0
- data/test/fixtures/all/developers.yml +0 -0
- data/test/fixtures/all/people.yml +0 -0
- data/test/fixtures/all/tasks.yml +0 -0
- data/test/fixtures/author_addresses.yml +18 -0
- data/test/fixtures/author_favorites.yml +4 -0
- data/test/fixtures/authors.yml +23 -0
- data/test/fixtures/binaries.yml +133 -0
- data/test/fixtures/books.yml +11 -0
- data/test/fixtures/bulbs.yml +5 -0
- data/test/fixtures/cars.yml +9 -0
- data/test/fixtures/categories.yml +19 -0
- data/test/fixtures/categories/special_categories.yml +9 -0
- data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
- data/test/fixtures/categories_ordered.yml +7 -0
- data/test/fixtures/categories_posts.yml +31 -0
- data/test/fixtures/categorizations.yml +23 -0
- data/test/fixtures/clubs.yml +8 -0
- data/test/fixtures/collections.yml +3 -0
- data/test/fixtures/colleges.yml +3 -0
- data/test/fixtures/comments.yml +65 -0
- data/test/fixtures/companies.yml +67 -0
- data/test/fixtures/computers.yml +10 -0
- data/test/fixtures/courses.yml +8 -0
- data/test/fixtures/customers.yml +26 -0
- data/test/fixtures/dashboards.yml +6 -0
- data/test/fixtures/developers.yml +22 -0
- data/test/fixtures/developers_projects.yml +17 -0
- data/test/fixtures/dog_lovers.yml +7 -0
- data/test/fixtures/dogs.yml +4 -0
- data/test/fixtures/doubloons.yml +3 -0
- data/test/fixtures/edges.yml +5 -0
- data/test/fixtures/entrants.yml +14 -0
- data/test/fixtures/essays.yml +6 -0
- data/test/fixtures/faces.yml +11 -0
- data/test/fixtures/fk_test_has_fk.yml +3 -0
- data/test/fixtures/fk_test_has_pk.yml +2 -0
- data/test/fixtures/friendships.yml +4 -0
- data/test/fixtures/funny_jokes.yml +10 -0
- data/test/fixtures/interests.yml +33 -0
- data/test/fixtures/items.yml +3 -0
- data/test/fixtures/jobs.yml +7 -0
- data/test/fixtures/legacy_things.yml +3 -0
- data/test/fixtures/mateys.yml +4 -0
- data/test/fixtures/member_details.yml +8 -0
- data/test/fixtures/member_types.yml +6 -0
- data/test/fixtures/members.yml +11 -0
- data/test/fixtures/memberships.yml +34 -0
- data/test/fixtures/men.yml +5 -0
- data/test/fixtures/minimalistics.yml +2 -0
- data/test/fixtures/minivans.yml +5 -0
- data/test/fixtures/mixed_case_monkeys.yml +6 -0
- data/test/fixtures/mixins.yml +29 -0
- data/test/fixtures/movies.yml +7 -0
- data/test/fixtures/naked/csv/accounts.csv +1 -0
- data/test/fixtures/naked/yml/accounts.yml +1 -0
- data/test/fixtures/naked/yml/companies.yml +1 -0
- data/test/fixtures/naked/yml/courses.yml +1 -0
- data/test/fixtures/organizations.yml +5 -0
- data/test/fixtures/other_topics.yml +42 -0
- data/test/fixtures/owners.yml +9 -0
- data/test/fixtures/parrots.yml +27 -0
- data/test/fixtures/parrots_pirates.yml +7 -0
- data/test/fixtures/people.yml +24 -0
- data/test/fixtures/peoples_treasures.yml +3 -0
- data/test/fixtures/pets.yml +19 -0
- data/test/fixtures/pirates.yml +12 -0
- data/test/fixtures/posts.yml +80 -0
- data/test/fixtures/price_estimates.yml +7 -0
- data/test/fixtures/products.yml +4 -0
- data/test/fixtures/projects.yml +7 -0
- data/test/fixtures/randomly_named_a9.yml +7 -0
- data/test/fixtures/ratings.yml +14 -0
- data/test/fixtures/readers.yml +11 -0
- data/test/fixtures/references.yml +17 -0
- data/test/fixtures/reserved_words/distinct.yml +5 -0
- data/test/fixtures/reserved_words/distinct_select.yml +11 -0
- data/test/fixtures/reserved_words/group.yml +14 -0
- data/test/fixtures/reserved_words/select.yml +8 -0
- data/test/fixtures/reserved_words/values.yml +7 -0
- data/test/fixtures/ships.yml +6 -0
- data/test/fixtures/speedometers.yml +8 -0
- data/test/fixtures/sponsors.yml +12 -0
- data/test/fixtures/string_key_objects.yml +7 -0
- data/test/fixtures/subscribers.yml +11 -0
- data/test/fixtures/subscriptions.yml +12 -0
- data/test/fixtures/taggings.yml +78 -0
- data/test/fixtures/tags.yml +11 -0
- data/test/fixtures/tasks.yml +7 -0
- data/test/fixtures/teapots.yml +3 -0
- data/test/fixtures/to_be_linked/accounts.yml +2 -0
- data/test/fixtures/to_be_linked/users.yml +10 -0
- data/test/fixtures/topics.yml +49 -0
- data/test/fixtures/toys.yml +14 -0
- data/test/fixtures/traffic_lights.yml +10 -0
- data/test/fixtures/treasures.yml +10 -0
- data/test/fixtures/uuid_children.yml +3 -0
- data/test/fixtures/uuid_parents.yml +2 -0
- data/test/fixtures/variants.yml +4 -0
- data/test/fixtures/vegetables.yml +20 -0
- data/test/fixtures/vertices.yml +4 -0
- data/test/fixtures/warehouse_things.yml +3 -0
- data/test/fixtures/zines.yml +5 -0
- data/test/ibm_db_test.rb +24 -24
- data/test/migrations/10_urban/9_add_expressions.rb +11 -0
- data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -0
- data/test/migrations/magic/1_currencies_have_symbols.rb +12 -0
- data/test/migrations/missing/1000_people_have_middle_names.rb +9 -0
- data/test/migrations/missing/1_people_have_last_names.rb +9 -0
- data/test/migrations/missing/3_we_need_reminders.rb +12 -0
- data/test/migrations/missing/4_innocent_jointable.rb +12 -0
- data/test/migrations/rename/1_we_need_things.rb +11 -0
- data/test/migrations/rename/2_rename_things.rb +9 -0
- data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -0
- data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -0
- data/test/migrations/to_copy2/1_create_articles.rb +7 -0
- data/test/migrations/to_copy2/2_create_comments.rb +7 -0
- data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -0
- data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -0
- data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -0
- data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -0
- data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -0
- data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -0
- data/test/migrations/valid/2_we_need_reminders.rb +12 -0
- data/test/migrations/valid/3_innocent_jointable.rb +12 -0
- data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -0
- data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +12 -0
- data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +12 -0
- data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -0
- data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -0
- data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -0
- data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -0
- data/test/models/admin.rb +5 -0
- data/test/models/admin/account.rb +3 -0
- data/test/models/admin/randomly_named_c1.rb +3 -0
- data/test/models/admin/user.rb +40 -0
- data/test/models/aircraft.rb +4 -0
- data/test/models/arunit2_model.rb +3 -0
- data/test/models/author.rb +212 -0
- data/test/models/auto_id.rb +4 -0
- data/test/models/autoloadable/extra_firm.rb +2 -0
- data/test/models/binary.rb +2 -0
- data/test/models/bird.rb +12 -0
- data/test/models/book.rb +18 -0
- data/test/models/boolean.rb +2 -0
- data/test/models/bulb.rb +51 -0
- data/test/models/cake_designer.rb +3 -0
- data/test/models/car.rb +26 -0
- data/test/models/carrier.rb +2 -0
- data/test/models/categorization.rb +19 -0
- data/test/models/category.rb +35 -0
- data/test/models/chef.rb +3 -0
- data/test/models/citation.rb +3 -0
- data/test/models/club.rb +23 -0
- data/test/models/college.rb +10 -0
- data/test/models/column.rb +3 -0
- data/test/models/column_name.rb +3 -0
- data/test/models/comment.rb +64 -0
- data/test/models/company.rb +225 -0
- data/test/models/company_in_module.rb +98 -0
- data/test/models/computer.rb +3 -0
- data/test/models/contact.rb +41 -0
- data/test/models/contract.rb +20 -0
- data/test/models/country.rb +7 -0
- data/test/models/course.rb +6 -0
- data/test/models/customer.rb +77 -0
- data/test/models/customer_carrier.rb +14 -0
- data/test/models/dashboard.rb +3 -0
- data/test/models/default.rb +2 -0
- data/test/models/department.rb +4 -0
- data/test/models/developer.rb +252 -0
- data/test/models/dog.rb +5 -0
- data/test/models/dog_lover.rb +5 -0
- data/test/models/doubloon.rb +12 -0
- data/test/models/drink_designer.rb +3 -0
- data/test/models/edge.rb +5 -0
- data/test/models/electron.rb +5 -0
- data/test/models/engine.rb +4 -0
- data/test/models/entrant.rb +3 -0
- data/test/models/essay.rb +5 -0
- data/test/models/event.rb +3 -0
- data/test/models/eye.rb +37 -0
- data/test/models/face.rb +9 -0
- data/test/models/friendship.rb +6 -0
- data/test/models/guid.rb +2 -0
- data/test/models/hotel.rb +6 -0
- data/test/models/image.rb +3 -0
- data/test/models/interest.rb +5 -0
- data/test/models/invoice.rb +4 -0
- data/test/models/item.rb +7 -0
- data/test/models/job.rb +7 -0
- data/test/models/joke.rb +7 -0
- data/test/models/keyboard.rb +3 -0
- data/test/models/legacy_thing.rb +3 -0
- data/test/models/lesson.rb +11 -0
- data/test/models/line_item.rb +3 -0
- data/test/models/liquid.rb +4 -0
- data/test/models/man.rb +11 -0
- data/test/models/matey.rb +4 -0
- data/test/models/member.rb +41 -0
- data/test/models/member_detail.rb +7 -0
- data/test/models/member_type.rb +3 -0
- data/test/models/membership.rb +35 -0
- data/test/models/minimalistic.rb +2 -0
- data/test/models/minivan.rb +9 -0
- data/test/models/mixed_case_monkey.rb +3 -0
- data/test/models/molecule.rb +6 -0
- data/test/models/movie.rb +5 -0
- data/test/models/order.rb +4 -0
- data/test/models/organization.rb +14 -0
- data/test/models/owner.rb +34 -0
- data/test/models/parrot.rb +29 -0
- data/test/models/person.rb +143 -0
- data/test/models/personal_legacy_thing.rb +4 -0
- data/test/models/pet.rb +15 -0
- data/test/models/pirate.rb +92 -0
- data/test/models/possession.rb +3 -0
- data/test/models/post.rb +264 -0
- data/test/models/price_estimate.rb +4 -0
- data/test/models/professor.rb +5 -0
- data/test/models/project.rb +29 -0
- data/test/models/publisher.rb +2 -0
- data/test/models/publisher/article.rb +4 -0
- data/test/models/publisher/magazine.rb +3 -0
- data/test/models/randomly_named_c1.rb +3 -0
- data/test/models/rating.rb +4 -0
- data/test/models/reader.rb +23 -0
- data/test/models/record.rb +2 -0
- data/test/models/reference.rb +22 -0
- data/test/models/reply.rb +61 -0
- data/test/models/ship.rb +33 -0
- data/test/models/ship_part.rb +8 -0
- data/test/models/shop.rb +17 -0
- data/test/models/shop_account.rb +6 -0
- data/test/models/speedometer.rb +6 -0
- data/test/models/sponsor.rb +7 -0
- data/test/models/string_key_object.rb +3 -0
- data/test/models/student.rb +4 -0
- data/test/models/subject.rb +16 -0
- data/test/models/subscriber.rb +8 -0
- data/test/models/subscription.rb +4 -0
- data/test/models/tag.rb +7 -0
- data/test/models/tagging.rb +13 -0
- data/test/models/task.rb +5 -0
- data/test/models/topic.rb +124 -0
- data/test/models/toy.rb +6 -0
- data/test/models/traffic_light.rb +4 -0
- data/test/models/treasure.rb +14 -0
- data/test/models/treaty.rb +7 -0
- data/test/models/tyre.rb +11 -0
- data/test/models/uuid_child.rb +3 -0
- data/test/models/uuid_parent.rb +3 -0
- data/test/models/vegetables.rb +24 -0
- data/test/models/vehicle.rb +7 -0
- data/test/models/vertex.rb +9 -0
- data/test/models/warehouse_thing.rb +5 -5
- data/test/models/wheel.rb +3 -0
- data/test/models/without_table.rb +3 -0
- data/test/models/zine.rb +3 -0
- data/test/schema/mysql2_specific_schema.rb +58 -0
- data/test/schema/mysql_specific_schema.rb +70 -0
- data/test/schema/oracle_specific_schema.rb +43 -0
- data/test/schema/postgresql_specific_schema.rb +202 -0
- data/test/schema/schema.rb +938 -751
- data/test/schema/sqlite_specific_schema.rb +22 -0
- data/test/support/config.rb +43 -0
- data/test/support/connection.rb +22 -0
- data/test/support/connection_helper.rb +14 -0
- data/test/support/ddl_helper.rb +8 -0
- data/test/support/schema_dumping_helper.rb +20 -0
- metadata +444 -18
data/test/models/toy.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
class Treasure < ActiveRecord::Base
|
2
|
+
has_and_belongs_to_many :parrots
|
3
|
+
belongs_to :looter, :polymorphic => true
|
4
|
+
# No counter_cache option given
|
5
|
+
belongs_to :ship
|
6
|
+
|
7
|
+
has_many :price_estimates, :as => :estimate_of
|
8
|
+
has_and_belongs_to_many :rich_people, join_table: 'peoples_treasures', validate: false
|
9
|
+
|
10
|
+
accepts_nested_attributes_for :looter
|
11
|
+
end
|
12
|
+
|
13
|
+
class HiddenTreasure < Treasure
|
14
|
+
end
|
data/test/models/tyre.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
class Vegetable < ActiveRecord::Base
|
2
|
+
|
3
|
+
validates_presence_of :name
|
4
|
+
|
5
|
+
def self.inheritance_column
|
6
|
+
'custom_type'
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class Cucumber < Vegetable
|
11
|
+
end
|
12
|
+
|
13
|
+
class Cabbage < Vegetable
|
14
|
+
end
|
15
|
+
|
16
|
+
class GreenCabbage < Cabbage
|
17
|
+
end
|
18
|
+
|
19
|
+
class KingCole < GreenCabbage
|
20
|
+
end
|
21
|
+
|
22
|
+
class RedCabbage < Cabbage
|
23
|
+
belongs_to :seller, :class_name => 'Company'
|
24
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# This class models a vertex in a directed graph.
|
2
|
+
class Vertex < ActiveRecord::Base
|
3
|
+
has_many :sink_edges, :class_name => 'Edge', :foreign_key => 'source_id'
|
4
|
+
has_many :sinks, :through => :sink_edges
|
5
|
+
|
6
|
+
has_and_belongs_to_many :sources,
|
7
|
+
:class_name => 'Vertex', :join_table => 'edges',
|
8
|
+
:foreign_key => 'sink_id', :association_foreign_key => 'source_id'
|
9
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
class WarehouseThing < ActiveRecord::Base
|
2
|
-
|
3
|
-
|
4
|
-
validates_uniqueness_of :value
|
5
|
-
end
|
1
|
+
class WarehouseThing < ActiveRecord::Base
|
2
|
+
self.table_name = "warehouse_things"
|
3
|
+
|
4
|
+
validates_uniqueness_of :value
|
5
|
+
end
|
data/test/models/zine.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
ActiveRecord::Schema.define do
|
2
|
+
create_table :binary_fields, force: true do |t|
|
3
|
+
t.binary :var_binary, limit: 255
|
4
|
+
t.binary :var_binary_large, limit: 4095
|
5
|
+
t.column :tiny_blob, 'tinyblob', limit: 255
|
6
|
+
t.binary :normal_blob, limit: 65535
|
7
|
+
t.binary :medium_blob, limit: 16777215
|
8
|
+
t.binary :long_blob, limit: 2147483647
|
9
|
+
t.text :tiny_text, limit: 255
|
10
|
+
t.text :normal_text, limit: 65535
|
11
|
+
t.text :medium_text, limit: 16777215
|
12
|
+
t.text :long_text, limit: 2147483647
|
13
|
+
end
|
14
|
+
|
15
|
+
add_index :binary_fields, :var_binary
|
16
|
+
|
17
|
+
create_table :key_tests, force: true, :options => 'ENGINE=MyISAM' do |t|
|
18
|
+
t.string :awesome
|
19
|
+
t.string :pizza
|
20
|
+
t.string :snacks
|
21
|
+
end
|
22
|
+
|
23
|
+
add_index :key_tests, :awesome, :type => :fulltext, :name => 'index_key_tests_on_awesome'
|
24
|
+
add_index :key_tests, :pizza, :using => :btree, :name => 'index_key_tests_on_pizza'
|
25
|
+
add_index :key_tests, :snacks, :name => 'index_key_tests_on_snack'
|
26
|
+
|
27
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
28
|
+
DROP PROCEDURE IF EXISTS ten;
|
29
|
+
SQL
|
30
|
+
|
31
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
32
|
+
CREATE PROCEDURE ten() SQL SECURITY INVOKER
|
33
|
+
BEGIN
|
34
|
+
select 10;
|
35
|
+
END
|
36
|
+
SQL
|
37
|
+
|
38
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
39
|
+
DROP TABLE IF EXISTS collation_tests;
|
40
|
+
SQL
|
41
|
+
|
42
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
43
|
+
CREATE TABLE collation_tests (
|
44
|
+
string_cs_column VARCHAR(1) COLLATE utf8_bin,
|
45
|
+
string_ci_column VARCHAR(1) COLLATE utf8_general_ci
|
46
|
+
) CHARACTER SET utf8 COLLATE utf8_general_ci
|
47
|
+
SQL
|
48
|
+
|
49
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
50
|
+
DROP TABLE IF EXISTS enum_tests;
|
51
|
+
SQL
|
52
|
+
|
53
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
54
|
+
CREATE TABLE enum_tests (
|
55
|
+
enum_column ENUM('text','blob','tiny','medium','long')
|
56
|
+
)
|
57
|
+
SQL
|
58
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
ActiveRecord::Schema.define do
|
2
|
+
create_table :binary_fields, force: true do |t|
|
3
|
+
t.binary :var_binary, limit: 255
|
4
|
+
t.binary :var_binary_large, limit: 4095
|
5
|
+
t.column :tiny_blob, 'tinyblob', limit: 255
|
6
|
+
t.binary :normal_blob, limit: 65535
|
7
|
+
t.binary :medium_blob, limit: 16777215
|
8
|
+
t.binary :long_blob, limit: 2147483647
|
9
|
+
t.text :tiny_text, limit: 255
|
10
|
+
t.text :normal_text, limit: 65535
|
11
|
+
t.text :medium_text, limit: 16777215
|
12
|
+
t.text :long_text, limit: 2147483647
|
13
|
+
end
|
14
|
+
|
15
|
+
add_index :binary_fields, :var_binary
|
16
|
+
|
17
|
+
create_table :key_tests, force: true, :options => 'ENGINE=MyISAM' do |t|
|
18
|
+
t.string :awesome
|
19
|
+
t.string :pizza
|
20
|
+
t.string :snacks
|
21
|
+
end
|
22
|
+
|
23
|
+
add_index :key_tests, :awesome, :type => :fulltext, :name => 'index_key_tests_on_awesome'
|
24
|
+
add_index :key_tests, :pizza, :using => :btree, :name => 'index_key_tests_on_pizza'
|
25
|
+
add_index :key_tests, :snacks, :name => 'index_key_tests_on_snack'
|
26
|
+
|
27
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
28
|
+
DROP PROCEDURE IF EXISTS ten;
|
29
|
+
SQL
|
30
|
+
|
31
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
32
|
+
CREATE PROCEDURE ten() SQL SECURITY INVOKER
|
33
|
+
BEGIN
|
34
|
+
select 10;
|
35
|
+
END
|
36
|
+
SQL
|
37
|
+
|
38
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
39
|
+
DROP PROCEDURE IF EXISTS topics;
|
40
|
+
SQL
|
41
|
+
|
42
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
43
|
+
CREATE PROCEDURE topics() SQL SECURITY INVOKER
|
44
|
+
BEGIN
|
45
|
+
select * from topics limit 1;
|
46
|
+
END
|
47
|
+
SQL
|
48
|
+
|
49
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
50
|
+
DROP TABLE IF EXISTS collation_tests;
|
51
|
+
SQL
|
52
|
+
|
53
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
54
|
+
CREATE TABLE collation_tests (
|
55
|
+
string_cs_column VARCHAR(1) COLLATE utf8_bin,
|
56
|
+
string_ci_column VARCHAR(1) COLLATE utf8_general_ci
|
57
|
+
) CHARACTER SET utf8 COLLATE utf8_general_ci
|
58
|
+
SQL
|
59
|
+
|
60
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
61
|
+
DROP TABLE IF EXISTS enum_tests;
|
62
|
+
SQL
|
63
|
+
|
64
|
+
ActiveRecord::Base.connection.execute <<-SQL
|
65
|
+
CREATE TABLE enum_tests (
|
66
|
+
enum_column ENUM('text','blob','tiny','medium','long')
|
67
|
+
)
|
68
|
+
SQL
|
69
|
+
|
70
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
ActiveRecord::Schema.define do
|
2
|
+
|
3
|
+
execute "drop table test_oracle_defaults" rescue nil
|
4
|
+
execute "drop sequence test_oracle_defaults_seq" rescue nil
|
5
|
+
execute "drop sequence companies_nonstd_seq" rescue nil
|
6
|
+
execute "drop table defaults" rescue nil
|
7
|
+
execute "drop sequence defaults_seq" rescue nil
|
8
|
+
|
9
|
+
execute <<-SQL
|
10
|
+
create table test_oracle_defaults (
|
11
|
+
id integer not null primary key,
|
12
|
+
test_char char(1) default 'X' not null,
|
13
|
+
test_string varchar2(20) default 'hello' not null,
|
14
|
+
test_int integer default 3 not null
|
15
|
+
)
|
16
|
+
SQL
|
17
|
+
|
18
|
+
execute <<-SQL
|
19
|
+
create sequence test_oracle_defaults_seq minvalue 10000
|
20
|
+
SQL
|
21
|
+
|
22
|
+
execute "create sequence companies_nonstd_seq minvalue 10000"
|
23
|
+
|
24
|
+
execute <<-SQL
|
25
|
+
CREATE TABLE defaults (
|
26
|
+
id integer not null,
|
27
|
+
modified_date date default sysdate,
|
28
|
+
modified_date_function date default sysdate,
|
29
|
+
fixed_date date default to_date('2004-01-01', 'YYYY-MM-DD'),
|
30
|
+
modified_time date default sysdate,
|
31
|
+
modified_time_function date default sysdate,
|
32
|
+
fixed_time date default TO_DATE('2004-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),
|
33
|
+
char1 varchar2(1) default 'Y',
|
34
|
+
char2 varchar2(50) default 'a varchar field',
|
35
|
+
char3 clob default 'a text field',
|
36
|
+
positive_integer integer default 1,
|
37
|
+
negative_integer integer default -1,
|
38
|
+
decimal_number number(3,2) default 2.78
|
39
|
+
)
|
40
|
+
SQL
|
41
|
+
execute "create sequence defaults_seq minvalue 10000"
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,202 @@
|
|
1
|
+
ActiveRecord::Schema.define do
|
2
|
+
|
3
|
+
%w(postgresql_tsvectors postgresql_hstores postgresql_arrays postgresql_moneys postgresql_numbers postgresql_times
|
4
|
+
postgresql_network_addresses postgresql_uuids postgresql_ltrees postgresql_oids postgresql_xml_data_type defaults
|
5
|
+
geometrics postgresql_timestamp_with_zones postgresql_partitioned_table postgresql_partitioned_table_parent
|
6
|
+
postgresql_citext).each do |table_name|
|
7
|
+
execute "DROP TABLE IF EXISTS #{quote_table_name table_name}"
|
8
|
+
end
|
9
|
+
|
10
|
+
execute 'DROP SEQUENCE IF EXISTS companies_nonstd_seq CASCADE'
|
11
|
+
execute 'CREATE SEQUENCE companies_nonstd_seq START 101 OWNED BY companies.id'
|
12
|
+
execute "ALTER TABLE companies ALTER COLUMN id SET DEFAULT nextval('companies_nonstd_seq')"
|
13
|
+
execute 'DROP SEQUENCE IF EXISTS companies_id_seq'
|
14
|
+
|
15
|
+
execute 'DROP FUNCTION IF EXISTS partitioned_insert_trigger()'
|
16
|
+
|
17
|
+
execute "DROP SCHEMA IF EXISTS schema_1 CASCADE"
|
18
|
+
|
19
|
+
%w(accounts_id_seq developers_id_seq projects_id_seq topics_id_seq customers_id_seq orders_id_seq).each do |seq_name|
|
20
|
+
execute "SELECT setval('#{seq_name}', 100)"
|
21
|
+
end
|
22
|
+
|
23
|
+
execute <<_SQL
|
24
|
+
CREATE TABLE defaults (
|
25
|
+
id serial primary key,
|
26
|
+
modified_date date default CURRENT_DATE,
|
27
|
+
modified_date_function date default now(),
|
28
|
+
fixed_date date default '2004-01-01',
|
29
|
+
modified_time timestamp default CURRENT_TIMESTAMP,
|
30
|
+
modified_time_function timestamp default now(),
|
31
|
+
fixed_time timestamp default '2004-01-01 00:00:00.000000-00',
|
32
|
+
char1 char(1) default 'Y',
|
33
|
+
char2 character varying(50) default 'a varchar field',
|
34
|
+
char3 text default 'a text field',
|
35
|
+
positive_integer integer default 1,
|
36
|
+
negative_integer integer default -1,
|
37
|
+
bigint_default bigint default 0::bigint,
|
38
|
+
decimal_number decimal(3,2) default 2.78,
|
39
|
+
multiline_default text DEFAULT '--- []
|
40
|
+
|
41
|
+
'::text
|
42
|
+
);
|
43
|
+
_SQL
|
44
|
+
|
45
|
+
execute "CREATE SCHEMA schema_1"
|
46
|
+
execute "CREATE DOMAIN schema_1.text AS text"
|
47
|
+
execute "CREATE DOMAIN schema_1.varchar AS varchar"
|
48
|
+
execute "CREATE DOMAIN schema_1.bpchar AS bpchar"
|
49
|
+
|
50
|
+
execute <<_SQL
|
51
|
+
CREATE TABLE geometrics (
|
52
|
+
id serial primary key,
|
53
|
+
a_point point,
|
54
|
+
-- a_line line, (the line type is currently not implemented in postgresql)
|
55
|
+
a_line_segment lseg,
|
56
|
+
a_box box,
|
57
|
+
a_path path,
|
58
|
+
a_polygon polygon,
|
59
|
+
a_circle circle
|
60
|
+
);
|
61
|
+
_SQL
|
62
|
+
|
63
|
+
execute <<_SQL
|
64
|
+
CREATE TABLE postgresql_arrays (
|
65
|
+
id SERIAL PRIMARY KEY,
|
66
|
+
commission_by_quarter INTEGER[],
|
67
|
+
nicknames TEXT[]
|
68
|
+
);
|
69
|
+
_SQL
|
70
|
+
|
71
|
+
execute <<_SQL
|
72
|
+
CREATE TABLE postgresql_uuids (
|
73
|
+
id SERIAL PRIMARY KEY,
|
74
|
+
guid uuid,
|
75
|
+
compact_guid uuid
|
76
|
+
);
|
77
|
+
_SQL
|
78
|
+
|
79
|
+
execute <<_SQL
|
80
|
+
CREATE TABLE postgresql_tsvectors (
|
81
|
+
id SERIAL PRIMARY KEY,
|
82
|
+
text_vector tsvector
|
83
|
+
);
|
84
|
+
_SQL
|
85
|
+
|
86
|
+
if 't' == select_value("select 'hstore'=ANY(select typname from pg_type)")
|
87
|
+
execute <<_SQL
|
88
|
+
CREATE TABLE postgresql_hstores (
|
89
|
+
id SERIAL PRIMARY KEY,
|
90
|
+
hash_store hstore default ''::hstore
|
91
|
+
);
|
92
|
+
_SQL
|
93
|
+
end
|
94
|
+
|
95
|
+
if 't' == select_value("select 'ltree'=ANY(select typname from pg_type)")
|
96
|
+
execute <<_SQL
|
97
|
+
CREATE TABLE postgresql_ltrees (
|
98
|
+
id SERIAL PRIMARY KEY,
|
99
|
+
path ltree
|
100
|
+
);
|
101
|
+
_SQL
|
102
|
+
end
|
103
|
+
|
104
|
+
if 't' == select_value("select 'citext'=ANY(select typname from pg_type)")
|
105
|
+
execute <<_SQL
|
106
|
+
CREATE TABLE postgresql_citext (
|
107
|
+
id SERIAL PRIMARY KEY,
|
108
|
+
text_citext citext default ''::citext
|
109
|
+
);
|
110
|
+
_SQL
|
111
|
+
end
|
112
|
+
|
113
|
+
execute <<_SQL
|
114
|
+
CREATE TABLE postgresql_numbers (
|
115
|
+
id SERIAL PRIMARY KEY,
|
116
|
+
single REAL,
|
117
|
+
double DOUBLE PRECISION
|
118
|
+
);
|
119
|
+
_SQL
|
120
|
+
|
121
|
+
execute <<_SQL
|
122
|
+
CREATE TABLE postgresql_times (
|
123
|
+
id SERIAL PRIMARY KEY,
|
124
|
+
time_interval INTERVAL,
|
125
|
+
scaled_time_interval INTERVAL(6)
|
126
|
+
);
|
127
|
+
_SQL
|
128
|
+
|
129
|
+
execute <<_SQL
|
130
|
+
CREATE TABLE postgresql_network_addresses (
|
131
|
+
id SERIAL PRIMARY KEY,
|
132
|
+
cidr_address CIDR default '192.168.1.0/24',
|
133
|
+
inet_address INET default '192.168.1.1',
|
134
|
+
mac_address MACADDR default 'ff:ff:ff:ff:ff:ff'
|
135
|
+
);
|
136
|
+
_SQL
|
137
|
+
|
138
|
+
execute <<_SQL
|
139
|
+
CREATE TABLE postgresql_oids (
|
140
|
+
id SERIAL PRIMARY KEY,
|
141
|
+
obj_id OID
|
142
|
+
);
|
143
|
+
_SQL
|
144
|
+
|
145
|
+
execute <<_SQL
|
146
|
+
CREATE TABLE postgresql_timestamp_with_zones (
|
147
|
+
id SERIAL PRIMARY KEY,
|
148
|
+
time TIMESTAMP WITH TIME ZONE
|
149
|
+
);
|
150
|
+
_SQL
|
151
|
+
|
152
|
+
begin
|
153
|
+
execute <<_SQL
|
154
|
+
CREATE TABLE postgresql_partitioned_table_parent (
|
155
|
+
id SERIAL PRIMARY KEY,
|
156
|
+
number integer
|
157
|
+
);
|
158
|
+
CREATE TABLE postgresql_partitioned_table ( )
|
159
|
+
INHERITS (postgresql_partitioned_table_parent);
|
160
|
+
|
161
|
+
CREATE OR REPLACE FUNCTION partitioned_insert_trigger()
|
162
|
+
RETURNS TRIGGER AS $$
|
163
|
+
BEGIN
|
164
|
+
INSERT INTO postgresql_partitioned_table VALUES (NEW.*);
|
165
|
+
RETURN NULL;
|
166
|
+
END;
|
167
|
+
$$
|
168
|
+
LANGUAGE plpgsql;
|
169
|
+
|
170
|
+
CREATE TRIGGER insert_partitioning_trigger
|
171
|
+
BEFORE INSERT ON postgresql_partitioned_table_parent
|
172
|
+
FOR EACH ROW EXECUTE PROCEDURE partitioned_insert_trigger();
|
173
|
+
_SQL
|
174
|
+
rescue ActiveRecord::StatementInvalid => e
|
175
|
+
if e.message =~ /language "plpgsql" does not exist/
|
176
|
+
execute "CREATE LANGUAGE 'plpgsql';"
|
177
|
+
retry
|
178
|
+
else
|
179
|
+
raise e
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
begin
|
184
|
+
execute <<_SQL
|
185
|
+
CREATE TABLE postgresql_xml_data_type (
|
186
|
+
id SERIAL PRIMARY KEY,
|
187
|
+
data xml
|
188
|
+
);
|
189
|
+
_SQL
|
190
|
+
rescue #This version of PostgreSQL either has no XML support or is was not compiled with XML support: skipping table
|
191
|
+
end
|
192
|
+
|
193
|
+
# This table is to verify if the :limit option is being ignored for text and binary columns
|
194
|
+
create_table :limitless_fields, force: true do |t|
|
195
|
+
t.binary :binary, limit: 100_000
|
196
|
+
t.text :text, limit: 100_000
|
197
|
+
end
|
198
|
+
|
199
|
+
create_table :bigint_array, force: true do |t|
|
200
|
+
t.integer :big_int_data_points, limit: 8, array: true
|
201
|
+
end
|
202
|
+
end
|