Thank you for article Dmitry.

You say "you may notice data in ASCII is represented by in 1 byte but Unicode data in 2-bytes".

Actually, it seems, that Unicode data takes less then 2 bytes per character.

In your example with BLKDUMP string "TestТест" is represented as

54 65 73 74 92 30 A2 B5 C1 C2

First four bytes is clearly "Test" representation, so other four characters "Тест" are represented with just six bytes -- "92 30 A2 B5 C1 C2", instead of expected 8.

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