Я вижу частые ссылки на WITH
запросы (обычные табличные выражения или CTE), выступающие в качестве ограждения оптимизации, когда серверу не разрешается вставлять фильтры в запросы CTE, извлекать общие выражения из CTE и т. Д. Часто утверждается поведение, требуемое стандартами SQL.
CTE, безусловно, являются забором оптимизации в PostgreSQL ... но требуется ли это стандартом или на самом деле просто деталями реализации?
Например, эти сообщения списка рассылки утверждают или предполагают, что это стандарт:
После упоминания об этом в комментарии меня спросили, где он указан, и после просмотра единственного черновика SQL: 2008 у меня есть доступ, и мне не повезло найти его.
Я еще не интенсивно изучал стандарт, поэтому надеюсь на предложение от кого-то, кто имеет: Требует ли стандарт ограждения CTE в PostgreSQL на самом деле? И если да, то где это указано? Или утверждения в списке рассылки Pg по ошибке?
См. Также тему оптимизации CTE в списке задач? ,
источник
STABLE
илиIMMUTABLE
.SQL/PSM
которые Pg вообще не поддерживает ...