%YDBAIM-F-BADTEMPLATE error when using cross reference in MAILMAIN_SITE_PARAMETERS Vista table
Final Release Note
Description
While reviewing !1404 (merged), I was trying some tests and noticed this unrelated pre-existing error in a VistA environment.
OCTO> select count(*) as MAILMAN_SITE_PARAMETERS__FTP_RECEIVE_DIRECTORY from `MAILMAN_SITE_PARAMETERS` where `FTP_RECEIVE_DIRECTORY` is null;
[ERROR]: ERR_YOTTADB: YottaDB error: 150379506,XREFDATAQUIT+73^%YDBAIM,%YDBAIM-F-BADTEMPLATE Trigger set inccnt=0
if "DISK/VOL"=sub3 do
. for i=1 set j=-i,p=/"#"_//$piece($ztoldval,"^",i),q=/"#"_//$piece($ztvalue,"^",i) do
. . if $data(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(i,"/#//",sub2)) zkill ^(sub2) set inccnt=inccnt-1 if 1>$increment(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(j,"/#//"),-1) zkill ^("/#//") zkill:1>$increment(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(j),-1) ^(j)
. . else if $data(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(i,p,sub2)) zkill ^(sub2) set inccnt=inccnt-1 if 1>$increment(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(j,p),-1) zkill ^(p) zkill:1>$increment(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(j),-1) ^(j)
. . if '$data(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(i,q,sub2)) set ^(sub2)="" set inccnt=inccnt+1 if 1=$increment(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(j,q)),$increment(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(j))
else if '($data(^XMB(1,sub2,"DISK/VOL"))#10) for i=1 set j=-i if '$data(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(i,"/#//",sub2)) set ^(sub2)="" set inccnt=inccnt+1 if 1=$increment(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(j,"/#//")),$increment(^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(j))
if inccnt set inccnt=inccnt+^%ydbAIMDtYP7NGcytuI5JVRfh5WEBB(11),^(11)=$select(1>inccnt:0,1:inccnt) has incorrect number of / delimiters for text substitution
After some debugging, was able to produce a simple test case that demonstrates the same issue without a VistA environment.
$ cat aim.csh
setenv ydb_gbldir yottadb.gld
rm -f yottadb.gld
$ydb_dist/yottadb -run GDE << GDE_EOF
TEMPLATE -REGION -KEY_SIZE=1019
TEMPLATE -REGION -RECORD_SIZE=1048576
TEMPLATE -SEGMENT -BLOCK_SIZE=4096
TEMPLATE -SEGMENT -ACCESS_METHOD=BG
!
DELETE -REGION DEFAULT
DELETE -SEGMENT DEFAULT
!
TEMPLATE -REGION -NULL_SUBSCRIPTS=NEVER
ADD -REGION DEFAULT -DYNAMIC_SEGMENT=DEFAULT
TEMPLATE -REGION -NULL_SUBSCRIPTS=ALWAYS
ADD -REGION AIMREG -DYNAMIC_SEGMENT=AIMSEG -RECORD_SIZE=2048
ADD -REGION OCTOREG -DYNAMIC_SEGMENT=OCTOSEG
!
ADD -SEGMENT AIMSEG -ACCESS_METHOD=MM -FILE_NAME=aim.dat
ADD -SEGMENT DEFAULT -FILE_NAME=mumps.dat
ADD -SEGMENT OCTOSEG -FILE_NAME=octo.dat
!
LOCKS -REGION=DEFAULT
ADD -NAME %ydbAIM* -REGION=AIMREG
ADD -NAME %ydbocto* -REGION=OCTOREG
GDE_EOF
rm -f aim.dat mumps.dat octo.dat
mupip create
$ydb_dist/yottadb -run %XCMD 'set ^tmp(1,"/")="abcd"'
octo << OCTO_EOF
create table tmp (id integer primary key, name varchar GLOBAL "^tmp(keys(""id""),""/"")") GLOBAL "^tmp" AIMTYPE 1;
select * from tmp where name = 'abcd';
OCTO_EOF
Running the above script yields the below error.
[ERROR]: ERR_YOTTADB: YottaDB error: 150379506,XREFDATAQUIT+73^%YDBAIM,%YDBAIM-F-BADTEMPLATE Trigger set inccnt=0
if "/"=sub2 do
This is likely a YDBAIM issue but for that I need to create a simple test case without the use of Octo. That will take some more time so recording the Octo level issue here.