Well, it comes as news to me that the array type is unsupported in the new API. 
IBX supports the array type with the new FB3 api and it all seems to work fine. 
The example demos work with both Firebird 2.5 and Firebird 3.0.To do this, I 
had to reverse engineer the FB 2.5 code in order to understand the param block 
structure, but once I had done that, it all worked! You can check out he IB 
code to see how it's done. It uses getslice and putslice and manages its own 
descriptors.I see no reason to deprecate the array API unless it breaks 
something else.
-------- Original message --------From: Pavel Cisar <pci...@ibphoenix.cz> Date: 
22/04/2020  12:49  (GMT+00:00) To: firebird-devel@lists.sourceforge.net 
Subject: [Firebird-devel] FB 3 & 4, new API and the ARRAY type Hi all,I'm 
writing new Python driver built using new FB3 API (mainly to get support for 
new features not available through old API). I was surprised that ARRAY type 
support in new API is incomplete and thus it's not possible to handle this data 
type in drivers/applications. Specifically, the API provides getSlice & 
putSlice methods on IAttachment, but there isn't any equivalent for very 
important isc_array_lookup_bounds function (isc_array_lookup_desc and 
isc_array_set_desc are also missing, but they are not important for driver 
developers).Alex explained to me, that array support is not functional in new 
API, because core developers are considering to deprecate & remove ARRAY type 
support from future Firebird versions. And because the final decision was not 
made yet, the arrays support in new API get stuck in incomplete 
state.Personally, I have no problem with deprecation of the ARRAY type, as this 
type is mostly not used (if at all) by Firebird users. Also, I understand the 
reasoning for missing methods that would pollute the interfaces with methods 
that would become eventually obsolete. However, I'm really stunned how this 
issue was handled.While it's ok to provide only new API for new features (like 
scrollable cursors), the NEW API SHOULD support all old Firebird features 
present in given version and available through old API. And ARRAY type is such 
a feature. Although it's probably not used much by Firebird users, it's still 
used in example EMPLOYEE database that's used a lot in books, articles etc., 
and support for it is available to end users via some drivers (like FDB Python 
driver) for many years. So it's definitely POSSIBLE, that users will run into 
situations when lack of ARRAY support will be at least awkward (missing 
output), if not straight fatal.Argument that one could always use old API to 
access ARRAYs will not stand, because some new features are not available 
through it, and they could not be used together. Users should NOT be forced to 
choose between two API's with distinct features, at least one should be the 
superset (preferably the new one).Also, if ARRAY type should be ever removed 
from Firebird, it should be done via proper deprecation process (that also 
includes creation of new example database without it). Hence I consider the 
lack of (at least) isc_array_lookup_bounds equivalent in new API as a serious 
BUG, that should be fixed in Firebird 3 & 4. As driver developer I would really 
appreciate if it would be fixed for 3.0.6 due in June.While ARRAY support is 
the pressing matter here, there are other old API functions that does not have 
new API replacements (for example isc_blob_lookup_desc, and many others). I 
think that it's the good time to compare old and new API's, and create a 
document that will contain table listing the Old API functions with their New 
API counterparts, or explanation why it was decided to not provide such 
equivalent in new API. Such document should be first discussed here (so we 
could decide whether to fix more new API bugs asap), and then become a part of 
Firebird documentation set (as driver developer, I was really surprised that 
such document does not exists yet, as it's invaluable for porting from old to 
new API).best regardsPavel CisarFirebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to