Robert Cemper · Jun 16, 2018 go to post

Congratulations!

That's real engineering. Getting control over the engine without modifying it.

yesyesyes

Robert Cemper · Jun 15, 2018 go to post

David,
I digged a little bit following your hint into Eclipse.

menu Windows / Prefernces (by user !) presented this image  


and this is the content of storage_location 

#Equinox secure storage version 1.0
#Fri May 25 19:54:27 CEST 2018
/com.intersystems.atelier.connmgr/ENS/port=\t,NTc3NzQ\=
/com.intersystems.atelier.connmgr/ENS/ssl=\t,ZmFsc2U\=
/com.intersystems.atelier.connmgr/2016-2/user=\t,cmNlbXBlcg\=\=
/com.intersystems.atelier.connmgr/2016-2/pass=org.eclipse.equinox.security.windowspasswordprovider64bit\tw+5qObI6N8Y\=,FVLqyPMCkoqq6Q7jjl0Wyw\=\=
/com.intersystems.atelier.connmgr/ENS/host=\t,bG9jYWxob3N0
/com.intersystems.atelier.connmgr/2016-2/ssl=\t,ZmFsc2U\=
/org.eclipse.equinox.secure.storage/verification/org.eclipse.equinox.security.windowspasswordprovider64bit=org.eclipse.equinox.security.windowspasswordprovider64bit\tvhjCbjyiXyI\=,kN4AlU0D0lskPVn+ZkduJBzTJLtNI69y
org.eclipse.equinox.security.preferences.keyFactory=PBEWithMD5AndDES
/com.intersystems.atelier.connmgr/2016-2/port=\t,NTc3NzI\=
/org.eclipse.equinox.secure.storage/windows64/encryptedPassword=\t,QVFBQUFOQ01uZDhCRmRFUmpIb0F3RS9DbCtzQkFBQUFITms3N0Z1ZTVVZTZuY1JuZUpLT0pnQUFBQUFRQUFBQVJRQnhBSFVBYVFCdUFHOEFlQUFBQUJCbUFBQUFBUUFBSUFBQUFMejUrdHB5MnVhUXVmWGIxNloyYm9kZGpNWFliNEFRdHBickJodnlwU0pPQUFBQUFBNkFBQUFBQWdBQUlBQUFBTHFOWmFFNUhnWTdBNytjRFhoQ1d5NVdIajJGcVJkVWNJTjVhS2l1NkVlQVlBRUFBSnRlODlWYWVkSFdLREh0OHY1aFhrc1NyL2RwaFVoWFV3V2RJNDdraXFhZk9RdVowK3ZVdUk4bzJFOUNwL2JtS2Q5YVc3WG9mN0YrQlBjOWhja0R1UXRWbzB3QkRuQkM4SW5MTWh1L2haVTNHRmhGODQxUEZSZHhOeDlVMmRjU0tFcXZtZEpVSXlQbjJZWWlEUWpMV2JnVEZ0Z1NlajVVV1RldUxPWEFUaXRSMDBqM1hTWjB0ZmlDK2ZlVE8rVEtIa3VkTnZXZGNBNS9UQ2gydDhOUEVWRHljd2F6WjVkK3IyOVdjS1BjVlNNaXFUTVZMR1FFdlB3M1ZPTUhhSVVUNTR4SEVOV3dncndJZ0J2S0JVU3NHVVVNSER2dE44MUJUNUEvVnc1TVR6VmMyNWkwUk4wandtRzUvSWJyaHhVSy81STFwanhaL0czRFJ1eGlZZWhpQkREM3JRTzdPSE5lVlRxdmk0bSt2cUxoQlUxYi9LcVNqSkNFMktLa2RGby9vaDRMeGJscHdhcHFOa09maURLZi8yVmpnTkd1UTRyVEJnVEIxSUpBRFA0TExZMWJyeUttV0dicE5adG1xRDBpVURCc3BQQ3FmOUh0L1BBSHV3a1lNUTFBQUFBQUkyS2RnYjVSajhXYmxSd0xXdGZZZndodmJ4eDFDR2tZYy9UNWI2eThLZFdrOUJSdTV6VzRneC9WTjVwemRTaVl0UjZnZVVBQmdHSkE0OVI3YXg5amxRPT0\=
/com.intersystems.atelier.connmgr/ENS/user=\t,cmNlbXBlcg\=\=
/org.eclipse.equinox.secure.storage/recovery/org.eclipse.equinox.security.windowspasswordprovider64bit/org.eclipse.equinox.security.internal.recovery.question2=\t,cHJlZmVycmVkIGJhbmQ\=
/org.eclipse.equinox.secure.storage/recovery/org.eclip
se.equinox.security.windowspasswordprovider64bit/org.eclipse.equinox.security.internal.recovery.question1=\t,bW90aGVyJ3MgbmFtZQ\=\=
/com.intersystems.atelier.connmgr/ENS/pass=org.eclipse.equinox.security.windowspasswordprovider64bit\tp9QyPCw3qvU\=,ZefLoWUenz48mT11jp1crA\=\=
org.eclipse.equinox.security.preferences.cipher=PBEWithMD5AndDES
/com.intersystems.atelier.connmgr/2016-2/host=\t,bG9jYWxob3N0
org.eclipse.equinox.security.preferences.version=1
/org.eclipse.equinox.secure.storage/recovery/org.eclipse.equinox.security.windowspasswordprovider64bit/org.eclipse.equinox.security.internal.recovery.password=org.eclipse.equinox.security.recoveryModule\tA0LP4JVoFdk\=,SzaccA06wSF+uh0AtcUhHwSgaGG6D2zZ1NOTJsm/ulkjaBmWAppasPrnkWJgOJb6C5insCpZcCyHKNPOOSKLXb1kuxkPDHo++9aEGbFxlbpmCO4p483ToK25KXgV0E+Gj5u4EPsHpsYvb4L4wAtyeESf0gZnbxKim3YqsFrim1SEuZKGoZH3QjYWxM0auPlFwnvgyK6RwfyznDbHvvWTtl4G3Hq4B1X3+cbqOdrkanDCjYFsQ2eutlddFe52AId+kqg1TplQL51PQFILIxHjg2LRmp2Qol321Oex7Oqk1iiddZmTeY/ToBTEzJCCdr1JbGIY5Pi3XJ3NRGyRF0rAsYC46+m6T3NmJsNid6I/V3t5BaOvFsxxfjfs9XXJ25RRWY6OiHbkp/dwsMaEMjy0zkEI3B4qvXOc7Gbf5wGyR9dXsqLEv2LzlDDY8Ne/kWU2v6J6S59EdU8\=
 

