Commit Graph

294 Commits

Author SHA1 Message Date
Ari Lazier c9ef337552 make object members private 2015-10-26 13:24:27 -07:00
Ari Lazier 31819a5ee6 Merge commit '347145b4f1c40409c68af0ad61be15ee5f9d04f2' into al-os 2015-10-26 12:52:20 -07:00
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
Ari Lazier 1fa7c018ea clean up per realm resources/threads 2015-10-19 14:25:35 -07:00
Ari Lazier dace77579b store schema and prototypes on the realm object 2015-10-19 13:39:21 -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 8a2e24daac move property getters to object store code 2015-10-13 15:25:06 -07:00
Ari Lazier 06260bc3f0 move List class to its own file 2015-10-13 14:44:31 -07:00
Ari Lazier 286c652e42 Merge pull request #55 from realm/al-migrations
Minimal migration tests - use same path for all tests
2015-10-12 17:26:51 -07:00
Ari Lazier b27b7941f0 pr fixes 2015-10-12 17:18:49 -07:00
Ari Lazier ad677b7873 allow running all tests at the same path by invalidating all cached realm paths between test runs 2015-10-12 16:43:05 -07:00
Scott Kyle c8b6efb320 Out of bounds getters for Results return undefined 2015-10-12 15:35:13 -07:00
Scott Kyle b70e5432b7 Setting properties outside transaction should throw
Resolves #40
2015-10-12 02:02:23 -07:00
Ari Lazier d88b089b9f update to latest object store code 2015-09-28 15:47:32 -07:00
Thomas Goyne 0c18978887 Send changes_available() even if autorefresh is enabled 2015-09-28 15:33:45 -07:00
Ari Lazier cb7360c6a3 use latest object store changes 2015-09-28 15:33:44 -07:00
Thomas Goyne 981e7007f7 Fix error in cleanup after an error during a migration 2015-09-28 15:33:44 -07:00
Thomas Goyne 1fcc5a1be8 Simplify column shifting for removed properties a little 2015-09-28 15:33:43 -07:00
Thomas Goyne df6d6e8618 Add a Schema class, move lookup by name and internal-consistency checks there 2015-09-28 15:33:43 -07:00
Thomas Goyne d72d79bb05 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-28 15:33:43 -07:00
Thomas Goyne a5f21e5e82 Reduce the scope of a variable 2015-09-28 15:33:43 -07:00
Thomas Goyne 9075917334 Fix a comment 2015-09-28 15:33:43 -07:00
Thomas Goyne 924482a305 Fix checks for what types of columns can be optional 2015-09-28 15:33:43 -07:00
Thomas Goyne d3a218dac3 USe more const refs to avoid copies 2015-09-28 15:33:42 -07:00
Thomas Goyne cc6364fff3 Make a bunch of things const 2015-09-28 15:33:42 -07:00
Thomas Goyne fb186248a1 Remove an unused function 2015-09-28 15:33:42 -07:00
Thomas Goyne 515ce6296f Share ExternalCommitHelpers between Realm instances for a single path 2015-09-28 15:33:42 -07:00
Thomas Goyne 873d24f3f0 Allow more nullable property types when supported 2015-09-28 15:33:42 -07:00
Thomas Goyne 663492e9da Honor is_nullable when creating columns 2015-09-28 15:33:41 -07:00
Thomas Goyne ce39ef965f 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-28 15:33:41 -07:00
Thomas Goyne 4dd72d47a0 Move the interprocess notification functionality to the object store 2015-09-28 15:33:41 -07:00
Thomas Goyne 5ffeedb233 Shuffle stuff around and clean some things up 2015-09-28 15:33:41 -07:00
Thomas Goyne 429a652eeb Improve array KVO performance a bit 2015-09-28 15:33:40 -07:00
Thomas Goyne 2f869541c7 Skip PK uniqueness checking when first creating a Realm file 2015-09-28 15:33:40 -07:00
Thomas Goyne 9129add439 Improve performance of realm_requires_update() and make more things const 2015-09-28 15:33:40 -07:00
Thomas Goyne 9403c6f837 Port some of the KVO support functionality to the object store 2015-09-28 15:33:40 -07:00
Thomas Goyne 524edf04c6 Add the ability to bypass the Realm cache entirely 2015-09-28 15:33:39 -07:00
Thomas Goyne aae979ce58 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-28 15:33:39 -07:00
Thomas Goyne ce8060b4b3 Add Realm::get_schema_version() 2015-09-28 15:33:39 -07:00
Thomas Goyne 6df3719925 Change realm::Schema to a vector rather than a map
Much faster to copy and destroy with no loss in lookup performance.
2015-09-28 15:33:38 -07:00
Thomas Goyne bf3d9bd452 Remove property.hpp include from object_schema.hpp 2015-09-28 15:33:38 -07:00
Thomas Goyne 6b43c4ca31 Convert RLMRealmConfiguration to a wrapper around Realm::Config 2015-09-28 15:33:38 -07:00
Thomas Goyne 169bdb6648 Use NSDMIs for realm::Property 2015-09-28 15:33:38 -07:00
Thomas Goyne c6d82ad436 Don't cache dynamic realms in the ObjectStore cache either 2015-09-28 15:33:37 -07:00
Thomas Goyne 06ce25053d Eliminate some copies 2015-09-28 15:33:37 -07:00
Thomas Goyne 6a491eaf1b Use NSDMIs for Realm 2015-09-28 15:33:37 -07:00
Thomas Goyne 9c224fb141 Reduce s_init_mutex's scope 2015-09-28 15:33:37 -07:00