in HSQL/src/org/hsqldb1/util/TransferTable.java [147:306]
void transferStructure() throws Exception {
String Statement = new String("");
if (destDb.helper.needTransferTransaction()) {
try {
destDb.setAutoCommit(false);
} catch (Exception e) {}
}
if (Stmts.bTransfer == false) {
tracer.trace("Table " + Stmts.sSourceTable + " not transfered");
return;
}
tracer.trace("Table " + Stmts.sSourceTable + ": start transfer");
try {
if (Stmts.bDropIndex) {
if (Stmts.sDestDropIndex.charAt(Stmts.sDestDropIndex.length()
- 1) != ';') {
Stmts.sDestDropIndex += ";";
}
int lastsemicolon = 0;
int nextsemicolon = Stmts.sDestDropIndex.indexOf(';');
while (nextsemicolon > lastsemicolon) {
Statement = Stmts.sDestDropIndex.substring(lastsemicolon,
nextsemicolon);
while (Statement.charAt(Statement.length() - 1) == ';') {
Statement = Statement.substring(0, Statement.length()
- 1);
}
try {
tracer.trace("Executing " + Statement);
destDb.execute(Statement);
} catch (Exception e) {
tracer.trace("Ignoring error " + e.getMessage());
}
lastsemicolon = nextsemicolon + 1;
nextsemicolon = lastsemicolon
+ Stmts.sDestDropIndex.substring(
lastsemicolon).indexOf(';');
}
}
if (Stmts.bDelete) {
if (Stmts.sDestDelete.charAt(Stmts.sDestDelete.length() - 1)
!= ';') {
Stmts.sDestDelete += ";";
}
int lastsemicolon = 0;
int nextsemicolon = Stmts.sDestDelete.indexOf(';');
while (nextsemicolon > lastsemicolon) {
Statement = Stmts.sDestDelete.substring(lastsemicolon,
nextsemicolon);
while (Statement.charAt(Statement.length() - 1) == ';') {
Statement = Statement.substring(0, Statement.length()
- 1);
}
try {
tracer.trace("Executing " + Statement);
destDb.execute(Statement);
} catch (Exception e) {
tracer.trace("Ignoring error " + e.getMessage());
}
lastsemicolon = nextsemicolon + 1;
nextsemicolon = lastsemicolon
+ Stmts.sDestDelete.substring(
lastsemicolon).indexOf(';');
}
}
if (Stmts.bDrop) {
if (Stmts.sDestDrop.charAt(Stmts.sDestDrop.length() - 1)
!= ';') {
Stmts.sDestDrop += ";";
}
int lastsemicolon = 0;
int nextsemicolon = Stmts.sDestDrop.indexOf(';');
while (nextsemicolon > lastsemicolon) {
Statement = Stmts.sDestDrop.substring(lastsemicolon,
nextsemicolon);
while (Statement.charAt(Statement.length() - 1) == ';') {
Statement = Statement.substring(0, Statement.length()
- 1);
}
try {
tracer.trace("Executing " + Statement);
destDb.execute(Statement);
} catch (Exception e) {
tracer.trace("Ignoring error " + e.getMessage());
}
lastsemicolon = nextsemicolon + 1;
nextsemicolon = lastsemicolon
+ Stmts.sDestDrop.substring(
lastsemicolon).indexOf(';');
}
}
if (Stmts.bCreate) {
if (Stmts.sDestCreate.charAt(Stmts.sDestCreate.length() - 1)
!= ';') {
Stmts.sDestCreate += ";";
}
int lastsemicolon = 0;
int nextsemicolon = Stmts.sDestCreate.indexOf(';');
while (nextsemicolon > lastsemicolon) {
Statement = Stmts.sDestCreate.substring(lastsemicolon,
nextsemicolon);
while (Statement.charAt(Statement.length() - 1) == ';') {
Statement = Statement.substring(0, Statement.length()
- 1);
}
tracer.trace("Executing " + Statement);
destDb.execute(Statement);
lastsemicolon = nextsemicolon + 1;
nextsemicolon = lastsemicolon
+ Stmts.sDestCreate.substring(
lastsemicolon).indexOf(';');
}
}
} catch (Exception e) {
try {
if (!destDb.getAutoCommit()) {
destDb.rollback();
}
} catch (Exception e1) {}
throw (e);
}
if (!destDb.getAutoCommit()) {
destDb.commit();
try {
destDb.setAutoCommit(true);
} catch (Exception e) {}
}
}