Skip to content

^%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?