Mon Sep 24 14:26:36 PDT 2007
- Previous message: [Slony1-commit] slony1-engine/tests/testmultipaths - New directory
- Next message: [Slony1-commit] slony1-engine/tests/testmergeset - New directory
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Update of /home/cvsd/slony1/slony1-engine/tests/testmultipaths In directory main.slony.info:/tmp/cvs-serv26481 Added Files: README gen_weak_user.sh generate_dml.sh init_add_tables.ik init_cluster.ik init_create_set.ik init_data.sql init_schema.sql init_subscribe_set.ik schema.diff settings.ik Log Message: Add in test that exercises the conditions noticed in the following discussion thread: http://lists.slony.info/pipermail/slony1-general/2007-September/006642.html The problem takes place when a node receives two different sets which have the same origin from two different providers. This ought to be supported, but does not presently work. --- NEW FILE: settings.ik --- NUMCLUSTERS=${NUMCLUSTERS:-"1"} NUMNODES=${NUMNODES:-"3"} ORIGINNODE=1 WORKERS=${WORKERS:-"1"} SLONCONF2=true --- NEW FILE: init_cluster.ik --- init cluster (id=1, comment = 'Regress test node'); echo 'update functions on node 1 after initializing it'; update functions (id=1); --- NEW FILE: gen_weak_user.sh --- weakuser=$1; for i in 1 2 3 4 5; do echo "grant select on table public.table${i} to ${weakuser};" echo "grant select on table public.table${i}_id_seq to ${weakuser};" done --- NEW FILE: generate_dml.sh --- . 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} transactions of random data" percent=`expr $j \* 5` status "$percent %" GENDATA="$mktmp/generate.data" echo "" > ${GENDATA} 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"` ra=$(random_number 1 9) rb=$(random_number 1 9) rc=$(random_number 1 9) 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 table5(numcol,realcol,ptcol,pathcol,polycol,circcol,ipcol,maccol,bitcol) values ('${ra}${rb}.${rc}','${ra}.${rb}${rc}','(${ra},${rb})','((${ra},${ra}),(${rb},${rb}),(${rc},${rc}),(${ra},${rc}))','((${ra},${rb}),(${rc},${ra}),(${rb},${rc}),(${rc},${rb}))','<(${ra},${rb}),${rc}>','192.168.${ra}.${rb}${rc}','08:00:2d:0${ra}:0${rb}:0${rc}',X'${ra}${rb}${rc}');" >> $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} eval port=\$PORT${originnode} generate_initdata launch_poll status "loading data" $pgbindir/psql -h $host -p $port -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 "data load complete" status "done" } --- NEW FILE: init_add_tables.ik --- 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'); set add table (id=4, set id=2, origin=1, fully qualified name = 'public.table4', comment='a table of many types'); --- NEW FILE: init_create_set.ik --- create set (id=1, origin=1, comment='set number 1'); create set (id=2, origin=1, comment='set number 2'); --- NEW FILE: init_data.sql --- INSERT INTO table1(data) VALUES ('placeholder 1'); INSERT INTO table1(data) VALUES ('placeholder 2'); INSERT INTO table2(table1_id,data) VALUES (1,'placeholder 1'); INSERT INTO table2(table1_id,data) VALUES (2,'placeholder 2'); INSERT INTO table4(numcol,realcol,ptcol,pathcol,polycol,circcol,ipcol,maccol,bitcol) values ('74.0','7.40','(7,4)','((7,7),(4,4),(0,0),(7,0))','((7,4),(0,7),(4,0),(0,4))','<(7,4),0>','192.168.7.40','08:00:2d:07:04:00',X'740'); INSERT INTO table4(numcol,realcol,ptcol,pathcol,polycol,circcol,ipcol,maccol,bitcol) values ('93.1','9.31','(9,3)','((9,9),(3,3),(1,1),(9,1))','((9,3),(1,9),(3,1),(1,3))','<(9,3),1>','192.168.9.31','08:00:2d:09:03:01',X'931'); --- NEW FILE: init_schema.sql --- 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 NOT NULL, id2 integer ); create unique index no_good_candidate_pk on table3 (id, id2); create table table4 ( id serial primary key, numcol numeric(12,4), -- 1.23 realcol real, -- (1.23) ptcol point, -- (1,2) pathcol path, -- ((1,1),(2,2),(3,3),(4,4)) polycol polygon, -- ((1,1),(2,2),(3,3),(4,4)) circcol circle, -- <(1,2>,3> ipcol inet, -- "192.168.1.1" maccol macaddr, -- "04:05:06:07:08:09" bitcol bit varying(20) -- X'123' ); --- NEW FILE: schema.diff --- SELECT id,data FROM table1 ORDER BY id SELECT id,table1_id,data FROM table2 ORDER BY id SELECT id,numcol,realcol,ptcol,pathcol,polycol,circcol,ipcol,maccol, bitcol from table4 order by id; --- NEW FILE: README --- $Id: README,v 1.1 2007-09-24 21:26:34 cbbrowne Exp $ Create 3 nodes, and two replication sets: For replication set #1, set up the following subscription structure: 1 / \ 2 3 For replication set #2, set up the following (different) subscription structure: 1 \ 2 \ 3 This ought to work; according to recent reports, it doesn't. See: <http://lists.slony.info/pipermail/slony1-general/2007-September/006642.html> --- NEW FILE: init_subscribe_set.ik --- subscribe set (id = 1, provider = 1, receiver = 2, forward = yes); WAIT FOR EVENT (ORIGIN = ALL, CONFIRMED = ALL, WAIT ON = 2); subscribe set (id = 1, provider = 1, receiver = 3, forward = yes); WAIT FOR EVENT (ORIGIN = ALL, CONFIRMED = ALL, WAIT ON = 3); subscribe set (id = 2, provider = 1, receiver = 2, forward = yes); WAIT FOR EVENT (ORIGIN = ALL, CONFIRMED = ALL, WAIT ON = 2); subscribe set (id = 2, provider = 2, receiver = 3, forward = yes); WAIT FOR EVENT (ORIGIN = ALL, CONFIRMED = ALL, WAIT ON = 3);
- Previous message: [Slony1-commit] slony1-engine/tests/testmultipaths - New directory
- Next message: [Slony1-commit] slony1-engine/tests/testmergeset - New directory
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-commit mailing list