Problem Note 60348: An error incorrectly occurs when you use the MISSING() function as the only element of the whereClause argument in the TABLESELECT() function
In SAS® Real-Time Decision Manager, an error incorrectly occurs when you use the MISSING() function as the only element of the whereClause argument of the TABLESELECT() function in a calculated variable. The error, shown below, is displayed in the log file for the SAS Decision Services design server:
com.sas.analytics.ph.RTDMException: Error executing node
at com.sas.rtdm.implementation.EventExecutor.execute(EventExecutor.java:196)
at com.sas.rtdm.implementation.TestExecutor.execute(TestExecutor.java:170)
at com.sas.rtdm.implementation.engine.Path.execute(Path.java:141)
at com.sas.rtdm.implementation.EventExecutor.execute(EventExecutor.java:135)
at com.sas.rtdm.implementation.TestExecutor.execute(TestExecutor.java:156)
at com.sas.rtdm.implementation.EventExecutor.execute(EventExecutor.java:114)
at com.sas.rtdm.implementation.TestExecutor.execute(TestExecutor.java:202)
at com.sas.rtdm.implementation.TestExecutor.execute(TestExecutor.java:114)
at com.sas.rtdm.implementation.TestExecutor.execute(TestExecutor.java:70)
at com.sas.rtdm.designserver.implementation.DesignServerInternalImpl.test(DesignServerInternalImpl.java:760)
at com.sas.rtdm.designserver.implementation.TranslatingDesignServerImpl.test(TranslatingDesignServerImpl.java:354)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.sas.rtdm.designserver.implementation.DesignServerWebserviceFactory.invokeMethod(DesignServerWebserviceFactory.java:207)
at com.sas.rtdm.designserver.implementation.DesignServerWebserviceFactory.handleDesignServerCalls(DesignServerWebserviceFactory.java:167)
at com.sas.rtdm.designserver.implementation.DesignServerWebserviceFactory.access$400(DesignServerWebserviceFactory.java:39)
at com.sas.rtdm.designserver.implementation.DesignServerWebserviceFactory$1.invoke(DesignServerWebserviceFactory.java:118)
at com.sun.proxy.$Proxy189.test(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.remoting.support.RemoteInvocationTraceInterceptor.invoke(RemoteInvocationTraceInterceptor.java:77)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy191.test(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:205)
at org.springframework.remoting.support.DefaultRemoteInvocationExecutor.invoke(DefaultRemoteInvocationExecutor.java:38)
at sun.reflect.GeneratedMethodAccessor180.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
at com.sas.svcs.remoting.aspects.AbstractAspectJRemoteInvocationInterceptor.invoke(AbstractAspectJRemoteInvocationInterceptor.java:63)
at sun.reflect.GeneratedMethodAccessor177.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy190.invoke(Unknown Source)
at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
at org.springframework.remoting.support.RemoteInvocationBasedExporter.invokeAndCreateResult(RemoteInvocationBasedExporter.java:114)
at com.sas.svcs.remoting.httpinvoker.PostProcessingHttpInvokerServiceExporter.invokeAndCreateResult(PostProcessingHttpInvokerServiceExporter.java:83)
at org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.handleRequest(HttpInvokerServiceExporter.java:73)
at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Boolean
at com.sas.analytics.ph.common.RTDMTable.evaluateConditionalClause(RTDMTable.java:1702)
at com.sas.analytics.ph.common.RTDMTable.access$1200(RTDMTable.java:56)
at com.sas.analytics.ph.common.RTDMTable$WherePredicate.evaluate(RTDMTable.java:1681)
at org.apache.commons.collections.iterators.FilterIterator.setNextObject(FilterIterator.java:185)
at org.apache.commons.collections.iterators.FilterIterator.hasNext(FilterIterator.java:94)
at com.sas.analytics.ph.common.RTDMTable._select(RTDMTable.java:1411)
at com.sas.analytics.ph.common.RTDMTable.select(RTDMTable.java:1375)
at com.sas.analytics.ph.common.exp.exec.FnTableSelect.getTableValue(FnTableSelect.java:36)
at com.sas.analytics.ph.common.exp.exec.ExecutableTree.execSelf(ExecutableTree.java:202)
at com.sas.analytics.ph.common.exp.exec.ExecutableTree.execAndAllowNull(ExecutableTree.java:377)
at com.sas.analytics.ph.common.exp.exec.OpAssignment.execForAssignment(OpAssignment.java:75)
at com.sas.analytics.ph.common.exp.exec.OpAssignment.execSelf(OpAssignment.java:27)
at com.sas.analytics.ph.common.exp.exec.StmExpression.execSelf(StmExpression.java:25)
at com.sas.analytics.ph.common.exp.exec.StmProgram.execSelf(StmProgram.java:38)
at com.sas.analytics.ph.common.exp.exec.ExecutableTree.exec(ExecutableTree.java:134)
at com.sas.rtdm.implementation.engine.AssignmentNode.execute(AssignmentNode.java:67)
at com.sas.rtdm.implementation.EventExecutor.execute(EventExecutor.java:189)
... 82 more
Syntax similar to the following fails:
TABLESELECT(<<identifiers.SMSSendOut>>,'*','MISSING(<<identifiers.SMSSendOut>>.SENDER)')
To work around this issue, use syntax similar to the example below, which performs direct comparison to the SAS missing value:
TABLESELECT(<<identifiers.SMSSendOut>>,'*','<<identifiers.SMSSendOut>>.SENDER EQ .')
A fix for this issue is planned for a future software release.
Operating System and Release Information
SAS System | SAS Real-Time Decision Manager | Microsoft® Windows® for x64 | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows 8 Enterprise 32-bit | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows 8 Enterprise x64 | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows 8 Pro 32-bit | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows 8 Pro x64 | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows 8.1 Enterprise 32-bit | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows 8.1 Enterprise x64 | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows 8.1 Pro 32-bit | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows 8.1 Pro x64 | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows 10 | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows Server 2008 | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows Server 2008 R2 | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows Server 2008 for x64 | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows Server 2012 Datacenter | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows Server 2012 R2 Datacenter | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows Server 2012 R2 Std | 6.4 | | 9.4 TS1M2 | |
Microsoft Windows Server 2012 Std | 6.4 | | 9.4 TS1M2 | |
Windows 7 Enterprise 32 bit | 6.4 | | 9.4 TS1M2 | |
Windows 7 Enterprise x64 | 6.4 | | 9.4 TS1M2 | |
Windows 7 Home Premium 32 bit | 6.4 | | 9.4 TS1M2 | |
Windows 7 Home Premium x64 | 6.4 | | 9.4 TS1M2 | |
Windows 7 Professional 32 bit | 6.4 | | 9.4 TS1M2 | |
Windows 7 Professional x64 | 6.4 | | 9.4 TS1M2 | |
Windows 7 Ultimate 32 bit | 6.4 | | 9.4 TS1M2 | |
Windows 7 Ultimate x64 | 6.4 | | 9.4 TS1M2 | |
64-bit Enabled AIX | 6.4 | | 9.4 TS1M2 | |
64-bit Enabled Solaris | 6.4 | | 9.4 TS1M2 | |
HP-UX IPF | 6.4 | | 9.4 TS1M2 | |
Linux for x64 | 6.4 | | 9.4 TS1M2 | |
Solaris for x64 | 6.4 | | 9.4 TS1M2 | |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.
Type: | Problem Note |
Priority: | medium |
Date Modified: | 2017-06-09 14:15:45 |
Date Created: | 2017-04-25 10:17:12 |