* Move sql logging to finally clause so statements are logged even if an exception is thrown

* Unified String/StringBuffer variable naming a bit
This commit is contained in:
hns 2005-09-07 08:41:16 +00:00
parent 58b09f4436
commit 84751f86a6

View file

@ -481,6 +481,8 @@ public final class NodeManager {
String nameField = dbm.getNameField(); String nameField = dbm.getNameField();
String prototypeField = dbm.getPrototypeField(); String prototypeField = dbm.getPrototypeField();
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
try { try {
int stmtNumber = 1; int stmtNumber = 1;
@ -517,16 +519,14 @@ public final class NodeManager {
} }
} }
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
stmt.executeUpdate(); stmt.executeUpdate();
} finally {
if (logSql) { if (logSql) {
long logTimeStop = java.lang.System.currentTimeMillis(); long logTimeStop = java.lang.System.currentTimeMillis();
logSqlStatement("SQL INSERT", dbm.getTableName(), logSqlStatement("SQL INSERT", dbm.getTableName(),
logTimeStart, logTimeStop, insertString); logTimeStart, logTimeStop, insertString);
} }
} finally {
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();
@ -626,6 +626,7 @@ public final class NodeManager {
PreparedStatement stmt = con.prepareStatement(b.toString()); PreparedStatement stmt = con.prepareStatement(b.toString());
int stmtNumber = 0; int stmtNumber = 0;
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
try { try {
for (int i = 0; i < props.length; i++) { for (int i = 0; i < props.length; i++) {
@ -647,17 +648,14 @@ public final class NodeManager {
} }
} }
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
stmt.executeUpdate(); stmt.executeUpdate();
} finally {
if (logSql) { if (logSql) {
long logTimeStop = System.currentTimeMillis(); long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL UPDATE", dbm.getTableName(), logSqlStatement("SQL UPDATE", dbm.getTableName(),
logTimeStart, logTimeStop, b.toString()); logTimeStart, logTimeStop, b.toString());
} }
} finally {
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();
@ -692,32 +690,29 @@ public final class NodeManager {
db.deleteNode(txn, node.getID()); db.deleteNode(txn, node.getID());
} else { } else {
Statement st = null; Statement st = null;
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
String str = new StringBuffer("DELETE FROM ").append(dbm.getTableName())
.append(" WHERE ")
.append(dbm.getIDField())
.append(" = ")
.append(node.getID())
.toString();
try { try {
Connection con = dbm.getConnection(); Connection con = dbm.getConnection();
// set connection to write mode // set connection to write mode
if (con.isReadOnly()) con.setReadOnly(false); if (con.isReadOnly()) con.setReadOnly(false);
String str = new StringBuffer("DELETE FROM ").append(dbm.getTableName())
.append(" WHERE ")
.append(dbm.getIDField())
.append(" = ")
.append(node.getID())
.toString();
st = con.createStatement(); st = con.createStatement();
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
st.executeUpdate(str); st.executeUpdate(str);
} finally {
if (logSql) { if (logSql) {
long logTimeStop = System.currentTimeMillis(); long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL DELETE", dbm.getTableName(), logSqlStatement("SQL DELETE", dbm.getTableName(),
logTimeStart, logTimeStop, str); logTimeStart, logTimeStop, str);
} }
} finally {
if (st != null) { if (st != null) {
try { try {
st.close(); st.close();
@ -781,29 +776,21 @@ public final class NodeManager {
// tx.timer.beginEvent ("generateID "+map); // tx.timer.beginEvent ("generateID "+map);
String retval = null; String retval = null;
Statement stmt = null; Statement stmt = null;
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
String q = new StringBuffer("SELECT MAX(").append(map.getIDField())
.append(") FROM ")
.append(map.getTableName())
.toString();
try { try {
Connection con = map.getConnection(); Connection con = map.getConnection();
// set connection to read-only mode // set connection to read-only mode
if (!con.isReadOnly()) con.setReadOnly(true); if (!con.isReadOnly()) con.setReadOnly(true);
String q = new StringBuffer("SELECT MAX(").append(map.getIDField())
.append(") FROM ")
.append(map.getTableName())
.toString();
stmt = con.createStatement(); stmt = con.createStatement();
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
ResultSet rs = stmt.executeQuery(q); ResultSet rs = stmt.executeQuery(q);
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_MAX", map.getTableName(),
logTimeStart, logTimeStop, q);
}
// check for empty table // check for empty table
if (!rs.next()) { if (!rs.next()) {
long currMax = map.getNewID(0); long currMax = map.getNewID(0);
@ -816,7 +803,11 @@ public final class NodeManager {
retval = Long.toString(currMax); retval = Long.toString(currMax);
} }
} finally { } finally {
// tx.timer.endEvent ("generateID "+map); if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_MAX", map.getTableName(),
logTimeStart, logTimeStop, q);
}
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();
@ -833,34 +824,31 @@ public final class NodeManager {
// tx.timer.beginEvent ("generateID "+map); // tx.timer.beginEvent ("generateID "+map);
Statement stmt = null; Statement stmt = null;
String retval = null; String retval = null;
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
String q = new StringBuffer("SELECT ").append(map.getIDgen())
.append(".nextval FROM dual").toString();
try { try {
Connection con = map.getConnection(); Connection con = map.getConnection();
// TODO is it necessary to set connection to write mode here? // TODO is it necessary to set connection to write mode here?
if (con.isReadOnly()) con.setReadOnly(false); if (con.isReadOnly()) con.setReadOnly(false);
String q = new StringBuffer("SELECT ").append(map.getIDgen())
.append(".nextval FROM dual").toString();
stmt = con.createStatement(); stmt = con.createStatement();
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
ResultSet rs = stmt.executeQuery(q); ResultSet rs = stmt.executeQuery(q);
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_NEXTVAL", map.getTableName(),
logTimeStart, logTimeStop, q);
}
if (!rs.next()) { if (!rs.next()) {
throw new SQLException("Error creating ID from Sequence: empty recordset"); throw new SQLException("Error creating ID from Sequence: empty recordset");
} }
retval = rs.getString(1); retval = rs.getString(1);
} finally { } finally {
// tx.timer.endEvent ("generateID "+map); if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_NEXTVAL", map.getTableName(),
logTimeStart, logTimeStop, q);
}
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();
@ -898,9 +886,10 @@ public final class NodeManager {
String table = rel.otherType.getTableName(); String table = rel.otherType.getTableName();
Statement stmt = null; Statement stmt = null;
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
String query = null;
try { try {
String q;
StringBuffer b = new StringBuffer("SELECT "); StringBuffer b = new StringBuffer("SELECT ");
@ -917,10 +906,10 @@ public final class NodeManager {
if (home.getSubnodeRelation() != null) { if (home.getSubnodeRelation() != null) {
// subnode relation was explicitly set // subnode relation was explicitly set
q = b.append(" ").append(home.getSubnodeRelation()).toString(); query = b.append(" ").append(home.getSubnodeRelation()).toString();
} else { } else {
// let relation object build the query // let relation object build the query
q = b.append(rel.buildQuery(home, query = b.append(rel.buildQuery(home,
home.getNonVirtualParent(), home.getNonVirtualParent(),
null, null,
" WHERE ", " WHERE ",
@ -933,15 +922,7 @@ public final class NodeManager {
stmt.setMaxRows(rel.maxSize); stmt.setMaxRows(rel.maxSize);
} }
long logTimeStart = logSql ? System.currentTimeMillis() : 0; ResultSet result = stmt.executeQuery(query);
ResultSet result = stmt.executeQuery(q);
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_IDS", table,
logTimeStart, logTimeStop, q);
}
// problem: how do we derive a SyntheticKey from a not-yet-persistent Node? // problem: how do we derive a SyntheticKey from a not-yet-persistent Node?
Key k = (rel.groupby != null) ? home.getKey() : null; Key k = (rel.groupby != null) ? home.getKey() : null;
@ -972,7 +953,11 @@ public final class NodeManager {
} }
} }
} finally { } finally {
// tx.timer.endEvent ("getNodeIDs "+home); if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_IDS", table,
logTimeStart, logTimeStop, query);
}
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();
@ -1013,33 +998,30 @@ public final class NodeManager {
Statement stmt = con.createStatement(); Statement stmt = con.createStatement();
DbColumn[] columns = dbm.getColumns(); DbColumn[] columns = dbm.getColumns();
Relation[] joins = dbm.getJoins(); Relation[] joins = dbm.getJoins();
StringBuffer q = dbm.getSelect(rel); String query = null;
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
try { try {
StringBuffer b = dbm.getSelect(rel);
if (home.getSubnodeRelation() != null) { if (home.getSubnodeRelation() != null) {
q.append(home.getSubnodeRelation()); b.append(home.getSubnodeRelation());
} else { } else {
// let relation object build the query // let relation object build the query
q.append(rel.buildQuery(home, b.append(rel.buildQuery(home,
home.getNonVirtualParent(), home.getNonVirtualParent(),
null, null,
" WHERE ", " WHERE ",
true)); true));
} }
query = b.toString();
if (rel.maxSize > 0) { if (rel.maxSize > 0) {
stmt.setMaxRows(rel.maxSize); stmt.setMaxRows(rel.maxSize);
} }
long logTimeStart = logSql ? System.currentTimeMillis() : 0; ResultSet rs = stmt.executeQuery(query);
ResultSet rs = stmt.executeQuery(q.toString());
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_ALL", dbm.getTableName(),
logTimeStart, logTimeStop, q.toString());
}
while (rs.next()) { while (rs.next()) {
// create new Nodes. // create new Nodes.
@ -1064,7 +1046,11 @@ public final class NodeManager {
} }
} finally { } finally {
// tx.timer.endEvent ("getNodes "+home); if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_ALL", dbm.getTableName(),
logTimeStart, logTimeStop, query);
}
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();
@ -1098,60 +1084,57 @@ public final class NodeManager {
Statement stmt = con.createStatement(); Statement stmt = con.createStatement();
DbColumn[] columns = dbm.getColumns(); DbColumn[] columns = dbm.getColumns();
Relation[] joins = dbm.getJoins(); Relation[] joins = dbm.getJoins();
StringBuffer q = dbm.getSelect(rel); String query = null;
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
try { try {
StringBuffer b = dbm.getSelect(rel);
String idfield = (rel.groupby != null) ? rel.groupby : dbm.getIDField(); String idfield = (rel.groupby != null) ? rel.groupby : dbm.getIDField();
boolean needsQuotes = dbm.needsQuotes(idfield); boolean needsQuotes = dbm.needsQuotes(idfield);
q.append(" WHERE "); b.append(" WHERE ");
q.append(dbm.getTableName()); b.append(dbm.getTableName());
q.append("."); b.append(".");
q.append(idfield); b.append(idfield);
q.append(" IN ("); b.append(" IN (");
boolean first = true; boolean first = true;
for (int i = 0; i < keys.length; i++) { for (int i = 0; i < keys.length; i++) {
if (keys[i] != null) { if (keys[i] != null) {
if (!first) { if (!first) {
q.append(','); b.append(',');
} else { } else {
first = false; first = false;
} }
if (needsQuotes) { if (needsQuotes) {
q.append("'"); b.append("'");
q.append(escape(keys[i].getID())); b.append(escape(keys[i].getID()));
q.append("'"); b.append("'");
} else { } else {
q.append(keys[i].getID()); b.append(keys[i].getID());
} }
} }
} }
q.append(") "); b.append(") ");
dbm.addJoinConstraints(q, " AND "); dbm.addJoinConstraints(b, " AND ");
if (rel.groupby != null) { if (rel.groupby != null) {
rel.renderConstraints(q, home, home.getNonVirtualParent(), " AND "); rel.renderConstraints(b, home, home.getNonVirtualParent(), " AND ");
if (rel.order != null) { if (rel.order != null) {
q.append(" ORDER BY "); b.append(" ORDER BY ");
q.append(rel.order); b.append(rel.order);
} }
} }
long logTimeStart = logSql ? System.currentTimeMillis() : 0; query = b.toString();
ResultSet rs = stmt.executeQuery(q.toString()); ResultSet rs = stmt.executeQuery(query);
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_PREFETCH", dbm.getTableName(),
logTimeStart, logTimeStop, q.toString());
}
String groupbyProp = null; String groupbyProp = null;
HashMap groupbySubnodes = null; HashMap groupbySubnodes = null;
@ -1244,6 +1227,11 @@ public final class NodeManager {
} catch (Exception x) { } catch (Exception x) {
System.err.println ("Error in prefetchNodes(): "+x); System.err.println ("Error in prefetchNodes(): "+x);
} finally { } finally {
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_PREFETCH", dbm.getTableName(),
logTimeStart, logTimeStop, query);
}
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();
@ -1273,11 +1261,11 @@ public final class NodeManager {
if (!con.isReadOnly()) con.setReadOnly(true); if (!con.isReadOnly()) con.setReadOnly(true);
String table = rel.otherType.getTableName(); String table = rel.otherType.getTableName();
Statement stmt = null; Statement stmt = null;
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
String query = null;
try { try {
String q = null;
StringBuffer tables = new StringBuffer(table); StringBuffer tables = new StringBuffer(table);
rel.appendAdditionalTables(tables); rel.appendAdditionalTables(tables);
@ -1289,10 +1277,10 @@ public final class NodeManager {
if (home.getSubnodeRelation() != null) { if (home.getSubnodeRelation() != null) {
// use the manually set subnoderelation of the home node // use the manually set subnoderelation of the home node
q = b.append(" ").append(home.getSubnodeRelation()).toString(); query = b.append(" ").append(home.getSubnodeRelation()).toString();
} else { } else {
// let relation object build the query // let relation object build the query
q = b.append(rel.buildQuery(home, query = b.append(rel.buildQuery(home,
home.getNonVirtualParent(), home.getNonVirtualParent(),
null, null,
" WHERE ", " WHERE ",
@ -1301,15 +1289,9 @@ public final class NodeManager {
stmt = con.createStatement(); stmt = con.createStatement();
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
ResultSet rs = stmt.executeQuery(q); ResultSet rs = stmt.executeQuery(query);
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_COUNT", table,
logTimeStart, logTimeStop, q);
}
if (!rs.next()) { if (!rs.next()) {
retval = 0; retval = 0;
@ -1317,7 +1299,11 @@ public final class NodeManager {
retval = rs.getInt(1); retval = rs.getInt(1);
} }
} finally { } finally {
// tx.timer.endEvent ("countNodes "+home); if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_COUNT", table,
logTimeStart, logTimeStop, query);
}
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();
@ -1350,26 +1336,27 @@ public final class NodeManager {
Connection con = rel.otherType.getConnection(); Connection con = rel.otherType.getConnection();
// set connection to read-only mode // set connection to read-only mode
if (!con.isReadOnly()) con.setReadOnly(true); if (!con.isReadOnly()) con.setReadOnly(true);
String table = rel.otherType.getTableName(); String table = rel.otherType.getTableName();
StringBuffer tables = new StringBuffer(table);
rel.appendAdditionalTables(tables);
Statement stmt = null; Statement stmt = null;
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
StringBuffer tables = new StringBuffer(table); String query = null;
rel.appendAdditionalTables(tables);
try { try {
// NOTE: we explicitly convert tables StringBuffer to a String // NOTE: we explicitly convert tables StringBuffer to a String
// before appending to be compatible with JDK 1.3 // before appending to be compatible with JDK 1.3
StringBuffer q = new StringBuffer("SELECT ").append(namefield) StringBuffer b = new StringBuffer("SELECT ").append(namefield)
.append(" FROM ") .append(" FROM ")
.append(tables.toString()); .append(tables.toString());
if (home.getSubnodeRelation() != null) { if (home.getSubnodeRelation() != null) {
q.append(" ").append(home.getSubnodeRelation()); b.append(" ").append(home.getSubnodeRelation());
} else { } else {
// let relation object build the query // let relation object build the query
q.append(rel.buildQuery(home, b.append(rel.buildQuery(home,
home.getNonVirtualParent(), home.getNonVirtualParent(),
null, null,
" WHERE ", " WHERE ",
@ -1378,15 +1365,9 @@ public final class NodeManager {
stmt = con.createStatement(); stmt = con.createStatement();
long logTimeStart = logSql ? System.currentTimeMillis() : 0; query = b.toString();
ResultSet rs = stmt.executeQuery(q.toString()); ResultSet rs = stmt.executeQuery(query);
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_ACCESSNAMES", table,
logTimeStart, logTimeStop, q.toString());
}
while (rs.next()) { while (rs.next()) {
String n = rs.getString(1); String n = rs.getString(1);
@ -1396,7 +1377,12 @@ public final class NodeManager {
} }
} }
} finally { } finally {
// tx.timer.endEvent ("getNodeIDs "+home); if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_ACCESSNAMES", table,
logTimeStart, logTimeStop, query);
}
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();
@ -1430,6 +1416,8 @@ public final class NodeManager {
String idfield = dbm.getIDField(); String idfield = dbm.getIDField();
Statement stmt = null; Statement stmt = null;
String query = null;
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
try { try {
Connection con = dbm.getConnection(); Connection con = dbm.getConnection();
@ -1440,31 +1428,25 @@ public final class NodeManager {
DbColumn[] columns = dbm.getColumns(); DbColumn[] columns = dbm.getColumns();
Relation[] joins = dbm.getJoins(); Relation[] joins = dbm.getJoins();
StringBuffer q = dbm.getSelect(null).append("WHERE ") StringBuffer b = dbm.getSelect(null).append("WHERE ")
.append(dbm.getTableName()) .append(dbm.getTableName())
.append(".") .append(".")
.append(idfield) .append(idfield)
.append(" = "); .append(" = ");
if (dbm.needsQuotes(idfield)) { if (dbm.needsQuotes(idfield)) {
q.append("'"); b.append("'");
q.append(escape(kstr)); b.append(escape(kstr));
q.append("'"); b.append("'");
} else { } else {
q.append(kstr); b.append(kstr);
} }
dbm.addJoinConstraints(q, " AND "); dbm.addJoinConstraints(b, " AND ");
long logTimeStart = logSql ? System.currentTimeMillis() : 0; query = b.toString();
ResultSet rs = stmt.executeQuery(q.toString()); ResultSet rs = stmt.executeQuery(query);
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_BYKEY", dbm.getTableName(),
logTimeStart, logTimeStop, q.toString());
}
if (!rs.next()) { if (!rs.next()) {
return null; return null;
@ -1478,6 +1460,11 @@ public final class NodeManager {
throw new RuntimeException("More than one value returned by query."); throw new RuntimeException("More than one value returned by query.");
} }
} finally { } finally {
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_BYKEY", dbm.getTableName(),
logTimeStart, logTimeStop, query);
}
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();
@ -1522,38 +1509,41 @@ public final class NodeManager {
return node; return node;
} else { } else {
DbMapping dbm = rel.otherType;
Statement stmt = null; Statement stmt = null;
String query = null;
long logTimeStart = logSql ? System.currentTimeMillis() : 0;
try { try {
DbMapping dbm = rel.otherType;
Connection con = dbm.getConnection(); Connection con = dbm.getConnection();
// set connection to read-only mode // set connection to read-only mode
if (!con.isReadOnly()) con.setReadOnly(true); if (!con.isReadOnly()) con.setReadOnly(true);
DbColumn[] columns = dbm.getColumns(); DbColumn[] columns = dbm.getColumns();
Relation[] joins = dbm.getJoins(); Relation[] joins = dbm.getJoins();
StringBuffer q = dbm.getSelect(rel); StringBuffer b = dbm.getSelect(rel);
if (home.getSubnodeRelation() != null && !rel.isComplexReference()) { if (home.getSubnodeRelation() != null && !rel.isComplexReference()) {
// combine our key with the constraints in the manually set subnode relation // combine our key with the constraints in the manually set subnode relation
q.append(" WHERE "); b.append(" WHERE ");
q.append(dbm.getTableName()); if (rel.accessName.indexOf('(') == -1 && rel.accessName.indexOf('.') == -1) {
q.append("."); b.append(dbm.getTableName());
q.append(rel.accessName); b.append(".");
q.append(" = '"); }
q.append(escape(kstr)); b.append(rel.accessName);
q.append("'"); b.append(" = '");
b.append(escape(kstr));
b.append("'");
// add join contraints in case this is an old oracle style join // add join contraints in case this is an old oracle style join
dbm.addJoinConstraints(q, " AND "); dbm.addJoinConstraints(b, " AND ");
// add potential constraints from manually set subnodeRelation // add potential constraints from manually set subnodeRelation
String subrel = home.getSubnodeRelation().trim(); String subrel = home.getSubnodeRelation().trim();
if (subrel.length() > 5) { if (subrel.length() > 5) {
q.append(" AND ("); b.append(" AND (");
q.append(subrel.substring(5).trim()); b.append(subrel.substring(5).trim());
q.append(")"); b.append(")");
} }
} else { } else {
q.append(rel.buildQuery(home, b.append(rel.buildQuery(home,
home.getNonVirtualParent(), home.getNonVirtualParent(),
kstr, kstr,
" WHERE ", " WHERE ",
@ -1562,15 +1552,9 @@ public final class NodeManager {
stmt = con.createStatement(); stmt = con.createStatement();
long logTimeStart = logSql ? System.currentTimeMillis() : 0; query = b.toString();
ResultSet rs = stmt.executeQuery(q.toString()); ResultSet rs = stmt.executeQuery(query);
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_BYRELATION", dbm.getTableName(),
logTimeStart, logTimeStop, q.toString());
}
if (!rs.next()) { if (!rs.next()) {
return null; return null;
@ -1595,6 +1579,11 @@ public final class NodeManager {
} }
} finally { } finally {
if (logSql) {
long logTimeStop = System.currentTimeMillis();
logSqlStatement("SQL SELECT_BYRELATION", dbm.getTableName(),
logTimeStart, logTimeStop, query);
}
if (stmt != null) { if (stmt != null) {
try { try {
stmt.close(); stmt.close();