Hi Jochen.

If you have different modules in one namespace I suggest to you to have different Atelier projects for these modules. Then you can have one Git repository to handle all these projects.

With such approach the repository has all the code for the namespace and the code is grouped by projects (modules) inside repository.

Here you can find more details on how you can define Git repository for multiple projects.
https://wiki.eclipse.org/EGit/User_Guide#Creating_a_Git_Repository_for_m...

Regards,
Alexander.

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.