diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java index dea1525b64..5ce07dfc33 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java @@ -441,20 +441,17 @@ public class SQLEvalVisitorUtils { } if (nullFrom) { - Object[] row = new Object[queryBlock.getSelectList().size()]; + List row = new ArrayList(queryBlock.getSelectList().size()); for (int i = 0; i < queryBlock.getSelectList().size(); ++i) { SQLSelectItem item = queryBlock.getSelectList().get(i); item.getExpr().accept(visitor); Object cell = item.getExpr().getAttribute(EVAL_VALUE); - row[i] = cell; - } - Object result; - if (row.length == 1) { - result = row[0]; - } else { - result = row; + row.add(cell); } + List> rows = new ArrayList>(1); + rows.add(row); + Object result = rows; queryBlock.putAttribute(EVAL_VALUE, result); x.getSubQuery().putAttribute(EVAL_VALUE, result); x.putAttribute(EVAL_VALUE, result); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalSelectTest.java b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalSelectTest.java index 629f02a581..39dea061ef 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalSelectTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/eval/EvalSelectTest.java @@ -1,5 +1,8 @@ package com.alibaba.druid.bvt.sql.eval; +import java.util.ArrayList; +import java.util.List; + import junit.framework.Assert; import junit.framework.TestCase; @@ -9,6 +12,10 @@ import com.alibaba.druid.util.JdbcConstants; public class EvalSelectTest extends TestCase { public void test_select() throws Exception { - Assert.assertEquals(1, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "SELECT 1")); + List> rows = new ArrayList>(); + List row = new ArrayList(); + row.add(1); + rows.add(row); + Assert.assertEquals(rows, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "SELECT 1")); } }