@@ -1364,31 +1364,38 @@ public String execute(@RequestBody String request, HttpSession session) {
13641364 config .setPrepared (true );
13651365 config .setPreparedValueList (valueList );
13661366
1367+ String sqlPrefix = EXECUTE_STRICTLY ? sql .substring (0 , 7 ).toUpperCase () : "" ;
1368+ boolean isWrite = sqlPrefix .startsWith ("INSERT " ) || sqlPrefix .startsWith ("UPDATE " ) || sqlPrefix .startsWith ("DELETE " );
1369+
1370+ long executeStartTime = System .currentTimeMillis ();
1371+
13671372 Statement statement = executor .getStatement (config , sql );
13681373 if (statement instanceof PreparedStatement ) {
13691374 if (EXECUTE_STRICTLY ) {
1370- if (sql .startsWith ("SELECT " )) {
1371- ((PreparedStatement ) statement ).executeQuery ();
1372- } else {
1375+ if (isWrite ) {
13731376 ((PreparedStatement ) statement ).executeUpdate ();
1377+ } else {
1378+ ((PreparedStatement ) statement ).executeQuery ();
13741379 }
13751380 }
13761381 else {
13771382 ((PreparedStatement ) statement ).execute ();
13781383 }
13791384 } else {
13801385 if (EXECUTE_STRICTLY ) {
1381- if (sql .startsWith ("SELECT " )) {
1382- statement .executeQuery (sql );
1383- } else {
1386+ if (isWrite ) {
13841387 statement .executeUpdate (sql );
1388+ } else {
1389+ statement .executeQuery (sql );
13851390 }
13861391 }
13871392 else {
13881393 statement .execute (sql );
13891394 }
13901395 }
13911396
1397+ long executeDuration = System .currentTimeMillis () - executeStartTime ;
1398+
13921399 ResultSet rs = statement .getResultSet ();
13931400 ResultSetMetaData rsmd = rs .getMetaData ();
13941401 int length = rsmd .getColumnCount ();
@@ -1424,14 +1431,17 @@ public String execute(@RequestBody String request, HttpSession session) {
14241431 long endTime = System .currentTimeMillis ();
14251432 long duration = endTime - startTime ;
14261433
1427- long sqlDuration = cursorDuration + rsDuration ;
1434+ long sqlDuration = executeDuration + cursorDuration + rsDuration ;
14281435 long parseDuration = duration - sqlDuration ;
14291436
14301437 result .put ("time:start|duration|end|parse|sql" , startTime + "|" + duration + "|" + endTime + "|" + parseDuration + "|" + sqlDuration );
14311438
14321439 return result .toJSONString ();
14331440 } catch (Exception e ) {
1434- return DemoParser .newErrorResult (e ).toJSONString ();
1441+ JSONObject result = DemoParser .newErrorResult (e );
1442+ result .put ("throw" , e .getClass ().getName ());
1443+ result .put ("trace:stack" , e .getStackTrace ());
1444+ return result .toJSONString ();
14351445 }
14361446
14371447 }
0 commit comments