powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Проблемы с double при выгрузке/загрузке базы
11 сообщений из 11, страница 1 из 1
Проблемы с double при выгрузке/загрузке базы
    #33882350
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день!
ASA 7.04 патч 3541

1) Делаю выгрузку базы
2) Создаю новую базу
3) Выполняю скрипт для загрузки в новую
При загрузке данных одной из таблиц оператор INPUT INTO выдает ошибку, что загружаемое значение в строке такой-то не проходит по диапазону
5.13273425920143604E-313
Смотрю в выгруженный текстовый dat-файл этой таблицы - все верно, там 5.13273425920143604E-313.
Поле double. Минимум что там можно хранить, по документации 2.22507385850721e-308 (0 не в счет)
Смотрю в базу(откуда выгружал) там 5.13273425920143604E-313
Это как понимать? Откуда в базе может быть такое значение, если есть указанные ограничения по значениям.

Проблема усугубляется, что эти неверные значения выгрузились по нескольким полям и нескольким таблицам. Вручную dat-файлы править, естественно запаришься.
Пока единственное что приходит в голову,
выдать Update =0.0 на эти поля по этим таблицам перед выгрузкой.
Примерно так
Update t1 set price=0.0 where price<0.00000000000000001 and price<>0.0

Может кто сталкивался?
...
Рейтинг: 0 / 0
Проблемы с double при выгрузке/загрузке базы
    #33882625
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот те раз!!!
При экспериментах над полем double обнаружилось следующее:
Таблица t, поле price(double)
Если выполнить
1) Update t set price=2.22507385850721e-308
price=2.22507385850721e-308. Все правильно, самое минимальное значение проходит
2) Update t set price=2.22507385850720e-308
price=0.0 Все правильно, меньше минимально возможного значение = 0.0

А вот:
3) Update t set price=0.1/1.79769313486231e+308
price=5.56268464626788E-311. Т.е. меньше минимально возможного значения по базе!!!

Отсюда и моя проблемка описанная выше.

Тут мне кажется попахивает ошибочкой от Sybase
Проверьте кто может у себя в разных версиях.
Можно просто: оператор select .01/1.79769313486231e+308 что возвратит?
...
Рейтинг: 0 / 0
Проблемы с double при выгрузке/загрузке базы
    #33882712
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблемы с double при выгрузке/загрузке базы
    #33882842
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASCRUSASA9 = вернула 0
SA10 = вернула 0
--
www.rusug.ru - портал русскоязычной группы пользователей Sybase
Значит поправили.

А я вот сижу думаю.
Либо update по полям с double перед выгрузкой
Либо dat-файлы править в редакторе.
Хорошо что ошибка только в 3 таблицах.
...
Рейтинг: 0 / 0
Проблемы с double при выгрузке/загрузке базы
    #33883780
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ужаз. Кто жи price хранит в double ? Это же не average price ?
...
Рейтинг: 0 / 0
Проблемы с double при выгрузке/загрузке базы
    #33883916
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже на отсутствие нормализации мантисы. Только в этом случае можно выскочить за минимальное значение. Такое иногда наблюдается, если арифметика double реализуется программно.
...
Рейтинг: 0 / 0
Проблемы с double при выгрузке/загрузке базы
    #33884310
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivУжаз. Кто жи price хранит в double ? Это же не average price ?
Да я понимаю, что price надо обрезать до нужного кол-ва цифр после запятой.
Но в данном случае не в этом дело.
У меня ведь ошибка не только в колонке price. И вычисления в базе не мои.
Меня сам факт смущает.
Как может попасть в double число выходящее за пороговые значения по Sybase???
Про идее должно обрезаться всегда либо по максимальному либо по минимальному либо выдавать ошибку.
...
Рейтинг: 0 / 0
Проблемы с double при выгрузке/загрузке базы
    #33884475
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблемы с double при выгрузке/загрузке базы
    #33884504
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASCRUSА что стоит в опциях БД PRECISION и SCALE ?
--
www.rusug.ru - портал русскоязычной группы пользователей Sybase
SCALE=12
PRECISION=40
...
Рейтинг: 0 / 0
Проблемы с double при выгрузке/загрузке базы
    #33885263
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что касается выгрузки/загрузки базы, то проблему победил, выдав
update price=0.0 и т.д. на ошибочные записи перед выгрузкой базы.

Но проблема осталась.
Нельзя гарантировать, что это не повториться.
Сейчас проведу анализ кода(клиента и сервера), где эти значения меняются
вероятно надо будет дополнительные проверки в вычислениях вставить.

Так что кто ASA 7 пользуется, будьте внимательны в этом вопросе.
...
Рейтинг: 0 / 0
Проблемы с double при выгрузке/загрузке базы
    #33922846
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил в АСА9.0.2 3320.
результат селекта 5.56268464626788497E-311
Мда, странно, по докам меньше чем 2.22507385850721e–308 быть не должно.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Проблемы с double при выгрузке/загрузке базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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