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

Обсуждение вопросов по администрированию СУБД Progress OpenEdge
valun
Старожил
Сообщения: 49
Зарегистрирован: 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 писал(а):обрывается коннект к базе: Отсоединение; сервер БД останавливается. (2659)


Лог базы тоже не помешает посмотреть более детально.

valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

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

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

Arelav писал(а):День добрый!

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


Добрый день !

KOI8-RL,
тип поля geo - char индексное.

valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

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

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

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


Лог базы тоже не помешает посмотреть более детально.

[2018/05/11@09:53:14.924+0300] P-24765 T-1 I SRV 77: (-----) Previous message sent on behalf of user 422, server pid 24765, broker pid 6765
[2018/05/11@09:53:14.958+0300] P-7001 T-1 F SRV 13: (279) SYSTEM ERROR: stkpush: stack overflow. Increase the -s parameter.
[2018/05/11@09:53:14.958+0300] P-7001 T-1 I SRV 13: (439) ** Save file named core for analysis by Progress Software Corporation.
[2018/05/11@09:53:14.959+0300] P-7001 T-1 I SRV 13: (739) Logout usernum 828, userid danaro, on plato6.ltk 99.
[2018/05/11@09:53:14.960+0300] P-7001 T-1 I SRV 13: (739) Logout usernum 862, userid anikaz, on plato5.ltk 107.
[2018/05/11@09:53:14.960+0300] P-7001 T-1 I SRV 13: (739) Logout usernum 866, userid erijeg, on plato6.ltk 9.
[2018/05/11@09:53:14.961+0300] P-7001 T-1 I SRV 13: (739) Logout usernum 879, userid ingpan, on platon-daemons 48.
[2018/05/11@09:53:14.962+0300] P-7001 T-1 I SRV 13: (739) Logout usernum 704, userid dwhbase, on platon-daemons batch.
[2018/05/11@09:53:14.962+0300] P-7001 T-1 I SRV 13: (739) Logout usernum 520, userid annbir, on plato6.ltk 127.
[2018/05/11@09:53:14.963+0300] P-7001 T-1 I SRV 13: (739) Logout usernum 495, userid valtut, on plato4.ltk 5.
[2018/05/11@09:53:14.963+0300] P-7001 T-1 I SRV 13: (2520) Stopped.

моя запись usernum 495, userid valtut

11.6 без SP

Аватара пользователя
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
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

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

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

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.


да, так работает, спасибо :)

valun
Старожил
Сообщения: 49
Зарегистрирован: 04 авг 2007, 12:48
Контактная информация:

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

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

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


ок, попробую новую поставить