CVS User Account cvsuser
Wed Nov 30 17:35:33 PST 2005
Log Message:
-----------
Add in New Generation test suite to 1.1-STABLE branch

Tags:
----
REL_1_1_STABLE

Added Files:
-----------
    slony1-engine/tests/test1:
        README (r1.1.2.1)
        generate_dml.sh (r1.4.2.1)
        init_add_tables.ik (r1.4.2.1)
        init_cluster.ik (r1.1.2.1)
        init_create_set.ik (r1.1.2.1)
        init_data.sql (r1.1.2.1)
        init_schema.sql (r1.3.2.1)
        init_subscribe_set.ik (r1.1.2.1)
        schema.diff (r1.3.2.1)
        settings.ik (r1.1.2.1)
    slony1-engine/tests/test2:
        README (r1.1.2.1)
        generate_dml.sh (r1.4.2.1)
        init_add_tables.ik (r1.1.2.1)
        init_cluster.ik (r1.1.2.1)
        init_create_set.ik (r1.1.2.1)
        init_data.sql (r1.1.2.1)
        init_dropnode.sh (r1.3.2.1)
        init_failover.ik (r1.2.2.1)
        init_moveset.ik (r1.1.2.1)
        init_schema.sql (r1.1.2.1)
        init_subscribe_set.ik (r1.2.2.1)
        schema.diff (r1.1.2.1)
        settings.ik (r1.1.2.1)
    slony1-engine/tests/testddl:
        README (r1.1.2.1)
        ddl_updates.sql (r1.1.2.1)
        exec_ddl.sh (r1.1.2.1)
        generate_dml.sh (r1.1.2.1)
        init_add_tables.ik (r1.1.2.1)
        init_cluster.ik (r1.1.2.1)
        init_create_set.ik (r1.1.2.1)
        init_data.sql (r1.1.2.1)
        init_schema.sql (r1.1.2.1)
        init_subscribe_set.ik (r1.1.2.1)
        schema.diff (r1.1.2.1)
        settings.ik (r1.1.2.1)
    slony1-engine/tests/testschemanames:
        README (r1.1.2.1)
        generate_dml.sh (r1.2.2.1)
        init_add_tables.ik (r1.1.2.1)
        init_cluster.ik (r1.1.2.1)
        init_create_set.ik (r1.1.2.1)
        init_data.sql (r1.1.2.1)
        init_schema.sql (r1.1.2.1)
        init_subscribe_set.ik (r1.1.2.1)
        schema.diff (r1.1.2.1)
        settings.ik (r1.1.2.1)
    slony1-engine/tests/testseqnames:
        README (r1.1.2.1)
        generate_dml.sh (r1.2.2.1)
        init_add_tables.ik (r1.1.2.1)
        init_cluster.ik (r1.1.2.1)
        init_create_set.ik (r1.1.2.1)
        init_data.sql (r1.1.2.1)
        init_schema.sql (r1.1.2.1)
        init_subscribe_set.ik (r1.1.2.1)
        schema.diff (r1.1.2.1)
        settings.ik (r1.1.2.1)
    slony1-engine/tests/testtabnames:
        README (r1.1.2.1)
        generate_dml.sh (r1.2.2.1)
        init_add_tables.ik (r1.1.2.1)
        init_cluster.ik (r1.1.2.1)
        init_create_set.ik (r1.1.2.1)
        init_data.sql (r1.1.2.1)
        init_schema.sql (r1.1.2.1)
        init_subscribe_set.ik (r1.1.2.1)
        schema.diff (r1.1.2.1)
        settings.ik (r1.1.2.1)
    slony1-engine/tests/testutf8:
        README (r1.1.2.1)
        generate_dml.sh (r1.2.2.1)
        init_add_tables.ik (r1.1.2.1)
        init_cluster.ik (r1.1.2.1)
        init_create_set.ik (r1.1.2.1)
        init_data.sql (r1.1.2.1)
        init_schema.sql (r1.1.2.1)
        init_subscribe_set.ik (r1.1.2.1)
        schema.diff (r1.1.2.1)
        settings.ik (r1.1.2.1)

