Slony-I 2.0.8 Documentation | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 6. Schema schemadoc | Fast Forward | Next |
6.82. preparetableforcopy(integer)
Function Properties
Language: PLPGSQL
Return Type: integer
Delete all data and suppress index maintenancedeclare p_tab_id alias for $1; v_tab_oid oid; v_tab_fqname text; begin -- ---- -- Get the OID and fully qualified name for the table -- --- select PGC.oid, slon_quote_brute(PGN.nspname) || '.' || slon_quote_brute(PGC.relname) as tab_fqname into v_tab_oid, v_tab_fqname from sl_table T, "pg_catalog".pg_class PGC, "pg_catalog".pg_namespace PGN where T.tab_id = p_tab_id and T.tab_reloid = PGC.oid and PGC.relnamespace = PGN.oid; if not found then raise exception 'Table with ID % not found in sl_table', p_tab_id; end if; -- ---- -- Try using truncate to empty the table and fallback to -- delete on error. -- ---- perform TruncateOnlyTable(v_tab_fqname); raise notice 'truncate of % succeeded', v_tab_fqname; -- ---- -- Setting pg_class.relhasindex to false will cause copy not to -- maintain any indexes. At the end of the copy we will reenable -- them and reindex the table. This bulk creating of indexes is -- faster. -- ---- update pg_class set relhasindex = 'f' where oid = v_tab_oid; return 1; exception when others then raise notice 'truncate of % failed - doing delete', v_tab_fqname; update pg_class set relhasindex = 'f' where oid = v_tab_oid; execute 'delete from only ' || slon_quote_input(v_tab_fqname); return 0; end;