Skip to content

Commit

Permalink
TEIID-5310 handling the null case
Browse files Browse the repository at this point in the history
# Conflicts:
#	test-integration/common/src/test/resources/TestSystemVirtualModel/testStoredProcedures.expected
  • Loading branch information
shawkins committed Apr 7, 2018
1 parent 5aac275 commit 6bf3594
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 12 deletions.
6 changes: 3 additions & 3 deletions engine/src/main/resources/org/teiid/metadata/SYSADMIN.sql
Original file line number Diff line number Diff line change
Expand Up @@ -429,9 +429,9 @@ BEGIN

/* make sure table in valid state before updating */
EXECUTE IMMEDIATE 'SELECT Name, TargetSchemaName, TargetName, Valid, LoadState, Updated, Cardinality, LoadNumber FROM ' || VARIABLES.statusTable || VARIABLES.updateCriteria AS Name string, TargetSchemaName string, TargetName string, Valid boolean, LoadState string, Updated timestamp, Cardinality long, LoadNumber long INTO #load USING vdbName = VARIABLES.vdbName, vdbVersion = VARIABLES.vdbVersion, schemaName = updateMatView.schemaName, viewName = updateMatView.viewName;
DECLARE long loadNumber = (SELECT LoadNumber FROM #load);
DECLARE long updatedCardinality = (SELECT Cardinality FROM #load);
DECLARE boolean valid = (SELECT Valid FROM #load);
DECLARE long loadNumber = nvl((SELECT LoadNumber FROM #load), 0);
DECLARE long updatedCardinality = nvl((SELECT Cardinality FROM #load), 0);
DECLARE boolean valid = nvl((SELECT Valid FROM #load), false);
IF (NOT VARIABLES.valid)
BEGIN
RAISE SQLEXCEPTION 'View ' || VARIABLES.fullViewName || ' contents are not in valid status to perform materialization update. Run loadMatview to reload.';
Expand Down
20 changes: 12 additions & 8 deletions runtime/src/test/java/org/teiid/runtime/TestEmbeddedServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -1411,16 +1411,18 @@ public void cancel() throws TranslatorException {
}
@Override
public List<?> next() throws TranslatorException, DataNotAvailableException {
String status = "SELECT status.TargetSchemaName, status.TargetName, status.Valid, "
+ "status.LoadState, status.Updated, status.Cardinality, status.LoadNumber "
+ "FROM status WHERE status.VDBName = 'test' AND status.VDBVersion = '1.0.0' "
+ "AND status.SchemaName = 'virt' AND status.Name = 'my_view'";
if (results == null) {
String commandString = command.toString();
if (hasStatus.get() && commandString.equals(status)) {
results = Arrays.asList(Arrays.asList(null, "mat_table", valid.get(), loaded.get()?"LOADED":"LOADING", new Timestamp(System.currentTimeMillis()), -1, new Integer(1))).iterator();
} else if (hasStatus.get() && commandString.startsWith("SELECT status.Valid, status.LoadState FROM status")) {
results = Arrays.asList(Arrays.asList(valid.get(), loaded.get()?"LOADED":"LOADING")).iterator();
if (commandString.contains(" FROM status")) {
if (hasStatus.get()) {
if (commandString.startsWith("SELECT status.Valid, status.LoadState FROM status")) {
results = Arrays.asList(Arrays.asList(valid.get(), loaded.get()?"LOADED":"LOADING")).iterator();
} else if (commandString.startsWith("SELECT status.Name, status.TargetSchemaName, status.TargetName, status.Valid, status.LoadState, status.Updated, status.Cardinality, status.LoadNumber")) {
results = Arrays.asList(Arrays.asList("my_view", "my_schema", "mat_table", valid.get(), loaded.get()?"LOADED":"LOADING", new Timestamp(System.currentTimeMillis()), -1, new Integer(1))).iterator();
} else {
throw new AssertionError(commandString);
}
}
} else if (loaded.get() && commandString.equals("SELECT mat_table.my_column FROM mat_table")) {
matTableCount.getAndIncrement();
results = Arrays.asList(Arrays.asList("mat_column0"), Arrays.asList("mat_column1")).iterator();
Expand Down Expand Up @@ -1534,6 +1536,8 @@ public int[] getUpdateCounts() throws DataNotAvailableException,

assertEquals(1, tableCount.get());

s.execute("update my_schema.status set valid=true");

//make sure a similar name doesn't cause an issue
rs = s.executeQuery("select * from (call sysadmin.updateMatView('virt', 'my_view', 'true')) as x");
rs.next();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ string clob
Name Body
loadMatView Clob[11595]
matViewStatus Clob[3119]
updateMatView Clob[8751]
updateMatView Clob[8779]
updateStaleCount Clob[3474]
Row Count : 4
getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable
Expand Down

0 comments on commit 6bf3594

Please sign in to comment.