isar_plus 4.0.0-dev.33
isar_plus: ^4.0.0-dev.33 copied to clipboard
Extremely fast, easy to use, and fully async NoSQL database for Flutter. Enhanced version with additional features.
4.0.0-dev.14 #
⚠️ ISAR V4 IS NOT READY FOR PRODUCTION USE ⚠️
This version does not support database migration yet and cannot open Isar v3 databases. The stable version will be released in a few weeks and will support migration from v3.
Breaking #
Changed transactions API:
| old | new |
|---|---|
writeTxn() |
writeAsync() |
writeTxnSync() |
write() |
txn() |
readAsync() |
txnSync() |
read() |
- All operations are now synchronous by default and there are
Asyncmethods for asynchronous operations. - Ids now need to be called
idor annotated with@id - Ids can no longer be
nullable. There is a newcollection.autoIncrement()function to automatically generate ids. - Enums no longer need to be annotated with
@enumeratedinstead there is a new@enumValueannotation to specify the value property of an enum - Where clauses have been removed in favor of automatic index handling
- Isar links have been removed in favor of embedded objects
- Indexes have been simplified
- The Android minimum SDK version is now 23
Enhancements #
- Web support is back!!! In-memory only for now (persistence will come soon)
- Encrypted databases
- String ids
- Fetching multiple properties simultaneously
- Partial and Bulk updates using
collection.update()andquery.updateAll() - SQLite storage engine support
- Support for
dynamic,List<dynamic>andMap<String, dynamic>properties - Required parameters for embedded objects
- Case insensitive sorting
- Much faster database initialization
- Improved performance for all operations
- Decoding objects no longer blocks the UI isolate
- New
@utcannotation to receiveDateTimeobjects in UTC - Support for freezed and other code generators
3.1.0 #
Breaking #
Sorry for this breaking change. Unfortunately, it was necessary to fix stability issues on Android.
directoryis now required forIsar.open()andIsar.openSync()
Fixes #
- Fixed a crash that occasionally occurred when opening Isar
- Fixed a schema migration issue
- Fixed an issue where embedded class renaming didn't work correctly
Enhancements #
- Many internal improvements
- Performance improvements
3.0.6 #
Fixes #
- Add check to verify transactions are used for correct instance
- Add check to verify that async transactions are still active
- Fix upstream issue with opening databases
3.0.5 #
Enhancements #
- Improved performance for all operations
- Added
maxSizeMiBoption toIsar.open()to specify the maximum size of the database file - Significantly reduced native library size
- With the help of the community, the docs have been translated into a range of languages
- Improved API docs
- Added integration tests for more platforms to ensure high-quality releases
- Support for unicode paths on Windows
Fixes #
- Fixed crash while opening Isar
- Fixed crash on older Android devices
- Fixed a native port that was not closed correctly in some cases
- Added swift version to podspec
- Fixed crash on Windows
- Fixed "IndexNotFound" error
3.0.4 #
REDACTED.
3.0.3 #
REDACTED.
3.0.2 #
Enhancements #
- The Inspector now supports creating objects and importing JSON
- Added Inspector check to make sure Chrome is used
Fixes #
- Added support for the latest analyzer
- Fixed native ports that were not closed correctly in some cases
- Added support for Ubuntu 18.04 and older
- Fixed issue with aborting transactions
- Fixed crash when invalid JSON was provided to
importJsonRaw() - Added missing
exportJsonSync()andexportJsonRawSync() - Fixed issue where secondary instance could not be selected in the Inspector
3.0.1 #
3.0.0 #
This release has been a lot of work! Thanks to everyone who contributed and joined the countless discussions. You are really awesome!
Special thanks to @Jtplouffe and @Peyman for their incredible work.
Web support #
This version does not support the web target yet. It will be back in the next version. Please continue using 2.5.0 if you need web support.
Enhancements #
- Completely new Isar inspector that does not need to be installed anymore
- Extreme performance improvements for almost all operations (up to 50%)
- Support for embedded objects using
@embedded - Support for enums using
@enumerated - Vastly improved Isar binary format space efficiency resulting in about 20% smaller databases
- Added
id,byte,shortandfloattypedefs IsarLinksnow support allSetmethods based on the IsarIdof objects- Added
downloadoption toIsar.initializeIsarCore()to download binaries automatically - Added
replaceoption for indexes - Added verification for correct Isar binary version
- Added
collection.getSize()andcollection.getSizeSync() - Added
query.anyOf()andquery.allOf()query modifiers - Support for much more complex composite index queries
- Support for logical XOR and the
.oneOf()query modifier - Made providing a path optional
- The default Isar name is now
defaultand stored indir/name.isaranddir/name.isar.lock - On non-web platforms,
IsarLinkandIsarLinkswill load automatically .putSync(),.putAllSync()etc. will now save links recursively by default- Added
isar.getSize()andisar.getSizeSync() - Added
linksLengthEqualTo(),linksIsEmpty(),linksIsNotEmpty(),linksLengthGreaterThan(),linksLengthLessThan(),linksLengthBetween()andlinkIsNull()filters - Added
listLengthEqualTo(),listIsEmpty(),listIsNotEmpty(),listLengthGreaterThan(),listLengthLessThan(),listLengthBetween()filters - Added
isNotNull()filters - Added
compactOnLaunchconditions toIsar.open()for automatic database compaction - Added
isar.copyToFile()which copies a compacted version of the database to a path - Added check to verify that linked collections schemas are provided for opening an instance
- Apply default values from constructor during deserialization
- Added
isar.verify()andcol.verify()methods for checking database integrity in unit tests - Added missing float and double queries and an
epsilonparameter
Breaking changes #
- Removed
TypeConvertersupport in favor of@embeddedand@enumerated - Removed
@Id()and@Size32()annotations in favor of theIdandshorttypes - Changed the
schemasparameter from named to positional - The maximum size of objects is now 16MB
- Removed
replaceOnConflictandsaveLinksparameter fromcollection.put()andcollection.putAll() - Removed
isarparameter fromIsar.txn(),Isar.writeTxn(),Isar.txnSync()andIsar.writeTxnSync() - Removed
query.repeat() - Removed
query.sortById()andquery.distinctById() - Fixed
.or()instead of.and()being used implicitly when combining filters - Renamed multi-entry where clauses from
.yourListAnyEqualTo()to.yourListElementEqualTo()to avoid confusion - Isar will no longer create the provided directory. Make sure it exists before opening an Isar Instance.
- Changed the default index type for all
Lists toIndexType.hash - Renamed
isar.getCollection()toisar.collection() - It is no longer allowed to extend or implement another collection
- Unsupported properties will no longer be ignored by default
- Renamed the
initialReturnparameter tofireImmediately - Renamed
Isar.initializeLibraries()toIsar.initializeIsarCore()
Fixes #
There are too many fixes to list them all.
- A lot of link fixes and a slight behavior change to make them super reliable
- Fixed missing symbols on older Android phones
- Fixed composite queries
- Fixed various generator issues
- Fixed error retrieving the id property in a query
- Fixed missing symbols on 32-bit Android 5 & 6 devices
- Fixed inconsistent
nullhandling in json export - Fixed default directory issue on Android
- Fixed different where clauses returning duplicate results
- Fixed hash index issue where multiple list values resulted in the same hash
- Fixed edge case where creating a new index failed
2.5.0 #
Enhancements #
- Support for Android x86 (32 bit emulator) and macOS arm64 (Apple Silicon)
- Greatly improved test coverage for sync methods
col.clear()now resets the auto increment counter to0- Significantly reduced Isar Core binary size (about 1.4MB -> 800KB)
Minor Breaking #
- Changed
initializeLibraries(Map<String, String> libraries)toinitializeLibraries(Map<IsarAbi, String> libraries) - Changed min Dart SDK to
2.16.0
Fixes #
- Fixed issue with
IsarLink.saveSync() - Fixed
idqueries - Fixed error thrown by
BroadcastChannelin Firefox - Fixed Isar Inspector connection issue
2.4.0 #
Enhancements #
- Support for querying links
- Support for filtering and sorting links
- Added methods to update and count links without loading them
- Added
isLoadedproperty to links - Added methods to count the number of objects in a collection
- Big internal improvements
Minor Breaking #
- There are now different kinds of where clauses for dynamic queries
isar.getCollection()no longer requires the name of the collectionIsar.instanceNamesnow returns aSetinstead of aList
Fixes #
- Fixed iOS crash that frequently happened on older devices
- Fixed 32bit issue on Android
- Fixed link issues
- Fixed missing
BroadcastChannelAPI for older Safari versions
2.2.1 #
Enhancements #
- Reduced Isar web code size by 50%
- Made
directoryparameter ofIsar.open()optional for web - Made
nameparameter ofIsar.getInstance()optional - Added
Isar.defaultNameconstant - Enabled
TypeConverters with supertypes - Added message if
TypeConverternullability doesn't match - Added more tests
Fixes #
- Fixed issue with date queries
- Fixed
FilterGroup.notconstructor (thanks for the PR @jtzell)
2.2.0 #
Isar now has full web support 🎉. No changes to your code required, just run it.
Web passes all unit tests but is still considered beta for now.
Minor Breaking #
- Added
saveLinksparameter to.put()and.putAll()which defaults tofalse - Changed default
overrideChangesparameter oflinks.load()totrueto avoid unintended behavior
Enhancements #
- Full web support!
- Improved write performance
- Added
deleteFromDiskoption toisar.close() - Added
.reset()and.resetSync()methods toIsarLinkandIsarLinks - Improved
links.save()performance - Added many tests
Fixed #
- Fixed value of
nulldates to beDateTime.fromMillisecondsSinceEpoch(0) - Fixed problem with migration
- Fixed incorrect list values for new properties (
[]instead ofnull) - Improved handling of link edge-cases
2.1.4 #
- Removed
pathdependency - Fixed incorrect return value of
deleteByIndex() - Fixed wrong auto increment ids in some cases (thanks @robban112)
- Fixed an issue with
Isar.close()(thanks @msxenon) - Fixed
$escaping in generated code (thanks @jtzell) - Fixed broken link in pub.flutter-io.cn example page
2.1.0 #
isar_connect is now integrated into isar
Enhancements #
- Added check for outdated generated files
- Added check for changed schema across isolates
- Added
Isar.openSync() - Added
col.importJsonRawSync(),col.importJsonSync(),query.exportJsonRawSync(),query.exportJsonSync() - Improved performance for queries
- Improved handling of ffi memory
- More tests
Fixed #
- Fixed issue where imported json required existing ids
- Fixed issue with transaction handling (thanks @Peng-Qian for the awesome help)
- Fixed issue with
@Ignoreannotation not always working - Fixed issue with
getByIndex()not returning correct object id (thanks @jtzell)
2.0.0 #
Breaking #
- The id for non-final objects is now assigned automatically after
.put()and.putSync() doubleandList<double>indexes can no longer be at the beginning of a composite indexList<double>indexes can no longer be hashed.greaterThan(),.lessThan()and.between()filters and are now excluding fordoublevalues (>=->>)- Changed the default index type for lists to
IndexType.value IsarLinkandIsarLinkswill no longer be initialized by Isar and must not benullableorlate.- Dart
2.14or higher is required
Enhancements #
- Added API docs for all public methods
- Added
isar.clear(),isar.clearSync(),col.clear()andcol.clearSync() - Added
col.filter()as shortcut forcol.where().filter() - Added
includeparameter to.greaterThan()and.lessThan()filters and where clauses - Added
includeLowerandincludeUpperparameters to.between()filters and where clauses - Added
Isar.autoIncrementto allow non-nullable auto-incrementing ids Isar.close()now returns whether the last instance was closed- List values in composite indexes are now of type
IndexType.hashautomatically - Allowed multiple indexes on the same property
- Removed exported packages from API docs
- Improved generated code
- Improved Isar Core error messages
- Minor performance improvements
- Automatic XCode configuration
- Updated analyzer to
3.0.0 - More tests
Fixed #
IsarLinkandIsarLinkscan now be final- Fixed multi-entry index queries returning items multiple times in some cases
- Fixed
.anyLessThan()and.anyGreaterThan()issues - Fixed issues with backlinks
- Fixed issue where query only returned the first
99999results - Fixed issue with id where clauses
- Fixed default index type for lists and bytes
- Fixed issue where renaming indexes was not possible
- Fixed issue where wrong index name was used for
.getByX()and.deleteByX() - Fixed issue where composite indexes did not allow non-hashed Strings as last value
- Fixed issue where
@Ignore()fields were not ignored
1.0.5 #
1.0.0+1 #
Added missing binaries
1.0.0 #
Switched from liblmdb to libmdbx for better performance, more stability and many internal improvements.
Breaking #
The internal database format has been changed to improve performance. Old databases do not work anymore!
Fixes #
- Fix issue with links being removed after object update
- Fix String index problems
Enhancements #
- Support
greaterThan,lessThanandbetweenqueries for String values - Support for inheritance (enabled by default)
- Support for
finalproperties and getters - Support for
freezedand other code generators - Support getting / deleting objects by a key
col.deleteByName('Anne') - Support for list indexes (hash an element based)
- Generator now creates individual files instead of one big file
- Allow specifying the collection accessor name
- Unsupported properties are now ignored automatically
- Returns the assigned ids after
.put()operations (objects are no longer mutated) - Introduces
replaceOnConflictoption for.put()(instead of specifying it for index) - many more...
Internal #
- Improve generated code
- Many new unit tests
0.4.0 #
Breaking #
- Remove
.where...In()and...In()extension methods - Split
.watch(lazy: bool)into.watch()and.watchLazy() - Remove
includeoption for filters
Fixes #
- Generate id for JSON imports that don't have an id
- Enable
sortByandthenBygeneration
Enhancements #
- Add
.optional()and.repeat()query modifiers - Support property queries
- Support query aggregation
- Support dynamic queries (for custom query languages)
- Support multi package configuration with
@ExternalCollection() - Add
caseSensitiveoption to.distinctBy()
Internal #
- Change iOS linking
- Improve generated code
- Set up integration tests and improve unit tests
- Use CORE/0.4.0
0.2.0 #
- Link support
- Many improvements and fixes
0.1.0 #
- Support for links and backlinks
0.0.4 #
- Bugfixes and many improvements
0.0.2 #
Fix dependency issue
0.0.1 #
Initial release