GithubHelp home page GithubHelp logo

realm / realm-dotnet Goto Github PK

View Code? Open in Web Editor NEW
1.2K 77.0 157.0 79.47 MB

Realm is a mobile database: a replacement for SQLite & ORMs

Home Page: https://realm.io

License: Apache License 2.0

C# 93.58% C++ 5.96% XSLT 0.04% CMake 0.09% PowerShell 0.25% Shell 0.06% Dockerfile 0.01% GDB 0.01%
realm database mobile dotnet dotnet-core xamarin xamarin-forms realtime sync mobile-database

realm-dotnet's People

Contributors

alazier avatar andydentfree avatar appden avatar bdash avatar bmunkholm avatar dennisfantoni avatar dependabot[bot] avatar dominicfrei avatar elle-j avatar emanuelez avatar fealebenpae avatar gagik avatar geragray avatar github-actions[bot] avatar jacoboscargunnarsson avatar jpsim avatar kishikawakatsumi avatar kristiandupont avatar lapeste avatar nhachicha avatar nielsenko avatar nirinchev avatar otso avatar papafe avatar promontis avatar realm-ci avatar rorbech avatar segiddins avatar tgoyne avatar timoliver avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

realm-dotnet's Issues

Fix crash on Moto-G

On Andy's first test device, Moto-G XT1033, crash running Playground
[Mono] DllImport searching in: 'wrappers' ('libwrappers.so').
[Mono] Searching for 'new_table'.
[Mono] Probing 'new_table'.
[Mono] Found as 'new_table'.
[libc] heap corruption detected by tmalloc_small
[libc] Fatal signal 6 (SIGABRT), code -6 in tid 11784 (.XamarinAndroid)

Check attributes for consistency amongst key definitions

Because we're specifying the primary key using the attribute [PrimaryKey] [ObjectId]we need a check to make sure this is not specified on more than one field in a given class. This has to be a runtime check. Update 2016-02-19 with more Fody knowledge, now realise we can easily do this in Fody

Alternatively, we could redesign the feature to specify the primary key with key name as parameter and make it a class-level attribute. That would take care of the problem of specifying more than one but then add a different check to ensure the field name was valid and that the field wasn't tagged with the [Ignore]

Refine getter field lookup

Could we stash the TableHandle directly in the RealmObject to remove the use of the table name and dicationary lookup all the time? At worst case, we could have an index of a table handle into a static array. Currently we're doing an extra dictionary lookup for every single field access.

Split repo into potentially public and private

The other repos have private sections and I assume the same rationale will occur for dotnet when we release - maybe do it now so history in the right place? Might start with #41 and cloning the Java benchmarks

NuGet multi-platform

NuGet packages that use the Bait'n'switch pattern to allow seamless multi-platform support

Document simple install

Assuming #32 and #33 include documenting their respective NuGet installs, this is for old-fashioned zip downloaders or people using the repo

Avoid column index lookups

This may be a lot harder. The Java API does the same thing we do of using a dictionary all the time to map property names to column indexes so it might be deemed acceptable for now. However, it really burns me to have a dictionary lookup on such a fundamental pathway to data access for every single object (zero-copy becomes a mockery when using objects is so expensive).

Fix configs mainly for win32 builds

Turned this into just making some cleanups so we're not marking things for building in the wrong configs, which makes life a lot more pleasant in Visual Studio.

Original report below - Kristian can't reproduce
Running with Debug x86 configuration, IntegrationTests crashes in group_get_or_add_table with the error
An exception of type 'System.AccessViolationException' occurred in Interop.Win32.dll but was not handled in user code

Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Note that this occurs with the IL problem resolved, it is apparently unrelated

Migration support

Support full migration with a callback. Note this requires callback from C++ ObjectStore to C# to provide full application programmer control. May want some pruning by object class and by property so callback only occurs as little as possible.

See further discussion in the Schema and Migration wiki page.

Release builds

Most of the configs are likely to be wrong for Release builds as only Debug has been setup.

We also need to discuss and test different optimisation levels and possibly add documentation. An implication is that performance testing such as in #41 should be functioning and we need a really good test suite to catch subtle bugs. Hopefully #46 will yield us that from the Java tests

(Andy's vague hope is that optimisation in .Net release builds won't be as fraught as picking optimisation levels in C++).

Support NodaTime in C# bindings

May not require any or much support but important to people doing DateTime and will be an item could generate a press release about (especially if coordinated with Java).

Clarify Android targets and standardise environments

as soon as I have opened the Realm.sln in VS2015 now I get changes to
Interop.XamarinAndroid
Playground.XamarinAndroid
changing the TargetFrameworkVersion from 5.0 to 4.4
This is obviously some side-effect of my environment as I'm not editing Visual Studio.

I had very weird problems launching demo apps on Android at one point where it was saying I didn't have Build 22 installed despite all the visible target settings being for Build 21 (5.0). There have been Xamarin Studio bugs logged about the different target settings.

I think we need to agree on a minimum (maybe 4.4 or earlier) and then sweep through all settings and build environments making sure that
a) they are documented where to change and any side-effects
b) we are all using the same settings!

Basic performance test

Test:

  • Get value
  • Set value
  • Basic query

Run the same tests against sqlite

Remember to test binary values as this is an area where we ought to outperform sqlite.

Fix build so can build in Xamarin Studio

Include making scripts based on common env variables such as NDK_ROOT (recommended and expected by setup such as cocos2d-x and others that build with NDK)
Hopefully should avoid dependencies so building the playground for iOS (for example) shouldn't try to build Win32.

add Nunit unit tests for what we have so far

Nunit on a 64bit windows 7 seems to have some kind of problem testing 32bit c# code that calls 32bit c++ dll's - most solutions point towards creating C# "AnyCpu" builds, and using the 32bit nunit version that is silently installed with a 64 bit nunit deployment. Still, doing this, while the unit tests run fine when not started inside Nuinit, they fail to load the dll when started inside Nunit. I'll have to investigate further, I have created 64 bit c++ dll's (and related documentation) to make sure whatever nunit solution i find is working on 64 as well as 32 bit builds.

Create mock CoreProvider

Will speed up writing and running tests and also allow tests to be written that directly evaluate that the correct sequence of internal calls was generated.

Try pulling across the Java unit tests

Good range of tests and keeping them with just syntactic changes makes it easier for people to move between projects. Also serves as a good quality measure of completeness in the C# api.

LINQ with all operators on one table

recreated simple LINQ issue because branch naming error grabbed the former issue number. This is about the top-level LINQ stuff working with a single table

Review Transaction C# design

Andy would prefer we properly support them as IDisposable, with automatic commit on dispose and an explicit Abort/Cancel Transaction call setting a flag to prevent commit on finalising

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.