Использование функции TIMESTAMP_FORMAT в QSYS2 недопустимо.Ошибка отображения данных на элементе - PullRequest
0 голосов
/ 18 марта 2019

Я очень новичок в iseries / DB2.

Мы используем V7R3. У нас есть таблица, которая каждый день генерируется программой RPG в виде физического файла. Для доступа к данным таблицы из Java мы используем драйвер jt400.jar jdbc.

Большинство запросов к таблице работают нормально, но некоторые сложные запросы, использующие "DENSE_RANK () OVER (ORDER BY" и "ROW_NUMBER () OVER (PARTITION BY", время от времени зависают и приводят к тому, что процессор на 100% убивает только задание). на стороне AS400 решает проблему.

в журнале AS400 я вижу:

Job 969954/QUSER/QZDASOINIT started on 02/21/19 at 09:36:46 in subsystem 
QUSRWRK in QSYS. Job entered system on 02/21/19 at 09:36:46. 
User USERXX from client X.X.X.X connected to server. 
Use of function TIMESTAMP_FORMAT in QSYS2 not valid. 
Use of function TIMESTAMP_FORMAT in QSYS2 not valid. 
Data mapping error on member TABLE_NAME. 
Data mapping error on member TABLE_NAME. 
Data mapping error on member TABLE_NAME. 
Data mapping error on member TABLE_NAME. 
Value in date, time, or timestamp string not valid. 

Это похоже на проблему, описанную в Почему я получаю исключение "[SQL0802] Преобразование данных ошибки отображения данных"? и, вероятно, проблема связана с неверными данными, хранящимися в столбцах типа DATE.

Глядя на столбцы DATE, я вижу, что некоторые записи отображаются в SQuirrel SQL Client как <null>. Интересно, что здесь есть два разных <null>, возвращаемых по отдельному запросу. enter image description here

Если я бегу

 select  distinct VARCHAR_FORMAT(DATE_COLUMN, 'YYYY/MM/DD')  from TABLE_NAME

я получаю 0001/01/01 а также 9999/12/31 для этих <null> строк.

если я запускаю Select * from TABLE, где DATE_COLUMN равен null, я не получаю никаких результатов. Поэтому я не уверен, что это за <null>.

Не уверен, что эти записи могут вызвать проблемы.

UPD: при запуске

Select * from TABLE

Я вижу ошибки в журнале клиента JDBC:

Warning:   [SQL0181] Value in date, time, or timestamp string not valid.
SQLState:  01534
ErrorCode: 181
Warning:   [SQL0181] Value in date, time, or timestamp string not valid.
SQLState:  01534
ErrorCode: 181Warning:   [SQL0181] Value in date, time, or timestamp string not valid.
SQLState:  01534
ErrorCode: 181
Warning:   [SQL0181] Value in date, time, or timestamp string not valid.
SQLState:  01534
ErrorCode: 181
Query 1 of 1, Rows read: 100, Elapsed time (seconds) - Total: 0.252, SQL query: 0.005, Reading results: 0.247

на основе https://www.consolut.com/en/s/sap-ides-access/d/s/p/40/doc/XH-SQL0181/ это должна быть неправильная дата где-то в таблице

Вопрос в том, есть ли способ найти и отфильтровать записи, которые содержат «недопустимые» данные (вызывающие выше исключения в журнале) со стороны SQL?

...