Commit Graph

71 Commits

Author SHA1 Message Date
Thomas Goyne d1175fe364 Switch to throwing exceptions with all of the info needed to build error messages 2015-11-20 10:24:51 -08:00
Ari Lazier 638ee4d3b4 integrate latest object store changes 2015-11-13 18:20:27 -08:00
Thomas Goyne e9ca54e169 Merge pull request #12 from realm/tg-core-0.94.4
Update for core 0.94.4
2015-11-05 09:44:08 -08:00
JP Simard e1e9cd8cd7 Add ObjectStore::is_empty() 2015-11-04 15:31:08 -08:00
Thomas Goyne 52e7e6168b Update for core 0.94.4 2015-11-04 15:30:36 -08:00
Ari Lazier dca7e7d791 enable nullable propeties without a macro 2015-10-27 12:13:57 -07:00
Ari Lazier ccdfaa8ae9 use typed exceptions 2015-10-27 09:39:52 -07:00
Ari Lazier 31819a5ee6 Merge commit '347145b4f1c40409c68af0ad61be15ee5f9d04f2' into al-os 2015-10-26 12:52:20 -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 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 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 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 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 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 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 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 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 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 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
Ari Lazier a099682f0e more extensive upsert tests 2015-09-04 12:41:17 -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 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
Ari Lazier 94c7ea512f update to newest object store apis 2015-07-28 12:17:57 -07:00
Ari Lazier eb2b079e2a pr fixes 2015-07-28 12:17:57 -07:00
Ari Lazier d8e9d36c88 rebase fixes 2015-07-28 12:17:57 -07:00
Ari Lazier 2a0a5d234f run migrations and schema update through new Realm apis 2015-07-28 12:17:56 -07:00
Ari Lazier 60700ba121 first pass refactor of RLMRealm to c++ 2015-07-28 12:17:56 -07:00
Ari Lazier 26f1a0a4c8 support exception format strings 2015-07-28 12:17:16 -07:00
Ari Lazier c3e82a58ae use enum for dict/info keys, support per platform/language exception messages 2015-07-28 12:17:16 -07:00
Samuel E. Giddins a29037b47f [ObjectStore] No need to template set_value, it can be overloaded 2015-06-24 11:19:43 -07:00
Samuel E. Giddins c0da7c76e1 Feature-flag null binary and string support
-DREALM_ENABLE_NULL to enable
2015-06-24 11:19:42 -07:00