S Murthy Kambhampaty wrote:
> In postgresql 8.0, "create table <> as ..." statements
> appear not to logged unless log_statement = 'all' in
> postgresql.conf.  We are trying to reduce noise in the
> logs from pgAdminIII and phpPgAdmin, but we use a lot
> of 'create table <> as ...' queries that need to be
> logged, and their duration tracked.  Is there a
> combination of settings that will do the trick?  Can
> postgresql be upgraded to log "create table <> as ..."
> statements with log_statment = 'ddl' and/or
> log_statment = 'mod'?

Ah, I see I forgot about SELECT INTO when doing this for 8.0.  The
attached patch fixes it.  I will apply it to 8.0.X and CVS current. 
Thanks for the report.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/backend/tcop/postgres.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/tcop/postgres.c,v
retrieving revision 1.444
diff -c -c -r1.444 postgres.c
*** src/backend/tcop/postgres.c 24 May 2005 04:18:04 -0000      1.444
--- src/backend/tcop/postgres.c 30 May 2005 19:37:09 -0000
***************
*** 498,504 ****
                if (IsA(parsetree, PrepareStmt))
                        parsetree = (Node *) (((PrepareStmt *) 
parsetree)->query);
  
!               if (IsA(parsetree, SelectStmt))
                        continue;               /* optimization for frequent 
command */
  
                if (log_statement == LOGSTMT_MOD &&
--- 498,505 ----
                if (IsA(parsetree, PrepareStmt))
                        parsetree = (Node *) (((PrepareStmt *) 
parsetree)->query);
  
!               if (IsA(parsetree, SelectStmt) &&
!                       ((SelectStmt *) parsetree)->into == NULL)
                        continue;               /* optimization for frequent 
command */
  
                if (log_statement == LOGSTMT_MOD &&
***************
*** 514,519 ****
--- 515,521 ----
                if ((log_statement == LOGSTMT_MOD ||
                         log_statement == LOGSTMT_DDL) &&
                        (strncmp(commandTag, "CREATE ", strlen("CREATE ")) == 0 
||
+                        IsA(parsetree, SelectStmt) || /* SELECT INTO, CREATE 
AS */
                         strncmp(commandTag, "ALTER ", strlen("ALTER ")) == 0 ||
                         strncmp(commandTag, "DROP ", strlen("DROP ")) == 0 ||
                         IsA(parsetree, GrantStmt) ||   /* GRANT or REVOKE */
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to