Problem Note 60598: "Access Violation" errors might occur when you use multiple WHEN clauses in SAS® Scalable Performance Data Server
If you attempt to use multiple WHEN clauses in a query and the number of WHEN conditions is evenly divisible by 13, the following error is reported in the SAS SPD Server log:
04/21/17 10:13:36:(27023) SPDSBASE- ERROR: Access Violation
Click the Full Code tab in this SAS Note to see an example of code that produces the error in the SAS SPD Server log.
Click the Hot Fix tab in this note to access the hot fix for this issue.
Operating System and Release Information
SPDS | Scalable Performance Data Client | Microsoft® Windows® for x64 | 5.3 HF1 | 5.3 HF2 | 9.4 TS1M3 | 9.4 TS1M3 |
Microsoft Windows Server 2008 for x64 | 5.3 HF1 | 5.3 HF2 | 9.4 TS1M3 | 9.4 TS1M3 |
Microsoft Windows Server 2012 R2 Datacenter | 5.3 HF1 | 5.3 HF2 | 9.4 TS1M3 | 9.4 TS1M3 |
Windows 7 Enterprise x64 | 5.3 HF1 | 5.3 HF2 | 9.4 TS1M3 | 9.4 TS1M3 |
64-bit Enabled AIX | 5.3 HF1 | 5.3 HF2 | 9.4 TS1M3 | 9.4 TS1M3 |
64-bit Enabled Solaris | 5.3 HF1 | 5.3 HF2 | 9.4 TS1M3 | 9.4 TS1M3 |
HP-UX IPF | 5.3 HF1 | 5.3 HF2 | 9.4 TS1M3 | 9.4 TS1M3 |
Linux for x64 | 5.3 HF1 | 5.3 HF2 | 9.4 TS1M3 | 9.4 TS1M3 |
Solaris for x64 | 5.3 HF1 | 5.3 HF2 | 9.4 TS1M3 | 9.4 TS1M3 |
*
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.
Modify the macro variables to match your environment setting before submitting the code.
%let dom=domain;
%let host=myhost;
%let portno=5400;
libname foo sasspds "&dom" host="&host" serv="&portno" user='anonymous" LIBGEN=YES;
data foo.mytbl;
mycol = '0011';
run;
option linesize=max;
/*
* this query causes Access Violation error. Removing any of the when conditions the
* query will succeed.
*/
proc sql;
connect to sasspds(server=myhost.5400 SCHEMA="domain" USER="anonymous");
select * from connection to sasspds(
select
case when mytbl.mycol = '0001' then 1
when mytbl.mycol = '0002' then 2
when mytbl.mycol = '0003' then 3
when mytbl.mycol = '0004' then 4
when mytbl.mycol = '0005' then 5
when mytbl.mycol = '0006' then 6
when mytbl.mycol = '0007' then 7
when mytbl.mycol = '0008' then 8
when mytbl.mycol = '0009' then 9
when mytbl.mycol = '0010' then 10
when mytbl.mycol = '0011' then 11
/*
* adding 13 more conditions ('0012' through '0024')
* causes Access Violation error
*/
when mytbl.mycol = '0012' then 12
when mytbl.mycol = '0013' then 13
when mytbl.mycol = '0014' then 14
when mytbl.mycol = '0015' then 15
when mytbl.mycol = '0016' then 16
when mytbl.mycol = '0017' then 17
when mytbl.mycol = '0018' then 18
when mytbl.mycol = '0019' then 19
when mytbl.mycol = '0020' then 20
when mytbl.mycol = '0021' then 21
when mytbl.mycol = '0022' then 22
when mytbl.mycol = '0023' then 23
when mytbl.mycol = '0024' then 24
else 0
end
as result
from
foo.mytbl )
;
quit;
Type: | Problem Note |
Priority: | high |
Date Modified: | 2017-07-28 15:43:27 |
Date Created: | 2017-06-09 08:02:22 |