slony1-bugs at lists.slony.info slony1-bugs at lists.slony.info
Wed Oct 28 07:59:17 PDT 2009
http://www.slony.info/bugzilla/show_bug.cgi?id=100

           Summary: updateReloid (int4, int4) is selecting the wrong column
                    name for the sl_sequence table
           Product: Slony-I
           Version: 1.2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: trivial
          Priority: medium
         Component: stored procedures
        AssignedTo: slony1-bugs at lists.slony.info
        ReportedBy: shaun.jackson at gmail.com
                CC: slony1-bugs at lists.slony.info
   Estimated Hours: 0.0


I got this error when running the slonik command "REPAIR CONFIG"

<stdin>:9: PGRES_FATAL_ERROR select "_rep".updateReloid(1, -1);  - ERROR: 
column t2.tab_reloid does not exist
LINE 1: ...sts (select 1 from "_rep".sl_sequence t2 where t2.tab_rel...
                                                             ^
QUERY:  update "_rep".sl_sequence set seq_reloid = (select oid from pg_class pc
where relkind <> 'S' and not exists (select 1 from "_d2prep".sl_sequence t2
where t2.tab_reloid = pc.oid) limit 1) where tab_id =  $1 
CONTEXT:  PL/pgSQL function "updatereloid" line 56 at SQL statement


"update ""_rep"".sl_sequence set seq_reloid = (select oid from pg_class pc
where relkind <> 'S' and not exists (select 1 from ""_rep"".sl_sequence t2
where t2.tab_reloid = pc.oid) limit 1) where tab_id =  $1 

I found the source of the error in the slony1_funcs.sql updateReloid function
definition.
-----
for prec in select seq_id from @NAMESPACE at .sl_sequence loop
  update @NAMESPACE at .sl_sequence set seq_reloid = (select oid from pg_class pc
    where relkind <> 'S' and not exists (select 1 from @NAMESPACE at .sl_sequence
t2
    where t2.tab_reloid = pc.oid) limit 1)
  where tab_id = prec.seq_id;
end loop;
------
To fix this I just replaced t2.tab_reloid to t2.seq_reloid and 
the tab_id to seq_id.


-- 
Configure bugmail: http://www.slony.info/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
You are the assignee for the bug.


More information about the Slony1-bugs mailing list