cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
Choose Language Hide Translation Bar
View Original Published Thread

Fatal JMP16 bug

ErraticAttack
Level VI

This isn't a question, just brining awareness to an issue that I recently noticed within my scripts since moving to JMP16 -- namely, I'd assume that Is Namespace( ... ) would not return a truthy value for a deleted namespace, but it does in JMP16.2 (but not in JMP14.3)

 

Because of this, the following script crashes JMP16.2:

ns = New Namespace();
ns:ns = New Namespace();
ns:ns << Delete Namespace();
Show( Is Namespace( ns:ns ) );
If( Is Namespace( ns:ns ),
	ns:ns:__item__ = 4;
);

I've needed to modify my scripts to the equivalent of this to get around the issue:

ns = New Namespace();
ns:ns = New Namespace();
ns:ns << Delete Namespace();
Show( Is Namespace( ns:ns ) );
If( Is Namespace( ns:ns ) & !Is Missing( ns:ns << Get Name ),
	ns:ns:__item__ = 4;
);

 

Jordan
1 ACCEPTED SOLUTION

Accepted Solutions

Re: Fatal JMP16 bug

Thanks very much for this information. A JMP developer has investigated and logged the issues you found so that they can be corrected in a future release!

View solution in original post

11 REPLIES 11
txnelson
Super User


Re: Fatal JMP16 bug

Has this been reported to the JMP Support folks?

Jim
ErraticAttack
Level VI


Re: Fatal JMP16 bug

Yeah, I reported it today as well.  I'll post here any updates -- but I assume that the team is probably aware of the issue already.

Jordan
Craige_Hales
Super User


Re: Fatal JMP16 bug

Nice catch! Hope it isn't too late for the next 17 beta.

Craige
jthi
Super User


Re: Fatal JMP16 bug

Namespace Exists() seems to return 0 for deleted namespace.

-Jarmo
ErraticAttack
Level VI


Re: Fatal JMP16 bug

@jthi , it does for a bare namespace, but not when giving a scoped namespace as this shows:

ns = New Namespace();
ns:ns = New Namespace();
ns:ns << Delete Namespace();
Show( Is Namespace( ns:ns ) );
Jordan
jthi
Super User


Re: Fatal JMP16 bug

I meant Namespace Exists() which seems to differ from Is Namespace (or maybe I'm missing something here)

Names Default To Here(1);
Clear Log();
Delete Namespaces();
ns = New Namespace();
ns:ns = New Namespace();
Show(Namespace Exists(ns:ns), Is Namespace(ns:ns));
ns:ns << Delete Namespace();
Show(Namespace Exists(ns:ns), Is Namespace(ns:ns));
/*Namespace Exists(ns:ns) = 1;
Is Namespace(ns:ns) = 1;
Namespace Exists(ns:ns) = 0;
Is Namespace(ns:ns) = 1;*/
-Jarmo
ErraticAttack
Level VI


Re: Fatal JMP16 bug

Haha, I didn't read your post very carefully!  You're right that this does seem to work, but I have a vague feeling that I didn't use this method for some reason in my code, although I cannot remember why right now.

Jordan
ErraticAttack
Level VI


Re: Fatal JMP16 bug

Actually I just remembered why -- Namespace Exists will look at the value of the variable and tell you whether the value can represent a namespace, whereas Is Namespace should tell whether the variable is directly a namespace or namespace reference:

 

Because of this, this code fails:

ns = New Namespace( "test ns" );
ns:item = "variable";
ns name = "test ns";
If( Namespace Exists( ns name ),
	Show( ns name:item )
);

Whereas this doesn't:

ns = New Namespace( "test ns" );
ns:item = "variable";
ns name = "test ns";
If( Is Namespace( ns name ),
	Show( ns name:item )
);
Jordan


Re: Fatal JMP16 bug

Thanks for finding this. I was able to replicate this and I have submitted the report to JMP support for investigate.

 

Dan

JMP Product Management.

Connect with me on LinkedIn: https://bit.ly/3MWgiXt