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

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

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

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

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

Проверил...
Код: 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
Firebird 4. Про него пока пишите сюда.
    #39780231
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertвыдает 21:00:00 в обеих колонках, а раньше выдавал разные значения.
Насколько это (21:00) правильно - фиг знает. Я в этих таймзонах путаюсь.

Похоже, все равно ерунда. Если кастить к строке, то 00:00:00 выдает, что логично.
...
Рейтинг: 0 / 0
Firebird 4. Про него пока пишите сюда.
    #39780287
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Firebird 4. Про него пока пишите сюда.
    #39780432
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениснадо сравнивать с результатами в ISQL


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

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

Значение времени декодируется ровно тем же куском кода, как и в случае ISC_TIME: берутся первые четыре байта и скармливаются isc_decode_sql_time. Ну так вот в данном конкретном случае в этих четырех байтах должен быть ноль. И как его ни крути, 9 часов вечера из него никак не выкрутишь. А от сервера прилетает совсем не ноль...
...
Рейтинг: 0 / 0
Firebird 4. Про него пока пишите сюда.
    #39780446
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Firebird 4. Про него пока пишите сюда.
    #39780450
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 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
Firebird 4. Про него пока пишите сюда.
    #39780468
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис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
Firebird 4. Про него пока пишите сюда.
    #39780475
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

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

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

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

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

Лежит уже.
...
Рейтинг: 0 / 0
Firebird 4. Про него пока пишите сюда.
    #39781080
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Firebird 4. Про него пока пишите сюда.
    #39781086
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertВ сегодняшней версии поддерживаются новые синтаксические конструкции, функции и т.д. в PSQL-объектах. Можно потестить.


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

Unknown SQL data type (32758)

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

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




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

Unknown SQL data type (32758)

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

Для DECFLOAT там SET DECFLOAT BIND выполняется, а нумериками я еще не занимался.
...
Рейтинг: 0 / 0
Firebird 4. Про него пока пишите сюда.
    #39781111
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Firebird 4. Про него пока пишите сюда.
    #39781112
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

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


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


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