diff -pP --new-file --recursive --unified=3 erserver_v1.2/bin/ers_addtable.in erserver_v1.2-pdn_0.1/bin/ers_addtable.in --- erserver_v1.2/bin/ers_addtable.in Tue Aug 26 14:00:21 2003 +++ erserver_v1.2-pdn_0.1/bin/ers_addtable.in Wed Nov 12 12:20:55 2003 @@ -67,16 +67,28 @@ if($rows->rows == 0) { exit(1); } -#check if table already contains the _ers_uniq field +#check if _ers sequence exists in master +$rows = $master->prepare("SELECT relname FROM pg_class WHERE relname = ?;"); +$rows->execute("_ers_${table}_seq"); +$seq_exist = $rows->rows; + +#check if table not contains the _ers_uniq field or +#contains it but there is no _ers sequence (like in an ex-slave table) $rows = $master->prepare("SELECT pga.attname FROM pg_class pgc, pg_attribute pga WHERE pgc.relname = ? AND pgc.oid = pga.attrelid AND pga.attname = '_ers_uniq';"); $rows->execute($table); -if($rows->rows == 0) { +if(($rows->rows == 0) || ($rows->rows == 1 && $seq_exist == 0)) { $master->do("LOCK ${table} IN EXCLUSIVE MODE;") || die $master->errstr; - $master->do("ALTER TABLE ${table} ADD COLUMN _ers_uniq BIGINT;") || die $master->errstr; + + if($rows->rows == 0) { + $master->do("ALTER TABLE ${table} ADD COLUMN _ers_uniq BIGINT;") || die $master->errstr; + } else { + $master->do("UPDATE ${table} SET _ers_uniq=NULL;") || die $master->errstr; + } + $master->do("CREATE SEQUENCE _ers_${table}_seq;") || die $master->errstr; $master->do("ALTER TABLE ${table} ALTER COLUMN _ers_uniq SET DEFAULT NEXTVAL('\"_ers_${table}_seq\"');") || die $master->errstr; $master->do("UPDATE ${table} SET _ers_uniq = nextval('\"_ers_${table}_seq\"') WHERE _ers_uniq IS NULL;") || die $master->errstr; @@ -103,7 +115,6 @@ if($rows->rows == 0) { } $rows->finish(); -$master->disconnect(); for($ii=0;$ii<$replic->{'replic.master.ConnectionPoolSize'};$ii++) { @@ -135,6 +146,8 @@ for($ii=0;$ii<$replic->{'replic.master.C $slave->disconnect(); } +$master->disconnect(); + # Let the user know that the table was added if(!$quiet) { print "Table '${table}' added\n\n"; diff -pP --new-file --recursive --unified=3 erserver_v1.2/bin/ers_mastershowcolumns erserver_v1.2-pdn_0.1/bin/ers_mastershowcolumns --- erserver_v1.2/bin/ers_mastershowcolumns Tue Aug 26 14:00:21 2003 +++ erserver_v1.2-pdn_0.1/bin/ers_mastershowcolumns Wed Dec 31 18:00:00 1969 @@ -1,10 +0,0 @@ -#!/bin/sh -# ers_mastershowcolumns -# Copyright (C) 2002 Digital Distribution GFS P/L -# Derived from code Copyright (C) 2000 PostgreSQL, Inc. - -if [ "$REPLIC_HOME" = "" ]; then - . @prefix@/bin/ers_setvars -fi - -$REPLIC_JAVA $SQL_GEN_CLASS $MASTER_J -mode columns -postgres $POSTGRES_HOME diff -pP --new-file --recursive --unified=3 erserver_v1.2/bin/ers_mastershowcolumns.in erserver_v1.2-pdn_0.1/bin/ers_mastershowcolumns.in --- erserver_v1.2/bin/ers_mastershowcolumns.in Wed Dec 31 18:00:00 1969 +++ erserver_v1.2-pdn_0.1/bin/ers_mastershowcolumns.in Tue Aug 26 14:00:21 2003 @@ -0,0 +1,10 @@ +#!/bin/sh +# ers_mastershowcolumns +# Copyright (C) 2002 Digital Distribution GFS P/L +# Derived from code Copyright (C) 2000 PostgreSQL, Inc. + +if [ "$REPLIC_HOME" = "" ]; then + . @prefix@/bin/ers_setvars +fi + +$REPLIC_JAVA $SQL_GEN_CLASS $MASTER_J -mode columns -postgres $POSTGRES_HOME diff -pP --new-file --recursive --unified=3 erserver_v1.2/bin/ers_mastershowtables erserver_v1.2-pdn_0.1/bin/ers_mastershowtables --- erserver_v1.2/bin/ers_mastershowtables Tue Aug 26 14:00:21 2003 +++ erserver_v1.2-pdn_0.1/bin/ers_mastershowtables Wed Dec 31 18:00:00 1969 @@ -1,10 +0,0 @@ -#!/bin/sh -# ers_mastershowtables -# Copyright (C) 2002 Digital Distribution GFS P/L -# Derived from code Copyright (C) 2000 PostgreSQL, Inc. - -if [ "$REPLIC_HOME" = "" ]; then - . @prefix@/bin/ers_setvars -fi - -$REPLIC_JAVA $SQL_GEN_CLASS $MASTER_J -mode tables -postgres $POSTGRES_HOME diff -pP --new-file --recursive --unified=3 erserver_v1.2/bin/ers_mastershowtables.in erserver_v1.2-pdn_0.1/bin/ers_mastershowtables.in --- erserver_v1.2/bin/ers_mastershowtables.in Wed Dec 31 18:00:00 1969 +++ erserver_v1.2-pdn_0.1/bin/ers_mastershowtables.in Tue Aug 26 14:00:21 2003 @@ -0,0 +1,10 @@ +#!/bin/sh +# ers_mastershowtables +# Copyright (C) 2002 Digital Distribution GFS P/L +# Derived from code Copyright (C) 2000 PostgreSQL, Inc. + +if [ "$REPLIC_HOME" = "" ]; then + . @prefix@/bin/ers_setvars +fi + +$REPLIC_JAVA $SQL_GEN_CLASS $MASTER_J -mode tables -postgres $POSTGRES_HOME diff -pP --new-file --recursive --unified=3 erserver_v1.2/bin/ers_remove.in erserver_v1.2-pdn_0.1/bin/ers_remove.in --- erserver_v1.2/bin/ers_remove.in Tue Aug 26 14:00:22 2003 +++ erserver_v1.2-pdn_0.1/bin/ers_remove.in Wed Nov 12 10:46:16 2003 @@ -103,6 +103,10 @@ if(!$quiet) { print "\n"; } +# Stop eRServer + +system "ers_ctl stop"; + # Remove Master Tables # List of slave servers diff -pP --new-file --recursive --unified=3 erserver_v1.2/bin/ers_slaveshowcolumns erserver_v1.2-pdn_0.1/bin/ers_slaveshowcolumns --- erserver_v1.2/bin/ers_slaveshowcolumns Tue Aug 26 14:00:23 2003 +++ erserver_v1.2-pdn_0.1/bin/ers_slaveshowcolumns Wed Dec 31 18:00:00 1969 @@ -1,10 +0,0 @@ -#!/bin/sh -# ers_slaveshowcolumns -# Copyright (C) 2002 Digital Distribution GFS P/L -# Derived from code Copyright (C) 2000 PostgreSQL, Inc. - -if [ "$REPLIC_HOME" = "" ]; then - . @prefix@/bin/ers_setvars -fi - -$REPLIC_JAVA $SQL_GEN_CLASS $SLAVE_J -mode columns -postgres $POSTGRES_HOME diff -pP --new-file --recursive --unified=3 erserver_v1.2/bin/ers_slaveshowcolumns.in erserver_v1.2-pdn_0.1/bin/ers_slaveshowcolumns.in --- erserver_v1.2/bin/ers_slaveshowcolumns.in Wed Dec 31 18:00:00 1969 +++ erserver_v1.2-pdn_0.1/bin/ers_slaveshowcolumns.in Tue Aug 26 14:00:23 2003 @@ -0,0 +1,10 @@ +#!/bin/sh +# ers_slaveshowcolumns +# Copyright (C) 2002 Digital Distribution GFS P/L +# Derived from code Copyright (C) 2000 PostgreSQL, Inc. + +if [ "$REPLIC_HOME" = "" ]; then + . @prefix@/bin/ers_setvars +fi + +$REPLIC_JAVA $SQL_GEN_CLASS $SLAVE_J -mode columns -postgres $POSTGRES_HOME diff -pP --new-file --recursive --unified=3 erserver_v1.2/bin/ers_slaveshowtables erserver_v1.2-pdn_0.1/bin/ers_slaveshowtables --- erserver_v1.2/bin/ers_slaveshowtables Tue Aug 26 14:00:23 2003 +++ erserver_v1.2-pdn_0.1/bin/ers_slaveshowtables Wed Dec 31 18:00:00 1969 @@ -1,10 +0,0 @@ -#!/bin/sh -# ers_slaveshowtables -# Copyright (C) 2002 Digital Distribution GFS P/L -# Derived from code Copyright (C) 2000 PostgreSQL, Inc. - -if [ "$REPLIC_HOME" = "" ]; then - . @prefix@/bin/ers_setvars -fi - -$REPLIC_JAVA $SQL_GEN_CLASS $SLAVE_J -mode tables -postgres $POSTGRES_HOME diff -pP --new-file --recursive --unified=3 erserver_v1.2/bin/ers_slaveshowtables.in erserver_v1.2-pdn_0.1/bin/ers_slaveshowtables.in --- erserver_v1.2/bin/ers_slaveshowtables.in Wed Dec 31 18:00:00 1969 +++ erserver_v1.2-pdn_0.1/bin/ers_slaveshowtables.in Tue Aug 26 14:00:23 2003 @@ -0,0 +1,10 @@ +#!/bin/sh +# ers_slaveshowtables +# Copyright (C) 2002 Digital Distribution GFS P/L +# Derived from code Copyright (C) 2000 PostgreSQL, Inc. + +if [ "$REPLIC_HOME" = "" ]; then + . @prefix@/bin/ers_setvars +fi + +$REPLIC_JAVA $SQL_GEN_CLASS $SLAVE_J -mode tables -postgres $POSTGRES_HOME diff -pP --new-file --recursive --unified=3 erserver_v1.2/configure erserver_v1.2-pdn_0.1/configure --- erserver_v1.2/configure Tue Aug 26 14:00:20 2003 +++ erserver_v1.2-pdn_0.1/configure Wed Nov 12 08:38:57 2003 @@ -3144,7 +3144,7 @@ fi done -ac_config_files="$ac_config_files Makefile.global bin/ers_setup bin/ers_ctl bin/ers_remove bin/ers_addtable bin/ers_addslave perl/eRServer.pm templates/ers_setvars-template" +ac_config_files="$ac_config_files Makefile.global bin/ers_setup bin/ers_ctl bin/ers_remove bin/ers_addtable bin/ers_addslave bin/ers_mastershowcolumns bin/ers_mastershowtables bin/ers_slaveshowcolumns bin/ers_slaveshowtables perl/eRServer.pm templates/ers_setvars-template" ac_config_links="$ac_config_links Makefile.port:makefiles/Makefile.${template}" @@ -3630,6 +3630,10 @@ do "bin/ers_remove" ) CONFIG_FILES="$CONFIG_FILES bin/ers_remove" ;; "bin/ers_addtable" ) CONFIG_FILES="$CONFIG_FILES bin/ers_addtable" ;; "bin/ers_addslave" ) CONFIG_FILES="$CONFIG_FILES bin/ers_addslave" ;; + "bin/ers_mastershowcolumns" ) CONFIG_FILES="$CONFIG_FILES bin/ers_mastershowcolumns" ;; + "bin/ers_mastershowtables" ) CONFIG_FILES="$CONFIG_FILES bin/ers_mastershowtables" ;; + "bin/ers_slaveshowcolumns" ) CONFIG_FILES="$CONFIG_FILES bin/ers_slaveshowcolumns" ;; + "bin/ers_slaveshowtables" ) CONFIG_FILES="$CONFIG_FILES bin/ers_slaveshowtables" ;; "perl/eRServer.pm" ) CONFIG_FILES="$CONFIG_FILES perl/eRServer.pm" ;; "templates/ers_setvars-template" ) CONFIG_FILES="$CONFIG_FILES templates/ers_setvars-template" ;; "Makefile.port" ) CONFIG_LINKS="$CONFIG_LINKS Makefile.port:makefiles/Makefile.${template}" ;; diff -pP --new-file --recursive --unified=3 erserver_v1.2/configure.ac erserver_v1.2-pdn_0.1/configure.ac --- erserver_v1.2/configure.ac Tue Aug 26 14:00:20 2003 +++ erserver_v1.2-pdn_0.1/configure.ac Tue Nov 11 16:52:24 2003 @@ -96,6 +96,10 @@ AC_CONFIG_FILES([ Makefile.global bin/ers_setup bin/ers_ctl + bin/ers_mastershowcolumns + bin/ers_mastershowtables + bin/ers_slaveshowcolumns + bin/ers_slaveshowtables bin/ers_remove bin/ers_addtable bin/ers_addslave Binary files erserver_v1.2/java/lib/xerces.jar and erserver_v1.2-pdn_0.1/java/lib/xerces.jar differ diff -pP --new-file --recursive --unified=3 erserver_v1.2/perl/eRServer.pm.in erserver_v1.2-pdn_0.1/perl/eRServer.pm.in --- erserver_v1.2/perl/eRServer.pm.in Tue Aug 26 14:03:17 2003 +++ erserver_v1.2-pdn_0.1/perl/eRServer.pm.in Fri Nov 7 16:39:44 2003 @@ -51,7 +51,7 @@ sub CopyTbl WHERE c.relname = ? AND a.attnum > 0 AND a.attrelid = c.oid ORDER BY a.attnum;"); - $get_struct->execute($tablename); + $get_struct->execute($table); $get_default = $master->prepare("SELECT 'DEFAULT ' || adsrc FROM pg_class pc, pg_attrdef pa @@ -62,19 +62,19 @@ sub CopyTbl $check_slave_seq = $master->prepare("SELECT * FROM pg_class WHERE relname = ?;"); if($get_struct->rows > 0) { - $table_struct = sprintf"CREATE TABLE %s (\n", $tablename; + $table_struct = sprintf"CREATE TABLE %s (\n", $table; while (($attname, $atttype, $attnotnull, $atthasdef, $attnum) = $get_struct->fetchrow_array()) { if($attnum != 1) { - $table_struct .= sprint ",\n"; + $table_struct .= ",\n"; } if($attnotnull) { $notnull = "NOT NULL"; } else { $notnull = ""; } - if($atthasdef) { - $get_default->execute($tablename, $attnum); + if($atthasdef eq 't') { + $get_default->execute($table, $attnum); ( $default ) = $get_default->fetchrow_array(); if($default =~ /nextval/) { ( $junk, $sequence ) = split(/"/, $default); @@ -103,16 +103,16 @@ sub CopyTbl WHERE pgc.relname = ? AND pgc.oid = pga.attrelid AND pga.attname = ?"); - $stable->execute($table, 'ers_uniq'); + $stable->execute($table, '_ers_uniq'); ( $s_oid, $s_attnum ) = $stable->fetchrow_array(); $stable->finish(); - $slave->do("INSERT INTO _RSERV_SLAVE_TABLES_ (tname, cname, reloid, key) values ('${table}', '_ers_uniq', ${s_oid}, ${s_attnum})"); + $slave->do("INSERT INTO _RSERV_SLAVE_TABLES_ (tname, cname, reloid, key) values ('${table}', '_ers_uniq', ${s_oid}, ${s_attnum});"); foreach $seq_name ( keys %trig_seq ) { $stable->execute($seq_name, 'last_value'); ( $s_oid, $s_attnum ) = $stable->fetchrow_array(); - $slave->do("INSERT INTO _RSERV_SLAVE_TABLES_ (tname, cname, reloid, key) values ('${table}', 'last_value', ${s_oid}, ${s_attnum})"); + $slave->do("INSERT INTO _RSERV_SLAVE_TABLES_ (tname, cname, reloid, key) values ('${table}', 'last_value', ${s_oid}, ${s_attnum});"); } } $get_default->finish(); diff -pP --new-file --recursive --unified=3 erserver_v1.2/templates/ers_setvars-template.in erserver_v1.2-pdn_0.1/templates/ers_setvars-template.in --- erserver_v1.2/templates/ers_setvars-template.in Tue Aug 26 14:03:19 2003 +++ erserver_v1.2-pdn_0.1/templates/ers_setvars-template.in Fri Nov 7 16:43:12 2003 @@ -17,6 +17,9 @@ REPLIC_REPLIC=1 # start cleanup thread only REPLIC_CLEAN=1 +# debug +REPLIC_DEBUG=0 + # set CLASSPATH CLASSPATH=$REPLIC_HOME/lib/erserver.jar:$REPLIC_HOME/lib/jdbc7.0-1.2.jar:$REPLIC_HOME/lib/log4j.jar:$REPLIC_HOME/etc:$CLASSPATH diff -pP --new-file --recursive --unified=3 erserver_v1.2/templates/replication.cfg-template erserver_v1.2-pdn_0.1/templates/replication.cfg-template --- erserver_v1.2/templates/replication.cfg-template Tue Aug 26 14:03:19 2003 +++ erserver_v1.2-pdn_0.1/templates/replication.cfg-template Wed Nov 12 10:28:03 2003 @@ -7,7 +7,7 @@ # coincide with number of slaves) : #-------------------------------------- -replic.server.debug=false +replic.server.debug=true replic.server.verbose=true # how many seconds to sleep between replications ( @@ -36,7 +36,7 @@ replic.server.HowOldLog=10 #-------------------------------------- replic.master.JDBCDriver=org.postgresql.Driver replic.master.ConnectionPoolSize=1 -replic.master.ConnectionPoolMax=1 +replic.master.ConnectionPoolMax=2 replic.master.ConnectionUseCount=1000 replic.master.ConnectionTimeout=2 # change this to correspond to you master database settings: