Gremlinq.Extensions 14.1.2
Gremlinq.Extensions 14.1.2 is built against ExRam.Gremlinq 14.1.2. See the ExRam.Gremlinq 14.1.2 release notes for what changed there. (#236)
Fixes
All but the last entry concern the System.Text.Json support in Gremlinq.Extensions.Support.SystemTextJson.
- A value the requested type cannot read now makes the System.Text.Json converter decline instead of throwing, so one unreadable item no longer fails the whole result set.
T,Direction,Mergeand the other Gremlin.Net enumerations are now deserialized, and agx:BigIntegerno longer comes back as zero. (#193) - A value of a Gremlin enumeration that Gremlin.Net has no name for, such as a newer server's new value, is now read as a value of that enumeration. (#212)
- A
nullin a result array is now kept instead of being dropped. (#198) - A
nullin ag:BulkSetis now kept, together with its bulk, instead of being dropped. (#199) - A
g:BulkSetwith an odd number of entries no longer throws anIndexOutOfRangeException. The well-formed pairs are read. (#201) - A
g:BulkSetcan now be read into any generic collection, such asList<T>,ISet<T>orImmutableList<T>. It used to throw anInvalidCastException. (#202) - A
g:BulkSetcan now be read intoArrayList,Queue,Stack,ICollectionandIList. It used to throw anInvalidCastException. (#204) - A
g:BulkSetwhose type name arrives in another case, such asG:BULKSET, is now read as a bulk set. (#200) - A
g:Mapwhose type name arrives in another case, such asG:MAP, is now read into a dictionary (#203) and into an object (#205). - An
elementMap()of a vertex with a label the model does not know keeps itsidandlabelwhen it is read as anobject. (#206) - A
g:Mapkeyed by something other than strings, such as ints, keeps its entries when it is read as anobject. It now comes back as aDictionary<object, object>. (#207) - A map or object with a key that appears twice is now read, the last occurrence counting, instead of failing the whole result set with an
ArgumentException. (#216) - When a name appears twice with different case, such as
ageandAge, the last one now fills the member, as with Newtonsoft.Json. (#210) - GraphSON's own member names (
key,value,id,label,properties,bulk) are now matched exactly. A map of your own with members namedKeyandValueis no longer mistaken for a property. (#208) - A
g:Tcounts as aTonly when its value is exactlyid,key,labelorvalue. (#209) - A JSON
nullrequested as astringis no longer read as an empty string. A null string property now stays null. (#214) - A .NET enum stored as the name of one of its values, such as
"Female", is now read. It used to be left unset without any error. (#215) - A scalar is now read from everything Newtonsoft.Json reads it from, such as a
boolfrom1or anintfrom3.0. Such members used to silently keep their default. (#217) - A value requested as a base type or an interface, such as
IComparableor the non-genericIEnumerable, now comes back as it does with Newtonsoft.Json. It used to come back empty, as a rawJsonElementor as a different kind of collection. (#218) Coalesce(...)with a single sub-query no longer changes what that sub-query returns, in the CosmosDb provider too.Map(...)andProject(...).By(...)also leave out steps that change nothing. (#213)
Performance
- The System.Text.Json support now reads GraphSON arrays in linear instead of quadratic time. A 1000-entry
g:BulkSetnow takes 0.33 ms instead of 12.3 ms. (#221)
Full changelog: https://github.com/Gremlinq/Gremlinq.Extensions/compare/14.1.1...14.1.2