powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Корректное завершение gbak/isql при b/r
25 сообщений из 173, страница 5 из 7
Корректное завершение gbak/isql при b/r
    #39871357
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

int64 есть везде и давно.

Для TIMSTAMP есть isc_decode_date / isc_encode_date ...

А вот что делать с DECFLOAT? Вон с одними таймзонами уже геморроя нажили
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871359
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисДля TIMSTAMP есть isc_decode_date / isc_encode_date ...

Лучше бы не было. И да, это справедливо и для того ужаса, что они навыдумывали в интерфейсах.

Симонов ДенисА вот что делать с DECFLOAT?
Слаб духом - биндь как SQL_TEXT. Прочие могут гуглить сторонние библиотеки. Особо суровые
- спецификацию двоичной раскладки из вики или первоисточника. Лично я буду тупо
использовать "в тёмную", как пачку байт, но это специфика.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871368
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochСимонов Денис,

да, издали

изобрели велосипед с огромным количеством бойлерплейта, в котором хрен разберёшься где что


ты не пытался


Ariochновый API.... Перемешаны декларации и роботом писанный код на Delphi. Всё это занимает гораздо больше места. Доки нет, даже на уровне IB6 API Guide. Больше такое нигде не используется, т.е. шаблоны восприятия/понимания наработанные на других продуктах тут не помогают.


да какая разница сколько это занимает места? Там и без доки всё понятно. Потому что это практически тот же старый API сгруппированный по хендлам. Ничего сложного там нет

Ariochвот зачем во всём этом разбираться, кроме возможно одной цели - UDR

тебе и в старом не зачем
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871369
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисэто практически тот же старый API сгруппированный по хендлам.

Не совсем. Это "очень старый API", который никогда не рассчитывался на прямое
использование, а служил исключительно как поддержка препроцессора gpre. Потому-то и
получилось то, что получилось.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871530
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
03.10.2019 19:19, Dimitry Sibiryakov пишет:
>
> Куда приткнуть SQL_INT128 Алекс пока не решил.

ну, ежели таки воткнут, то не всё так плохо.
а касаемо того, что делать с этим в Delphi, то особых проблем не вижу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871542
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий03.10.2019 19:19, Dimitry Sibiryakov пишет:
>
> Куда приткнуть SQL_INT128 Алекс пока не решил.

ну, ежели таки воткнут, то не всё так плохо.
а касаемо того, что делать с этим в Delphi, то особых проблем не вижу.


дык это оно и есть вроде

Код: plaintext
1.
#define SQL_DEC_FIXED                    32758



насколько я понял отдельного INT128 не будет, эта штуковина только для реализации NUMERIC(38, x)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871555
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

хотя не...

src/include/firebird/impl/sqlda_pub.h
Код: plaintext
1.
2.
3.
4.
5.
#define SQL_INT128                       32752
#define SQL_TIMESTAMP_TZ                 32754
#define SQL_TIME_TZ                      32756
#define SQL_DEC16                        32760
#define SQL_DEC34                        32762
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871560
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ты какой-то старый вариант цитируешь
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871579
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04.10.2019 11:49, Симонов Денис пишет:
>
> хотя не...
> src/include/firebird/impl/sqlda_pub.h
> #define SQL_INT128 32752

ага.
значит есть уже.
ну, тогда компонентописателям OO_API можно игнорировать.
причина для игнора: необходимо поддерживать 2 параллельные ветки кода.
ибо нормальная библиотека работает не только с распоследним клиентом,
но и с унаследованными версиями IB/FB.

зы: хотя, например в Оракеле на это дело откровенно кладут...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871596
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисты какой-то старый вариант цитируешь

Просто давненько дерево не обновлял.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871602
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ну реализацию int128 на delphi найти можно. С DecFloat намного сложнее. Скорее всего большинство воспользуются хелпером

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
interface DecFloat34 : Versioned
{
	const uint BCD_SIZE = 34;
	const uint STRING_SIZE = 43;	// includes terminating \0
	void toBcd(const FB_DEC34* from, int* sign, uchar* bcd, int* exp);
	void toString(Status status, const FB_DEC34* from, uint bufferLength, string buffer);
	void fromBcd(int sign, const uchar* bcd, int exp, FB_DEC34* to);
	void fromString(Status status, const string from, FB_DEC34* to);
}



впрочем для того чтобы пользоваться хелперами, не обязательно целиком переходить на OO_API

достаточно

Код: pascal
1.
2.
3.
4.
master := fb_get_master_interface;
util := master.getUtilInterface;
st := master.getStatus;
dec34 := util.getDecFloat34(st);
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871605
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийнапример в Оракеле на это дело откровенно кладут...

