Братан, у меня была такая же проблема. Дело в том, что я построил построитель запросов, довольно сложный, который строит его предикаты динамически в ожидании того, какие параметры были установлены, и кэширует запросы. В любом случае, до того, как я построил свой построитель запросов, у меня был не объектно-ориентированный процедурный код, который создавал ту же самую вещь (за исключением того, что он, конечно, не кэшировал запросы и не использовал параметры), которая работала безупречно. Теперь, когда мой сборщик попытался сделать то же самое, мой PostgreSQL выдал эту испорченную ошибку, которую вы тоже получили. Я проверил свой сгенерированный код SQL и не нашел ошибок. Странно, действительно.
Мой поиск вскоре подтвердил, что это был один конкретный предикат в предложении WHERE, вызвавший эту ошибку. Тем не менее, этот предикат был построен из кода, который выглядел, ну почти как точно , как то, как выглядел процедурный код до того, как это исключение начало появляться из ниоткуда.
Но я увидел одну вещь, которую я сделал по-другому в моем сборщике, в отличие от того, что ранее делал процедурный код. Это был порядок предикатов, которые он вставил в предложение WHERE! Поэтому я начал перемещать этот предикат и вскоре обнаружил, что порядок предикатов действительно может многое сказать. Если бы у меня был один только этот предикат, мой запрос работал (но, конечно, возвращал ошибочное совпадение результатов), если я ставил ему только один или другой предикат, он работал иногда, в других случаях он не работал. Более того, имитация предыдущего порядка процессуального кодекса также не сработала. В конечном итоге сработало то, что этот демонический предикат был помещен в начало моего предложения WHERE, как добавлен первый предикат! Итак, еще раз, если я не прояснил себя, порядок, в котором мои предикаты были добавлены в метод / предложение WHERE, создавал это исключение.