Гость
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Firebird 4. Про него пока пишите сюда. / 25 сообщений из 116, страница 1 из 5
28.02.2019, 09:45
    #39780197
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
В сегодняшней версии поддерживаются новые синтаксические конструкции, функции и т.д. в PSQL-объектах. Можно потестить.

Про Database Comparer писать не надо, его буду пилить в последнюю очередь.

ЗЫ. Модераторы, а можно тему закрепить пока?
...
Рейтинг: 0 / 0
28.02.2019, 10:19
    #39780214
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
IBExpert,

а по часовым поясам положительные новости есть? Последний раз когда пробовал они не верно отображались.
...
Рейтинг: 0 / 0
28.02.2019, 10:46
    #39780228
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Симонов Дениса по часовым поясам положительные новости есть? Последний раз когда пробовал они не верно отображались.

Я у себя ничего не правил.

Проверил...
Код: plsql
1.
2.
SELECT CAST('00:00:00 Europe/Moscow' AS TIME WITH TIME ZONE),
       CAST('00:00:00 +3' AS TIME WITH TIME ZONE) FROM RDB$DATABASE



выдает 21:00:00 в обеих колонках, а раньше выдавал разные значения.
Насколько это (21:00) правильно - фиг знает. Я в этих таймзонах путаюсь.
...
Рейтинг: 0 / 0
28.02.2019, 10:50
    #39780231
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
IBExpertвыдает 21:00:00 в обеих колонках, а раньше выдавал разные значения.
Насколько это (21:00) правильно - фиг знает. Я в этих таймзонах путаюсь.

Похоже, все равно ерунда. Если кастить к строке, то 00:00:00 выдает, что логично.
...
Рейтинг: 0 / 0
28.02.2019, 12:20
    #39780287
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
IBExpert,

надо сравнивать с результатами в ISQL

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> connect 'inet4://localhost:3054/test' user SYSDBA password 'masterkey';
Database: 'inet4://localhost:3054/test', User: SYSDBA
SQL> SELECT CAST('00:00:00 Europe/Moscow' AS TIME WITH TIME ZONE),
CON>        CAST('00:00:00 +3' AS TIME WITH TIME ZONE) FROM RDB$DATABASE;

                                          CAST                                           CAST
============================================== ==============================================
00:00:00.0000 Europe/Moscow                    00:00:00.0000 +03:00

SQL>

Ты сам декодируешь структуры ISC_TIMESTAMP_TZ и ISC_TIME_TZ или используешь
IUtil.decodeTimeTz и IUtil.decodeTimeStampTz?
...
Рейтинг: 0 / 0
28.02.2019, 14:54
    #39780432
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Симонов Дениснадо сравнивать с результатами в ISQL


ISQL и раньше как-то умудрялся правильный результат выдавать, мне это ничего не говорит.
Но в движке-то таки что-то поменяли, раз теперь одно и то же время в обеих колонках выдает. Раньше разное выдавал.

Симонов ДенисТы сам декодируешь структуры ISC_TIMESTAMP_TZ и ISC_TIME_TZ или используешь
IUtil.decodeTimeTz и IUtil.decodeTimeStampTz?

Значение времени декодируется ровно тем же куском кода, как и в случае ISC_TIME: берутся первые четыре байта и скармливаются isc_decode_sql_time. Ну так вот в данном конкретном случае в этих четырех байтах должен быть ноль. И как его ни крути, 9 часов вечера из него никак не выкрутишь. А от сервера прилетает совсем не ноль...
...
Рейтинг: 0 / 0
28.02.2019, 15:20
    #39780446
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
IBExpert,

Может потому что

README.time_zone.mdTIME/TIMESTAMP WITH TIME ZONE has respectively the same storage of TIME/TIMESTAMP WITHOUT TIME ZONE plus 2 bytes for the time zone identifier or displacement.

