mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improve SQLEvalVisitor
This commit is contained in:
@@ -441,20 +441,17 @@ public class SQLEvalVisitorUtils {
|
||||
}
|
||||
|
||||
if (nullFrom) {
|
||||
Object[] row = new Object[queryBlock.getSelectList().size()];
|
||||
List<Object> row = new ArrayList<Object>(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<List<Object>> rows = new ArrayList<List<Object>>(1);
|
||||
rows.add(row);
|
||||
|
||||
Object result = rows;
|
||||
queryBlock.putAttribute(EVAL_VALUE, result);
|
||||
x.getSubQuery().putAttribute(EVAL_VALUE, result);
|
||||
x.putAttribute(EVAL_VALUE, result);
|
||||
|
||||
@@ -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<List<Object>> rows = new ArrayList<List<Object>>();
|
||||
List<Object> row = new ArrayList<Object>();
|
||||
row.add(1);
|
||||
rows.add(row);
|
||||
Assert.assertEquals(rows, SQLEvalVisitorUtils.evalExpr(JdbcConstants.MYSQL, "SELECT 1"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user