Thank you Alexey. Yes, you are correct, second statement is correct. I've asked to modify first statement.
- Log in to post comments
Thank you Alexey. Yes, you are correct, second statement is correct. I've asked to modify first statement.
Hi Fab!
Changes to globals mapped to non-journaled databases are still journaled inside transactions. Unless globals are mapped to IRISTEMP or journaling is completely stopped at the system.
Quoting the docs: "While updates to non-journaled databases that are part of transactions are journaled, these journal records are used only to roll back transactions during normal operation. These journal records do not provide a means to roll back transactions at startup, nor can they be used to recover data at startup or following a backup restore."
Hi Nael
Not possible, as far as I know.
You can play with $stack. Something like this:
set Result=$$MyFunc(1,.Out)
quit
MyFunc(Param1,Param2)
write $stack($stack-1,"MCODE"),!
set Param2="it's all good"
quit 1
USER>d ^test
set Result=$$MyFunc(1,.Out)
But here you are looking at parsing plain strings, and this is error-prone.
You should use Locate:
Set tRegEx = "<[^>]*>"
Set htmlSnippet = "<h1>Hello1</h1><h1>Hello2</h1>"
Set regex=##class(%Regex.Matcher).%New(tRegEx)
set regex.Text = htmlSnippet
while regex.Locate() {
write "Found ",regex.Group," at position ",regex.Start,!
}
Also it's not possible to parse generic HTML with regular expressions (https://stackoverflow.com/a/1732454/82675). Limited subset of HTML -- maybe.
Reason for "0.001005933" being string is not that it is less than 1, but that it's not in a canonical form.
That is -- it has integer zero before decimal point.
Put '+' before expression:
USER>Set MsgDT = "20180405000000001005933"
USER>Set MsgDTH = + $ZTH(($E(MsgDT,9,10)_":"_$E(MsgDT,11,12)_":"_$E(MsgDT,13,14)_"."_$E(MsgDT,15,23)),1)
USER>write
MsgDT=20180405000000001005933
MsgDTH=.001005933
Both Caché and InterSystems IRIS support ODBC. So you can connect to them from PHP via ODBC.
There is a qualifier /incremental that allows incremental compilation.
Check if it's enabled and try to disable it:
See "Flags and Qualifiers" section: https://docs.intersystems.com/ens20101/csp/docbook/DocBook.UI.Page.cls?KEY=AMISC#AMISC_FlagsQualifiers
Jimmy, what version do you use? Try to upgrade to latest available version -- 2018.1.2 for Caché, perhaps this error is fixed there.
Seems like
set $list(i%List, *, *) = ""
works.
David,
can you please provide provide SQL generated by the Entity Framework that is not valid and error that is generated.
Lucas,
Log that you provided spans from March 19th 09:35 to March 20th 14:43.
Depending on moments when application was unavailable you need to look in different records of csp.log
For example,
I would advise to you to try installing latest release version of CSP Gateway, or if this error still appears there, contact InterSystems Worldwide Response Center to fix this error.
This is most likely something with the code of the page "/csp/erp/system/lib/filtro.csp". It started to write some answer back and then closed the connection, for example process terminated itself with halt
This message is self-explanatory
CSP Gateway can limit number of total connections to server and connections per session that it makes to Caché. See parameters "Maximum Server Connections" and "Maximum Connections per Session" here.
Generally for IIS-specifics read section "Microsoft IIS All Versions" of CSP Gateway configuration guide. And for general configuration of CSP Gateway -- chapter "CSP Gateway Operation and Configuration".
Caché ODBC drivers are located here: ftp://ftp.intersystems.com/pub/cache/odbc/
InterSystems IRIS ODBC drivers -- here: ftp://ftp.intersystems.com/pub/iris/odbc/
Check that after &SQL(SELECT ...) value of SQLCODE is checked.
Please see this question:
https://community.intersystems.com/post/difference-between-method-and-classmethod-class-definition
For drawbacks of Parent/Child relationships see this comment by @Brendan Bannon
No, indirection does not introduce additional stack, as far as I know. It works with variables that are visible in public (global) scope, not in private scope of procedure.
Quoting doc: "Name indirection, argument indirection, and XECUTE commands that appear within a procedure are not executed within the scope of the procedure."
https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCOS_usercode_indirxecjob
Consider method:
Class Test.test [ Abstract ]
{
ClassMethod ind()
{
kill info
set active = 1
set i="active"
set @i = "global scope"
break
}
}
Output:
USER>do ##class(Test.test).ind()
break }
^
<BREAK>zind+5^Test.test.1
USER 2d1>w
active="global scope"
<Private variables>
active=1
i="active"
Notice private variables and public variables.
Correction for future readers. Correct path is
{serverdir}/dev/atelier/CACHELIB/Metadata.zip
Null in this case is not a reserved word. It’s just a name of variable that is not defined.
NTLM Authentication is supported in Caché / Ensemble 2018.1 and later:
Maybe your browser connects using proxy?
I'm getting following error, running your program on Caché 2017.2.2:
USER>do ^test
This FTP server is anonymous only.
And it works OK once I change Connect to be anonymous:
If 'ftp.Connect(host,"anonymous","",port) Write ftp.ReturnMessage,! Quit sc
Output:
USER>do ^test
Ftp server messsage:
Features:
EPRT
EPSV
MDTM
PASV
REST STREAM
SIZE
TVFS
End
Mode now: Binary
Length of file received: 524288
Can you connect to speedtest.tele2.net from the same server, but not from Caché? Maybe access via port 21 is blocked by your firewall?
You need to use Escape clause.
SELECT ID, CompanyName FROM Table1 WHERE CompanyName LIKE '%\%%' ESCAPE '\'
Consider adding @Sascha Kisser article on DeepSee troubleshooting
DeepSee Engine is independent of DeepSee user interface.
You can use DeepSee REST API to access DeepSee Engine from any UI. See documentation.
Right! And write more and more clever code to train colleagues :-)
while this test is indeed fun, the most important phrase in your post is of course:
I think I would run tests and publish the results.
I think this test proves nothing.
Interesting to know underlying reasoning of saying: "Use bitmap index if there are less than X distinct values in common" or "Use bitmap index if selectivity of column is less than Y".
Why X, why Y? Where is this 6400 and 2% come from? What is it in bitmap indices that makes them slower, once these thresholds are reached?
There are two many variables to take into account in this test, so it's much more interesting to see formula than test results.