Re: KB-stack overflow

Dmitry Melekhov <[email protected]> Tue, 16 Sep 2003 14:52:44 +0500
Newsgroups gmane.comp.db.sapdb.general
Message-ID <[email protected]>
Becker, Holger wrote:
> Dmitry Melekhov wrote:
> 
> 
>>I'm newbiew with SAP DB.
>>We try to migrate to SAP DB from Oracle.
>>
>>Here is error we got:
>>
>>  General error;-1104 POS(2048) Too complicated SQL statement 
>>(KB-stack 
>>overflow).
>>
>>Is there any way to increase stack?
> 
> 
> The only way to increase the stack which is relevant for this 
> error message is to increase the database parameter _PACKET_SIZE.
> 
> Following dependency exist between _PACKET_SIZE and the stack size
> _PACKET_SIZE <= 16384 -> stack size: 8192
> _PACKET_SIZE <= 65536 -> stack size: 16384
> _PACKET_SIZE >  65536 -> stack size: 32768
> 

Thank you!
Looks like all is OK now.

> But I'm interested in the command which will result in this stack 
> problem. Perhaps you could post it here.


This is very easy :-)
Don't ask me why our developer need to create such things. ;-)


For instance, these views:

CREATE VIEW "PEREKR0"

(

"KODPODR",

"GOD",

"MES",

"DEN",

"TABN",

"KRM",

"GR",

"CHAS",

"NOCHN",

"PRAZDN",

"SV",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL",

"CELL"

)

AS SELECT KODPODR, GOD, MES,DEN, TABN, KRM,GR,CHAS,NOCHN,PRAZDN,SV, CASE 
WHEN CHAS=0 OR CHAS IS NULL THEN '' ELSE CHAS END || CASE WHEN NOCHN=0 
OR NOCHN IS NULL THEN '' ELSE '/' || NOCHN END || CASE WHEN PRAZDN=0 OR 
PRAZDN IS NULL THEN '' ELSE CASE WHEN NOCHN=0 OR NOCHN IS NULL THEN '/' 
ELSE '' END || '/' || PRAZDN END || CASE WHEN SV IS NULL THEN '' ELSE 
CASE WHEN (CHAS=0 OR CHAS IS NULL) AND (NOCHN=0 OR NOCHN IS NULL) AND 
(PRAZDN=0 OR PRAZDN IS NULL) THEN '' ELSE '/' END || SV END AS CELL FROM 
TABEL."tabel" WHERE KODPODR > '00000000' AND GOD > '0000' AND MES > '00' 
AND TABN > '00000' AND KRM > '00'









CREATE VIEW "PEREKR"

(

"KODPODR",

"GOD",

"MES",

"TABN",

"KRM",

"GR",

"d1",

"d1",

"d2",

"d2",

"d3",

"d3",

"d4",

"d4",

"d5",

"d5",

"d6",

"d6",

"d7",

"d7",

"d8",

"d8",

"d9",

"d9",

"d10",

"d10",

"d11",

"d11",

"d12",

"d12",

"d13",

"d13",

"d14",

"d14",

"d15",

"d15",

"TABEL"

)



AS SELECT KODPODR, GOD, MES, TABN, KRM,GR, MAX(CASE WHEN DEN='1' THEN 
CELL ELSE '' END) AS "d1",MAX(CASE WHEN DEN='2' THEN CELL ELSE '' END) 
AS "d2",MAX(CASE WHEN DEN='3' THEN CELL ELSE '' END) AS "d3",MAX(CASE 
WHEN DEN='4' THEN CELL ELSE '' END) AS "d4",MAX(CASE WHEN DEN='5' THEN 
CELL ELSE '' END) AS "d5",MAX(CASE WHEN DEN='6' THEN CELL ELSE '' END) 
AS "d6",MAX(CASE WHEN DEN='7' THEN CELL ELSE '' END) AS "d7",MAX(CASE 
WHEN DEN='8' THEN CELL ELSE '' END) AS "d8",MAX(CASE WHEN DEN='9' THEN 
CELL ELSE '' END) AS "d9",MAX(CASE WHEN DEN='10' THEN CELL ELSE '' END) 
AS "d10",MAX(CASE WHEN DEN='11' THEN CELL ELSE '' END) AS "d11",MAX(CASE 
WHEN DEN='12' THEN CELL ELSE '' END) AS "d12",MAX(CASE WHEN DEN='13' 
THEN CELL ELSE '' END) AS "d13",MAX(CASE WHEN DEN='14' THEN CELL ELSE '' 
END) AS "d14",MAX(CASE WHEN DEN='15' THEN CELL ELSE '' END) AS "d15" 
,MAX(CASE WHEN den='16' THEN cell ELSE '' END) AS "d16" ,MAX(CASE WHEN 
den='17' THEN cell ELSE '' END) AS "d17" ,MAX(CASE WHEN den='18' THEN 
cell ELSE '' END) AS "d18" ,MAX(CASE WHEN den='19' THEN cell ELSE '' 
END) AS "d19" ,MAX(CASE WHEN den='20' THEN cell ELSE '' END) AS "d20" 
,MAX(CASE WHEN den='21' THEN cell ELSE '' END) AS "d21" ,MAX(CASE WHEN 
den='22' THEN cell ELSE '' END) AS "d22" ,MAX(CASE WHEN den='23' THEN 
cell ELSE '' END) AS "d23" ,MAX(CASE WHEN den='24' THEN cell ELSE '' 
END) AS "d24" ,MAX(CASE WHEN den='25' THEN cell ELSE '' END) AS "d25" 
,MAX(CASE WHEN den='26' THEN cell ELSE '' END) AS "d26" ,MAX(CASE WHEN 
den='27' THEN cell ELSE '' END) AS "d27" ,MAX(CASE WHEN den='28' THEN 
cell ELSE '' END) AS "d28" ,MAX(CASE WHEN den='29' THEN cell ELSE '' 
END) AS "d29" ,MAX(CASE WHEN den='30' THEN cell ELSE '' END) AS "d30" 
,MAX(CASE WHEN den='31' THEN cell ELSE '' END) AS "d31" FROM PEREKR0 
WHERE KODPODR > '00000000' AND GOD > '0000' AND MES > '00' AND TABN > 
'00000' AND KRM > '00' GROUP BY KODPODR, GOD, MES, TABN, KRM,GR HAVING 
SUM(CHAS)>0 OR MAX(SV)>'_'