Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBExpert Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Мимопроходящий
Member

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

30.09.2019 13:50, IBExpert пишет:
> Нет, не привожу. toString/fromString интерфейсные использую.

а сортировать как?

Posted via ActualForum NNTP Server 1.5

30 сен 19, 13:56    [21982690]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3330
Мимопроходящий
а сортировать как?


Если не уговорю Влада на добавление дополнительных функций в интерфейс, то придется что-то снаружи прикручивать.
А пока сортировки нет.
30 сен 19, 14:40    [21982750]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Симонов Денис
Member

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

дельфийский BCD не вмещает ни DECFLOAT(34), ни NUMERIC(38, x).
Там вроде есть ещё какая-то приблуда типа TFMTBCDField, но не знаю поддерживаются ли они в старых Delphi
30 сен 19, 14:43    [21982755]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Мимопроходящий
Member

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

30.09.2019 14:43, Симонов Денис пишет:
> дельфийский BCD не вмещает ни DECFLOAT(34), ни NUMERIC(38, x).
> Там вроде есть ещё какая-то приблуда типа TFMTBCDField, но не знаю поддерживаются ли они в старых Delphi

type
  TBCD  = packed record
    Precision: Byte;
    SignSpecialPlaces: Byte;
    Fraction: packed array [0..31] of Byte;
  end;
32 байта, в каждом байте 2 десятичных знака (00..99).
итого - 64 значащих.

Posted via ActualForum NNTP Server 1.5

30 сен 19, 15:16    [21982821]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10697
хм у DecFloat34 есть toBcd и fromBcd. По идее можно было бы для Int128 сделать

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);
}


вот только я не уверен что оно с delphi TBcd совместимо будет
30 сен 19, 18:44    [21983123]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Мимопроходящий
Member

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

30.09.2019 18:44, Симонов Денис пишет:
> вот только я не уверен что оно с delphi TBcd совместимо будет

кто с кем несовместимо будет?

Posted via ActualForum NNTP Server 1.5

30 сен 19, 18:48    [21983128]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Симонов Денис
Member

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

я bcd в delphi не трогал. Но судя по тому что пишут в интернетах там какая-то вакханалия.

Вопрос можно ли использовать toBcd хоть как-то для TBcd?
30 сен 19, 18:53    [21983133]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Мимопроходящий
Member

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

30.09.2019 18:53, Симонов Денис пишет:
> я bcd в delphi не трогал. Но судя по тому что пишут в интернетах там какая-то вакханалия.

в интернетах правды нет.

> Вопрос можно ли использовать toBcd хоть как-то для TBcd?

вопрос в том, на какую структуру оно опирается.
судя по декларации которую ты привёл, это не FMTBcd из C++

Posted via ActualForum NNTP Server 1.5

30 сен 19, 18:58    [21983140]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Gorynich
Member

Откуда:
Сообщений: 110
select sum(0.0)
from rdb$database
4 окт 19, 15:07    [21986820]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Мимопроходящий
Member

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

04.10.2019 15:07, Gorynich пишет:
> select sum(0.0)
> from rdb$database

- шо это было?
- антоновка...
(С)

Posted via ActualForum NNTP Server 1.5

4 окт 19, 15:11    [21986823]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Gorynich
Member

Откуда:
Сообщений: 110
Сервер - fb 4.0.0.1621-0_x64
IBE - 2019.9.29.1

Результат запроса
select sum(0.0)
from rdb$database

имеет тип NUMERIC(38,1), но представляется "как текст", с неправильным десятичным разделителем.
Можно разделитель изменить?
4 окт 19, 15:14    [21986828]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Мимопроходящий
Member

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

04.10.2019 15:14, Gorynich пишет:
> имеет тип NUMERIC(38,1)

вопрос из зала: оно что же, теперь все агрегаты к NUMERIC(38, x)
приводить будет?

Posted via ActualForum NNTP Server 1.5

4 окт 19, 15:49    [21986866]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Симонов Денис
Member

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

а чем он неправильный? Точка как точка или ты запятую желаешь?
4 окт 19, 18:27    [21987047]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Gorynich
Member

Откуда:
Сообщений: 110
Симонов Денис
Gorynich,

а чем он неправильный? Точка как точка или ты запятую желаешь?


Хочу мышью открывать окна, чтобы decimal delimiter был одним и тем же (что и определен системно), для разных столбцов одного запроса
select sum(0.0), 0.0
from rdb$database


В моем же случае результат
0.0   0,0

SUM NUMERIC(38,1),
CONSTANT NUMERIC(18,1)
4 окт 19, 18:36    [21987056]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
mvb
Member

