Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Изменение формата структуры isc_dsc  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11163
Вот расскажите мне, какой индус это сделал? IB 2009
typedef struct isc_dsc {
    unsigned char	dsc_version;
    unsigned char	dsc_dtype;
    char		dsc_scale;
    char		dsc_precision;
    unsigned short	dsc_length;
    short		dsc_sub_type;
    unsigned short	dsc_flags;
    short		dsc_encryption;
    unsigned char	*dsc_address;
} ISC_DSC;

#define DSC_VERSION2		2
#define DSC_CURRENT_VERSION 	DSC_VERSION2

IB 2017
typedef struct isc_dsc {
    unsigned char	dsc_version;
    unsigned char	dsc_dtype;
    char		dsc_scale;
    char		dsc_precision;
    unsigned short	dsc_length;
    short		dsc_sub_type;
    unsigned short	dsc_flags;
    short		dsc_encryption;
    unsigned char	*dsc_address;
} ISC_DSC;

#define DSC_VERSION2		2
#define DSC_CURRENT_VERSION 	DSC_VERSION2
ладно, вы добавляете поле вовнутрь структуры, а не в конец. Но у вас же есть поле версия. Ну увеличьте вы версию на 1!

Спасибо, что хоть размер структуры не изменили из-за выравнивания

С уважением, Vasilisk
16 авг 19, 20:14    [21951412]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
hvlad
Member

Откуда:
Сообщений: 10531
Я вижу две абсолютно одинаковые стр-ры.
Поле dsc_encryption есть обоих вариантах, если о нём речь.
16 авг 19, 20:47    [21951424]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28117
_Vasilisk_,

мнэээ, сравни тексты windiff-ом. Одно и то же ведь.
17 авг 19, 02:39    [21951588]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48163

kdv
Одно и то же ведь.

Просто кривая копипаста. Вот структура от ХЕ7:
typedef struct isc_dsc {
     unsigned char	dsc_version;
     unsigned char	dsc_dtype;
     char		dsc_scale;
     char		dsc_precision;
     unsigned short	dsc_length;
     short		dsc_sub_type;
     unsigned short	dsc_flags;
     unsigned char	*dsc_address;
} ISC_DSC;

#define DSC_VERSION2		2
#define DSC_CURRENT_VERSION 	DSC_VERSION2

Posted via ActualForum NNTP Server 1.5

17 авг 19, 12:16    [21951665]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Arioch
Member

Откуда:
Сообщений: 10967
Возможно, они теперь будут по другим константам определять, например по версии сервера.

в принципе, что-то похожее было при переходе IB5 -> IB6

была константа "диалект XDA", потом в другом модуле её переопределили, как "диалект SQL".
потом забыли, что это одна и та же константа, просто описанная дважды и под разными названиями.
и первая константа осталась недокументированной, в связи с чем прикладные библиотеки туда пихают кто +1, а кто -1, напрочь убив её смысл как версии и превратив в бинарный флаг большой длины. Что, впрочем, сейчас работает, поскольку implementation сравнивает диалект XDA не через switch, а через if: ноль или все остальные версии/диалекты. Если следующего диалекта не завезут, либо всех таки переведут на новый COM-подобный API и старый процедурный забросят, то ничего и не случится.
19 авг 19, 14:00    [21952495]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30321

19.08.2019 14:00, Arioch пишет:
> в принципе, что-то похожее было при переходе IB5 -> IB6
> была константа "диалект XDA", потом в другом модуле её переопределили, как "диалект SQL".

ты пропустил много интересного.
там ещё и на версию протокола "клиент-сервер" завязано.
я жевал валидол из ложки! (С)

21944093 и далее

Posted via ActualForum NNTP Server 1.5

19 авг 19, 14:10    [21952504]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Arioch
Member

Откуда:
Сообщений: 10967
Мимопроходящий,

Я это знаю, как "SQL-диалект соединения".
Термин "версия протокола" для меня звучит скорее как wire-протокол.

Я даже как-то вопросы задавал, что конкретно будет при задаче 1-го диалекта в соединении к БД 3-го диалекта и как конкретно "тупому юзверю" с помощью одних лишь SQL-команд определить такой нежданчик (ну там mon$xxxx или rdb$getcontext). Ответы были типа "иди на хрен с такими вопросами, фигня будет, а какая в точности никто не выяснял"

