Страница 1 из 1
11.6 linux приведение типов int64()
Добавлено: 02 май 2018, 09:41
valun
Добрый день !
На Linux из редактора при работе конструкции
for each geo where int64(geo.geo) > 15 no-lock.
обрывается коннект к базе: Отсоединение; сервер БД останавливается. (2659)
При том же варианте int(geo.geo) - все ок.
Причем, если это делать с переменной int64(str), то тоже все ок.
Почему ?
Re: 11.6 linux приведение типов int64()
Добавлено: 10 май 2018, 10:33
Arelav
День добрый!
Какой тип данных у поля geo.geo?
Какая кодировку у БД?
Re: 11.6 linux приведение типов int64()
Добавлено: 10 май 2018, 10:38
Arelav
Подключение через разделяемую память или сетевое?
SP и/или hot-fix какие-то установлены?
Re: 11.6 linux приведение типов int64()
Добавлено: 10 май 2018, 10:44
Arelav
Проверил на sports с таблицей order-line, и полем price (DECIMAL), OpenEdge Release 11.6.3.
for each order-line where int64(Price) > 10 no-lock.
displ order-line.
Без проблем.
Re: 11.6 linux приведение типов int64()
Добавлено: 10 май 2018, 10:48
Arelav
Re: 11.6 linux приведение типов int64()
Добавлено: 11 май 2018, 09:50
valun
Re: 11.6 linux приведение типов int64()
Добавлено: 11 май 2018, 09:55
valun
Re: 11.6 linux приведение типов int64()
Добавлено: 14 май 2018, 11:04
dmikai
Voobshche takije zaprosi pisat nekrasivo.
Ponjatno, chto v tablice GEO zapisej nemnogo i FULL-SCAN ne tak strashno.
Poprobuj tak:
for each geo no-lock:
if int64(geo.geo) > 15 then do:
/* more stuff here */
end.
end.
Re: 11.6 linux приведение типов int64()
Добавлено: 14 май 2018, 15:49
Arelav
1. Согласен, что преобразования типов в запросе не есть очень хорошо.
2. Странно, что имеет место ошибка (279) SYSTEM ERROR: stkpush: stack overflow. Increase the -s parameter. База останавливается из-за неё, но что явилось причиной?
3. Возможно причина в нестандартной кодировке KOI8-RL. Думаю, стоит открыть кейс в тех.поддержке, приложив полный лог БД, в том числе, df-самой кодировки, содержимое startup.pf, df-таблицы и текстовый дамп таблицы, если не секретно конечно. Т.е. всё необходимое, что позволит воспроизвести ошибку.
4. Установить 11.7.3 и проверить на свежей версии.
Вероятно, что из-за кодировки KOI8-RL в поле есть какой-то спецсимвол, а может быть баг из-за неё.
Другой вариант, битый индекс по этому полю.
Re: 11.6 linux приведение типов int64()
Добавлено: 15 май 2018, 09:01
valun
Re: 11.6 linux приведение типов int64()
Добавлено: 15 май 2018, 09:03
valun