I doubt that without hijacking your (Windows ?) account this can NOT be misused.
 

Robert Cemper · Jun 15, 2018 go to post

Ruslan,

After execution, the JOB Command sets system variable $ZCHILD

$ZCHILD contains the ID of the last child process that the current process created with the JOB command. If your process has not used JOB to create a child process, $ZCHILD returns 0 (zero).

$ZCHILD being set does not mean that the job was successfully started. It only means that the process was created and the parameters were passed successfully.

Now you have the OIID in hands to apply to $System.Process.Terminate(bgjob) as suggested already by  Vitaliy Serdtsev

Robert Cemper · Jun 14, 2018 go to post

It's one of the rather hard to follow rules in XML that converted me into a fan of JSON

Robert Cemper · Jun 14, 2018 go to post

Alex,
add Parameter  

Parameter XMLTYPE = "A_CHILD";

to one of your child classes
inherited comment is somewhat vague:

/// This parameter provides the default XMLTYPE for the class. If it is
/// empty then the class name will be used to construct a default XML type.
/// 
/// The default XMLTYPE is used when naming and referencing this type
/// in a schema and the schema context did not provide an XML type name.

documentation  is more precise:

For an XML-enabled class or a property that is based on an XML-enabled class, the XML type is determined as follows:
If the class has a value for the XMLTYPE parameter, that is used as the type name.
Otherwise, the
short class name is taken as the XML type name.

so you would have 2 different classes with the same type:  CHILD
that's not allowed in an XML schema they have to be unique.

Robert Cemper · Jun 14, 2018 go to post

suggested OTHER WAY.

Run Cache locally and connect to the server over ECP.
So Atelier does a local access and the rest follows your rules.
So your standards are observed.
Managing this config might be some extra effort.

Robert Cemper · Jun 14, 2018 go to post

This is not Eclipse. What's your expectation?
JAVA is not a language used in Caché

Robert Cemper · Jun 14, 2018 go to post

OK, There wasn't much echo so far.

The workaround was to encode the Description (and limit it for indexing) according to the language used.
The encoding is basically the position in the list of allowed/used characters or character groups.
If we use also numbers and interpunctuation it has to go into our list.

Instead of %String the descriptions are stored in a serial class:

