11.6 linux приведение типов int64()

Обсуждение вопросов по администрированию СУБД Progress OpenEdge
valun
Старожил
Сообщения: 50
Зарегистрирован: 04 авг 2007, 12:48

11.6 linux приведение типов int64()

Сообщение valun » 02 май 2018, 09:41

Добрый день !

На Linux из редактора при работе конструкции

for each geo where int64(geo.geo) > 15 no-lock.

обрывается коннект к базе: Отсоединение; сервер БД останавливается. (2659)

При том же варианте int(geo.geo) - все ок.
Причем, если это делать с переменной int64(str), то тоже все ок.
Почему ?

Аватара пользователя
Arelav
Администратор
Сообщения: 1881
Зарегистрирован: 25 мар 2005, 17:05
Откуда: Progress Technologies

Re: 11.6 linux приведение типов int64()

Сообщение Arelav » 10 май 2018, 10:33

День добрый!

Какой тип данных у поля geo.geo?
Какая кодировку у БД?


Аватара пользователя
Arelav
Администратор
Сообщения: 1881
Зарегистрирован: 25 мар 2005, 17:05
Откуда: Progress Technologies

Re: 11.6 linux приведение типов int64()

Сообщение Arelav » 10 май 2018, 10:38

Подключение через разделяемую память или сетевое?
SP и/или hot-fix какие-то установлены?


Аватара пользователя
Arelav
Администратор
Сообщения: 1881
Зарегистрирован: 25 мар 2005, 17:05
Откуда: Progress Technologies

Re: 11.6 linux приведение типов int64()

Сообщение Arelav » 10 май 2018, 10:44

Проверил на sports с таблицей order-line, и полем price (DECIMAL), OpenEdge Release 11.6.3.
for each order-line where int64(Price) > 10 no-lock.
displ order-line.

Без проблем.


Аватара пользователя
Arelav
Администратор
Сообщения: 1881
Зарегистрирован: 25 мар 2005, 17:05
Откуда: Progress Technologies

Re: 11.6 linux приведение типов int64()

Сообщение Arelav » 10 май 2018, 10:48



valun
Старожил
Сообщения: 50
Зарегистрирован: 04 авг 2007, 12:48

Re: 11.6 linux приведение типов int64()

Сообщение valun » 11 май 2018, 09:50


valun
Старожил
Сообщения: 50
Зарегистрирован: 04 авг 2007, 12:48

Re: 11.6 linux приведение типов int64()

Сообщение valun » 11 май 2018, 09:55


Аватара пользователя
dmikai
Старожил
Сообщения: 517
Зарегистрирован: 20 сен 2006, 23:19
Откуда: Рига, Латвия

Re: 11.6 linux приведение типов int64()

Сообщение dmikai » 14 май 2018, 11:04

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.

Аватара пользователя
Arelav
Администратор
Сообщения: 1881
Зарегистрирован: 25 мар 2005, 17:05
Откуда: Progress Technologies

Re: 11.6 linux приведение типов int64()

Сообщение Arelav » 14 май 2018, 15:49

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 в поле есть какой-то спецсимвол, а может быть баг из-за неё.
Другой вариант, битый индекс по этому полю.


valun
Старожил
Сообщения: 50
Зарегистрирован: 04 авг 2007, 12:48

Re: 11.6 linux приведение типов int64()

Сообщение valun » 15 май 2018, 09:01


valun
Старожил
Сообщения: 50
Зарегистрирован: 04 авг 2007, 12:48

Re: 11.6 linux приведение типов int64()

Сообщение valun » 15 май 2018, 09:03