-------------- next part --------------
--- /dev/null
+++ tests/testseqnames/init_add_tables.ik
@@ -0,0 +1,9 @@
+set add table (id=1, set id=1, origin=1, fully qualified name = 'public.table1', comment='accounts table');
+set add table (id=2, set id=1, origin=1, fully qualified name = 'public.table2', key='table2_id_key');
+table add key (node id = 1, fully qualified name = 'public.table3');
+set add table (id=3, set id=1, origin=1, fully qualified name = 'public.table3', key = SERIAL);
+set add sequence (set id = 1, origin = 1, id = 1, fully qualified name = 'public."Evil Spacey Sequence Name"');
+
+set add sequence (set id = 1, origin = 1, id = 2, fully qualified name = '"Studly Spacey Schema"."user"');
+
+set add sequence (set id = 1, origin = 1, id = 3, fully qualified name = '"Schema.name"."a.periodic.sequence"');
--- /dev/null
+++ tests/testseqnames/init_cluster.ik
@@ -0,0 +1 @@
+init cluster (id=1, comment = 'Regress test node');
--- /dev/null
+++ tests/testseqnames/init_data.sql
@@ -0,0 +1,3 @@
+INSERT INTO table1(data) VALUES ('placeholder 1');
+INSERT INTO table2(table1_id,data) VALUES (1,'placeholder 1');
+INSERT INTO table3(table2_id) VALUES (1);
--- /dev/null
+++ tests/testseqnames/init_schema.sql
@@ -0,0 +1,27 @@
+CREATE TABLE table1(
+  id		SERIAL		PRIMARY KEY, 
+  data		TEXT
+);
+
+CREATE TABLE table2(
+  id		SERIAL		UNIQUE NOT NULL, 
+  table1_id	INT4		REFERENCES table1(id) 
+					ON UPDATE CASCADE ON DELETE CASCADE, 
+  data		TEXT
+);
+
+CREATE TABLE table3(
+  id		SERIAL,
+  table2_id	INT4		REFERENCES table2(id)
+					ON UPDATE SET NULL ON DELETE SET NULL,
+  mod_date	TIMESTAMPTZ	NOT NULL DEFAULT now(),
+  data		FLOAT		NOT NULL DEFAULT random()
+  CONSTRAINT table3_date_check	CHECK (mod_date <= now())
+); 
+
+-- Create some Evil names...
+create schema "Schema.name";
+create schema "Studly Spacey Schema";
+create sequence public."Evil Spacey Sequence Name";
+create sequence "Studly Spacey Schema"."user";
+create sequence "Schema.name"."a.periodic.sequence";
--- /dev/null
+++ tests/testseqnames/settings.ik
@@ -0,0 +1,4 @@
+NUMCLUSTERS=${NUMCLUSTERS:-"1"}
+NUMNODES=${NUMNODES:-"2"}
+ORIGINNODE=1
+WORKERS=${WORKERS:-"1"}
--- /dev/null
+++ tests/testseqnames/init_subscribe_set.ik
@@ -0,0 +1 @@
+subscribe set (id = 1, provider = 1, receiver = 2, forward = no);
--- /dev/null
+++ tests/testseqnames/init_create_set.ik
@@ -0,0 +1 @@
+create set (id=1, origin=1, comment='All test1 tables');
--- /dev/null
+++ tests/testseqnames/generate_dml.sh
@@ -0,0 +1,75 @@
+. support_funcs.sh
+
+init_dml()
+{
+  echo "init_dml()"
+}
+
+begin()
+{
+  echo "begin()"
+}
+
+rollback()
+{
+  echo "rollback()"
+}
+
+commit()
+{
+  echo "commit()"
+}
+
+generate_initdata()
+{
+  GENDATA="$mktmp/generate.data"
+  numrows=$(random_number 50 1000)
+  i=0;
+  trippoint=`expr $numrows / 20`
+  j=0;
+  percent=0
+  status "generating ${numrows} tranactions of random data"
+  percent=`expr $j \* 5`
+  status "$percent %"
+  while : ; do
+    txtalen=$(random_number 1 100)
+    txta=$(random_string ${txtalen})
+    txta=`echo ${txta} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    txtblen=$(random_number 1 100)
+    txtb=$(random_string ${txtblen})
+    txtb=`echo ${txtb} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    echo "INSERT INTO table1(data) VALUES ('${txta}');" >> $GENDATA
+    echo "INSERT INTO table2(table1_id,data) SELECT id, '${txtb}' FROM table1 WHERE data='${txta}';" >> $GENDATA
+    echo "INSERT INTO table3(table2_id) SELECT id FROM table2 WHERE data ='${txtb}';" >> $GENDATA
+    echo "select nextval('\"Schema.name\".\"a.periodic.sequence\"');" >> $GENDATA
+    echo "select nextval('\"Studly Spacey Schema\".\"user\"');" >> $GENDATA
+    if [ ${i} -ge ${numrows} ]; then
+      break;
+    else
+      i=$((${i} +1))
+      working=`expr $i % $trippoint`
+      if [ $working -eq 0 ]; then
+        j=`expr $j + 1`
+        percent=`expr $j \* 5`
+        status "$percent %"
+      fi 
+    fi
+  done
+  status "done"
+}
+
+do_initdata()
+{
+   originnode=${ORIGINNODE:-"1"}
+  eval db=\$DB${originnode}
+   eval host=\$HOST${originnode}
+  eval user=\$USER${originnode}
+  generate_initdata
+  launch_poll
+  status "loading data"
+  $pgbindir/psql -h $host -d $db -U $user < $mktmp/generate.data 1> $mktmp/initdata.log 2> $mktmp/initdata.log
+  if [ $? -ne 0 ]; then
+    warn 3 "do_initdata failed, see $mktmp/initdata.log for details"
+  fi 
+  status "done"
+}
--- /dev/null
+++ tests/testseqnames/schema.diff
@@ -0,0 +1,5 @@
+SELECT id,data FROM table1 ORDER BY id
+SELECT id,table1_id,data FROM table2 ORDER BY id
+SELECT id,table2_id,mod_date, data FROM table3 ORDER BY id
+select last_value from "Studly Spacey Schema"."user"
+select last_value from "Schema.name"."a.periodic.sequence"
\ No newline at end of file
--- /dev/null
+++ tests/testseqnames/README
@@ -0,0 +1,4 @@
+$Id: README,v 1.1.2.1 2005/11/30 17:35:26 cbbrowne Exp $
+
+This test involves creating some sequences with wacky names involving
+StudlyCaps, spaces, and ".".
--- /dev/null
+++ tests/test2/init_add_tables.ik
@@ -0,0 +1,5 @@
+set add table(id=1, set id=1, origin=1, fully qualified name = 'public.table1', comment='accounts table');
+set add table(id=2, set id=1, origin=1, fully qualified name = 'public.table2', key='table2_id_key');
+table add key (node id = 1, fully qualified name = 'public.table3');
+set add table(id=3, set id=1, origin=1, fully qualified name = 'public.table3', key = SERIAL);
+
--- /dev/null
+++ tests/test2/init_cluster.ik
@@ -0,0 +1 @@
+init cluster ( id=1, comment = 'Regress test node');
--- /dev/null
+++ tests/test2/init_data.sql
@@ -0,0 +1,3 @@
+INSERT INTO table1(data) VALUES ('placeholder 1');
+INSERT INTO table2(table1_id,data) VALUES (1,'placeholder 1');
+INSERT INTO table3(table2_id) VALUES (1);
--- /dev/null
+++ tests/test2/init_schema.sql
@@ -0,0 +1,20 @@
+CREATE TABLE table1(
+  id		SERIAL		PRIMARY KEY, 
+  data		TEXT
+);
+
+CREATE TABLE table2(
+  id		SERIAL		UNIQUE NOT NULL, 
+  table1_id	INT4		REFERENCES table1(id) 
+					ON UPDATE CASCADE ON DELETE CASCADE, 
+  data		TEXT
+);
+
+CREATE TABLE table3(
+  id		SERIAL,
+  table2_id	INT4		REFERENCES table2(id)
+					ON UPDATE SET NULL ON DELETE SET NULL,
+  mod_date	TIMESTAMPTZ	NOT NULL DEFAULT now(),
+  data		FLOAT		NOT NULL DEFAULT random()
+  CONSTRAINT table3_date_check	CHECK (mod_date <= now())
+); 
--- /dev/null
+++ tests/test2/init_failover.ik
@@ -0,0 +1,3 @@
+failover (id = 2, backup node = 3);
+wait for event (origin = 1, confirmed = 3);
+
--- /dev/null
+++ tests/test2/init_dropnode.sh
@@ -0,0 +1,6 @@
+echo "
+CLUSTER NAME = $CLUSTER1;
+NODE 2 ADMIN CONNINFO = 'dbname=$DB2 host=$HOST2 user=$USER2 port=$PORT2 ';
+NODE 3 ADMIN CONNINFO = 'dbname=$DB3 host=$HOST3 user=$USER3 port=$PORT3 ';
+drop node (id = 2, event node = 1);
+"
\ No newline at end of file
--- /dev/null
+++ tests/test2/settings.ik
@@ -0,0 +1,4 @@
+NUMCLUSTERS=${NUMCLUSTERS:-"1"}
+NUMNODES=${NUMNODES:-"3"}
+ORIGINNODE=1
+WORKERS=${WORKERS:-"1"}
--- /dev/null
+++ tests/test2/init_moveset.ik
@@ -0,0 +1,3 @@
+lock set (id = 1, origin = 1);
+move set (id = 1, old origin = 1, new origin = 2);
+wait for event (origin = 1, confirmed = 3);
--- /dev/null
+++ tests/test2/init_subscribe_set.ik
@@ -0,0 +1,4 @@
+subscribe set ( id = 1, provider = 1, receiver = 2, forward = yes);
+wait for event (origin = 1, confirmed = 2);
+subscribe set ( id = 1, provider = 2, receiver = 3, forward = yes);
+wait for event (origin = 1, confirmed = 3);
--- /dev/null
+++ tests/test2/init_create_set.ik
@@ -0,0 +1 @@
+create set (id=1, origin=1, comment='All test1 tables');
--- /dev/null
+++ tests/test2/generate_dml.sh
@@ -0,0 +1,119 @@
+. support_funcs.sh
+
+init_dml()
+{
+  echo "init_dml()"
+}
+
+begin()
+{
+  echo "begin()"
+}
+
+rollback()
+{
+  echo "rollback()"
+}
+
+commit()
+{
+  echo "commit()"
+}
+
+generate_initdata()
+{
+  numrows=$(random_number 50 1000)
+  i=0;
+  trippoint=`expr $numrows / 20`
+  j=0;
+  percent=0
+  status "generating ${numrows} tranactions of random data"
+  percent=`expr $j \* 5`
+  status "$percent %"
+  while : ; do
+    txtalen=$(random_number 1 100)
+    txta=$(random_string ${txtalen})
+    txta=`echo ${txta} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    txtblen=$(random_number 1 100)
+    txtb=$(random_string ${txtblen})
+    txtb=`echo ${txtb} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+
+    echo "INSERT INTO table1(data) VALUES ('${txta}');" >> $mktmp/generate.data
+    echo "INSERT INTO table2(table1_id,data) SELECT id, '${txtb}' FROM table1 WHERE data='${txta}';" >> $mktmp/generate.data
+    echo "INSERT INTO table3(table2_id) SELECT id FROM table2 WHERE data ='${txtb}';" >> $mktmp/generate.data
+    if [ ${i} -ge ${numrows} ]; then
+      break;
+    else
+      i=$((${i} +1))
+      working=`expr $i % $trippoint`
+      if [ $working -eq 0 ]; then
+        j=`expr $j + 1`
+        percent=`expr $j \* 5`
+        status "$percent %"
+      fi 
+    fi
+  done
+  status "done"
+}
+
+do_initdata()
+{
+  LOG=${mktmp}/initdata.log
+  SCRIPT=${mktmp}/slonik.script
+  originnode=${ORIGINNODE:-"1"}
+  eval db=\$DB${originnode}
+  eval host=\$HOST${originnode}
+  eval user=\$USER${originnode}
+  generate_initdata
+  launch_poll
+  rows=`wc -l ${mktmp}/generate.data | awk '{print($1)}'`
+  if [ -f ${testname}/init_failover.ik ]; then
+    splitsize=`expr $rows / 3`
+    split -l $splitsize ${mktmp}/generate.data ${mktmp}/generate.data.
+    status "loading ${splitsize} rows of data"
+    $pgbindir/psql -h $host -d $db -U $user < $mktmp/generate.data.aa 1> $LOG 2> $LOG
+    if [ $? -ne 0 ]; then
+      warn 3 "do_initdata failed, see $LOG for details"
+    fi
+echo "move set from node 1 to node 2"
+    init_preamble
+    cat ${testname}/init_moveset.ik  >> $SCRIPT
+    do_ik
+echo "fail over from node 2 to node 3"    
+    init_preamble
+    cat ${testname}/init_failover.ik  >> $SCRIPT
+    do_ik
+echo "failover ik done"
+echo "destroy node 1"
+    $pgbindir/dropdb -h $host slonyregress1
+    sleep 1
+echo "stop polling/slons"
+    stop_poll
+    stop_slons
+    sleep 3
+echo "restart slons"
+    launch_slon
+    launch_poll
+    status "loading second set of ${splitsize} rows of data"
+    $pgbindir/psql -h $host -d $db -U $user < $mktmp/generate.data.ab 1>> $LOG 2> $LOG
+    if [ $? -ne 0 ]; then
+      warn 3 "do_initdata failed, see $LOG for details"
+    fi
+echo "drop node 2"    
+    . ${testname}/init_dropnode.sh > $SCRIPT
+    cp $SCRIPT $mktmp/dropnode.slonik
+    do_ik
+    status "loading remaining rows of data"
+    $pgbindir/psql -h $host -d $db -U $user < $mktmp/generate.data.ac 1>> $LOG 2> $LOG
+    if [ $? -ne 0 ]; then
+      warn 3 "do_initdata failed, see $LOG for details"
+    fi
+  else    
+    status "loading ${rows} rows of data"
+    $pgbindir/psql -h $host -d $db -U $user < $mktmp/generate.data 1> $LOG 2> $LOG
+    if [ $? -ne 0 ]; then
+      warn 3 "do_initdata failed, see $LOG for details"
+    fi
+  fi 
+  status "done"
+}
--- /dev/null
+++ tests/test2/schema.diff
@@ -0,0 +1,3 @@
+SELECT id,data FROM table1 ORDER BY id
+SELECT id,table1_id,data FROM table2 ORDER BY id
+SELECT id,table2_id,mod_date, data FROM table3 ORDER BY id
--- /dev/null
+++ tests/test2/README
@@ -0,0 +1,6 @@
+$Id: README,v 1.1.2.1 2005/11/30 17:35:24 cbbrowne Exp $
+
+This test sets up a trio of three simple tables, and sets up
+replication from node 1 to node 2 which then replicates to node 3.
+
+It then fails over to node 3 and sees how things turn out.
--- /dev/null
+++ tests/testddl/init_add_tables.ik
@@ -0,0 +1,5 @@
+set add table (id=1, set id=1, origin=1, fully qualified name = 'public.table1', comment='accounts table');
+set add table (id=2, set id=1, origin=1, fully qualified name = 'public.table2', key='table2_id_key');
+table add key (node id = 1, fully qualified name = 'public.table3');
+set add table (id=3, set id=1, origin=1, fully qualified name = 'public.table3', key = SERIAL);
+set add table (id=4, set id=1, origin=1, fully qualified name = 'public.table4');
--- /dev/null
+++ tests/testddl/init_cluster.ik
@@ -0,0 +1 @@
+init cluster ( id=1, comment = 'Regress test node');
--- /dev/null
+++ tests/testddl/init_data.sql
@@ -0,0 +1,3 @@
+INSERT INTO table1(data) VALUES ('placeholder 1');
+INSERT INTO table2(table1_id,data) VALUES (1,'placeholder 1');
+INSERT INTO table3(table2_id) VALUES (1);
--- /dev/null
+++ tests/testddl/init_schema.sql
@@ -0,0 +1,32 @@
+CREATE TABLE table1(
+  id		SERIAL		PRIMARY KEY, 
+  data		TEXT
+);
+
+CREATE TABLE table2(
+  id		SERIAL		UNIQUE NOT NULL, 
+  table1_id	INT4		REFERENCES table1(id) 
+					ON UPDATE CASCADE ON DELETE CASCADE, 
+  data		TEXT
+);
+
+CREATE TABLE table3(
+  id		SERIAL,
+  table2_id	INT4		REFERENCES table2(id)
+					ON UPDATE SET NULL ON DELETE SET NULL,
+  mod_date	TIMESTAMPTZ	NOT NULL DEFAULT now(),
+  data		FLOAT		NOT NULL DEFAULT random()
+  CONSTRAINT table3_date_check	CHECK (mod_date <= now())
+); 
+
+CREATE TABLE table4 (
+  id1 serial,
+  id2 serial,
+  data text,
+  primary key (id1, id2)
+);
+
+insert into table4 (data) values ('BA Baracus');
+insert into table4 (data) values ('HM Murdoch');
+insert into table4 (data) values ('Face');
+insert into table4 (data) values ('Hannibal');
\ No newline at end of file
--- /dev/null
+++ tests/testddl/ddl_updates.sql
@@ -0,0 +1,5 @@
+create sequence ncolseq;
+alter table table4 add column newcol timestamptz;
+alter table table4 alter column newcol set default now();
+alter table table4 rename column id1 to col1;
+alter table table4 rename column id2 to col2;
--- /dev/null
+++ tests/testddl/settings.ik
@@ -0,0 +1,4 @@
+NUMCLUSTERS=${NUMCLUSTERS:-"1"}
+NUMNODES=${NUMNODES:-"2"}
+ORIGINNODE=1
+WORKERS=${WORKERS:-"1"}
--- /dev/null
+++ tests/testddl/init_subscribe_set.ik
@@ -0,0 +1 @@
+subscribe set ( id = 1, provider = 1, receiver = 2, forward = no);
--- /dev/null
+++ tests/testddl/exec_ddl.sh
@@ -0,0 +1,8 @@
+testname=$1
+echo "
+  EXECUTE SCRIPT (
+       SET ID = 1,
+       FILENAME = '${testname}/ddl_updates.sql',
+       EVENT NODE = 1
+    );
+"
\ No newline at end of file
--- /dev/null
+++ tests/testddl/init_create_set.ik
@@ -0,0 +1 @@
+create set (id=1, origin=1, comment='All test1 tables');
--- /dev/null
+++ tests/testddl/generate_dml.sh
@@ -0,0 +1,88 @@
+. support_funcs.sh
+
+init_dml()
+{
+  echo "init_dml()"
+}
+
+begin()
+{
+  echo "begin()"
+}
+
+rollback()
+{
+  echo "rollback()"
+}
+
+commit()
+{
+  echo "commit()"
+}
+
+generate_initdata()
+{
+  numrows=$(random_number 50 1000)
+  i=0;
+  trippoint=`expr $numrows / 20`
+  j=0;
+  percent=0
+  status "generating ${numrows} tranactions of random data"
+  percent=`expr $j \* 5`
+  status "$percent %"
+  while : ; do
+    txtalen=$(random_number 1 100)
+    txta=$(random_string ${txtalen})
+    txta=`echo ${txta} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    txtblen=$(random_number 1 100)
+    txtb=$(random_string ${txtblen})
+    txtb=`echo ${txtb} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    GENDATA="$mktmp/generate.data"
+    echo "INSERT INTO table1(data) VALUES ('${txta}');" >> $GENDATA
+    echo "INSERT INTO table2(table1_id,data) SELECT id, '${txtb}' FROM table1 WHERE data='${txta}';" >> $GENDATA
+    echo "INSERT INTO table3(table2_id) SELECT id FROM table2 WHERE data ='${txtb}';" >> $GENDATA
+    echo "INSERT INTO table4(data) VALUES ('${txtb}');" >> $GENDATA
+    if [ ${i} -ge ${numrows} ]; then
+      break;
+    else
+      i=$((${i} +1))
+      working=`expr $i % $trippoint`
+      if [ $working -eq 0 ]; then
+        j=`expr $j + 1`
+        percent=`expr $j \* 5`
+        status "$percent %"
+      fi 
+    fi
+  done
+  status "done"
+}
+
+do_initdata()
+{
+  LOG=${mktmp}/initdata.log
+  SCRIPT=${mktmp}/slonik.script
+  originnode=${ORIGINNODE:-"1"}
+  eval db=\$DB${originnode}
+  eval host=\$HOST${originnode}
+  eval user=\$USER${originnode}
+  generate_initdata
+  launch_poll
+  status "loading data"
+  $pgbindir/psql -h $host $db -U $user < $mktmp/generate.data 1> $LOG 2> $LOG
+  if [ $? -ne 0 ]; then
+    warn 3 "do_initdata failed, see $mktmp/initdata.log for details"
+  fi
+
+  status "execute DDL script"
+  init_preamble
+  sh ${testname}/exec_ddl.sh ${testname} >> $SCRIPT
+  do_ik
+  status "completed DDL script"
+
+  status "Generate some more data"
+  generate_initdata
+  status "loading extra data"
+  $pgbindir/psql -h $host $db -U $user < $mktmp/generate.data 1> $LOG 2> $LOG
+
+  status "done"
+}
--- /dev/null
+++ tests/testddl/schema.diff
@@ -0,0 +1,4 @@
+SELECT id,data FROM table1 ORDER BY id
+SELECT id,table1_id,data FROM table2 ORDER BY id
+SELECT id,table2_id,mod_date, data FROM table3 ORDER BY id
+select col1,col2,data,newcol from table4 order by col1,col2
\ No newline at end of file
--- /dev/null
+++ tests/testddl/README
@@ -0,0 +1,11 @@
+$Id: README,v 1.1.2.1 2005/11/30 17:35:25 cbbrowne Exp $
+
+testddl performs some DDL changes via the EXECUTE SCRIPT capability.
+
+This includes:
+
+1.  Adding a new column to the primary key
+2.  Dropping a column from the primary key
+3.  Renaming a column that is part of the primary key
+4.  Inserting new data as part of the script
+5.  Updating data as part of the script
--- /dev/null
+++ tests/testschemanames/init_add_tables.ik
@@ -0,0 +1,14 @@
+set add table (id=1, set id=1, origin=1, fully qualified name = 'public.table1', comment='accounts table');
+set add table (id=2, set id=1, origin=1, fully qualified name = 'public.table2', key='table2_id_key');
+table add key (node id = 1, fully qualified name = 'public.table3');
+set add table (id=3, set id=1, origin=1, fully qualified name = 'public.table3', key = SERIAL);
+
+set add table (set id = 1, origin = 1, id = 6, fully qualified name =
+'"Schema.name".user', comment = 'Table with evil name - user, and a field called user');
+
+set add table (set id = 1, origin = 1, id = 7, fully qualified name =
+'"Schema.name"."Capital Idea"', comment = 'Table with spaces in its name, caps, and a user field as PK');
+
+set add sequence (set id = 1, origin = 1, id = 2, fully qualified name = '"Studly Spacey Schema"."user"');
+
+set add sequence (set id = 1, origin = 1, id = 3, fully qualified name = '"Schema.name"."a.periodic.sequence"');
--- /dev/null
+++ tests/testschemanames/init_cluster.ik
@@ -0,0 +1 @@
+init cluster ( id=1, comment = 'Regress test node');
--- /dev/null
+++ tests/testschemanames/init_data.sql
@@ -0,0 +1,3 @@
+INSERT INTO table1(data) VALUES ('placeholder 1');
+INSERT INTO table2(table1_id,data) VALUES (1,'placeholder 1');
+INSERT INTO table3(table2_id) VALUES (1);
--- /dev/null
+++ tests/testschemanames/init_schema.sql
@@ -0,0 +1,38 @@
+CREATE TABLE table1(
+  id		SERIAL		PRIMARY KEY, 
+  data		TEXT
+);
+
+CREATE TABLE table2(
+  id		SERIAL		UNIQUE NOT NULL, 
+  table1_id	INT4		REFERENCES table1(id) 
+					ON UPDATE CASCADE ON DELETE CASCADE, 
+  data		TEXT
+);
+
+CREATE TABLE table3(
+  id		SERIAL,
+  table2_id	INT4		REFERENCES table2(id)
+					ON UPDATE SET NULL ON DELETE SET NULL,
+  mod_date	TIMESTAMPTZ	NOT NULL DEFAULT now(),
+  data		FLOAT		NOT NULL DEFAULT random()
+  CONSTRAINT table3_date_check	CHECK (mod_date <= now())
+); 
+
+-- Create some Evil names...
+create schema "Schema.name";
+create schema "Studly Spacey Schema";
+create table "Schema.name"."user" (
+  id integer,
+  "user" text not null unique,
+  primary key (id)
+);
+
+create table "Schema.name"."Capital Idea" (
+  "user" text,
+  description text,
+  primary key("user")
+);
+
+create sequence "Studly Spacey Schema"."user";
+create sequence "Schema.name"."a.periodic.sequence";
--- /dev/null
+++ tests/testschemanames/settings.ik
@@ -0,0 +1,4 @@
+NUMCLUSTERS=${NUMCLUSTERS:-"1"}
+NUMNODES=${NUMNODES:-"2"}
+ORIGINNODE=1
+WORKERS=${WORKERS:-"1"}
--- /dev/null
+++ tests/testschemanames/init_subscribe_set.ik
@@ -0,0 +1 @@
+subscribe set ( id = 1, provider = 1, receiver = 2, forward = no);
--- /dev/null
+++ tests/testschemanames/init_create_set.ik
@@ -0,0 +1 @@
+create set (id=1, origin=1, comment='All test1 tables');
--- /dev/null
+++ tests/testschemanames/generate_dml.sh
@@ -0,0 +1,77 @@
+. support_funcs.sh
+
+init_dml()
+{
+  echo "init_dml()"
+}
+
+begin()
+{
+  echo "begin()"
+}
+
+rollback()
+{
+  echo "rollback()"
+}
+
+commit()
+{
+  echo "commit()"
+}
+
+generate_initdata()
+{
+  GENDATA="$mktmp/generate.data"
+  numrows=$(random_number 50 1000)
+  i=0;
+  trippoint=`expr $numrows / 20`
+  j=0;
+  percent=0
+  status "generating ${numrows} tranactions of random data"
+  percent=`expr $j \* 5`
+  status "$percent %"
+  while : ; do
+    txtalen=$(random_number 1 100)
+    txta=$(random_string ${txtalen})
+    txta=`echo ${txta} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    txtblen=$(random_number 1 100)
+    txtb=$(random_string ${txtblen})
+    txtb=`echo ${txtb} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    echo "INSERT INTO table1(data) VALUES ('${txta}');" >> $GENDATA
+    echo "INSERT INTO table2(table1_id,data) SELECT id, '${txtb}' FROM table1 WHERE data='${txta}';" >> $GENDATA
+    echo "INSERT INTO table3(table2_id) SELECT id FROM table2 WHERE data ='${txtb}';" >> $GENDATA
+    echo "INSERT INTO \"Schema.name\".\"Capital Idea\" (\"user\", description) values ('${txta}', '${txtb}');" >> $GENDATA
+    echo "INSERT INTO \"Schema.name\".\"user\" (\"user\", id) values ('${txtb}', $txtblen);" >> $GENDATA
+    echo "select nextval('\"Schema.name\".\"a.periodic.sequence\"');" >> $GENDATA
+    echo "select nextval('\"Studly Spacey Schema\".\"user\"');" >> $GENDATA
+    if [ ${i} -ge ${numrows} ]; then
+      break;
+    else
+      i=$((${i} +1))
+      working=`expr $i % $trippoint`
+      if [ $working -eq 0 ]; then
+        j=`expr $j + 1`
+        percent=`expr $j \* 5`
+        status "$percent %"
+      fi 
+    fi
+  done
+  status "done"
+}
+
+do_initdata()
+{
+   originnode=${ORIGINNODE:-"1"}
+  eval db=\$DB${originnode}
+   eval host=\$HOST${originnode}
+  eval user=\$USER${originnode}
+  generate_initdata
+  launch_poll
+  status "loading data"
+  $pgbindir/psql -h $host -d $db -U $user < $mktmp/generate.data 1> $mktmp/initdata.log 2> $mktmp/initdata.log
+  if [ $? -ne 0 ]; then
+    warn 3 "do_initdata failed, see $mktmp/initdata.log for details"
+  fi 
+  status "done"
+}
--- /dev/null
+++ tests/testschemanames/schema.diff
@@ -0,0 +1,7 @@
+SELECT id,data FROM table1 ORDER BY id
+SELECT id,table1_id,data FROM table2 ORDER BY id
+SELECT id,table2_id,mod_date, data FROM table3 ORDER BY id
+SELECT id, "user" from "Schema.name"."user" order by id
+SELECT "user", description from "Schema.name"."Capital Idea" order by "user"
+select last_value from "Studly Spacey Schema"."user"
+select last_value from "Schema.name"."a.periodic.sequence"
\ No newline at end of file
--- /dev/null
+++ tests/testschemanames/README
@@ -0,0 +1,4 @@
+$Id: README,v 1.1.2.1 2005/11/30 17:35:25 cbbrowne Exp $
+
+This test involves creating tables and sequences in namespaces with
+some wacky names, with StudlyCaps, spaces, and ".".
--- /dev/null
+++ tests/test1/init_add_tables.ik
@@ -0,0 +1,4 @@
+set add table (id=1, set id=1, origin=1, fully qualified name = 'public.table1', comment='accounts table');
+set add table (id=2, set id=1, origin=1, fully qualified name = 'public.table2', key='table2_id_key');
+table add key (node id = 1, fully qualified name = 'public.table3');
+set add table (id=3, set id=1, origin=1, fully qualified name = 'public.table3', key = SERIAL);
--- /dev/null
+++ tests/test1/init_cluster.ik
@@ -0,0 +1 @@
+init cluster ( id=1, comment = 'Regress test node');
--- /dev/null
+++ tests/test1/init_data.sql
@@ -0,0 +1,3 @@
+INSERT INTO table1(data) VALUES ('placeholder 1');
+INSERT INTO table2(table1_id,data) VALUES (1,'placeholder 1');
+INSERT INTO table3(table2_id) VALUES (1);
--- /dev/null
+++ tests/test1/init_schema.sql
@@ -0,0 +1,21 @@
+CREATE TABLE table1(
+  id		SERIAL		PRIMARY KEY, 
+  data		TEXT
+);
+
+CREATE TABLE table2(
+  id		SERIAL		UNIQUE NOT NULL, 
+  table1_id	INT4		REFERENCES table1(id) 
+					ON UPDATE CASCADE ON DELETE CASCADE, 
+  data		TEXT
+);
+
+CREATE TABLE table3(
+  id		SERIAL,
+  table2_id	INT4		REFERENCES table2(id)
+					ON UPDATE SET NULL ON DELETE SET NULL,
+  mod_date	TIMESTAMPTZ	NOT NULL DEFAULT now(),
+  data		FLOAT		NOT NULL DEFAULT random()
+  CONSTRAINT table3_date_check	CHECK (mod_date <= now())
+); 
+
--- /dev/null
+++ tests/test1/settings.ik
@@ -0,0 +1,4 @@
+NUMCLUSTERS=${NUMCLUSTERS:-"1"}
+NUMNODES=${NUMNODES:-"2"}
+ORIGINNODE=1
+WORKERS=${WORKERS:-"1"}
--- /dev/null
+++ tests/test1/init_subscribe_set.ik
@@ -0,0 +1 @@
+subscribe set ( id = 1, provider = 1, receiver = 2, forward = no);
--- /dev/null
+++ tests/test1/init_create_set.ik
@@ -0,0 +1 @@
+create set (id=1, origin=1, comment='All test1 tables');
--- /dev/null
+++ tests/test1/generate_dml.sh
@@ -0,0 +1,73 @@
+. support_funcs.sh
+
+init_dml()
+{
+  echo "init_dml()"
+}
+
+begin()
+{
+  echo "begin()"
+}
+
+rollback()
+{
+  echo "rollback()"
+}
+
+commit()
+{
+  echo "commit()"
+}
+
+generate_initdata()
+{
+  numrows=$(random_number 50 1000)
+  i=0;
+  trippoint=`expr $numrows / 20`
+  j=0;
+  percent=0
+  status "generating ${numrows} tranactions of random data"
+  percent=`expr $j \* 5`
+  status "$percent %"
+  while : ; do
+    txtalen=$(random_number 1 100)
+    txta=$(random_string ${txtalen})
+    txta=`echo ${txta} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    txtblen=$(random_number 1 100)
+    txtb=$(random_string ${txtblen})
+    txtb=`echo ${txtb} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    GENDATA="$mktmp/generate.data"
+    echo "INSERT INTO table1(data) VALUES ('${txta}');" >> $GENDATA
+    echo "INSERT INTO table2(table1_id,data) SELECT id, '${txtb}' FROM table1 WHERE data='${txta}';" >> $GENDATA
+    echo "INSERT INTO table3(table2_id) SELECT id FROM table2 WHERE data ='${txtb}';" >> $GENDATA
+    if [ ${i} -ge ${numrows} ]; then
+      break;
+    else
+      i=$((${i} +1))
+      working=`expr $i % $trippoint`
+      if [ $working -eq 0 ]; then
+        j=`expr $j + 1`
+        percent=`expr $j \* 5`
+        status "$percent %"
+      fi 
+    fi
+  done
+  status "done"
+}
+
+do_initdata()
+{
+   originnode=${ORIGINNODE:-"1"}
+  eval db=\$DB${originnode}
+   eval host=\$HOST${originnode}
+  eval user=\$USER${originnode}
+  generate_initdata
+  launch_poll
+  status "loading data"
+  $pgbindir/psql -h $host -d $db -U $user < $mktmp/generate.data 1> $mktmp/initdata.log 2> $mktmp/initdata.log
+  if [ $? -ne 0 ]; then
+    warn 3 "do_initdata failed, see $mktmp/initdata.log for details"
+  fi 
+  status "done"
+}
--- /dev/null
+++ tests/test1/schema.diff
@@ -0,0 +1,3 @@
+SELECT id,data FROM table1 ORDER BY id
+SELECT id,table1_id,data FROM table2 ORDER BY id
+SELECT id,table2_id,mod_date, data FROM table3 ORDER BY id
--- /dev/null
+++ tests/test1/README
@@ -0,0 +1,5 @@
+$Id: README,v 1.1.2.1 2005/11/30 17:35:23 cbbrowne Exp $
+
+test1 is a basic test that replication generally functions.  It
+creates three simple tables as one replication set, and replicates
+them from one database to another.
--- /dev/null
+++ tests/testtabnames/init_add_tables.ik
@@ -0,0 +1,14 @@
+set add table (id=1, set id=1, origin=1, fully qualified name = 'public.table1', comment='accounts table');
+set add table (id=2, set id=1, origin=1, fully qualified name = 'public.table2', key='table2_id_key');
+table add key (node id = 1, fully qualified name = 'public.table3');
+set add table (id=3, set id=1, origin=1, fully qualified name = 'public.table3', key = SERIAL);
+
+set add table (set id = 1, origin = 1, id = 5, fully qualified name =
+'public.evil_index_table', key = 'user', comment = 'Table with evil index name');
+
+set add table (set id = 1, origin = 1, id = 6, fully qualified name =
+'"Schema.name".user', comment = 'Table with evil name - user, and a field called user');
+
+set add table (set id = 1, origin = 1, id = 7, fully qualified name =
+'"Schema.name"."Capital Idea"', comment = 'Table with spaces in its name, caps, and a user field as PK');
+
--- /dev/null
+++ tests/testtabnames/init_cluster.ik
@@ -0,0 +1 @@
+init cluster (id=1, comment = 'Regress test node');
--- /dev/null
+++ tests/testtabnames/init_data.sql
@@ -0,0 +1,3 @@
+INSERT INTO table1(data) VALUES ('placeholder 1');
+INSERT INTO table2(table1_id,data) VALUES (1,'placeholder 1');
+INSERT INTO table3(table2_id) VALUES (1);
--- /dev/null
+++ tests/testtabnames/init_schema.sql
@@ -0,0 +1,42 @@
+CREATE TABLE table1(
+  id		SERIAL		PRIMARY KEY, 
+  data		TEXT
+);
+
+CREATE TABLE table2(
+  id		SERIAL		UNIQUE NOT NULL, 
+  table1_id	INT4		REFERENCES table1(id) 
+					ON UPDATE CASCADE ON DELETE CASCADE, 
+  data		TEXT
+);
+
+CREATE TABLE table3(
+  id		SERIAL,
+  table2_id	INT4		REFERENCES table2(id)
+					ON UPDATE SET NULL ON DELETE SET NULL,
+  mod_date	TIMESTAMPTZ	NOT NULL DEFAULT now(),
+  data		FLOAT		NOT NULL DEFAULT random()
+  CONSTRAINT table3_date_check	CHECK (mod_date <= now())
+); 
+
+-- Create some Evil names...
+create schema "Schema.name";
+create schema "Studly Spacey Schema";
+create table "Schema.name"."user" (
+  id integer,
+  "user" text not null unique,
+  primary key (id)
+);
+
+create table "Schema.name"."Capital Idea" (
+  "user" text,
+  description text,
+  primary key("user")
+);
+
+create table public.evil_index_table (
+  id integer not null,
+  name text not null,
+  "eViL StudlyCaps column" text
+);
+create unique index "user" on public.evil_index_table(id);
--- /dev/null
+++ tests/testtabnames/settings.ik
@@ -0,0 +1,4 @@
+NUMCLUSTERS=${NUMCLUSTERS:-"1"}
+NUMNODES=${NUMNODES:-"2"}
+ORIGINNODE=1
+WORKERS=${WORKERS:-"1"}
--- /dev/null
+++ tests/testtabnames/init_subscribe_set.ik
@@ -0,0 +1 @@
+subscribe set (id = 1, provider = 1, receiver = 2, forward = no);
--- /dev/null
+++ tests/testtabnames/init_create_set.ik
@@ -0,0 +1 @@
+create set (id=1, origin=1, comment='All test1 tables');
--- /dev/null
+++ tests/testtabnames/generate_dml.sh
@@ -0,0 +1,76 @@
+. support_funcs.sh
+
+init_dml()
+{
+  echo "init_dml()"
+}
+
+begin()
+{
+  echo "begin()"
+}
+
+rollback()
+{
+  echo "rollback()"
+}
+
+commit()
+{
+  echo "commit()"
+}
+
+generate_initdata()
+{
+  GENDATA="$mktmp/generate.data"
+  numrows=$(random_number 50 1000)
+  i=0;
+  trippoint=`expr $numrows / 20`
+  j=0;
+  percent=0
+  status "generating ${numrows} tranactions of random data"
+  percent=`expr $j \* 5`
+  status "$percent %"
+  while : ; do
+    txtalen=$(random_number 1 100)
+    txta=$(random_string ${txtalen})
+    txta=`echo ${txta} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    txtblen=$(random_number 1 100)
+    txtb=$(random_string ${txtblen})
+    txtb=`echo ${txtb} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    echo "INSERT INTO table1(data) VALUES ('${txta}');" >> $GENDATA
+    echo "INSERT INTO table2(table1_id,data) SELECT id, '${txtb}' FROM table1 WHERE data='${txta}';" >> $GENDATA
+    echo "INSERT INTO table3(table2_id) SELECT id FROM table2 WHERE data ='${txtb}';" >> $GENDATA
+    echo "INSERT INTO \"Schema.name\".\"Capital Idea\" (\"user\", description) values ('${txta}', '${txtb}');" >> $GENDATA
+    echo "INSERT INTO \"Schema.name\".\"user\" (\"user\", id) values ('${txtb}', $txtblen);" >> $GENDATA
+    echo "INSERT INTO public.evil_index_table (id, name, \"eViL StudlyCaps column\") values (${txtblen}, '${txta}', '${txtb}');" >> $GENDATA
+    if [ ${i} -ge ${numrows} ]; then
+      break;
+    else
+      i=$((${i} +1))
+      working=`expr $i % $trippoint`
+      if [ $working -eq 0 ]; then
+        j=`expr $j + 1`
+        percent=`expr $j \* 5`
+        status "$percent %"
+      fi 
+    fi
+  done
+  status "done"
+}
+
+do_initdata()
+{
+   originnode=${ORIGINNODE:-"1"}
+  eval db=\$DB${originnode}
+   eval host=\$HOST${originnode}
+  eval user=\$USER${originnode}
+  generate_initdata
+  launch_poll
+  status "loading data"
+  $pgbindir/psql -h $host -d $db -U $user < $mktmp/generate.data 1> $mktmp/initdata.log 2> $mktmp/initdata.log
+  if [ $? -ne 0 ]; then
+    warn 3 "do_initdata failed, see $mktmp/initdata.log for details"
+  fi 
+  status "done"
+}
--- /dev/null
+++ tests/testtabnames/schema.diff
@@ -0,0 +1,6 @@
+SELECT id,data FROM table1 ORDER BY id
+SELECT id,table1_id,data FROM table2 ORDER BY id
+SELECT id,table2_id,mod_date, data FROM table3 ORDER BY id
+SELECT id, "user" from "Schema.name"."user" order by id
+SELECT "user", description from "Schema.name"."Capital Idea" order by "user"
+SELECT id, name, "eViL StudlyCaps column" from public.evil_index_table order by id
\ No newline at end of file
--- /dev/null
+++ tests/testtabnames/README
@@ -0,0 +1,4 @@
+$Id: README,v 1.1.2.1 2005/11/30 17:35:27 cbbrowne Exp $
+
+Create some Wacky Table Names involving spaces, StudlyCaps, as well as
+the reserved name, "user".
--- /dev/null
+++ tests/testutf8/init_add_tables.ik
@@ -0,0 +1,5 @@
+set add table (id=1, set id=1, origin=1, fully qualified name = 'public.table1', comment='accounts table');
+set add table (id=2, set id=1, origin=1, fully qualified name = 'public.table2', key='table2_id_key');
+table add key (node id = 1, fully qualified name = 'public.table3');
+set add table (id=3, set id=1, origin=1, fully qualified name = 'public.table3', key = SERIAL);
+set add table (id=4, set id=1, origin=1, fully qualified name = 'public.utf8table', comment='Test table for multibyte/UTF8');
--- /dev/null
+++ tests/testutf8/init_cluster.ik
@@ -0,0 +1 @@
+init cluster (id=1, comment = 'Regress test node');
--- /dev/null
+++ tests/testutf8/init_data.sql
@@ -0,0 +1,3 @@
+INSERT INTO table1(data) VALUES ('placeholder 1');
+INSERT INTO table2(table1_id,data) VALUES (1,'placeholder 1');
+INSERT INTO table3(table2_id) VALUES (1);
--- /dev/null
+++ tests/testutf8/init_schema.sql
@@ -0,0 +1,31 @@
+CREATE TABLE table1(
+  id		SERIAL		PRIMARY KEY, 
+  data		TEXT
+);
+
+CREATE TABLE table2(
+  id		SERIAL		UNIQUE NOT NULL, 
+  table1_id	INT4		REFERENCES table1(id) 
+					ON UPDATE CASCADE ON DELETE CASCADE, 
+  data		TEXT
+);
+
+CREATE TABLE table3(
+  id		SERIAL,
+  table2_id	INT4		REFERENCES table2(id)
+					ON UPDATE SET NULL ON DELETE SET NULL,
+  mod_date	TIMESTAMPTZ	NOT NULL DEFAULT now(),
+  data		FLOAT		NOT NULL DEFAULT random()
+  CONSTRAINT table3_date_check	CHECK (mod_date <= now())
+); 
+
+-- Table to perform UTF8 tests (checks multibyte; should be helpful in
+-- preventing problems with Asian character sets too)
+create table utf8table (
+    id integer not null unique default nextval('utf8_id'),
+    string text,
+    primary key(id)
+);
+
+create sequence utf8_id;
+INSERT INTO utf8table (string) VALUES ('1b\303\241r') ;
--- /dev/null
+++ tests/testutf8/settings.ik
@@ -0,0 +1,4 @@
+NUMCLUSTERS=${NUMCLUSTERS:-"1"}
+NUMNODES=${NUMNODES:-"2"}
+ORIGINNODE=1
+WORKERS=${WORKERS:-"1"}
--- /dev/null
+++ tests/testutf8/init_subscribe_set.ik
@@ -0,0 +1 @@
+subscribe set (id = 1, provider = 1, receiver = 2, forward = no);
--- /dev/null
+++ tests/testutf8/init_create_set.ik
@@ -0,0 +1 @@
+create set (id=1, origin=1, comment='All test1 tables');
--- /dev/null
+++ tests/testutf8/generate_dml.sh
@@ -0,0 +1,79 @@
+. support_funcs.sh
+
+init_dml()
+{
+  echo "init_dml()"
+}
+
+begin()
+{
+  echo "begin()"
+}
+
+rollback()
+{
+  echo "rollback()"
+}
+
+commit()
+{
+  echo "commit()"
+}
+
+generate_initdata()
+{
+  GENDATA="$mktmp/generate.data"
+  numrows=$(random_number 50 1000)
+  i=0;
+  trippoint=`expr $numrows / 20`
+  j=0;
+  percent=0
+  status "generating ${numrows} tranactions of random data"
+  percent=`expr $j \* 5`
+  status "$percent %"
+  while : ; do
+    txtalen=$(random_number 1 100)
+    txta=$(random_string ${txtalen})
+    txta=`echo ${txta} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    txtblen=$(random_number 1 100)
+    txtb=$(random_string ${txtblen})
+    txtb=`echo ${txtb} | sed -e "s/\\\\\\\/\\\\\\\\\\\\\\/g" -e "s/'/''/g"`
+    echo "INSERT INTO table1(data) VALUES ('${txta}');" >> $GENDATA
+    echo "INSERT INTO table2(table1_id,data) SELECT id, '${txtb}' FROM table1 WHERE data='${txta}';" >> $GENDATA
+    echo "INSERT INTO table3(table2_id) SELECT id FROM table2 WHERE data ='${txtb}';" >> $GENDATA
+    echo "INSERT INTO utf8table (string) values ('${txtb} - \303\241');" >> $GENDATA
+    echo "INSERT INTO utf8table (string) values ('${txtb} -- \303\241');" >> $GENDATA
+    echo "INSERT INTO utf8table (string) values ('\303\241 - ${txtb}');" >> $GENDATA
+    echo "INSERT INTO utf8table (string) values ('\303\241 -- ${txtb}');" >> $GENDATA
+    echo "INSERT INTO utf8table (string) values ('t3 -- \303\241 - ${txtb}');" >> $GENDATA
+    echo "INSERT INTO utf8table (string) values ('t3 - \303\241 -- ${txtb}');" >> $GENDATA
+    if [ ${i} -ge ${numrows} ]; then
+      break;
+    else
+      i=$((${i} +1))
+      working=`expr $i % $trippoint`
+      if [ $working -eq 0 ]; then
+        j=`expr $j + 1`
+        percent=`expr $j \* 5`
+        status "$percent %"
+      fi 
+    fi
+  done
+  status "done"
+}
+
+do_initdata()
+{
+   originnode=${ORIGINNODE:-"1"}
+  eval db=\$DB${originnode}
+   eval host=\$HOST${originnode}
+  eval user=\$USER${originnode}
+  generate_initdata
+  launch_poll
+  status "loading data from $mktmp/generate.data"
+  $pgbindir/psql -h $host -d $db -U $user < $mktmp/generate.data 1> $mktmp/initdata.log 2> $mktmp/initdata.log
+  if [ $? -ne 0 ]; then
+    warn 3 "do_initdata failed, see $mktmp/initdata.log for details"
+  fi 
+  status "done"
+}
--- /dev/null
+++ tests/testutf8/schema.diff
@@ -0,0 +1,4 @@
+SELECT id,data FROM table1 ORDER BY id
+SELECT id,table1_id,data FROM table2 ORDER BY id
+SELECT id,table2_id,mod_date, data FROM table3 ORDER BY id
+SELECT id, string from utf8table order by id
--- /dev/null
+++ tests/testutf8/README
@@ -0,0 +1,4 @@
+$Id: README,v 1.1.2.1 2005/11/30 17:35:28 cbbrowne Exp $
+
+This test involves creating databases in UNICODE form, and stowing
+UTF-8 values in a relevant table.


More information about the Slony1-commit mailing list