2011-03-28 15 views
5

Hay un SQL extraño en nuestro SERVIDOR PostgreSQL, versión 8.4. ¡Parece un sistema sql que fue ejecutado por el servidor PG! No tengo idea acerca de este sql? Alguien sabe esto?Un SQL muy extraño de PostgreSQL

--Strange 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' 
+0

Mis ojos .. El formato con las etiquetas de codificación adecuados en el editor para su lectura. – stefan

+0

Publique código sin formato como ese otra vez, y no lo ayudaré. Si SO no puede leer su problema, SO no lo ayudará. –

+0

¿Estás hablando de 'CASE n.nspname ~ '^ pg_'' en la consulta? –

Respuesta

7

Es parte de la implementación getTables() en el controlador JDBC de PostgreSQL.

Google codesearch te llevará a él.

+0

gracias, ¿Esto tiene algún impacto en el SERVIDOR PostgreSQL? – francs

+0

El único "impacto" es que obtienes una lista de tablas. ¡Disfrutar! :-) – intgr

+0

Hola, intgr, ¿vio este SQL en su base de datos de productos? – francs

1

Este problema también se produce cuando su aplicación utiliza algún administrador de conexión como c3p0. C3P0 tiene la opción preferredTestQuery que define una consulta que se ejecutará antes de adquirir una conexión desde el grupo de conexión.

Si no establece esta opción sería hacer algo de consulta SQL raro, de lo contrario se puede decir que el uso preferredTestQuery=SELECT 1

+0

Todavía es el controlador JDBC que ejecuta esa declaración porque c3p0 tiene una configuración predeterminada bastante estúpida que usa 'getTables() 'para validar una conexión. –

+0

Supongo que este es el problema c3p0 y no el controlador JDBC, 'getTables()' funciona como debe. – Raman

+0

Esta puede ser la respuesta a una de las muchas razones por las que sucede – Raman

Cuestiones relacionadas