? f.patch ? out ? slony-patch.diff ? slony1.spec ? config/f.patch ? config/out ? doc/adminguide/HTML.index ? doc/adminguide/LEGALNOTICE.html ? doc/adminguide/addthings.html ? doc/adminguide/admconninfo.html ? doc/adminguide/adminscripts.html ? doc/adminguide/bookindex.html ? doc/adminguide/bookindex.sgml ? doc/adminguide/cluster.html ? doc/adminguide/clustername.html ? doc/adminguide/cmds.html ? doc/adminguide/commandreference.html ? doc/adminguide/concepts.html ? doc/adminguide/ddlchanges.html ? doc/adminguide/definingsets.html ? doc/adminguide/docbook-to-man.tar.gz ? doc/adminguide/dropthings.html ? doc/adminguide/failover.html ? doc/adminguide/faq.html ? doc/adminguide/firstdb.html ? doc/adminguide/function.add-missing-table-field-text-text-text-text.html ? doc/adminguide/function.addpartiallogindices.html ? doc/adminguide/function.altertableforreplication-integer.html ? doc/adminguide/function.altertablerestore-integer.html ? doc/adminguide/function.checkmoduleversion.html ? doc/adminguide/function.cleanupevent.html ? doc/adminguide/function.cleanupnodelock.html ? doc/adminguide/function.copyfields-integer.html ? doc/adminguide/function.createevent-name-text-text-text-text-text-text-text-text-text.html ? doc/adminguide/function.createevent-name-text-text-text-text-text-text-text-text.html ? doc/adminguide/function.createevent-name-text-text-text-text-text-text-text.html ? doc/adminguide/function.createevent-name-text-text-text-text-text-text.html ? doc/adminguide/function.createevent-name-text-text-text-text-text.html ? doc/adminguide/function.createevent-name-text-text-text-text.html ? doc/adminguide/function.createevent-name-text-text-text.html ? doc/adminguide/function.createevent-name-text-text.html ? doc/adminguide/function.createevent-name-text.html ? doc/adminguide/function.ddlscript-complete-int-integer-integer.html ? doc/adminguide/function.ddlscript-complete-integer-text-integer.html ? doc/adminguide/function.ddlscript-prepare-int-integer-integer.html ? doc/adminguide/function.ddlscript-prepare-integer-integer.html ? doc/adminguide/function.denyaccess.html ? doc/adminguide/function.determineattkindserial-text.html ? doc/adminguide/function.determineattkindunique-text-name.html ? doc/adminguide/function.determineidxnameserial-text.html ? doc/adminguide/function.determineidxnameunique-text-name.html ? doc/adminguide/function.disablenode-int-integer.html ? doc/adminguide/function.disablenode-integer.html ? doc/adminguide/function.droplisten-int-integer-integer-integer.html ? doc/adminguide/function.droplisten-integer-integer-integer.html ? doc/adminguide/function.dropnode-int-integer.html ? doc/adminguide/function.dropnode-integer.html ? doc/adminguide/function.droppath-int-integer-integer.html ? doc/adminguide/function.droppath-integer-integer.html ? doc/adminguide/function.dropset-int-integer.html ? doc/adminguide/function.dropset-integer.html ? doc/adminguide/function.droptrigger-int-integer-name.html ? doc/adminguide/function.droptrigger-integer-name.html ? doc/adminguide/function.enablenode-int-integer.html ? doc/adminguide/function.enablenode-integer.html ? doc/adminguide/function.enablesubscription-int-integer-integer-integer.html ? doc/adminguide/function.enablesubscription-integer-integer-integer.html ? doc/adminguide/function.failednode-integer-integer.html ? doc/adminguide/function.failednode2-integer-integer-integer-bigint-bigint.html ? doc/adminguide/function.failoverset-int-integer-integer-integer.html ? doc/adminguide/function.forwardconfirm-integer-integer-bigint-timestamp-without-time-zone.html ? doc/adminguide/function.generate-sync-event-interval.html ? doc/adminguide/function.getlocalnodeid-name.html ? doc/adminguide/function.getmoduleversion.html ? doc/adminguide/function.getsessionrole-name.html ? doc/adminguide/function.initializelocalnode-integer-text.html ? doc/adminguide/function.killbackend-integer-text.html ? doc/adminguide/function.lockedset.html ? doc/adminguide/function.lockset-integer.html ? doc/adminguide/function.logswitch-finish.html ? doc/adminguide/function.logswitch-start.html ? doc/adminguide/function.logswitch-weekly.html ? doc/adminguide/function.logtrigger.html ? doc/adminguide/function.mergeset-int-integer-integer.html ? doc/adminguide/function.mergeset-integer-integer.html ? doc/adminguide/function.moveset-int-integer-integer-integer.html ? doc/adminguide/function.moveset-integer-integer.html ? doc/adminguide/function.reachablefromnode-integer-integerarray.html ? doc/adminguide/function.rebuildlistenentries.html ? doc/adminguide/function.registernodeconnection-integer.html ? doc/adminguide/function.registry-get-int4-text-integer.html ? doc/adminguide/function.registry-get-text-text-text.html ? doc/adminguide/function.registry-get-timestamp-text-timestamp-without-time-zone.html ? doc/adminguide/function.registry-set-int4-text-integer.html ? doc/adminguide/function.registry-set-text-text-text.html ? doc/adminguide/function.registry-set-timestamp-text-timestamp-without-time-zone.html ? doc/adminguide/function.sequencelastvalue-text.html ? doc/adminguide/function.sequencesetvalue-integer-integer-bigint-bigint.html ? doc/adminguide/function.setaddsequence-int-integer-integer-text-text.html ? doc/adminguide/function.setaddsequence-integer-integer-text-text.html ? doc/adminguide/function.setaddtable-int-integer-integer-text-name-text.html ? doc/adminguide/function.setaddtable-integer-integer-text-name-text.html ? doc/adminguide/function.setdropsequence-int-integer.html ? doc/adminguide/function.setdropsequence-integer.html ? doc/adminguide/function.setdroptable-int-integer.html ? doc/adminguide/function.setdroptable-integer.html ? doc/adminguide/function.setmovesequence-int-integer-integer.html ? doc/adminguide/function.setmovesequence-integer-integer.html ? doc/adminguide/function.setmovetable-int-integer-integer.html ? doc/adminguide/function.setmovetable-integer-integer.html ? doc/adminguide/function.setsessionrole-name-text.html ? doc/adminguide/function.slon-quote-brute-text.html ? doc/adminguide/function.slon-quote-input-text.html ? doc/adminguide/function.slonyversion.html ? doc/adminguide/function.slonyversionmajor.html ? doc/adminguide/function.slonyversionminor.html ? doc/adminguide/function.slonyversionpatchlevel.html ? doc/adminguide/function.storelisten-int-integer-integer-integer.html ? doc/adminguide/function.storelisten-integer-integer-integer.html ? doc/adminguide/function.storenode-int-integer-text-boolean.html ? doc/adminguide/function.storenode-integer-text-boolean.html ? doc/adminguide/function.storepath-int-integer-integer-text-integer.html ? doc/adminguide/function.storepath-integer-integer-text-integer.html ? doc/adminguide/function.storeset-int-integer-integer-text.html ? doc/adminguide/function.storeset-integer-text.html ? doc/adminguide/function.storetrigger-int-integer-name.html ? doc/adminguide/function.storetrigger-integer-name.html ? doc/adminguide/function.subscribeset-int-integer-integer-integer-boolean.html ? doc/adminguide/function.subscribeset-integer-integer-integer-boolean.html ? doc/adminguide/function.tableaddkey-text.html ? doc/adminguide/function.tabledropkey-integer.html ? doc/adminguide/function.tablehasserialkey-text.html ? doc/adminguide/function.terminatenodeconnections-integer.html ? doc/adminguide/function.uninstallnode.html ? doc/adminguide/function.unlockset-integer.html ? doc/adminguide/function.unsubscribeset-int-integer-integer.html ? doc/adminguide/function.unsubscribeset-integer-integer.html ? doc/adminguide/function.updaterelname-integer-integer.html ? doc/adminguide/function.updatereloid-integer-integer.html ? doc/adminguide/function.upgradeschema-text.html ? doc/adminguide/hdrcmds.html ? doc/adminguide/help.html ? doc/adminguide/index.html ? doc/adminguide/installation.html ? doc/adminguide/listenpaths.html ? doc/adminguide/locking.html ? doc/adminguide/loganalysis.html ? doc/adminguide/logshipping.html ? doc/adminguide/maintenance.html ? doc/adminguide/man1 ? doc/adminguide/man7 ? doc/adminguide/manpage.links ? doc/adminguide/manpage.refs ? doc/adminguide/metacmds.html ? doc/adminguide/monitoring.html ? doc/adminguide/noslonik.html ? doc/adminguide/partitioning.html ? doc/adminguide/plainpaths.html ? doc/adminguide/raceconditions.html ? doc/adminguide/releasechecklist.html ? doc/adminguide/requirements.html ? doc/adminguide/reshape.html ? doc/adminguide/runtime-config.html ? doc/adminguide/schema.html ? doc/adminguide/slon-archive-logging.html ? doc/adminguide/slon-config-connection.html ? doc/adminguide/slon-config-interval.html ? doc/adminguide/slon.html ? doc/adminguide/slonik.html ? doc/adminguide/slonikref.html ? doc/adminguide/slonikshell.html ? doc/adminguide/slonstart.html ? doc/adminguide/slony.rtf ? doc/adminguide/slonyadmin.html ? doc/adminguide/slonyintro.html ? doc/adminguide/slonylistenercosts.html ? doc/adminguide/slonyupgrade.html ? doc/adminguide/stmtclonefinish.html ? doc/adminguide/stmtcloneprepare.html ? doc/adminguide/stmtcreateset.html ? doc/adminguide/stmtddlscript.html ? doc/adminguide/stmtdefine.html ? doc/adminguide/stmtdroplisten.html ? doc/adminguide/stmtdropnode.html ? doc/adminguide/stmtdroppath.html ? doc/adminguide/stmtdropset.html ? doc/adminguide/stmtdroptrigger.html ? doc/adminguide/stmtecho.html ? doc/adminguide/stmtexit.html ? doc/adminguide/stmtfailover.html ? doc/adminguide/stmtinclude.html ? doc/adminguide/stmtinitcluster.html ? doc/adminguide/stmtlockset.html ? doc/adminguide/stmtmergeset.html ? doc/adminguide/stmtmoveset.html ? doc/adminguide/stmtrepairconfig.html ? doc/adminguide/stmtrestartnode.html ? doc/adminguide/stmtsetaddsequence.html ? doc/adminguide/stmtsetaddtable.html ? doc/adminguide/stmtsetdropsequence.html ? doc/adminguide/stmtsetdroptable.html ? doc/adminguide/stmtsetmovesequence.html ? doc/adminguide/stmtsetmovetable.html ? doc/adminguide/stmtsleep.html ? doc/adminguide/stmtstorelisten.html ? doc/adminguide/stmtstorenode.html ? doc/adminguide/stmtstorepath.html ? doc/adminguide/stmtstoretrigger.html ? doc/adminguide/stmtsubscribeset.html ? doc/adminguide/stmtsync.html ? doc/adminguide/stmttableaddkey.html ? doc/adminguide/stmtuninstallnode.html ? doc/adminguide/stmtunlockset.html ? doc/adminguide/stmtunsubscribeset.html ? doc/adminguide/stmtupdatefunctions.html ? doc/adminguide/stmtwaitevent.html ? doc/adminguide/subscribenodes.html ? doc/adminguide/supportedplatforms.html ? doc/adminguide/table.sl-confirm.html ? doc/adminguide/table.sl-event.html ? doc/adminguide/table.sl-listen.html ? doc/adminguide/table.sl-log-1.html ? doc/adminguide/table.sl-log-2.html ? doc/adminguide/table.sl-node.html ? doc/adminguide/table.sl-nodelock.html ? doc/adminguide/table.sl-path.html ? doc/adminguide/table.sl-registry.html ? doc/adminguide/table.sl-seqlog.html ? doc/adminguide/table.sl-sequence.html ? doc/adminguide/table.sl-set.html ? doc/adminguide/table.sl-setsync.html ? doc/adminguide/table.sl-subscribe.html ? doc/adminguide/table.sl-table.html ? doc/adminguide/table.sl-trigger.html ? doc/adminguide/testbed.html ? doc/adminguide/triggers.html ? doc/adminguide/usingslonik.html ? doc/adminguide/version.sgml ? doc/adminguide/versionupgrade.html ? doc/adminguide/view.sl-seqlastvalue.html ? doc/concept/tmp.idx ? doc/website/projdisplay.php ? src/backend/avl_tree.c ? src/backend/avl_tree.h ? src/backend/patch ? src/parsestatements/cstylecomments.log ? src/parsestatements/emptytestresult.log ? src/parsestatements/test-scanner ? src/parsestatements/test_sql.log ? src/slon/out ? src/slonik/out ? tests/cat ? tests/not a tty ? tests/random_number ? tests/random_string ? tests/testclonenode ? tests/testsupport.sh ? tools/load_next_log_archive.sh Index: RELEASE-2.0 =================================================================== RCS file: /home/cvsd/slony1/slony1-engine/RELEASE-2.0,v retrieving revision 1.20 diff -c -u -r1.20 RELEASE-2.0 --- RELEASE-2.0 7 Jul 2008 21:16:03 -0000 1.20 +++ RELEASE-2.0 8 Jul 2008 17:26:08 -0000 @@ -194,3 +194,8 @@ - Bug #54 - quite a few Bash-isms in various scripts have been addressed so as to make the shell scripts more portable. + +- Bug #18 - the function parameter for the logtrigger functions no + longer requires any trailing v's + + Add a test to "test1" to make sure this logic gets exercised. Index: src/backend/slony1_funcs.sql =================================================================== RCS file: /home/cvsd/slony1/slony1-engine/src/backend/slony1_funcs.sql,v retrieving revision 1.140 diff -c -u -r1.140 slony1_funcs.sql --- src/backend/slony1_funcs.sql 6 Jun 2008 20:56:44 -0000 1.140 +++ src/backend/slony1_funcs.sql 8 Jul 2008 17:26:11 -0000 @@ -4804,6 +4804,9 @@ end if; end loop; + -- Strip off trailing v characters as they are not needed by the logtrigger + v_attkind := rtrim(v_attkind, ''v''); + -- -- Return the resulting attkind -- Index: tests/test1/README =================================================================== RCS file: /home/cvsd/slony1/slony1-engine/tests/test1/README,v retrieving revision 1.12 diff -c -u -r1.12 README --- tests/test1/README 13 Feb 2008 18:39:17 -0000 1.12 +++ tests/test1/README 8 Jul 2008 17:26:11 -0000 @@ -5,7 +5,7 @@ It creates three simple tables as one replication set, and replicates them from one database to another. -The three tables are of the three interesting types: +The tables are of the several interesting types: 1. table1 has a formal primary key @@ -21,6 +21,11 @@ exercise that points, paths, bitmaps, mac addresses, and inet types replicate properly. +5.1 table5 has a composite primary key (on id1,id2,id3) where +the primary key attributes are strewn throughout the table. This is +to make sure we have a case that exercises the logic that changed with +bug #18. + 6. It does a test of the function generate_sync_event() to make sure that it works as expected Index: tests/test1/generate_dml.sh =================================================================== RCS file: /home/cvsd/slony1/slony1-engine/tests/test1/generate_dml.sh,v retrieving revision 1.16 diff -c -u -r1.16 generate_dml.sh --- tests/test1/generate_dml.sh 13 Feb 2008 18:39:17 -0000 1.16 +++ tests/test1/generate_dml.sh 8 Jul 2008 17:26:11 -0000 @@ -45,7 +45,8 @@ 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 + echo "INSERT INTO table4(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 + echo "INSERT INTO table5(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11) values ('${txta}${ra}','${txta}${rb}','${txta}${rc}','${txtb}${ra}','${txtb}${rb}','${txtb}${rc}','${txtb}${ra}','${txtb}${rb}','${txtb}${rc}','${txtb}${ra}','${txtb}${rb}');" >> $GENDATA if [ ${i} -ge ${numrows} ]; then break; else Index: tests/test1/init_add_tables.ik =================================================================== RCS file: /home/cvsd/slony1/slony1-engine/tests/test1/init_add_tables.ik,v retrieving revision 1.9 diff -c -u -r1.9 init_add_tables.ik --- tests/test1/init_add_tables.ik 18 Apr 2007 15:03:51 -0000 1.9 +++ tests/test1/init_add_tables.ik 8 Jul 2008 17:26:11 -0000 @@ -10,4 +10,6 @@ exit 1; } -set add table (id=4, set id=1, origin=1, fully qualified name = 'public.table4', comment='a table of many types'); \ No newline at end of file +set add table (id=4, set id=1, origin=1, fully qualified name = 'public.table4', comment='a table of many types'); + +set add table (id=5, set id=1, origin=1, fully qualified name = 'public.table5', comment='a table with composite PK strewn across the table'); \ No newline at end of file Index: tests/test1/init_schema.sql =================================================================== RCS file: /home/cvsd/slony1/slony1-engine/tests/test1/init_schema.sql,v retrieving revision 1.6 diff -c -u -r1.6 init_schema.sql --- tests/test1/init_schema.sql 18 Apr 2007 15:03:51 -0000 1.6 +++ tests/test1/init_schema.sql 8 Jul 2008 17:26:11 -0000 @@ -29,3 +29,21 @@ maccol macaddr, -- "04:05:06:07:08:09" bitcol bit varying(20) -- X'123' ); + +create table table5 ( + id serial, + d1 text, + d2 text, + id2 serial, + d3 text, + d4 text, + d5 text, + d6 text, + id3 serial, + d7 text, + d8 text, + d9 text, + d10 text, + d11 text, + primary key(id, id2, id3) +); \ No newline at end of file Index: tests/test1/schema.diff =================================================================== RCS file: /home/cvsd/slony1/slony1-engine/tests/test1/schema.diff,v retrieving revision 1.4 diff -c -u -r1.4 schema.diff --- tests/test1/schema.diff 18 Apr 2007 15:03:51 -0000 1.4 +++ tests/test1/schema.diff 8 Jul 2008 17:26:11 -0000 @@ -1,3 +1,4 @@ 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; +SELECT id,numcol,realcol,ptcol,pathcol,polycol,circcol,ipcol,maccol, bitcol from table4 order by id +SELECT id,d1,d2,id2,d3,d4,d5,d6,id3,d7,d8,d9,d10,d11 from table5 order by id,id2,id3 \ No newline at end of file