Claudio,
Hello, currently the engine supports BLR4 (legacy) and BLR 5. All FB
> versions generate BLR 5. But we are hitting some limits and I think we
> should increase it again (this would be for the first time for FB). Dmitry
> asked me to get rid of the 255 streams limit but what I did is only the
> starting point.
>
> Problematic places that I marked in the code:
>
> ExprNodes.cpp:
> // CVC: bottleneck
> const StreamType streamCount = csb->csb_blr_reader.getByte();
>
> for (StreamType i = 0; i < streamCount; ++i)
> {
> const USHORT n = csb->csb_blr_reader.getByte();
> node->internalStreamList.add(csb->csb_rpt[n].csb_stream);
> }
>
> Number of streams is limited to 255, despite me lifting the restrictions in
> other places.
>
> Again, ExprNodes.cpp, this looks like the complementary part:
> // bottleneck
> fb_assert(stack.object()->ctx_context <= MAX_UCHAR);
> dsqlScratch->appendUChar(stack.object()->ctx_context);
>
> RecordSourceNodes.cpp
> // bottleneck
> int count = (unsigned int) csb->csb_blr_reader.getByte();
> // Pick up the sub-RseNode's and maps.
> while (--count >= 0)
>
> There may be other places I'm not aware of. The important idea is that BLR
> is expected to hold those values in single bytes and this is not enough
> anymore. I see raising the BLR version as the only solution.
I think you're right.
Ann
------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel