Nested .Union() & .Concat() - NotSupportedException

Discussion of open issues, suggestions and bugs regarding ADO.NET provider for Oracle
Post Reply
Nahmis
Posts: 30
Joined: Mon 13 Jul 2009 21:38

Nested .Union() & .Concat() - NotSupportedException

Post by Nahmis » Wed 24 Feb 2010 22:25

We're having an issue that results in the following stack:

Code: Select all

   Specified method is not supported.
   at Devart.Data.Linq.Provider.Query.ao.a(SqlNode A_0, f A_1, SqlExpression A_2, Boolean A_3)
   at Devart.Data.Linq.Provider.Query.bf.b.a(w A_0)
   at Devart.Data.Linq.Provider.Query.SqlVisitor.a(f A_0)
   at Devart.Data.Linq.Provider.Query.SqlVisitor.a(d A_0)
   at Devart.Data.Linq.Provider.Query.SqlVisitor.a(j A_0)
   at Devart.Data.Linq.Provider.Query.SqlVisitor.e(w A_0)
   at Devart.Data.Linq.Provider.Query.bf.b.a(w A_0)
   at Devart.Data.Linq.Provider.Query.SqlVisitor.a(f A_0)
   at Devart.Data.Linq.Provider.Query.bf.a(SqlNode A_0, SqlFactory A_1, Boolean& A_2)
   at Devart.Data.Linq.Provider.DataProvider.a(e A_0, Type A_1, SqlNode A_2, IList`1 A_3)
   at Devart.Data.Linq.Provider.DataProvider.a(Expression A_0)
   at Devart.Data.Linq.Provider.DataProvider.i(Expression A_0)
   at Devart.Data.Linq.DataQuery`1.i()
This is as small as I could get the example still showing the error (Normal LinqPad .Dump() method):

Code: Select all

var DB = new DataContext(ConnectionString);
							
var a = from d in DB.Documents
	    join spd in DB.SitePacketDocuments on d equals spd.Document
	    where spd.Id == 1
	    select new {SiteId = 5, DocId = d.Id};
var b = from d in DB.Documents
	    select new {SiteId = 5, DocId = d.Id};

var u = a.Concat(b);
DB.GetCommand(u).CommandText.Dump(); //Ok here

var sitedocs = (from d in DB.Documents
				join did in u on d.Id equals did.DocId
				select new { did.SiteId, DocumentId = d.Id });
DB.GetCommand(sitedocs).CommandText.Dump(); //Not so ok
As far as I can tell, placing a where clause on any joined table in the union causes the Specified method is not supported error, if you change the top query to:

Code: Select all

var a = from d in DB.Documents
	    join spd in DB.SitePacketDocuments on d equals spd.Document
	    where d.Id == 1
	    select new {SiteId = 5, DocId = d.Id};
It works fine, but of course we're joining because we need the where clause elsewhere. I'd be happy to place this in a small test project if you have trouble reproducing, but this has become a very urgent issue for us (unexpected client deliverable), we would appreciate a reply asap. Thanks for the help guys, your support is superb.

Almost forgot, this is on the latest beta 5.55.97 (this behavior has existed for a long time, but we've been able to bypass around it until now).

AndreyR
Devart Team
Posts: 2919
Joined: Mon 07 Jul 2008 13:16

Post by AndreyR » Thu 25 Feb 2010 11:15

Thank you for the report, I have reproduced the problem.
I will let you know about the results of our investigation.

Nahmis
Posts: 30
Joined: Mon 13 Jul 2009 21:38

Post by Nahmis » Wed 03 Mar 2010 14:37

Any update on a fix for this issue?

I need to know if we need to start going through and batching results in 1000s and using .Contains() to work about this as it will take some time to switch over...hoping there's a way to get a fix for this sooner though, would save a lot of throw-away work.

Thanks

AndreyR
Devart Team
Posts: 2919
Joined: Mon 07 Jul 2008 13:16

Post by AndreyR » Fri 05 Mar 2010 14:21

We have fixed the problem. The fix will be included in the nearest build.

Nahmis
Posts: 30
Joined: Mon 13 Jul 2009 21:38

Post by Nahmis » Fri 12 Mar 2010 12:26

Andrey - When will this Build be available? We're at our deadline and must start re-writing to batch all these operations if there isn't a fix available...hoping there's some way to get a build ASAP.

I'm hoping we don't have to write a bunch of extra code to work around a bug you guys have already fixed, would be nice to get even just the bare DLLs so we can run this thing, is this possible?

AndreyR
Devart Team
Posts: 2919
Joined: Mon 07 Jul 2008 13:16

Post by AndreyR » Fri 12 Mar 2010 12:39

Please contact me via e-mail (support * devart * com) and point out your license number. We will send you an internal build.

Nahmis
Posts: 30
Joined: Mon 13 Jul 2009 21:38

Post by Nahmis » Mon 15 Mar 2010 15:08

We had to re-write the application to work around this bug since we still have not received the build. In the future could you alert us it will be a few days at least? We waited for the build hoping it would resolve it, but since we never received anything, had to work the weekend to cope with the bug.

This is becoming a major pain point for us, since we can't do any sort of complex querying from multiple sources. When will a build be available that resolves this?

Nahmis
Posts: 30
Joined: Mon 13 Jul 2009 21:38

Post by Nahmis » Tue 16 Mar 2010 20:33

Is there any update on this? We are still awaiting a fix and haven't received any response on here on in email...

AndreyR
Devart Team
Posts: 2919
Joined: Mon 07 Jul 2008 13:16

Post by AndreyR » Thu 18 Mar 2010 14:32

We have replied you by e-mail.

Post Reply