The time/timestamp parts are stored in UTC (translated from the informed time zone).
...
Рейтинг: 0 / 0
28.02.2019, 15:23
    #39780450
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
в fbclient работа с TIME WITHOUT TIME ZONE и TIME WITH TIME ZONE отличается

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
void UtilInterface::decodeTime(ISC_TIME time,
	unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions)
{
	tm times;
	isc_decode_sql_time(&time, &times);

	if (hours)
		*hours = times.tm_hour;
	if (minutes)
		*minutes = times.tm_min;
	if (seconds)
		*seconds = times.tm_sec;
	if (fractions)
		*fractions = time % ISC_TIME_SECONDS_PRECISION;
}

void UtilInterface::decodeTimeTz(CheckStatusWrapper* status, const ISC_TIME_TZ* timeTz,
	unsigned* hours, unsigned* minutes, unsigned* seconds, unsigned* fractions,
	unsigned timeZoneBufferLength, char* timeZoneBuffer)
{
	try
	{
		tm times;
		int intFractions;
		TimeZoneUtil::decodeTime(*timeTz, CVT_commonCallbacks, &times, &intFractions);

		if (hours)
			*hours = times.tm_hour;

		if (minutes)
			*minutes = times.tm_min;

		if (seconds)
			*seconds = times.tm_sec;

		if (fractions)
			*fractions = (unsigned) intFractions;

		if (timeZoneBuffer)
			TimeZoneUtil::format(timeZoneBuffer, timeZoneBufferLength, timeTz->time_zone);
	}
	catch (const Exception& ex)
	{
		ex.stuffException(status);
	}
}
...
Рейтинг: 0 / 0
28.02.2019, 15:39
    #39780468
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Симонов ДенисIBExpert,

Может потому что

README.time_zone.mdTIME/TIMESTAMP WITH TIME ZONE has respectively the same storage of TIME/TIMESTAMP WITHOUT TIME ZONE plus 2 bytes for the time zone identifier or displacement.

The time/timestamp parts are stored in UTC (translated from the informed time zone).

Бррр... Хочешь сказать, надо отнимать/прибавлять сдвиг часовой зоны??
Т.е., '00:00:00 Europe/Moscow' означает "полночь по московскому времени", а соответствующее ему ISC_TIME_TZ должно содержать 21:00 UTC и часовой пояс Москвы? Тогда все логично...
Но где в таком случае брать сдвиг для часовых поясов вроде 'Europe/Moscow'?
...
Рейтинг: 0 / 0
28.02.2019, 15:46
    #39780475
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
IBExpert,

вот поэтому в fbclient и реализовали специальный хелпер, ибо работа с часовыми поясами не тривиальна. Я так понимаю он аж до icu лезет.
...
Рейтинг: 0 / 0
28.02.2019, 15:56
    #39780483
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Симонов Денисвот поэтому в fbclient и реализовали специальный хелпер, ибо работа с часовыми поясами не тривиальна. Я так понимаю он аж до icu лезет.

Я в legacy api не вижу ничего специального для ISC_TIME_TZ.
...
Рейтинг: 0 / 0
01.03.2019, 09:02
    #39780765
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Симонов Денисвот поэтому в fbclient и реализовали специальный хелпер, ибо работа с часовыми поясами не тривиальна. Я так понимаю он аж до icu лезет.

Да, пришлось таки прикручивать OOP API. Сейчас вроде правильно все отображается.
...
Рейтинг: 0 / 0
01.03.2019, 14:25
    #39781029
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
IBExpert,

спасибо. Уже можно посмотреть или не выкладывал ещё?
...
Рейтинг: 0 / 0
01.03.2019, 15:06
    #39781066
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Симонов Денисспасибо. Уже можно посмотреть или не выкладывал ещё?

Лежит уже.
...
Рейтинг: 0 / 0
01.03.2019, 15:46
    #39781080
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
IBExpert,

что-то не работает

Код: sql
1.
select current_time from rdb$database



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Error Message:
----------------------------------------
Access violation at address 6AEF917F in module 'fbclient.dll'. Read of address 00000004

