Author: shawkins
Date: 2012-07-03 16:05:54 -0400 (Tue, 03 Jul 2012)
New Revision: 4221
Modified:
trunk/engine/src/main/java/org/teiid/query/processor/relational/ArrayTableNode.java
trunk/engine/src/test/java/org/teiid/query/processor/TestArrayTable.java
Log:
TEIID-2090 fixing npe
Modified:
trunk/engine/src/main/java/org/teiid/query/processor/relational/ArrayTableNode.java
===================================================================
---
trunk/engine/src/main/java/org/teiid/query/processor/relational/ArrayTableNode.java 2012-07-03
15:29:48 UTC (rev 4220)
+++
trunk/engine/src/main/java/org/teiid/query/processor/relational/ArrayTableNode.java 2012-07-03
20:05:54 UTC (rev 4221)
@@ -87,22 +87,23 @@
@Override
protected TupleBatch nextBatchDirect() throws BlockedException,
TeiidComponentException, TeiidProcessingException {
- ArrayList<Object> tuple = new ArrayList<Object>(projectionIndexes.length);
-
Object array = getEvaluator(Collections.emptyMap()).evaluate(table.getArrayValue(),
null);
-
- for (int output : projectionIndexes) {
- ProjectedColumn col = table.getColumns().get(output);
- try {
- Object val = FunctionMethods.array_get(array, output + 1);
- tuple.add(DataTypeManager.transformValue(val,
table.getColumns().get(output).getSymbol().getType()));
- } catch (TransformationException e) {
- throw new TeiidProcessingException(QueryPlugin.Event.TEIID30190, e,
QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30190, col.getName()));
- } catch (SQLException e) {
- throw new TeiidProcessingException(QueryPlugin.Event.TEIID30188, e);
+
+ if (array != null) {
+ ArrayList<Object> tuple = new
ArrayList<Object>(projectionIndexes.length);
+ for (int output : projectionIndexes) {
+ ProjectedColumn col = table.getColumns().get(output);
+ try {
+ Object val = FunctionMethods.array_get(array, output + 1);
+ tuple.add(DataTypeManager.transformValue(val,
table.getColumns().get(output).getSymbol().getType()));
+ } catch (TransformationException e) {
+ throw new TeiidProcessingException(QueryPlugin.Event.TEIID30190, e,
QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30190, col.getName()));
+ } catch (SQLException e) {
+ throw new TeiidProcessingException(QueryPlugin.Event.TEIID30188, e);
+ }
}
+ addBatchRow(tuple);
}
- addBatchRow(tuple);
terminateBatches();
return pullBatch();
}
Modified: trunk/engine/src/test/java/org/teiid/query/processor/TestArrayTable.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/TestArrayTable.java 2012-07-03
15:29:48 UTC (rev 4220)
+++ trunk/engine/src/test/java/org/teiid/query/processor/TestArrayTable.java 2012-07-03
20:05:54 UTC (rev 4221)
@@ -75,7 +75,7 @@
public static void process(String sql, List[] expectedResults) throws Exception {
HardcodedDataManager dataManager = new HardcodedDataManager();
- dataManager.addData("SELECT bqt1.smalla.objectvalue FROM bqt1.smalla", new
List[] {Collections.singletonList(new Object[] {"a", 1, 2}),
Collections.singletonList(new Object[] {"b", 3, 6})} );
+ dataManager.addData("SELECT bqt1.smalla.objectvalue FROM bqt1.smalla", new
List[] {Collections.singletonList(new Object[] {"a", 1, 2}),
Collections.singletonList(new Object[] {"b", 3, 6}),
Collections.singletonList(null)} );
ProcessorPlan plan = helpGetPlan(helpParse(sql),
RealMetadataFactory.exampleBQTCached());
helpProcess(plan, createCommandContext(), dataManager, expectedResults);
}