CVS User Account cvsuser
Mon May 16 18:08:06 PDT 2005
Log Message:
-----------
Roll back changes that attempted to drop indices from tables on
would-be new slaves.

Problem:  This did not play well AT ALL with the handling of foreign
key constraints.

We'll have to retry this in 1.2, in a better way.

Modified Files:
--------------
    slony1-engine/src/slon:
        confoptions.h (r1.20 -> r1.21)
        remote_worker.c (r1.83 -> r1.84)

-------------- next part --------------
Index: confoptions.h
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slon/confoptions.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -Lsrc/slon/confoptions.h -Lsrc/slon/confoptions.h -u -w -r1.20 -r1.21
--- src/slon/confoptions.h
+++ src/slon/confoptions.h
@@ -214,24 +214,6 @@
 		true
 	},
 
-	{
-		{
-			(const char *)"drop_indices_for_copy",
-			gettext_noop("Indicates that indices should be dropped "
-				     "on client while invoking COPY_SET event.  "
-				     "This provides a big performance boost as it "
-				     "is cheaper to regenerate indices after loading "
-				     "data than it is to incrementally generate "
-				     "indexes as the load generates.  Default is false."
-				),
-			NULL,
-			SLON_C_BOOL
-		},
-		&drop_indices,
-		true
-	},
-
-
 	NULL
 };
 
Index: remote_worker.c
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slon/remote_worker.c,v
retrieving revision 1.83
retrieving revision 1.84
diff -Lsrc/slon/remote_worker.c -Lsrc/slon/remote_worker.c -u -w -r1.83 -r1.84
--- src/slon/remote_worker.c
+++ src/slon/remote_worker.c
@@ -2372,10 +2372,9 @@
 		}
 	}
 
-	/* cbbrowne - in progress - check tables/sequences in set to
-	 * make sure they are there and in good order.  Don't copy any
-	 * data yet; we want to just do a first pass that finds "bozo
-	 * errors" */
+	/* check tables/sequences in set to make sure they are there
+	 * and in good order.  Don't copy any data yet; we want to
+	 * just do a first pass that finds "bozo errors" */
 
         /* Check tables and sequences in set to make sure they are all
 	 * appropriately configured... */
@@ -2732,63 +2731,6 @@
 		}
 		PQclear(res2);
 
-		if (drop_indices) {
-			/*
-			 * Drop indices from table on the local database
-			 */
-			slon_mkquery(&query1,
-				     "select 'alter table %s drop constraint ' || \"pg_catalog\".quote_ident(co.conname),  "
-				     " 'alter table %s add  ' || "
-				     " pg_get_constraintdef(co.oid)  "
-				     "from pg_class c, pg_constraint co, pg_namespace ns "
-				     "where  "
-				     " '%s' = \"pg_catalog\".quote_ident(ns.nspname) || '.' || \"pg_catalog\".quote_ident(c.relname) and "
-				     " co.connamespace = ns.oid and "
-				     " co.contype in ('p', 'u') and "
-				     " c.oid = co.conrelid and "
-				     " ns.oid = c.relnamespace "
-				     "UNION ALL  "
-				     "select 'drop index ' || \"pg_catalog\".quote_ident(ns.nspname) || '.' || \"pg_catalog\".quote_ident(ci.relname) || ';' , "
-				     " pg_get_indexdef(ci.oid) "
-				     "from  "
-				     " pg_class c, pg_namespace ns, pg_class ci, pg_index i "
-				     "where  "
-				     " '%s' = \"pg_catalog\".quote_ident(ns.nspname) || '.' || \"pg_catalog\".quote_ident(c.relname) and "
-				     " i.indrelid = c.oid and "
-				     " i.indexrelid = ci.oid and "
-				     "    not exists (select * from pg_constraint co where connamespace = ns.oid and "
-				     "		 conrelid = c.oid and contype in ('p', 'u') and co.conname = ci.relname);",
-
-				     tab_fqname, tab_fqname, tab_fqname, tab_fqname);
-			res2 = PQexec(loc_dbconn, dstring_data(&query1));
-			ntuples2 = PQntuples(res2);
-			slon_log(SLON_DEBUG2, "remoteWorkerThread_%d: Found %d indices for %s - %s\n",
-				 node->no_id, ntuples2, tab_fqname, dstring_data(&query1));
-
-			slon_mkquery(&indexregenquery, " ");
-
-			slon_log(SLON_DEBUG2, "remoteWorkerThread_%d: start dropping %d indices\n", node->no_id, ntuples2);
-			for (tupno2 = 0; tupno2 < ntuples2; tupno2++)
-			{
-				slon_mkquery(&query3,
-					     "%s;",
-					     PQgetvalue(res2, tupno2, 0));
-				if (query_execute(node, loc_dbconn, &query3) < 0)
-				{
-					slon_log(SLON_FATAL, "remoteWorkerThread_%d: drop index during copy failed: %d\n",
-						 node->no_id, dstring_data(&query3));
-					PQclear(res2);
-					slon_abort();
-				} else {
-					slon_log(SLON_DEBUG2, "remoteWorkerThread_%d: Dropped index %s\n",
-						 node->no_id, dstring_data(&query3));
-				}
-			
-				slon_appendquery(&indexregenquery,
-						 "%s;",
-						 PQgetvalue(res2, tupno2, 1));
-			}
-		}
 
 		/*
 		 * Begin a COPY from stdin for the table on the local DB
@@ -3065,20 +3007,6 @@
 			 INT64_FORMAT " bytes copied for table %s\n",
 			 node->no_id, copysize, tab_fqname);
 
-		if (drop_indices) {
-			slon_log(SLON_DEBUG2, "now, regenerate indices...\n");
-			slon_log(SLON_DEBUG2, 
-				 "remoteWorkerThread_%d: "
-				 "regenerate indices: %s",
-				 node->no_id, dstring_data(&indexregenquery));
-			if (query_execute(node, loc_dbconn, &indexregenquery) < 0) 
-			{
-				PQclear(res2);
-				slon_disconnectdb(pro_conn);
-				dstring_free(&indexregenquery);
-				return -1;
-			}
-		}
 		/*
 		 * Analyze the table to update statistics
 		 */


More information about the Slony1-commit mailing list