If the conflicted row is the last row, the SyncResolver.nextConflict will return false.
JDK : 1.5.0 (FCS) and 1.6.0
VM : client/server/d64
switch/Mode : default
Platform[s] : Sol 10 (sparc) was tested.
DataBase : ORCL was tested.
Test owner :
Failing Test :
syncresolver.syncresolver1.SyncResolver1#testSyncResolverDelete
TestBase Location:
==================
/net/jsqalab/export/testsuites/JDBC/rowset2.0/test
Test source location:
=====================
/net/jsqalab/export/testsuites/JDBC/rowset2.0/test/qcts/src/tests/rowsets/syncresolver/syncresolver1/*.java
How to reproduce:
====================
Modify the DB IP, Username, user passwd.
Output 1
1) javac syncresolver.java (java source below)
2) java syncresolver
Output 2
1) comment out this line
y.executeUpdate ("insert into test values(4,'dddd',40)");
2) javac syncresolver.java
3) java syncresolver
Test output:
=============
Output 1
--------
current crs50
delete 1
current crs40
current RS 50
update row
current RS 40
Value of params1 : {0} 50
Syn catched
Syn resolver objectcom.sun.rowset.internal.SyncResolverImpl@12b3374
In Conflict
Sync catched syncRes.getStatus1
Output 2
--------
current crs50
delete 1
current RS 50
update row
Value of params1 : {0} 50
Syn catched
Syn resolver objectcom.sun.rowset.internal.SyncResolverImpl@12b3374
Specific Machine Info:
=====================
jtg-s130>uname -a
SunOS jtg-s130 5.9 Generic_117171-07 sun4u sparc SUNW,Ultra-60
Java Source
============
import java.sql.*;
import javax.sql.*;
import com.sun.rowset.*;
import javax.sql.rowset.*;
import javax.sql.rowset.spi.*;
public class syncresolver
{
public static void main(String args[])
{
Connection con = null;
Connection con2 = null;
try
{
String driver ="com.inet.ora.OraDriver";
String url = "jdbc:inetora:192.0.0.1:1521:ORCL";
Class.forName(driver).newInstance();
Statement s, s2, y;
con = DriverManager.getConnection(url, "user1", "user1");
y = con.createStatement();
y.executeUpdate("DROP TABLE test");
y.executeUpdate("CREATE TABLE test (age INT, name VARCHAR(50), sal number(10))");
// y.executeUpdate ("insert into test values(1,'aaaa',10)");
// y.executeUpdate ("insert into test values(2,'bbbb',20)");
// y.executeUpdate ("insert into test values(3,'cccc',30)");
y.executeUpdate ("insert into test values(5,'eeee',50)");
y.executeUpdate ("insert into test values(4,'dddd',40)");
y.close();
con = DriverManager.getConnection(url, "wing", "wing");
con2 = DriverManager.getConnection(url, "wing", "wing");
s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs1 = s.executeQuery("SELECT * from test");
CachedRowSet crs;
int keyCols[] = {3};
crs = new CachedRowSetImpl();
crs.setTableName("test");
crs.setKeyColumns(keyCols);
crs.setCommand("SELECT * from test");
crs.populate(rs1);
int row = 0;
while (crs.next())
{
++row;
System.out.println("current crs" + crs.getInt(3));
if(crs.getInt(3) == 50)
{ crs.deleteRow(); System.out.println("delete " + row);
}
}
s2 = con2.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs2 = s2.executeQuery("Select * from test");
rs2.beforeFirst();
row = 0;
while (rs2.next())
{
++row;
System.out.println("current RS " + rs2.getInt(3));
if (rs2.getInt(3) == 50)
{
rs2.updateString(2,"test");
rs2.updateInt(1,10);
rs2.updateRow();
System.out.println("update row");
}
}
try {
crs.acceptChanges(con);
}catch (SyncProviderException spe)
{ try{
System.out.println("Syn catched");
SyncResolver syncRes = spe.getSyncResolver();
System.out.println("Syn resolver object" + syncRes);
while (syncRes.nextConflict())
{
System.out.println("In Conflict");
System.out.println("Sync catched syncRes.getStatus" + syncRes.getStatus());
}
} catch (Exception e)
{ e.printStackTrace();
System.out.println ("In StackTrace");
}
}
}
catch (Exception e)
{ System.out.println("Main");
e.printStackTrace();
}
}
}
###@###.### 2005-05-06 01:03:41 GMT
JDK : 1.5.0 (FCS) and 1.6.0
VM : client/server/d64
switch/Mode : default
Platform[s] : Sol 10 (sparc) was tested.
DataBase : ORCL was tested.
Test owner :
Failing Test :
syncresolver.syncresolver1.SyncResolver1#testSyncResolverDelete
TestBase Location:
==================
/net/jsqalab/export/testsuites/JDBC/rowset2.0/test
Test source location:
=====================
/net/jsqalab/export/testsuites/JDBC/rowset2.0/test/qcts/src/tests/rowsets/syncresolver/syncresolver1/*.java
How to reproduce:
====================
Modify the DB IP, Username, user passwd.
Output 1
1) javac syncresolver.java (java source below)
2) java syncresolver
Output 2
1) comment out this line
y.executeUpdate ("insert into test values(4,'dddd',40)");
2) javac syncresolver.java
3) java syncresolver
Test output:
=============
Output 1
--------
current crs50
delete 1
current crs40
current RS 50
update row
current RS 40
Value of params1 : {0} 50
Syn catched
Syn resolver objectcom.sun.rowset.internal.SyncResolverImpl@12b3374
In Conflict
Sync catched syncRes.getStatus1
Output 2
--------
current crs50
delete 1
current RS 50
update row
Value of params1 : {0} 50
Syn catched
Syn resolver objectcom.sun.rowset.internal.SyncResolverImpl@12b3374
Specific Machine Info:
=====================
jtg-s130>uname -a
SunOS jtg-s130 5.9 Generic_117171-07 sun4u sparc SUNW,Ultra-60
Java Source
============
import java.sql.*;
import javax.sql.*;
import com.sun.rowset.*;
import javax.sql.rowset.*;
import javax.sql.rowset.spi.*;
public class syncresolver
{
public static void main(String args[])
{
Connection con = null;
Connection con2 = null;
try
{
String driver ="com.inet.ora.OraDriver";
String url = "jdbc:inetora:192.0.0.1:1521:ORCL";
Class.forName(driver).newInstance();
Statement s, s2, y;
con = DriverManager.getConnection(url, "user1", "user1");
y = con.createStatement();
y.executeUpdate("DROP TABLE test");
y.executeUpdate("CREATE TABLE test (age INT, name VARCHAR(50), sal number(10))");
// y.executeUpdate ("insert into test values(1,'aaaa',10)");
// y.executeUpdate ("insert into test values(2,'bbbb',20)");
// y.executeUpdate ("insert into test values(3,'cccc',30)");
y.executeUpdate ("insert into test values(5,'eeee',50)");
y.executeUpdate ("insert into test values(4,'dddd',40)");
y.close();
con = DriverManager.getConnection(url, "wing", "wing");
con2 = DriverManager.getConnection(url, "wing", "wing");
s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs1 = s.executeQuery("SELECT * from test");
CachedRowSet crs;
int keyCols[] = {3};
crs = new CachedRowSetImpl();
crs.setTableName("test");
crs.setKeyColumns(keyCols);
crs.setCommand("SELECT * from test");
crs.populate(rs1);
int row = 0;
while (crs.next())
{
++row;
System.out.println("current crs" + crs.getInt(3));
if(crs.getInt(3) == 50)
{ crs.deleteRow(); System.out.println("delete " + row);
}
}
s2 = con2.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs2 = s2.executeQuery("Select * from test");
rs2.beforeFirst();
row = 0;
while (rs2.next())
{
++row;
System.out.println("current RS " + rs2.getInt(3));
if (rs2.getInt(3) == 50)
{
rs2.updateString(2,"test");
rs2.updateInt(1,10);
rs2.updateRow();
System.out.println("update row");
}
}
try {
crs.acceptChanges(con);
}catch (SyncProviderException spe)
{ try{
System.out.println("Syn catched");
SyncResolver syncRes = spe.getSyncResolver();
System.out.println("Syn resolver object" + syncRes);
while (syncRes.nextConflict())
{
System.out.println("In Conflict");
System.out.println("Sync catched syncRes.getStatus" + syncRes.getStatus());
}
} catch (Exception e)
{ e.printStackTrace();
System.out.println ("In StackTrace");
}
}
}
catch (Exception e)
{ System.out.println("Main");
e.printStackTrace();
}
}
}
###@###.### 2005-05-06 01:03:41 GMT