What is the Criteria datatype?

Can you show the property definition?

If for example you have Criteria defined like this:

Property Criteria As %String(MAXLEN = 2000); // MAXLEN>512

Try to define the property like this:

Property Criteria As %String(COLLATION = "TRUNCATE(490)", MAXLEN = 2000);

 

How to debug SQL queries:

1. In SMP > System > Configuration > General SQL Settings  enable the following flags (don't forget to press Save):

  • Retains SQL Statement as Comments in .INT Code
  • Cached Query - Save Source  

2. Purge all Cached Queries - execute in terminal (namespace with query):

  • Do $SYSTEM.SQL.Purge()

3. Execute the query again to get an error

4. Open in studio %sqlcq.HSREGISTRY.cls966.1.int routine (it would be %sqlcq.HSREGISTRY.cls1.1.int after purge)

5. Go to %0AmEdun+4 in this routine and see what this is about. Set try/catch, and debug.

 

In this case the most likely scenario is that the code tries to set global subscript longer than the maximum of 511 characters. Since the only change between queries is the column (there is also "as Relevance" part in your error query, but I think it's irrelevant) then it's probably something with that.

Yes, DigitalOcean is quite good. I manage around 50 servers there and they don't disappoint. One issue I have is that  they don't offer backup/snapshot management. All you can do with a backup is restore it to current or a new server.  I'm used to features offered by other cloud providers, such as:

  • Browse backup disk image
  • Download disk image

But to do it in DigitalOcean I need to create a new droplet from a backup (takes time and costs  money) and browse it.

Also their in-browser-web-access is quite lacking -  they offer only VNC access, but not:

  • SSH console access
  • File explorer access
  • File explorer access for a powered off server

You can use script command for that

script --quiet myoutput.log
csession cache
work in terminal
hang
exit

If you want to log every command then you can enable it in SMP ->  System Administration -> Security -> Auditing ->  Configure System Events. Once there enable %System/%DirectMode/DirectMode event and every terminal command would be logged along with time and user who executed it. Audit must also be active, of course.

Yes, I'm searching for a ready code downloading from Gmail etc. Or at least code connecting to the server.

ClassMethod GmailAsPOP3() As %Net.POP3
{

  Set server=##class(%Net.POP3).%New()
  
  Set server.port=995

  //just in case we plan to fetch any messages
  //that have attachments
  Set server.StoreAttachToFile=1
  Set server.StoreInlineToFile=1
  Set server.AttachDir="c:\DOWNLOADS\"
  

  Set servername="pop.gmail.com"
  Set server.UseSTARTTLS=1
  Set server.SSLConfiguration = "GMail" //any empty enabled client SSL/TLS config

  Set user="mail@gmail.com"
  Set pass="pass"
  
  Set status=server.Connect(servername,user,pass)
  If $$$ISERR(status)
  {
    Do $System.Status.DisplayError(status)
    Quit $$$ERROR()
    }
  Quit server
}

 

It returns this error:ERROR #6013: Unable to make TCP/IP connection to mail server.  An earlier connection may not have been closed. [zConnectPort+39^%Net.POP3.1:EMAIL]