I'm not aware of such global setting.

If you want to prevent legacy Caché ObjectScript application with direct global access to see not-committed data, then you need to implement proper locking in that application.

Starting READ COMMITTED transaction in that process will not help as this does not affect the code that modifies globals directly.

Hi P.

Check for $d(^Vehicle(unitNumber)) in your sample is not right -- process in transaction can always read data that it has changed.

Starting transaction in READ COMMITTED mode means that this transaction cannot read data modified by other transactions but not commited yet (provided other transaction properly locks the data). It does not restricted other processes from reading data changed by this transaction, unless

a) Other process also starts transaction in READ COMMITED mode
OR
b) Other process acquires the lock for the global node that is modified by current process.

So, if legacy Caché ObjectScript code does not use locks you cannot prevent it from reading your uncommited data.

If legacy Caché ObjectScript uses locks then you need acquire these locks before inserting the rows into Vehicle.* tables.

Transaction isolation in Caché is implemented using locks. When you modify data using SQL or Object-access Caché acquire locks for you, unless you explicitely say not to do this.

Please see following documentation for more information on locking and concurrency in globals, Objects and SQL
"Locking and Concurrency control"
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
"Modifying the Database"
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...

Hope this explains things a little more,
Alexander.

Hi Amir.

Some of items you mentioned are already in Atelier

  • Support for using Studio wizards of a specific sever connection.

Go to File -> New -> Other. Then Atelier -> New File -> Custom File. Choose connection and pick Server-side template.

Also you can go to Tools-> Add-Ins or Tools -> Templates and run good old Studio Add-Ins or Templates

  • Support for seeing a CSP page (like when we click on the globe icon and the CSP page opens)

Hm, there is already globe icon on Atelier toolbar that opens CSP page.

The 6th in that list
http://docs.intersystems.com/atelier/latest/topic/com.intersys.eclipse.h...

  • Support for seeing the other

The 5th in that list
http://docs.intersystems.com/atelier/latest/topic/com.intersys.eclipse.h...

  • GitHub and CRLF / LF

As I understand this configuration should be done on EGit side, by setting core.autocrlf = true for Windows installations.
http://mike.meessen.biz/blog/?p=368

First of all, this is bad sample of GROUP BY query, in my opinion:

SELECT c1, c2 FROM table2 GROUP BY c1

You are grouping by c1, but also selecting c2. GROUP BY collects all rows with the same c1 into one row. Each group of row with the same c1 might have different values of c2. What particular value of c2 you want to get?

Generally, if you query contains GROUP BY, SELECT should contain either expressions from GROUP BY, or aggregate functions. For example, following query is OK:

SELECT c1, max(c2) FROM table2 GROUP BY c1

Having said all that, you might try to concatenate column1 and columnn2

SELECT column1, column2, column 3
FROM  table
WHERE
    column1 || '===' || columnn2 IN (SELECT c1 || '===' || c2 FROM table2 GROUP BY c1)
ORDER BY column1

provided that values in these columns do not contain '==='

Another possibility is:

SELECT column1, column2, column 3
FROM  table T1
WHERE EXISTS (SELECT 1 FROM table2 T2
               WHERE T2.c1 = T1.column1
                 AND T2.c2 = T1.column2)
ORDER BY column1

I think GROUP BY is not necessary in second case.

Hi Token.

As I understand XML you provided in the beginning is the response to the SOAP request you are doing.

If that's correct, than this response is not validated with XML Schema from provided WSDL. You should check with developers who maintain this SOAP service if WSDL you have is correct.

Also you might try to change

Parameter NAMESPACE = "http://192.96.222.19/";

in Class Data.SOAP.CardData to

Parameter NAMESPACE = "http://111.12.123.11/";

Even if this helps, this would be temporary solution for one particular request, other might fail if you have not-correct WSDL.

Hi Token.

a) Please notice, WSDL that you provided is not correct.

For example, try to validate it in https://www.wsdl-analyzer.com/.

Or, download SOAP UI and try to create SOAP project based on this wsdl.

You'll see errors.

I've tried to import this WSDL into 2012.2.5 and got following error:
ERROR #6294: Cannot find message part in schema: Classname not found for http://halykws/::GetContractsExt

b) Version you have is almost 7 years old. Please consider upgrading.
Cache for UNIX (Red Hat Enterprise Linux 5 for x86-64) 2010.1.2 (Build 600U) Mon May 10 2010 23:28:54 EDT

c) If you need further help with this, please open WRC issue.

In any case, first thing you need to do is to have valid WSDL.