c# - which specific conditions could cause a db4o's native query transformation bug? -


this fails:

var results = container.query<someclass>(s =>     s.field == value && s.anenumfield != someenum.anenumvalue ); assert.areequal(1, results.count); 

but doesn't:

predicate<someclass> matches = s =>      s.field == value && s.anenumfield != someenum.anenumvalue; var results = container.query<someclass>(s => matches(s)); assert.areequal(1, results.count); 

the different in tests demonstrates issue happens when db4o expression transformation, calling method prevents that. value checked in test, exact value (no case differences), test inserts first.

any special conditions db4o transformations has bugs queries? maybe .net enums?


i have narrowed down, , example above didn't include troublesome bit. doesn't have enum field, "value" in above expression.

specifically issue happens when query includes someinstance.field value, like:

var results = container.query<someclass>(s =>    s.field == someinstance.field && s.anenumfield != someenum.anenumvalue );  assert.areequal(1, results.count); 

well didn't tried out code, me looks bug, in native-query optimizer. first 1 typical native query should optimization. , guess there goes wrong. second query cannot optimized, because unusual way write query. in case db4o calls closure/delegate , therefore produces right result.

to work around bug recommend use linq. include 'db4objects.db4o.linq.dll'-assembly in project, add 'db4objects.db4o.linq'-namespace , write queries. example this:

var result = someclass s in container                s.field == value && s.anenumfield != someenum.anenumvalue                select s; assert.areequal(1, results.count); 

i recommend anyway use linq instead of native queries. linq more powerful , 'standard'-api.

for original issue: maybe post small example program bug in db4o-bugtracker. (maybe have register here account bugtracker, i'm not sure that.)


Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -