Dmitry Maslennikov · Aug 25, 2017 go to post

Looks like, you have configured some security settings. And you forgot to give permissions to the new class for user.

Dmitry Maslennikov · Aug 25, 2017 go to post

Or maybe use $system.Event, to background logging process. But in this case, if this process is down, nothing will be logged. And I'm not sure about some other possible issues. 

Dmitry Maslennikov · Aug 25, 2017 go to post

To keep your logging data even if transaction rolled back, you should have this changes journaled. Because transaction rollback works by the journal. If it happened to be journaled, it will be rolled back anyway.

And you should remember even you disabled journaling for some database, while system journaling working well. Every change which was made during a transaction will be journaled anyway.

So, how to switch off journaling, for this particular data. 

  • CACHETEMP - you can map this data to database CACHETEMP. This database not journaled even if data changed in a transaction. But the problem is, that data here will be available until server will be stopped.
  • Switch journaling temporary off, just only when logging information should be saved. You can do it with command before save, should be placed in %OnBeforeSave method
    DO DISABLE^%NOJRN 

    and return journaling back after saving in method %OnAfterSave

    DO ENABLE^%NOJRN
Dmitry Maslennikov · Aug 23, 2017 go to post

This possibility is not alone, it is also possible to have more than one or two databases for one namespace.

There is also mapping, for globals class packages and routines.

One of the reasons to use it is to split different parts of applications. For instance:

  • Let's say, you are a software developing company. Mostly it is enough to deliver to your customer only your compiled code, and it is easy to do it with CACHE.DAT, while a customer has database only with data. So, an update should be quite easy in this case, replace cache.dat, call some update code if needed.
  • Or, you have one application, but should have different data, by some reasons. You can use one database with code, in multiple namespaces. But each namespace will have different databases for Data.

With mapping, you have more flexibilities, like split your code in different databases. If you deliver your code to the customer but gave permission to extend some functionality. In this case, you can put customer's code to another database. Or you can split data to get better performance. If you would have so much count of writing to your database, you can split this data and place this database files to different hardware discs, you may get better writing speed. Or even some part of data in a namespace can be stored on another server and connected through ECP.

So, I can say that even could be more reasons to split data in databases. And always it depends on a project and needs.

You should read this article in the documentation about mapping to get more information about it.

Dmitry Maslennikov · Aug 14, 2017 go to post

I fixed formatting in your post a little bit just to look it more clear and prettier.

But noticed WHERE% VID instead of  WHERE %VID, and AND% VID instead of AND %VID . And decided that it was an formatter error, which I used, but looks like it was in original SQL as well. 

So, can you add error message? For me, the first query should work, while next one will not work, because %VID will not exist.

With links to the original documentation, I think it may become more useful.

GOTO and DO

Not so good practice to use GOTO in a code, but could be quite useful, when you, for example, debugging through terminal, you can resume execution after BREAK.

CSP on, can be used either in Directory or Location directive. But you should remember the difference between them. Directory point to the physical path, while Location works with URL. As well as also possible to use DirectoryMatch and LocationMatch, which supports regex.

But with CSP on, all requests will be sent directly to CSPgateway and then to Caché. And if something not working you should check CSPGateway, sometimes it needs to be restarted, usually all parts (depends on configuration, and plus CSPnsd), after some changes in list of CSP Applications

Directory tag should point to the directory on the server, where you files are located.

And you also should have defined Alias directive, which should say which physical directory should be used for particular web path

Alias / /srv/www
<Directory /srv/www>
...
</Directory>

Why do you think that it may help you? Do you know how much data in your database?

As 5.0 is so old I even not remember how to check the actual size of data in the Database. But I think you can do the integrity check, and in this report, you will have this information in last rows.

And then if you will have less than 10-20% of free space, I think it will not be needed for you. And with this report, you can see how big all globals in this database, and if some useless globals may be unexpectedly exists or have unexpected size. If so, you should check your code, why it could happen and remove it, so you can increase free space, which can be used then for grown useful globals.

If you will have so much free space, which you want to free, you can use ^GBLOCKCOPY, to copy all or only useful globals to the new database.

Open regedit.exe, go to this path

HKEY_CURRENT_USER\Software\InterSystems\Cache Studio\Documents

When you can find folders by name of server and namespace. And by project name.

You can just remove this project's folder, and start studio again.

Please provide some more details. Such as codepage of your output texts, version of cache (unicode?), font in terminal, is it cterm or not.

Codepage for your text, I suppose that you use CP866. Nowadays I would recommend converting to Unicode.

As far as I know .abf file format, it is just backup for MSSQL Databases. So, It is not possible and will not possible in any way. And all this conversion will not be such easy. And you should understand that Cubes, that not about data before you should migrate all the data, and create new cubes in Caché with knowledge about, how it was in MS SQL.

Dmitry Maslennikov · Jul 24, 2017 go to post

I think it even works without any COS code, just like any other system functions. And they have more than just only IsMthd.

Dmitry Maslennikov · Jul 24, 2017 go to post

Look at my project, where I have almost the same idea. Sending static files for the web application from a folder or from XData element if present.

Dmitry Maslennikov · Jul 24, 2017 go to post

When WebSocket initialize connection from the client side, the server should create a process, which will do any work for this client/s. But this connection should stay alive, that's needed by the standard. And Async, in this case, means, that any side of this connection, client or server can send a message at any time, when it needed. While another side should be ready to get this message and send or not some response. But this response, not the same as it could be in plain HTTP, it should be as any other messages if it was initiated by own.

Dmitry Maslennikov · Jul 19, 2017 go to post

In what time you getting this error? Just by reading one by one rows? If you would use the same query multiple times with the same amount of rows, the error will happen after the same count read rows?

Dmitry Maslennikov · Jul 18, 2017 go to post

You have two ways, query fewer rows at once. Or switch to a newer version of Caché, since version 2012.2 available much more memory per process, and by default 256Mb.

It's a bit difficult to answer correctly because I still not sure what are you doing, I would try ''''aaa''aaa'''' or ''''aaa''''''aaa'''' or  even ''''aaa''''''''aaa''''

Yes, they do, but only keynote. And InterSystems streamed keynote, at least in 2015, not sure about last one.

I would agree, It may look quite expensive. But I just compared it with some other conferences like Oracle, Apple, Google, and I found that all of them cost quite close, even usually bigger.

I want to add, something. I'm Russian, and for us, it cost even much more expensive than for you. And unfortunately, last three years, I participated GlobalSummit and I think I was alone from Russia, except IS. But anyway, if I am not mistaken, last Global Summit participated by more than 200 people from 23 countries, but most of these people from the US.

So strange query. But anyway if you want to get double single quotes, should double each one. So, it should be ''''

Something like this.

Call USER.SP('select * from Sample.Person where SSN=''''aaaaa'''' ','0','S')