Откуда: Казань
Сообщений: 1450
Db Comparer ругается, если в процедуре расширенный вариант HASH:
insert into USERS (NAME, PWD_HASH)
      values ('Администратор', hash('bla-bla-bla' using MD5))
      returning ID into :id;


DBC
==== Error ==== : Procedure SP_SYS$INIT_DB: Missing: <)> (USING)
6 окт 19, 20:03    [21987731]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3330
mvb
Db Comparer ругается, если в процедуре расширенный вариант HASH:


Компарер еще почти ничего не знает про синтаксис четверки.
7 окт 19, 08:27    [21987910]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3330
Gorynich
Можно разделитель изменить?


Можно, наверное.
7 окт 19, 08:28    [21987911]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10697
Мимопроходящий
04.10.2019 15:14, Gorynich пишет:
> имеет тип NUMERIC(38,1)

вопрос из зала: оно что же, теперь все агрегаты к NUMERIC(38, x)
приводить будет?


у тебя есть другие предложения? Когда считаем SUM или AVG трудно угадать сколько там реально записей будет в выборки, поэтому чтобы случайно не получить переполнение выдаём наиболее вместимый тип в prepare. Если это может поломать совместимость со старым клиентом, то просто делай BIND INT128 на BIGINT.
7 окт 19, 10:34    [21987983]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3330
В свежей версии сделана сортировка в гриде по DECFLOAT и NUMERIC(38,x) полям, агрегаты там же (пока только по NUMERIC(38,x)), частичная поддержка DECFLOAT и NUMERIC(38,x) в отладчике.
18 окт 19, 03:09    [21997009]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Gorynich
Member

Откуда:
Сообщений: 110
IBExpert
Gorynich
Можно разделитель изменить?


Можно, наверное.


В предыдущей версии (или мне показалось?) десятичный разделитель был изменен на системный. Но в 2019.10.18.1 вернулась точка вместо зяпятой (для моих региональных настроек системы).
18 окт 19, 13:47    [21997413]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3330
Gorynich
В предыдущей версии (или мне показалось?) десятичный разделитель был изменен на системный. Но в 2019.10.18.1 вернулась точка вместо зяпятой (для моих региональных настроек системы).


Бажок, исправлю.
19 окт 19, 05:52    [21997861]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Симонов Денис
Member

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

добавь ключевое слово LATERAL для подсветки пожалуйста. В последней версии 4.0 это поддерживается.
7 апр 20, 10:20    [22112224]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3330
Симонов Денис

добавь ключевое слово LATERAL для подсветки пожалуйста. В последней версии 4.0 это поддерживается.


А что это?
9 апр 20, 06:31    [22113271]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
Симонов Денис
Member

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

Если перед производной таблицей указать ключевое слово LATERAL, то это позволит ссылаться
в них на столбцы предшествующих элементов из списка FROM. Без LATERAL каждый подзапрос
выполняется независимо и поэтому не может обращаться к другим элементам FROM.

Элемент LATERAL может находиться на верхнем уровне списка FROM или в дереве JOIN. В
последнем случае он может также ссылаться на любые элементы в левой части JOIN, справа
от которого он находится.

http://tracker.firebirdsql.org/browse/CORE-3435

использовать можно например вот так

SELECT
  HORSE.NAME,
  M.BYDATE,
  M.HEIGHT_HORSE,
  M.LENGTH_HORSE
FROM HORSE
CROSS JOIN LATERAL(
  SELECT *
  FROM MEASURE
  WHERE MEASURE.CODE_HORSE = HORSE.CODE_HORSE
  ORDER BY MEASURE.BYDATE DESC
  FETCH FIRST ROW ONLY) M


выведет всех лошадей с промерами и их последние промеры. Если промеров нет, то лошадь не будет выведена.

SELECT
  HORSE.NAME,
  M.BYDATE,
  M.HEIGHT_HORSE,
  M.LENGTH_HORSE
FROM HORSE
LEFT JOIN LATERAL(
  SELECT *
  FROM MEASURE
  WHERE MEASURE.CODE_HORSE = HORSE.CODE_HORSE
  ORDER BY MEASURE.BYDATE DESC
  FETCH FIRST ROW ONLY) M ON TRUE


А вот это выведет всех лошадей и их последние промеры, если они есть.
9 апр 20, 09:20    [22113305]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 4. Про него пока пишите сюда.  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3330
Ну вот, не только подсвечивать. Парсер тоже допиливать надо.
9 апр 20, 10:01    [22113319]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
Все форумы / IBExpert Ответить