Ну, в Оракеле своя специфика. Там парсер SQL до сих пор на клиентской стороне.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871629
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04.10.2019 12:33, Симонов Денис пишет:
> master := fb_get_master_interface;
> util := master.getUtilInterface;
> st := master.getStatus;
> dec34 := util.getDecFloat34(st);

вот объясни замшелому ретрограду на пальцах,
ЗАЧЕМ для тупого процедурного преобразования нужны интерфейсы?!
я не про то, что оно уже так сделано.
а про насцущную необходимость.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871635
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ИХМО, исключительно с целью унификации OO API, чтобы он везде ОО сохранялся :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871638
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04.10.2019 13:15, Симонов Денис пишет:
> ИХМО, исключительно с целью унификации OO API, чтобы он везде ОО
> сохранялся :)


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871641
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если приложение неспособно работать с decfloat, оно не сможет его в базу положить и нет
смысла его из базы доставать. Ибо не ГПСЧ же из байт значение там собирается?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871812
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять же, если вспомнить мой пример - тупо перемножение нескольких нумериков, то на самом деле все эти 38 знаков и не нужно, ибо последние знаки будут нули-нули-нули

и поэтому будут как во времена 1-го диалекте, через другие типа

конкретно в Delphi это делалось через поля типа BCD, у которых были сеттеры/геттеры в int32-тип
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871821
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04.10.2019 17:42, Arioch пишет:
> конкретно в Delphi это делалось через поля типа BCD, у которых были
> сеттеры/геттеры в int32-тип

в новых дельфях к рекорду TBCD понавешивали собственных классовых методов.
ибо это стильно, модно, молодежно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871841
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochопять же, если вспомнить мой пример - тупо перемножение нескольких нумериков, то на самом деле все эти 38 знаков и не нужно, ибо последние знаки будут нули-нули-нули


не факт. Нули у тебя потому что ты в дробной части нули задавал. Оно может редко, но нужно. И кстати запрос на длинные нумерики давно был

Ariochи поэтому будут как во времена 1-го диалекте, через другие типа

есть ещё DEFLOAT(34)

Ariochконкретно в Delphi это делалось через поля типа BCD, у которых были сеттеры/геттеры в int32-тип

причём тут delphi? Пользовательские агрегатные функции ещё не сделали
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871853
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delphi к вопросу Симонов Денисага, а портировать классы на Delphi для работы с INT128, DECFLOAT или TIMESTAMP WITH TIMEZONE ты сам будешь?
Т.е. запихнуть то их туда на стороне fbclient можно, а вот что потом с этим указателем на данные делать
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871855
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

оно в bcd само не преобразуется. Теоретически для int128 это не сложно сделать. Можно и для decfloat если почитать стандарт по бинарному размещению. Но на хрена, когда это уже сделали за вас? Шоб понты поколотить смотрите а я смог без OO API
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871857
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисНо на хрена, когда это уже сделали за вас?

А теперь вопрос на засыпку: что проще: портировать своё приложение на новое API или
портировать мелкий кусок нового API в своё приложение?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871861
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

конечно кусок. Но не портировать, а использовать.

В IBE так и делают. Там всё что можно на Legacy API, где не получается идём за новым.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871864
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Фактический стандарт в Delphi - это TDataset и всё, что вокруг него наросло, от FAQ до визуальщины. Даже ADO - и тот обернули в TDataSet, хотя COM-объекты можно напрямую использовать в языке.

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

Далее, в рамках TDataSet уже был прецедент работы с длинными числами ДО появления типа int64 в Delphi. Делалось это через BCD. Сейчас в Delphi есть int64, но нет int128. Ситуация похожа. И вероятно, что можно взять старое решение и адаптировать для этой новой проблемы. Поэтому и BCD.

Можно придумывать что-то новое, нехоженное и неезженное, возможно оно даже в итоге окажется лучше.

> Шоб понты поколотить смотрите а я смог без OO API

Тут всё ровно наоборот. Понты - это выпендриться и сделать не как у всех.

Смотрите, я смог без VCL/FMX, а сразу на Win32 GDI API (вариант - на KOL без MCK) - это выпендрёж.
Смотрите, я смог напистаь на VCL и не писал на KOL - не выпендрёж.

Смотрите, я смог без TDataSet и вообще без обёрток, сразу на низкоуровневом API - это выпендрёж.
Смотрите, я написал на FireDAC/DBX/IBO и не лез в FB-OO-API - не выпендрёж
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871866
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисконечно кусок. Но не портировать, а использовать.

На пути "использовать" лежат забавные грабли с загрузкой библиотеки и импортом, но да,
наверное есть ещё любители геморроя себе на шею.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 173, страница 5 из 7
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Корректное завершение gbak/isql при b/r
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]