Существует ли максимальная длина для списков параметров Jasper?


Один из наших отчетов часто запускается с выбором, который включает около 14 000 драйверов.

Схема для параметра (в Родительском отчете) выглядит следующим образом:

<parameter name="DriverIds" class="java.util.List">
    <parameterDescription><![CDATA[]]></parameterDescription>
</parameter>

Предложение where для select (в пределах вложенного отчета) выглядит следующим образом:

and $X{IN, cast(e.login_id as char(12)), DriverIds}

Только 9 628 из 14 000 выбранных драйверов попадают в фактический запрос из вложенного отчета, согласно журналам Tomcat. Это число является одновременно последовательным и странно специфичным. (Если разработанное ограничение, я чувствую, что оно было бы что-то более круглое, как 10,000)

Если я проанализирую фактический пост на jasperserver, то все 14 000 водителей сделают это там. Если я напишу запрос вручную, я смогу выбрать для всех 14 000 драйверов. Проблема, по-видимому, находится внутри самого jasperserver.

Есть ли у Джаспера какое-то ограничение длины на $X{IN? Может ли лежащий в основе клиент БД иметь какие-то проблемы? (Знаки указывают на нет на последнем - кажется, что шапка Постгреса в этом смысле не срабатывает до 30 000 с)

1 3

1 ответ:

Джаспер на самом деле пытается залезть под капот. Таким образом, он ограничен значением maxParameterCount Tomcat по умолчанию 10,000. Как только я увеличил этот показатель до 50 000, все заработало просто замечательно.