[teiid-commits] teiid SVN: r4221 - in trunk/engine/src: test/java/org/teiid/query/processor and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Jul 3 16:05:55 EDT 2012


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);
     }



More information about the teiid-commits mailing list