Steve Singer ssinger at ca.afilias.info
Wed Jun 30 06:51:10 PDT 2010
This fixes bug # 118 - subscribing to a set with an inherited
table  where the inheriting table has a lower tab_id than the
parent table deletes all of the data in the parent table
---
 src/backend/slony1_funcs.sql     |    2 +-
 src/backend/slony1_funcs.v83.sql |   15 +++++++++++++++
 src/backend/slony1_funcs.v84.sql |   10 ++++++++++
 3 files changed, 26 insertions(+), 1 deletions(-)

diff --git a/src/backend/slony1_funcs.sql b/src/backend/slony1_funcs.sql
index 684800a..e6b83f1 100644
--- a/src/backend/slony1_funcs.sql
+++ b/src/backend/slony1_funcs.sql
@@ -5597,7 +5597,7 @@ begin
 	-- Try using truncate to empty the table and fallback to
 	-- delete on error.
 	-- ----
-	execute 'truncate ' || @NAMESPACE at .slon_quote_input(v_tab_fqname);
+	perform @NAMESPACE at .TruncateOnlyTable(v_tab_fqname);
 	raise notice 'truncate of % succeeded', v_tab_fqname;
 	-- ----
 	-- Setting pg_class.relhasindex to false will cause copy not to
diff --git a/src/backend/slony1_funcs.v83.sql b/src/backend/slony1_funcs.v83.sql
index df81002..17c43b3 100644
--- a/src/backend/slony1_funcs.v83.sql
+++ b/src/backend/slony1_funcs.v83.sql
@@ -52,3 +52,18 @@ end;$$ language plpgsql;
 
 comment on function @NAMESPACE at .ShouldSlonyVacuumTable (name, name) is 
 'returns false if autovacuum handles vacuuming of the table, or if the table does not exist; returns true if Slony-I should manage it';
+
+
+
+
+create or replace function @NAMESPACE at .TruncateOnlyTable ( name) returns void as
+$$
+begin
+	execute 'truncate '|| @NAMESPACE at .slon_quote_input($1);
+end;
+$$
+LANGUAGE plpgsql;
+
+
+comment on function @NAMESPACE at .TruncateOnlyTable(name) is
+'Calls TRUNCATE with out specifying ONLY, syntax supported in version 8.3';
diff --git a/src/backend/slony1_funcs.v84.sql b/src/backend/slony1_funcs.v84.sql
index 0914c30..42e2dcb 100644
--- a/src/backend/slony1_funcs.v84.sql
+++ b/src/backend/slony1_funcs.v84.sql
@@ -53,3 +53,13 @@ end;$$ language plpgsql;
 comment on function @NAMESPACE at .ShouldSlonyVacuumTable (name, name) is 
 'returns false if autovacuum handles vacuuming of the table, or if the table does not exist; returns true if Slony-I should manage it';
 
+create or replace function @NAMESPACE at .TruncateOnlyTable ( name) returns void as
+$$
+begin
+	execute 'truncate only '|| @NAMESPACE at .slon_quote_input($1);
+end;
+$$
+LANGUAGE plpgsql;
+
+comment on function @NAMESPACE at .TruncateOnlyTable(name) is
+'Calls TRUNCATE ONLY, syntax supported in version >= 8.4';
-- 
1.6.3.3


--------------050106020309070109050906--


More information about the Slony1-patches mailing list