Меня же интересовал именно прикладной вопрос, в связи с IBX/IBO/UIB - как правильно задавать диалект XDA - через плюс или минус единицу. Поэтому до диалекта соединения я не копал.
19 авг 19, 14:19    [21952519]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Arioch
Если следующего диалекта не завезут


Я надеюсь что нет. Это одно из самых неудачных решений в IB.
Вон в 4.0 тоже много хитрых типов ввели, но совместимость со старыми клиентами там по другому обеспечивается.

Arioch
всех таки переведут на новый COM-подобный API и старый процедурный забросят


я думаю это произойдёт очень нескоро. Ибо кучу легаси компонентов нечего и не слышали об OO API.
Хотя в старом API пока ещё нет новой XSQLDA с расширенными длинами имён метаданных.

Скорее всего будут появляться гибриды, потому что некоторые плюхи доступны только в новом API
19 авг 19, 14:21    [21952526]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Arioch,

достал ты уже. Неужели предыдущего объяснению Влада не хватило, что у соединения нет диалекта?
19 авг 19, 14:23    [21952529]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Arioch
Member

Откуда:
Сообщений: 10967
Было бы это где-то хорошо документировано - и вопросов бы не возникало. А теперь уже "народные термины", терпите... Сам факт что парсер слегка меняется от параметров подключения, но не весь, как его "снаружи" осознавать?

Вот ты те рассуждения Влада в свою документацию вставишь? едва ли. Следовательно каждый (во ВСЁМ мире, а не только РФ), кто на такое наткнётся, будет начинать снова, с чистого листа.

> Я надеюсь что нет. Это одно из самых неудачных решений в IB.

Что именно, диалект SQL или диалект XSQLDA ?

Последнее - было вполне нормальное решение, если бы его планомерно провели по коду и документации.
Но, похоже, что делали мучительно, наощупь. А когда, вероятно, пришли манагеры с маузером и приговором "релиз через неделю, последний дедлайн" - то уже не смогли всё вспомнить и "разложить по полочкам". Но это вполне можно сейчас ещё сделать.

Другой вопрос, что за все годы после IB6 так и не понадобилось по факту расширять XSQLDA. Поэтому эту путаницу никто и не стал упорядочивать. По хорошему бы, конечно, тут все решалось принятием и документированием общей policy совместно FB Team и IB Team. Но поскольку прямо сейчас расширять XSQLDA никто не хочет, то никто и не будет.
19 авг 19, 14:33    [21952539]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11163
Dimitry Sibiryakov
Просто кривая копипаста. Вот структура от ХЕ7:
Да. Спасибо
19 авг 19, 15:29    [21952597]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48163

Симонов Денис
совместимость со старыми клиентами там по другому обеспечивается.

Причём, надо сказать, тоже весьма кривыми костылями.

Posted via ActualForum NNTP Server 1.5

19 авг 19, 15:34    [21952607]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30321

"неродной" клиент - зло.
благое намерение бормадов обеспечить "плавный переход" -
такой же вопиющий волюнтаризЪм как и введение диалектов.

Posted via ActualForum NNTP Server 1.5

19 авг 19, 15:46    [21952621]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9831
Dimitry Sibiryakov,

это лучше чем вводить дополнительные параметры в функциях API, две ветки парсера, да ещё и диалект БД.
Уж лучше те же SET BIND и подобное
19 авг 19, 15:57    [21952631]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30321

ООП-API - зло не меньшее

Posted via ActualForum NNTP Server 1.5

19 авг 19, 15:58    [21952632]     Ответить | Цитировать Сообщить модератору
 Re: Изменение формата структуры isc_dsc  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48163

Симонов Денис
это лучше чем вводить дополнительные параметры в функциях API, две ветки парсера, да ещё и
диалект БД.
Уж лучше те же SET BIND и подобное

Они не нужны если придерживаться простого правила "новые фичи - только за пределами
взад-совместимой области" и чуть более сложного "взад-совместимость ломается только в
пределах взад-совместимой области".

Назачем вот было сломя голову переводить CURRENT_TIMESTAMP на новый, непроверенный тип, да
ещё и ломая приложения, работающие со старыми версиями сервера?.. Оно сто лет стандарту не
соответствовало, ещё пяток никого не убил бы.

Та же ситуация с DECFLOAT. Какой смысл его биндить в старые типы, если старым приложениям
он по определению не нужен, а новые его и нативно сожрут.

Posted via ActualForum NNTP Server 1.5

19 авг 19, 16:08    [21952636]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить