Очень Странный SQL PostgreSQL - PullRequest
5 голосов
/ 28 марта 2011

В нашем PostgreSQL-СЕРВЕРЕ версии 8.4 есть странный SQL.Это похоже на системный SQL, который оправдывается PG-сервером!Я понятия не имею об этом 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'

Ответы [ 2 ]

7 голосов
/ 28 марта 2011

Это часть реализации getTables() в драйвере JDBC postgresql.

Google поиск кода приведет вас к нему.

1 голос
/ 22 января 2016

Эта проблема также возникает, когда ваше приложение использует некоторый менеджер соединений, например c3p0. C3P0 имеет опцию preferredTestQuery, которая определяет запрос, который должен быть выполнен до получения соединения из пула соединений.

Если бы вы не установили эту опцию, это сделало бы какой-нибудь странный SQL-запрос, в противном случае вы можете сказать ему использовать preferredTestQuery=SELECT 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...