Alexander Koblov · Jul 5, 2017 go to post

Kyle, please notice that indeed

CALL %SYSTEM.SQL_TableExists('table name')

shows nothing -- no result is returned.

Whereas

?= CALL %SYSTEM.SQL_TableExists('table name')

prints boolean result 1 or 0 depending on whether 'table name' exists.

Alexander Koblov · Jul 4, 2017 go to post

FWIW I just checked 2015.1.4 and 2015.2

And IE 11.0.9600.18697 on Windows 7x86

And Color Selection Dialog is opened properly:

/csp/samples/ZENDemo.Home.cls -> Components -> Popup Windows

Alexander Koblov · Jul 4, 2017 go to post

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_multiple_Projects

Regards, Alexander.

Alexander Koblov · Jun 20, 2017 go to post

Hi Jeffrey.

Please check web-application settings (Management portal -> System Administration -> Security -> Applications -> Web Applications) and ensure that application '/api/atelier' is Enabled -- it has "Application" checkbox checked in Enabled section.

Hope this might help, Alexander.

Alexander Koblov · Jun 7, 2017 go to post

']]' means 'Sorts After'. Indeed, as we can see A sorts after B.

USER>kill
 
USER>set A="1.0"
 
USER>set B="2.2"
 
USER>write A]]B
1
USER>set c(A) = 1, c(B) = 1
 
USER>zwrite c
c(2.2)=1
c("1.0")=1
Alexander Koblov · Jun 6, 2017 go to post

Not always, If $T was set to 1 before, then it is not reseted on entering the method Main()

Alexander Koblov · Jun 2, 2017 go to post

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.

Alexander Koblov · Jun 2, 2017 go to post

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.

Alexander Koblov · Jun 1, 2017 go to post

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=ALOCK "Modifying the Database" http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GSQL_modify

Hope this explains things a little more, Alexander.

Alexander Koblov · May 31, 2017 go to post

Oh. OK. (PUBLIC=1) in this case is related to %ListOfObjects return class, not the method itself.

Although, it's the question of how developer interpret this parameter.

Alexander Koblov · May 31, 2017 go to post

Hi Sean.

This looks interesting.

Why do you prefer annotations style instead of standard Caché attribute style for properties?

I mean

/// @JSONNAME=BirthDate
Property DateOfBirth As %Date;

Instead of

Property DateOfBirth As %Date(JSONNAME = "BirthDate");

Thank you, Alexander.

Alexander Koblov · Mar 24, 2017 go to post

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.help/html/reference/toolbar-atelier-perspective.html?cp=1_3_2

  • Support for seeing the other

The 5th in that list http://docs.intersystems.com/atelier/latest/topic/com.intersys.eclipse.help/html/reference/toolbar-atelier-perspective.html?cp=1_3_2

  • 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

Alexander Koblov · Mar 23, 2017 go to post

Or TO_CHAR.

Depending if you need convert string -> date (TO_DATE) or date -> string (TO_CHAR)

Alexander Koblov · Mar 16, 2017 go to post

Cool!

It would be great to show articles only for particular Author in Article dropdown list once the Author is chosen.

Alexander Koblov · Mar 15, 2017 go to post

I think you can construct pKey as $ListBuild of different values and parse them back in LoadForm.

I don't think it's possible to add other parameters to LoadForm callback

Alexander Koblov · Mar 10, 2017 go to post

At least please notice that Caché ObjectScript does not have operator precedence.

Instead of

if (c >= 128 && c <= 255) {

you should write

if (c >= 128) && (c <= 255) {

the same with

s:(c >= 128 && c <= 255) retval=$lg(map,(c-128))