[6AEF917F] isc_blob_set_desc + $465F
[00403BDF] System.@HandleAnyException + $33
[004F5BDE] Firebird.IUtil.decodeTimeTz (Line 253, "Firebird.pas" + 1) + $1E
[005345EC] FIBQuery.TFIBXSQLVAR.GetAsDateTime (Line 821, "FIBQuery.pas" + 30) + $30
[0052B8CC] FIBDataSet.TFIBCustomDataSet.FetchCurrentRecordToBuffer (Line 2276, "FIBDataSet.pas" + 69) + $E
[0052EBE7] FIBDataSet.TFIBCustomDataSet.GetRecord (Line 3991, "FIBDataSet.pas" + 50) + $16
[0050E152] Db.TDataSet.GetNextRecord (Line 9185, "DB.pas" + 9) + $13

Клиент родной. Взята официальная Beta 1.
...
Рейтинг: 0 / 0
01.03.2019, 15:55
    #39781086
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
IBExpertВ сегодняшней версии поддерживаются новые синтаксические конструкции, функции и т.д. в PSQL-объектах. Можно потестить.


NUMERIC(34, x) и DECIMAL(34, x) не отображаются в данных таблицы пишет

Unknown SQL data type (32758)

Причём DECFLOAT(34) работает
...
Рейтинг: 0 / 0
01.03.2019, 16:07
    #39781097
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Симонов Денисчто-то не работает

Код: sql
1.
select current_time from rdb$database




Странно, у меня работает... Клиент 1436.
...
Рейтинг: 0 / 0
01.03.2019, 16:08
    #39781098
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Симонов ДенисNUMERIC(34, x) и DECIMAL(34, x) не отображаются в данных таблицы пишет

Unknown SQL data type (32758)

Причём DECFLOAT(34) работает

Для DECFLOAT там SET DECFLOAT BIND выполняется, а нумериками я еще не занимался.
...
Рейтинг: 0 / 0
01.03.2019, 16:28
    #39781111
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
IBExpert,

Код: sql
1.
2.
3.
4.
5.
SELECT
    CAST('12.12.2018 00:00:00 +4:00' AS TIMESTAMP WITH TIME ZONE)
   -- , current_timestamp as v
FROM
    RDB$DATABASE



как только комментируем падает. Клиент точно такой же, БД создана с нуля и пустая.
...
Рейтинг: 0 / 0
01.03.2019, 16:30
    #39781112
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Симонов Денис,

* раскомментируем
...
Рейтинг: 0 / 0
01.03.2019, 16:33
    #39781115
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
А если не расскоментировать, то все ОК что-ли? Конкретно на current_timestamp валится? А если вместо него вторым полем еще раз CAST('12.12.2018 00:00:00 +4:00' AS TIMESTAMP WITH TIME ZONE) заслать?
...
Рейтинг: 0 / 0
01.03.2019, 16:38
    #39781121
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
IBExpert,

там проблема с именованными поясами

Код: sql
1.
2.
3.
4.
SELECT
    CAST('12.12.2018 00:00:00 Africa/Asmera' AS TIMESTAMP WITH TIME ZONE)
FROM
    RDB$DATABASE



если задавать числами +4, +3:00 и другое то нормально
...
Рейтинг: 0 / 0
01.03.2019, 16:51
    #39781131
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Симонов Денистам проблема с именованными поясами


У меня всяко работает. Ладно, забей пока.
...
Рейтинг: 0 / 0
01.03.2019, 17:20
    #39781154
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Возможно, у тебя по какой-то причине клиент IStatus при декодировании дергает. Но я его сейчас туда не передаю, там nil.
Завтра IStatus допилю и будем поглядеть.
...
Рейтинг: 0 / 0
01.03.2019, 17:28
    #39781160
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird 4. Про него пока пишите сюда.
Ну, так и есть. Если подсунуть неизвестную зону, то без IStatus он в AV выпадает.
Интересно, а что у тебя ISQL выдает на тех же запросах? По идее, тоже ругаться как-то должен.
...
Рейтинг: 0 / 0
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Firebird 4. Про него пока пишите сюда. / 25 сообщений из 116, страница 1 из 5
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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