From 9453aa3a3ce258fa3c8b96fabc42ea20cdeb0e99 Mon Sep 17 00:00:00 2001 From: Chrriis Date: Thu, 8 Nov 2012 11:47:04 +0100 Subject: [PATCH] [#1177] Add SQL Console module to jOOQ - fixed infinite loop on certain RDBMS. --- .../java/org/jooq/debug/impl/LocalStatementExecutor.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/jOOQ-console/src/main/java/org/jooq/debug/impl/LocalStatementExecutor.java b/jOOQ-console/src/main/java/org/jooq/debug/impl/LocalStatementExecutor.java index 84f5211413..444495c701 100644 --- a/jOOQ-console/src/main/java/org/jooq/debug/impl/LocalStatementExecutor.java +++ b/jOOQ-console/src/main/java/org/jooq/debug/impl/LocalStatementExecutor.java @@ -151,6 +151,7 @@ class LocalStatementExecutor implements QueryExecutor { return new QueryExecution(executionDuration, new QueryExecutionMessageResult("Interrupted by user after " + Utils.formatDuration(executionDuration), true)); } List statementExecutionResultList = new ArrayList(); + int updateCount = stmt.getUpdateCount(); do { QueryExecutionResult queryExecutionResult; if(executeResult) { @@ -294,7 +295,6 @@ class LocalStatementExecutor implements QueryExecutor { final long resultSetParsingDuration = System.currentTimeMillis() - rsStart; queryExecutionResult = new LocalStatementExecutionResultSetResult(rs, columnNames, typeInfos, columnClasses, rowDataList.toArray(new Object[0][]), rowCount, resultSetParsingDuration, retainParsedRSDataRowCountThreshold, isReadOnly); } else { - final int updateCount = stmt.getUpdateCount(); queryExecutionResult = new QueryExecutionMessageResult(Utils.formatDuration(executionDuration) + "> " + updateCount + " row(s) affected.", false); } if(executorContext.getSQLDialect() == SQLDialect.SQLSERVER) { @@ -303,11 +303,13 @@ class LocalStatementExecutor implements QueryExecutor { } catch(Exception e) { executeResult = stmt.getMoreResults(); } + updateCount = stmt.getUpdateCount(); } else { executeResult = false; + updateCount = -1; } statementExecutionResultList.add(queryExecutionResult); - } while(executeResult || stmt.getUpdateCount() != -1); + } while(executeResult || updateCount != -1); return new QueryExecution(executionDuration, statementExecutionResultList.toArray(new QueryExecutionResult[0])); } catch(Exception e) { long executionDuration = System.currentTimeMillis() - start;