我们的PostgreSQL服务器8.4版中有一个奇怪的SQL。它看起来像是由PG服务器执行的系统sql!我不知道这个SQL吗?有人知道吗?

-奇怪的SQL

SELECT NULL AS TABLE_CAT,
       n.nspname AS TABLE_SCHEM,
       c.relname AS TABLE_NAME,
       CASE n.nspname ~ '^pg_' OR n.nspname = 'information_schema'
          WHEN true THEN
            CASE
               WHEN n.nspname = 'pg_catalog' OR n.nspname = 'information_schema' THEN
                 CASE c.relkind
                   WHEN 'r' THEN 'SYSTEM TABLE'
                   WHEN 'v' THEN 'SYSTEM VIEW'
                   WHEN 'i' THEN 'SYSTEM INDEX'
                   ELSE NULL
                 END
               WHEN n.nspname = 'pg_toast' THEN
                 CASE c.relkind
                   WHEN 'r' THEN 'SYSTEM TOAST TABLE'
                   WHEN 'i' THEN 'SYSTEM TOAST INDEX'
                   ELSE NULL
                 END
               ELSE
                 CASE c.relkind
                   WHEN 'r' THEN 'TEMPORARY TABLE'
                   WHEN 'i' THEN 'TEMPORARY INDEX'
                   ELSE NULL
                 END
             END
             WHEN false THEN
               CASE c.relkind
                 WHEN 'r' THEN 'TABLE'
                 WHEN 'i' THEN 'INDEX'
                 WHEN 'S' THEN 'SEQUENCE'
                 WHEN 'v' THEN 'VIEW'
                 ELSE NULL
               END
             ELSE NULL
           END  AS TABLE_TYPE,
           d.description AS REMARKS
      FROM pg_catalog.pg_namespace n,
           pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_description d ON (c.oid = d.objoid
                                      AND d.objsubid = 0)
 LEFT JOIN pg_catalog.pg_class dc ON (d.classoid = dc.oid
                                 AND dc.relname='pg_class'

最佳答案

它是postgresql JDBC驱动程序中getTables()实现的一部分。
更新
在最初发布此答案的几年后,Google代码搜索已退休,今天您可以在pgjdbc "meta data" sources中看到此逻辑。

关于sql - PostgreSQL的一个非常奇怪的SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5453992/

10-11 02:56
查看更多