Class DC.ArticleSort Extends (%SerialObject)
{
Property Language As %String [ InitialExpression = ];
Property Description As %String(MAXLEN = "");
Property Sort As %String(COLLATION = "EXACT", MAXLEN = 300) [  SqlComputed,
       ,
SqlComputeCode = { Set {*} = ##class(DC.ArticleSort).Encode({Language},{Description}) }
      ,
SqlComputeOnChange = (Description, Language) ];
ClassMethod Encode( Lang As %String, Desc As %String(MAXLEN="")) As %String(MAXLEN=300)
{ ...replace valid characters by binary postion value ..  }
}

It's obvious that for English and your installed NLS no encoding is required.
For triplets or doublets like in Hungarian, you need several runs  to encode

The Query itself has a minor change

SELECT TOP 10 ArtNr,DescHU_Description FROM DC.Article
      WHERE DescHU_Description %STARTSWITH 'BE'
      ORDER BY DescHU_Sort

The encoding is definitely not fast but change frequency is not an issue here and change happens
by typing in descriptions on the keyboard.
Query performance is supported by this index construct:
     Index IdxHU On DescHU.Sort [ Data = (ArtNr, DescHU.Description) ]; 
So the query plan just iterates over this index.
 

Robert Cemper · Jun 13, 2018 go to post

class %SQL.Statement has a special property named %SchemaPath for this case.

property %SchemaPath as %String(MAXLEN="");

%SchemaPath provides a list of schema names for resolving unqualified names during statement preparation. By default, its value is null; to set its value, use a comma-delimited list of schema names

Robert Cemper · Jun 12, 2018 go to post

Check if in your Browser Cookies are enabled.

I just killed my license just by disabling cookies. And getting a new session for every click.

Robert Cemper · Jun 12, 2018 go to post

I agree with you!

But you know, 
reinventing the wheel is mostly much more fun than applying some existing tool and READING the user guide. laugh
Especially in the software business.
It's like hunting a rabbit or going to the butcher or even to the restaurant or order by web.   

Robert Cemper · Jun 12, 2018 go to post

Marco you are RIGHT !

The example is just wrong! And never got fixed.

Instead of   set status = adapter.%Open("R")

it should be set status = adapter.Open("R")

This are 2 differnet methods with total different incompatible parameters. 

it is good practice to close the file after use by  do adapter.Close() 

Robert Cemper · Jun 12, 2018 go to post

In this case, I'd suggest to contact WRC for help.
SMSS seems to select the wrong DSN.

Robert Cemper · Jun 12, 2018 go to post

I personally deeply distrust all products from Microsoft and their management tools

BUT:

If your Caché is installed on a 64bit Windows you also need to use 64bit ODBC drivers.
Removing the 32bit DSN for Caché might solve your issue.
As your screenshot says (in German) you can do this only with a 32bit ODBC administrator tool. 
 

Robert Cemper · Jun 11, 2018 go to post

#1) thanks for the Reminder on  IRIS

#1) + #2) concentrate on finding. but that's not the key issues.

As an example: The problem becomes visible when you run   

SELECT TOP 10 ArtNr,DescDE FROM Dc.Article WHERE DescDE %Startswith 'BE' ORDER by DescDE 


The problem is to get control of ORDER which depends on global collation.

Example for German:
- With Standard collation, you sort A,B,C..,O,...,U,...Z,Ä,Ö,Ü...   (classic ANSI sort)
- With collation German3, you sort A,Ä,B,C,....O,Ö,....U,Ü,....Z 

It is mostly the handling of characters with diacritical signs.

Hungarian is my worst case with much more diacriticals AND groups of characters in total  44 "character" tokens

A Á B C Cs D Dz Dzs E É F G Gy H I Í J K L Ly M N Ny O Ó Ö Ő P Q R S Sz T Ty U Ú Ü Ű V W X Y Z Zs

If you do it correctly then Cx sorts before Cs and Gz should sort before Gy and so on.

Now for ORDER BY you typically get your default collation derived from NLS settings.

#3) custom index seems to offer the most promising features.

Robert Cemper · Jun 11, 2018 go to post

I will publish the actual workaround here later when there are other solutions or proposals
in order not to influence your creativity.
########################################################################

Robert Cemper · Jun 10, 2018 go to post

the only thing which i have done was installing some windows update

This was enough to confuse Eclipse.
Run Updates for Glassfish and/ or Eclipse inside Eclipse and the setup is updated. 

Robert Cemper · Jun 2, 2018 go to post

Clayton,
I agree with you, especially for fast inserting multi-server environments.
In "slow" environments there is less risk.
It depends on where you set your timestamp. 
So %OnBeforeSave might provide the smallest possible gap.
 
 

Robert Cemper · May 30, 2018 go to post

Fabian,

this is a conceptual issue. If there is no ACCEPTED answer it shows up as UNanswered.
- no further comment from my side - 
wink

while NO answer has really no ANSWER type reply