Skip to content

Commit

Permalink
TEIID-4646 correcting null value behavior
Browse files Browse the repository at this point in the history
  • Loading branch information
shawkins committed Apr 17, 2017
1 parent b6c2358 commit e1bb3a3
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 0 deletions.
Expand Up @@ -85,5 +85,10 @@ public int setState(List<?> state, int index) {
public List<? extends Class<?>> getStateTypes() {
return Arrays.asList(type, Boolean.class);
}

@Override
public boolean respectsNull() {
return true;
}

}
Expand Up @@ -61,5 +61,10 @@ public void reset() {
vals = null;
partition++;
}

@Override
public boolean respectsNull() {
return true;
}

}
Expand Up @@ -27,6 +27,7 @@

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import org.junit.Test;
Expand Down Expand Up @@ -508,6 +509,27 @@ metadata, new DefaultCapabilitiesFinder(bsc),
TestOptimizer.helpPlan(sql, RealMetadataFactory.example1Cached(), new String[] {"SELECT FIRST_VALUE(g_0.e1) OVER (ORDER BY g_0.e2), LAST_VALUE(g_0.e2) OVER (ORDER BY g_0.e1) FROM pm1.g1 AS g_0"}, new DefaultCapabilitiesFinder(bsc), ComparisonMode.EXACT_COMMAND_STRING);
}

@Test public void testFirstLastValueNull() throws Exception {
BasicSourceCapabilities bsc = TestOptimizer.getTypicalCapabilities();

String sql = "SELECT FIRST_VALUE(e1) over (order by e2), LAST_VALUE(e1) over (order by e2) from pm1.g1";

ProcessorPlan plan = TestOptimizer.getPlan(helpGetCommand(sql, RealMetadataFactory.example1Cached(), null),
RealMetadataFactory.example1Cached(), new DefaultCapabilitiesFinder(bsc),
null, true, new CommandContext()); //$NON-NLS-1$

HardcodedDataManager dataMgr = new HardcodedDataManager();
dataMgr.addData("SELECT g_0.e1, g_0.e2 FROM pm1.g1 AS g_0", Arrays.asList(null, 1), Arrays.asList("b", 2), Arrays.asList("c", 3));

List<?>[] expected = new List<?>[] {
Arrays.asList(null, null),
Arrays.asList(null, "b"),
Arrays.asList(null, "c")
};

helpProcess(plan, dataMgr, expected);
}

@Test public void testLead() throws Exception {
BasicSourceCapabilities bsc = TestOptimizer.getTypicalCapabilities();

Expand All @@ -533,6 +555,26 @@ metadata, new DefaultCapabilitiesFinder(bsc),
TestOptimizer.helpPlan(sql, RealMetadataFactory.example1Cached(), new String[] {"SELECT LEAD(g_0.e1) OVER (ORDER BY g_0.e2), LEAD(g_0.e1, 2, 'c') OVER (ORDER BY g_0.e2) FROM pm1.g1 AS g_0"}, new DefaultCapabilitiesFinder(bsc), ComparisonMode.EXACT_COMMAND_STRING);
}

@Test public void testLeadNullValues() throws Exception {
BasicSourceCapabilities bsc = TestOptimizer.getTypicalCapabilities();

String sql = "SELECT LEAD(e1, 1, 'default') over (order by e2) from pm1.g1";

ProcessorPlan plan = TestOptimizer.getPlan(helpGetCommand(sql, RealMetadataFactory.example1Cached(), null),
RealMetadataFactory.example1Cached(), new DefaultCapabilitiesFinder(bsc),
null, true, new CommandContext()); //$NON-NLS-1$

HardcodedDataManager dataMgr = new HardcodedDataManager();
dataMgr.addData("SELECT g_0.e1, g_0.e2 FROM pm1.g1 AS g_0", Arrays.asList("a", 1), Arrays.asList(null, 2));

List<?>[] expected = new List<?>[] {
Collections.singletonList(null),
Collections.singletonList("default"),
};

helpProcess(plan, dataMgr, expected);
}

@Test public void testLag() throws Exception {
BasicSourceCapabilities bsc = TestOptimizer.getTypicalCapabilities();

Expand Down

0 comments on commit e1bb3a3

Please sign in to comment.