Про FB API

Привет всем.

Случайно обнаружил следующую вещь в исходниках Firebird:

firebird\branches\B2_0_Release\src\jrd\inf_pub.h:

isc_info_db_impl_sun_amd64 = 71, //появился в FB2.0.5

firebird\branches\B2_1_Release\src\jrd\inf_pub.h:

isc_info_db_impl_linux_mipsel = 71, //появился в FB2.1.0
isc_info_db_impl_sun_amd64 = 74, //появился в FB2.1.1

Вздрогнул и полез проверять стабильность идентификаторов в рамках пакетов исправлений.

4 комментария

dimitr  on 7 февраля, 2016

Вот только появился он сначала в 2.1.1, а потом был криво (без оглядки на номера констант) бекпортирован в 2.0.5:
http://tracker.firebirdsql.org/browse/CORE-2314

Dmitry Kovalenko  on 7 февраля, 2016

Привет Дим.

Мне уже даже очень сильно ругаться не хочется… Дорогие россияне, я устал…


На сколько я понимаю, это было желание сохранить упорядоченность идентификаторов.

Из потенциальных неприятных последствий вышеописанной путаницы — подключение к FB2.0.5 [sun_amd64] через клиента собранного с ibase.h от FB2.1.

(Для меня это не критично, ibase.h не юзаю).


Я вчера до FB0.9.4 опустился. Там по дороге (2.0, 1.5 …) тоже были похожие проблемы.

В ibase.h (FB0.9.4) isc_winnt_x86 (50), который возвращает сервер, вообще не описан. Привет от Клаудио?


В целом, возможно, проблема высосана из пальца. Вряд ли кому эти идентификаторы нужны. А кому понадобятся — разберутся 🙂

Кстати, это хорошо что в FB все таки пытаются этот список вести. Хоть как-то. В InterBase он застыл на уровне IB4.

//ibase.h IB11.
#define isc_info_db_impl_rdb_vms          1
#define isc_info_db_impl_rdb_eln          2
#define isc_info_db_impl_rdb_eln_dev      3
#define isc_info_db_impl_rdb_vms_y        4
#define isc_info_db_impl_rdb_eln_y        5
#define isc_info_db_impl_jri              6
#define isc_info_db_impl_jsv              7
#define isc_info_db_impl_isc_a            25
#define isc_info_db_impl_isc_u            26
#define isc_info_db_impl_isc_v            27
#define isc_info_db_impl_isc_s            28
#define isc_info_db_impl_isc_apl_68K      25
#define isc_info_db_impl_isc_vax_ultr     26
#define isc_info_db_impl_isc_vms          27
#define isc_info_db_impl_isc_sun_68k      28
#define isc_info_db_impl_isc_os2          29
#define isc_info_db_impl_isc_sun4         30
#define isc_info_db_impl_isc_hp_ux        31
#define isc_info_db_impl_isc_sun_386i     32
#define isc_info_db_impl_isc_vms_orcl     33
#define isc_info_db_impl_isc_mac_aux      34
#define isc_info_db_impl_isc_rt_aix       35
#define isc_info_db_impl_isc_mips_ult     36
#define isc_info_db_impl_isc_xenix        37
#define isc_info_db_impl_isc_dg           38
#define isc_info_db_impl_isc_hp_mpexl     39
#define isc_info_db_impl_isc_hp_ux68K     40
#define isc_info_db_impl_isc_sgi          41
#define isc_info_db_impl_isc_sco_unix     42
#define isc_info_db_impl_isc_cray         43
#define isc_info_db_impl_isc_imp          44
#define isc_info_db_impl_isc_delta        45
#define isc_info_db_impl_isc_next         46
#define isc_info_db_impl_isc_dos          47
#define isc_info_db_impl_isc_winnt        48
#define isc_info_db_impl_isc_epson        49

Похоже те, кто знал зачем это надо, свалили из Борланда в 2000-ом 🙂

dimitr  on 7 февраля, 2016

И на старуху бывает проруха. Особенно в давние годы 🙂

Dmitry Kovalenko  on 9 февраля, 2016

>В ibase.h (FB0.9.4) isc_winnt_x86 (50), который возвращает сервер, вообще не описан. Привет от Клаудио?

Не, Клаудио ни причем. IB4 тоже возвращает 50, а в ibase.h ни гу-гу. <Выругался>.

Leave a Comment