Postgresql
PostgreSQL 聲稱支持 179 個 SQL:2016 特性中的 170 個,但它也列出了它不支持的 SQL:2016 的 309 個特性。為什麼會出現差異?
截至 2020 年 9 月,PostgreSQL 聲稱支持大部分 SQL:2016 標準,但其中的數字根本不匹配。來自 PostgreSQL 的文件:
從 2020 年 9 月發布的第 13 版開始,PostgreSQL 至少符合SQL:2016 Core 一致性的 179 個強制性特性中的 170 個。(強調我的)
因此不支持 9 個功能。但是在其他地方,PostgreSQL 列出了它不支持的 SQL:2016 的所有特性,並且列出了309個特性。這比SQL:2016 中聲稱的第一頁更不受支持的功能*。*當然,一些不受支持的功能是無關緊要的,例如“Embedded Ada”或“Module Language COBOL”,但無論哪種方式,這裡列出的不受支持的功能都超過 9 個。而且我認為 SQL:2016 在 2020 年和 2021 年之間沒有太大變化(甚至根本沒有變化),所以這不能成為不匹配的原因。
我認為個別不受支持的功能可能會以某種方式組合成 9 個“功能”,例如所有涉及支持死語言的功能都算作一個功能,所有與 XML 相關的功能都算作一個功能,等等,但是在略過之後309 個不受支持的功能列表,我看不出有什麼明確的方法可以做到這一點。
那麼,為什麼會出現差異?是因為單個功能被組合在一起,還是其他原因?
SQL 標準中的功能分為強制功能和可選功能。
如此處所述
在完全符合核心要求的 177 個強制性特性中,PostgreSQL 至少符合 170 個。此外,還有一長串支持的可選特性
(強調我的)
因此,您看到的差異源於強制性和可選功能之間的差異。