^%ydboctoxref has IEN of non existent record and causes Global variable undefined error
In Octo do the following simple query.
select * from tiu_document where document_type = 3416;
It generates this error:
Error: ERROR: YottaDB error: 150372994,CFLDACT+4^TIUPRFL,%YDB-E-GVUNDEF, Global variable undefined: ^TIU(8925,15004892,0)
SQLState: XX000
ErrorCode: 0
In direct mode on live system:
tvista [PRIMARY]> w ^TIU(8925,15004892,0)
%GTM-E-GVUNDEF, Global variable undefined: ^TIU(8925,15004892,0)
On octo server,
tvista [OCTO]> zwrite ^%ydboctoxref("TIU_DOCUMENT","DOCUMENT_TYPE",3416,*)
...
SNIP
^%ydboctoxref("TIU_DOCUMENT","DOCUMENT_TYPE",3416,15004715)=""
^%ydboctoxref("TIU_DOCUMENT","DOCUMENT_TYPE",3416,15004892)=""
^%ydboctoxref("TIU_DOCUMENT","DOCUMENT_TYPE",3416,15005484)=""
SNIP
...
IEN 15004892 doesn't exist in yottadb but it got added to cross-reference ^%ydboctoxref.
Generated file:
;; This is a generated file; do not modify. Generated M code corresponds to below SQL query
;; ---------------------------------------------------------
; select PRF_FLAG_ACTION from tiu_document where document_type = 3416
;; ---------------------------------------------------------
octoPlan0(cursorId)
DO octoPlan1(cursorId)
QUIT
octoPlan1(cursorId)
DO:'$DATA(^%ydboctoocto("xref_status","TIU_DOCUMENT","DOCUMENT_TYPE")) ^%ydboctoXZQXbs4Mz1uMT8M8zrw8JC4(cursorId)
NEW %ydboctoz KILL %ydboctocursor(cursorId,"keys",3,"","")
SET %ydboctocursor(cursorId,"keys",1,"TIU_DOCUMENT","DOCUMENT_TYPE")=$GET(%ydboctocursor(cursorId,"parameters",1)) IF '$ZYISSQLNULL(%ydboctocursor(cursorId,"keys",1,"TIU_DOCUMENT","DOCUMENT_TYPE")) IF $DATA(^%ydboctoxref("TIU_DOCUMENT","DOCUMENT_TYPE",%ydboctocursor(cursorId,"keys",1,"TIU_DOCUMENT","DOCUMENT_TYPE"))) DO
. SET %ydboctocursor(cursorId,"keys",1,"TIU_DOCUMENT","TIU_DOCUMENT_ID")=0
. FOR SET %ydboctocursor(cursorId,"keys",1,"TIU_DOCUMENT","TIU_DOCUMENT_ID")=$ORDER(^%ydboctoxref("TIU_DOCUMENT","DOCUMENT_TYPE",%ydboctocursor(cursorId,"keys",1,"TIU_DOCUMENT","DOCUMENT_TYPE"),%ydboctocursor(cursorId,"keys",1,"TIU_DOCUMENT","TIU_DOCUMENT_ID"))) QUIT:('(%ydboctocursor(cursorId,"keys",1,"TIU_DOCUMENT","TIU_DOCUMENT_ID"))!(%ydboctocursor(cursorId,"keys",1,"TIU_DOCUMENT","TIU_DOCUMENT_ID")="")) DO
. . NEW %ydboctobool SET %ydboctobool=1
. . IF %ydboctobool DO
. . . SET:1&$INCREMENT(%ydboctocursor(cursorId,"keys",3,"","")) %ydboctoz=42
. . . SET %ydboctocursor(cursorId,"keys",3,"","",%ydboctocursor(cursorId,"keys",3,"",""))=$$str2mval^%ydboctoplanhelpers($$empty2null^%ydboctoplanhelpers(0,-1,"VARCHAR",$$COMPEXP^%YDBOCTOVISTAM(8925,1407,%ydboctocursor(cursorId,"keys",1,"TIU_DOCUMENT","TIU_DOCUMENT_ID"))))
QUIT
Do I need to kill the cross-reference or something else?