@@ -1512,6 +1512,8 @@ public static JSONObject getJSONObject(JSONObject object, String key) {
1512
1512
1513
1513
1514
1514
public static final String KEY_CONFIG = "config" ;
1515
+
1516
+ public static final String KEY_SQL = "sql" ;
1515
1517
1516
1518
protected Map <String , List <JSONObject >> arrayMainCacheMap = new HashMap <>();
1517
1519
public void putArrayMainCache (String arrayPath , List <JSONObject > mainTableDataList ) {
@@ -1549,19 +1551,27 @@ public JSONObject executeSQL(SQLConfig config, boolean isSubquery) throws Except
1549
1551
JSONObject result ;
1550
1552
1551
1553
boolean explain = config .isExplain ();
1552
- if (explain ) { //如果先执行 explain,则 execute 会死循环,所以只能先执行非 explain
1554
+ if (explain ) {
1555
+ //如果先执行 explain,则 execute 会死循环,所以只能先执行非 explain
1553
1556
config .setExplain (false ); //对下面 config.getSQL(false); 生效
1554
1557
JSONObject res = getSQLExecutor ().execute (config , false );
1555
1558
1556
- config .setExplain (explain );
1557
- JSONObject explainResult = config .isMain () && config .getPosition () != 0 ? null : getSQLExecutor ().execute (config , false );
1559
+ //如果是查询方法,才能执行explain
1560
+ if (RequestMethod .isQueryMethod (config .getMethod ())){
1561
+ config .setExplain (explain );
1562
+ JSONObject explainResult = config .isMain () && config .getPosition () != 0 ? null : getSQLExecutor ().execute (config , false );
1558
1563
1559
- if (explainResult == null ) {
1560
- result = res ;
1561
- }
1562
- else {
1564
+ if (explainResult == null ) {
1565
+ result = res ;
1566
+ }
1567
+ else {
1568
+ result = new JSONObject (true );
1569
+ result .put (KEY_EXPLAIN , explainResult );
1570
+ result .putAll (res );
1571
+ }
1572
+ }else {//如果是更新请求,不执行explain,但可以返回sql
1563
1573
result = new JSONObject (true );
1564
- result .put (KEY_EXPLAIN , explainResult );
1574
+ result .put (KEY_SQL , config . getSQL ( false ) );
1565
1575
result .putAll (res );
1566
1576
}
1567
1577
}
0 commit comments