Commit Graph

87 Commits

Author SHA1 Message Date
Mark Rowe 347145b4f1 Merge pull request #8 from realm/mar-migrate-required-to-optional
Support migrating required columns to optional, preserving their contents
2015-10-21 14:40:44 -07:00
Mark Rowe 0b45772a0b Add a test showing our behavior when migrating from an optional column to a required column.
Optional values are not automatically migrated to required columns since it is a lossy process.

This test case revealed an issue where the number of objects can be lost if all properties of an
object were optional and are all being migrated to required. This happens because the migration
process removes the optional columns in a first pass, and recreates them as required in a second
pass. Since this results in all columns being removed, we lose track of how many objects were
stored. We avoid this by detecting the case where we are about to remove the last column and
inserting a placeholder column that we'll remove after inserting the new columns.
2015-10-20 17:52:25 -07:00
Mark Rowe 9f1702a10f Support migrating required columns to optional, preserving their contents.
Required columns are migrated to optional by creating a new nullable column,
copying the data from the required column to the optional column, then removing
the original required column.
2015-10-20 17:52:25 -07:00
Thomas Goyne f5b790cf87 Merge pull request #6 from realm/tg-impl
Move things which are not part of the API to an impl directory/namespace
2015-10-20 09:59:10 -07:00
Thomas Goyne 6dfeaf8080 Move things which are not part of the API to an impl directory/namespace 2015-10-15 11:30:08 -07:00
Ari Lazier 513e4834bc Merge pull request #4 from realm/tg-realm
Merge objectstore changes from obj-c
2015-09-18 18:03:16 +02:00
Thomas Goyne f6467778e0 Send changes_available() even if autorefresh is enabled 2015-09-10 14:15:57 -07:00
Thomas Goyne 21d32bf581 Add a bit of documentation for RealmDelegate 2015-09-10 14:15:57 -07:00
Thomas Goyne 95c80c98e6 Fix error in cleanup after an error during a migration 2015-09-09 11:25:55 -07:00
Thomas Goyne b7936bb047 Simplify column shifting for removed properties a little 2015-09-09 11:25:55 -07:00
Thomas Goyne a0f1dab71b Add a Schema class, move lookup by name and internal-consistency checks there 2015-09-09 11:25:55 -07:00
Thomas Goyne b381437a45 Make Realm::compact() more robust
Throw if it's called on a read-only Realm and ensure the Realm is left in a
valid state regardless of the starting state.
2015-09-09 11:25:55 -07:00
Thomas Goyne 6133eebf8b Reduce the scope of a variable 2015-09-09 11:25:55 -07:00
Thomas Goyne 0c111a2035 Fix a comment 2015-09-09 11:25:55 -07:00
Thomas Goyne ba278c5d4f Fix checks for what types of columns can be optional 2015-09-09 11:25:54 -07:00
Thomas Goyne 7de20ea3a6 USe more const refs to avoid copies 2015-09-09 11:25:54 -07:00
Thomas Goyne dbac77f69b Make a bunch of things const 2015-09-09 11:25:54 -07:00
Thomas Goyne 14004504b1 Remove an unused function 2015-09-09 11:25:54 -07:00
Thomas Goyne 06e0ff8373 Share ExternalCommitHelpers between Realm instances for a single path 2015-09-09 11:25:54 -07:00
Thomas Goyne f79dec9033 Allow more nullable property types when supported 2015-09-09 11:25:54 -07:00
Thomas Goyne 0eb0bd14d7 Honor is_nullable when creating columns 2015-09-09 11:25:54 -07:00
Thomas Goyne ea5c47510b Refactor schema initialization a bit
Change schema verification to operate on a pair of Schema objects rather than a
Schema and a Group to eliminate some redundant work done, defer some of the
work done for migrations to within the migration block to avoid doing it
unnecessarily, and make passing in a custom schema in the Config when creating
a Realm entirely equivalent to calling update_schema() afterwards.
2015-09-09 11:25:54 -07:00
Thomas Goyne e4f29fe221 Move the interprocess notification functionality to the object store 2015-09-09 11:25:53 -07:00
Thomas Goyne b129ebe8c1 Shuffle stuff around and clean some things up 2015-09-09 11:25:53 -07:00
Thomas Goyne eeb2ddd794 Improve array KVO performance a bit 2015-09-09 11:25:53 -07:00
Thomas Goyne c3649fbd17 Skip PK uniqueness checking when first creating a Realm file 2015-09-09 11:25:53 -07:00
Thomas Goyne 0a41c85d0a Improve performance of realm_requires_update() and make more things const 2015-09-09 11:25:53 -07:00
Thomas Goyne efdfa08524 Port some of the KVO support functionality to the object store 2015-09-09 11:25:53 -07:00
Thomas Goyne 65e1eb5d08 Add the ability to bypass the Realm cache entirely 2015-09-09 11:25:53 -07:00
Thomas Goyne 3f226cf342 Rework change notifications
Switch to an abstract class rather than std::function in preparation for having
more kinds of notifications with different arguments for KVO.
2015-09-09 11:25:53 -07:00
Thomas Goyne 045c7b2066 Add Realm::get_schema_version() 2015-09-09 11:25:52 -07:00
Thomas Goyne e4377bb42a Change realm::Schema to a vector rather than a map
Much faster to copy and destroy with no loss in lookup performance.
2015-09-09 11:25:52 -07:00
Thomas Goyne cae4cf2fc0 Remove property.hpp include from object_schema.hpp 2015-09-09 11:25:52 -07:00
Thomas Goyne 55e6cca243 Convert RLMRealmConfiguration to a wrapper around Realm::Config 2015-09-09 11:25:52 -07:00
Thomas Goyne 563a8374d0 Use NSDMIs for realm::Property 2015-09-09 11:25:52 -07:00
Thomas Goyne 0ae1bb188e Don't cache dynamic realms in the ObjectStore cache either 2015-09-09 11:25:52 -07:00
Thomas Goyne 25a6734111 Eliminate some copies 2015-09-09 11:25:52 -07:00
Thomas Goyne 45890f2772 Use NSDMIs for Realm 2015-09-09 11:25:52 -07:00
Thomas Goyne 348f4a7b39 Reduce s_init_mutex's scope 2015-09-09 11:25:51 -07:00
Thomas Goyne b4f856bdd0 Use NSDMIs for Realm::Config and make it moveable 2015-09-09 11:25:51 -07:00
Thomas Goyne a91839bf7e Store a copy of the encryption key 2015-09-04 11:51:19 -07:00
Ari Lazier 0700428945 Merge pull request #3 from realm/al-bugfixes
Bugfixes from the cocoa branch
2015-08-13 09:45:36 -07:00
Ari Lazier b0843356dc clear Realm cache between tests 2015-08-13 09:42:21 -07:00
Ari Lazier cb8364c255 property copy schema from cached realms 2015-08-13 09:42:21 -07:00
Ari Lazier 8712c8bc2c fixes for latest object store changes 2015-08-13 09:42:21 -07:00
JP Simard 453e4d8277 Fix crash when adding a property to a model without updating the schema version. 2015-08-13 09:42:21 -07:00
Ari Lazier 043f5ff4ab Merge pull request #1 from realm/al-realm
SharedRealm object with support for transactions and notifications
2015-08-10 09:23:11 -07:00
Ari Lazier 6ef8e214f3 move exception message creation to exception constructors 2015-07-30 12:22:01 -07:00
Ari Lazier 136f9a4640 add more object_schema validation 2015-07-28 12:17:58 -07:00
Ari Lazier 373375fa1b cleaup schema initialization 2015-07-28 12:17:58 -07:00