I assume the attached patch is what you want done to fix this.  Applied.

It quotes table names for vacuum and analyze, and uppercases the
keywords for clarity.

---------------------------------------------------------------------------

Matthew T. O'Connor wrote:
> Ouch... sorry, my fault.  I'll fix this tomorrow (Friday) and submit a
> patch, or if you want to submit a patch that would be fine.  All you
> have to do is change the the sql statements to put quotes around the
> relation name. 
> 
> Thanks for catching this.
> 
> Matthew T. O'Connor
> 
> On Thu, 2003-09-04 at 18:39, Adam Kavan wrote:
> > Now that I have pg_autovacuum working I've bumped into another small 
> > bug.  When pg_autovacuum goes to vacuum or analyze one of my tables it runs...
> > 
> > analyze public.ConfigBackup
> > 
> > Because ConfigBackup is mixed case it cannot find the relation.  I fixed 
> > this by going to the function init_table_info and increasing the malloc for 
> > new_tbl->table_name by 2 and adding "'s to either side of the table 
> > name.  Is there anything wrong with this approach?  Is there a config I can 
> > set to make this non-case sensitive?
> > 
> > Thanks again for your time.
> > 
> > --- Adam Kavan
> > --- [EMAIL PROTECTED]
> > 
> > 
> > ---------------------------(end of broadcast)---------------------------
> > TIP 5: Have you checked our extensive FAQ?
> > 
> >                http://www.postgresql.org/docs/faqs/FAQ.html
> > 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
>       joining column's datatypes do not match
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: contrib/pg_autovacuum/pg_autovacuum.c
===================================================================
RCS file: /cvsroot/pgsql-server/contrib/pg_autovacuum/pg_autovacuum.c,v
retrieving revision 1.3
diff -c -c -r1.3 pg_autovacuum.c
*** contrib/pg_autovacuum/pg_autovacuum.c       4 Aug 2003 00:43:11 -0000       1.3
--- contrib/pg_autovacuum/pg_autovacuum.c       10 Sep 2003 19:57:15 -0000
***************
*** 581,587 ****
        {
                PGresult   *res = NULL;
  
!               res = send_query("vacuum", dbi);
                /* FIXME: Perhaps should add a check for PQ_COMMAND_OK */
                PQclear(res);
                return 1;
--- 581,587 ----
        {
                PGresult   *res = NULL;
  
!               res = send_query("VACUUM", dbi);
                /* FIXME: Perhaps should add a check for PQ_COMMAND_OK */
                PQclear(res);
                return 1;
***************
*** 733,739 ****
        PGresult   *res = NULL;
        int                     ret = 0;
  
!       res = send_query("show stats_row_level", dbi);
        ret =
                strcmp("on", PQgetvalue(res, 0, PQfnumber(res, "stats_row_level")));
        PQclear(res);
--- 733,739 ----
        PGresult   *res = NULL;
        int                     ret = 0;
  
!       res = send_query("SHOW stats_row_level", dbi);
        ret =
                strcmp("on", PQgetvalue(res, 0, PQfnumber(res, "stats_row_level")));
        PQclear(res);
***************
*** 1082,1088 ****
                                                                 */
                                                                if 
((tbl->curr_vacuum_count - tbl->CountAtLastVacuum) >= tbl->vacuum_threshold)
                                                                {
!                                                                       snprintf(buf, 
sizeof(buf), "vacuum analyze %s", tbl->table_name);
                                                                        if 
(args->debug >= 1)
                                                                        {
                                                                                
sprintf(logbuffer, "Performing: %s", buf);
--- 1082,1088 ----
                                                                 */
                                                                if 
((tbl->curr_vacuum_count - tbl->CountAtLastVacuum) >= tbl->vacuum_threshold)
                                                                {
!                                                                       snprintf(buf, 
sizeof(buf), "VACUUM ANALYZE \"%s\"", tbl->table_name);
                                                                        if 
(args->debug >= 1)
                                                                        {
                                                                                
sprintf(logbuffer, "Performing: %s", buf);
***************
*** 1096,1102 ****
                                                                }
                                                                else if 
((tbl->curr_analyze_count - tbl->CountAtLastAnalyze) >= tbl->analyze_threshold)
                                                                {
!                                                                       snprintf(buf, 
sizeof(buf), "analyze %s", tbl->table_name);
                                                                        if 
(args->debug >= 1)
                                                                        {
                                                                                
sprintf(logbuffer, "Performing: %s", buf);
--- 1096,1102 ----
                                                                }
                                                                else if 
((tbl->curr_analyze_count - tbl->CountAtLastAnalyze) >= tbl->analyze_threshold)
                                                                {
!                                                                       snprintf(buf, 
sizeof(buf), "ANALYZE \"%s\"", tbl->table_name);
                                                                        if 
(args->debug >= 1)
                                                                        {
                                                                                
sprintf(logbuffer, "Performing: %s", buf);
---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

Reply via email to